Panagiotis Christopoulos Charitos 13 years ago
parent
commit
bcf58c1a66
3 changed files with 28 additions and 2 deletions
  1. 7 0
      include/anki/renderer/Is.h
  2. 0 1
      shaders/IsLpGeneric.glsl
  3. 21 1
      src/renderer/Is.cpp

+ 7 - 0
include/anki/renderer/Is.h

@@ -90,6 +90,13 @@ private:
 	/// Keep the prev light dir to avoid uniform block updates
 	Vec3 prevGroundLightDir = Vec3(0.0);
 
+	/// @name For drawing a quad into the active framebuffer
+	/// @{
+	Vbo quadPositionsVbo; ///< The VBO for quad positions
+	Vbo quadVertIndecesVbo; ///< The VBO for quad array buffer elements
+	Vao quadVao; ///< This VAO is used everywhere except material stage
+	/// @}
+
 	/// Called by init
 	void initInternal(const RendererInitializer& initializer);
 

+ 0 - 1
shaders/IsLpGeneric.glsl

@@ -5,7 +5,6 @@
 #pragma anki start vertexShader
 
 #pragma anki include "shaders/IsLpVertex.glsl"
-#pragma anki include "shaders/LinearDepth.glsl"
 
 #pragma anki start fragmentShader
 

+ 21 - 1
src/renderer/Is.cpp

@@ -334,6 +334,24 @@ void Is::initInternal(const RendererInitializer& initializer)
 		throw ANKI_EXCEPTION("Fbo not complete");
 	}
 
+	//
+	// Init the quad
+	//
+	static const F32 quadVertCoords[][2] = {{1.0, 1.0}, {0.0, 1.0},
+		{0.0, 0.0}, {1.0, 0.0}};
+	quadPositionsVbo.create(GL_ARRAY_BUFFER, sizeof(quadVertCoords),
+		quadVertCoords, GL_STATIC_DRAW);
+
+	static const U16 quadVertIndeces[2][3] =
+		{{0, 1, 3}, {1, 2, 3}}; // 2 triangles
+	quadVertIndecesVbo.create(GL_ELEMENT_ARRAY_BUFFER, sizeof(quadVertIndeces),
+		quadVertIndeces, GL_STATIC_DRAW);
+
+	quadVao.create();
+	quadVao.attachArrayBufferVbo(
+		&quadPositionsVbo, 0, 2, GL_FLOAT, false, 0, 0);
+	quadVao.attachElementArrayBufferVbo(&quadVertIndecesVbo);
+
 	//
 	// Create UBOs
 	//
@@ -578,7 +596,9 @@ void Is::lightPass()
 		r->getMs().getDepthFai());
 	lightPassProg->findUniformVariable("shadowMapArr").set(sm.sm2DArrayTex);
 
-	r->drawQuadInstanced(Tiler::TILES_Y_COUNT * Tiler::TILES_X_COUNT);
+	quadVao.bind();
+	glDrawElementsInstanced(GL_TRIANGLES, 2 * 3, GL_UNSIGNED_SHORT, 0,
+		Tiler::TILES_Y_COUNT * Tiler::TILES_X_COUNT);
 }
 
 //==============================================================================