Document integrated P1 budgets and P3 lighting acceptance
Native and manual checks / native (windows-2025) (push) Waiting to run
Native and manual checks / native (ubuntu-24.04) (push) Failing after 32s
Native and manual checks / manual (push) Successful in 28s
Windows editor and software Vulkan / windows-graphics (push) Canceled after 0s
Native and manual checks / native (windows-2025) (push) Waiting to run
Native and manual checks / native (ubuntu-24.04) (push) Failing after 32s
Native and manual checks / manual (push) Successful in 28s
Windows editor and software Vulkan / windows-graphics (push) Canceled after 0s
This commit is contained in:
@@ -192,8 +192,17 @@ CTest и перенос всех трёх Release-игр, включая Lua-onl
|
||||
[чистой ревизии `4ac02ee`](https://github.com/emil28092005/Faset_Engine/actions/runs/35937433040).
|
||||
Это функциональная проверка software Vulkan без активного validation layer.
|
||||
Исторический Release benchmark точных демо нельзя
|
||||
подменять новым Debug workflow; свежий Release reference и физический Windows GPU
|
||||
остаются отдельным покрытием. Dynamic gameplay loading рассматривать при
|
||||
подменять новым Debug workflow. На чистой совмещённой ревизии `4a3453e`
|
||||
все три Release-игры после переноса и скрытия исходников отрисовали по 120
|
||||
кадров на физической RTX с активной Vulkan validation и без ошибок. Точные
|
||||
2D/3D демо отдельно прошли по 240 кадров: p95 полного кадра 2,694/3,036 мс,
|
||||
GPU 0,573/0,617 мс, readback 0,559/0,561 мс, simulation 0,242/0,300 мс,
|
||||
snapshot 0,197/0,288 мс; startup 295/248 мс. Эти показатели укладываются
|
||||
в соответствующие tracking budgets. Явные Vulkan allocations 43,02/43,12 MiB
|
||||
**превысили** исходный ориентир 20 MiB из-за двух постоянно созданных 2048²
|
||||
D32 shadow-атласов по 16 MiB; даже 2D-сцена с нулём shadow raster держит оба.
|
||||
Память требует оптимизации/нового baseline, без подмены бюджета. Физический
|
||||
Windows GPU остаётся отдельным покрытием. Dynamic gameplay loading рассматривать при
|
||||
подтверждённой проблеме линковки, без обещания C++ hot reload в P1.
|
||||
|
||||
### P2. GPU-driven visibility и LOD
|
||||
|
||||
+12
-1
@@ -501,7 +501,18 @@ scene reached 149.39 ms p95 wall time, dominated by CPU simulation/snapshot;
|
||||
this is a visible scalability issue, not a tiny-demo Release budget comparison.
|
||||
The historical exact-scene Release budgets were met in the earlier 2026-09-18
|
||||
record, but that evolving working-tree baseline does not certify the current
|
||||
revision. A quiet-host current Release rerun is pending.
|
||||
revision. A clean `4a3453e` physical-GPU rerun now covers both exact-scene
|
||||
source-hidden Release games, sequentially for 240 frames at 1280×720 with
|
||||
active Khronos validation. 2D/3D p95 frame wall was 2.694/3.036 ms, GPU
|
||||
0.573/0.617 ms, readback 0.559/0.561 ms, simulation 0.242/0.300 ms, snapshot
|
||||
0.197/0.288 ms; startup from `main()` was 295.4/248.3 ms. These meet their
|
||||
initial tracking budgets. Explicit Vulkan allocation instead reached
|
||||
45,112,032/45,212,272 bytes (43.02/43.12 MiB), exceeding the 20 MiB target:
|
||||
eager 2048² D32 sun and local atlases consume 16 MiB each even in the 2D
|
||||
fixture with zero shadow raster. This memory miss is recorded, not silently
|
||||
rebaselined. The same clean build exported and source-hidden relocated C++ 2D,
|
||||
C++ 3D with Blender import, and Lua-only games; all rendered 120 frames with
|
||||
validation active and zero reported errors.
|
||||
|
||||
Linux focused cache, diagnostics, schema and workflow-math tests pass; a real
|
||||
failed-build replay now reports navigable `Scripts/Gameplay.cpp:73:2`. The
|
||||
|
||||
@@ -5,8 +5,10 @@ implementation and measured Forward+ checkpoint is source revision
|
||||
`a0a4e29d480ed3344f19bd3565d48668ca913fed` on `feat/p3-lighting`.
|
||||
The earlier shadow/benchmark integration checkpoint was `b191ae0`. The
|
||||
lighting slice has Linux functional and reference-GPU evidence plus Windows
|
||||
SwiftShader CI at the tiled revision. Temporal reconstruction and the final
|
||||
combined revision have their own acceptance.
|
||||
SwiftShader CI at the tiled revision. The combined P1+P3 renderer checkpoint
|
||||
`4a3453e` was tested separately, including the temporal renderer. Its lighting
|
||||
A/B raw data are in [study 24](../../studies/24-p3-integrated-forward-plus-2026-09-24.md),
|
||||
and temporal image/cost evidence has a [separate record](../p3-temporal-2026-09-24/README.md).
|
||||
|
||||
## Implemented at the checkpoint
|
||||
|
||||
@@ -43,16 +45,16 @@ combined revision have their own acceptance.
|
||||
|
||||
| Case | Automated evidence | Current status |
|
||||
| --- | --- | --- |
|
||||
| Empty, disabled, local-only, multiple sun; schema bounds | `scene_view`, `render_lighting_policy`, `render_offscreen` | Linux Debug green at `a0a4e29`; integrated revision pending |
|
||||
| Four cascades, split bounds, subtexel stabilization, offscreen/source-LOD0 caster | `render_lighting_policy`, `render_lighting_sun` | Linux GPU and pinned SwiftShader P3 green at `a0a4e29` |
|
||||
| Spot cone, six point faces and seam, dropped whole point shadow | `render_lighting_local`, `render_lighting_policy` | Linux GPU and pinned SwiftShader P3 green at `a0a4e29` |
|
||||
| Empty, disabled, local-only, multiple sun; schema bounds | `scene_view`, `render_lighting_policy`, `render_offscreen` | Linux Debug green at `4a3453e` |
|
||||
| Four cascades, split bounds, subtexel stabilization, offscreen/source-LOD0 caster | `render_lighting_policy`, `render_lighting_sun` | Linux GPU green at `4a3453e`; pinned SwiftShader P3 green at `a0a4e29` |
|
||||
| Spot cone, six point faces and seam, dropped whole point shadow | `render_lighting_local`, `render_lighting_policy` | Linux GPU green at `4a3453e`; pinned SwiftShader P3 green at `a0a4e29` |
|
||||
| 128-light/16-face/4096-draw limits, optional-atlas fallback | `render_lighting_policy`, `render_offscreen`, `render_lighting_local` | CPU and supported-atlas GPU paths covered; allocation fallback not exercised on an actual constrained device; sampled D32 is a renderer requirement |
|
||||
| Direct/GPU frustum/GPU occlusion image parity, P2 reload and 2D/UI independence | `render_lighting_sun`, `render_lighting_local`, `render_shader_reload`, `render_offscreen` | Linux Debug green at `a0a4e29`; integrated revision pending |
|
||||
| Forward+/forward parity, near plane, resize, overflow, and shader reload | `render_lighting_tiled`, `render_shader_reload`, `render_shader_reflection`, `build_schema_publication` | Linux Debug and pinned SwiftShader P3 green at `a0a4e29`; 128-light localized Release captures match exactly |
|
||||
| Driver, profile, real 64×64 benchmark smoke | `render_lighting_benchmark_schema`, `render_lighting_benchmark_smoke`, `player_shutdown_diagnostics` | Full Linux Debug green at `a0a4e29` |
|
||||
| 1920×1080 0/4/16/32/64/128 Release sweep, three repeats, both shadow states | `tools/benchmark_p3_lighting.py --sweep` | Forward baseline measured; its separate raw study is being integrated |
|
||||
| 1920×1080 paired paths, 32/64/128 dense and localized lights | `faset_p3_lighting_benchmark --lighting forward|tiled` | Raw 1080 frames and six diagnostic samples retained in study 23; dense slower, localized faster by build+raster |
|
||||
| Windows native build, pinned SwiftShader GPU tests, relocated Release 2D/3D Players | `windows-graphics.yml`, `ci.yml` | Native/manual and Windows graphics passed at `a0a4e29`; 64/64 Windows CTests and two relocated 120-frame Release games; combined revision pending |
|
||||
| Direct/GPU frustum/GPU occlusion image parity, P2 reload and 2D/UI independence | `render_lighting_sun`, `render_lighting_local`, `render_shader_reload`, `render_offscreen` | Linux Debug green at `4a3453e` |
|
||||
| Forward+/forward parity, near plane, resize, overflow, and shader reload | `render_lighting_tiled`, `render_shader_reload`, `render_shader_reflection`, `build_schema_publication` | Linux Debug green at `4a3453e`; pinned SwiftShader P3 green at `a0a4e29`; 128-light localized Release captures matched at `a0a4e29` |
|
||||
| Driver, profile, real 64×64 benchmark smoke | `render_lighting_benchmark_schema`, `render_lighting_benchmark_smoke`, `player_shutdown_diagnostics` | Full Linux Debug green at `4a3453e` |
|
||||
| 1920×1080 0/4/16/32/64/128 Release sweep, three repeats, both shadow states | `tools/benchmark_p3_lighting.py --sweep` | Forward and tiled repeated at clean `4a3453e`: 6,480 raw frames across three visibility modes; study 24 |
|
||||
| 1920×1080 paired paths, 32/64/128 dense and localized lights | `faset_p3_lighting_benchmark --lighting forward|tiled` | Dense tiled 11–13% slower; localized tiled 43–54% faster in build+raster on the reference GPU; study 24 retains another 1,080 localized frames |
|
||||
| Windows native build, pinned SwiftShader GPU tests, relocated Release 2D/3D Players | `windows-graphics.yml`, `ci.yml` | Native/manual passed at `4a3453e`; Windows graphics at that revision is tracked below; `a0a4e29` passed 64 Windows CTests and two relocated 120-frame Release games |
|
||||
|
||||
The supported-atlas GPU tests create a renderer with validation requested and
|
||||
assert zero reported Vulkan errors; a test result is a validation-layer pass only
|
||||
@@ -61,6 +63,20 @@ Linux compositor declines programmatic restore. The Windows workflow uses pinned
|
||||
SwiftShader, not a physical Windows GPU, and may lack the Khronos layer. Linux
|
||||
reference-GPU results cannot establish physical Windows performance.
|
||||
|
||||
At clean combined source `4a3453e`, the [local Linux Debug run](linux-debug-integrated-4a3453e-ctest.txt)
|
||||
registered 73 CTests: 72 passed, no failures and one compositor-dependent window
|
||||
lifecycle skip. Both real Release C++ games and the Lua-only game were relocated with
|
||||
their source projects hidden and rendered 120/120 frames each on the physical
|
||||
RTX 2080 Ti with active Khronos validation and zero reported errors. The
|
||||
[native/manual CI run](https://github.com/emil28092005/Faset_Engine/actions/runs/35944874993)
|
||||
passed on Linux and Windows; the corresponding
|
||||
[Windows graphics run](https://github.com/emil28092005/Faset_Engine/actions/runs/35944875002)
|
||||
is the integrated SwiftShader acceptance run. The P3 paired sweep was repeated
|
||||
on this exact clean revision with identical binary and shader hashes across
|
||||
forward and tiled paths. The timed CSVs omit tile-occupancy readback: their
|
||||
zero-valued overflow field is **not** evidence of no overflow. Study 24 retains
|
||||
all frame rows, hashes and bounded interpretation.
|
||||
|
||||
## Reproduction and retained evidence
|
||||
|
||||
The P3 CTest registrations are `render_lighting_policy` and
|
||||
@@ -100,7 +116,7 @@ and [Windows graphics/SwiftShader CI](https://github.com/emil28092005/Faset_Engi
|
||||
also passed. The Windows graphics job ran all 64 CTests, including the tiled
|
||||
image case, and exported and relocated both checked-in Release games for 120
|
||||
frames. This is software Vulkan on Windows; physical Windows GPU performance
|
||||
and the later combined P1+P3 revision remain unverified here.
|
||||
remains unverified here. The combined P1+P3 CI links above are separate.
|
||||
|
||||
```sh
|
||||
cmake --build --preset linux-debug --parallel 2
|
||||
@@ -114,9 +130,10 @@ The benchmark wrapper retains one raw CSV per run, a merged CSV, and a summary.
|
||||
It rejects visibility fallback, missing GPU timestamps, missing lights, duplicate
|
||||
frames, and validation errors. An offscreen capture's `cpu_ms` includes GPU wait
|
||||
and readback; it is not thread CPU time. The exact Release benchmark revision,
|
||||
driver and paired path data are retained in study 23. Release full CTest,
|
||||
final integrated Windows Actions and relocated Player checks still need to be
|
||||
added before this is a complete P3 lighting acceptance record.
|
||||
driver and original paired path data are retained in study 23. The combined
|
||||
clean-revision repeat and three relocated physical-GPU games are now in study
|
||||
24 and the P1 record. Final Release full CTest and integrated Windows graphics
|
||||
results are tracked separately from the earlier source checkpoints.
|
||||
|
||||
## Limits carried forward
|
||||
|
||||
|
||||
@@ -0,0 +1,160 @@
|
||||
Test project /home/emil/Desktop/.worktrees/Faset_Engine-p1-p3-integration/build/linux-debug
|
||||
Start 52: build_schema_publication
|
||||
Start 12: render_temporal_acceptance
|
||||
1/73 Test #12: render_temporal_acceptance ......... Passed 10.32 sec
|
||||
Start 25: render_lighting_benchmark_schema
|
||||
2/73 Test #25: render_lighting_benchmark_schema ... Passed 7.22 sec
|
||||
Start 66: editor_gui_mcp
|
||||
3/73 Test #66: editor_gui_mcp ..................... Passed 4.88 sec
|
||||
Start 21: render_shader_reload
|
||||
4/73 Test #21: render_shader_reload ............... Passed 5.15 sec
|
||||
Start 60: editor_ui_reload
|
||||
5/73 Test #60: editor_ui_reload ................... Passed 4.20 sec
|
||||
Start 23: render_shader_reflection
|
||||
6/73 Test #23: render_shader_reflection ........... Passed 3.95 sec
|
||||
Start 59: editor_ui_project_settings
|
||||
7/73 Test #52: build_schema_publication ........... Passed 37.86 sec
|
||||
Start 47: lua_player_reload
|
||||
8/73 Test #59: editor_ui_project_settings ......... Passed 3.53 sec
|
||||
Start 62: editor_ui_templates
|
||||
9/73 Test #47: lua_player_reload .................. Passed 2.65 sec
|
||||
Start 9: render_lighting_tiled
|
||||
10/73 Test #62: editor_ui_templates ................ Passed 2.73 sec
|
||||
Start 45: player_shutdown_diagnostics
|
||||
11/73 Test #9: render_lighting_tiled .............. Passed 3.12 sec
|
||||
Start 28: gpu_visibility
|
||||
12/73 Test #28: gpu_visibility ..................... Passed 1.29 sec
|
||||
Start 54: editor_session_settings
|
||||
13/73 Test #45: player_shutdown_diagnostics ........ Passed 3.41 sec
|
||||
Start 42: render_gpu_open_sequence
|
||||
14/73 Test #54: editor_session_settings ............ Passed 2.14 sec
|
||||
Start 32: render_gpu_door
|
||||
15/73 Test #42: render_gpu_open_sequence ........... Passed 1.85 sec
|
||||
Start 63: editor_ui_gizmos
|
||||
16/73 Test #32: render_gpu_door .................... Passed 0.85 sec
|
||||
Start 64: editor_ui_authoring
|
||||
17/73 Test #63: editor_ui_gizmos ................... Passed 1.09 sec
|
||||
Start 19: render_offscreen
|
||||
18/73 Test #19: render_offscreen ................... Passed 0.67 sec
|
||||
Start 58: editor_ui_import_conflicts
|
||||
19/73 Test #64: editor_ui_authoring ................ Passed 1.69 sec
|
||||
Start 39: render_gpu_lifecycle
|
||||
20/73 Test #58: editor_ui_import_conflicts ......... Passed 1.08 sec
|
||||
Start 61: editor_ui_launcher
|
||||
21/73 Test #61: editor_ui_launcher ................. Passed 0.97 sec
|
||||
Start 15: render_temporal_lifecycle
|
||||
22/73 Test #39: render_gpu_lifecycle ............... Passed 1.46 sec
|
||||
Start 57: ui_render
|
||||
23/73 Test #57: ui_render .......................... Passed 0.73 sec
|
||||
Start 20: render_sprite_alpha
|
||||
24/73 Test #20: render_sprite_alpha ................ Passed 0.67 sec
|
||||
Start 8: render_lighting_local
|
||||
25/73 Test #15: render_temporal_lifecycle .......... Passed 1.57 sec
|
||||
Start 73: playable_3d
|
||||
26/73 Test #8: render_lighting_local .............. Passed 1.09 sec
|
||||
Start 7: render_lighting_sun
|
||||
27/73 Test #73: playable_3d ........................ Passed 0.93 sec
|
||||
Start 36: render_gpu_lod
|
||||
28/73 Test #36: render_gpu_lod ..................... Passed 0.93 sec
|
||||
Start 38: render_gpu_near
|
||||
29/73 Test #7: render_lighting_sun ................ Passed 1.27 sec
|
||||
Start 31: render_gpu_dense
|
||||
30/73 Test #38: render_gpu_near .................... Passed 0.85 sec
|
||||
Start 26: render_lighting_benchmark_smoke
|
||||
31/73 Test #31: render_gpu_dense ................... Passed 0.73 sec
|
||||
Start 37: render_gpu_teleport
|
||||
32/73 Test #26: render_lighting_benchmark_smoke .... Passed 0.60 sec
|
||||
Start 41: render_gpu_projection
|
||||
33/73 Test #37: render_gpu_teleport ................ Passed 0.70 sec
|
||||
Start 35: render_gpu_resize
|
||||
34/73 Test #41: render_gpu_projection .............. Passed 0.70 sec
|
||||
Start 40: render_gpu_views
|
||||
35/73 Test #35: render_gpu_resize .................. Passed 0.73 sec
|
||||
Start 34: render_gpu_cut
|
||||
36/73 Test #40: render_gpu_views ................... Passed 0.74 sec
|
||||
Start 30: render_gpu_capacity
|
||||
37/73 Test #34: render_gpu_cut ..................... Passed 0.74 sec
|
||||
Start 11: render_temporal_graph
|
||||
38/73 Test #30: render_gpu_capacity ................ Passed 0.76 sec
|
||||
Start 29: render_gpu_empty
|
||||
39/73 Test #11: render_temporal_graph .............. Passed 0.80 sec
|
||||
Start 43: render_gpu_transparent
|
||||
40/73 Test #29: render_gpu_empty ................... Passed 0.72 sec
|
||||
Start 33: render_gpu_shadow
|
||||
41/73 Test #43: render_gpu_transparent ............. Passed 0.72 sec
|
||||
Start 72: playable_2d
|
||||
42/73 Test #33: render_gpu_shadow .................. Passed 0.63 sec
|
||||
Start 51: process_and_cook
|
||||
43/73 Test #72: playable_2d ........................ Passed 0.41 sec
|
||||
Start 65: editor_mcp_stdio
|
||||
44/73 Test #51: process_and_cook ................... Passed 0.37 sec
|
||||
Start 6: lua_safety_contracts
|
||||
45/73 Test #65: editor_mcp_stdio ................... Passed 0.23 sec
|
||||
Start 67: core
|
||||
46/73 Test #67: core ............................... Passed 0.15 sec
|
||||
Start 2: runtime_contracts
|
||||
47/73 Test #6: lua_safety_contracts ............... Passed 0.20 sec
|
||||
Start 56: ui_widgets
|
||||
48/73 Test #2: runtime_contracts .................. Passed 0.12 sec
|
||||
Start 3: assets_pipeline
|
||||
49/73 Test #56: ui_widgets ......................... Passed 0.13 sec
|
||||
Start 5: lua_contracts
|
||||
50/73 Test #3: assets_pipeline .................... Passed 0.15 sec
|
||||
Start 46: lua_cli_contracts
|
||||
51/73 Test #5: lua_contracts ...................... Passed 0.13 sec
|
||||
Start 50: build_cache
|
||||
52/73 Test #46: lua_cli_contracts .................. Passed 0.16 sec
|
||||
Start 4: assets_blender_bundle
|
||||
53/73 Test #50: build_cache ........................ Passed 0.16 sec
|
||||
Start 71: tutorial_physics
|
||||
54/73 Test #4: assets_blender_bundle .............. Passed 0.08 sec
|
||||
Start 22: render_gpu_shader_contract
|
||||
55/73 Test #71: tutorial_physics ................... Passed 0.07 sec
|
||||
Start 1: authoring
|
||||
56/73 Test #1: authoring .......................... Passed 0.05 sec
|
||||
Start 10: render_lighting_policy
|
||||
57/73 Test #22: render_gpu_shader_contract ......... Passed 0.06 sec
|
||||
Start 13: render_temporal_shader_contract
|
||||
58/73 Test #13: render_temporal_shader_contract .... Passed 0.03 sec
|
||||
Start 53: editor_plugins
|
||||
59/73 Test #10: render_lighting_policy ............. Passed 0.04 sec
|
||||
Start 70: tutorial_spawning
|
||||
60/73 Test #70: tutorial_spawning .................. Passed 0.02 sec
|
||||
Start 68: tutorial_moving
|
||||
61/73 Test #53: editor_plugins ..................... Passed 0.03 sec
|
||||
Start 49: build_diagnostics
|
||||
62/73 Test #68: tutorial_moving .................... Passed 0.02 sec
|
||||
Start 44: player_scene_contracts
|
||||
63/73 Test #44: player_scene_contracts ............. Passed 0.02 sec
|
||||
Start 48: editor_mcp
|
||||
64/73 Test #49: build_diagnostics .................. Passed 0.03 sec
|
||||
Start 55: editor_autosave
|
||||
65/73 Test #48: editor_mcp ......................... Passed 0.01 sec
|
||||
Start 69: tutorial_following
|
||||
66/73 Test #55: editor_autosave .................... Passed 0.01 sec
|
||||
Start 17: render_temporal_policy
|
||||
67/73 Test #69: tutorial_following ................. Passed 0.01 sec
|
||||
Start 27: visibility_policy
|
||||
68/73 Test #17: render_temporal_policy ............. Passed 0.01 sec
|
||||
Start 18: render_graph
|
||||
69/73 Test #27: visibility_policy .................. Passed 0.00 sec
|
||||
Start 14: render_temporal_reference
|
||||
70/73 Test #18: render_graph ....................... Passed 0.00 sec
|
||||
Start 16: render_temporal_motion
|
||||
71/73 Test #14: render_temporal_reference .......... Passed 0.00 sec
|
||||
Start 24: render_window_lifecycle
|
||||
72/73 Test #16: render_temporal_motion ............. Passed 0.00 sec
|
||||
73/73 Test #24: render_window_lifecycle ............***Skipped 4.21 sec
|
||||
|
||||
100% tests passed, 0 tests failed out of 73
|
||||
|
||||
Label Time Summary:
|
||||
gpu = 70.84 sec*proc (38 tests)
|
||||
p2 = 14.42 sec*proc (16 tests)
|
||||
p3 = 13.33 sec*proc (6 tests)
|
||||
window = 9.09 sec*proc (2 tests)
|
||||
|
||||
Total Test time (real) = 64.96 sec
|
||||
|
||||
The following tests did not run:
|
||||
24 - render_window_lifecycle (Skipped)
|
||||
Reference in New Issue
Block a user