Optimise uLightLevel

This commit is contained in:
Emile Belanger 2021-03-09 20:05:06 +00:00
parent 36f2420c32
commit 7a2ee8acdb
4 changed files with 8 additions and 4 deletions

View file

@ -169,6 +169,7 @@ bool FGLRenderState::ApplyShader()
} }
flavour.doDesaturate = mStreamData.uDesaturationFactor != 0; flavour.doDesaturate = mStreamData.uDesaturationFactor != 0;
flavour.useULightLevel = (mLightParms[3] >= 0); //#define uLightLevel uLightAttr.a
// Yes create shaders for all combinations of active lights to avoid more branches // Yes create shaders for all combinations of active lights to avoid more branches
flavour.dynLightsMod = (modLights > 0); flavour.dynLightsMod = (modLights > 0);

View file

@ -664,6 +664,7 @@ bool FShader::Bind(ShaderFlavourData& flavour)
variantConfig.AppendFormat("#define DEF_FOG_ENABLED %d\n", flavour.fogEnabled); variantConfig.AppendFormat("#define DEF_FOG_ENABLED %d\n", flavour.fogEnabled);
variantConfig.AppendFormat("#define DEF_FOG_RADIAL %d\n", flavour.fogEquationRadial); variantConfig.AppendFormat("#define DEF_FOG_RADIAL %d\n", flavour.fogEquationRadial);
variantConfig.AppendFormat("#define DEF_FOG_COLOURED %d\n", flavour.colouredFog); variantConfig.AppendFormat("#define DEF_FOG_COLOURED %d\n", flavour.colouredFog);
variantConfig.AppendFormat("#define DEF_USE_U_LIGHT_LEVEL %d\n", flavour.useULightLevel);
variantConfig.AppendFormat("#define DEF_DO_DESATURATE %d\n", flavour.doDesaturate); variantConfig.AppendFormat("#define DEF_DO_DESATURATE %d\n", flavour.doDesaturate);
variantConfig.AppendFormat("#define DEF_DYNAMIC_LIGHTS_MOD %d\n", flavour.dynLightsMod); variantConfig.AppendFormat("#define DEF_DYNAMIC_LIGHTS_MOD %d\n", flavour.dynLightsMod);

View file

@ -263,6 +263,7 @@ public:
bool dynLightsMod; bool dynLightsMod;
bool dynLightsSub; bool dynLightsSub;
bool dynLightsAdd; bool dynLightsAdd;
bool useULightLevel;
}; };
class FShader class FShader
@ -391,6 +392,7 @@ public:
tag |= (flavour.dynLightsMod & 1) << 12; tag |= (flavour.dynLightsMod & 1) << 12;
tag |= (flavour.dynLightsSub & 1) << 13; tag |= (flavour.dynLightsSub & 1) << 13;
tag |= (flavour.dynLightsAdd & 1) << 14; tag |= (flavour.dynLightsAdd & 1) << 14;
tag |= (flavour.useULightLevel & 1) << 15;
return tag; return tag;
} }

View file

@ -313,12 +313,12 @@ vec4 getLightColor(Material material, float fogdist, float fogfactor)
{ {
vec4 color = vColor; vec4 color = vColor;
if (uLightLevel >= 0.0) #if (DEF_USE_U_LIGHT_LEVEL == 1)
{ {
float newlightlevel = 1.0 - R_DoomLightingEquation(uLightLevel); float newlightlevel = 1.0 - R_DoomLightingEquation(uLightLevel);
color.rgb *= newlightlevel; color.rgb *= newlightlevel;
} }
else #else
{ {
#if (DEF_FOG_ENABLED == 1) && (DEF_FOG_COLOURED == 0) #if (DEF_FOG_ENABLED == 1) && (DEF_FOG_COLOURED == 0)
@ -336,7 +336,7 @@ vec4 getLightColor(Material material, float fogdist, float fogfactor)
} }
#endif #endif
} }
#endif
// //
// handle glowing walls // handle glowing walls
// //