#version 330 core layout(location = 0) in vec3 apos; layout(location = 1) in vec3 anormal; layout(location = 2) in vec2 atexc; out VS_OUT { vec3 fpos; vec3 fn; vec2 texc; } vsout; uniform mat4 proj; uniform mat4 view; uniform mat4 model; uniform bool invert_normals; void main(void) { mat3 normtransf; vsout.fpos = vec3(model*vec4(apos, 1.0)); normtransf = mat3(transpose(inverse(model))); if (invert_normals) vsout.fn = normtransf*(-anormal); else vsout.fn = normtransf*anormal; vsout.texc = atexc; gl_Position = proj*view*model*vec4(apos, 1.0); }