mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2024-11-28 23:11:58 +00:00
- fixed the mapping of additive translucency to color-based translucency.
The destination mode sould be 'One', not 'InvSrcColor'. Now both of these are available as explicit modes, not just through the optional mapping.
This commit is contained in:
parent
3d3a00fd0d
commit
59b4e297c0
7 changed files with 20 additions and 4 deletions
|
@ -94,7 +94,7 @@ void GLSprite::DrawSprite(HWDrawInfo *di, FRenderState &state, bool translucent)
|
||||||
gl_usecolorblending && !di->isFullbrightScene() && actor &&
|
gl_usecolorblending && !di->isFullbrightScene() && actor &&
|
||||||
fullbright && gltexture && !gltexture->tex->GetTranslucency())
|
fullbright && gltexture && !gltexture->tex->GetTranslucency())
|
||||||
{
|
{
|
||||||
RenderStyle = LegacyRenderStyles[STYLE_ColorBlend];
|
RenderStyle = LegacyRenderStyles[STYLE_ColorAdd];
|
||||||
}
|
}
|
||||||
|
|
||||||
state.SetRenderStyle(RenderStyle);
|
state.SetRenderStyle(RenderStyle);
|
||||||
|
|
|
@ -46,6 +46,9 @@ xx(Shadow)
|
||||||
xx(Subtract)
|
xx(Subtract)
|
||||||
xx(Subtractive)
|
xx(Subtractive)
|
||||||
xx(FillColor)
|
xx(FillColor)
|
||||||
|
xx(ColorBlend)
|
||||||
|
xx(ColorAdd)
|
||||||
|
xx(Multiply)
|
||||||
|
|
||||||
// Healingradius types
|
// Healingradius types
|
||||||
xx(Mana)
|
xx(Mana)
|
||||||
|
|
|
@ -8602,7 +8602,7 @@ void PrintMiscActorInfo(AActor *query)
|
||||||
/*for (flagi = 0; flagi < 31; flagi++)
|
/*for (flagi = 0; flagi < 31; flagi++)
|
||||||
if (query->BounceFlags & 1<<flagi) Printf(" %s", flagnamesb[flagi]);*/
|
if (query->BounceFlags & 1<<flagi) Printf(" %s", flagnamesb[flagi]);*/
|
||||||
Printf("\nRender style = %i:%s, alpha %f\nRender flags: %x",
|
Printf("\nRender style = %i:%s, alpha %f\nRender flags: %x",
|
||||||
querystyle, (querystyle < STYLE_Count ? renderstyles[querystyle] : "Unknown"),
|
querystyle, (querystyle < countof(renderstyles) ? renderstyles[querystyle] : "Custom"),
|
||||||
query->Alpha, query->renderflags.GetValue());
|
query->Alpha, query->renderflags.GetValue());
|
||||||
/*for (flagi = 0; flagi < 31; flagi++)
|
/*for (flagi = 0; flagi < 31; flagi++)
|
||||||
if (query->renderflags & 1<<flagi) Printf(" %s", flagnamesr[flagi]);*/
|
if (query->renderflags & 1<<flagi) Printf(" %s", flagnamesr[flagi]);*/
|
||||||
|
|
|
@ -739,6 +739,15 @@ public:
|
||||||
case NAME_Subtractive:
|
case NAME_Subtractive:
|
||||||
th->RenderStyle = STYLE_Subtract;
|
th->RenderStyle = STYLE_Subtract;
|
||||||
break;
|
break;
|
||||||
|
case NAME_ColorBlend:
|
||||||
|
th->RenderStyle = STYLE_ColorBlend;
|
||||||
|
break;
|
||||||
|
case NAME_ColorAdd:
|
||||||
|
th->RenderStyle = STYLE_ColorAdd;
|
||||||
|
break;
|
||||||
|
case NAME_Multiply:
|
||||||
|
th->RenderStyle = STYLE_Multiply;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,6 +62,7 @@ FRenderStyle LegacyRenderStyles[STYLE_Count] =
|
||||||
{ { STYLEOP_Add, STYLEALPHA_InvDstCol, STYLEALPHA_Zero, 0 } }, /* STYLE_InverseMultiply */
|
{ { STYLEOP_Add, STYLEALPHA_InvDstCol, STYLEALPHA_Zero, 0 } }, /* STYLE_InverseMultiply */
|
||||||
{ { STYLEOP_Add, STYLEALPHA_SrcCol, STYLEALPHA_InvSrcCol, 0 } }, /* STYLE_ColorBlend */
|
{ { STYLEOP_Add, STYLEALPHA_SrcCol, STYLEALPHA_InvSrcCol, 0 } }, /* STYLE_ColorBlend */
|
||||||
{ { STYLEOP_Add, STYLEALPHA_One, STYLEALPHA_Zero, 0 } }, /* STYLE_Source */
|
{ { STYLEOP_Add, STYLEALPHA_One, STYLEALPHA_Zero, 0 } }, /* STYLE_Source */
|
||||||
|
{ { STYLEOP_Add, STYLEALPHA_SrcCol, STYLEALPHA_One, 0 } }, /* STYLE_ColorAdd */
|
||||||
};
|
};
|
||||||
|
|
||||||
double GetAlpha(int type, double alpha)
|
double GetAlpha(int type, double alpha)
|
||||||
|
|
|
@ -78,6 +78,7 @@ enum ERenderStyle
|
||||||
STYLE_InverseMultiply, // Multiply source with inverse of destination (HW renderer only.)
|
STYLE_InverseMultiply, // Multiply source with inverse of destination (HW renderer only.)
|
||||||
STYLE_ColorBlend, // Use color intensity as transparency factor
|
STYLE_ColorBlend, // Use color intensity as transparency factor
|
||||||
STYLE_Source, // No blending (only used internally)
|
STYLE_Source, // No blending (only used internally)
|
||||||
|
STYLE_ColorAdd, // Use color intensity as transparency factor and blend additively.
|
||||||
|
|
||||||
STYLE_Count
|
STYLE_Count
|
||||||
};
|
};
|
||||||
|
|
|
@ -700,12 +700,14 @@ DEFINE_PROPERTY(renderstyle, S, Actor)
|
||||||
PROP_STRING_PARM(str, 0);
|
PROP_STRING_PARM(str, 0);
|
||||||
static const char * renderstyles[]={
|
static const char * renderstyles[]={
|
||||||
"NONE", "NORMAL", "FUZZY", "SOULTRANS", "OPTFUZZY", "STENCIL",
|
"NONE", "NORMAL", "FUZZY", "SOULTRANS", "OPTFUZZY", "STENCIL",
|
||||||
"TRANSLUCENT", "ADD", "SHADED", "SHADOW", "SUBTRACT", "ADDSTENCIL", "ADDSHADED", NULL };
|
"TRANSLUCENT", "ADD", "SHADED", "SHADOW", "SUBTRACT", "ADDSTENCIL",
|
||||||
|
"ADDSHADED", "COLORBLEND", "COLORADD", "MULTIPLY", NULL };
|
||||||
|
|
||||||
static const int renderstyle_values[]={
|
static const int renderstyle_values[]={
|
||||||
STYLE_None, STYLE_Normal, STYLE_Fuzzy, STYLE_SoulTrans, STYLE_OptFuzzy,
|
STYLE_None, STYLE_Normal, STYLE_Fuzzy, STYLE_SoulTrans, STYLE_OptFuzzy,
|
||||||
STYLE_TranslucentStencil, STYLE_Translucent, STYLE_Add, STYLE_Shaded,
|
STYLE_TranslucentStencil, STYLE_Translucent, STYLE_Add, STYLE_Shaded,
|
||||||
STYLE_Shadow, STYLE_Subtract, STYLE_AddStencil, STYLE_AddShaded};
|
STYLE_Shadow, STYLE_Subtract, STYLE_AddStencil, STYLE_AddShaded,
|
||||||
|
STYLE_ColorBlend, STYLE_ColorAdd, STYLE_Multiply};
|
||||||
|
|
||||||
// make this work for old style decorations, too.
|
// make this work for old style decorations, too.
|
||||||
if (!strnicmp(str, "style_", 6)) str+=6;
|
if (!strnicmp(str, "style_", 6)) str+=6;
|
||||||
|
|
Loading…
Reference in a new issue