diff --git a/Shaders/default-fragment.fs b/Shaders/default-fragment.fs index 5b9082e..3770a4a 100644 --- a/Shaders/default-fragment.fs +++ b/Shaders/default-fragment.fs @@ -5,6 +5,7 @@ in mediump vec2 TexCoord; in mediump vec3 Normal; in mediump vec3 FragPos; in mediump vec4 FragPosLightSpace; +in mediump mat3 TBN; layout(binding=0) uniform sampler2D shadowMap; layout(binding=1) uniform sampler2D tex; @@ -46,8 +47,7 @@ void main() // Get normal from normal map in the range [-1,1] mediump vec3 map_normal = normalize(texture(normalmap, TexCoord).rgb * 2.0 - 1.0); - - mediump vec3 final_normal = map_normal; + mediump vec3 final_normal = normalize(TBN * map_normal); // Alpha Scissors if(texColor.a < 0.1) diff --git a/Shaders/default-vertex.vs b/Shaders/default-vertex.vs index 596e0b7..b82a5d0 100644 --- a/Shaders/default-vertex.vs +++ b/Shaders/default-vertex.vs @@ -9,6 +9,7 @@ out vec2 TexCoord; out vec3 Normal; out vec3 FragPos; out vec4 FragPosLightSpace; +out mat3 TBN; uniform mat4 model; uniform mat4 view; @@ -22,4 +23,9 @@ void main() Normal = NORMAL; FragPos = vec3(model * vec4(aPos, 1.0)); FragPosLightSpace = lightSpaceMatrix * vec4(FragPos, 1.0); + + vec3 T = normalize(vec3(model * vec4(TANGENT, 0.0))); + vec3 B = normalize(vec3(model * vec4(BITANGENT, 0.0))); + vec3 N = normalize(vec3(model * vec4(NORMAL, 0.0))); + TBN = mat3(T, B, N); } \ No newline at end of file