jediacademy/code/win32/win_stencilshadow.h
2013-04-04 17:35:38 -05:00

45 lines
No EOL
943 B
C++

//
//
// 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;
#endif