From 02242ce66b0bd5b9e8df64d67284117b5925919d Mon Sep 17 00:00:00 2001 From: Capostrophic Date: Mon, 18 Mar 2019 17:07:27 +0300 Subject: [PATCH] Fix shader specular lighting (again) --- files/shaders/lighting.glsl | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/files/shaders/lighting.glsl b/files/shaders/lighting.glsl index 6de34bc07..782d17d4e 100644 --- a/files/shaders/lighting.glsl +++ b/files/shaders/lighting.glsl @@ -74,9 +74,10 @@ vec4 doLighting(vec3 viewPos, vec3 viewNormal, vec4 vertexColor, out vec3 shadow vec3 getSpecular(vec3 viewNormal, vec3 viewDirection, float shininess, vec3 matSpec) { vec3 lightDir = normalize(gl_LightSource[0].position.xyz); - float NdotL = max(dot(viewNormal, lightDir), 0.0); - if (NdotL < 0.0) + float NdotL = dot(viewNormal, lightDir); + if (NdotL <= 0.0) return vec3(0.,0.,0.); vec3 halfVec = normalize(lightDir - viewDirection); - return pow(max(dot(viewNormal, halfVec), 0.0), shininess) * gl_LightSource[0].specular.xyz * matSpec; + float NdotH = dot(viewNormal, halfVec); + return pow(max(NdotH, 0.0), max(1e-4, shininess)) * gl_LightSource[0].specular.xyz * matSpec; }