670 lines
20 KiB
C++
670 lines
20 KiB
C++
/*
|
|
=======================================================================
|
|
FILE : CREScreenProcess.cpp
|
|
DESC : screen processing render element
|
|
PROJ : Crytek Engine
|
|
CODER: Tiago Sousa
|
|
|
|
TODO:
|
|
.Convert all screen based effects into this interface
|
|
|
|
Last Update: 16/06/2003
|
|
=======================================================================
|
|
*/
|
|
|
|
#include "RenderPCH.h"
|
|
|
|
// some helper macros
|
|
#define SET_PARAMETER(pProcess, pParam, pType, pValue) \
|
|
case (pProcess): (pParam)=*((pType*) pValue); break; \
|
|
|
|
#define RETURN_PARAMETER(pProcess, pParam) \
|
|
case (pProcess): return (void*)&pParam;\
|
|
|
|
// constructor/destructor
|
|
CREScreenProcess::CREScreenProcess()
|
|
{
|
|
// setup screen process renderer type
|
|
mfSetType(eDATA_ScreenProcess);
|
|
mfUpdateFlags(FCEF_TRANSFORM);
|
|
m_pVars=0;
|
|
|
|
// create class vars if necessary...
|
|
if(!m_pVars)
|
|
{
|
|
m_pVars=new CScreenVars;
|
|
m_pVars->Create();
|
|
}
|
|
}
|
|
|
|
CREScreenProcess::~CREScreenProcess()
|
|
{
|
|
SAFE_DELETE(m_pVars)
|
|
};
|
|
|
|
// prepare screen processing
|
|
void CREScreenProcess:: mfPrepare()
|
|
{
|
|
gRenDev->EF_CheckOverflow(0, 0, this);
|
|
|
|
// make sure this is not processed, when rendering to refractive texture..
|
|
if (gRenDev->m_RP.m_bDrawToTexture)
|
|
{
|
|
gRenDev->m_RP.m_pRE = NULL;
|
|
}
|
|
else
|
|
{
|
|
gRenDev->m_RP.m_pRE = this;
|
|
}
|
|
|
|
gRenDev->m_RP.m_FlagsPerFlush |= RBSI_DRAWAS2D;
|
|
gRenDev->m_RP.m_RendNumIndices = 0;
|
|
gRenDev->m_RP.m_RendNumVerts = 0;
|
|
}
|
|
|
|
void CREScreenProcess::mfReset()
|
|
{
|
|
if(m_pVars)
|
|
{
|
|
m_pVars->Reset();
|
|
}
|
|
}
|
|
|
|
// activate screen processes
|
|
void CREScreenProcess:: mfActivate(int pProcess)
|
|
{
|
|
switch(pProcess)
|
|
{
|
|
case SCREENPROCESS_FADE:
|
|
if(m_pVars->m_fFadeTime)
|
|
{
|
|
m_pVars->m_bFadeActive=1;
|
|
}
|
|
else
|
|
{
|
|
// reset fade
|
|
m_pVars->m_bFadeActive=0;
|
|
m_pVars->m_fFadePreTime=0.0f;
|
|
m_pVars->m_fFadeCurrPreTime=0.0f;
|
|
}
|
|
break;
|
|
|
|
case SCREENPROCESS_BLUR:
|
|
m_pVars->m_bBlurActive=1;
|
|
break;
|
|
case SCREENPROCESS_COLORTRANSFER:
|
|
m_pVars->m_bColorTransferActive=1;
|
|
break;
|
|
case SCREENPROCESS_MOTIONBLUR:
|
|
m_pVars->m_bMotionBlurActive=1;
|
|
break;
|
|
case SCREENPROCESS_GLARE:
|
|
m_pVars->m_bGlareActive=1;
|
|
break;
|
|
case SCREENPROCESS_NIGHTVISION:
|
|
// m_pVars->m_bNightVisionActive=1;
|
|
if(m_pVars->m_pCVHeatVision)
|
|
{
|
|
m_pVars->m_pCVHeatVision->Set(1);
|
|
}
|
|
|
|
break;
|
|
case SCREENPROCESS_HEATVISION:
|
|
if(m_pVars->m_pCVHeatVision)
|
|
{
|
|
m_pVars->m_pCVHeatVision->Set(1);
|
|
}
|
|
break;
|
|
case SCREENPROCESS_CARTOON:
|
|
m_pVars->m_bCartoonActive=1;
|
|
// reset fade amount
|
|
if(iConsole)
|
|
{
|
|
if(m_pVars->m_pCVMaxTexLodBias)
|
|
{
|
|
if(m_pVars->m_bCartoonActive)
|
|
{
|
|
m_pVars->m_fPrevMaxTexLodBias=m_pVars->m_pCVMaxTexLodBias->GetFVal();
|
|
m_pVars->m_pCVMaxTexLodBias->Set(-1.5f);
|
|
}
|
|
else
|
|
{
|
|
m_pVars->m_fPrevMaxTexLodBias=m_pVars->m_pCVMaxTexLodBias->GetFVal();
|
|
m_pVars->m_pCVMaxTexLodBias->Set(0.0f);
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case SCREENPROCESS_FLASHBANG:
|
|
m_pVars->m_bFlashBangActive=1;
|
|
// reset flash time out
|
|
m_pVars->m_fFlashBangTimeOut=1.0f;
|
|
break;
|
|
case SCREENPROCESS_DOF:
|
|
m_pVars->m_bDofActive=1;
|
|
// reset dof focal distance plane
|
|
m_pVars->m_fDofFocalDistance=20.0f;
|
|
break;
|
|
default:
|
|
break;
|
|
};
|
|
}
|
|
|
|
// set screen processing parameters
|
|
int CREScreenProcess:: mfSetParameter(int iProcess, int iParams, void *dwValue)
|
|
{
|
|
switch(iProcess)
|
|
{
|
|
// set screen fade parameters
|
|
case SCREENPROCESS_FADE:
|
|
switch(iParams)
|
|
{
|
|
SET_PARAMETER(SCREENPROCESS_FADECOLOR, m_pVars->m_pFadeColor, color4f, dwValue)
|
|
|
|
case SCREENPROCESS_ACTIVE:
|
|
if(*((bool*) dwValue)==1)
|
|
{
|
|
m_pVars->m_bFadeActive=1;
|
|
}
|
|
else
|
|
{
|
|
// reset fade
|
|
m_pVars->m_bFadeActive=0;
|
|
m_pVars->m_fFadePreTime=0.0f;
|
|
m_pVars->m_fFadeCurrPreTime=0.0f;
|
|
}
|
|
break;
|
|
|
|
case SCREENPROCESS_TRANSITIONTIME:
|
|
m_pVars->m_fFadeTime=*((float*) dwValue);
|
|
m_pVars->m_fFadeCurrTime=(float) fabs(*((float*) dwValue));
|
|
break;
|
|
|
|
SET_PARAMETER(SCREENPROCESS_PRETRANSITIONTIME, m_pVars->m_fFadePreTime, float, dwValue)
|
|
}
|
|
break;
|
|
|
|
// set screen blur parameters
|
|
case SCREENPROCESS_BLUR:
|
|
switch(iParams)
|
|
{
|
|
SET_PARAMETER(SCREENPROCESS_BLURAMOUNT, m_pVars->m_fBlurAmount, float, dwValue)
|
|
SET_PARAMETER(SCREENPROCESS_ACTIVE, m_pVars->m_bBlurActive, bool, dwValue)
|
|
|
|
case SCREENPROCESS_BLURCOLORRED:
|
|
m_pVars->m_pBlurColor.r=*(float*)dwValue;
|
|
break;
|
|
case SCREENPROCESS_BLURCOLORGREEN:
|
|
m_pVars->m_pBlurColor.g=*(float*)dwValue;
|
|
break;
|
|
case SCREENPROCESS_BLURCOLORBLUE:
|
|
m_pVars->m_pBlurColor.b=*(float*)dwValue;
|
|
break;
|
|
}
|
|
break;
|
|
|
|
// set color transfer parameters
|
|
case SCREENPROCESS_COLORTRANSFER:
|
|
switch(iParams)
|
|
{
|
|
SET_PARAMETER(SCREENPROCESS_COLORTRANSFERAMOUNT, m_pVars->m_fColorTransferAmount, float, dwValue)
|
|
SET_PARAMETER(SCREENPROCESS_COLORTRANSFERCOLOR, m_pVars->m_pColorTransferColor, color4f, dwValue)
|
|
SET_PARAMETER(SCREENPROCESS_ACTIVE, m_pVars->m_bColorTransferActive, bool, dwValue)
|
|
}
|
|
break;
|
|
|
|
// set motion blur parameters
|
|
case SCREENPROCESS_MOTIONBLUR:
|
|
switch(iParams)
|
|
{
|
|
SET_PARAMETER(SCREENPROCESS_MOTIONBLURDISPLACE, m_pVars->m_iMotionBlurDisplace, int, dwValue)
|
|
SET_PARAMETER(SCREENPROCESS_MOTIONBLURAMOUNT, m_pVars->m_fMotionBlurAmount, float, dwValue)
|
|
SET_PARAMETER(SCREENPROCESS_MOTIONBLURTYPE, m_pVars->m_iMotionBlurType, int, dwValue)
|
|
SET_PARAMETER(SCREENPROCESS_ACTIVE, m_pVars->m_bMotionBlurActive, bool, dwValue)
|
|
}
|
|
break;
|
|
|
|
// set glare parameters
|
|
case SCREENPROCESS_GLARE:
|
|
switch(iParams)
|
|
{
|
|
SET_PARAMETER(SCREENPROCESS_ACTIVE, m_pVars->m_bGlareActive, bool, dwValue)
|
|
SET_PARAMETER(SCREENPROCESS_GLAREAMOUNT, m_pVars->m_fGlareAmount, float, dwValue)
|
|
SET_PARAMETER(SCREENPROCESS_GLARELUMSIZE, m_pVars->m_iGlareLumSize, int, dwValue)
|
|
SET_PARAMETER(SCREENPROCESS_GLAREMAXAMOUNT, m_pVars->m_fGlareMaxAmount, float, dwValue)
|
|
SET_PARAMETER(SCREENPROCESS_GLAREBOXSIZE, m_pVars->m_iGlareSize, int, dwValue)
|
|
SET_PARAMETER(SCREENPROCESS_GLARETHRESHOLD, m_pVars->m_fGlareThreshold, float, dwValue)
|
|
}
|
|
break;
|
|
|
|
// set nightvision parameters
|
|
case SCREENPROCESS_NIGHTVISION:
|
|
switch(iParams)
|
|
{
|
|
//SET_PARAMETER(SCREENPROCESS_ACTIVE, m_pVars->m_bNightVisionActive, bool, dwValue)
|
|
case SCREENPROCESS_ACTIVE:
|
|
// m_pVars->m_bNightVisionActive=*(bool*)dwValue;
|
|
|
|
if(m_pVars->m_pCVHeatVision)
|
|
{
|
|
m_pVars->m_pCVHeatVision->Set(*((int*) dwValue));
|
|
|
|
/*
|
|
// must disable some rendering in order to cryvision function properly
|
|
if(m_pVars->m_pCVHeatVision->GetIVal())
|
|
{
|
|
m_pVars->m_iPrevStencilShadows=m_pVars->m_pCVStencilShadows->GetIVal();
|
|
m_pVars->m_iPrevShadowMaps=m_pVars->m_pCVShadowMaps->GetIVal();
|
|
m_pVars->m_iPrevVolFog=m_pVars->m_pCVVolFog->GetIVal();
|
|
//m_pVars->m_iPrevFog=m_pVars->m_pCVFog->GetIVal();
|
|
|
|
m_pVars->m_pCVStencilShadows->Set(0);
|
|
m_pVars->m_pCVShadowMaps->Set(0);
|
|
m_pVars->m_pCVVolFog->Set(0);
|
|
//m_pVars->m_pCVFog->Set(0);
|
|
}
|
|
else
|
|
{
|
|
m_pVars->m_pCVStencilShadows->Set(m_pVars->m_iPrevStencilShadows);
|
|
m_pVars->m_pCVShadowMaps->Set(m_pVars->m_iPrevShadowMaps);
|
|
m_pVars->m_pCVVolFog->Set(m_pVars->m_iPrevVolFog);
|
|
//m_pVars->m_pCVFog->Set(m_pVars->m_iPrevFog);
|
|
}*/
|
|
}
|
|
break;
|
|
|
|
case SCREENPROCESS_NIGHTVISIONCOLORRED:
|
|
m_pVars->m_pNightVisionColor.r=*(float*)dwValue;
|
|
break;
|
|
case SCREENPROCESS_NIGHTVISIONCOLORGREEN:
|
|
m_pVars->m_pNightVisionColor.g=*(float*)dwValue;
|
|
break;
|
|
case SCREENPROCESS_NIGHTVISIONCOLORBLUE:
|
|
m_pVars->m_pNightVisionColor.b=*(float*)dwValue;
|
|
break;
|
|
}
|
|
break;
|
|
|
|
// set heatvision parameters
|
|
case SCREENPROCESS_HEATVISION:
|
|
switch(iParams)
|
|
{
|
|
case SCREENPROCESS_ACTIVE:
|
|
if(m_pVars->m_pCVHeatVision)
|
|
{
|
|
m_pVars->m_pCVHeatVision->Set(*((int*) dwValue));
|
|
}
|
|
break;
|
|
|
|
//SET_PARAMETER(SCREENPROCESS_ACTIVE, m_pVars->m_bHeatVisionActive, bool, dwValue)
|
|
}
|
|
break;
|
|
|
|
// set flashbang parameters
|
|
case SCREENPROCESS_FLASHBANG:
|
|
switch(iParams)
|
|
{
|
|
case SCREENPROCESS_ACTIVE:
|
|
m_pVars->m_bFlashBangActive= *((bool*) dwValue);
|
|
// reset flash time out
|
|
m_pVars->m_fFlashBangTimeOut=1.0f;
|
|
break;
|
|
|
|
SET_PARAMETER(SCREENPROCESS_FLASHBANGTIMESCALE, m_pVars->m_fFlashBangTimeScale, float, dwValue)
|
|
SET_PARAMETER(SCREENPROCESS_FLASHBANGFLASHPOSX, m_pVars->m_fFlashBangFlashPosX, float, dwValue)
|
|
SET_PARAMETER(SCREENPROCESS_FLASHBANGFLASHPOSY, m_pVars->m_fFlashBangFlashPosY, float, dwValue)
|
|
SET_PARAMETER(SCREENPROCESS_FLASHBANGFLASHSIZEX, m_pVars->m_fFlashBangFlashSizeX, float, dwValue)
|
|
SET_PARAMETER(SCREENPROCESS_FLASHBANGFLASHSIZEY, m_pVars->m_fFlashBangFlashSizeY, float, dwValue)
|
|
SET_PARAMETER(SCREENPROCESS_FLASHBANGFORCEAFTERIMAGE, m_pVars->m_iFlashBangForce, int, dwValue)
|
|
}
|
|
break;
|
|
|
|
// set cartoon parameters
|
|
case SCREENPROCESS_CARTOON:
|
|
switch(iParams)
|
|
{
|
|
//SET_PARAMETER(SCREENPROCESS_ACTIVE, m_pVars->m_bCartoonActive, bool, dwValue)
|
|
case SCREENPROCESS_ACTIVE:
|
|
m_pVars->m_bCartoonActive= *((bool*) dwValue);
|
|
break;
|
|
}
|
|
break;
|
|
|
|
// set dof parameters
|
|
case SCREENPROCESS_DOF:
|
|
switch(iParams)
|
|
{
|
|
SET_PARAMETER(SCREENPROCESS_ACTIVE, m_pVars->m_bDofActive, bool, dwValue)
|
|
SET_PARAMETER(SCREENPROCESS_DOFFOCALDISTANCE, m_pVars->m_fDofFocalDistance, float, dwValue)
|
|
}
|
|
break;
|
|
|
|
// set screentex parameters
|
|
case SCREENPROCESS_SCREENTEX:
|
|
switch(iParams)
|
|
{
|
|
SET_PARAMETER(SCREENPROCESS_ACTIVE, m_pVars->m_bScreenTexActive, bool, dwValue)
|
|
}
|
|
break;
|
|
|
|
//default:
|
|
// break;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
// get screen processing parameters
|
|
void *CREScreenProcess:: mfGetParameter(int iProcess, int iParams)
|
|
{
|
|
switch(iProcess)
|
|
{
|
|
// return screen fade parameters
|
|
case SCREENPROCESS_FADE:
|
|
switch(iParams)
|
|
{
|
|
RETURN_PARAMETER(SCREENPROCESS_TRANSITIONTIME, m_pVars->m_fFadeTime)
|
|
RETURN_PARAMETER(SCREENPROCESS_PRETRANSITIONTIME, m_pVars->m_fFadePreTime)
|
|
RETURN_PARAMETER(SCREENPROCESS_FADECOLOR, m_pVars->m_pFadeColor)
|
|
RETURN_PARAMETER(SCREENPROCESS_ACTIVE, m_pVars->m_bFadeActive)
|
|
}
|
|
break;
|
|
|
|
// return screen blur parameters
|
|
case SCREENPROCESS_BLUR:
|
|
switch(iParams)
|
|
{
|
|
RETURN_PARAMETER(SCREENPROCESS_BLURAMOUNT, m_pVars->m_fBlurAmount)
|
|
RETURN_PARAMETER(SCREENPROCESS_ACTIVE, m_pVars->m_bBlurActive)
|
|
RETURN_PARAMETER(SCREENPROCESS_BLURCOLORRED, m_pVars->m_pBlurColor.r)
|
|
RETURN_PARAMETER(SCREENPROCESS_BLURCOLORGREEN, m_pVars->m_pBlurColor.g)
|
|
RETURN_PARAMETER(SCREENPROCESS_BLURCOLORBLUE, m_pVars->m_pBlurColor.b)
|
|
}
|
|
break;
|
|
|
|
// return color transfer parameters
|
|
case SCREENPROCESS_COLORTRANSFER:
|
|
switch(iParams)
|
|
{
|
|
RETURN_PARAMETER(SCREENPROCESS_COLORTRANSFERAMOUNT, m_pVars->m_fColorTransferAmount)
|
|
RETURN_PARAMETER(SCREENPROCESS_COLORTRANSFERCOLOR, m_pVars->m_pColorTransferColor)
|
|
RETURN_PARAMETER(SCREENPROCESS_ACTIVE, m_pVars->m_bColorTransferActive)
|
|
}
|
|
break;
|
|
|
|
// return motion blur parameters
|
|
case SCREENPROCESS_MOTIONBLUR:
|
|
switch(iParams)
|
|
{
|
|
RETURN_PARAMETER(SCREENPROCESS_MOTIONBLURDISPLACE, m_pVars->m_iMotionBlurDisplace)
|
|
RETURN_PARAMETER(SCREENPROCESS_MOTIONBLURAMOUNT, m_pVars->m_fMotionBlurAmount)
|
|
RETURN_PARAMETER(SCREENPROCESS_MOTIONBLURTYPE, m_pVars->m_iMotionBlurType)
|
|
RETURN_PARAMETER(SCREENPROCESS_ACTIVE, m_pVars->m_bMotionBlurActive)
|
|
}
|
|
break;
|
|
|
|
// return glare parameters
|
|
case SCREENPROCESS_GLARE:
|
|
switch(iParams)
|
|
{
|
|
RETURN_PARAMETER(SCREENPROCESS_ACTIVE, m_pVars->m_bGlareActive)
|
|
RETURN_PARAMETER(SCREENPROCESS_GLAREAMOUNT, m_pVars->m_fGlareAmount)
|
|
RETURN_PARAMETER(SCREENPROCESS_GLARELUMSIZE, m_pVars->m_iGlareLumSize)
|
|
RETURN_PARAMETER(SCREENPROCESS_GLAREMAXAMOUNT, m_pVars->m_fGlareMaxAmount)
|
|
RETURN_PARAMETER(SCREENPROCESS_GLAREBOXSIZE, m_pVars->m_iGlareSize)
|
|
RETURN_PARAMETER(SCREENPROCESS_GLARETHRESHOLD, m_pVars->m_fGlareThreshold)
|
|
}
|
|
break;
|
|
|
|
// return nightvision parameters
|
|
case SCREENPROCESS_NIGHTVISION:
|
|
switch(iParams)
|
|
{
|
|
case SCREENPROCESS_ACTIVE:
|
|
//RETURN_PARAMETER(SCREENPROCESS_ACTIVE, m_pVars->m_bNightVisionActive)
|
|
if(m_pVars->m_pCVHeatVision)
|
|
{
|
|
m_pVars->m_iNightVisionActive=m_pVars->m_pCVHeatVision->GetIVal();
|
|
}
|
|
return (void*)&m_pVars->m_iNightVisionActive;
|
|
break;
|
|
|
|
RETURN_PARAMETER(SCREENPROCESS_NIGHTVISIONCOLORRED, m_pVars->m_pNightVisionColor.r)
|
|
RETURN_PARAMETER(SCREENPROCESS_NIGHTVISIONCOLORGREEN, m_pVars->m_pNightVisionColor.g)
|
|
RETURN_PARAMETER(SCREENPROCESS_NIGHTVISIONCOLORBLUE, m_pVars->m_pNightVisionColor.b)
|
|
}
|
|
break;
|
|
|
|
// return heatvision parameters
|
|
case SCREENPROCESS_HEATVISION:
|
|
switch(iParams)
|
|
{
|
|
case SCREENPROCESS_ACTIVE:
|
|
if(m_pVars->m_pCVHeatVision)
|
|
{
|
|
m_pVars->m_iHeatVisionActive=m_pVars->m_pCVHeatVision->GetIVal();
|
|
}
|
|
return (void*)&m_pVars->m_iHeatVisionActive;
|
|
break;
|
|
//RETURN_PARAMETER(SCREENPROCESS_ACTIVE, m_pVars->m_bHeatVisionActive)
|
|
}
|
|
break;
|
|
|
|
// return flashbang parameters
|
|
case SCREENPROCESS_FLASHBANG:
|
|
switch(iParams)
|
|
{
|
|
RETURN_PARAMETER(SCREENPROCESS_ACTIVE, m_pVars->m_bFlashBangActive)
|
|
RETURN_PARAMETER(SCREENPROCESS_FLASHBANGTIMESCALE, m_pVars->m_fFlashBangTimeScale)
|
|
RETURN_PARAMETER(SCREENPROCESS_FLASHBANGTIMEOUT, m_pVars->m_fFlashBangTimeOut)
|
|
RETURN_PARAMETER(SCREENPROCESS_FLASHBANGFLASHPOSX, m_pVars->m_fFlashBangFlashPosX)
|
|
RETURN_PARAMETER(SCREENPROCESS_FLASHBANGFLASHPOSY, m_pVars->m_fFlashBangFlashPosY)
|
|
RETURN_PARAMETER(SCREENPROCESS_FLASHBANGFLASHSIZEX, m_pVars->m_fFlashBangFlashSizeX)
|
|
RETURN_PARAMETER(SCREENPROCESS_FLASHBANGFLASHSIZEY, m_pVars->m_fFlashBangFlashSizeY)
|
|
RETURN_PARAMETER(SCREENPROCESS_FLASHBANGFORCEAFTERIMAGE, m_pVars->m_iFlashBangForce)
|
|
}
|
|
break;
|
|
|
|
// return cartoon parameters
|
|
case SCREENPROCESS_CARTOON:
|
|
switch(iParams)
|
|
{
|
|
RETURN_PARAMETER(SCREENPROCESS_ACTIVE, m_pVars->m_bCartoonActive)
|
|
}
|
|
break;
|
|
|
|
// return dof parameters
|
|
case SCREENPROCESS_DOF:
|
|
switch(iParams)
|
|
{
|
|
RETURN_PARAMETER(SCREENPROCESS_ACTIVE, m_pVars->m_bDofActive)
|
|
RETURN_PARAMETER(SCREENPROCESS_DOFFOCALDISTANCE, m_pVars->m_fDofFocalDistance)
|
|
}
|
|
break;
|
|
|
|
// return screentex parameters
|
|
case SCREENPROCESS_SCREENTEX:
|
|
switch(iParams)
|
|
{
|
|
RETURN_PARAMETER(SCREENPROCESS_ACTIVE, m_pVars->m_bScreenTexActive)
|
|
}
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
// get shaders
|
|
void CScreenVars:: Create(void)
|
|
{
|
|
#if SHADERSCHECK
|
|
m_pRCBlur = CPShader::mfForName("CGRCBlur");
|
|
#ifdef OPENGL
|
|
m_pRCBlurRECT = CPShader::mfForName("CGRCBlurRECT");
|
|
#else
|
|
m_pRCBlurRECT = NULL;
|
|
#endif
|
|
m_pVPBlur = CVProgram::mfForName("CGVProgBlur");
|
|
m_pRCMotion = CPShader::mfForName("CGRCMotion");
|
|
m_pRCMotionAmount = CPShader::mfForName("CGRCMotionAmount");
|
|
m_pVPMotion = CVProgram::mfForName("CGVProgMotion");
|
|
m_pRCGlareMap = CPShader::mfForName("CGRCGlareMap");
|
|
m_pRCGlareAmountMap = CPShader::mfForName("CGRCGlareAmount");
|
|
m_pRCGlare = CPShader::mfForName("CGRCGlare");
|
|
m_pRCRenderModeCold = CPShader::mfForName("CGRCRenderModeCold");
|
|
m_pRCRenderModeAdv= CPShader::mfForName("CGRCRenderModeAdv");
|
|
m_pVPGlare = CVProgram::mfForName("CGVProgGlare");
|
|
m_pRCColorTransfer = CPShader::mfForName("CGRCColorTransfer");
|
|
m_pVPColorTransfer = CVProgram::mfForName("CGVProgColorTransfer");
|
|
m_pRCBluryScreen = CPShader::mfForName("CGRCBluryScreen");
|
|
m_pVPBluryScreen = CVProgram::mfForName("CGVProgBluryScreen");
|
|
m_pRCNightVision = CPShader::mfForName("CGRCNightVisionGlare");
|
|
m_pVPNightVision = CVProgram::mfForName("CGVProgNightVisionGlare");
|
|
m_pRCHeatVision = CPShader::mfForName("CGRCHeatSourcePass");
|
|
m_pRCHeatSourceDecode = CPShader::mfForName("CGRCHeatSourceDecode");
|
|
m_pVPFlashBang = CVProgram::mfForName("CGVProg_FlashBang");
|
|
m_pRCFlashBang = CPShader::mfForName("CGRCFlashBang");
|
|
m_pVPCartoon = CVProgram::mfForName("CGVProgCartoon");
|
|
m_pRCCartoon = CPShader::mfForName("CGRCCartoon");
|
|
m_pRCCartoonSilhouette = CPShader::mfForName("CGRCCartoonSilhouete");
|
|
m_pRCDof = CPShader::mfForName("CGRCDof");
|
|
m_pRCReplRgbToAlpha = CPShader::mfForName("CGRCReplRgbToAlpha");
|
|
#endif
|
|
|
|
if(iConsole)
|
|
{
|
|
m_pCVDisableSfx= iConsole->GetCVar("r_DisableSfx");
|
|
m_pCVResetSfx=iConsole->GetCVar("r_ResetScreenFx");
|
|
m_pCVNormalGlare=iConsole->GetCVar("r_Glare");
|
|
m_pCVMotionBlur=iConsole->GetCVar("r_MotionBlur");
|
|
m_pCVScreenColorTransfer=iConsole->GetCVar("r_ScreenColorTransfer");
|
|
m_pCVMotionBlurAmount=iConsole->GetCVar("r_MotionBlurAmount");
|
|
m_pCVMotionBlurDisplace=iConsole->GetCVar("r_MotionBlurDisplace");
|
|
m_pCVRenderMode=iConsole->GetCVar("r_RenderMode");
|
|
|
|
// note: these are used for correct cryvision functioning
|
|
m_pCVStencilShadows=iConsole->GetCVar("e_stencil_shadows");
|
|
m_iPrevStencilShadows=m_pCVStencilShadows->GetIVal();
|
|
|
|
m_pCVShadowMaps=iConsole->GetCVar("e_shadow_maps");
|
|
m_iPrevShadowMaps=m_pCVShadowMaps->GetIVal();
|
|
|
|
m_pCVVolFog=iConsole->GetCVar("r_VolumetricFog");
|
|
m_iPrevVolFog= m_pCVVolFog->GetIVal();
|
|
|
|
m_pCVFog=iConsole->GetCVar("e_fog");
|
|
m_iPrevFog=m_pCVFog->GetIVal();
|
|
|
|
m_pCVMaxTexLodBias=iConsole->GetCVar("r_MaxTexLodBias");
|
|
m_fPrevMaxTexLodBias=m_pCVMaxTexLodBias->GetFVal();
|
|
|
|
m_pCVHeatVision=iConsole->GetCVar("r_Cryvision");
|
|
m_iHeatVisionActive=m_pCVHeatVision->GetIVal();
|
|
|
|
// reset fade amount
|
|
ICVar *pHudFadeAmount=iConsole->GetCVar("hud_fadeamount");
|
|
if(pHudFadeAmount)
|
|
{
|
|
pHudFadeAmount->Set(1);
|
|
}
|
|
}
|
|
|
|
// fade process vars
|
|
m_bFadeActive=0;
|
|
m_fFadeTime=0;
|
|
m_fFadePreTime=0;
|
|
m_fFadeCurrPreTime=0;
|
|
m_fFadeCurrTime=0;
|
|
m_pFadeColor.set(0,0,0,0);
|
|
m_pFadeCurrColor.set(0,0,0,0);
|
|
}
|
|
|
|
// release/free data..
|
|
void CScreenVars:: Release(void)
|
|
{
|
|
/* // check if cryvision is active when exiting game, need to restore console vars..
|
|
if(m_pCVHeatVision)
|
|
{
|
|
if(m_pCVHeatVision->GetIVal())
|
|
{
|
|
if(m_pCVStencilShadows)
|
|
{
|
|
m_pCVStencilShadows->Set(m_iPrevStencilShadows);
|
|
}
|
|
|
|
if(m_pCVShadowMaps->GetIVal())
|
|
{
|
|
m_pCVShadowMaps->Set(m_iPrevShadowMaps);
|
|
}
|
|
|
|
if(m_pCVVolFog->GetIVal())
|
|
{
|
|
m_pCVVolFog->Set(m_iPrevVolFog);
|
|
}
|
|
}
|
|
}
|
|
*/
|
|
}
|
|
|
|
// reset effects state
|
|
void CScreenVars:: Reset(void)
|
|
{
|
|
// color transfer vars
|
|
m_bColorTransferActive=0;
|
|
m_pColorTransferColor.set(0,0,0,0);
|
|
m_fColorTransferAmount=1;
|
|
|
|
// blury screen vars
|
|
m_bBlurActive=0;
|
|
m_fBlurAmount=1.0f;
|
|
m_pBlurColor.set(1,1,1,1);
|
|
|
|
// nightvision vars
|
|
m_iNightVisionActive=0;
|
|
m_pNightVisionColor.set(-0.1f, 0.2f, 0.11f, 1.0f);
|
|
|
|
// heatvision vars
|
|
if(m_pCVHeatVision)
|
|
{
|
|
// m_pHeatVision->Set(0);
|
|
m_iHeatVisionActive=m_pCVHeatVision->GetIVal();
|
|
}
|
|
else
|
|
{
|
|
m_iHeatVisionActive=0;
|
|
}
|
|
|
|
// flashbang vars
|
|
m_bFlashBangActive=0;
|
|
m_fFlashBangTimeScale=1.0f;
|
|
m_fFlashBangTimeOut=1.0f;
|
|
m_fFlashBangFlashPosX=200;
|
|
m_fFlashBangFlashPosY=100;
|
|
m_fFlashBangFlashSizeX=400;
|
|
m_fFlashBangFlashSizeY=400;
|
|
|
|
// screentex vars
|
|
m_bScreenTexActive=0;
|
|
m_pCurrGlareMapConst.set(0.2f, 0.2f, 0.2f, 1.0f);
|
|
m_pCurrSaturation.set(0.0f, 0.0f, 0.0f, 0.2f);
|
|
m_pCurrContrast.set(0.0f, 0.0f, 0.85f, 0.15f);
|
|
|
|
|
|
// reset fade amount
|
|
ICVar *pHudFadeAmount=iConsole->GetCVar("hud_fadeamount");
|
|
if(pHudFadeAmount)
|
|
{
|
|
pHudFadeAmount->Set(1);
|
|
}
|
|
|
|
m_bFadeActive=0;
|
|
m_fFadeTime=0;
|
|
m_fFadePreTime=0;
|
|
m_fFadeCurrPreTime=0;
|
|
m_fFadeCurrTime=0;
|
|
m_pFadeColor.set(0,0,0,0);
|
|
m_pFadeCurrColor.set(0,0,0,0);
|
|
} |