diff --git a/GPU/Directx9/VertexShaderGeneratorDX9.cpp b/GPU/Directx9/VertexShaderGeneratorDX9.cpp index 9b456fe3a3..75338e78c2 100644 --- a/GPU/Directx9/VertexShaderGeneratorDX9.cpp +++ b/GPU/Directx9/VertexShaderGeneratorDX9.cpp @@ -159,7 +159,7 @@ void GenerateVertexShaderHLSL(const VShaderID &id, char *buffer, ShaderLanguage WRITE(p, "float3 u_lightambient%i : register(c%i);\n", i, CONST_VS_LIGHTAMBIENT + i); WRITE(p, "float3 u_lightdiffuse%i : register(c%i);\n", i, CONST_VS_LIGHTDIFFUSE + i); - if (comp != GE_LIGHTCOMP_ONLYDIFFUSE) { + if (comp == GE_LIGHTCOMP_BOTH) { WRITE(p, "float3 u_lightspecular%i : register(c%i);\n", i, CONST_VS_LIGHTSPECULAR + i); } } @@ -536,7 +536,7 @@ void GenerateVertexShaderHLSL(const VShaderID &id, char *buffer, ShaderLanguage if (doLight[i] != LIGHT_FULL) continue; diffuseIsZero = false; - if (comp != GE_LIGHTCOMP_ONLYDIFFUSE) + if (comp == GE_LIGHTCOMP_BOTH) specularIsZero = false; if (type != GE_LIGHTTYPE_DIRECTIONAL) distanceNeeded = true; @@ -579,8 +579,8 @@ void GenerateVertexShaderHLSL(const VShaderID &id, char *buffer, ShaderLanguage WRITE(p, " toLight /= distance;\n"); } - bool doSpecular = comp != GE_LIGHTCOMP_ONLYDIFFUSE; - bool poweredDiffuse = comp == GE_LIGHTCOMP_BOTHWITHPOWDIFFUSE; + bool doSpecular = comp == GE_LIGHTCOMP_BOTH; + bool poweredDiffuse = comp == GE_LIGHTCOMP_ONLYPOWDIFFUSE; WRITE(p, " ldot = max(dot(toLight, worldnormal), 0.0);\n"); if (poweredDiffuse) { diff --git a/GPU/GLES/VertexShaderGeneratorGLES.cpp b/GPU/GLES/VertexShaderGeneratorGLES.cpp index c51da43f75..17a6205385 100644 --- a/GPU/GLES/VertexShaderGeneratorGLES.cpp +++ b/GPU/GLES/VertexShaderGeneratorGLES.cpp @@ -308,7 +308,7 @@ void GenerateVertexShader(const VShaderID &id, char *buffer, uint32_t *attrMask, WRITE(p, "uniform lowp vec3 u_lightambient%i;\n", i); WRITE(p, "uniform lowp vec3 u_lightdiffuse%i;\n", i); - if (comp != GE_LIGHTCOMP_ONLYDIFFUSE) { + if (comp == GE_LIGHTCOMP_BOTH) { WRITE(p, "uniform lowp vec3 u_lightspecular%i;\n", i); } } @@ -630,7 +630,7 @@ void GenerateVertexShader(const VShaderID &id, char *buffer, uint32_t *attrMask, if (doLight[i] != LIGHT_FULL) continue; diffuseIsZero = false; - if (comp != GE_LIGHTCOMP_ONLYDIFFUSE) + if (comp == GE_LIGHTCOMP_BOTH) specularIsZero = false; if (type != GE_LIGHTTYPE_DIRECTIONAL) distanceNeeded = true; @@ -673,8 +673,8 @@ void GenerateVertexShader(const VShaderID &id, char *buffer, uint32_t *attrMask, WRITE(p, " toLight /= distance;\n"); } - bool doSpecular = comp != GE_LIGHTCOMP_ONLYDIFFUSE; - bool poweredDiffuse = comp == GE_LIGHTCOMP_BOTHWITHPOWDIFFUSE; + bool doSpecular = comp == GE_LIGHTCOMP_BOTH; + bool poweredDiffuse = comp == GE_LIGHTCOMP_ONLYPOWDIFFUSE; WRITE(p, " ldot = max(dot(toLight, worldnormal), 0.0);\n"); if (poweredDiffuse) { diff --git a/GPU/GPUState.h b/GPU/GPUState.h index 25e81c6477..a3e2e4e9d4 100644 --- a/GPU/GPUState.h +++ b/GPU/GPUState.h @@ -326,8 +326,8 @@ struct GPUgstate { bool isLightingEnabled() const { return lightingEnable & 1; } bool isLightChanEnabled(int chan) const { return lightEnable[chan] & 1; } GELightComputation getLightComputation(int chan) const { return static_cast(ltype[chan] & 0x3); } - bool isUsingPoweredDiffuseLight(int chan) const { return getLightComputation(chan) == GE_LIGHTCOMP_BOTHWITHPOWDIFFUSE; } - bool isUsingSpecularLight(int chan) const { return getLightComputation(chan) != GE_LIGHTCOMP_ONLYDIFFUSE; } + bool isUsingPoweredDiffuseLight(int chan) const { return getLightComputation(chan) == GE_LIGHTCOMP_ONLYPOWDIFFUSE; } + bool isUsingSpecularLight(int chan) const { return getLightComputation(chan) == GE_LIGHTCOMP_BOTH; } bool isUsingSecondaryColor() const { return lmode & 1; } GELightType getLightType(int chan) const { return static_cast((ltype[chan] >> 8) & 3); } bool isDirectionalLight(int chan) const { return getLightType(chan) == GE_LIGHTTYPE_DIRECTIONAL; } diff --git a/GPU/Vulkan/VertexShaderGeneratorVulkan.cpp b/GPU/Vulkan/VertexShaderGeneratorVulkan.cpp index e64e81508d..e18b2ee71d 100644 --- a/GPU/Vulkan/VertexShaderGeneratorVulkan.cpp +++ b/GPU/Vulkan/VertexShaderGeneratorVulkan.cpp @@ -425,7 +425,7 @@ bool GenerateVulkanGLSLVertexShader(const VShaderID &id, char *buffer) { if (doLight[i] != LIGHT_FULL) continue; diffuseIsZero = false; - if (comp != GE_LIGHTCOMP_ONLYDIFFUSE) + if (comp == GE_LIGHTCOMP_BOTH) specularIsZero = false; if (type != GE_LIGHTTYPE_DIRECTIONAL) distanceNeeded = true; @@ -462,8 +462,8 @@ bool GenerateVulkanGLSLVertexShader(const VShaderID &id, char *buffer) { WRITE(p, " toLight /= distance;\n"); } - bool doSpecular = comp != GE_LIGHTCOMP_ONLYDIFFUSE; - bool poweredDiffuse = comp == GE_LIGHTCOMP_BOTHWITHPOWDIFFUSE; + bool doSpecular = comp == GE_LIGHTCOMP_BOTH; + bool poweredDiffuse = comp == GE_LIGHTCOMP_ONLYPOWDIFFUSE; WRITE(p, " mediump float dot%i = max(dot(toLight, worldnormal), 0.0);\n", i); if (poweredDiffuse) { diff --git a/GPU/ge_constants.h b/GPU/ge_constants.h index b765af5bcb..e9509767f0 100644 --- a/GPU/ge_constants.h +++ b/GPU/ge_constants.h @@ -395,7 +395,7 @@ enum GELightComputation { GE_LIGHTCOMP_ONLYDIFFUSE = 0, GE_LIGHTCOMP_BOTH = 1, - GE_LIGHTCOMP_BOTHWITHPOWDIFFUSE = 2, + GE_LIGHTCOMP_ONLYPOWDIFFUSE = 2, }; enum GETextureFormat