#ifndef __DYNAMICLIGHTING_H__
#define __DYNAMICLIGHTING_H__
#include "ShadowMappingShader.h"
#ifdef _MB_INTERNAL
#define DYNAMICLIGHTINGSHADOW__CLASSSTR "DynamicLightingShadowInternal"
#define DYNAMICLIGHTINGSHADOW__DESCSTR "Dynamic Lighting with Shadows"
#else
#define DYNAMICLIGHTINGSHADOW__CLASSSTR "DynamicLightingShadowPlugin"
#define DYNAMICLIGHTINGSHADOW__DESCSTR "Dynamic Lighting with Shadows Plugin"
#endif
#define DYNAMICLIGHTING__CLASSNAME DynamicLightingShadow
class DynamicLightingShadow : public FBShader
{
public:
virtual bool FBCreate();
virtual void FBDestroy();
virtual void ShaderPassTypeBegin ( FBRenderOptions* pRenderOptions,
FBRenderingPass pPass);
virtual void ShaderPassTypeEnd ( FBRenderOptions* pRenderOptions,
FBRenderingPass pPass);
virtual void ShaderPassInstanceBegin( FBRenderOptions* pRenderOptions,
FBRenderingPass pPass);
virtual void ShaderPassInstanceEnd ( FBRenderOptions* pRenderOptions,
FBRenderingPass pPass);
virtual void ShaderPassMaterialBegin( FBRenderOptions* pRenderOptions,
FBRenderingPass pPass, FBShaderModelInfo* pInfo);
virtual void ShaderPassMaterialEnd ( FBRenderOptions* pRenderOptions,
FBRenderingPass pPass, FBShaderModelInfo* pInfo);
virtual void ShaderPassModelDraw ( FBRenderOptions* pRenderOptions,
FBRenderingPass pPass, FBShaderModelInfo* pInfo);
virtual void ShaderPassDrawShadowBegin( FBRenderOptions* pRenderOptions);
virtual void ShaderPassDrawShadowEnd( FBRenderOptions* pRenderOptions);
virtual FBShaderModelInfo* NewShaderModelInfo(
HKModelRenderInfo pModelRenderInfo,
int pSubRegionIndex) ;
virtual void UpdateModelShaderInfo( FBRenderOptions* pOptions, FBShaderModelInfo* pInfo );
virtual void UploadModelViewMatrixArrayForDrawInstanced(const double* pModelViewMatrixArray, int pCount);
protected:
int GetAffectingLights( FBArrayTemplate<FBLight*>* pLights );
int GetShadowCasters( FBArrayTemplate<FBModel*>* pShadowCasters );
public:
FBPropertyListObject AffectingLights;
FBPropertyListObject ShadowCasters;
private:
static Graphics::ShadowMappingShader* mpLightShadowShader;
static int mpLightShadowShaderRefCount;
};
#endif // End __DYNAMICLIGHTING_H__