Currently the active E_SCENE_NODE_RENDER_PASS is read only via get method in smgr.
Would it be a good idea to have public acess to it, since allot of postprocessing/shader systems render nodes in custom orders rather than those by smgr->drawAll().
Things like meshnodes need the current pass type to render transparency correctly.
public write Current render pass
public write Current render pass
"Irrlicht is obese"
If you want modern rendering techniques learn how to make them or go to the engine next door =p
If you want modern rendering techniques learn how to make them or go to the engine next door =p
I made a patch for this feature, its useful to over ride the scenemanger's current pass if methods other than draw all are used.
Code: Select all
Index: source/Irrlicht/CSceneManager.h
===================================================================
--- source/Irrlicht/CSceneManager.h (revision 3764)
+++ source/Irrlicht/CSceneManager.h (working copy)
@@ -429,6 +429,9 @@
//! Returns current render pass.
virtual E_SCENE_NODE_RENDER_PASS getSceneNodeRenderPass() const;
+ //! Sets current render pass.
+ virtual void setSceneNodeRenderPass(E_SCENE_NODE_RENDER_PASS pass);
+
//! Creates a new scene manager.
virtual ISceneManager* createNewSceneManager(bool cloneContent);
Index: source/Irrlicht/CSceneManager.cpp
===================================================================
--- source/Irrlicht/CSceneManager.cpp (revision 3764)
+++ source/Irrlicht/CSceneManager.cpp (working copy)
@@ -2015,6 +2015,11 @@
return CurrentRendertime;
}
+//! Sets current render pass.
+void CSceneManager::setSceneNodeRenderPass(E_SCENE_NODE_RENDER_PASS pass)
+{
+ CurrentRendertime = pass;
+}
//! Returns an interface to the mesh cache which is shared beween all existing scene managers.
IMeshCache* CSceneManager::getMeshCache()
Index: include/ISceneManager.h
===================================================================
--- include/ISceneManager.h (revision 3764)
+++ include/ISceneManager.h (working copy)
@@ -1439,6 +1439,9 @@
pass currently is active they can render the correct part of their geometry. */
virtual E_SCENE_NODE_RENDER_PASS getSceneNodeRenderPass() const = 0;
+ //! Set current render pass.
+ virtual void setSceneNodeRenderPass(E_SCENE_NODE_RENDER_PASS pass) = 0;
+
//! Get the default scene node factory which can create all built in scene nodes
/** \return Pointer to the default scene node factory
This pointer should not be dropped. See IReferenceCounted::drop() for more information. */
"Irrlicht is obese"
If you want modern rendering techniques learn how to make them or go to the engine next door =p
If you want modern rendering techniques learn how to make them or go to the engine next door =p