fix: incorrect fragment world normal calculation

This commit is contained in:
Sara 2024-09-19 15:00:19 +02:00
parent ee825527d0
commit 35ffc33ea8
2 changed files with 7 additions and 6 deletions

View file

@ -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));
}

View file

@ -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);