public write Current render pass

Discuss about anything related to the Irrlicht Engine, or read announcements about any significant features or usage changes.
Post Reply
omaremad
Competition winner
Posts: 1027
Joined: Fri Jul 15, 2005 11:30 pm
Location: Cairo,Egypt

public write Current render pass

Post by omaremad »

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.
"Irrlicht is obese"

If you want modern rendering techniques learn how to make them or go to the engine next door =p
omaremad
Competition winner
Posts: 1027
Joined: Fri Jul 15, 2005 11:30 pm
Location: Cairo,Egypt

Post by omaremad »

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
Post Reply