#version 460 layout (location = 0) in vec3 aPos; layout (location = 1) in vec2 aTexCoord; layout (location = 2) in vec3 aNormal; layout (location = 3) in vec3 aTangent; layout (location = 4) in vec3 aBitangent; uniform mat4 MVP; uniform mat4 ModelMatrix; uniform mat4 NormalRotationMatrix; out vec2 TexCoord; out vec4 WldPos; out mat3 TBN; out vec3 shadowSpacePos; //out vec3 glPos; uniform mat4 SunVP; void main(){ WldPos = ModelMatrix * vec4(aPos.xyz,1.0f); vec4 prepos = MVP * vec4(aPos,1.0f); gl_Position = vec4(prepos.x,-prepos.y,prepos.zw); TexCoord = aTexCoord; vec4 ShadowClipSpace = SunVP * ModelMatrix * vec4(aPos,1.0f); shadowSpacePos = ShadowClipSpace.xyz / ShadowClipSpace.w; vec3 T = normalize(vec3(NormalRotationMatrix * vec4(aTangent, 0.0f))); vec3 B = normalize(vec3(NormalRotationMatrix * vec4(aBitangent, 0.0f))); vec3 N = normalize(vec3(NormalRotationMatrix * vec4(aNormal, 0.0f))); TBN = mat3(T, B, N); };