#pragma once //disable inheritance warning caused by multiple inheritance #if _WIN32 #if _MSC_VER #pragma warning(disable: 4250) #endif #endif #include "OgreRenderTechnique.h" #include "IllumVolumeRenderTechnique.h" /** @brief CausticCasterRenderTechnique used in an OGRE environment. */ class OgreIllumVolumeRenderTechnique : public OgreRenderTechnique, public IllumVolumeRenderTechnique { public: OgreIllumVolumeRenderTechnique(unsigned long startFrame, unsigned long illumVolumeUpdateInterval, unsigned int illumTextureResolution, unsigned int textureDepth, unsigned char illumTexID, bool useDistCalc, String materialName, String lightMatrixGPUParamName, bool useHierarchicalImpostor, unsigned char impostorTexID, Pass* pass, OgreRenderable* parentRenderable, OgreTechniqueGroup* parentTechniqueGroup ); /** @brief Destructor. */ ~OgreIllumVolumeRenderTechnique(); protected: String materialName; unsigned char illumTexID; String lightMatrixGPUParamName; unsigned char impostorTexID; //inherited RenderingRun* createLightVolumeRenderingRun(); void lightVolumeChanged(RenderingRun* run); void lightVolumeUpdated(RenderingRun* run); void hierarchicalImpostorUpdated(RenderingRun* run); }; class OgreIllumVolumeRenderTechniqueFactory : public RenderTechniqueFactory { public: OgreIllumVolumeRenderTechniqueFactory(); OgreRenderTechnique* createInstance(IllumTechniqueParams* params, Pass* pass, OgreRenderable* parentRenderable, OgreTechniqueGroup* parentTechniqueGroup); String materialName; unsigned char illumTexID; unsigned long startFrame; unsigned long illumVolumeUpdateInterval; unsigned int illumTextureResolution; unsigned int textureDepth; bool useDistCalc; String lightMatrixGPUParamName; unsigned char impostorTexID; bool useHierarchicalImpostor; };