diff --git a/GPU/Common/VertexShaderGenerator.cpp b/GPU/Common/VertexShaderGenerator.cpp index 15725f652f86..b1b9fa5e16ed 100644 --- a/GPU/Common/VertexShaderGenerator.cpp +++ b/GPU/Common/VertexShaderGenerator.cpp @@ -1072,7 +1072,7 @@ bool GenerateVertexShader(const VShaderID &id, char *buffer, const ShaderLanguag p.C(" if (comp == 0x1u && ldot > 0.0) {\n"); // do specular p.C(" if (u_matspecular.a > 0.0) {\n"); p.C(" ldot = dot(normalize(toLight + vec3(0.0, 0.0, 1.0)), worldnormal);\n"); - p.C(" ldot = pow(ldot, u_matspecular.a);\n"); + p.C(" ldot = pow(max(ldot, 0.0), u_matspecular.a);\n"); p.C(" } else {\n"); p.C(" ldot = 1.0;\n"); p.C(" }\n"); @@ -1147,7 +1147,7 @@ bool GenerateVertexShader(const VShaderID &id, char *buffer, const ShaderLanguag p.C(" if (ldot >= 0.0) {\n"); p.C(" if (u_matspecular.a > 0.0) {\n"); p.C(" ldot = dot(normalize(toLight + vec3(0.0, 0.0, 1.0)), worldnormal);\n"); - p.C(" ldot = pow(ldot, u_matspecular.a);\n"); + p.C(" ldot = pow(max(ldot, 0.0), u_matspecular.a);\n"); p.C(" } else {\n"); p.C(" ldot = 1.0;\n"); p.C(" }\n");