From 07fb73099da87bc027822b69562d3d192eb3f6e6 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Sat, 30 May 2026 00:17:44 +0100 Subject: [PATCH] Add reservoir higher-work-grid reference metrics --- .../fensalir-native-domain-reservoirs.pdf | Bin 886964 -> 887120 bytes .../fensalir-native-domain-reservoirs.tex | 4 +++ docs/papers/fensalir-pipeline.pdf | Bin 399652 -> 399804 bytes docs/papers/fensalir-pipeline.tex | 4 ++- docs/perfect-fensalir-machine-roadmap.md | 9 ++++++ scripts/capture-reservoir-mode-sequence.ps1 | 11 ++++++-- scripts/measure-reservoir-sequence.ps1 | 26 ++++++++++++++++-- state/evidence.jsonl | 1 + state/map.yaml | 8 ++++-- state/scratch.md | 18 ++++++++++-- 10 files changed, 71 insertions(+), 10 deletions(-) diff --git a/docs/papers/fensalir-native-domain-reservoirs.pdf b/docs/papers/fensalir-native-domain-reservoirs.pdf index dbf36bb48b203b4bb98c543e0f92deed78c00b2e..5bb08d78e5d07f0c287659f6a6e33ad282e72075 100644 GIT binary patch delta 6984 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 b*xkd{&BNR6;2~jP7H1K{N=mxh^o0KpbCEg( delta 6853 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 delta 9770 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 diff --git a/docs/papers/fensalir-pipeline.tex b/docs/papers/fensalir-pipeline.tex index 7138865..e7e03d4 100644 --- a/docs/papers/fensalir-pipeline.tex +++ b/docs/papers/fensalir-pipeline.tex @@ -672,7 +672,9 @@ The sequence harness can now prefer a temporal-owner disocclusion mask over the broad rejection debug view. That mask is derived from the reservoir rejection codes for previous history outside the frame, closer previous history, and support loss; it localizes where an eventual high-budget reference score should -look first. +look first. It can also capture a same-time native-domain reference at a larger +reservoir work-grid scale, producing reference-error rows without introducing a +native-resolution intermediate reservoir. The system has cut the false ``nearest-travel-minus-coverage'' priority owner and the side-cache temptation. diff --git a/docs/perfect-fensalir-machine-roadmap.md b/docs/perfect-fensalir-machine-roadmap.md index 5cd30e4..3005d7e 100644 --- a/docs/perfect-fensalir-machine-roadmap.md +++ b/docs/perfect-fensalir-machine-roadmap.md @@ -548,6 +548,15 @@ Work packet: Smoke run `reservoir-sequence-20260530-000151-*` captured native final plus disocclusion at 320x180; the disocclusion mask covered 3.1098% of frame pixels and produced a masked temporal-native delta row. +12. Partial: add same-time higher-work-grid reference scoring. The sequence + capture script accepts `-ReferenceFieldReservoirScale`; reference captures + use native-domain mode at that larger scale and are labeled `reference` in + the manifest. The measurer reports `reference-error-*` rows against matching + ready-frame counts and uses disocclusion masks when present. Smoke run + `reservoir-sequence-20260530-001046-*` compared native scale 0.5 against + reference scale 0.75 at 320x180, ready frame 2, final plus disocclusion. + This is a higher-budget work-grid reference, not a native-resolution escape + hatch. Required verification: diff --git a/scripts/capture-reservoir-mode-sequence.ps1 b/scripts/capture-reservoir-mode-sequence.ps1 index be585a6..a546afe 100644 --- a/scripts/capture-reservoir-mode-sequence.ps1 +++ b/scripts/capture-reservoir-mode-sequence.ps1 @@ -7,6 +7,7 @@ param( [ValidateSet("native", "baseline", "both")] [string]$FieldReservoirMode = "both", [double]$FieldReservoirScale = 0.5, + [double]$ReferenceFieldReservoirScale = 0.0, [int[]]$RenderDebugModes = @(0, 13), [int]$RetainSlots = 4, [int]$TimeoutSeconds = 120 @@ -50,7 +51,10 @@ if ($LASTEXITCODE -ne 0) { $exePath = Join-Path $slotPath "Aquarium.Engine.exe" $clientAssembly = Join-Path $slotPath "Aquarium.Fensalir.dll" -$modes = if ($FieldReservoirMode -eq "both") { @("native", "baseline") } else { @($FieldReservoirMode) } +$modes = @(if ($FieldReservoirMode -eq "both") { @("native", "baseline") } else { @($FieldReservoirMode) }) +if ($ReferenceFieldReservoirScale -gt 0.0) { + $modes += @("reference") +} $captures = [System.Collections.Generic.List[object]]::new() function DebugSuffix { @@ -81,6 +85,7 @@ function DebugSuffix { foreach ($mode in $modes) { foreach ($readyFrame in $ReadyFrames) { foreach ($debugMode in $RenderDebugModes) { + $captureScale = if ($mode -eq "reference") { $ReferenceFieldReservoirScale } else { $FieldReservoirScale } $suffix = DebugSuffix -Mode $debugMode $outputPath = Join-Path $OutputDirectory ("reservoir-sequence-$Stamp-$mode-f{0:D4}-$suffix.png" -f $readyFrame) $arguments = @( @@ -91,7 +96,7 @@ foreach ($mode in $modes) { "--cache", $cachePath, "--shader-source", (Join-Path $slotPath "Render\Shaders\D3D12HeightField.hlsl"), "--capture-frame", $outputPath, - "--field-reservoir-scale", $FieldReservoirScale + "--field-reservoir-scale", $captureScale ) if ($mode -eq "baseline") { $arguments += @("--field-reservoir-mode", "baseline") @@ -106,6 +111,7 @@ foreach ($mode in $modes) { Mode = $mode ReadyFrames = $readyFrame RenderDebugMode = $debugMode + ReservoirScale = $captureScale Suffix = $suffix Path = $outputPath }) @@ -139,6 +145,7 @@ foreach ($mode in $modes) { Mode = $mode ReadyFrames = $readyFrame RenderDebugMode = $debugMode + ReservoirScale = $captureScale Suffix = $suffix Path = $outputPath }) diff --git a/scripts/measure-reservoir-sequence.ps1 b/scripts/measure-reservoir-sequence.ps1 index bb6c85e..2a15897 100644 --- a/scripts/measure-reservoir-sequence.ps1 +++ b/scripts/measure-reservoir-sequence.ps1 @@ -164,6 +164,9 @@ foreach ($group in $groups) { $baselineFrames = @($group.Group | Where-Object { $_.Mode -eq "baseline" } | Sort-Object { [int]$_.ReadyFrames }) + $referenceFrames = @($group.Group | + Where-Object { $_.Mode -eq "reference" } | + Sort-Object { [int]$_.ReadyFrames }) foreach ($native in $nativeFrames) { $baseline = $baselineFrames | Where-Object { [int]$_.ReadyFrames -eq [int]$native.ReadyFrames } | Select-Object -First 1 @@ -179,7 +182,26 @@ foreach ($group in $groups) { } } - foreach ($modeFrames in @($nativeFrames, $baselineFrames)) { + foreach ($reference in $referenceFrames) { + foreach ($candidateFrames in @($nativeFrames, $baselineFrames)) { + $candidateFrames = @($candidateFrames) + $candidate = $candidateFrames | Where-Object { [int]$_.ReadyFrames -eq [int]$reference.ReadyFrames } | Select-Object -First 1 + if ($null -eq $candidate) { + continue + } + + $results.Add((Measure-ImageDelta -APath $candidate.Path -BPath $reference.Path -Label "$suffix reference-error-$($candidate.Mode) f$($candidate.ReadyFrames)")) + if ($suffix -eq "final") { + $candidateMask = Get-PreferredMaskPath -Mode $candidate.Mode -ReadyFrames $candidate.ReadyFrames + $referenceMask = Get-PreferredMaskPath -Mode "reference" -ReadyFrames $reference.ReadyFrames + if (-not [string]::IsNullOrWhiteSpace($candidateMask) -or -not [string]::IsNullOrWhiteSpace($referenceMask)) { + $results.Add((Measure-ImageDelta -APath $candidate.Path -BPath $reference.Path -Label "final masked-reference-error-$($candidate.Mode) f$($candidate.ReadyFrames)" -AMaskPath $candidateMask -BMaskPath $referenceMask)) + } + } + } + } + + foreach ($modeFrames in @($nativeFrames, $baselineFrames, $referenceFrames)) { $modeFrames = @($modeFrames) for ($index = 1; $index -lt $modeFrames.Count; $index++) { $previous = $modeFrames[$index - 1] @@ -216,7 +238,7 @@ foreach ($result in $results) { $result.MaxChannelDelta)) } $lines.Add("") -$lines.Add("These are sequence probes, not a final ghosting score. Mode deltas show native/baseline disagreement at each sampled time. Temporal deltas show frame-to-frame output movement per mode. Masked rows prefer disocclusion-debug captures when present, otherwise rejection-debug captures; a high-budget reference is still needed before claiming quality.") +$lines.Add("These are sequence probes, not a final ghosting score. Mode deltas show native/baseline disagreement at each sampled time. Reference-error rows compare a candidate mode against a higher-work-grid native reference at the same ready-frame count when reference captures are present. Temporal deltas show frame-to-frame output movement per mode. Masked rows prefer disocclusion-debug captures when present, otherwise rejection-debug captures.") Set-Content -LiteralPath $OutputPath -Value $lines -Encoding UTF8 Write-Host "Reservoir sequence metrics:" diff --git a/state/evidence.jsonl b/state/evidence.jsonl index 83287eb..1610611 100644 --- a/state/evidence.jsonl +++ b/state/evidence.jsonl @@ -301,3 +301,4 @@ {"timestamp":"2026-05-30T00:25:00+01:00","topic":"reservoir-sequence-probe","lesson":"Reservoir comparison now has a sequence-level probe instead of only single-frame deltas. scripts/capture-reservoir-mode-sequence.ps1 builds one disposable slot and captures native/baseline frames across ready-frame counts, debug modes, and reservoir work-grid scale; scripts/measure-reservoir-sequence.ps1 reports per-frame mode disagreement plus per-mode frame-to-frame temporal deltas. The first 640x360 final-only smoke sequence at reservoir-sequence-20260529-234414-* proved the harness works, but the metric remains a probe until disocclusion/rejection masks or high-budget references turn it into a real ghosting/leakage score.","files":["scripts/capture-reservoir-mode-sequence.ps1","scripts/measure-reservoir-sequence.ps1","docs/perfect-fensalir-machine-roadmap.md","state/scratch.md"],"source":"artifacts/fensalir-captures/reservoir-sequence-20260529-234414-*"} {"timestamp":"2026-05-30T00:40:00+01:00","topic":"reservoir-rejection-masked-sequence-probe","lesson":"The reservoir sequence harness is now resumable and mask-aware. Existing PNGs are skipped and still recorded into the manifest, which lets interrupted sequence captures continue instead of throwing away completed frames. When rejection-debug captures are present, scripts/measure-reservoir-sequence.ps1 reports masked native/baseline and temporal deltas over the union of rejection-mask pixels. The 320x180 smoke set reservoir-sequence-20260529-235031-* covered about 41% of frame pixels with the rejection mask and produced masked rows, proving the pressure signal works; it is still not a final ghosting score without a high-budget reference or explicit disocclusion mask.","files":["scripts/capture-reservoir-mode-sequence.ps1","scripts/measure-reservoir-sequence.ps1","docs/perfect-fensalir-machine-roadmap.md","state/scratch.md"],"source":"artifacts/fensalir-captures/reservoir-sequence-20260529-235031-*"} {"timestamp":"2026-05-30T01:05:00+01:00","topic":"reservoir-disocclusion-mask","lesson":"Temporal disocclusion is now exposed by the reservoir owner instead of inferred from broad rejection color. Debug mode 19 maps temporal rejection codes for previous UV loss, previous-closer history, and support loss into a focused disocclusion mask, and the sequence measurer prefers disocclusion masks over rejection masks when both exist. The native-only 320x180 smoke set reservoir-sequence-20260530-000151-* produced a 3.1098% frame mask and a masked temporal-native delta row, proving the mask path is live. The remaining proof gap is a high-budget reference or repeated-sample reference mode so masked deltas can become actual error scores.","files":["src/Aquarium.Engine.Contracts/GraphicsSettings.cs","src/Aquarium.Engine/Render/D3D12Renderer.cs","src/Aquarium.Engine/Render/Shaders/D3D12Post.hlsl","scripts/capture-reservoir-mode-sequence.ps1","scripts/measure-reservoir-sequence.ps1","tests/Aquarium.Engine.Tests/FieldReservoirAbiTests.cs","docs/perfect-fensalir-machine-roadmap.md","state/map.yaml","state/scratch.md"],"source":"artifacts/fensalir-captures/reservoir-sequence-20260530-000151-*"} +{"timestamp":"2026-05-30T01:25:00+01:00","topic":"reservoir-higher-work-grid-reference","lesson":"The sequence harness can now score candidates against a same-time higher-work-grid native-domain reference without violating the no-native-reservoir-buffer rule. capture-reservoir-mode-sequence.ps1 accepts -ReferenceFieldReservoirScale, captures reference rows in native-domain mode at that larger scale, and labels them reference in the manifest. measure-reservoir-sequence.ps1 emits reference-error rows and masked reference-error rows using disocclusion/rejection masks when present. The 320x180 smoke set reservoir-sequence-20260530-001046-* compared native scale 0.5 against reference scale 0.75 at the same ready-frame count; masked reference-error-native covered 3.0468% of frame pixels and changed 42.0368%. The next architectural step is adaptive update/sample budget policy driven by these reference-error pressure signals.","files":["scripts/capture-reservoir-mode-sequence.ps1","scripts/measure-reservoir-sequence.ps1","docs/perfect-fensalir-machine-roadmap.md","state/map.yaml","state/scratch.md"],"source":"artifacts/fensalir-captures/reservoir-sequence-20260530-001046-*"} diff --git a/state/map.yaml b/state/map.yaml index b05b0e6..f2d4d0f 100644 --- a/state/map.yaml +++ b/state/map.yaml @@ -158,8 +158,12 @@ next_actions: temporal-owner disocclusion mask from previous UV loss, previous-closer history, and support loss; the sequence measurer prefers it over broad rejection masks, and `reservoir-sequence-20260530-000151-*` proves the - narrower mask path. The next cut is adding a high-budget-reference - leakage/ghosting score plus future exact producer SDF replay. + narrower mask path. The sequence harness can also capture a same-time + native-domain reference at a higher reservoir work-grid scale through + `-ReferenceFieldReservoirScale`; `reservoir-sequence-20260530-001046-*` + proves reference-error rows from scale 0.5 against scale 0.75. The next cut + is using those reference-error rows to drive adaptive sampling/update budget + policy plus future exact producer SDF replay. - Build the planetary flow organ in staged cuts: provenance manifest, static relief and reanalysis cube-sphere bake pipeline, stochastic advection contracts, synthetic runtime slice, ERA5/OSCAR baseline learning, then diff --git a/state/scratch.md b/state/scratch.md index 637ec10..fb25531 100644 --- a/state/scratch.md +++ b/state/scratch.md @@ -45,6 +45,18 @@ than expected travel, and support-overlap loss. The sequence measurer prefers ready frames 2 and 3, final plus disocclusion debug, produced a mask covering 3.1098% of the frame and a masked temporal-native delta of 46.8867%. +Higher-work-grid reference: +`scripts/capture-reservoir-mode-sequence.ps1` accepts +`-ReferenceFieldReservoirScale`, captures native-domain reference frames at that +larger scale, and labels them `reference` in the manifest. +`scripts/measure-reservoir-sequence.ps1` reports `reference-error-*` rows +against matching ready-frame counts, using disocclusion masks when present. +Smoke `artifacts/fensalir-captures/reservoir-sequence-20260530-001046-*` +compared native scale 0.5 against reference scale 0.75 at 320x180, ready frame +2, final plus disocclusion. Whole-frame reference-error-native changed 53.9240%; +masked reference-error-native covered 3.0468% of frame pixels and changed +42.0368%. + ## Hot Lesson Area ReSTIR confirms that reuse over an area domain is invalid unless the @@ -76,9 +88,9 @@ cap remain intentionally non-authoritative. Follow `docs/perfect-fensalir-machine-roadmap.md` Phase 1: -1. Add a high-budget reference capture mode or repeated-sample reference path - so the disocclusion-masked sequence metric can score error instead of only - motion/disagreement. +1. Use the same-time higher-work-grid reference rows to drive an adaptive + sampling/update budget policy. Do not add native-resolution reservoir + intermediates. 2. Add exact SDF producer replay only when client SDF distance functions have a shared replay include or manifest instead of duplicating shader policy in post.