diff --git a/src/gl/renderer/gl_renderer.cpp b/src/gl/renderer/gl_renderer.cpp index 9d6833dcf3..eab8fa0ff9 100644 --- a/src/gl/renderer/gl_renderer.cpp +++ b/src/gl/renderer/gl_renderer.cpp @@ -767,6 +767,7 @@ void FGLRenderer::Draw2D(F2DDrawer *drawer) gl_GetRenderStyle(cmd.mRenderStyle, false, false, &tm, &sb, &db, &be); gl_RenderState.BlendEquation(be); gl_RenderState.BlendFunc(sb, db); + gl_RenderState.EnableBrightmap(!(cmd.mRenderStyle.Flags & STYLEF_ColorIsFixed)); // Rather than adding remapping code, let's enforce that the constants here are equal. static_assert(int(F2DDrawer::DTM_Normal) == int(TM_MODULATE), "DTM_Normal != TM_MODULATE"); @@ -878,6 +879,7 @@ void FGLRenderer::Draw2D(F2DDrawer *drawer) gl_RenderState.SetVertexBuffer(GLRenderer->mVBO); gl_RenderState.EnableTexture(true); + gl_RenderState.EnableBrightmap(true); gl_RenderState.SetTextureMode(TM_MODULATE); gl_RenderState.SetFixedColormap(CM_DEFAULT); gl_RenderState.ResetColor(); diff --git a/src/hwrenderer/scene/hw_weapon.cpp b/src/hwrenderer/scene/hw_weapon.cpp index c2000bdf9d..33c74aca3d 100644 --- a/src/hwrenderer/scene/hw_weapon.cpp +++ b/src/hwrenderer/scene/hw_weapon.cpp @@ -212,6 +212,22 @@ WeaponLighting GetWeaponLighting(sector_t *viewsector, const DVector3 &pos, int return l; } +void WeaponLighting::SetBright() +{ + if (!isbelow) + { + cm.MakeWhite(); + } + else + { + // under water areas keep most of their color for fullbright objects + cm.LightColor.r = (3 * cm.LightColor.r + 0xff) / 4; + cm.LightColor.g = (3 * cm.LightColor.g + 0xff) / 4; + cm.LightColor.b = (3 * cm.LightColor.b + 0xff) / 4; + } + lightlevel = 255; +} + //========================================================================== // // Render Style diff --git a/src/hwrenderer/scene/hw_weapon.h b/src/hwrenderer/scene/hw_weapon.h index a78cf1c2a8..88a7f3fb76 100644 --- a/src/hwrenderer/scene/hw_weapon.h +++ b/src/hwrenderer/scene/hw_weapon.h @@ -19,6 +19,8 @@ struct WeaponLighting FColormap cm; int lightlevel; bool isbelow; + + void SetBright(); }; struct WeaponRenderStyle