2013-04-19 02:52:48 +00:00
|
|
|
//
|
|
|
|
//
|
|
|
|
// win_stencilshadow.h
|
|
|
|
//
|
|
|
|
// Declaration for stencil shadowing class
|
|
|
|
//
|
|
|
|
//
|
|
|
|
|
|
|
|
#ifndef _WIN_STENCILSHADOW_H_
|
|
|
|
#define _WIN_STENCILSHADOW_H_
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
// facing is only one bit, but we can't do better than 4 bytes without
|
|
|
|
// packing all the data we need into a single unsigned short, which
|
|
|
|
// isn't really worth it. (unless we REALLY need 64k at some point).
|
|
|
|
short i2;
|
|
|
|
short facing;
|
|
|
|
} edgeDef_t;
|
|
|
|
|
|
|
|
#define MAX_EDGE_DEFS 16
|
|
|
|
|
|
|
|
|
|
|
|
class StencilShadow
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
|
|
|
|
edgeDef_t m_edgeDefs[SHADER_MAX_VERTEXES][MAX_EDGE_DEFS];
|
|
|
|
int m_numEdgeDefs[SHADER_MAX_VERTEXES];
|
|
|
|
int m_facing[SHADER_MAX_INDEXES/3];
|
|
|
|
vec3_t m_shadowVerts[SHADER_MAX_VERTEXES * 8];
|
|
|
|
|
|
|
|
StencilShadow();
|
|
|
|
~StencilShadow();
|
|
|
|
void AddEdge( int i1, int i2, int facing );
|
|
|
|
void RenderEdges();
|
|
|
|
bool BuildFromLight( VVdlight_t *dl );
|
|
|
|
void RenderShadow();
|
|
|
|
void FinishShadows();
|
|
|
|
};
|
|
|
|
|
|
|
|
extern StencilShadow StencilShadower;
|
|
|
|
|
|
|
|
|
2013-04-04 22:35:38 +00:00
|
|
|
#endif
|