diff options
| author | degasus <wickmarkus@web.de> | 2016-09-28 23:31:10 +0200 |
|---|---|---|
| committer | degasus <wickmarkus@web.de> | 2016-10-04 10:13:46 +0200 |
| commit | 083be0832fb590e131b0d6e6dbbe6ec1fba15fa9 (patch) | |
| tree | fa650f29a4bc265ffcc26eb843480b8d3b10b2f7 /Source/Core | |
| parent | 829fc8f0adeaf82d78b695208b24015456d8e52b (diff) | |
LightingShader: Drop xfmem usage.
Our shaders must only depend on the UID, not on any global state.
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/VideoCommon/LightingShaderGen.cpp | 6 | ||||
| -rw-r--r-- | Source/Core/VideoCommon/LightingShaderGen.h | 2 | ||||
| -rw-r--r-- | Source/Core/VideoCommon/PixelShaderGen.cpp | 4 | ||||
| -rw-r--r-- | Source/Core/VideoCommon/PixelShaderGen.h | 3 | ||||
| -rw-r--r-- | Source/Core/VideoCommon/VertexShaderGen.cpp | 3 |
5 files changed, 10 insertions, 8 deletions
diff --git a/Source/Core/VideoCommon/LightingShaderGen.cpp b/Source/Core/VideoCommon/LightingShaderGen.cpp index 8160364de3..ecc19b7b9f 100644 --- a/Source/Core/VideoCommon/LightingShaderGen.cpp +++ b/Source/Core/VideoCommon/LightingShaderGen.cpp @@ -72,9 +72,9 @@ static void GenerateLightShader(ShaderCode& object, const LightingUidData& uid_d // inColorName is color in vs and colors_ in ps // dest is o.colors_ in vs and colors_ in ps void GenerateLightingShaderCode(ShaderCode& object, const LightingUidData& uid_data, int components, - const char* inColorName, const char* dest) + u32 numColorChans, const char* inColorName, const char* dest) { - for (unsigned int j = 0; j < xfmem.numChan.numColorChans; j++) + for (unsigned int j = 0; j < numColorChans; j++) { object.Write("{\n"); @@ -200,4 +200,4 @@ void GetLightingShaderUid(LightingUidData& uid_data) uid_data.light_mask |= xfmem.alpha[j].GetFullLightMask() << (8 * (j + 2)); } } -}
\ No newline at end of file +} diff --git a/Source/Core/VideoCommon/LightingShaderGen.h b/Source/Core/VideoCommon/LightingShaderGen.h index d8a8f183d0..5a0bd28574 100644 --- a/Source/Core/VideoCommon/LightingShaderGen.h +++ b/Source/Core/VideoCommon/LightingShaderGen.h @@ -47,5 +47,5 @@ static const char s_lighting_struct[] = "struct Light {\n" "};\n"; void GenerateLightingShaderCode(ShaderCode& object, const LightingUidData& uid_data, int components, - const char* inColorName, const char* dest); + u32 numColorChans, const char* inColorName, const char* dest); void GetLightingShaderUid(LightingUidData& uid_data); diff --git a/Source/Core/VideoCommon/PixelShaderGen.cpp b/Source/Core/VideoCommon/PixelShaderGen.cpp index ae3a52ecf3..2929e1cea9 100644 --- a/Source/Core/VideoCommon/PixelShaderGen.cpp +++ b/Source/Core/VideoCommon/PixelShaderGen.cpp @@ -207,7 +207,7 @@ PixelShaderUid GetPixelShaderUid(DSTALPHA_MODE dstAlphaMode) // The lighting shader only needs the two color bits of the 23bit component bit array. uid_data->components = (VertexLoaderManager::g_current_components & (VB_HAS_COL0 | VB_HAS_COL1)) >> VB_COL_SHIFT; - ; + uid_data->numColorChans = xfmem.numChan.numColorChans; GetLightingShaderUid(uid_data->lighting); } @@ -649,7 +649,7 @@ ShaderCode GeneratePixelShaderCode(APIType ApiType, const pixel_shader_uid_data* // out.SetConstantsUsed(C_PLIGHTS, C_PLIGHTS+31); // TODO: Can be optimized further // out.SetConstantsUsed(C_PMATERIALS, C_PMATERIALS+3); GenerateLightingShaderCode(out, uid_data->lighting, uid_data->components << VB_COL_SHIFT, - "colors_", "col"); + uid_data->numColorChans, "colors_", "col"); } // HACK to handle cases where the tex gen is not enabled diff --git a/Source/Core/VideoCommon/PixelShaderGen.h b/Source/Core/VideoCommon/PixelShaderGen.h index 627634da45..46fdcc36aa 100644 --- a/Source/Core/VideoCommon/PixelShaderGen.h +++ b/Source/Core/VideoCommon/PixelShaderGen.h @@ -52,7 +52,8 @@ struct pixel_shader_uid_data u32 zfreeze : 1; u32 msaa : 1; u32 ssaa : 1; - u32 pad : 16; + u32 numColorChans : 2; + u32 pad : 14; u32 texMtxInfo_n_projection : 8; // 8x1 bit u32 tevindref_bi0 : 3; diff --git a/Source/Core/VideoCommon/VertexShaderGen.cpp b/Source/Core/VideoCommon/VertexShaderGen.cpp index 7725331193..11a9e40de0 100644 --- a/Source/Core/VideoCommon/VertexShaderGen.cpp +++ b/Source/Core/VideoCommon/VertexShaderGen.cpp @@ -250,7 +250,8 @@ ShaderCode GenerateVertexShaderCode(APIType api_type, const vertex_shader_uid_da out.Write("o.colors_0 = float4(1.0, 1.0, 1.0, 1.0);\n"); } - GenerateLightingShaderCode(out, uid_data->lighting, uid_data->components, "color", "o.colors_"); + GenerateLightingShaderCode(out, uid_data->lighting, uid_data->components, uid_data->numColorChans, + "color", "o.colors_"); if (uid_data->numColorChans < 2) { |
