Panagiotis Christopoulos Charitos 15 лет назад
Родитель
Сommit
8323bb1041
3 измененных файлов с 578 добавлено и 314 удалено
  1. 492 312
      build/debug/Makefile
  2. 79 0
      src/Renderer/Bs.cpp
  3. 7 2
      src/Renderer/Renderer.h

Разница между файлами не показана из-за своего большого размера
+ 492 - 312
build/debug/Makefile


+ 79 - 0
src/Renderer/Bs.cpp

@@ -1,2 +1,81 @@
 #include "Renderer.h"
 
+
+//======================================================================================================================
+// createFbo                                                                                                           =
+//======================================================================================================================
+void Renderer::Bs::createFbo()
+{
+	fbo.create();
+	fbo.bind();
+
+	fbo.setNumOfColorAttachements(1);
+
+	glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, r.pps.fai.getGlId(), 0); /// @todo the FAI will change
+	glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_TEXTURE_2D, r.ms.depthFai.getGlId(), 0);
+
+	if(!fbo.isGood()) FATAL( "Cannot create deferred shading blending stage FBO" );
+
+	fbo.unbind();
+}
+
+
+//======================================================================================================================
+// createRefractFbo                                                                                                    =
+//======================================================================================================================
+void Renderer::Bs::createRefractFbo()
+{
+	fbo.create();
+	fbo.bind();
+
+	fbo.setNumOfColorAttachements(1);
+
+	glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, refractFai.getGlId(), 0);
+
+	if(!fbo.isGood()) FATAL( "Cannot create deferred shading blending stage FBO" );
+
+	fbo.unbind();
+}
+
+
+//======================================================================================================================
+// init                                                                                                                =
+//======================================================================================================================
+void Renderer::Bs::init()
+{
+	createFbo();
+	createRefractFbo();
+}
+
+
+//======================================================================================================================
+// run                                                                                                                 =
+//======================================================================================================================
+void Renderer::Bs::run()
+{
+	Renderer::setViewport(0, 0, r.width, r.height);
+
+
+	// render the meshes
+	for(Vec<MeshNode*>::iterator it=app->getScene()->meshNodes.begin(); it!=app->getScene()->meshNodes.end(); it++)
+	{
+		MeshNode* meshNode = (*it);
+		DEBUG_ERR(meshNode->material == NULL);
+		if(!meshNode->material->blends) continue;
+
+		r.setupMaterial(*meshNode->material, *meshNode, *r.cam);
+
+		// refracts
+		if(meshNode->material->stdUniVars[Material::SUV_PPS_FAI])
+		{
+
+		}
+		else
+		{
+
+		}
+	}
+
+	Fbo::unbind();
+	glPolygonMode(GL_FRONT, GL_FILL); // the rendering above fucks the polygon mode
+}

+ 7 - 2
src/Renderer/Renderer.h

@@ -350,7 +350,6 @@ class Renderer
 				void run();
 		}; // end Pps
 
-
 		/**
 		 * Blending stage
 		 */
@@ -362,11 +361,17 @@ class Renderer
 				Bs(Renderer& r_): RenderingStage(r_) {}
 
 			private:
+				Fbo fbo;
+				Fbo refractFbo;
+				ShaderProg refractSProg;
+				Texture refractFai;
+
+				void createFbo();
+				void createRefractFbo();
 				void init();
 				void run();
 		}; // end Bs
 
-
 		/**
 		 * Debugging stage
 		 */

Некоторые файлы не были показаны из-за большого количества измененных файлов