From 9a777f719b700c3370f73a63d4b115a69650c563 Mon Sep 17 00:00:00 2001 From: Rachael Alexanderson Date: Tue, 24 Jan 2017 13:44:12 -0500 Subject: [PATCH 1/4] - Added "gl_bandedswlight" to reduce the software light emulation gradient to 32 levels. --- src/gl/renderer/gl_renderstate.cpp | 2 ++ src/gl/shaders/gl_shader.cpp | 1 + src/gl/shaders/gl_shader.h | 1 + wadsrc/static/language.enu | 1 + wadsrc/static/menudef.zz | 1 + wadsrc/static/shaders/glsl/main.fp | 6 +++++- wadsrc/static/shaders/glsl/shaderdefs.i | 1 + 7 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/gl/renderer/gl_renderstate.cpp b/src/gl/renderer/gl_renderstate.cpp index fa8237cca..22330905f 100644 --- a/src/gl/renderer/gl_renderstate.cpp +++ b/src/gl/renderer/gl_renderstate.cpp @@ -43,6 +43,7 @@ void gl_SetTextureMode(int type); FRenderState gl_RenderState; CVAR(Bool, gl_direct_state_change, true, 0) +CVAR(Bool, gl_bandedswlight, true, CVAR_ARCHIVE) static VSMatrix identityMatrix(1); @@ -146,6 +147,7 @@ bool FRenderState::ApplyShader() activeShader->muDesaturation.Set(mDesaturation / 255.f); activeShader->muFogEnabled.Set(fogset); + activeShader->muPalLightLevels.Set(gl_bandedswlight); activeShader->muTextureMode.Set(mTextureMode); activeShader->muCameraPos.Set(mCameraPos.vec); activeShader->muLightParms.Set(mLightParms); diff --git a/src/gl/shaders/gl_shader.cpp b/src/gl/shaders/gl_shader.cpp index 327ac5fd4..ef512faea 100644 --- a/src/gl/shaders/gl_shader.cpp +++ b/src/gl/shaders/gl_shader.cpp @@ -214,6 +214,7 @@ bool FShader::Load(const char * name, const char * vert_prog_lump, const char * muDesaturation.Init(hShader, "uDesaturationFactor"); muFogEnabled.Init(hShader, "uFogEnabled"); + muPalLightLevels.Init(hShader, "uPalLightLevels"); muTextureMode.Init(hShader, "uTextureMode"); muCameraPos.Init(hShader, "uCameraPos"); muLightParms.Init(hShader, "uLightAttr"); diff --git a/src/gl/shaders/gl_shader.h b/src/gl/shaders/gl_shader.h index acdd530aa..f9eb5c292 100644 --- a/src/gl/shaders/gl_shader.h +++ b/src/gl/shaders/gl_shader.h @@ -259,6 +259,7 @@ class FShader FBufferedUniform1f muDesaturation; FBufferedUniform1i muFogEnabled; + FBufferedUniform1i muPalLightLevels; FBufferedUniform1i muTextureMode; FBufferedUniform4f muCameraPos; FBufferedUniform4f muLightParms; diff --git a/wadsrc/static/language.enu b/wadsrc/static/language.enu index ddf23edb9..bdc1ce3ae 100644 --- a/wadsrc/static/language.enu +++ b/wadsrc/static/language.enu @@ -2647,6 +2647,7 @@ GLPREFMNU_SSAO_PORTALS = "Portals with AO"; GLPREFMNU_FXAA = "FXAA Quality"; GLPREFMNU_PALTONEMAPORDER = "Tonemap Palette Order"; GLPREFMNU_PALTONEMAPPOWER = "Tonemap Palette Exponent"; +GLPREFMNU_SWLMBANDED = "Banded SW Lightmode"; // Option Values OPTVAL_SMART = "Smart"; diff --git a/wadsrc/static/menudef.zz b/wadsrc/static/menudef.zz index f683f2e0d..606d21ab6 100644 --- a/wadsrc/static/menudef.zz +++ b/wadsrc/static/menudef.zz @@ -232,6 +232,7 @@ OptionMenu "GLPrefOptions" { Title "$GLPREFMNU_TITLE" Option "$GLPREFMNU_SECLIGHTMODE", gl_lightmode, "LightingModes" + Option "$GLPREFMNU_SWLMBANDED", gl_bandedswlight, "OnOff" Option "$GLPREFMNU_FOGMODE", gl_fogmode, "FogMode" Option "$GLPREFMNU_FOGFORCEFULLBRIGHT", gl_brightfog, "YesNo" Slider "$GLPREFMNU_WPNLIGHTSTR", gl_weaponlight, 0,32, 2 diff --git a/wadsrc/static/shaders/glsl/main.fp b/wadsrc/static/shaders/glsl/main.fp index 5834dcf5d..0c55adb50 100644 --- a/wadsrc/static/shaders/glsl/main.fp +++ b/wadsrc/static/shaders/glsl/main.fp @@ -121,7 +121,11 @@ float R_DoomLightingEquation(float light) /* The zdoom light equation */ float vis = globVis / z; float shade = 64.0 - (L + 12.0) * 32.0/128.0; - float lightscale = clamp((shade - min(24.0, vis)) / 32.0, 0.0, 31.0/32.0); + float lightscale; + if (uPalLightLevels != 0) + lightscale = clamp(int(shade - min(24.0, vis)) / 32.0, 0.0, 31.0/32.0); + else + lightscale = clamp((shade - min(24.0, vis)) / 32.0, 0.0, 31.0/32.0); // Result is the normalized colormap index (0 bright .. 1 dark) return lightscale; diff --git a/wadsrc/static/shaders/glsl/shaderdefs.i b/wadsrc/static/shaders/glsl/shaderdefs.i index 8c5697a66..2099427d5 100644 --- a/wadsrc/static/shaders/glsl/shaderdefs.i +++ b/wadsrc/static/shaders/glsl/shaderdefs.i @@ -41,6 +41,7 @@ uniform vec4 uLightAttr; #define uLightFactor uLightAttr.g #define uLightDist uLightAttr.r uniform int uFogEnabled; +uniform int uPalLightLevels; // dynamic lights uniform int uLightIndex; From 3154652885f4ed8ded158b5d3495087b6abbe5aa Mon Sep 17 00:00:00 2001 From: Rachael Alexanderson Date: Tue, 24 Jan 2017 14:01:42 -0500 Subject: [PATCH 2/4] - fixed possible AMD compilation error. --- wadsrc/static/shaders/glsl/main.fp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wadsrc/static/shaders/glsl/main.fp b/wadsrc/static/shaders/glsl/main.fp index 0c55adb50..145f76964 100644 --- a/wadsrc/static/shaders/glsl/main.fp +++ b/wadsrc/static/shaders/glsl/main.fp @@ -123,7 +123,7 @@ float R_DoomLightingEquation(float light) float shade = 64.0 - (L + 12.0) * 32.0/128.0; float lightscale; if (uPalLightLevels != 0) - lightscale = clamp(int(shade - min(24.0, vis)) / 32.0, 0.0, 31.0/32.0); + lightscale = clamp(float(int(shade - min(24.0, vis))) / 32.0, 0.0, 31.0/32.0); else lightscale = clamp((shade - min(24.0, vis)) / 32.0, 0.0, 31.0/32.0); From c1ff1c6336168d90098aca2b735f6191ccb68f81 Mon Sep 17 00:00:00 2001 From: Rachael Alexanderson Date: Tue, 24 Jan 2017 14:03:59 -0500 Subject: [PATCH 3/4] - Set banded light to "false" to not impact GZDoom defaults. --- src/gl/renderer/gl_renderstate.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gl/renderer/gl_renderstate.cpp b/src/gl/renderer/gl_renderstate.cpp index 22330905f..429f69c34 100644 --- a/src/gl/renderer/gl_renderstate.cpp +++ b/src/gl/renderer/gl_renderstate.cpp @@ -43,7 +43,7 @@ void gl_SetTextureMode(int type); FRenderState gl_RenderState; CVAR(Bool, gl_direct_state_change, true, 0) -CVAR(Bool, gl_bandedswlight, true, CVAR_ARCHIVE) +CVAR(Bool, gl_bandedswlight, false, CVAR_ARCHIVE) static VSMatrix identityMatrix(1); From 949862f78f831ac96976840d896bd0ab72528609 Mon Sep 17 00:00:00 2001 From: Rachael Alexanderson Date: Tue, 24 Jan 2017 14:18:11 -0500 Subject: [PATCH 4/4] - fixed: PalTonemap Exponent slider didn't have a proper decimal place. --- wadsrc/static/menudef.zz | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wadsrc/static/menudef.zz b/wadsrc/static/menudef.zz index 606d21ab6..84ddb9448 100644 --- a/wadsrc/static/menudef.zz +++ b/wadsrc/static/menudef.zz @@ -257,6 +257,6 @@ OptionMenu "GLPrefOptions" Slider "$GLPREFMNU_SSAO_PORTALS", gl_ssao_portals, 0.0, 4.0, 1.0, 0 Option "$GLPREFMNU_FXAA", gl_fxaa, "FXAAQuality" StaticText " " - Slider "$GLPREFMNU_PALTONEMAPPOWER", gl_paltonemap_powtable, 0.2, 3.0, 0.1, 0 + Slider "$GLPREFMNU_PALTONEMAPPOWER", gl_paltonemap_powtable, 0.2, 3.0, 0.1, 1 Option "$GLPREFMNU_PALTONEMAPORDER", gl_paltonemap_reverselookup, "LookupOrder" }