2
0
Panagiotis Christopoulos Charitos 4 жил өмнө
parent
commit
f72752c739

+ 10 - 6
AnKi/Renderer/RtShadows.cpp

@@ -122,9 +122,11 @@ Error RtShadows::initInternal(const ConfigSet& cfg)
 			m_r->create2DRenderTargetInitInfo(m_r->getWidth() / 2, m_r->getHeight() / 2, Format::R32G32_SFLOAT,
 			m_r->create2DRenderTargetInitInfo(m_r->getWidth() / 2, m_r->getHeight() / 2, Format::R32G32_SFLOAT,
 											  TextureUsageBit::ALL_SAMPLED | TextureUsageBit::IMAGE_TRACE_RAYS_WRITE
 											  TextureUsageBit::ALL_SAMPLED | TextureUsageBit::IMAGE_TRACE_RAYS_WRITE
 												  | TextureUsageBit::IMAGE_COMPUTE_WRITE,
 												  | TextureUsageBit::IMAGE_COMPUTE_WRITE,
-											  "RtShadows Moments");
+											  "RtShadows Moments #1");
 		texinit.m_initialUsage = TextureUsageBit::SAMPLED_FRAGMENT;
 		texinit.m_initialUsage = TextureUsageBit::SAMPLED_FRAGMENT;
 		m_momentsRts[0] = m_r->createAndClearRenderTarget(texinit);
 		m_momentsRts[0] = m_r->createAndClearRenderTarget(texinit);
+
+		texinit.setName("RtShadows Moments #2");
 		m_momentsRts[1] = m_r->createAndClearRenderTarget(texinit);
 		m_momentsRts[1] = m_r->createAndClearRenderTarget(texinit);
 	}
 	}
 
 
@@ -135,9 +137,11 @@ Error RtShadows::initInternal(const ConfigSet& cfg)
 			m_r->create2DRenderTargetInitInfo(m_r->getWidth() / 2, m_r->getHeight() / 2, Format::R8_UNORM,
 			m_r->create2DRenderTargetInitInfo(m_r->getWidth() / 2, m_r->getHeight() / 2, Format::R8_UNORM,
 											  TextureUsageBit::ALL_SAMPLED | TextureUsageBit::IMAGE_TRACE_RAYS_WRITE
 											  TextureUsageBit::ALL_SAMPLED | TextureUsageBit::IMAGE_TRACE_RAYS_WRITE
 												  | TextureUsageBit::IMAGE_COMPUTE_WRITE,
 												  | TextureUsageBit::IMAGE_COMPUTE_WRITE,
-											  "RtShadows History Length");
+											  "RtShadows History Length #1");
 		texinit.m_initialUsage = TextureUsageBit::SAMPLED_FRAGMENT;
 		texinit.m_initialUsage = TextureUsageBit::SAMPLED_FRAGMENT;
 		m_historyLengthRts[0] = m_r->createAndClearRenderTarget(texinit);
 		m_historyLengthRts[0] = m_r->createAndClearRenderTarget(texinit);
+
+		texinit.setName("RtShadows History Length #2");
 		m_historyLengthRts[1] = m_r->createAndClearRenderTarget(texinit);
 		m_historyLengthRts[1] = m_r->createAndClearRenderTarget(texinit);
 	}
 	}
 
 
@@ -433,10 +437,10 @@ void RtShadows::run(RenderPassWorkContext& rgraphCtx)
 	}
 	}
 	else
 	else
 	{
 	{
-		rgraphCtx.bindColorTexture(0, 16, m_runCtx.m_prevMomentsRt);
-		rgraphCtx.bindImage(0, 17, m_runCtx.m_currentMomentsRt);
-		rgraphCtx.bindColorTexture(0, 18, m_runCtx.m_prevHistoryLengthRt);
-		rgraphCtx.bindImage(0, 19, m_runCtx.m_currentHistoryLengthRt);
+		rgraphCtx.bindColorTexture(0, 16, m_runCtx.m_prevHistoryLengthRt);
+		rgraphCtx.bindImage(0, 17, m_runCtx.m_currentHistoryLengthRt);
+		rgraphCtx.bindColorTexture(0, 18, m_runCtx.m_prevMomentsRt);
+		rgraphCtx.bindImage(0, 19, m_runCtx.m_currentMomentsRt);
 	}
 	}
 
 
 	cmdb->bindAllBindless(1);
 	cmdb->bindAllBindless(1);

+ 6 - 6
AnKi/Shaders/RtShadowsRayGen.ankiprog

@@ -31,10 +31,10 @@ layout(set = 0, binding = 13) uniform texture2D u_motionVectorsRejectionRt;
 layout(set = 0, binding = 14) uniform texture2D u_normalRt;
 layout(set = 0, binding = 14) uniform texture2D u_normalRt;
 layout(set = 0, binding = 15) uniform accelerationStructureEXT u_tlas;
 layout(set = 0, binding = 15) uniform accelerationStructureEXT u_tlas;
 #if SVGF
 #if SVGF
-layout(set = 0, binding = 16) uniform texture2D u_prevMomentsTex;
-layout(set = 0, binding = 17) uniform image2D u_momentsImage;
-layout(set = 0, binding = 18) uniform texture2D u_prevHistoryLengthTex;
-layout(set = 0, binding = 19) uniform image2D u_historyLengthImage;
+layout(set = 0, binding = 16) uniform texture2D u_prevHistoryLengthTex;
+layout(set = 0, binding = 17) uniform image2D u_historyLengthImage;
+layout(set = 0, binding = 18) uniform texture2D u_prevMomentsTex;
+layout(set = 0, binding = 19) uniform image2D u_momentsImage;
 #endif
 #endif
 
 
 ANKI_BINDLESS_SET(1); // Used by the hit shaders
 ANKI_BINDLESS_SET(1); // Used by the hit shaders
@@ -185,7 +185,7 @@ void main()
 	moments.y = moments.x * moments.x;
 	moments.y = moments.x * moments.x;
 
 
 	// Blend the moments
 	// Blend the moments
-	const Vec2 prevMoments = textureLod(u_prevMomentsTex, u_nearestAnyClampSampler, historyUv, 0.0).xy;
+	const Vec2 prevMoments = textureLod(u_prevMomentsTex, u_linearAnyClampSampler, historyUv, 0.0).xy;
 	moments = mix(prevMoments, moments, blendFactor);
 	moments = mix(prevMoments, moments, blendFactor);
 
 
 	// Store the moments
 	// Store the moments
@@ -202,7 +202,7 @@ void main()
 	{
 	{
 		// Sample seems stable, increment it's temporal history
 		// Sample seems stable, increment it's temporal history
 
 
-		historyLength = textureLod(u_prevHistoryLengthTex, u_nearestAnyClampSampler, historyUv, 0.0).r;
+		historyLength = textureLod(u_prevHistoryLengthTex, u_linearAnyClampSampler, historyUv, 0.0).r;
 		historyLength += 1.0 / RT_SHADOWS_MAX_HISTORY_LENGTH;
 		historyLength += 1.0 / RT_SHADOWS_MAX_HISTORY_LENGTH;
 	}
 	}
 
 

+ 3 - 3
AnKi/Shaders/RtShadowsSvgfVariance.ankiprog

@@ -57,7 +57,7 @@ void main()
 		return;
 		return;
 	}
 	}
 
 
-	const F32 historyLength = textureLod(u_historyLengthTex, u_nearestAnyClampSampler, uv, 0.0).r;
+	const F32 historyLength = textureLod(u_historyLengthTex, u_linearAnyClampSampler, uv, 0.0).r;
 
 
 	UVec4 outPackedShadowLayers;
 	UVec4 outPackedShadowLayers;
 	F32 outVariance;
 	F32 outVariance;
@@ -104,7 +104,7 @@ void main()
 				const F32 w = calculateBilateralWeight(crnt, ref, config);
 				const F32 w = calculateBilateralWeight(crnt, ref, config);
 
 
 				// Sum
 				// Sum
-				const Vec2 moments = textureLod(u_momentsTex, u_nearestAnyClampSampler, sampleUv, 0.0).xy;
+				const Vec2 moments = textureLod(u_momentsTex, u_linearAnyClampSampler, sampleUv, 0.0).xy;
 				sumMoments += moments * w;
 				sumMoments += moments * w;
 
 
 				F32 shadowLayers[MAX_RT_SHADOW_LAYERS];
 				F32 shadowLayers[MAX_RT_SHADOW_LAYERS];
@@ -139,7 +139,7 @@ void main()
 
 
 		outPackedShadowLayers = textureLod(u_shadowsTex, u_nearestAnyClampSampler, uv, 0.0);
 		outPackedShadowLayers = textureLod(u_shadowsTex, u_nearestAnyClampSampler, uv, 0.0);
 
 
-		const Vec2 moments = textureLod(u_momentsTex, u_nearestAnyClampSampler, uv, 0.0).xy;
+		const Vec2 moments = textureLod(u_momentsTex, u_linearAnyClampSampler, uv, 0.0).xy;
 		outVariance = max(0.0, moments.y - moments.x * moments.x);
 		outVariance = max(0.0, moments.y - moments.x * moments.x);
 	}
 	}