Explorar o código

Removing boost from shader program

Panagiotis Christopoulos Charitos %!s(int64=13) %!d(string=hai) anos
pai
achega
4a1d8c405a
Modificáronse 3 ficheiros con 25 adicións e 11 borrados
  1. 6 2
      include/anki/gl/ShaderProgram.h
  2. 9 5
      src/gl/ShaderProgram.cpp
  3. 10 4
      src/renderer/Drawer.cpp

+ 6 - 2
include/anki/gl/ShaderProgram.h

@@ -7,9 +7,9 @@
 #include "anki/math/Forward.h"
 #include "anki/util/NonCopyable.h"
 #include "anki/gl/Ogl.h"
-#include <boost/ptr_container/ptr_vector.hpp>
 #include <vector>
 #include <string>
+#include <memory>
 
 namespace anki {
 
@@ -148,6 +148,9 @@ public:
 	/// @}
 
 private:
+	GLuint index;
+	GLsizei offset; ///< Offset inside the uniform block
+
 	/// Standard set uniform checks
 	/// - Check if initialized
 	/// - if the current shader program is the var's shader program
@@ -183,7 +186,8 @@ private:
 class ShaderProgram: public NonCopyable
 {
 public:
-	typedef boost::ptr_vector<ShaderProgramVariable> VariablesContainer;
+	typedef std::vector<std::shared_ptr<ShaderProgramVariable>>
+		VariablesContainer;
 	typedef std::vector<ShaderProgramUniformVariable*>
 		UniformVariablesContainer;
 	typedef std::vector<ShaderProgramAttributeVariable*>

+ 9 - 5
src/gl/ShaderProgram.cpp

@@ -395,7 +395,7 @@ void ShaderProgram::getUniAndAttribVars()
 			new ShaderProgramAttributeVariable(loc, &name_[0], type, 
 			size, this);
 
-		vars.push_back(var);
+		vars.push_back(std::shared_ptr<ShaderProgramVariable>(var));
 		attribs.push_back(var);
 		nameToVar[var->getName().c_str()] = var;
 		nameToAttribVar[var->getName().c_str()] = var;
@@ -420,11 +420,15 @@ void ShaderProgram::getUniAndAttribVars()
 			new ShaderProgramUniformVariable(loc, &name_[0], type, 
 			size, this);
 
-		vars.push_back(var);
+		vars.push_back(std::shared_ptr<ShaderProgramVariable>(var));
 		unis.push_back(var);
 		nameToVar[var->getName().c_str()] = var;
 		nameToUniVar[var->getName().c_str()] = var;
 	}
+
+	vars.shrink_to_fit();
+	unis.shrink_to_fit();
+	attribs.shrink_to_fit();
 }
 
 //==============================================================================
@@ -477,10 +481,10 @@ std::ostream& operator<<(std::ostream& s, const ShaderProgram& x)
 {
 	s << "ShaderProgram\n";
 	s << "Variables:\n";
-	for(const ShaderProgramVariable& var : x.vars)
+	for(auto var : x.vars)
 	{
-		s << var.getName() << " " << var.getLocation() << " " 
-			<< (var.getType() == ShaderProgramVariable::SPVT_ATTRIBUTE 
+		s << var->getName() << " " << var->getLocation() << " "
+			<< (var->getType() == ShaderProgramVariable::SPVT_ATTRIBUTE
 			? "[A]" : "[U]") <<  '\n';
 	}
 	return s;

+ 10 - 4
src/renderer/Drawer.cpp

@@ -503,16 +503,19 @@ void SceneDebugDrawer::draw(OctreeNode& octnode, uint depth,
 enum BuildinId
 {
 	BI_UNITIALIZED = 0,
-	BT_NO_BUILDIN = 1,
+	BT_NO_BUILDIN,
 	BI_MODEL_VIEW_PROJECTION_MATRIX,
 	BI_MODEL_VIEW_MATRIX,
-	BI_NORMAL_MATRIX
+	BI_NORMAL_MATRIX,
+	BI_BLURRING,
+	BI_COUNT
 };
 
-static std::array<const char*, 3> buildinNames = {{
+static std::array<const char*, BI_COUNT - 2> buildinNames = {{
 	"modelViewProjectionMat",
 	"modelViewMat",
-	"normalMat"
+	"normalMat",
+	"blurring"
 }};
 
 template<typename T>
@@ -633,6 +636,9 @@ struct SetupMaterialVariableVisitor
 			}
 			uni->set(mvMat.getRotationPart());
 			break;
+		case BI_BLURRING:
+			uni->set(0.0);
+			break;
 		}
 	}
 };