Panagiotis Christopoulos Charitos 15 лет назад
Родитель
Сommit
198e13e45d

+ 16 - 0
src/Renderer/Drawers/CollisionDbgDrawer.cpp

@@ -43,3 +43,19 @@ void CollisionDbgDrawer::draw(const Obb& obb)
 	dbg.pushBackVertex(obb.getCenter() + obb.getRotation() * obb.getExtend());
 	dbg.end();*/
 }
+
+
+//======================================================================================================================
+// draw (Plane)                                                                                                        =
+//======================================================================================================================
+void CollisionDbgDrawer::draw(const Plane& plane)
+{
+	const Vec3& n = plane.getNormal();
+	const float& o = plane.getOffset();
+	Quat q;
+	q.setFrom2Vec3(Vec3(0.0, 0.0, 1.0), n);
+	Mat4 trf(n * o, Mat3(q));
+
+	dbg.setModelMat(trf);
+	dbg.renderGrid();
+}

+ 4 - 0
src/Renderer/Drawers/CollisionDbgDrawer.h

@@ -5,6 +5,7 @@
 class Dbg;
 class Sphere;
 class Obb;
+class Plane;
 
 
 /// Contains methods to render the collision shapes
@@ -20,6 +21,9 @@ class CollisionDbgDrawer
 		/// Draw Obb
 		virtual void draw(const Obb& obb);
 
+		/// Draw Plane
+		virtual void draw(const Plane& plane);
+
 	private:
 		Dbg& dbg; ///< The debug stage
 };

+ 3 - 0
src/Renderer/Renderer.cpp

@@ -52,6 +52,9 @@ void Renderer::init(const RendererInitializer& initializer)
 	quadVao.create();
 	quadVao.attachArrayBufferVbo(quadPositionsVbo, 0, 2, GL_FLOAT, false, 0, NULL);
 	quadVao.attachElementArrayBufferVbo(quadVertIndecesVbo);
+
+	// Other
+	skinsDeformer.init();
 }
 
 

+ 3 - 0
src/Renderer/Renderer.h

@@ -15,6 +15,7 @@
 #include "Dbg.h"
 #include "GlException.h"
 #include "SceneDrawer.h"
+#include "SkinsDeformer.h"
 
 
 class Camera;
@@ -53,6 +54,7 @@ class Renderer
 		GETTER_R(Mat4, viewProjectionMat, getViewProjectionMat);
 		const Camera& getCamera() const {return *cam;}
 		GETTER_R(SceneDrawer, sceneDrawer, getSceneDrawer)
+		GETTER_RW(SkinsDeformer, skinsDeformer, getSkinsDeformer)
 		/// @}
 
 		/// Init the renderer given an initialization class
@@ -107,6 +109,7 @@ class Renderer
 		const Camera* cam; ///< Current camera
 		static int maxColorAtachments; ///< Max color attachments an FBO can accept
 		SceneDrawer sceneDrawer;
+		SkinsDeformer skinsDeformer;
 
 	//====================================================================================================================
 	// Protected                                                                                                         =

+ 2 - 2
src/Renderer/SkinsDeformer.cpp

@@ -27,12 +27,12 @@ void SkinsDeformer::init()
 
 	// All
 	tfHwSkinningAllSProg->bind();
-	glTransformFeedbackVaryings(tfHwSkinningAllSProg->getGlId(), 1, vars, GL_SEPARATE_ATTRIBS);
+	glTransformFeedbackVaryings(tfHwSkinningAllSProg->getGlId(), 3, vars, GL_SEPARATE_ATTRIBS);
 	tfHwSkinningAllSProg->relink();
 
 	// Pos
 	tfHwSkinningPosSProg->bind();
-	glTransformFeedbackVaryings(tfHwSkinningAllSProg->getGlId(), 3, vars, GL_SEPARATE_ATTRIBS);
+	glTransformFeedbackVaryings(tfHwSkinningAllSProg->getGlId(), 1, vars, GL_SEPARATE_ATTRIBS);
 	tfHwSkinningPosSProg->relink();
 }
 

+ 1 - 1
src/Renderer/SkinsDeformer.h

@@ -8,7 +8,7 @@ class ShaderProg;
 class SkinPatchNode;
 
 
-///
+/// @todo
 class SkinsDeformer
 {
 	public:

+ 5 - 0
src/Scene/Controllers/SkelAnimModelNodeCtrl.cpp

@@ -178,4 +178,9 @@ void SkelAnimModelNodeCtrl::update(float)
 		deform(skinNode.getSkin().getSkeleton(), skinNode.getBoneTranslations(), skinNode.getBoneRotations(),
 		       skinNode.getHeads(), skinNode.getTails());
 	}
+
+	BOOST_FOREACH(SkinPatchNode* skinPatchNode, skinNode.getPatcheNodes())
+	{
+		MainRendererSingleton::getInstance().getSkinsDeformer().deform(*skinPatchNode);
+	}
 }

+ 13 - 0
src/Scene/MaterialRuntime.h

@@ -0,0 +1,13 @@
+#ifndef MATERIAL_RUNTIME_H
+#define MATERIAL_RUNTIME_H
+
+
+/// @todo
+class MaterialRuntime
+{
+	public:
+	private:
+};
+
+
+#endif