This commit is contained in:
romkazvo
2023-08-07 19:29:24 +08:00
commit 34d6c5d489
4832 changed files with 1389451 additions and 0 deletions

View 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