From a15facecaac5aedc45db233f730aa9be1950de32 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Tue, 2 Jun 2026 17:24:25 +0100 Subject: [PATCH] Gate reservoir history presentation --- src/Aquarium.Engine/Render/D3D12Renderer.cs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/Aquarium.Engine/Render/D3D12Renderer.cs b/src/Aquarium.Engine/Render/D3D12Renderer.cs index 6bc700e..d72ed5e 100644 --- a/src/Aquarium.Engine/Render/D3D12Renderer.cs +++ b/src/Aquarium.Engine/Render/D3D12Renderer.cs @@ -3046,13 +3046,24 @@ public sealed class D3D12Renderer : IAquariumRenderer } ResolveFieldReservoir(context.CommandList, frameResources); - var historyUpdated = UpdateReservoirHistory(context.CommandList, frameResources); + var historyUpdated = ShouldUseReservoirHistoryPresentation() + && UpdateReservoirHistory(context.CommandList, frameResources); var presentationSourceTarget = historyUpdated ? reservoirResolvedRenderTarget : sceneRenderTarget; var presentationSourceDescriptor = historyUpdated ? frameResources.ReservoirResolvedDescriptor : frameResources.SceneDescriptor; RenderBloom(context.CommandList, frameResources, presentationSourceTarget, presentationSourceDescriptor); PresentBackBuffer(context, frameResources, presentationSourceTarget, presentationSourceDescriptor); } + private bool ShouldUseReservoirHistoryPresentation() + { + return activeFractalReservoirField.HasInput || + activeBufferFieldFrame.UseReservoirLowering || + activeTubeFieldDrawIndexCount > 0 || + temporalGaussianCount > 0 || + gpuFusionSeedCount > 0 || + gpuFusionPointCount > 0; + } + private void RenderSplineSurfaceClaims(ID3D12GraphicsCommandList activeCommandList, FrameResources frameResources) { if (!activeSplineFrame.HasInput || splinePipelineState is null)