diff --git a/src/common/rendering/gles/gles_renderstate.cpp b/src/common/rendering/gles/gles_renderstate.cpp index b29c55d37..c6d4faeda 100644 --- a/src/common/rendering/gles/gles_renderstate.cpp +++ b/src/common/rendering/gles/gles_renderstate.cpp @@ -169,6 +169,7 @@ bool FGLRenderState::ApplyShader() } 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 flavour.dynLightsMod = (modLights > 0); diff --git a/src/common/rendering/gles/gles_shader.cpp b/src/common/rendering/gles/gles_shader.cpp index e8c0ce80f..f6ed0d402 100644 --- a/src/common/rendering/gles/gles_shader.cpp +++ b/src/common/rendering/gles/gles_shader.cpp @@ -664,7 +664,8 @@ bool FShader::Bind(ShaderFlavourData& flavour) 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_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_DYNAMIC_LIGHTS_MOD %d\n", flavour.dynLightsMod); variantConfig.AppendFormat("#define DEF_DYNAMIC_LIGHTS_SUB %d\n", flavour.dynLightsSub); diff --git a/src/common/rendering/gles/gles_shader.h b/src/common/rendering/gles/gles_shader.h index cb7b99554..e56d1c22f 100644 --- a/src/common/rendering/gles/gles_shader.h +++ b/src/common/rendering/gles/gles_shader.h @@ -263,6 +263,7 @@ public: bool dynLightsMod; bool dynLightsSub; bool dynLightsAdd; + bool useULightLevel; }; class FShader @@ -391,6 +392,7 @@ public: tag |= (flavour.dynLightsMod & 1) << 12; tag |= (flavour.dynLightsSub & 1) << 13; tag |= (flavour.dynLightsAdd & 1) << 14; + tag |= (flavour.useULightLevel & 1) << 15; return tag; } diff --git a/wadsrc/static/shaders_gles/glsl/main.fp b/wadsrc/static/shaders_gles/glsl/main.fp index 18d27031b..abfe86369 100644 --- a/wadsrc/static/shaders_gles/glsl/main.fp +++ b/wadsrc/static/shaders_gles/glsl/main.fp @@ -313,12 +313,12 @@ vec4 getLightColor(Material material, float fogdist, float fogfactor) { vec4 color = vColor; - if (uLightLevel >= 0.0) +#if (DEF_USE_U_LIGHT_LEVEL == 1) { float newlightlevel = 1.0 - R_DoomLightingEquation(uLightLevel); color.rgb *= newlightlevel; } - else +#else { #if (DEF_FOG_ENABLED == 1) && (DEF_FOG_COLOURED == 0) @@ -336,7 +336,7 @@ vec4 getLightColor(Material material, float fogdist, float fogfactor) } #endif } - +#endif // // handle glowing walls //