#ifndef __DYNAMICLIGHTING_H__
#define __DYNAMICLIGHTING_H__
#include <Shader.h>
#ifdef _MB_INTERNAL
#define DYNAMICLIGHTING__CLASSSTR "DynamicLightingInternal"
#define DYNAMICLIGHTING__DESCSTR "Dynamic Lighting"
#else
#define DYNAMICLIGHTING__CLASSSTR "DynamicLighting"
#define DYNAMICLIGHTING__DESCSTR "Dynamic Lighting Plugin"
#endif
#define DYNAMICLIGHTING__CLASSNAME DynamicLighting
class DynamicLighting : 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);
public:
FBPropertyListObject AffectingLights;
private:
static Graphics::Shader* mpLightShader;
static int mpLightShaderRefCount;
};
#endif // End __DYNAMICLIGHTING_H__