Pārlūkot izejas kodu

Making more things to compile

Panagiotis Christopoulos Charitos 13 gadi atpakaļ
vecāks
revīzija
f88991678e

+ 1 - 1
include/anki/gl/ShaderProgram.h

@@ -141,7 +141,7 @@ public:
 	/// @tparam Container It could be something like array<float, X> or 
 	///         vector<Vec2> etc
 	template<typename Container>
-	void set(const Container& c) const
+	void setContainer(const Container& c) const
 	{
 		set(&c[0], c.size());
 	}

+ 1 - 1
include/anki/gl/Vao.h

@@ -115,7 +115,7 @@ public:
 	}
 
 	/// Unbind all VAOs
-	void unbind()
+	void unbind() const
 	{
 		if(current == this)
 		{

+ 4 - 4
include/anki/renderer/Bl.h

@@ -36,15 +36,15 @@ public:
 		sideBlurFactor = x;
 	}
 
-	uint getBlurringIterationsNum() const
+	uint32_t getBlurringIterationsNum() const
 	{
 		return blurringIterationsNum;
 	}
-	uint& getBlurringIterationsNum()
+	uint32_t& getBlurringIterationsNum()
 	{
 		return blurringIterationsNum;
 	}
-	void setBlurringIterationsNum(const uint x)
+	void setBlurringIterationsNum(const uint32_t x)
 	{
 		blurringIterationsNum = x;
 	}
@@ -62,7 +62,7 @@ private:
 	Texture blurFai; ///< Temp FAI for blurring
 	TextureResourcePointer sideBlurMap;
 
-	uint blurringIterationsNum; ///< How many times the pass will run
+	uint32_t blurringIterationsNum; ///< How many times the pass will run
 	float sideBlurFactor;
 
 	void runBlur();

+ 0 - 4
include/anki/resource/Resource.h

@@ -5,10 +5,8 @@
 #include "anki/resource/ResourcePointer.h"
 #include "anki/util/Singleton.h"
 
-
 namespace anki {
 
-
 #define ANKI_RESOURCE_TYPEDEFS(rsrc, name) \
 	class rsrc; \
 	typedef ResourceManager<rsrc> rsrc ## ResourceManager; \
@@ -30,8 +28,6 @@ ANKI_RESOURCE_TYPEDEFS(Model, ModelResourcePointer)
 ANKI_RESOURCE_TYPEDEFS(Skin, SkinResourcePointer)
 ANKI_RESOURCE_TYPEDEFS(DummyRsrc, DummyRsrcResourcePointer)
 
-
 } // end namespace
 
-
 #endif

+ 0 - 5
include/anki/resource/TextureResource.h

@@ -3,13 +3,10 @@
 
 #include "anki/gl/Texture.h"
 
-
 namespace anki {
 
-
 class Image;
 
-
 /// Texture resource class
 ///
 /// It loads or creates an image and then loads it in the GPU. It supports 
@@ -25,8 +22,6 @@ public:
 	void load(const Image& img);
 };
 
-
 } // end namespace
 
-
 #endif

+ 18 - 17
src/renderer/Bl.cpp

@@ -78,11 +78,11 @@ void Bl::runSideBlur()
 	}
 
 	sideBlurFbo.bind();
+	sideBlurSProg->bind();
 
 	GlStateSingleton::get().enable(GL_BLEND);
 	glBlendFunc(GL_ONE, GL_ONE);
 
-	sideBlurSProg->bind();
 	sideBlurSProg->findUniformVariableByName("tex")->set(
 		static_cast<const Texture&>(*sideBlurMap));
 	sideBlurSProg->findUniformVariableByName("factor")->set(sideBlurFactor);
@@ -95,31 +95,32 @@ void Bl::runBlur()
 {
 	GlStateSingleton::get().disable(GL_BLEND);
 
-	for(uint i = 0; i < blurringIterationsNum; i++)
+	// Setup programs here. Reverse order
+	vBlurSProg->bind();
+	vBlurSProg->findUniformVariableByName("img")->set(blurFai);
+	vBlurSProg->findUniformVariableByName("msNormalFai")->set(
+		r->getMs().getNormalFai());
+	vBlurSProg->findUniformVariableByName("imgDimension")->set(
+		float(r->getHeight()));
+
+	hBlurSProg->bind();
+	hBlurSProg->findUniformVariableByName("img")->set(
+		r->getPps().getPostPassFai());
+	hBlurSProg->findUniformVariableByName("msNormalFai")->set(
+		r->getMs().getNormalFai());
+	hBlurSProg->findUniformVariableByName("imgDimension")->set(
+		float(r->getWidth()));
+
+	for(uint32_t i = 0; i < blurringIterationsNum; i++)
 	{
 		// hpass
 		hBlurFbo.bind();
-
 		hBlurSProg->bind();
-		hBlurSProg->findUniformVariableByName("img")->set(
-			r->getPps().getPostPassFai());
-		hBlurSProg->findUniformVariableByName("msNormalFai")->set(
-			r->getMs().getNormalFai());
-		hBlurSProg->findUniformVariableByName("imgDimension")->set(
-			float(r->getWidth()));
-
 		r->drawQuad();
 
 		// vpass
 		vBlurFbo.bind();
-
 		vBlurSProg->bind();
-		vBlurSProg->findUniformVariableByName("img")->set(blurFai);
-		vBlurSProg->findUniformVariableByName("msNormalFai")->set(
-			r->getMs().getNormalFai());
-		vBlurSProg->findUniformVariableByName("imgDimension")->set(
-			float(r->getHeight()));
-
 		r->drawQuad();
 	}
 }

+ 0 - 8
src/renderer/Bs.cpp

@@ -14,14 +14,10 @@ void Bs::createFbo()
 	try
 	{
 		fbo.create();
-		fbo.bind();
 
 		fbo.setColorAttachments({&r->getPps().getPrePassFai()});
 		fbo.setOtherAttachment(GL_DEPTH_STENCIL_ATTACHMENT, 
 			r->getMs().getDepthFai());
-
-		fbo.checkIfGood();
-		fbo.unbind();
 	}
 	catch(std::exception& e)
 	{
@@ -35,14 +31,10 @@ void Bs::createRefractFbo()
 	try
 	{
 		refractFbo.create();
-		refractFbo.bind();
 
 		refractFbo.setColorAttachments({&refractFai});
 		refractFbo.setOtherAttachment(GL_DEPTH_STENCIL_ATTACHMENT, 
 			r->getMs().getDepthFai());
-
-		refractFbo.checkIfGood();
-		refractFbo.unbind();
 	}
 	catch(std::exception& e)
 	{

+ 0 - 3
src/renderer/Dbg.cpp

@@ -9,9 +9,6 @@ void Dbg::init(const RendererInitializer& initializer)
 {
 	enabled = initializer.dbg.enabled;
 
-	//
-	// FBO
-	//
 	try
 	{
 		fbo.create();

+ 16 - 39
src/renderer/Drawer.cpp

@@ -8,6 +8,7 @@
 #include "anki/scene/Renderable.h"
 #include "anki/scene/Camera.h"
 #include "anki/scene/ModelNode.h"
+#include "anki/resource/TextureResource.h"
 
 namespace anki {
 
@@ -478,46 +479,25 @@ void SceneDebugDrawer::draw(const OctreeNode& octnode, uint depth,
 //==============================================================================
 
 /// Set the uniform using this visitor
-struct SetUniformVisitor: MateriaVariableVisitable::ConstVisitor
+struct SetUniformVisitor
 {
-	ShaderProgramUniformVariable* uni;
+	const ShaderProgramUniformVariable* uni;
 
-	void visit(const float& x)
+	template<typename T>
+	void visit(const T& x)
 	{
 		uni->set(x);
 	}
-
-	void visit(const Vec2& x)
-	{
-		uni->set(x);
-	}
-
-	void visit(const Vec3& x)
-	{
-		uni->set(x);
-	}
-
-	void visit(const Vec4& x)
-	{
-		uni->set(x);
-	}
-
-	void visit(const Mat3& x)
-	{
-		uni->set(x);
-	}
-
-	void visit(const Mat4& x)
-	{
-		uni->set(x);
-	}
-
-	void visit(const TextureResourcePointer& x)
-	{
-		uni->set(*x.get());
-	}
 };
 
+template<>
+void SetUniformVisitor::visit<TextureResourcePointer>(
+	const TextureResourcePointer& x)
+{
+	const Texture* tex = x.get();
+	uni->set(*tex);
+}
+
 //==============================================================================
 void RenderableDrawer::setupShaderProg(
 	const PassLevelKey& key,
@@ -525,16 +505,13 @@ void RenderableDrawer::setupShaderProg(
 	Renderable& renderable)
 {
 	const Material& mtl = renderable.getMaterial();
-	const ShaderProgram& sprog = mtl.getShaderProgram(key);
-#if !defined(NDEBUG)
-	int texturesCount = 0; // count the textures
-#endif
+	const ShaderProgram& sprog = mtl.findShaderProgram(key);
 
 	sprog.bind();
 	
 	SetUniformVisitor vis;
 
-	for(MaterialVariable& mv : mtl.getVariables())
+	for(const MaterialVariable& mv : mtl.getVariables())
 	{
 		const ShaderProgramUniformVariable* uni = 
 			mv.findShaderProgramUniformVariable(key);
@@ -557,7 +534,7 @@ void RenderableDrawer::setupShaderProg(
 		else
 		{
 			vis.uni = uni;
-			mv->accept(vis);
+			mv.acceptVisitor(vis);
 		}
 	}
 }

+ 0 - 2
src/renderer/Renderer.cpp

@@ -122,8 +122,6 @@ void Renderer::drawQuad()
 {
 	quadVao.bind();
 	glDrawElements(GL_TRIANGLES, 2 * 3, GL_UNSIGNED_SHORT, 0);
-	quadVao.unbind();
-	ANKI_CHECK_GL_ERROR();
 }
 
 

+ 0 - 4
src/resource/TextureResource.cpp

@@ -2,10 +2,8 @@
 #include "anki/resource/Image.h"
 #include "anki/util/Exception.h"
 
-
 namespace anki {
 
-
 //==============================================================================
 void TextureResource::load(const char* filename)
 {
@@ -19,7 +17,6 @@ void TextureResource::load(const char* filename)
 	}
 }
 
-
 //==============================================================================
 void TextureResource::load(const Image& img)
 {
@@ -85,5 +82,4 @@ void TextureResource::load(const Image& img)
 	create(init);
 }
 
-
 } // end namespace