Procházet zdrojové kódy

- Renaming blenderscripts to blender
- Refactoring the material stage
- Writting unit tests for Scanner

Panagiotis Christopoulos Charitos před 15 roky
rodič
revize
de5a9b60ce

+ 0 - 0
blenderscripts/common.py → blender/common.py


+ 0 - 0
blenderscripts/main.py → blender/main.py


+ 0 - 0
blenderscripts/material.py → blender/material.py


+ 0 - 0
blenderscripts/mesh.py → blender/mesh.py


+ 0 - 0
blenderscripts/skelanim.py → blender/skelanim.py


+ 0 - 0
blenderscripts/skeleton.py → blender/skeleton.py


binární
docs/resources.odg


+ 4 - 2
src/Renderer/Bs.cpp

@@ -19,7 +19,8 @@ void Bs::createFbo()
 		fbo.setNumOfColorAttachements(1);
 
 		glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, r.getPps().prePassFai.getGlId(), 0);
-		glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_TEXTURE_2D, r.getMs().depthFai.getGlId(), 0);
+		glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_TEXTURE_2D,
+		                       r.getMs().getDepthFai().getGlId(), 0);
 
 		fbo.checkIfGood();
 
@@ -45,7 +46,8 @@ void Bs::createRefractFbo()
 		refractFbo.setNumOfColorAttachements(1);
 
 		glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, refractFai.getGlId(), 0);
-		glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_TEXTURE_2D, r.getMs().depthFai.getGlId(), 0);
+		glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_TEXTURE_2D,
+		                       r.getMs().getDepthFai().getGlId(), 0);
 
 		refractFbo.checkIfGood();
 

+ 1 - 1
src/Renderer/Dbg.cpp

@@ -203,7 +203,7 @@ void Dbg::init(const RendererInitializer& initializer)
 		fbo.setNumOfColorAttachements(1);
 
 		glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, r.getPps().postPassFai.getGlId(), 0);
-		glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT,  GL_TEXTURE_2D, r.getMs().depthFai.getGlId(), 0);
+		glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT,  GL_TEXTURE_2D, r.getMs().getDepthFai().getGlId(), 0);
 
 		fbo.checkIfGood();
 		fbo.unbind();

+ 1 - 1
src/Renderer/Ez.cpp

@@ -28,7 +28,7 @@ void Ez::init(const RendererInitializer& initializer)
 
 		fbo.setNumOfColorAttachements(0);
 
-		glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, r.getMs().depthFai.getGlId(), 0);
+		glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, r.getMs().getDepthFai().getGlId(), 0);
 
 		fbo.checkIfGood();
 

+ 9 - 9
src/Renderer/Is.cpp

@@ -191,7 +191,7 @@ void Is::ambientPass(const Vec3& color)
 
 	// set the uniforms
 	ambientPassSProg->findUniVar("ambientCol")->setVec3(&color);
-	ambientPassSProg->findUniVar("sceneColMap")->setTexture(r.getMs().diffuseFai, 0);
+	ambientPassSProg->findUniVar("sceneColMap")->setTexture(r.getMs().getDiffuseFai(), 0);
 
 	// Draw quad
 	r.drawQuad();
@@ -219,10 +219,10 @@ void Is::pointLightPass(const PointLight& light)
 	const ShaderProg& shader = *pointLightSProg; // ensure the const-ness
 	shader.bind();
 
-	shader.findUniVar("msNormalFai")->setTexture(r.getMs().normalFai, 0);
-	shader.findUniVar("msDiffuseFai")->setTexture(r.getMs().diffuseFai, 1);
-	shader.findUniVar("msSpecularFai")->setTexture(r.getMs().specularFai, 2);
-	shader.findUniVar("msDepthFai")->setTexture(r.getMs().depthFai, 3);
+	shader.findUniVar("msNormalFai")->setTexture(r.getMs().getNormalFai(), 0);
+	shader.findUniVar("msDiffuseFai")->setTexture(r.getMs().getDiffuseFai(), 1);
+	shader.findUniVar("msSpecularFai")->setTexture(r.getMs().getSpecularFai(), 2);
+	shader.findUniVar("msDepthFai")->setTexture(r.getMs().getDepthFai(), 3);
 	shader.findUniVar("planes")->setVec2(&planes);
 	Vec3 lightPosEyeSpace = light.getWorldTransform().origin.getTransformed(cam.getViewMatrix());
 	shader.findUniVar("lightPos")->setVec3(&lightPosEyeSpace);
@@ -284,10 +284,10 @@ void Is::spotLightPass(const SpotLight& light)
 	shdr->bind();
 
 	// bind the FAIs
-	shdr->findUniVar("msNormalFai")->setTexture(r.getMs().normalFai, 0);
-	shdr->findUniVar("msDiffuseFai")->setTexture(r.getMs().diffuseFai, 1);
-	shdr->findUniVar("msSpecularFai")->setTexture(r.getMs().specularFai, 2);
-	shdr->findUniVar("msDepthFai")->setTexture(r.getMs().depthFai, 3);
+	shdr->findUniVar("msNormalFai")->setTexture(r.getMs().getNormalFai(), 0);
+	shdr->findUniVar("msDiffuseFai")->setTexture(r.getMs().getDiffuseFai(), 1);
+	shdr->findUniVar("msSpecularFai")->setTexture(r.getMs().getSpecularFai(), 2);
+	shdr->findUniVar("msDepthFai")->setTexture(r.getMs().getDepthFai(), 3);
 
 	// the planes
 	shdr->findUniVar("planes")->setVec2(&planes);

+ 1 - 1
src/Renderer/MainRenderer.cpp

@@ -102,7 +102,7 @@ void MainRenderer::render(Camera& cam_)
 	glDisable(GL_DEPTH_TEST);
 	glDisable(GL_BLEND);
 	sProg->bind();
-	sProg->findUniVar("rasterImage")->setTexture(ms->diffuseFai, 0);
+	sProg->findUniVar("rasterImage")->setTexture(ms->getDiffuseFai(), 0);
 	//sProg->findUniVar("rasterImage")->setTexture(pps.postPassFai, 0);
 	drawQuad();
 }

+ 7 - 5
src/Renderer/Ms.h

@@ -4,6 +4,7 @@
 #include "RenderingPass.h"
 #include "Texture.h"
 #include "Fbo.h"
+#include "Properties.h"
 
 
 class RendererInitializer;
@@ -13,12 +14,12 @@ class Ez;
 /// Material stage
 class Ms: public RenderingPass
 {
-	public:
-		Texture normalFai;
-		Texture diffuseFai;
-		Texture specularFai;
-		Texture depthFai;
+	PROPERTY_R(Texture, normalFai, getNormalFai) ///< The FAI for normals
+	PROPERTY_R(Texture, diffuseFai, getDiffuseFai) ///< The FAI for diffuse color
+	PROPERTY_R(Texture, specularFai, getSpecularFai) ///< The FAI for specular color and shininess
+	PROPERTY_R(Texture, depthFai, getDepthFai) ///< The FAI for depth
 
+	public:
 		Ms(Renderer& r_, Object* parent);
 		void init(const RendererInitializer& initializer);
 		void run();
@@ -28,4 +29,5 @@ class Ms: public RenderingPass
 		Fbo fbo;
 };
 
+
 #endif

+ 4 - 4
src/Renderer/Renderer.cpp

@@ -194,22 +194,22 @@ void Renderer::setupMaterial(const Material& mtl, const SceneNode& sceneNode, co
 	//
 	if(mtl.stdUniVars[Material::SUV_MS_NORMAL_FAI])
 	{
-		mtl.stdUniVars[Material::SUV_MS_NORMAL_FAI]->setTexture(ms->normalFai, textureUnit++);
+		mtl.stdUniVars[Material::SUV_MS_NORMAL_FAI]->setTexture(ms->getNormalFai(), textureUnit++);
 	}
 
 	if(mtl.stdUniVars[Material::SUV_MS_DIFFUSE_FAI])
 	{
-		mtl.stdUniVars[Material::SUV_MS_DIFFUSE_FAI]->setTexture(ms->diffuseFai, textureUnit++);
+		mtl.stdUniVars[Material::SUV_MS_DIFFUSE_FAI]->setTexture(ms->getDiffuseFai(), textureUnit++);
 	}
 
 	if(mtl.stdUniVars[Material::SUV_MS_SPECULAR_FAI])
 	{
-		mtl.stdUniVars[Material::SUV_MS_SPECULAR_FAI]->setTexture(ms->specularFai, textureUnit++);
+		mtl.stdUniVars[Material::SUV_MS_SPECULAR_FAI]->setTexture(ms->getSpecularFai(), textureUnit++);
 	}
 
 	if(mtl.stdUniVars[Material::SUV_MS_DEPTH_FAI])
 	{
-		mtl.stdUniVars[Material::SUV_MS_DEPTH_FAI]->setTexture(ms->depthFai, textureUnit++);
+		mtl.stdUniVars[Material::SUV_MS_DEPTH_FAI]->setTexture(ms->getDepthFai(), textureUnit++);
 	}
 
 	if(mtl.stdUniVars[Material::SUV_IS_FAI])

+ 2 - 2
src/Renderer/Ssao.cpp

@@ -120,9 +120,9 @@ void Ssao::run()
 	ssaoSProg->bind();
 	Vec2 camRange(cam.getZNear(), cam.getZFar());
 	ssaoSProg->findUniVar("camerarange")->setVec2(&camRange);
-	ssaoSProg->findUniVar("msDepthFai")->setTexture(r.getMs().depthFai, 0);
+	ssaoSProg->findUniVar("msDepthFai")->setTexture(r.getMs().getDepthFai(), 0);
 	ssaoSProg->findUniVar("noiseMap")->setTexture(*noiseMap, 1);
-	ssaoSProg->findUniVar("msNormalFai")->setTexture(r.getMs().normalFai, 2);
+	ssaoSProg->findUniVar("msNormalFai")->setTexture(r.getMs().getNormalFai(), 2);
 	r.drawQuad();
 
 

+ 1 - 7
src/Util/Scanner.h

@@ -139,17 +139,12 @@ class Scanner
 	//====================================================================================================================
 	public:
 		/// Constructor #1
-		/// @param newlinesAsWhitespace @see newlinesAsWhitespace
-		/// @exception Exception
-		Scanner(bool newlinesAsWhitespace = true) {init(newlinesAsWhitespace);}
-
-		/// Constructor #2
 		/// @see loadFile
 		/// @param newlinesAsWhitespace @see newlinesAsWhitespace
 		/// @exception Exception
 		Scanner(const char* filename, bool newlinesAsWhitespace = true);
 
-		/// Constructor #3
+		/// Constructor #2
 		/// @see loadIstream
 		/// @param newlinesAsWhitespace @see newlinesAsWhitespace
 		/// @exception Exception
@@ -176,7 +171,6 @@ class Scanner
 		/// Get the current line the Scanner is processing
 		int getLineNumber() const {return lineNmbr;}
 
-
 	//====================================================================================================================
 	// Protected                                                                                                         =
 	//====================================================================================================================

+ 95 - 3
unit-tests/Util/Scanner.ut.cpp

@@ -1,7 +1,99 @@
 #include <gtest/gtest.h>
+#include <sstream>
+#include <iostream>
+#include <memory>
+#include "Scanner.h"
 
-TEST(ScannerTests, lala)
+
+TEST(ScannerTests, Numbers)
 {
-	EXPECT_EQ(0, 1);
-	EXPECT_EQ(0, 0);
+	std::stringstream ss;	
+	ss << "12345678901234 1.12 0.00000000000001 0.01e1 1e- 10.123e-7 1ab";
+
+	std::auto_ptr<Scanner> scanner_;
+	const Scanner::Token* token;
+	
+	EXPECT_NO_THROW(scanner_.reset(new Scanner(ss, "numbers")));
+	Scanner& scanner = *scanner_;
+
+	// 12345678901234
+	EXPECT_NO_THROW(token = &scanner.getNextToken());
+	EXPECT_EQ(token->getCode(), Scanner::TC_NUMBER);	
+	EXPECT_EQ(token->getDataType(), Scanner::DT_INT);	
+	EXPECT_EQ(token->getValue().getInt(), 12345678901234);
+	
+	// 1.12
+	EXPECT_NO_THROW(token = &scanner.getNextToken());
+	EXPECT_EQ(token->getCode(), Scanner::TC_NUMBER);	
+	EXPECT_EQ(token->getDataType(), Scanner::DT_FLOAT);	
+	EXPECT_FLOAT_EQ(token->getValue().getFloat(), 1.12);
+	
+	// 0.00000000000001
+	EXPECT_NO_THROW(token = &scanner.getNextToken());
+	EXPECT_EQ(token->getCode(), Scanner::TC_NUMBER);	
+	EXPECT_EQ(token->getDataType(), Scanner::DT_FLOAT);	
+	EXPECT_FLOAT_EQ(token->getValue().getFloat(), 0.00000000000001);
+	
+	// 0.01e1
+	EXPECT_NO_THROW(token = &scanner.getNextToken());
+	EXPECT_EQ(token->getCode(), Scanner::TC_NUMBER);	
+	EXPECT_EQ(token->getDataType(), Scanner::DT_FLOAT);	
+	EXPECT_FLOAT_EQ(token->getValue().getFloat(), 0.01e1);
+	
+	// 1e-
+	EXPECT_ANY_THROW(token = &scanner.getNextToken());
+	
+	// 10.123e-7
+	EXPECT_NO_THROW(token = &scanner.getNextToken());
+	EXPECT_EQ(token->getCode(), Scanner::TC_NUMBER);	
+	EXPECT_EQ(token->getDataType(), Scanner::DT_FLOAT);	
+	EXPECT_FLOAT_EQ(token->getValue().getFloat(), 10.123e-7);
+	
+	// 1ab
+	EXPECT_ANY_THROW(token = &scanner.getNextToken());
+	
+	// EOF
+	EXPECT_NO_THROW(token = &scanner.getNextToken());
+	EXPECT_EQ(token->getCode(), Scanner::TC_EOF);
 }
+
+
+TEST(ScannerTests, Identifiers)
+{
+	std::stringstream ss;	
+	ss << "1 la0_la ha\n_ha";
+
+	std::auto_ptr<Scanner> scanner_;
+	const Scanner::Token* token;
+	
+	EXPECT_NO_THROW(scanner_.reset(new Scanner(ss, "identifiers")));
+	Scanner& scanner = *scanner_;
+	
+	// 1
+	EXPECT_NO_THROW(token = &scanner.getNextToken());
+	EXPECT_NE(token->getCode(), Scanner::TC_IDENTIFIER);
+	
+	// la_la
+	EXPECT_NO_THROW(token = &scanner.getNextToken());
+	EXPECT_EQ(token->getCode(), Scanner::TC_IDENTIFIER);	
+	EXPECT_EQ(token->getValue().getString(), std::string("la0_la"));
+	
+	// ha
+	EXPECT_NO_THROW(token = &scanner.getNextToken());
+	EXPECT_EQ(token->getCode(), Scanner::TC_IDENTIFIER);	
+	EXPECT_EQ(token->getValue().getString(), std::string("ha"));
+	
+	// _ha
+	EXPECT_NO_THROW(token = &scanner.getNextToken());
+	EXPECT_EQ(token->getCode(), Scanner::TC_IDENTIFIER);	
+	EXPECT_EQ(token->getValue().getString(), std::string("_ha"));
+	
+	// EOF
+	EXPECT_NO_THROW(token = &scanner.getNextToken());
+	EXPECT_EQ(token->getCode(), Scanner::TC_EOF);
+}
+
+
+
+
+