Browse Source

Move SceneDebug to the new format

Panagiotis Christopoulos Charitos 5 years ago
parent
commit
ef06389f76
3 changed files with 23 additions and 26 deletions
  1. 1 1
      shaders/SceneDebug.ankiprog
  2. 20 23
      src/anki/scene/DebugDrawer.cpp
  3. 2 2
      src/anki/scene/DebugDrawer.h

+ 1 - 1
shaders/SceneDebug.glslp → shaders/SceneDebug.ankiprog

@@ -6,7 +6,7 @@
 #pragma anki mutator COLOR_TEXTURE 0 1
 #pragma anki mutator DITHERED_DEPTH_TEST 0 1
 
-#pragma anki input const U32 INSTANCE_COUNT
+ANKI_SPECIALIZATION_CONSTANT_U32(INSTANCE_COUNT, 0, 1);
 
 #pragma anki start vert
 #include <shaders/Common.glsl>

+ 20 - 23
src/anki/scene/DebugDrawer.cpp

@@ -18,7 +18,7 @@ Error DebugDrawer::init(ResourceManager* rsrcManager)
 	ANKI_ASSERT(rsrcManager);
 
 	// Create the prog and shaders
-	ANKI_CHECK(rsrcManager->loadResource("shaders/SceneDebug.glslp", m_prog));
+	ANKI_CHECK(rsrcManager->loadResource("shaders/SceneDebug.ankiprog", m_prog));
 
 	return Error::NONE;
 }
@@ -39,14 +39,13 @@ void DebugDrawer::flush()
 
 	// Bind program
 	{
-		ShaderProgramResourceMutationInitList<2> mutators(m_prog);
-		mutators.add("COLOR_TEXTURE", 0);
-		mutators.add(
+		ShaderProgramResourceVariantInitInfo2 variantInitInfo(m_prog);
+		variantInitInfo.addMutation("COLOR_TEXTURE", 0);
+		variantInitInfo.addMutation(
 			"DITHERED_DEPTH_TEST", m_ctx->m_debugDrawFlags.get(RenderQueueDebugDrawFlag::DITHERED_DEPTH_TEST_ON));
-		ShaderProgramResourceConstantValueInitList<1> consts(m_prog);
-		consts.add("INSTANCE_COUNT", 1u);
-		const ShaderProgramResourceVariant* variant;
-		m_prog->getOrCreateVariant(mutators.get(), consts.get(), variant);
+		variantInitInfo.addConstant("INSTANCE_COUNT", 1u);
+		const ShaderProgramResourceVariant2* variant;
+		m_prog->getOrCreateVariant(variantInitInfo, variant);
 		cmdb->bindShaderProgram(variant->getProgram());
 	}
 
@@ -295,7 +294,7 @@ void allocateAndPopulateDebugBox(StagingGpuMemoryManager& stagingGpuAllocator,
 
 Error DebugDrawer2::init(ResourceManager* rsrcManager)
 {
-	return rsrcManager->loadResource("shaders/SceneDebug.glslp", m_prog);
+	return rsrcManager->loadResource("shaders/SceneDebug.ankiprog", m_prog);
 }
 
 void DebugDrawer2::drawCubes(ConstWeakArray<Mat4> mvps,
@@ -365,13 +364,12 @@ void DebugDrawer2::drawCubes(ConstWeakArray<Mat4> mvps,
 	*pcolor = color;
 
 	// Setup state
-	ShaderProgramResourceMutationInitList<2> mutators(m_prog);
-	mutators.add("COLOR_TEXTURE", 0);
-	mutators.add("DITHERED_DEPTH_TEST", U32(ditherFailedDepth != 0));
-	ShaderProgramResourceConstantValueInitList<1> consts(m_prog);
-	consts.add("INSTANCE_COUNT", mvps.getSize());
-	const ShaderProgramResourceVariant* variant;
-	m_prog->getOrCreateVariant(mutators.get(), consts.get(), variant);
+	ShaderProgramResourceVariantInitInfo2 variantInitInfo(m_prog);
+	variantInitInfo.addMutation("COLOR_TEXTURE", 0);
+	variantInitInfo.addMutation("DITHERED_DEPTH_TEST", U32(ditherFailedDepth != 0));
+	variantInitInfo.addConstant("INSTANCE_COUNT", mvps.getSize());
+	const ShaderProgramResourceVariant2* variant;
+	m_prog->getOrCreateVariant(variantInitInfo, variant);
 	cmdb->bindShaderProgram(variant->getProgram());
 
 	cmdb->setVertexAttribute(0, 0, Format::R32G32B32_SFLOAT, 0);
@@ -440,13 +438,12 @@ void DebugDrawer2::drawBillboardTextures(const Mat4& projMat,
 	*pcolor = color;
 
 	// Setup state
-	ShaderProgramResourceMutationInitList<2> mutators(m_prog);
-	mutators.add("COLOR_TEXTURE", 1);
-	mutators.add("DITHERED_DEPTH_TEST", U32(ditherFailedDepth != 0));
-	ShaderProgramResourceConstantValueInitList<1> consts(m_prog);
-	consts.add("INSTANCE_COUNT", positions.getSize());
-	const ShaderProgramResourceVariant* variant;
-	m_prog->getOrCreateVariant(mutators.get(), consts.get(), variant);
+	ShaderProgramResourceVariantInitInfo2 variantInitInfo(m_prog);
+	variantInitInfo.addMutation("COLOR_TEXTURE", 1);
+	variantInitInfo.addMutation("DITHERED_DEPTH_TEST", U32(ditherFailedDepth != 0));
+	variantInitInfo.addConstant("INSTANCE_COUNT", positions.getSize());
+	const ShaderProgramResourceVariant2* variant;
+	m_prog->getOrCreateVariant(variantInitInfo, variant);
 	cmdb->bindShaderProgram(variant->getProgram());
 
 	cmdb->setVertexAttribute(0, 0, Format::R32G32B32_SFLOAT, 0);

+ 2 - 2
src/anki/scene/DebugDrawer.h

@@ -86,7 +86,7 @@ public:
 	}
 
 private:
-	ShaderProgramResourcePtr m_prog;
+	ShaderProgramResource2Ptr m_prog;
 
 	RenderQueueDrawContext* m_ctx = nullptr;
 
@@ -188,7 +188,7 @@ public:
 	}
 
 private:
-	ShaderProgramResourcePtr m_prog;
+	ShaderProgramResource2Ptr m_prog;
 };
 /// @}