mirror of https://github.com/ZDoom/gzdoom-gles.git
- 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.
This commit is contained in:
parent
cabe0c583e
commit
99c8ba1288
|
@ -138,7 +138,7 @@ bool FGLRenderState::ApplyShader()
|
||||||
activeShader->muLightIndex.Set(-1);
|
activeShader->muLightIndex.Set(-1);
|
||||||
activeShader->muClipSplit.Set(mClipSplit);
|
activeShader->muClipSplit.Set(mClipSplit);
|
||||||
activeShader->muSpecularMaterial.Set(mGlossiness, mSpecularLevel);
|
activeShader->muSpecularMaterial.Set(mGlossiness, mSpecularLevel);
|
||||||
activeShader->muAddColor.Set(mAddColor); // Can this be done without a shader?
|
activeShader->muAddColor.Set(mAddColor);
|
||||||
|
|
||||||
if (mGlowEnabled)
|
if (mGlowEnabled)
|
||||||
{
|
{
|
||||||
|
|
|
@ -155,7 +155,7 @@ void Draw2D(F2DDrawer *drawer, FRenderState &state)
|
||||||
{
|
{
|
||||||
state.SetTextureMode(TM_FIXEDCOLORMAP);
|
state.SetTextureMode(TM_FIXEDCOLORMAP);
|
||||||
state.SetObjectColor(cmd.mSpecialColormap[0]);
|
state.SetObjectColor(cmd.mSpecialColormap[0]);
|
||||||
state.SetObjectColor2(cmd.mSpecialColormap[1]);
|
state.SetAddColor(cmd.mSpecialColormap[1]);
|
||||||
}
|
}
|
||||||
state.SetFog(cmd.mColor1, 0);
|
state.SetFog(cmd.mColor1, 0);
|
||||||
state.SetColor(1, 1, 1, 1, cmd.mDesaturate);
|
state.SetColor(1, 1, 1, 1, cmd.mDesaturate);
|
||||||
|
|
|
@ -588,7 +588,7 @@ void main()
|
||||||
if (uTextureMode == 7)
|
if (uTextureMode == 7)
|
||||||
{
|
{
|
||||||
float gray = grayscale(frag);
|
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 = vec4(clamp(cm.rgb, 0.0, 1.0), frag.a);
|
||||||
}
|
}
|
||||||
frag = frag * ProcessLight(material, vColor);
|
frag = frag * ProcessLight(material, vColor);
|
||||||
|
|
Loading…
Reference in New Issue