From 35ffc33ea8c179db4b073c53509e57b694b51eb9 Mon Sep 17 00:00:00 2001 From: Sara Date: Thu, 19 Sep 2024 15:00:19 +0200 Subject: [PATCH] fix: incorrect fragment world normal calculation --- resources/default_shader.fs | 11 ++++++----- resources/default_shader.vs | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/resources/default_shader.fs b/resources/default_shader.fs index bf8ac31..75ae754 100644 --- a/resources/default_shader.fs +++ b/resources/default_shader.fs @@ -9,12 +9,13 @@ uniform vec4 colDiffuse; out vec4 finalColor; uniform vec3 lightDirection; // direction of light -uniform vec4 ambient; +uniform vec4 ambientLight; void main() { vec4 texelColor = texture(texture0, fragTexCoord); - vec3 light_dot = vec3(pow(clamp(dot(fragNormal, lightDirection), 0.0, 1.0), 2.0)); - finalColor = texelColor * colDiffuse * vec4(light_dot, 1.0); - finalColor += texelColor * (ambient/10.0) * colDiffuse; - finalColor = pow(finalColor, vec4(vec3(0.6), 1.0)); + float light_dot = clamp(dot(normalize(fragNormal), normalize(lightDirection)), 0.0, 1.0); + vec4 light_col = vec4(vec3(light_dot), 1.0); + finalColor = texelColor * colDiffuse * light_col; + finalColor += texelColor * colDiffuse * ambientLight; + finalColor = pow(finalColor, vec4(vec3(0.8), 1.0)); } diff --git a/resources/default_shader.vs b/resources/default_shader.vs index 93dac26..300348d 100644 --- a/resources/default_shader.vs +++ b/resources/default_shader.vs @@ -18,7 +18,7 @@ void main() { // Send vertex attributes to fragment shader fragTexCoord = vertexTexCoord; - fragNormal = normalize(vec3(matModel * vec4(vertexNormal, 1.0))); + fragNormal = -normalize(vec3(matModel * vec4(vertexNormal, 0.0))); // Calculate final vertex position gl_Position = mvp*vec4(vertexPosition, 1.0);