Document P1 and P3 integrated acceptance

This commit is contained in:
Emil
2026-09-24 06:33:34 +03:00
parent ed523c61c1
commit f645965d56
1421 changed files with 30364 additions and 29 deletions
@@ -13,6 +13,13 @@ recorded frame reported zero
validation errors. These observations do not establish physical Windows GPU
behavior or high-end reconstruction quality.
The [final integrated matrix](matrix/integrated-ed523c6/README.md) separately
repeats all 1,386 frames at clean `ed523c6`, after the optional diagnostics
shader, resize fix, and visibility-switch rollback. Actual Vulkan validation
was active with zero errors;
all captured PNGs are byte-identical to the earlier branch matrix. Its
independent 720p profile is recorded with exact binary and shader hashes.
## Raw artifacts and method
- [Lossless PNG example](captures/wire-static-taa-15.png) and
@@ -1,12 +1,20 @@
# P3 temporal image-quality matrix: branch checkpoint
# P3 temporal image-quality matrix: branch and integrated captures
The [final integrated capture](integrated-ed523c6/README.md) repeated this
entire 1,386-frame matrix on clean source `ed523c6` after the optional
pixel-diagnostics shader, resize fix, and visibility-switch rollback. Validation
was active with zero errors,
all 1,388 resulting PNG files are byte-identical to the branch artifacts
below, and a separate final-shader 720p profile is retained. The branch record
remains here as the original quality study and provenance baseline.
This is a functional and image-quality capture from
`fe3a589174f8fe8e35ee231fe74fe938f4dd3cbd` on
`feat/p3-temporal-integration`, before the later pixel-diagnostics shader was
merged into the combined P1+P3 branch. It is separate from the earlier Direct
capture at `1a1f69f` and from the combined lighting performance sweep at
`4a3453e`. Repeating this matrix on the final combined source is necessary
before claiming its exact images as integrated release evidence.
`4a3453e`. The integrated rerun linked above now checks the exact images on
the combined shader.
The run used Linux Debug, NVIDIA GeForce RTX 2080 Ti, proprietary driver
595.84, 160×120 output except the 319×241 resize scene and 320×240 spatial
@@ -0,0 +1,80 @@
# 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](provenance.json) records the exact capture
executable SHA-256 and all 31 loaded SPIR-V/reflection artifact hashes.
The [frame CSV](frames.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](metrics.json),
[wire reference sheet](spatial-reference.png) and
[door trail sheet](door-trail-nearest-4x.png) 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](../README.md) 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](profile-720p-debug.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](../../README.md) explains the
quality limitations and the earlier, separately timed 720p checkpoint.
To reproduce from this source revision, install the
[pinned analyzer dependencies](../../../../../tools/requirements-temporal-quality.txt)
into a Python environment, configure the Linux Debug build and run:
```sh
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](https://github.com/emil28092005/Faset_Engine/blob/main/tests/render_temporal_diagnostics_tests.cpp)
exercises counter readback during swapchain recreation on a physical GPU; this
quality capture leaves that optional diagnostic path disabled.
The [visibility-switch rollback test](https://github.com/emil28092005/Faset_Engine/blob/main/tests/render_reload_tests.cpp)
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](https://github.com/emil28092005/Faset_Engine/blob/main/tests/editor_schema_signature_tests.cpp)
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.
Binary file not shown.

After

Width:  |  Height:  |  Size: 185 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 278 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 185 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 185 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 278 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 185 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 247 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 185 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 247 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 213 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 237 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 263 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 251 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 253 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 261 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 253 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 255 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 248 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 242 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 242 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 244 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 274 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 257 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 255 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 261 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 286 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 257 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 263 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 261 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 252 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 276 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 263 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 291 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 297 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 287 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 294 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 293 B

Some files were not shown because too many files have changed in this diff Show More