123
This commit is contained in:
381
RenderDll/Common/RendElements/CREScreenCommon.h
Normal file
381
RenderDll/Common/RendElements/CREScreenCommon.h
Normal file
@@ -0,0 +1,381 @@
|
||||
/*
|
||||
=========================================================================
|
||||
FILE : CRECommon.h
|
||||
DESC : render elements common stuff
|
||||
PROJ : Crytek Engine
|
||||
CODER: Tiago Sousa
|
||||
|
||||
NOTE/TODO/FIX:
|
||||
|
||||
. All shaders, specialized textures used, should be initialized/destroyed
|
||||
in CScreenVars class
|
||||
|
||||
. All data should be fx/name independent, accessible trought data index
|
||||
|
||||
. Give better data organization..
|
||||
|
||||
Last Update: 13/10/2003
|
||||
=========================================================================
|
||||
*/
|
||||
|
||||
#ifndef _CRECOMMON_H_
|
||||
#define _CRECOMMON_H_
|
||||
|
||||
//-------------------------------------------------------------------------------------------------
|
||||
// screen processing types parameter
|
||||
|
||||
|
||||
enum EProcessType
|
||||
{
|
||||
SCREENPROCESS_FADE,
|
||||
SCREENPROCESS_BLUR,
|
||||
SCREENPROCESS_COLORTRANSFER,
|
||||
SCREENPROCESS_CONTRAST,
|
||||
SCREENPROCESS_MOTIONBLUR,
|
||||
SCREENPROCESS_GLARE,
|
||||
SCREENPROCESS_NIGHTVISION,
|
||||
SCREENPROCESS_HEATVISION,
|
||||
SCREENPROCESS_FLASHBANG,
|
||||
SCREENPROCESS_CARTOON,
|
||||
SCREENPROCESS_DOF,
|
||||
|
||||
// special case, to get screen texture, after all post-processing
|
||||
SCREENPROCESS_SCREENTEX,
|
||||
};
|
||||
|
||||
//-------------------------------------------------------------------------------------------------
|
||||
// screen processing types parameters
|
||||
|
||||
enum EProcessParameter
|
||||
{
|
||||
SCREENPROCESS_FADECOLOR,
|
||||
|
||||
SCREENPROCESS_BLURAMOUNT,
|
||||
SCREENPROCESS_BLURCOLORRED,
|
||||
SCREENPROCESS_BLURCOLORGREEN,
|
||||
SCREENPROCESS_BLURCOLORBLUE,
|
||||
|
||||
SCREENPROCESS_COLORTRANSFERCOLOR,
|
||||
SCREENPROCESS_COLORTRANSFERAMOUNT,
|
||||
|
||||
SCREENPROCESS_CONTRASTAMOUNT,
|
||||
|
||||
SCREENPROCESS_MOTIONBLURTYPE,
|
||||
SCREENPROCESS_MOTIONBLURAMOUNT,
|
||||
SCREENPROCESS_MOTIONBLURDISPLACE,
|
||||
|
||||
SCREENPROCESS_GLAREAMOUNT,
|
||||
SCREENPROCESS_GLARELUMSIZE,
|
||||
SCREENPROCESS_GLAREMAXAMOUNT,
|
||||
SCREENPROCESS_GLAREBOXSIZE,
|
||||
SCREENPROCESS_GLARETHRESHOLD,
|
||||
|
||||
SCREENPROCESS_NIGHTVISIONCOLORRED,
|
||||
SCREENPROCESS_NIGHTVISIONCOLORGREEN,
|
||||
SCREENPROCESS_NIGHTVISIONCOLORBLUE,
|
||||
|
||||
SCREENPROCESS_FLASHBANGTIMESCALE,
|
||||
SCREENPROCESS_FLASHBANGFLASHPOSX,
|
||||
SCREENPROCESS_FLASHBANGFLASHPOSY,
|
||||
SCREENPROCESS_FLASHBANGFLASHSIZEX,
|
||||
SCREENPROCESS_FLASHBANGFLASHSIZEY,
|
||||
SCREENPROCESS_FLASHBANGTIMEOUT,
|
||||
SCREENPROCESS_FLASHBANGFORCEAFTERIMAGE,
|
||||
|
||||
SCREENPROCESS_DOFFOCALDISTANCE,
|
||||
SCREENPROCESS_DOFBLURAMOUNT,
|
||||
|
||||
SCREENPROCESS_TRANSITIONTIME,
|
||||
SCREENPROCESS_PRETRANSITIONTIME,
|
||||
SCREENPROCESS_ACTIVE
|
||||
};
|
||||
|
||||
#define SHADERSCHECK !defined(PS2) && !defined (GC) && !defined (NULL_RENDERER)
|
||||
|
||||
//-------------------------------------------------------------------------------------------------
|
||||
// screen processing vars class
|
||||
|
||||
class CScreenVars
|
||||
{
|
||||
public:
|
||||
|
||||
CScreenVars()
|
||||
{
|
||||
// initialize members
|
||||
|
||||
// set shaders to null...
|
||||
m_pRCColorTransfer=0;
|
||||
m_pVPColorTransfer=0;
|
||||
m_pRCMotion=0;
|
||||
m_pRCMotionAmount=0;
|
||||
m_pVPMotion=0;
|
||||
m_pRCBluryScreen=0;
|
||||
m_pVPBluryScreen=0;
|
||||
m_pRCGlareMap=0;
|
||||
m_pRCGlareAmountMap=0;
|
||||
m_pRCGlare=0;
|
||||
m_pRCRenderModeCold=0;
|
||||
m_pRCRenderModeAdv=0;
|
||||
m_pVPGlare=0;
|
||||
m_pRCNightVision=0;
|
||||
m_pVPNightVision=0;
|
||||
m_pRCHeatVision=0;
|
||||
m_pRCHeatSourceDecode=0;
|
||||
m_pRCFlashBang=0;
|
||||
m_pVPFlashBang=0;
|
||||
m_pRCFlashBang=0;
|
||||
m_pVPFlashBang=0;
|
||||
m_pRCBlur=0;
|
||||
m_pVPBlur=0;
|
||||
m_pRCReplRgbToAlpha=0;
|
||||
m_pVPCartoon=0;
|
||||
m_pRCCartoon=0;
|
||||
m_pRCCartoonSilhouette=0;
|
||||
m_pRCDof=0;
|
||||
|
||||
// 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);
|
||||
|
||||
// color transfer vars
|
||||
m_bColorTransferActive=0;
|
||||
m_pColorTransferColor.set(0,0,0,0);
|
||||
m_fColorTransferAmount=1;
|
||||
|
||||
// motion blur vars
|
||||
m_bMotionBlurActive=0;
|
||||
m_fMotionBlurAmount=0.9f;
|
||||
m_iMotionBlurType=1;
|
||||
m_iMotionBlurDisplace=0;
|
||||
|
||||
// blury screen vars
|
||||
m_bBlurActive=0;
|
||||
m_fBlurAmount=1.0f;
|
||||
m_pBlurColor.set(1,1,1,1);
|
||||
|
||||
// glare vars
|
||||
m_bGlareActive=0;
|
||||
m_fGlareThreshold=75;
|
||||
m_iGlareBox=2;
|
||||
m_iGlareLumSize=2;
|
||||
m_iGlareSize=128;
|
||||
m_fGlareAmount=1.0f;
|
||||
m_fGlareAmountDynamic=1.0f;
|
||||
m_fGlareMaxAmount=4.0f;
|
||||
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);
|
||||
|
||||
// nightvision vars
|
||||
m_iNightVisionActive=0;
|
||||
m_pNightVisionColor.set(-0.1f, 0.2f, 0.11f, 1.0f);
|
||||
|
||||
// heatvision vars
|
||||
m_iHeatVisionActive=0;
|
||||
m_pCVHeatVision=0;
|
||||
|
||||
// flashbang vars
|
||||
m_bFlashBangActive=0;
|
||||
m_iFlashBangForce=0;
|
||||
m_fFlashBangTimeScale=1.0f;
|
||||
m_fFlashBangTimeOut=1.0f;
|
||||
m_fFlashBangFlashPosX=200;
|
||||
m_fFlashBangFlashPosY=100;
|
||||
m_fFlashBangFlashSizeX=400;
|
||||
m_fFlashBangFlashSizeY=400;
|
||||
|
||||
// cartoon vars
|
||||
m_bCartoonActive=0;
|
||||
|
||||
// depth of field vars
|
||||
m_bDofActive=0;
|
||||
m_fDofFocalDistance=0;
|
||||
|
||||
// screentex vars
|
||||
m_bScreenTexActive=0;
|
||||
|
||||
// console vars
|
||||
m_pCVDisableSfx=0; //GET_CVAR("r_DisableSfx");
|
||||
m_pCVResetSfx=0; //GET_CVAR("r_ResetScreenFx");
|
||||
m_pCVNormalGlare=0; //GET_CVAR("r_Glare");
|
||||
m_pCVMotionBlur=0; //GET_CVAR("r_MotionBlur");
|
||||
m_pCVScreenColorTransfer=0; //GET_CVAR("r_ScreenColorTransfer");
|
||||
m_pCVMotionBlurAmount=0; //GET_CVAR("r_MotionBlurAmount");
|
||||
m_pCVMotionBlurDisplace=0; //GET_CVAR("r_MotionBlurDisplace");
|
||||
m_pCVRenderMode=0; //GET_CVAR("r_RenderMode");
|
||||
|
||||
// note: these are used for correct cryvision functioning
|
||||
m_pCVStencilShadows=0; //GET_CVAR("e_stencil_shadows")
|
||||
m_iPrevStencilShadows=0;
|
||||
|
||||
m_pCVShadowMaps=0; //GET_CVAR("e_shadow_maps");
|
||||
m_iPrevShadowMaps=0;
|
||||
|
||||
m_pCVVolFog=0; //GET_CVAR("r_volumetricfog");
|
||||
m_iPrevVolFog=0;
|
||||
|
||||
m_pCVFog=0; //GET_CVAR("e_fog");
|
||||
m_iPrevFog=0;
|
||||
};
|
||||
|
||||
~CScreenVars()
|
||||
{
|
||||
Release();
|
||||
};
|
||||
|
||||
// shaders used:
|
||||
|
||||
// color transfer shaders
|
||||
void *m_pRCColorTransfer;
|
||||
void *m_pVPColorTransfer;
|
||||
|
||||
// motion blur shaders
|
||||
void *m_pRCMotion,
|
||||
*m_pRCMotionAmount;
|
||||
void *m_pVPMotion;
|
||||
|
||||
// blury screen shaders
|
||||
void *m_pRCBluryScreen;
|
||||
void *m_pVPBluryScreen;
|
||||
|
||||
// image enhancement shaders
|
||||
void *m_pRCGlareMap,
|
||||
*m_pRCGlareAmountMap,
|
||||
*m_pRCGlare,
|
||||
*m_pRCRenderModeCold,
|
||||
*m_pRCRenderModeAdv;
|
||||
|
||||
void *m_pVPGlare;
|
||||
|
||||
// nightvision shaders
|
||||
void *m_pRCNightVision;
|
||||
void *m_pVPNightVision;
|
||||
|
||||
// heatvision shaders
|
||||
void *m_pRCHeatVision,
|
||||
*m_pRCHeatSourceDecode;
|
||||
|
||||
// flashbang shaders
|
||||
void *m_pRCFlashBang;
|
||||
void *m_pVPFlashBang;
|
||||
|
||||
// cartoon shaders
|
||||
void *m_pRCCartoon,
|
||||
*m_pRCCartoonSilhouette;
|
||||
void *m_pVPCartoon;
|
||||
|
||||
// depth of field shaders
|
||||
void *m_pRCDof;
|
||||
|
||||
// shared shaders
|
||||
void *m_pRCBlur;
|
||||
void *m_pRCBlurRECT;
|
||||
void *m_pVPBlur;
|
||||
void *m_pRCReplRgbToAlpha;
|
||||
|
||||
// fade process vars
|
||||
bool m_bFadeActive;
|
||||
float m_fFadeTime,
|
||||
m_fFadeCurrTime,
|
||||
m_fFadePreTime,
|
||||
m_fFadeCurrPreTime;
|
||||
|
||||
color4f m_pFadeColor,
|
||||
m_pFadeCurrColor;
|
||||
|
||||
// color transfer vars
|
||||
bool m_bColorTransferActive;
|
||||
color4f m_pColorTransferColor;
|
||||
float m_fColorTransferAmount;
|
||||
|
||||
// motion blur vars
|
||||
bool m_bMotionBlurActive;
|
||||
float m_fMotionBlurAmount;
|
||||
int m_iMotionBlurType,
|
||||
m_iMotionBlurDisplace;
|
||||
|
||||
// blury screen vars
|
||||
bool m_bBlurActive;
|
||||
float m_fBlurAmount;
|
||||
float m_iBlurWidth,
|
||||
m_iBlurHeight;
|
||||
color4f m_pBlurColor;
|
||||
|
||||
// image enhancement vars
|
||||
bool m_bGlareActive;
|
||||
int m_iGlareBox,
|
||||
m_iGlareLumSize,
|
||||
m_iGlareSize;
|
||||
float m_fGlareAmount,
|
||||
m_fGlareThreshold,
|
||||
m_fGlareAmountDynamic,
|
||||
m_fGlareMaxAmount;
|
||||
color4f m_pCurrGlareMapConst,
|
||||
m_pCurrSaturation,
|
||||
m_pCurrContrast;
|
||||
// nightvision vars
|
||||
int m_iNightVisionActive;
|
||||
color4f m_pNightVisionColor;
|
||||
|
||||
|
||||
// heatvision vars
|
||||
int m_iHeatVisionActive;
|
||||
ICVar *m_pCVHeatVision; //GET_CVAR("CV_r_cryvision");
|
||||
|
||||
// flashbang vars
|
||||
bool m_bFlashBangActive;
|
||||
int m_iFlashBangForce;
|
||||
float m_fFlashBangTimeScale,
|
||||
m_fFlashBangTimeOut,
|
||||
m_fFlashBangFlashPosX,
|
||||
m_fFlashBangFlashPosY,
|
||||
m_fFlashBangFlashSizeX,
|
||||
m_fFlashBangFlashSizeY;
|
||||
|
||||
// cartoon rendering vars
|
||||
bool m_bCartoonActive;
|
||||
|
||||
// depth of field vars
|
||||
bool m_bDofActive;
|
||||
float m_fDofFocalDistance;
|
||||
|
||||
// screen texture vars
|
||||
bool m_bScreenTexActive;
|
||||
|
||||
// console vars
|
||||
ICVar *m_pCVDisableSfx; //GET_CVAR("r_DisableSfx");
|
||||
ICVar *m_pCVResetSfx; //GET_CVAR("r_ResetScreenFx");
|
||||
ICVar *m_pCVNormalGlare; //GET_CVAR("r_Glare");
|
||||
ICVar *m_pCVMotionBlur; //GET_CVAR("r_MotionBlur");
|
||||
ICVar *m_pCVScreenColorTransfer; //GET_CVAR("r_ScreenColorTransfer");
|
||||
ICVar *m_pCVMotionBlurAmount; //GET_CVAR("r_MotionBlurAmount");
|
||||
ICVar *m_pCVMotionBlurDisplace; //GET_CVAR("r_MotionBlurDisplace");
|
||||
ICVar *m_pCVRenderMode; //GET_CVAR("r_RenderMode");
|
||||
|
||||
// note: these are used for correct cryvision functioning
|
||||
ICVar *m_pCVStencilShadows; //GET_CVAR("e_stencil_shadows")
|
||||
int m_iPrevStencilShadows;
|
||||
|
||||
ICVar *m_pCVShadowMaps; //GET_CVAR("e_shadow_maps");
|
||||
int m_iPrevShadowMaps;
|
||||
|
||||
ICVar *m_pCVVolFog; //GET_CVAR("r_volumetricfog");
|
||||
int m_iPrevVolFog;
|
||||
|
||||
ICVar *m_pCVFog; //GET_CVAR("e_fog");
|
||||
int m_iPrevFog;
|
||||
|
||||
ICVar *m_pCVMaxTexLodBias; //GET_CVAR("r_MaxTexLodBias");
|
||||
float m_fPrevMaxTexLodBias;
|
||||
|
||||
void Create(void);
|
||||
void Release(void);
|
||||
void Reset(void);
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user