VertexShaderGen: Fix a potential bug where vertex shader uids don't change when

pixel lighting is toggled.

Same as revision f524312fd1 but done properly (why is our shader gen code this dumb?).
This commit is contained in:
NeoBrainX 2013-06-30 14:27:04 +02:00
parent b8b5427ba4
commit c34c82e7ae
2 changed files with 3 additions and 2 deletions

View File

@ -114,6 +114,7 @@ static void GenerateVertexShader(T& out, u32 components, API_TYPE api_type)
uid_data.numTexGens = xfregs.numTexGen.numTexGens;
uid_data.components = components;
uid_data.pixel_lighting = (g_ActiveConfig.bEnablePixelLighting && g_ActiveConfig.backend_info.bSupportsPixelLighting);
if(api_type == API_OPENGL)
{
@ -279,8 +280,7 @@ static void GenerateVertexShader(T& out, u32 components, API_TYPE api_type)
out.Write("o.colors_0 = float4(1.0f, 1.0f, 1.0f, 1.0f);\n");
}
if (!(g_ActiveConfig.bEnablePixelLighting && g_ActiveConfig.backend_info.bSupportsPixelLighting))
GenerateLightingShader<T>(out, uid_data.lighting, components, I_MATERIALS, I_LIGHTS, "color", "o.colors_");
GenerateLightingShader<T>(out, uid_data.lighting, components, I_MATERIALS, I_LIGHTS, "color", "o.colors_");
if (xfregs.numChan.numColorChans < 2)
{

View File

@ -76,6 +76,7 @@ struct vertex_shader_uid_data
u32 numTexGens : 4;
u32 dualTexTrans_enabled : 1;
u32 pixel_lighting : 1;
u32 texMtxInfo_n_projection : 16; // Stored separately to guarantee that the texMtxInfo struct is 8 bits wide
struct {