Panagiotis Christopoulos Charitos 13 년 전
부모
커밋
77bc338d48
6개의 변경된 파일32개의 추가작업 그리고 26개의 파일을 삭제
  1. 11 12
      anki/renderer/Drawer.cpp
  2. 4 4
      anki/renderer/Drawer.h
  3. 2 6
      anki/renderer/Ez.cpp
  4. 3 1
      anki/renderer/Ez.h
  5. 3 3
      anki/renderer/Renderer.h
  6. 9 0
      anki/scene/Scene.h

+ 11 - 12
anki/renderer/Drawer.cpp

@@ -498,7 +498,7 @@ void SceneDebugDrawer::draw(const OctreeNode& octnode, uint depth,
 
 
 //==============================================================================
-// SceneDrawer                                                                 =
+// RenderableDrawer                                                            =
 //==============================================================================
 
 /// Set the uniform using this visitor
@@ -522,12 +522,12 @@ struct SetUniformVisitor: public boost::static_visitor<void>
 
 
 //==============================================================================
-void SceneDrawer::setupShaderProg(
+void RenderableDrawer::setupShaderProg(
 	const PassLevelKey& key,
 	const Camera& cam,
-	SceneNode& renderable)
+	Renderable& renderable)
 {
-	const Material& mtl = renderable.getRenderable()->getMaterial();
+	const Material& mtl = renderable.getMaterial();
 	const ShaderProgram& sprog = mtl.getShaderProgram(key);
 	uint texunit = 0;
 
@@ -552,8 +552,7 @@ void SceneDrawer::setupShaderProg(
 		if(name == "modelViewProjectionMat")
 		{
 			Mat4 mvp = 
-				Mat4(renderable.findPropertyBaseByName("worldTransform").
-				getValue<Transform>()) 
+				Mat4(*renderable.getRenderableWorldTransform())
 				* cam.getViewMatrix() * cam.getProjectionMatrix();
 
 			uni.set(mvp);
@@ -567,8 +566,8 @@ void SceneDrawer::setupShaderProg(
 
 
 //==============================================================================
-void SceneDrawer::render(const Camera& cam, uint pass, 
-	SceneNode& node) 
+void RenderableDrawer::render(const Camera& cam, uint pass,
+	Renderable& renderable)
 {
 	/*float dist = (node.getWorldTransform().getOrigin() -
 		cam.getWorldTransform().getOrigin()).getLength();
@@ -577,15 +576,15 @@ void SceneDrawer::render(const Camera& cam, uint pass,
 	PassLevelKey key(pass, 0);
 
 	// Setup shader
-	setupShaderProg(key, cam, node);
+	setupShaderProg(key, cam, renderable);
 
 	// Render
 	uint indecesNum = 
-		node.getRenderable()->getModelPatchBase().getIndecesNumber(0);
+		renderable.getModelPatchBase().getIndecesNumber(0);
 
-	node.getRenderable()->getModelPatchBase().getVao(key).bind();
+	renderable.getModelPatchBase().getVao(key).bind();
 	glDrawElements(GL_TRIANGLES, indecesNum, GL_UNSIGNED_SHORT, 0);
-	node.getRenderable()->getModelPatchBase().getVao(key).unbind();
+	renderable.getModelPatchBase().getVao(key).unbind();
 }
 
 

+ 4 - 4
anki/renderer/Drawer.h

@@ -211,16 +211,16 @@ class PassLevelKey;
 
 
 /// It includes all the functions to render a Renderable
-class SceneDrawer
+class RenderableDrawer
 {
 public:
 	/// The one and only constructor
-	SceneDrawer(Renderer* r_)
+	RenderableDrawer(Renderer* r_)
 		: r(r_)
 	{}
 
 	void render(const Camera& cam,
-		uint pass, SceneNode& renderable);
+		uint pass, Renderable& renderable);
 
 private:
 	Renderer* r;
@@ -228,7 +228,7 @@ private:
 	void setupShaderProg(
 		const PassLevelKey& key,
 		const Camera& cam,
-		SceneNode& renderable);
+		Renderable& renderable);
 };
 
 

+ 2 - 6
anki/renderer/Ez.cpp

@@ -9,8 +9,6 @@
 namespace anki {
 
 
-//==============================================================================
-// init                                                                        =
 //==============================================================================
 void Ez::init(const RendererInitializer& initializer)
 {
@@ -45,8 +43,6 @@ void Ez::init(const RendererInitializer& initializer)
 }
 
 
-//==============================================================================
-// run                                                                         =
 //==============================================================================
 void Ez::run()
 {
@@ -68,10 +64,10 @@ void Ez::run()
 
 	glClear(GL_DEPTH_BUFFER_BIT);
 
-	BOOST_FOREACH(RenderableNode* node, cam.getVisibleMsRenderableNodes())
+	/*for(RenderableNode* node, cam.getVisibleMsRenderableNodes())
 	{
 		r.getSceneDrawer().renderRenderableNode(cam, 1, *node);
-	}
+	}*/
 
 	glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
 }

+ 3 - 1
anki/renderer/Ez.h

@@ -12,7 +12,9 @@ namespace anki {
 class Ez: public SwitchableRenderingPass
 {
 	public:
-		Ez(Renderer& r_): SwitchableRenderingPass(r_) {}
+		Ez(Renderer& r_)
+			: SwitchableRenderingPass(r_)
+		{}
 
 		void init(const RendererInitializer& initializer);
 		void run();

+ 3 - 3
anki/renderer/Renderer.h

@@ -109,11 +109,11 @@ public:
 		return *cam;
 	}
 
-	const SceneDrawer& getSceneDrawer() const
+	const RenderableDrawer& getSceneDrawer() const
 	{
 		return sceneDrawer;
 	}
-	SceneDrawer& getSceneDrawer()
+	RenderableDrawer& getSceneDrawer()
 	{
 		return sceneDrawer;
 	}
@@ -241,7 +241,7 @@ protected:
 	Camera* cam; ///< Current camera
 	/// Max color attachments an FBO can accept
 	static int maxColorAtachments;
-	SceneDrawer sceneDrawer;
+	RenderableDrawer sceneDrawer;
 	float lodDistance; ///< Distance that used to calculate the LOD
 
 	/// @name Optimization vars

+ 9 - 0
anki/scene/Scene.h

@@ -57,6 +57,15 @@ public:
 	{
 		return Types<SceneNode>::MutableRange(nodes.begin(), nodes.end());
 	}
+
+	const VisibilityInfo& getVisibilityInfo() const
+	{
+		return Vinfo;
+	}
+	VisibilityInfo& getVisibilityInfo()
+	{
+		return Vinfo;
+	}
 	/// @}
 
 	/// Put a node in the appropriate containers