Files
Faset_Engine/docs/validation/p3-temporal-2026-09-24/matrix/integrated-ed523c6

Final integrated temporal capture at ed523c6

This is the P1+P3 integration capture from clean source revision ed523c61c106b8e19614e4d56f0b5d39b8392478, after merging the optional history-pixel diagnostics shader and its window-resize fix, plus the transactional visibility-switch rollback and async build-signature fixes. The Linux Debug capture used the physical NVIDIA GeForce RTX 2080 Ti with proprietary driver 595.84. The provenance manifest records the exact capture executable SHA-256 and all 31 loaded SPIR-V/reflection artifact hashes.

The frame CSV links 1,386 lossless source PNGs across Direct, GPU frustum and GPU occlusion, Off/jittered-current/TAA/upscale-current/Upscale, 2× spatial sources, motion, eight post-open door frames, cut, teleport, projection/view switch, resize, transparency and UI. Every row reports validation_enabled=1, validation_errors=0, and the requested visibility and temporal paths actually executed. Output was 160×120 except the 319×241 resize and 320×240 spatial source. The metrics, wire reference sheet and door trail sheet are computed from these images.

All 1,388 PNG files (the 1,386 frames plus two sheets) are byte-identical to the earlier branch matrix under the same relative names. This checks that the integrated diagnostic shader and failure-path fixes, with pixel counting disabled, did not alter these fixtures. The metrics JSON differs only in source revision; the frame CSV contains separate timings. In the final matrix, both GPU visibility paths matched Direct exactly on all 430 comparable ordinary frames per path. The static wire's frame variation fell 7.2% with TAA and 6.1% with Upscale versus their same-jitter current-only controls. The 2× box-filter spatial reference still had lower error than either temporal mode in this fixture; this is no claim of overall quality superiority. In the opening-door sequence, old red foreground never returned; the count of edge pixels differing by >8 from the unobstructed temporal reference went from 121 to 17, then reached zero by the sixth open frame for TAA, and from 176 to 28, reaching zero by the fifth open frame for Upscale. Cut, teleport, changed projection/view and resize matched current-only immediately in the fixed reset ROI.

The separate 720p CSV has 30 measured frames per Off, TAA and 0.67 Upscale after ten warm-up frames for each mode, with rotating mode order. Every one of its 90 rows reports active validation and zero errors. It is a sparse one-cube/one-wire Direct fixture with full-frame synchronous capture in Debug, not a quiet Release gameplay benchmark. p95 below uses linear interpolation at rank (n − 1) × 0.95:

Mode Full GPU p50 / p95 Resolve p50 / p95 Renderer CPU p50 / p95 Explicit Vulkan allocation
Off 0.558 / 0.581 ms — 2.109 / 2.437 ms 43.02 MiB
TAA 0.676 / 0.697 ms 0.084 / 0.101 ms 2.472 / 2.770 ms 76.77 MiB
Upscale 0.67 0.675 / 0.702 ms 0.083 / 0.101 ms 2.475 / 2.836 ms 68.52 MiB

The diagnostic counter toggle was off, so no per-pixel counter readback was included in these timings. The 0.67 mode did not improve the whole GPU time on this sparse fixture. The parent P3 record explains the quality limitations and the earlier, separately timed 720p checkpoint.

To reproduce from this source revision, install the pinned analyzer dependencies into a Python environment, configure the Linux Debug build and run:

cmake --build build/linux-debug --target faset_render_temporal_acceptance_tests --parallel 2
ctest --test-dir build/linux-debug --no-tests=error -R '^render_temporal_quality_matrix$' --output-on-failure
build/linux-debug/faset_render_temporal_acceptance_tests --capture-quality /tmp/faset-p3-final-new
build/linux-debug/faset_render_temporal_acceptance_tests --profile-720p /tmp/faset-p3-final-new-profile.csv
python3 tools/analyze_temporal_quality_matrix.py --input /tmp/faset-p3-final-new \
  --output /tmp/faset-p3-final-new-analyzed \
  --revision ed523c61c106b8e19614e4d56f0b5d39b8392478 \
  --driver 'NVIDIA proprietary 595.84'

Use fresh paths: the analyzer rejects an existing output directory. The separate resize diagnostics regression exercises counter readback during swapchain recreation on a physical GPU; this quality capture leaves that optional diagnostic path disabled.

The visibility-switch rollback test checks that a failed GPU-mode transition preserves live TAA output and history and that the transition can be retried after restoring the shader bundle. The P1 queued-source regression checks that Build and Export report the worker snapshot hash rather than the enqueue-time hash. These failure-path fixes did not change any matrix image.