- Changed MF7_SPRITEFLIP, MF8_ZDOOMTRANS to RenderFlags

- Added RF_ZDOOMADD
- renamed r_canontrans to r_vanillatrans
- this developer's insanity level has increased by 231%.
This commit is contained in:
Rachael Alexanderson 2017-06-01 13:13:30 -04:00 committed by Christoph Oelckers
commit 89b372cb01
8 changed files with 46 additions and 23 deletions

View file

@ -75,7 +75,7 @@ CUSTOM_CVAR(Int, gl_fuzztype, 0, CVAR_ARCHIVE)
}
EXTERN_CVAR (Float, transsouls)
EXTERN_CVAR (Bool, r_canontrans)
EXTERN_CVAR (Bool, r_vanillatrans)
extern TArray<spritedef_t> sprites;
extern TArray<spriteframe_t> SpriteFrames;
@ -801,7 +801,7 @@ void GLSprite::Process(AActor* thing, sector_t * sector, int thruportal)
sprangle = 0.;
rot = 0;
}
patch = sprites[spritenum].GetSpriteFrame(thing->frame, rot, sprangle, &mirror, !!(thing->flags7 & MF7_SPRITEFLIP));
patch = sprites[spritenum].GetSpriteFrame(thing->frame, rot, sprangle, &mirror, !!(thing->renderflags & RF_SPRITEFLIP));
}
if (!patch.isValid()) return;
@ -817,7 +817,7 @@ void GLSprite::Process(AActor* thing, sector_t * sector, int thruportal)
gltexture->GetSpriteRect(&r);
// [SP] SpriteFlip
if (thing->flags7 & MF7_SPRITEFLIP)
if (thing->renderflags & RF_SPRITEFLIP)
thing->renderflags ^= RF_XFLIP;
if (mirror ^ !!(thing->renderflags & RF_XFLIP))
@ -832,7 +832,7 @@ void GLSprite::Process(AActor* thing, sector_t * sector, int thruportal)
ur = gltexture->GetSpriteUL();
}
if (thing->flags7 & MF7_SPRITEFLIP) // [SP] Flip back
if (thing->renderflags & RF_SPRITEFLIP) // [SP] Flip back
thing->renderflags ^= RF_XFLIP;
r.Scale(sprscale.X, sprscale.Y);
@ -993,14 +993,25 @@ void GLSprite::Process(AActor* thing, sector_t * sector, int thruportal)
{
trans = 1.f;
}
if ((thing->flags8 & MF8_ZDOOMTRANS) && r_canontrans)
{ // [SP] "canonical transparency" - with the flip of a CVar, disable transparency for Doom objects
trans = 1.f;
RenderStyle.BlendOp = STYLEOP_Add;
RenderStyle.SrcAlpha = STYLEALPHA_One;
RenderStyle.DestAlpha = STYLEALPHA_Zero;
}
if (r_vanillatrans)
{
// [SP] "canonical transparency" - with the flip of a CVar, disable transparency for Doom objects,
// and disable 'additive' translucency for certain objects from other games.
if (thing->renderflags & RF_ZDOOMTRANS)
{
trans = 1.f;
RenderStyle.BlendOp = STYLEOP_Add;
RenderStyle.SrcAlpha = STYLEALPHA_One;
RenderStyle.DestAlpha = STYLEALPHA_Zero;
}
if (thing->renderflags & RF_ZDOOMADD)
{
RenderStyle.BlendOp = STYLEOP_Add;
RenderStyle.SrcAlpha = STYLEALPHA_Src;
RenderStyle.DestAlpha = STYLEALPHA_InvSrc;
}
}
if (trans >= 1.f - FLT_EPSILON && RenderStyle.BlendOp != STYLEOP_Shadow && (
(RenderStyle.SrcAlpha == STYLEALPHA_One && RenderStyle.DestAlpha == STYLEALPHA_Zero) ||
(RenderStyle.SrcAlpha == STYLEALPHA_Src && RenderStyle.DestAlpha == STYLEALPHA_InvSrc)