mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2025-02-23 20:01:20 +00:00
Optimise uLightLevel
This commit is contained in:
parent
36f2420c32
commit
7a2ee8acdb
4 changed files with 8 additions and 4 deletions
|
@ -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);
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
//
|
//
|
||||||
|
|
Loading…
Reference in a new issue