21 lines
554 B
Plaintext
21 lines
554 B
Plaintext
|
#version 450
|
||
|
|
||
|
// World to view projection matrix to correctly position the vertex on screen
|
||
|
uniform mat4 WVP;
|
||
|
// Matrix to transform normals from local into world space
|
||
|
uniform mat3 N;
|
||
|
|
||
|
// Position and normal vectors of the current vertex in local space
|
||
|
// Leenkx packs the vertex data to preserve memory, so nor.z values are
|
||
|
// saved in pos.w
|
||
|
in vec4 pos; // pos.xyz, nor.w
|
||
|
in vec2 nor; // nor.xy
|
||
|
|
||
|
// Normal vector in world space
|
||
|
out vec3 wnormal;
|
||
|
|
||
|
void main() {
|
||
|
wnormal = normalize(N * vec3(nor.xy, pos.w));
|
||
|
gl_Position = WVP * vec4(pos.xyz, 1.0);
|
||
|
}
|