Browse Source

Convert to a mask

Panagiotis Christopoulos Charitos 2 years ago
parent
commit
13c8c24541

+ 2 - 2
AnKi/Renderer/HzbHelper.cpp

@@ -49,13 +49,13 @@ Error HzbHelper::init()
 
 		ShaderProgramResourceVariantInitInfo variantInit(m_genPyramidProg);
 		variantInit.addMutation("REDUCTION_TYPE", 1);
-		variantInit.addMutation("REVERSE_1_TO_0", 0);
+		variantInit.addMutation("GENERATE_SHADOW_MASK", 0);
 		variantInit.addMutation("MIN_MAX_SAMPLER", m_maxSampler.isCreated());
 		const ShaderProgramResourceVariant* variant;
 		m_genPyramidProg->getOrCreateVariant(variantInit, variant);
 		m_genPyramidMainCameraGrProg.reset(&variant->getProgram());
 
-		variantInit.addMutation("REVERSE_1_TO_0", 1);
+		variantInit.addMutation("GENERATE_SHADOW_MASK", 1);
 		variantInit.addMutation("MIN_MAX_SAMPLER", 0);
 		m_genPyramidProg->getOrCreateVariant(variantInit, variant);
 		m_genPyramidShadowGrProg.reset(&variant->getProgram());

+ 1 - 1
AnKi/Renderer/ShadowMapping.cpp

@@ -74,7 +74,7 @@ Error ShadowMapping::initInternal()
 		UVec2 size(min(cascadeResolution, 1024u));
 		size /= 2;
 
-		m_cascadeHzbRtDescrs[i] = getRenderer().create2DRenderTargetDescription(size.x(), size.y(), Format::kR16_Sfloat, name);
+		m_cascadeHzbRtDescrs[i] = getRenderer().create2DRenderTargetDescription(size.x(), size.y(), Format::kR8_Unorm, name);
 		m_cascadeHzbRtDescrs[i].m_mipmapCount = U8(computeMaxMipmapCount2d(m_cascadeHzbRtDescrs[i].m_width, m_cascadeHzbRtDescrs[i].m_height));
 		m_cascadeHzbRtDescrs[i].bake();
 	}

+ 5 - 3
AnKi/Shaders/HzbGenPyramid.ankiprog

@@ -5,7 +5,9 @@
 
 #pragma anki mutator REDUCTION_TYPE 0 1 // 0: min 1: max
 #pragma anki mutator MIN_MAX_SAMPLER 0 1
-#pragma anki mutator REVERSE_1_TO_0 0 1 // Used in shadows where we want to move the far (1.0) close to the camera to cull
+#pragma anki mutator GENERATE_SHADOW_MASK 0 1 // Used in shadows where we want to move the far (1.0) close to the camera to cull
+
+#pragma anki skip_mutation MIN_MAX_SAMPLER 1 GENERATE_SHADOW_MASK 1
 
 #pragma anki start comp
 #include <AnKi/Shaders/Common.hlsl>
@@ -47,10 +49,10 @@ AF4 SpdLoadSourceImage(AU2 p, AU1 slice)
 #else
 	Vec4 samples = g_srcTex.GatherRed(g_linearAnyClampSampler, uv);
 
-#	if REVERSE_1_TO_0
+#	if GENERATE_SHADOW_MASK
 	[unroll] for(U32 i = 0; i < 4; ++i)
 	{
-		samples[i] = (samples[i] == 1.0f) ? 0.0f : samples[i];
+		samples[i] = (samples[i] == 1.0f) ? 0.0f : 1.0f;
 	}
 #	endif