mirror of https://github.com/mosra/magnum.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1.0 KiB
39 lines
1.0 KiB
#if __VERSION__ == 120 |
|
#define in attribute |
|
#define out varying |
|
#endif |
|
|
|
uniform mat4 transformationMatrix; |
|
uniform mat4 projectionMatrix; |
|
uniform vec3 light; |
|
|
|
#if __VERSION__ != 120 && defined(GL_ARB_explicit_attrib_location) |
|
#extension GL_ARB_explicit_attrib_location: enable |
|
layout(location = 0) in vec4 position; |
|
layout(location = 1) in vec3 normal; |
|
#else |
|
in vec4 position; |
|
in vec3 normal; |
|
#endif |
|
|
|
out vec3 transformedNormal; |
|
out vec3 lightDirection; |
|
out vec3 cameraDirection; |
|
|
|
void main() { |
|
/* Transformed vertex position */ |
|
vec4 transformedPosition4 = transformationMatrix*position; |
|
vec3 transformedPosition = transformedPosition4.xyz/transformedPosition4.w; |
|
|
|
/* Transformed normal vector */ |
|
transformedNormal = normalize(mat3x3(transformationMatrix)*normal); |
|
|
|
/* Direction to the light */ |
|
lightDirection = normalize(light - transformedPosition); |
|
|
|
/* Direction to the camera */ |
|
cameraDirection = -transformedPosition; |
|
|
|
/* Transform the position */ |
|
gl_Position = projectionMatrix*transformedPosition4; |
|
}
|
|
|