From 99c8ba1288aaac3a3879406150536423dc76d83a Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Thu, 7 Mar 2019 18:05:07 +0100 Subject: [PATCH] - use uAddColor instead of uObjectColor2 for the ending color of a special colormap range. Unlike uObjectColor2, this is more global state. uObjectColor2 is part of gradient calculation which may later be offloaded to a secondary buffer which already resulted in only conditionally setting it, resulting in broken special colormap application for the software renderer. --- src/rendering/gl/renderer/gl_renderstate.cpp | 2 +- src/rendering/hwrenderer/utility/hw_draw2d.cpp | 2 +- wadsrc/static/shaders/glsl/main.fp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/rendering/gl/renderer/gl_renderstate.cpp b/src/rendering/gl/renderer/gl_renderstate.cpp index 18657e748..57f20646e 100644 --- a/src/rendering/gl/renderer/gl_renderstate.cpp +++ b/src/rendering/gl/renderer/gl_renderstate.cpp @@ -138,7 +138,7 @@ bool FGLRenderState::ApplyShader() activeShader->muLightIndex.Set(-1); activeShader->muClipSplit.Set(mClipSplit); activeShader->muSpecularMaterial.Set(mGlossiness, mSpecularLevel); - activeShader->muAddColor.Set(mAddColor); // Can this be done without a shader? + activeShader->muAddColor.Set(mAddColor); if (mGlowEnabled) { diff --git a/src/rendering/hwrenderer/utility/hw_draw2d.cpp b/src/rendering/hwrenderer/utility/hw_draw2d.cpp index 11baa5b15..18955c2cd 100644 --- a/src/rendering/hwrenderer/utility/hw_draw2d.cpp +++ b/src/rendering/hwrenderer/utility/hw_draw2d.cpp @@ -155,7 +155,7 @@ void Draw2D(F2DDrawer *drawer, FRenderState &state) { state.SetTextureMode(TM_FIXEDCOLORMAP); state.SetObjectColor(cmd.mSpecialColormap[0]); - state.SetObjectColor2(cmd.mSpecialColormap[1]); + state.SetAddColor(cmd.mSpecialColormap[1]); } state.SetFog(cmd.mColor1, 0); state.SetColor(1, 1, 1, 1, cmd.mDesaturate); diff --git a/wadsrc/static/shaders/glsl/main.fp b/wadsrc/static/shaders/glsl/main.fp index ab4d16e91..84f044ef8 100644 --- a/wadsrc/static/shaders/glsl/main.fp +++ b/wadsrc/static/shaders/glsl/main.fp @@ -588,7 +588,7 @@ void main() if (uTextureMode == 7) { float gray = grayscale(frag); - vec4 cm = (uObjectColor + gray * (uObjectColor2 - uObjectColor)) * 2; + vec4 cm = (uObjectColor + gray * (uAddColor - uObjectColor)) * 2; frag = vec4(clamp(cm.rgb, 0.0, 1.0), frag.a); } frag = frag * ProcessLight(material, vColor);