- handle fullbright sprite hackery using negative shade values.

This commit is contained in:
Christoph Oelckers 2021-04-12 18:57:10 +02:00
parent bf019ac028
commit 89be30b720

View file

@ -400,12 +400,12 @@ inline void SetSpriteTranslucency(const spritetype* sprite, float& alpha, FRende
extern PalEntry GlobalMapFog; extern PalEntry GlobalMapFog;
extern float GlobalFogDensity; extern float GlobalFogDensity;
__forceinline void SetLightAndFog(FRenderState& state, PalEntry fade, int palette, int shade, int visibility, float alpha, bool setcolor = true) __forceinline void SetLightAndFog(FRenderState& state, PalEntry fade, int palette, int orgshade, int visibility, float alpha, bool setcolor = true)
{ {
// Fog must be done before the texture so that the texture selector can override it. // Fog must be done before the texture so that the texture selector can override it.
bool foggy = (GlobalMapFog || (fade & 0xffffff)); bool foggy = (GlobalMapFog || (fade & 0xffffff));
auto ShadeDiv = lookups.tables[palette].ShadeFactor; auto ShadeDiv = lookups.tables[palette].ShadeFactor;
shade = clamp(shade, 0, numshades - 1); int shade = clamp(orgshade, 0, numshades - 1);
// Disable brightmaps if non-black fog is used. // Disable brightmaps if non-black fog is used.
if (ShadeDiv >= 1 / 1000.f && foggy) if (ShadeDiv >= 1 / 1000.f && foggy)
{ {
@ -420,7 +420,7 @@ __forceinline void SetLightAndFog(FRenderState& state, PalEntry fade, int palett
state.EnableFog(0); state.EnableFog(0);
state.SetFog(0, 0); state.SetFog(0, 0);
state.SetSoftLightLevel(gl_fogmode != 0 && ShadeDiv >= 1 / 1000.f ? 255 - Scale(shade, 255, numshades) : 255); state.SetSoftLightLevel(gl_fogmode != 0 && ShadeDiv >= 1 / 1000.f ? 255 - Scale(shade, 255, numshades) : 255);
state.SetLightParms(visibility, ShadeDiv / (numshades - 2)); state.SetLightParms(visibility, orgshade < -numshades / 2 ? 1 / 1000.f : ShadeDiv / (numshades - 2));
} }
// The shade rgb from the tint is ignored here. // The shade rgb from the tint is ignored here.