Files

27 lines
824 B
GLSL

#version 330
// Raylib's default attribute locations
layout(location = 0) in vec3 vertexPosition;
layout(location = 1) in vec2 vertexTexCoord;
layout(location = 2) in vec3 vertexNormal;
layout(location = 3) in vec4 vertexColor;
// Raylib's built-in uniforms (automatically provided)
uniform mat4 mvp; // Model-View-Projection matrix
uniform mat4 matModel; // Model matrix
uniform mat4 matNormal; // Normal matrix for transforming normals
out vec3 fragNormal;
out vec3 fragPosition;
void main() {
// Transform position
vec4 worldPos = matModel * vec4(vertexPosition, 1.0);
fragPosition = worldPos.xyz;
// Transform normal properly
fragNormal = normalize(vec3(matNormal * vec4(vertexNormal, 0.0)));
// Final position
gl_Position = mvp * vec4(vertexPosition, 1.0);
}