From 09cc80f4130e6ac21290515e7e29d494dfd7998b Mon Sep 17 00:00:00 2001 From: Henrik Rydgard Date: Wed, 14 Oct 2015 18:01:40 +0200 Subject: [PATCH] Don't skip lights that are being used for shade mapping when generating vertex shader IDs --- GPU/GLES/ShaderManager.h | 2 +- GPU/GLES/VertexShaderGenerator.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/GPU/GLES/ShaderManager.h b/GPU/GLES/ShaderManager.h index 76845cbe84..8e963a123a 100644 --- a/GPU/GLES/ShaderManager.h +++ b/GPU/GLES/ShaderManager.h @@ -58,7 +58,7 @@ struct ShaderID { return true; } - int Bit(int bit) const { + bool Bit(int bit) const { return (d[bit >> 5] >> (bit & 31)) & 1; } // Does not handle crossing 32-bit boundaries diff --git a/GPU/GLES/VertexShaderGenerator.cpp b/GPU/GLES/VertexShaderGenerator.cpp index c3990df236..6fad076ec9 100644 --- a/GPU/GLES/VertexShaderGenerator.cpp +++ b/GPU/GLES/VertexShaderGenerator.cpp @@ -140,7 +140,7 @@ void ComputeVertexShaderID(ShaderID *id_out, u32 vertType, bool useHWTransform) if (gstate.isLightingEnabled() || doShadeMapping) { // Light bits for (int i = 0; i < 4; i++) { - if (gstate.isLightChanEnabled(i)) { + if (gstate.isLightChanEnabled(i) || (doShadeMapping && (gstate.getUVLS0() == i || gstate.getUVLS1() == i))) { id.SetBits(BIT_LIGHT0_COMP + 4 * i, 2, gstate.getLightComputation(i)); id.SetBits(BIT_LIGHT0_TYPE + 4 * i, 2, gstate.getLightType(i)); }