27 lines
824 B
GLSL
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);
|
|
} |