Only add the lightmode actually being used into the shader
This commit is contained in:
parent
6381280177
commit
5c9ff283a6
14 changed files with 360 additions and 280 deletions
|
|
@ -253,7 +253,46 @@ void VkRenderState::ApplyRenderPass(int dt)
|
|||
pipelineKey.ShaderKey.Brightmap = (uTextureMode & TEXF_Brightmap) != 0;
|
||||
pipelineKey.ShaderKey.Detailmap = (uTextureMode & TEXF_Detailmap) != 0;
|
||||
pipelineKey.ShaderKey.Glowmap = (uTextureMode & TEXF_Glowmap) != 0;
|
||||
pipelineKey.ShaderKey.Simple2D = (mFogEnabled == 2);
|
||||
|
||||
// The way GZDoom handles state is just plain insanity!
|
||||
int fogset = 0;
|
||||
if (mFogEnabled)
|
||||
{
|
||||
if (mFogEnabled == 2)
|
||||
{
|
||||
fogset = -3; // 2D rendering with 'foggy' overlay.
|
||||
}
|
||||
else if ((mFogColor & 0xffffff) == 0)
|
||||
{
|
||||
fogset = gl_fogmode;
|
||||
}
|
||||
else
|
||||
{
|
||||
fogset = -gl_fogmode;
|
||||
}
|
||||
}
|
||||
pipelineKey.ShaderKey.Simple2D = (fogset == -3);
|
||||
pipelineKey.ShaderKey.FogBeforeLights = (fogset > 0);
|
||||
pipelineKey.ShaderKey.FogAfterLights = (fogset < 0);
|
||||
pipelineKey.ShaderKey.FogRadial = (fogset < -1 || fogset > 1);
|
||||
pipelineKey.ShaderKey.SWLightRadial = (gl_fogmode == 2);
|
||||
pipelineKey.ShaderKey.SWLightBanded = false; // gl_bandedswlight;
|
||||
|
||||
float lightlevel = mLightParms[3];
|
||||
if (lightlevel < 0.0)
|
||||
{
|
||||
pipelineKey.ShaderKey.LightMode = 0; // Default
|
||||
}
|
||||
else
|
||||
{
|
||||
if (mLightMode == 5)
|
||||
pipelineKey.ShaderKey.LightMode = 3; // Build
|
||||
else if (mLightMode == 16)
|
||||
pipelineKey.ShaderKey.LightMode = 2; // Vanilla
|
||||
else
|
||||
pipelineKey.ShaderKey.LightMode = 1; // Software
|
||||
}
|
||||
|
||||
pipelineKey.ShaderKey.UseShadowmap = gl_light_shadowmap;
|
||||
pipelineKey.ShaderKey.UseRaytrace = gl_light_raytrace;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue