21 #ifndef CAELUM__DEPTH_COMPOSER_H 22 #define CAELUM__DEPTH_COMPOSER_H 38 Ogre::SceneManager *mSceneMgr;
40 void onCompositorMaterialChanged ();
41 const String& getCompositorName ();
44 inline Ogre::SceneManager* getSceneManager()
const {
return mSceneMgr; }
55 typedef std::map<Ogre::Viewport*, DepthComposerInstance*> ViewportInstanceMap;
56 ViewportInstanceMap mViewportInstanceMap;
60 void destroyViewportInstance(Ogre::Viewport* viewport);
62 void destroyAllViewportInstances();
65 bool mDebugDepthRender;
69 void setDebugDepthRender (
bool value);
70 bool getDebugDepthRender ()
const {
return mDebugDepthRender; }
73 bool mSkyDomeHazeEnabled;
74 Ogre::Vector3 mSunDirection;
75 Ogre::ColourValue mHazeColour;
79 void setSkyDomeHazeEnabled (
bool value);
80 bool getSkyDomeHazeEnabled ()
const {
return mSkyDomeHazeEnabled; }
82 void setSunDirection (
const Ogre::Vector3& value) { mSunDirection = value; }
83 const Ogre::Vector3 getSunDirection ()
const {
return mSunDirection; }
85 void setHazeColour (
const Ogre::ColourValue& value) { mHazeColour = value; }
86 const Ogre::ColourValue getHazeColour ()
const {
return mHazeColour; }
89 bool mGroundFogEnabled;
90 Real mGroundFogDensity;
91 Real mGroundFogBaseLevel;
92 Real mGroundFogVerticalDecay;
93 Ogre::ColourValue mGroundFogColour;
97 void setGroundFogEnabled (
bool value);
98 bool getGroundFogEnabled ()
const {
return mGroundFogEnabled; }
133 Ogre::Viewport* mViewport;
134 Ogre::CompositorInstance* mCompInst;
135 std::auto_ptr<DepthRenderer> mDepthRenderer;
137 virtual void notifyMaterialSetup(uint pass_id, Ogre::MaterialPtr &mat);
138 virtual void notifyMaterialRender(uint pass_id, Ogre::MaterialPtr &mat);
141 void setup(Ogre::GpuProgramParametersSharedPtr params);
143 Ogre::GpuProgramParametersSharedPtr fpParams;
158 void addCompositor ();
159 void removeCompositor ();
160 bool isCompositorEnabled () {
return mCompInst != 0; }
188 class CAELUM_EXPORT
DepthRenderer:
private Ogre::RenderQueue::RenderableListener
191 Ogre::Viewport* mMasterViewport;
192 Ogre::Viewport* mDepthRenderViewport;
193 Ogre::TexturePtr mDepthRenderTexture;
194 bool mDepthRenderingNow;
195 Ogre::MaterialPtr mDepthRenderMaterial;
198 #if OGRE_VERSION < 0x00010600 199 virtual bool renderableQueued(
200 Ogre::Renderable* rend,
202 Ogre::ushort priority,
203 Ogre::Technique** ppTech);
205 virtual bool renderableQueued(
206 Ogre::Renderable* rend,
208 Ogre::ushort priority,
209 Ogre::Technique** ppTech,
210 Ogre::RenderQueue* pQueue);
211 #endif // OGRE_VERSION 212 inline Ogre::Material* getDepthRenderMaterial()
const {
return mDepthRenderMaterial.get(); }
214 int mMinRenderGroupId;
215 int mMaxRenderGroupId;
216 int mViewportVisibilityMask;
222 inline Ogre::Viewport* getMasterViewport() {
return mMasterViewport; }
223 inline Ogre::Texture* getDepthRenderTexture () {
return mDepthRenderTexture.get(); }
224 inline Ogre::Viewport* getDepthRenderViewport () {
return mDepthRenderViewport; }
225 inline Ogre::RenderTexture* getDepthRenderTarget () {
226 return mDepthRenderTexture->getBuffer()->getRenderTarget ();
237 void setRenderGroupRangeFilter (
int minGroup,
int maxGroup);
241 int getRenderGroupRangeFilterMax () {
return mMaxRenderGroupId; }
245 void disableRenderGroupRangeFilter ();
251 uint getViewportVisibilityMask () {
return mViewportVisibilityMask; }
252 void disableViewportVisibilityMask () { mViewportVisibilityMask = ~0; }
264 inline bool getUseCustomDepthScheme () {
return mUseCustomDepthScheme; }
269 inline const Ogre::String& getCustomDepthSchemeName () {
return mCustomDepthSchemeName; }
275 bool mUseCustomDepthScheme;
276 Ogre::String mCustomDepthSchemeName;
280 #endif // CAELUM__DEPTH_COMPOSER_H Real getGroundFogVerticalDecay() const
Get ground fog density.
void setUseCustomDepthScheme(bool value)
If true then use a user-supplied material scheme which outputs depth.
Ogre::CompositorInstance * getCompositorInstance() const
Get compositor instance; attached to the viewport.
Caelum::DepthRenderer * getDepthRenderer() const
Get the underlying depth renderer.
void setCustomDepthSchemeName(const Ogre::String &value)
Set the name of the custom depth scheme (default is CaelumDepth).
void setGroundFogVerticalDecay(Real value)
Sets ground fog vertical decay.
Compositor-based precipitation controller.
int getRenderGroupRangeFilterMin()
void setGroundFogColour(const Ogre::ColourValue &value)
Sets ground fog colour.
Per-viewport instance of.
const Ogre::ColourValue getGroundFogColour() const
Get ground fog colour.
DepthComposer * getParent() const
Get parent DepthComposer; with all the interesting parameters.
void setGroundFogBaseLevel(Real value)
Sets ground fog level At ground level fogginess is equal to GroundFogDensity.
void setViewportVisibilityMask(uint value)
Query mask for the depth rendering viewport.
static const String DEFAULT_CUSTOM_DEPTH_SCHEME_NAME
Default name of the custom scheme.
Ogre::Viewport * getViewport() const
Get the viewport this instance is attached to.
Real getGroundFogDensity() const
Get ground fog density.
Real getGroundFogBaseLevel() const
Get ground fog density.
Render the depth buffer to a texture.
An optimized reference to a gpu shared parameter.
void setGroundFogDensity(Real value)
Sets ground fog density.