Panagiotis Christopoulos Charitos 13 vuotta sitten
vanhempi
sitoutus
0e1963ca72
5 muutettua tiedostoa jossa 43 lisäystä ja 11 poistoa
  1. 30 0
      shaders/BsVertexCommon.glsl
  2. 1 1
      shaders/Pps.glsl
  3. 9 7
      src/renderer/Drawer.cpp
  4. 2 2
      src/renderer/Ssao.cpp
  5. 1 1
      testapp/Main.cpp

+ 30 - 0
shaders/BsVertexCommon.glsl

@@ -0,0 +1,30 @@
+layout(location = 0) in vec3 position;
+layout(location = 3) in vec2 texCoords;
+
+/// @name Varyings
+/// @{
+out vec2 vTexCoords;
+/// @}
+
+#pragma anki include "shaders/MaterialCommonFunctions.glsl"
+
+//==============================================================================
+#define setPositionVec3_DEFINED
+void setPositionVec3(in vec3 pos)
+{
+	gl_Position = vec4(pos, 1.0);
+}
+
+//==============================================================================
+#define setPositionVec4_DEFINED
+void setPositionVec4(in vec4 pos)
+{
+	gl_Position = pos;
+}
+
+//==============================================================================
+#define setTexCoords_DEFINED
+void setTexCoords(in vec2 x)
+{
+	vTexCoords = x;
+}

+ 1 - 1
shaders/Pps.glsl

@@ -66,7 +66,7 @@ void main(void)
 	//fColor = BlendHardLight(vec3(0.6, 0.62, 0.4), fColor);
 	//fColor = BlendHardLight(vec3(0.6, 0.62, 0.4), fColor);
 	fColor = gammaCorrectionRgb(vec3(0.9, 0.92, 0.75), fColor);
 	fColor = gammaCorrectionRgb(vec3(0.9, 0.92, 0.75), fColor);
 
 
-#if 1
+#if 0
 	if(fColor.r != 0.00000001)
 	if(fColor.r != 0.00000001)
 	{
 	{
 		fColor = vec3(ssao);
 		fColor = vec3(ssao);

+ 9 - 7
src/renderer/Drawer.cpp

@@ -41,7 +41,9 @@ struct SetupMaterialVariableVisitor
 			return;
 			return;
 		}
 		}
 
 
-		U32 instancesCount = renderable->getRenderableInstancesCount();
+		const U32 instancesCount = renderable->getRenderableInstancesCount();
+		const U32 uniArrSize = uni->getSize();
+		const U32 size = std::min(instancesCount, uniArrSize);
 
 
 		// Set uniform
 		// Set uniform
 		//
 		//
@@ -64,12 +66,12 @@ struct SetupMaterialVariableVisitor
 				ANKI_ASSERT(trfs != nullptr);
 				ANKI_ASSERT(trfs != nullptr);
 				Array<Mat4, maxInstances> mvp;
 				Array<Mat4, maxInstances> mvp;
 
 
-				for(U i = 0; i < instancesCount; i++)
+				for(U i = 0; i < size; i++)
 				{
 				{
 					mvp[i] = vp * Mat4(trfs[i]);
 					mvp[i] = vp * Mat4(trfs[i]);
 				}
 				}
 
 
-				uniSet(*uni, &mvp[0], instancesCount);
+				uniSet(*uni, &mvp[0], size);
 			}
 			}
 			break;
 			break;
 		case BMV_MODEL_VIEW_MATRIX:
 		case BMV_MODEL_VIEW_MATRIX:
@@ -77,25 +79,25 @@ struct SetupMaterialVariableVisitor
 				ANKI_ASSERT(trfs != nullptr);
 				ANKI_ASSERT(trfs != nullptr);
 				Array<Mat4, maxInstances> mv;
 				Array<Mat4, maxInstances> mv;
 
 
-				for(U i = 0; i < instancesCount; i++)
+				for(U i = 0; i < size; i++)
 				{
 				{
 					mv[i] = v * Mat4(trfs[i]);
 					mv[i] = v * Mat4(trfs[i]);
 				}
 				}
 
 
-				uniSet(*uni, &mv[0], instancesCount);
+				uniSet(*uni, &mv[0], size);
 			}
 			}
 			break;
 			break;
 		case BMV_NORMAL_MATRIX:
 		case BMV_NORMAL_MATRIX:
 			{
 			{
 				Array<Mat3, maxInstances> normm;
 				Array<Mat3, maxInstances> normm;
 
 
-				for(U i = 0; i < instancesCount; i++)
+				for(U i = 0; i < size; i++)
 				{
 				{
 					Mat4 mv = v * Mat4(trfs[i]);
 					Mat4 mv = v * Mat4(trfs[i]);
 					normm[i] = mv.getRotationPart();
 					normm[i] = mv.getRotationPart();
 				}
 				}
 
 
-				uniSet(*uni, &normm[0], instancesCount);
+				uniSet(*uni, &normm[0], size);
 			}
 			}
 			break;
 			break;
 		case BMV_BLURRING:
 		case BMV_BLURRING:

+ 2 - 2
src/renderer/Ssao.cpp

@@ -136,7 +136,7 @@ void Ssao::run()
 	//
 	//
 	if(blit())
 	if(blit())
 	{
 	{
-		mpFai.bind();
+		mpFbo.bind();
 		GlStateSingleton::get().setViewport(0, 0, mpWidth, mpHeight);
 		GlStateSingleton::get().setViewport(0, 0, mpWidth, mpHeight);
 	}
 	}
 	else
 	else
@@ -182,7 +182,7 @@ void Ssao::run()
 		glBlitFramebuffer(
 		glBlitFramebuffer(
 			0, 0, mpWidth, mpHeight,
 			0, 0, mpWidth, mpHeight,
 			0, 0, bWidth, bHeight,
 			0, 0, bWidth, bHeight,
-			GL_COLOR_BUFFER_BIT, GL_NEAREST);
+			GL_COLOR_BUFFER_BIT, GL_LINEAR);
 
 
 		// Set the correct viewport
 		// Set the correct viewport
 		GlStateSingleton::get().setViewport(0, 0, bWidth, bHeight);
 		GlStateSingleton::get().setViewport(0, 0, bWidth, bHeight);

+ 1 - 1
testapp/Main.cpp

@@ -471,7 +471,7 @@ void initSubsystems(int argc, char* argv[])
 	initializer.pps.ssao.blurringIterationsNum = 4;
 	initializer.pps.ssao.blurringIterationsNum = 4;
 	initializer.pps.ssao.enabled = true;
 	initializer.pps.ssao.enabled = true;
 	initializer.pps.ssao.mainPassRenderingQuality = 0.3;
 	initializer.pps.ssao.mainPassRenderingQuality = 0.3;
-	initializer.pps.ssao.blurringRenderingQuality = 0.6;
+	initializer.pps.ssao.blurringRenderingQuality = 0.5;
 	initializer.pps.enabled = true;
 	initializer.pps.enabled = true;
 	initializer.pps.bl.enabled = true;
 	initializer.pps.bl.enabled = true;
 	initializer.pps.bl.blurringIterationsNum = 2;
 	initializer.pps.bl.blurringIterationsNum = 2;