diff --git a/src/hwrenderer/scene/hw_sprites.cpp b/src/hwrenderer/scene/hw_sprites.cpp index ac4389713..27c3175d4 100644 --- a/src/hwrenderer/scene/hw_sprites.cpp +++ b/src/hwrenderer/scene/hw_sprites.cpp @@ -159,6 +159,7 @@ void GLSprite::DrawSprite(HWDrawInfo *di, FRenderState &state, bool translucent) : ThingColor.Modulate(cursec->SpecialColors[sector_t::sprites]); state.SetObjectColor(finalcol); + state.SetAddColor(cursec->SpecialColors[sector_t::add]); } state.SetColor(lightlevel, rel, di->isFullbrightScene(), Colormap, trans); } @@ -295,6 +296,7 @@ void GLSprite::DrawSprite(HWDrawInfo *di, FRenderState &state, bool translucent) } state.SetObjectColor(0xffffffff); + state.SetAddColor(0); state.EnableTexture(true); state.SetDynLight(0, 0, 0); } diff --git a/src/hwrenderer/scene/hw_walls.cpp b/src/hwrenderer/scene/hw_walls.cpp index f0022a109..eaf6f629b 100644 --- a/src/hwrenderer/scene/hw_walls.cpp +++ b/src/hwrenderer/scene/hw_walls.cpp @@ -174,6 +174,7 @@ void GLWall::RenderTexturedWall(HWDrawInfo *di, FRenderState &state, int rflags) PalEntry color2 = side->GetSpecialColor(tierndx, side_t::wallbottom, frontsector); state.SetObjectColor(color1); state.SetObjectColor2(color2); + state.SetAddColor(seg->frontsector->SpecialColors[sector_t::add]); if (color1 != color2) { // Do gradient setup only if there actually is a gradient. @@ -238,6 +239,7 @@ void GLWall::RenderTexturedWall(HWDrawInfo *di, FRenderState &state, int rflags) } state.SetObjectColor(0xffffffff); state.SetObjectColor2(0); + state.SetAddColor(0); state.SetTextureMode(tmode); state.EnableGlow(false); state.EnableGradient(false); diff --git a/src/hwrenderer/scene/hw_weapon.cpp b/src/hwrenderer/scene/hw_weapon.cpp index 8ec59a281..e232ba088 100644 --- a/src/hwrenderer/scene/hw_weapon.cpp +++ b/src/hwrenderer/scene/hw_weapon.cpp @@ -72,6 +72,7 @@ void HWDrawInfo::DrawPSprite(HUDSprite *huds, FRenderState &state) state.SetRenderStyle(huds->RenderStyle); state.SetTextureMode(huds->RenderStyle); state.SetObjectColor(huds->ObjectColor); + // state.SetAddColor(0); state.SetDynLight(huds->dynrgb[0], huds->dynrgb[1], huds->dynrgb[2]); state.EnableBrightmap(!(huds->RenderStyle.Flags & STYLEF_ColorIsFixed)); @@ -94,6 +95,7 @@ void HWDrawInfo::DrawPSprite(HUDSprite *huds, FRenderState &state) state.SetTextureMode(TM_NORMAL); state.AlphaFunc(Alpha_GEqual, gl_mask_sprite_threshold); state.SetObjectColor(0xffffffff); + state.SetAddColor(0); state.SetDynLight(0, 0, 0); state.EnableBrightmap(false); } diff --git a/wadsrc/static/shaders/glsl/main.fp b/wadsrc/static/shaders/glsl/main.fp index 694d01f29..1ea88cd8b 100644 --- a/wadsrc/static/shaders/glsl/main.fp +++ b/wadsrc/static/shaders/glsl/main.fp @@ -114,7 +114,7 @@ vec4 getTexel(vec2 st) if (uObjectColor2.a == 0.0) texel *= uObjectColor; else texel *= mix(uObjectColor, uObjectColor2, gradientdist.z); - texel += uAddColor; + texel.rgb += uAddColor.rgb; return desaturate(texel); }