mirror of
https://github.com/ReactionQuake3/reaction.git
synced 2025-02-17 01:22:32 +00:00
500 ms transition for underwater blur
This commit is contained in:
parent
391b404134
commit
8d7859931b
3 changed files with 26 additions and 5 deletions
|
@ -2893,9 +2893,15 @@ void CG_DrawBigPolygon(void) {
|
|||
trap_R_AddPolyToScene(cgs.media.blackHackShader, 4, Corners);
|
||||
}
|
||||
|
||||
static qboolean CG_UnderWater( void )
|
||||
// Makro - this needs to be called after cg.waterTransitionTime and cg.inWaterLastFrame have been updated
|
||||
static float CG_GetUnderWaterFraction( void )
|
||||
{
|
||||
return 0 != (CG_PointContents(cg.refdef.vieworg, -1) & (CONTENTS_WATER | CONTENTS_SLIME | CONTENTS_LAVA));
|
||||
const int WATER_ANIM_TIME = 500; // msec
|
||||
const int delta = cg.time - cg.waterTransitionTime;
|
||||
float frac = Com_Clamp(0.f, 1.f, delta / (float)WATER_ANIM_TIME);
|
||||
if (!cg.inWaterLastFrame)
|
||||
frac = 1.f - frac;
|
||||
return frac;
|
||||
}
|
||||
|
||||
static qboolean CG_IsDead( void )
|
||||
|
@ -2927,9 +2933,7 @@ static void CG_DrawIRVisionBlend( void )
|
|||
static void CG_SetupPostProcess( void )
|
||||
{
|
||||
cg.refdefex.blurFactor = CG_GetDamageBlendAlpha();
|
||||
|
||||
if (CG_UnderWater())
|
||||
cg.refdefex.blurFactor += 1.f;
|
||||
cg.refdefex.blurFactor += CG_GetUnderWaterFraction();
|
||||
|
||||
if (CG_IsDead())
|
||||
cg.refdefex.blurFactor += 1.f;
|
||||
|
|
|
@ -1201,6 +1201,10 @@ typedef struct {
|
|||
// Makro - explosion screen shake
|
||||
int explosionTime;
|
||||
float explosionForce;
|
||||
|
||||
// Makro - water transitions
|
||||
qboolean inWaterLastFrame;
|
||||
int waterTransitionTime;
|
||||
} cg_t;
|
||||
|
||||
//Blaze: struct to hold the func_breakable stuff
|
||||
|
|
|
@ -1262,6 +1262,18 @@ void CG_AddLensFlare(qboolean sun)
|
|||
}
|
||||
}
|
||||
|
||||
static qboolean CG_UnderWater( void )
|
||||
{
|
||||
return 0 != (CG_PointContents(cg.refdef.vieworg, -1) & (CONTENTS_WATER | CONTENTS_SLIME | CONTENTS_LAVA));
|
||||
}
|
||||
|
||||
static void CG_UpdateWaterTransitions( void )
|
||||
{
|
||||
qboolean inWater = CG_UnderWater();
|
||||
if (inWater != cg.inWaterLastFrame)
|
||||
cg.waterTransitionTime = cg.time;
|
||||
cg.inWaterLastFrame = inWater;
|
||||
}
|
||||
|
||||
/*
|
||||
=================
|
||||
|
@ -1324,6 +1336,7 @@ void CG_DrawActiveFrame(int serverTime, stereoFrame_t stereoView, qboolean demoP
|
|||
|
||||
// build cg.refdef
|
||||
inwater = CG_CalcViewValues();
|
||||
CG_UpdateWaterTransitions();
|
||||
|
||||
// first person blend blobs, done after AnglesToAxis
|
||||
if (!cg.renderingThirdPerson) {
|
||||
|
|
Loading…
Reference in a new issue