fred/shaders/basic_lit.vert

33 lines
981 B
GLSL

#version 330 core
layout(location = 0) in vec3 vertexPosition_modelspace;
layout(location = 1) in vec2 vertexUV;
layout(location = 2) in vec3 vertexNormal_modelspace;
out vec2 UV;
out vec3 position_worldspace;
out vec3 normal_cameraspace;
out vec3 eyeDirection_cameraspace;
out vec3 lightDirection_cameraspace;
uniform mat4 mvp;
uniform mat4 v;
uniform mat4 m;
uniform vec3 lightPosition_worldspace;
void main() {
gl_Position = mvp * vec4(vertexPosition_modelspace, 1);
position_worldspace = (m * vec4(vertexPosition_modelspace, 1)).xyz;
vec3 vertexPosition_cameraspace = (v * m * vec4(vertexPosition_modelspace, 1)).xyz;
eyeDirection_cameraspace = vec3(0, 0, 0) - vertexPosition_cameraspace;
vec3 lightPosition_cameraspace = (v * vec4(lightPosition_worldspace, 1)).xyz;
lightDirection_cameraspace = lightPosition_cameraspace + eyeDirection_cameraspace;
normal_cameraspace = (v * m * vec4(vertexNormal_modelspace, 0)).xyz;
UV = vertexUV;
}