123
This commit is contained in:
68
CryCommon/CRETriMeshShadow.h
Normal file
68
CryCommon/CRETriMeshShadow.h
Normal file
@@ -0,0 +1,68 @@
|
||||
|
||||
#ifndef __CRETRIMESHSHADOW_H__
|
||||
#define __CRETRIMESHSHADOW_H__
|
||||
|
||||
//=============================================================
|
||||
#define MAX_SV_INSTANCES 32
|
||||
|
||||
//=============================================================
|
||||
struct ItShadowVolume;
|
||||
class CDLight;
|
||||
|
||||
class CRETriMeshShadow : public CRendElement
|
||||
{
|
||||
public:
|
||||
|
||||
CRETriMeshShadow()
|
||||
{
|
||||
mfSetType(eDATA_TriMeshShadow);
|
||||
mfUpdateFlags(FCEF_TRANSFORM | FCEF_NODEL);
|
||||
memset(m_arrLBuffers,0,sizeof(m_arrLBuffers));
|
||||
m_pSvObj=NULL;
|
||||
m_nCurrInst=0;
|
||||
m_nRendIndices = 0;
|
||||
m_bAnimatedObject = false;
|
||||
}
|
||||
|
||||
virtual ~CRETriMeshShadow();
|
||||
|
||||
virtual void mfPrepare();
|
||||
virtual bool mfDraw(SShader *ef, SShaderPass *sfm);
|
||||
virtual void * mfGetPointer(ESrcPointer ePT, int *Stride, int Type, ESrcPointer Dst, int Flags);
|
||||
virtual bool mfCheckUpdate(int nVertFormat, int Flags);
|
||||
virtual bool mfCheckUnload();
|
||||
|
||||
//! shadow volume info
|
||||
struct ShadVolInstanceInfo
|
||||
{
|
||||
ShadVolInstanceInfo() { memset(this,0,sizeof(*this)); }
|
||||
CLeafBuffer * pVB;
|
||||
int nFrameId;
|
||||
Vec3 vObjSpaceLightPos;
|
||||
IEntityRender * pLightOwner;
|
||||
IEntityRender * pShadowCaster;
|
||||
};
|
||||
|
||||
//! array of ready shadow volumes
|
||||
ShadVolInstanceInfo m_arrLBuffers[MAX_SV_INSTANCES]; // stores shadow volumes
|
||||
int m_nCurrInst; // used to pass selected slot from mfCheckUpdate to mfDraw
|
||||
int m_nRendIndices;
|
||||
|
||||
bool m_bAnimatedObject;
|
||||
|
||||
//! vertex buffer data set by shadowvolobject
|
||||
|
||||
ItShadowVolume *m_pSvObj;
|
||||
|
||||
static int GetAndResetRebuildsPerFrrameCounter();
|
||||
static int GetAndResetShadowVolumesPerFrrameCounter();
|
||||
static int GetShadowVolumesAllocatedCounter();
|
||||
static void PrintStats();
|
||||
|
||||
private:
|
||||
static int m_nCRETriMeshShadowRebuildsPerFrrame;
|
||||
static int m_nCRETriMeshShadowShadowsPerFrrame;
|
||||
static int m_nCRETriMeshShadowAloocatedShadows;
|
||||
};
|
||||
|
||||
#endif // __CRETRIMESHSHADOW_H__
|
||||
Reference in New Issue
Block a user