33 lines
1.1 KiB
GLSL
33 lines
1.1 KiB
GLSL
#version 460 core
|
|
|
|
// Input vertex attributes
|
|
layout (location = 0) in vec3 position; // Vertex position in local space (model space)
|
|
layout (location = 1) in vec3 normal; // vertex normal
|
|
layout (location = 2) in vec2 texCoord; // Vertex texture uv
|
|
|
|
// Output to fragment shader
|
|
out vec3 vertexPos;
|
|
out vec3 vertexNormal;
|
|
out vec2 TexCoords;
|
|
out vec4 fragPosLightSpace;
|
|
|
|
// Uniforms for transformation matrices
|
|
uniform mat4 u_model; // Model matrix: transforms from local space to world space
|
|
uniform mat4 u_view; // View matrix: transforms from world space to camera space (view space)
|
|
uniform mat4 u_projection; // Projection matrix: transforms from camera space to clip space
|
|
uniform mat4 u_lightSpace;
|
|
|
|
void main()
|
|
{
|
|
vertexPos = vec3(u_model * vec4(position, 1.0));
|
|
|
|
mat3 normalMatrix = mat3(transpose(inverse(u_model)));
|
|
vertexNormal = normalMatrix * normal;
|
|
// vertexNormal = normal;
|
|
|
|
TexCoords = texCoord;
|
|
|
|
fragPosLightSpace = u_lightSpace * vec4(vertexPos, 1.0);
|
|
|
|
gl_Position = u_projection * u_view * vec4(vertexPos, 1.0);
|
|
} |