- removed all compensation for the clamped shades.

None of this is needed, the shader can work with out of range shades to produce proper lighting.
This commit is contained in:
Christoph Oelckers 2021-04-21 22:48:55 +02:00
parent dc0df7d081
commit eb573bea23

View file

@ -402,15 +402,14 @@ 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 orgshade, float visibility, float alpha, bool setcolor = true) __forceinline void SetLightAndFog(FRenderState& state, PalEntry fade, int palette, int shade, float 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;
bool shadow = orgshade >= numshades; bool shadow = shade >= numshades;
int shade = clamp(orgshade, 0, numshades - 1);
if (shadow) state.SetObjectColor(0xff000000); if (shadow) state.SetObjectColor(0xff000000); // make sure that nothing lights this up again.
else state.SetObjectColor(0xffffffff); else state.SetObjectColor(0xffffffff);
// Disable brightmaps if non-black fog is used. // Disable brightmaps if non-black fog is used.
@ -427,7 +426,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, orgshade < -numshades / 2 ? 1 / 1000.f : ShadeDiv / (numshades - 2)); state.SetLightParms(visibility, ShadeDiv / (numshades - 2));
} }
// The shade rgb from the tint is ignored here. // The shade rgb from the tint is ignored here.