static const UINT ShadowMapCount = 6;
enum ShadowMapShaderType
{
ShadowMapShaderCreate,
ShadowMapShaderRender,
};
class ShadowMap
{
public:
ShadowMap();
~ShadowMap();
void FreeMemory();
void SetAsRenderTarget(UINT ShadowMapIndex, IDirect3DDevice9 *Device);
void SetAsTextures(IDirect3DDevice9 *Device);
void SetLightMatrices(UINT LightIndex, const Camera &LightCamera, const Matrix4 &Perspective);
void SetCameraMatrices(const MatrixController &MC, ShadowMapShaderType Shader);
void Init(D3D9GraphicsDevice &GD, UINT Resolution);
void BlurAllShadowMaps(IDirect3DDevice9 *Device);
void SaveDebugBitmap(const String &Filename);
void SaveTextureToFile(D3D9Texture &T, const String &Filename);
D3D9VertexShader _VShaderCreate;
D3D9PixelShader _PShaderCreate;
D3D9VertexShader _VShaderRender;
D3D9PixelShader _PShaderRender;
D3D9VertexShader _VShaderGaussian;
D3D9PixelShader _PShaderGaussianX;
D3D9PixelShader _PShaderGaussianY;
D3D9Mesh _SimpleQuadMesh;
D3D9Texture _DepthMapTextures[ShadowMapCount];
D3D9Texture _DepthMapBlurTexture;
IDirect3DSurface9 *_DepthStencil;
String _StringLightView, _StringLightViewProj, _StringLightDir;
};