more OpenGL support, cameras and 3D projection and it now shares 3D models with vulkan, OpenGL does not work if launched, and switching to vulkan from OpenGL does not work

This commit is contained in:
Halbear 2026-08-29 04:24:05 +01:00
parent 5ea45890c8
commit 5518dae1d7
43 changed files with 1298 additions and 187 deletions

View file

@ -0,0 +1,13 @@
#version 330
in vec2 fragTextCoords;
in vec4 fragColour;
uniform sampler2D textureSampler;
out vec4 outColour;
void main()
{
outColour = fragColour * texture(textureSampler, fragTextCoords);
}

View file

@ -0,0 +1,17 @@
#version 330
layout (location=0) in vec2 inPos;
layout (location=1) in vec2 inTextCoords;
layout (location=2) in vec4 inColour;
out vec2 fragTextCoords;
out vec4 fragColour;
uniform vec2 scale;
void main()
{
fragTextCoords = inTextCoords;
fragColour = inColour;
gl_Position = vec4(inPos * scale + vec2(-1.0, 1.0), 0.0, 1.0);
}

View file

@ -1,9 +1,25 @@
#version 330
#version 330 core
in vec3 outColour;
out vec4 fragColor;
in vec4 outPos;
in vec3 outNormal;
in vec3 outTangent;
in vec3 outBitangent;
in vec2 outTextCoords;
out vec4 outAlbedo;
struct Material
{
vec4 diffuse;
};
uniform sampler2D textureSampler;
uniform Material material;
void main()
{
fragColor = vec4(outColour, 1.0);
vec4 texColor = texture(textureSampler,outTextCoords);
if(texColor.a < 0.4){discard;}
outAlbedo = texColor;
texColor = texColor + material.diffuse;
}

View file

@ -1,12 +1,30 @@
#version 330
#version 330 core
layout (location=0) in vec3 position;
layout (location=1) in vec3 colour;
layout (location = 0) in vec3 inPos;
layout (location = 1) in vec3 inNormal;
layout (location = 2) in vec3 inTangent;
layout (location = 3) in vec3 inBitangent;
layout (location = 4) in vec2 inTextCoords;
out vec4 outPos;
out vec3 outNormal;
out vec3 outTangent;
out vec3 outBitangent;
out vec2 outTextCoords;
uniform mat4 projectionMatrix;
uniform mat4 modelMatrix;
uniform mat4 viewMatrix;
out vec3 outColour;
void main()
{
gl_Position = vec4(position, 1.0);
outColour = colour;
vec4 worldPos = modelMatrix * vec4(inPos,1);
gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4(inPos, 1.0);
mat3 mNormal = transpose(inverse(mat3(modelMatrix)));
outPos = worldPos;
outNormal = mNormal * normalize(inNormal);
outTangent = mNormal * normalize(inTangent);
outBitangent = mNormal * normalize(inBitangent);
outTextCoords = inTextCoords;
}