Record P2 Linux and exported Player validation evidence
Native and manual checks / native (windows-2025) (push) Waiting to run
Native and manual checks / native (ubuntu-24.04) (push) Failing after 40s
Native and manual checks / manual (push) Successful in 41s
Windows editor and software Vulkan / windows-graphics (push) Canceled after 0s

This commit is contained in:
Emil
2026-09-23 23:28:45 +03:00
parent bde581a961
commit ba3efa82e3
27 changed files with 7250 additions and 0 deletions
@@ -0,0 +1,34 @@
# P2 GPU visibility: Linux validation, 2026-09-23
The P2 implementation adds selectable GPU frustum and two-pass HZB occlusion for opaque static meshes, prepared mesh LODs, renderer and Editor diagnostics, and a standalone Player option. Direct rendering remains the default and comparison path. The code built and tested here is at `9990234` (following `3be3d0d` for device-local GPU outputs); the later working-tree changes while gathering this record were documentation only.
## Builds and functional tests
| Environment | Check | Result |
| --- | --- | --- |
| Ubuntu Linux, Clang 21, Debug, RTX 2080 Ti | `cmake --build --preset linux-debug -j6`; `ctest --test-dir build/linux-debug --output-on-failure -j6` | Build passed; 57/57 tests passed, including 15 P2 cases. `render_window_lifecycle` reported its pre-existing compositor skip. |
| Ubuntu Linux, Clang 21, Release, RTX 2080 Ti | `cmake --build build/p2-release -j6`; `ctest --test-dir build/p2-release --output-on-failure -j6` | Build passed; 57/57 tests passed, with the same window skip. |
| Linux lavapipe software Vulkan | `VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/lvp_icd.json ctest --test-dir build/p2-release -L p2 --output-on-failure -j2` | 15/15 P2 cases passed; the frustum and occlusion examples each reported an active GPU path, both prepared LOD levels, and zero Vulkan validation errors. |
| Release shader bundle | `spirv-val --target-env vulkan1.3` on all nine generated `.spv` files | All passed. |
The 15 P2 cases include empty and dense scenes, fixed-bin capacity, camera cut, resize, near-plane handling, multiple views, projection change, teleports, shadow and transparent passes, LOD selection and an open sequence. This is functional coverage, not a performance claim.
The complete [Debug CTest log](ctest-linux-debug.txt), [Release CTest log](ctest-linux-release.txt) and [lavapipe P2 log](ctest-lavapipe-p2.txt) retain every test name and the explicit window skip. The [shader validation record](shader-validation.txt) lists hashes and `spirv-val` results for the Release bundle.
## Independent exported Player checks
The [export report](report.json) records a Release export through the real Editor for both checked-in playable projects. Their packages were copied outside the SDK into a Unicode path, source project directories were hidden, and each package passed CPU validation plus 120 headless frames on the RTX 2080 Ti with Khronos validation active and zero errors. The 3D export includes the imported Blender asset. Package file hashes are retained in the [2D manifest](collect-2d-manifest.json) and [3D manifest](collect-3d-manifest.json). The [2D](collect-2d-profile.json) and [3D](collect-3d-profile.json) 120-frame profiles preserve device and frame counters.
Each relocated Player was then launched for six frames in **both** `--visibility gpu-frustum` and `--visibility gpu-occlusion`. All four [GPU-mode runs](p2-exported-gpu-visibility.json) completed with `gpu_visibility_active=true` in every profile sample and zero Vulkan validation errors. The raw profiles are [2D frustum](collect-2d-gpu-frustum-profile.json), [2D occlusion](collect-2d-gpu-occlusion-profile.json), [3D frustum](collect-3d-gpu-frustum-profile.json) and [3D occlusion](collect-3d-gpu-occlusion-profile.json). The Player also validated both shader bundles with `--validate --visibility MODE` before rendering.
The [capture comparison](capture-comparison.json) uses the same six-frame static camera for Direct and GPU modes. The 2D captures match pixel-for-pixel. In 3D, GPU frustum and GPU occlusion match pixel-for-pixel; each differs from Direct at only 7 of 921,600 pixels (maximum RGB channel delta 41), all at rasterized geometry edges. The result is deterministic across repeated runs and frame counts. A diagnostic with just the floor mesh and camera retains three edge pixels, isolating the difference from gameplay timing, occlusion decisions and draw ordering. Direct pretransforms vertices on the CPU in `renderer.cpp`; GPU modes transform them in `gpu_scene.slang`. Their floating-point rounding can change triangle coverage at subpixel boundaries. This is a bounded visual difference on this device, not evidence of lost geometry, and exact pixel counts should not be expected across GPU drivers.
![3D Direct capture after six frames](collect-3d-direct-6.png)
![3D GPU occlusion capture after six frames](collect-3d-gpu-occlusion.png)
## Performance evidence and limits
The [first benchmark](../../studies/20-p2-gpu-visibility-benchmark-2026-09-23.md) exposed a slow GPU `MainCull` pass. The [optimization study](../../studies/21-p2-gpu-visibility-optimization-2026-09-23.md) keeps raw samples from baseline, device-local-only and device-local-plus-atomic variants and explains the measured improvement. Those are synthetic Debug/validation workloads on one RTX 2080 Ti, not Player frame rates or a promise that GPU culling wins in every scene. Open scenes pay extra HZB work. Direct remains the default until broader Release/game-content profiling supports another choice.
This record does not establish physical Windows GPU performance, other hardware/driver combinations, native Wayland restore, or automatic LOD mesh generation. The lavapipe run broadens functional driver coverage but is not a hardware speed measurement. Native Windows CI and later GPU families require their own evidence.
@@ -0,0 +1,138 @@
{
"collect-2d": {
"direct_vs_gpu_frustum": {
"size": [
1280,
720
],
"changed_pixels": 0,
"total_pixels": 921600,
"max_channel_delta": 0,
"coordinates_and_max_channel_delta": []
},
"direct_vs_gpu_occlusion": {
"size": [
1280,
720
],
"changed_pixels": 0,
"total_pixels": 921600,
"max_channel_delta": 0,
"coordinates_and_max_channel_delta": []
},
"gpu_frustum_vs_gpu_occlusion": {
"size": [
1280,
720
],
"changed_pixels": 0,
"total_pixels": 921600,
"max_channel_delta": 0,
"coordinates_and_max_channel_delta": []
}
},
"collect-3d": {
"direct_vs_gpu_frustum": {
"size": [
1280,
720
],
"changed_pixels": 7,
"total_pixels": 921600,
"max_channel_delta": 41,
"coordinates_and_max_channel_delta": [
[
939,
361,
41
],
[
647,
366,
11
],
[
468,
465,
6
],
[
588,
517,
6
],
[
700,
566,
6
],
[
827,
624,
11
],
[
848,
627,
15
]
]
},
"direct_vs_gpu_occlusion": {
"size": [
1280,
720
],
"changed_pixels": 7,
"total_pixels": 921600,
"max_channel_delta": 41,
"coordinates_and_max_channel_delta": [
[
939,
361,
41
],
[
647,
366,
11
],
[
468,
465,
6
],
[
588,
517,
6
],
[
700,
566,
6
],
[
827,
624,
11
],
[
848,
627,
15
]
]
},
"gpu_frustum_vs_gpu_occlusion": {
"size": [
1280,
720
],
"changed_pixels": 0,
"total_pixels": 921600,
"max_channel_delta": 0,
"coordinates_and_max_channel_delta": []
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

@@ -0,0 +1,198 @@
{
"completed_frames": 6,
"device": "NVIDIA GeForce RTX 2080 Ti",
"dimension": 2,
"fixed_delta_seconds": 0.016666666666666666,
"format": "faset.player-profile",
"height": 720,
"percentile_method": "nearest_rank_all_completed_frames_no_warmup_exclusion",
"presentation_mode": "offscreen",
"requested_frames": 6,
"resource_notes": "gpu_allocated_bytes sums live Vulkan memory allocations, including alignment, excluding driver internals. texture_count includes the white fallback texture.",
"samples": [
{
"draw_calls": 11,
"dropped_simulation_seconds": 0.0,
"fixed_ticks": 1,
"frame": 1,
"gpu_allocated_bytes": 15750704,
"gpu_ms": 0.583936,
"gpu_visibility_active": true,
"interpolation_alpha": 0.0,
"physics_debug": false,
"render_call_ms": 10.370041,
"renderer_cpu_ms": 10.363859,
"renderer_readback_cpu_ms": 3.834413,
"simulation_ms": 0.262835,
"snapshot_ms": 0.214305,
"texture_count": 1,
"tick": 1,
"vertices": 66,
"wall_ms": 10.973259
},
{
"draw_calls": 11,
"dropped_simulation_seconds": 0.0,
"fixed_ticks": 1,
"frame": 2,
"gpu_allocated_bytes": 15750704,
"gpu_ms": 0.571552,
"gpu_visibility_active": true,
"interpolation_alpha": 0.0,
"physics_debug": false,
"render_call_ms": 3.686664,
"renderer_cpu_ms": 3.678208,
"renderer_readback_cpu_ms": 0.613398,
"simulation_ms": 0.23866,
"snapshot_ms": 0.193525,
"texture_count": 1,
"tick": 2,
"vertices": 66,
"wall_ms": 4.128828
},
{
"draw_calls": 11,
"dropped_simulation_seconds": 0.0,
"fixed_ticks": 1,
"frame": 3,
"gpu_allocated_bytes": 15750704,
"gpu_ms": 0.5704,
"gpu_visibility_active": true,
"interpolation_alpha": 0.0,
"physics_debug": false,
"render_call_ms": 3.985278,
"renderer_cpu_ms": 3.978084,
"renderer_readback_cpu_ms": 0.584382,
"simulation_ms": 0.4082,
"snapshot_ms": 0.21229,
"texture_count": 1,
"tick": 3,
"vertices": 66,
"wall_ms": 4.63867
},
{
"draw_calls": 11,
"dropped_simulation_seconds": 0.0,
"fixed_ticks": 1,
"frame": 4,
"gpu_allocated_bytes": 15750704,
"gpu_ms": 0.570496,
"gpu_visibility_active": true,
"interpolation_alpha": 0.0,
"physics_debug": false,
"render_call_ms": 3.324371,
"renderer_cpu_ms": 3.316877,
"renderer_readback_cpu_ms": 1.097139,
"simulation_ms": 0.404904,
"snapshot_ms": 0.192392,
"texture_count": 1,
"tick": 4,
"vertices": 66,
"wall_ms": 3.933279
},
{
"draw_calls": 11,
"dropped_simulation_seconds": 0.0,
"fixed_ticks": 1,
"frame": 5,
"gpu_allocated_bytes": 15750704,
"gpu_ms": 0.57696,
"gpu_visibility_active": true,
"interpolation_alpha": 0.0,
"physics_debug": false,
"render_call_ms": 5.0101,
"renderer_cpu_ms": 5.000393,
"renderer_readback_cpu_ms": 0.68915,
"simulation_ms": 0.191871,
"snapshot_ms": 0.222941,
"texture_count": 1,
"tick": 5,
"vertices": 66,
"wall_ms": 5.437566
},
{
"draw_calls": 11,
"dropped_simulation_seconds": 0.0,
"fixed_ticks": 1,
"frame": 6,
"gpu_allocated_bytes": 15750704,
"gpu_ms": 0.616,
"gpu_visibility_active": true,
"interpolation_alpha": 0.0,
"physics_debug": false,
"render_call_ms": 2.787518,
"renderer_cpu_ms": 2.780405,
"renderer_readback_cpu_ms": 0.68932,
"simulation_ms": 0.254069,
"snapshot_ms": 0.198174,
"texture_count": 1,
"tick": 6,
"vertices": 66,
"wall_ms": 3.251403
}
],
"simulation_mode": "synthetic_fixed_timestep",
"startup_ms": {
"main_to_first_frame": 659.174505,
"renderer_initialization": 644.33295,
"scene_read": 0.541101,
"world_initialization": 0.882825
},
"summary_ms": {
"gpu": {
"max": 0.616,
"min": 0.5704,
"p50": 0.571552,
"p95": 0.616,
"samples": 6
},
"render_call": {
"max": 10.370041,
"min": 2.787518,
"p50": 3.686664,
"p95": 10.370041,
"samples": 6
},
"renderer_cpu": {
"max": 10.363859,
"min": 2.780405,
"p50": 3.678208,
"p95": 10.363859,
"samples": 6
},
"renderer_readback_cpu": {
"max": 3.834413,
"min": 0.584382,
"p50": 0.68915,
"p95": 3.834413,
"samples": 6
},
"simulation": {
"max": 0.4082,
"min": 0.191871,
"p50": 0.254069,
"p95": 0.4082,
"samples": 6
},
"snapshot": {
"max": 0.222941,
"min": 0.192392,
"p50": 0.198174,
"p95": 0.222941,
"samples": 6
},
"wall": {
"max": 10.973259,
"min": 3.251403,
"p50": 4.128828,
"p95": 10.973259,
"samples": 6
}
},
"timing_notes": "Durations use steady_clock wall time, not thread CPU usage. render_call/renderer_cpu include GPU waits, readback and window presentation. renderer_readback_cpu measures map/copy/unmap wall time within that call. GPU timestamps cover submitted rendering, not CPU work. A missing/zero GPU timestamp is null. Frame durations exclude profile bookkeeping and final capture/profile file writes. Startup begins at Player application entry after platform argument normalization, excluding OS loader/launcher.",
"validation_enabled": true,
"validation_errors": 0,
"version": 1,
"visibility_mode": "gpu-frustum",
"width": 1280
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

@@ -0,0 +1,198 @@
{
"completed_frames": 6,
"device": "NVIDIA GeForce RTX 2080 Ti",
"dimension": 2,
"fixed_delta_seconds": 0.016666666666666666,
"format": "faset.player-profile",
"height": 720,
"percentile_method": "nearest_rank_all_completed_frames_no_warmup_exclusion",
"presentation_mode": "offscreen",
"requested_frames": 6,
"resource_notes": "gpu_allocated_bytes sums live Vulkan memory allocations, including alignment, excluding driver internals. texture_count includes the white fallback texture.",
"samples": [
{
"draw_calls": 11,
"dropped_simulation_seconds": 0.0,
"fixed_ticks": 1,
"frame": 1,
"gpu_allocated_bytes": 38124080,
"gpu_ms": 0.757824,
"gpu_visibility_active": true,
"interpolation_alpha": 0.0,
"physics_debug": false,
"render_call_ms": 16.535401,
"renderer_cpu_ms": 16.528628,
"renderer_readback_cpu_ms": 3.846085,
"simulation_ms": 0.27565,
"snapshot_ms": 0.228551,
"texture_count": 1,
"tick": 1,
"vertices": 66,
"wall_ms": 17.199143
},
{
"draw_calls": 11,
"dropped_simulation_seconds": 0.0,
"fixed_ticks": 1,
"frame": 2,
"gpu_allocated_bytes": 38124080,
"gpu_ms": 0.676832,
"gpu_visibility_active": true,
"interpolation_alpha": 0.0,
"physics_debug": false,
"render_call_ms": 3.418728,
"renderer_cpu_ms": 3.406727,
"renderer_readback_cpu_ms": 0.717063,
"simulation_ms": 0.239893,
"snapshot_ms": 0.26525,
"texture_count": 1,
"tick": 2,
"vertices": 66,
"wall_ms": 3.936004
},
{
"draw_calls": 11,
"dropped_simulation_seconds": 0.0,
"fixed_ticks": 1,
"frame": 3,
"gpu_allocated_bytes": 38124080,
"gpu_ms": 0.715808,
"gpu_visibility_active": true,
"interpolation_alpha": 0.0,
"physics_debug": false,
"render_call_ms": 3.096992,
"renderer_cpu_ms": 3.087514,
"renderer_readback_cpu_ms": 0.62547,
"simulation_ms": 0.245012,
"snapshot_ms": 0.21197,
"texture_count": 1,
"tick": 3,
"vertices": 66,
"wall_ms": 3.565927
},
{
"draw_calls": 11,
"dropped_simulation_seconds": 0.0,
"fixed_ticks": 1,
"frame": 4,
"gpu_allocated_bytes": 38124080,
"gpu_ms": 0.687936,
"gpu_visibility_active": true,
"interpolation_alpha": 0.0,
"physics_debug": false,
"render_call_ms": 2.784262,
"renderer_cpu_ms": 2.775977,
"renderer_readback_cpu_ms": 0.665536,
"simulation_ms": 0.21729,
"snapshot_ms": 0.19633,
"texture_count": 1,
"tick": 4,
"vertices": 66,
"wall_ms": 3.208973
},
{
"draw_calls": 11,
"dropped_simulation_seconds": 0.0,
"fixed_ticks": 1,
"frame": 5,
"gpu_allocated_bytes": 38124080,
"gpu_ms": 0.675488,
"gpu_visibility_active": true,
"interpolation_alpha": 0.0,
"physics_debug": false,
"render_call_ms": 2.720792,
"renderer_cpu_ms": 2.709341,
"renderer_readback_cpu_ms": 0.654685,
"simulation_ms": 0.170141,
"snapshot_ms": 0.137158,
"texture_count": 1,
"tick": 5,
"vertices": 66,
"wall_ms": 3.040926
},
{
"draw_calls": 11,
"dropped_simulation_seconds": 0.0,
"fixed_ticks": 1,
"frame": 6,
"gpu_allocated_bytes": 38124080,
"gpu_ms": 0.67584,
"gpu_visibility_active": true,
"interpolation_alpha": 0.0,
"physics_debug": false,
"render_call_ms": 2.505646,
"renderer_cpu_ms": 2.498283,
"renderer_readback_cpu_ms": 0.559014,
"simulation_ms": 0.229363,
"snapshot_ms": 0.224584,
"texture_count": 1,
"tick": 6,
"vertices": 66,
"wall_ms": 2.971696
}
],
"simulation_mode": "synthetic_fixed_timestep",
"startup_ms": {
"main_to_first_frame": 352.01617,
"renderer_initialization": 331.461939,
"scene_read": 0.514401,
"world_initialization": 0.607015
},
"summary_ms": {
"gpu": {
"max": 0.757824,
"min": 0.675488,
"p50": 0.676832,
"p95": 0.757824,
"samples": 6
},
"render_call": {
"max": 16.535401,
"min": 2.505646,
"p50": 2.784262,
"p95": 16.535401,
"samples": 6
},
"renderer_cpu": {
"max": 16.528628,
"min": 2.498283,
"p50": 2.775977,
"p95": 16.528628,
"samples": 6
},
"renderer_readback_cpu": {
"max": 3.846085,
"min": 0.559014,
"p50": 0.654685,
"p95": 3.846085,
"samples": 6
},
"simulation": {
"max": 0.27565,
"min": 0.170141,
"p50": 0.229363,
"p95": 0.27565,
"samples": 6
},
"snapshot": {
"max": 0.26525,
"min": 0.137158,
"p50": 0.21197,
"p95": 0.26525,
"samples": 6
},
"wall": {
"max": 17.199143,
"min": 2.971696,
"p50": 3.208973,
"p95": 17.199143,
"samples": 6
}
},
"timing_notes": "Durations use steady_clock wall time, not thread CPU usage. render_call/renderer_cpu include GPU waits, readback and window presentation. renderer_readback_cpu measures map/copy/unmap wall time within that call. GPU timestamps cover submitted rendering, not CPU work. A missing/zero GPU timestamp is null. Frame durations exclude profile bookkeeping and final capture/profile file writes. Startup begins at Player application entry after platform argument normalization, excluding OS loader/launcher.",
"validation_enabled": true,
"validation_errors": 0,
"version": 1,
"visibility_mode": "gpu-occlusion",
"width": 1280
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

@@ -0,0 +1,195 @@
{
"asset_generations": {},
"build_fingerprint": "5c54fc6e20ba827fe1befee8b6194b5df360f053927cbdc83bcf32a654f32899",
"configuration": "Release",
"executable": "faset_player",
"files": [
{
"path": "scene.fscene",
"sha256": "0d7b221abc1cae5e9f1d04357c684ac6993f5878d634b4b950eec66dd8e55b2a",
"size": 6214
},
{
"path": "faset_player",
"sha256": "cfd9e4edf524cd8963329aad68f8a97c67413c0ab6c5616e2377a199ca28e419",
"size": 5972792
},
{
"path": "shaders/vertexMain.spv",
"sha256": "1ad2631c35d654f48166321ae43d4165043e1b919b14f1dc61caf97b1ada0898",
"size": 1224
},
{
"path": "shaders/fragmentMain.spv",
"sha256": "f5c4f289917ecab5d00d543c053aac1d10e6cca311fd172daf06d315160a3505",
"size": 7436
},
{
"path": "shaders/shadowMain.spv",
"sha256": "7643b4d688492b5ee923b9606f0b0e70343ca05fa67673838206119a6f86d8d8",
"size": 784
},
{
"path": "shaders/vertexMain.reflection.json",
"sha256": "c584f3b957ebf194a292451362a98590f85ff3cfbfd8f917b1c1265039381777",
"size": 2639
},
{
"path": "shaders/fragmentMain.reflection.json",
"sha256": "72ebf8d32452830650416dc4717d89a4324e97ece7028dfb97c66803c8dce71f",
"size": 2649
},
{
"path": "shaders/shadowMain.reflection.json",
"sha256": "e3fd0889cd2f569d410f5d7558a4091d9f57f247a1dcf1788462f67525340819",
"size": 2645
},
{
"path": "shaders/gpuVertexMain.spv",
"sha256": "041c1e5f0db4007c51e01ed5db6e0fbf4db09b8dcbcb085c0c73612cdc682fe3",
"size": 5008
},
{
"path": "shaders/gpuShadowMain.spv",
"sha256": "9078577943bf9c51220d5341434834eb4a28cf0f0f6203bad2b96e1b0e11b360",
"size": 2484
},
{
"path": "shaders/gpuCullMain.spv",
"sha256": "7691360ec55f41d40d43652f506b051cef8b3a3ddcdcc7db61a7d4d97f9e87d8",
"size": 16180
},
{
"path": "shaders/gpuHzbMain.spv",
"sha256": "08682362ee2120ed19d260e613285071747c3e436bb09bb6238e46f9cedc2308",
"size": 4140
},
{
"path": "shaders/gpuPostCullMain.spv",
"sha256": "62cb72e356346e1511c6d640a3cecb4a6e5283795338299b357edae5f7f52be4",
"size": 12460
},
{
"path": "shaders/gpuVertexMain.reflection.json",
"sha256": "3726c09d38e68cf0b6e317daaddb7b5b3e1bb0b073afd0eff43b8f1125378cd9",
"size": 3092
},
{
"path": "shaders/gpuShadowMain.reflection.json",
"sha256": "7fbe869421b61f0261729eac26ebda2a484d423583d3a5b739ba59bbf3afbe12",
"size": 2749
},
{
"path": "shaders/gpuCullMain.reflection.json",
"sha256": "996fe5c7e31c6b8f316d8f290b3be0ae7063eb46c500a661e8715e9b822a2598",
"size": 3587
},
{
"path": "shaders/gpuHzbMain.reflection.json",
"sha256": "589818f670881c64f3aba726ee3bc82fe4b9d835a347f99134e0e157dc4a112e",
"size": 2050
},
{
"path": "shaders/gpuPostCullMain.reflection.json",
"sha256": "eed140bbe09c7d14935b688c770261ac0e81677c0974aa811c88ed67ea779b95",
"size": 3591
},
{
"path": "Notices/sdl3/LICENSE.txt",
"sha256": "97f35b302b361680ec1e891e95d2d52097bb95abff361434916d99dc1305f127",
"size": 884
},
{
"path": "Notices/entt/LICENSE",
"sha256": "0785027ce472d7c61f05fba664a1d3ba6639c1593ced351ad9e4bed868765d99",
"size": 1097
},
{
"path": "Notices/box2d/LICENSE",
"sha256": "68a3e676d7e94093b102d5cba0d4e04af812040d6f230c3db67a6664574e43d2",
"size": 1067
},
{
"path": "Notices/box3d/LICENSE",
"sha256": "da5e31a26bf3cfd5ba5c96d6823e480128c81e76c107ef9d3ee5d94789184b90",
"size": 1067
},
{
"path": "Notices/json/LICENSE.MIT",
"sha256": "46a65cffd1ea955132d95a8dd921640714a8d6b537d2e4e482d31145ae95b603",
"size": 1076
},
{
"path": "Notices/stb/LICENSE",
"sha256": "bebfe904b14301657e4e5d655c811d51fd31b97c455b9cc2d8600d6bac6cff63",
"size": 2510
},
{
"path": "Notices/dependencies.json",
"sha256": "a54639ad2d9ad13c2e5f1ec90d6775f5dfc493656789b78c7e44debe2a378fdc",
"size": 2206
},
{
"path": "Notices/Faset-NOTICE.txt",
"sha256": "30c2e7e80f5153b31ab57675e07246aef9165965d64e36022b426a26449ece3f",
"size": 204
},
{
"path": "README.txt",
"sha256": "82bf72bc542643f6c4090e0a5de69b0014ca3fa17c6f9dfb12cc41e44c8b8db6",
"size": 262
}
],
"format": "faset.export",
"generation": "e10bfc78-962f-45ef-a570-1237628cc7ec",
"lua_enabled": false,
"lua_fingerprint": "",
"platform": "linux",
"prerequisites": [
"Linux x86_64",
"Vulkan 1.3 driver",
"Compatible glibc and libstdc++ runtime"
],
"renderer_profile": {
"api": "Vulkan 1.3",
"materials": [
"base-color factor and texture",
"metallic and roughness factors"
],
"required_features": [
"dynamicRendering",
"synchronization2"
],
"shadow_map": {
"resolution": 1024,
"world_extent": 40
},
"texture_sampling": "linear clamp, one mip level",
"unsupported_material_features": [
"normal maps",
"metallic-roughness maps",
"emissive and occlusion maps",
"alpha mode selection",
"unlit mode",
"per-material face culling"
]
},
"scene_hash": "fdfa1c49cf78a1cf52cd41b201c35bb0b5f852c90b7626b2a7f17da3e2e3e24c",
"simulation": {
"fixed_delta": 0.016666666666666666,
"gravity": [
0,
-9.81,
0
],
"max_catch_up_ticks": 4,
"physics_substeps": 4
},
"units": {
"angle": "radian",
"coordinates": "right-handed Y-up",
"distance": "metre"
},
"validation_log": "{\"dimension\":2,\"validated\":true}\n",
"version": 1
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,18 @@
{
"arguments": [
"/tmp/faset-playable-exports-u_8rjufs/Faset Café 世界/collect-2d/faset_player",
"--headless",
"--frames",
"120",
"--capture",
"/tmp/faset-playable-exports-u_8rjufs/Faset Café 世界/collect-2d/verification.ppm",
"--profile",
"/tmp/faset-playable-exports-u_8rjufs/Faset Café 世界/collect-2d/profile.json"
],
"cwd": "/tmp/faset-playable-exports-u_8rjufs/empty-working-directory",
"seconds": 0.9394604200206231,
"exit_code": 0,
"timed_out": false,
"stdout": "New round: collect the three gold cubes, then reach the green exit. E resets.\n{\"device\":\"NVIDIA GeForce RTX 2080 Ti\",\"dimension\":2,\"frames\":120,\"gpu_visibility_active\":false,\"ticks\":120,\"validation_errors\":0,\"visibility_mode\":\"direct\"}\n",
"stderr": ""
}
@@ -0,0 +1,12 @@
{
"arguments": [
"/tmp/faset-playable-exports-u_8rjufs/Faset Café 世界/collect-2d/faset_player",
"--validate"
],
"cwd": "/tmp/faset-playable-exports-u_8rjufs/empty-working-directory",
"seconds": 0.011183144990354776,
"exit_code": 0,
"timed_out": false,
"stdout": "{\"dimension\":2,\"validated\":true}\n",
"stderr": ""
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

@@ -0,0 +1,198 @@
{
"completed_frames": 6,
"device": "NVIDIA GeForce RTX 2080 Ti",
"dimension": 3,
"fixed_delta_seconds": 0.016666666666666666,
"format": "faset.player-profile",
"height": 720,
"percentile_method": "nearest_rank_all_completed_frames_no_warmup_exclusion",
"presentation_mode": "offscreen",
"requested_frames": 6,
"resource_notes": "gpu_allocated_bytes sums live Vulkan memory allocations, including alignment, excluding driver internals. texture_count includes the white fallback texture.",
"samples": [
{
"draw_calls": 20,
"dropped_simulation_seconds": 0.0,
"fixed_ticks": 1,
"frame": 1,
"gpu_allocated_bytes": 15798512,
"gpu_ms": 0.61888,
"gpu_visibility_active": true,
"interpolation_alpha": 0.0,
"physics_debug": false,
"render_call_ms": 14.210575,
"renderer_cpu_ms": 14.203583,
"renderer_readback_cpu_ms": 6.924622,
"simulation_ms": 0.255843,
"snapshot_ms": 1.021316,
"texture_count": 1,
"tick": 1,
"vertices": 720,
"wall_ms": 15.597061
},
{
"draw_calls": 20,
"dropped_simulation_seconds": 0.0,
"fixed_ticks": 1,
"frame": 2,
"gpu_allocated_bytes": 15798512,
"gpu_ms": 0.608416,
"gpu_visibility_active": true,
"interpolation_alpha": 0.0,
"physics_debug": false,
"render_call_ms": 5.125658,
"renderer_cpu_ms": 5.116,
"renderer_readback_cpu_ms": 0.658192,
"simulation_ms": 0.28099,
"snapshot_ms": 0.235524,
"texture_count": 1,
"tick": 2,
"vertices": 720,
"wall_ms": 5.652933
},
{
"draw_calls": 20,
"dropped_simulation_seconds": 0.0,
"fixed_ticks": 1,
"frame": 3,
"gpu_allocated_bytes": 15798512,
"gpu_ms": 0.60528,
"gpu_visibility_active": true,
"interpolation_alpha": 0.0,
"physics_debug": false,
"render_call_ms": 4.80823,
"renderer_cpu_ms": 4.797389,
"renderer_readback_cpu_ms": 0.641901,
"simulation_ms": 0.297551,
"snapshot_ms": 0.276121,
"texture_count": 1,
"tick": 3,
"vertices": 720,
"wall_ms": 5.392282
},
{
"draw_calls": 20,
"dropped_simulation_seconds": 0.0,
"fixed_ticks": 1,
"frame": 4,
"gpu_allocated_bytes": 15798512,
"gpu_ms": 0.605824,
"gpu_visibility_active": true,
"interpolation_alpha": 0.0,
"physics_debug": false,
"render_call_ms": 5.855645,
"renderer_cpu_ms": 5.846038,
"renderer_readback_cpu_ms": 0.696824,
"simulation_ms": 0.32371,
"snapshot_ms": 0.245643,
"texture_count": 1,
"tick": 4,
"vertices": 720,
"wall_ms": 6.438234
},
{
"draw_calls": 20,
"dropped_simulation_seconds": 0.0,
"fixed_ticks": 1,
"frame": 5,
"gpu_allocated_bytes": 15798512,
"gpu_ms": 0.607584,
"gpu_visibility_active": true,
"interpolation_alpha": 0.0,
"physics_debug": false,
"render_call_ms": 4.411862,
"renderer_cpu_ms": 4.402855,
"renderer_readback_cpu_ms": 0.724306,
"simulation_ms": 0.290087,
"snapshot_ms": 0.231477,
"texture_count": 1,
"tick": 5,
"vertices": 720,
"wall_ms": 4.943475
},
{
"draw_calls": 20,
"dropped_simulation_seconds": 0.0,
"fixed_ticks": 1,
"frame": 6,
"gpu_allocated_bytes": 15798512,
"gpu_ms": 0.606208,
"gpu_visibility_active": true,
"interpolation_alpha": 0.0,
"physics_debug": false,
"render_call_ms": 3.279987,
"renderer_cpu_ms": 3.266321,
"renderer_readback_cpu_ms": 0.664774,
"simulation_ms": 0.318361,
"snapshot_ms": 0.250953,
"texture_count": 1,
"tick": 6,
"vertices": 720,
"wall_ms": 3.862496
}
],
"simulation_mode": "synthetic_fixed_timestep",
"startup_ms": {
"main_to_first_frame": 343.895332,
"renderer_initialization": 323.914923,
"scene_read": 0.505263,
"world_initialization": 1.141073
},
"summary_ms": {
"gpu": {
"max": 0.61888,
"min": 0.60528,
"p50": 0.606208,
"p95": 0.61888,
"samples": 6
},
"render_call": {
"max": 14.210575,
"min": 3.279987,
"p50": 4.80823,
"p95": 14.210575,
"samples": 6
},
"renderer_cpu": {
"max": 14.203583,
"min": 3.266321,
"p50": 4.797389,
"p95": 14.203583,
"samples": 6
},
"renderer_readback_cpu": {
"max": 6.924622,
"min": 0.641901,
"p50": 0.664774,
"p95": 6.924622,
"samples": 6
},
"simulation": {
"max": 0.32371,
"min": 0.255843,
"p50": 0.290087,
"p95": 0.32371,
"samples": 6
},
"snapshot": {
"max": 1.021316,
"min": 0.231477,
"p50": 0.245643,
"p95": 1.021316,
"samples": 6
},
"wall": {
"max": 15.597061,
"min": 3.862496,
"p50": 5.392282,
"p95": 15.597061,
"samples": 6
}
},
"timing_notes": "Durations use steady_clock wall time, not thread CPU usage. render_call/renderer_cpu include GPU waits, readback and window presentation. renderer_readback_cpu measures map/copy/unmap wall time within that call. GPU timestamps cover submitted rendering, not CPU work. A missing/zero GPU timestamp is null. Frame durations exclude profile bookkeeping and final capture/profile file writes. Startup begins at Player application entry after platform argument normalization, excluding OS loader/launcher.",
"validation_enabled": true,
"validation_errors": 0,
"version": 1,
"visibility_mode": "gpu-frustum",
"width": 1280
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

@@ -0,0 +1,198 @@
{
"completed_frames": 6,
"device": "NVIDIA GeForce RTX 2080 Ti",
"dimension": 3,
"fixed_delta_seconds": 0.016666666666666666,
"format": "faset.player-profile",
"height": 720,
"percentile_method": "nearest_rank_all_completed_frames_no_warmup_exclusion",
"presentation_mode": "offscreen",
"requested_frames": 6,
"resource_notes": "gpu_allocated_bytes sums live Vulkan memory allocations, including alignment, excluding driver internals. texture_count includes the white fallback texture.",
"samples": [
{
"draw_calls": 24,
"dropped_simulation_seconds": 0.0,
"fixed_ticks": 1,
"frame": 1,
"gpu_allocated_bytes": 38171888,
"gpu_ms": 0.771968,
"gpu_visibility_active": true,
"interpolation_alpha": 0.0,
"physics_debug": false,
"render_call_ms": 11.369366,
"renderer_cpu_ms": 11.362463,
"renderer_readback_cpu_ms": 3.603508,
"simulation_ms": 0.338388,
"snapshot_ms": 0.880631,
"texture_count": 1,
"tick": 1,
"vertices": 720,
"wall_ms": 12.728099
},
{
"draw_calls": 24,
"dropped_simulation_seconds": 0.0,
"fixed_ticks": 1,
"frame": 2,
"gpu_allocated_bytes": 38171888,
"gpu_ms": 0.724864,
"gpu_visibility_active": true,
"interpolation_alpha": 0.0,
"physics_debug": false,
"render_call_ms": 3.184266,
"renderer_cpu_ms": 3.170179,
"renderer_readback_cpu_ms": 0.641099,
"simulation_ms": 0.223501,
"snapshot_ms": 0.269128,
"texture_count": 1,
"tick": 2,
"vertices": 720,
"wall_ms": 3.687185
},
{
"draw_calls": 24,
"dropped_simulation_seconds": 0.0,
"fixed_ticks": 1,
"frame": 3,
"gpu_allocated_bytes": 38171888,
"gpu_ms": 0.721568,
"gpu_visibility_active": true,
"interpolation_alpha": 0.0,
"physics_debug": false,
"render_call_ms": 3.179287,
"renderer_cpu_ms": 3.170631,
"renderer_readback_cpu_ms": 0.509361,
"simulation_ms": 0.307731,
"snapshot_ms": 0.283124,
"texture_count": 1,
"tick": 3,
"vertices": 720,
"wall_ms": 3.785811
},
{
"draw_calls": 24,
"dropped_simulation_seconds": 0.0,
"fixed_ticks": 1,
"frame": 4,
"gpu_allocated_bytes": 38171888,
"gpu_ms": 0.722336,
"gpu_visibility_active": true,
"interpolation_alpha": 0.0,
"physics_debug": false,
"render_call_ms": 5.69337,
"renderer_cpu_ms": 5.685525,
"renderer_readback_cpu_ms": 0.436172,
"simulation_ms": 0.289446,
"snapshot_ms": 0.252797,
"texture_count": 1,
"tick": 4,
"vertices": 720,
"wall_ms": 6.245241
},
{
"draw_calls": 24,
"dropped_simulation_seconds": 0.0,
"fixed_ticks": 1,
"frame": 5,
"gpu_allocated_bytes": 38171888,
"gpu_ms": 0.73584,
"gpu_visibility_active": true,
"interpolation_alpha": 0.0,
"physics_debug": false,
"render_call_ms": 5.95359,
"renderer_cpu_ms": 5.941097,
"renderer_readback_cpu_ms": 0.531442,
"simulation_ms": 0.274438,
"snapshot_ms": 0.223482,
"texture_count": 1,
"tick": 5,
"vertices": 720,
"wall_ms": 6.460516
},
{
"draw_calls": 24,
"dropped_simulation_seconds": 0.0,
"fixed_ticks": 1,
"frame": 6,
"gpu_allocated_bytes": 38171888,
"gpu_ms": 0.72576,
"gpu_visibility_active": true,
"interpolation_alpha": 0.0,
"physics_debug": false,
"render_call_ms": 5.297592,
"renderer_cpu_ms": 5.082367,
"renderer_readback_cpu_ms": 0.648092,
"simulation_ms": 0.275159,
"snapshot_ms": 0.235665,
"texture_count": 1,
"tick": 6,
"vertices": 720,
"wall_ms": 5.82136
}
],
"simulation_mode": "synthetic_fixed_timestep",
"startup_ms": {
"main_to_first_frame": 367.40061,
"renderer_initialization": 351.144686,
"scene_read": 0.607135,
"world_initialization": 0.946856
},
"summary_ms": {
"gpu": {
"max": 0.771968,
"min": 0.721568,
"p50": 0.724864,
"p95": 0.771968,
"samples": 6
},
"render_call": {
"max": 11.369366,
"min": 3.179287,
"p50": 5.297592,
"p95": 11.369366,
"samples": 6
},
"renderer_cpu": {
"max": 11.362463,
"min": 3.170179,
"p50": 5.082367,
"p95": 11.362463,
"samples": 6
},
"renderer_readback_cpu": {
"max": 3.603508,
"min": 0.436172,
"p50": 0.531442,
"p95": 3.603508,
"samples": 6
},
"simulation": {
"max": 0.338388,
"min": 0.223501,
"p50": 0.275159,
"p95": 0.338388,
"samples": 6
},
"snapshot": {
"max": 0.880631,
"min": 0.223482,
"p50": 0.252797,
"p95": 0.880631,
"samples": 6
},
"wall": {
"max": 12.728099,
"min": 3.687185,
"p50": 5.82136,
"p95": 12.728099,
"samples": 6
}
},
"timing_notes": "Durations use steady_clock wall time, not thread CPU usage. render_call/renderer_cpu include GPU waits, readback and window presentation. renderer_readback_cpu measures map/copy/unmap wall time within that call. GPU timestamps cover submitted rendering, not CPU work. A missing/zero GPU timestamp is null. Frame durations exclude profile bookkeeping and final capture/profile file writes. Startup begins at Player application entry after platform argument normalization, excluding OS loader/launcher.",
"validation_enabled": true,
"validation_errors": 0,
"version": 1,
"visibility_mode": "gpu-occlusion",
"width": 1280
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

File diff suppressed because one or more lines are too long
@@ -0,0 +1,222 @@
{
"asset_generations": {
"5832763b-3ed0-44d6-9088-0b524f196a91": "4a5bfcc1437a7b4d65c388da2beace0308cceda8e16503d08ce676260f21d5c2"
},
"build_fingerprint": "337f590d99812f1509c9373117bda21a3ff7eb3e192f60a3752828d813e74b25",
"configuration": "Release",
"executable": "faset_player",
"files": [
{
"path": "scene.fscene",
"sha256": "21c364140669ec82c6886102667b255df5ccdf0ec77e0ca64060f84dd7b86632",
"size": 8639
},
{
"path": "faset_player",
"sha256": "716d250a863ccc9fc13304a1f7775b9c820c186d5b0a21e6c9a88bd98798abbf",
"size": 5977808
},
{
"path": "shaders/vertexMain.spv",
"sha256": "1ad2631c35d654f48166321ae43d4165043e1b919b14f1dc61caf97b1ada0898",
"size": 1224
},
{
"path": "shaders/fragmentMain.spv",
"sha256": "f5c4f289917ecab5d00d543c053aac1d10e6cca311fd172daf06d315160a3505",
"size": 7436
},
{
"path": "shaders/shadowMain.spv",
"sha256": "7643b4d688492b5ee923b9606f0b0e70343ca05fa67673838206119a6f86d8d8",
"size": 784
},
{
"path": "shaders/vertexMain.reflection.json",
"sha256": "c584f3b957ebf194a292451362a98590f85ff3cfbfd8f917b1c1265039381777",
"size": 2639
},
{
"path": "shaders/fragmentMain.reflection.json",
"sha256": "72ebf8d32452830650416dc4717d89a4324e97ece7028dfb97c66803c8dce71f",
"size": 2649
},
{
"path": "shaders/shadowMain.reflection.json",
"sha256": "e3fd0889cd2f569d410f5d7558a4091d9f57f247a1dcf1788462f67525340819",
"size": 2645
},
{
"path": "shaders/gpuVertexMain.spv",
"sha256": "041c1e5f0db4007c51e01ed5db6e0fbf4db09b8dcbcb085c0c73612cdc682fe3",
"size": 5008
},
{
"path": "shaders/gpuShadowMain.spv",
"sha256": "9078577943bf9c51220d5341434834eb4a28cf0f0f6203bad2b96e1b0e11b360",
"size": 2484
},
{
"path": "shaders/gpuCullMain.spv",
"sha256": "7691360ec55f41d40d43652f506b051cef8b3a3ddcdcc7db61a7d4d97f9e87d8",
"size": 16180
},
{
"path": "shaders/gpuHzbMain.spv",
"sha256": "08682362ee2120ed19d260e613285071747c3e436bb09bb6238e46f9cedc2308",
"size": 4140
},
{
"path": "shaders/gpuPostCullMain.spv",
"sha256": "62cb72e356346e1511c6d640a3cecb4a6e5283795338299b357edae5f7f52be4",
"size": 12460
},
{
"path": "shaders/gpuVertexMain.reflection.json",
"sha256": "3726c09d38e68cf0b6e317daaddb7b5b3e1bb0b073afd0eff43b8f1125378cd9",
"size": 3092
},
{
"path": "shaders/gpuShadowMain.reflection.json",
"sha256": "7fbe869421b61f0261729eac26ebda2a484d423583d3a5b739ba59bbf3afbe12",
"size": 2749
},
{
"path": "shaders/gpuCullMain.reflection.json",
"sha256": "996fe5c7e31c6b8f316d8f290b3be0ae7063eb46c500a661e8715e9b822a2598",
"size": 3587
},
{
"path": "shaders/gpuHzbMain.reflection.json",
"sha256": "589818f670881c64f3aba726ee3bc82fe4b9d835a347f99134e0e157dc4a112e",
"size": 2050
},
{
"path": "shaders/gpuPostCullMain.reflection.json",
"sha256": "eed140bbe09c7d14935b688c770261ac0e81677c0974aa811c88ed67ea779b95",
"size": 3591
},
{
"path": "assets/5832763b-3ed0-44d6-9088-0b524f196a91/generations/4a5bfcc1437a7b4d65c388da2beace0308cceda8e16503d08ce676260f21d5c2/meshes/mesh-fc069a07a87e0f831fd92efdbc4efa1f-0.fmesh",
"sha256": "98b38aca7d2786c58a2265ba4d1f2255123f03d31d947e239232cf55bfdc2c97",
"size": 928
},
{
"path": "assets/5832763b-3ed0-44d6-9088-0b524f196a91/generations/4a5bfcc1437a7b4d65c388da2beace0308cceda8e16503d08ce676260f21d5c2/meshes/mesh-0961e2a3f92977836a3aa80cab09277e-0.fmesh",
"sha256": "98b38aca7d2786c58a2265ba4d1f2255123f03d31d947e239232cf55bfdc2c97",
"size": 928
},
{
"path": "assets/5832763b-3ed0-44d6-9088-0b524f196a91/generations/4a5bfcc1437a7b4d65c388da2beace0308cceda8e16503d08ce676260f21d5c2/meshes/mesh-93b5b3e52cb6bb120fefb80e2d8e222b-0.fmesh",
"sha256": "3875c16ea628d4126373ebfe07816621fbad3961596a2fcd112f1eec0e378071",
"size": 928
},
{
"path": "assets/5832763b-3ed0-44d6-9088-0b524f196a91/generations/4a5bfcc1437a7b4d65c388da2beace0308cceda8e16503d08ce676260f21d5c2/manifest.json",
"sha256": "ee3f68794c6dc44ab492b1ba4640aa74e4de79a5ec10aed8dcdd45a03afc508e",
"size": 4532
},
{
"path": "assets/5832763b-3ed0-44d6-9088-0b524f196a91/current.json",
"sha256": "b0732959808ce61ef5a3223fba2d9ad8c17a3ea7873d4a81c00aadee6c51032e",
"size": 134
},
{
"path": "Notices/sdl3/LICENSE.txt",
"sha256": "97f35b302b361680ec1e891e95d2d52097bb95abff361434916d99dc1305f127",
"size": 884
},
{
"path": "Notices/entt/LICENSE",
"sha256": "0785027ce472d7c61f05fba664a1d3ba6639c1593ced351ad9e4bed868765d99",
"size": 1097
},
{
"path": "Notices/box2d/LICENSE",
"sha256": "68a3e676d7e94093b102d5cba0d4e04af812040d6f230c3db67a6664574e43d2",
"size": 1067
},
{
"path": "Notices/box3d/LICENSE",
"sha256": "da5e31a26bf3cfd5ba5c96d6823e480128c81e76c107ef9d3ee5d94789184b90",
"size": 1067
},
{
"path": "Notices/json/LICENSE.MIT",
"sha256": "46a65cffd1ea955132d95a8dd921640714a8d6b537d2e4e482d31145ae95b603",
"size": 1076
},
{
"path": "Notices/stb/LICENSE",
"sha256": "bebfe904b14301657e4e5d655c811d51fd31b97c455b9cc2d8600d6bac6cff63",
"size": 2510
},
{
"path": "Notices/dependencies.json",
"sha256": "a54639ad2d9ad13c2e5f1ec90d6775f5dfc493656789b78c7e44debe2a378fdc",
"size": 2206
},
{
"path": "Notices/Faset-NOTICE.txt",
"sha256": "30c2e7e80f5153b31ab57675e07246aef9165965d64e36022b426a26449ece3f",
"size": 204
},
{
"path": "README.txt",
"sha256": "82bf72bc542643f6c4090e0a5de69b0014ca3fa17c6f9dfb12cc41e44c8b8db6",
"size": 262
}
],
"format": "faset.export",
"generation": "013fe953-8787-45ac-963f-ffbd9ac5f636",
"lua_enabled": false,
"lua_fingerprint": "",
"platform": "linux",
"prerequisites": [
"Linux x86_64",
"Vulkan 1.3 driver",
"Compatible glibc and libstdc++ runtime"
],
"renderer_profile": {
"api": "Vulkan 1.3",
"materials": [
"base-color factor and texture",
"metallic and roughness factors"
],
"required_features": [
"dynamicRendering",
"synchronization2"
],
"shadow_map": {
"resolution": 1024,
"world_extent": 40
},
"texture_sampling": "linear clamp, one mip level",
"unsupported_material_features": [
"normal maps",
"metallic-roughness maps",
"emissive and occlusion maps",
"alpha mode selection",
"unlit mode",
"per-material face culling"
]
},
"scene_hash": "ee12794145c14ba5b599c5d9ae21648cccdfa91c47ee7742549f60d5fe7bc3e0",
"simulation": {
"fixed_delta": 0.016666666666666666,
"gravity": [
0,
-9.81,
0
],
"max_catch_up_ticks": 4,
"physics_substeps": 4
},
"units": {
"angle": "radian",
"coordinates": "right-handed Y-up",
"distance": "metre"
},
"validation_log": "warning: material material-bb63b094febbf90bb7049c9bcf7587bc has features beyond the initial base-color/PBR renderer\n{\"dimension\":3,\"validated\":true}\n",
"version": 1
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,18 @@
{
"arguments": [
"/tmp/faset-playable-exports-u_8rjufs/Faset Café 世界/collect-3d/faset_player",
"--headless",
"--frames",
"120",
"--capture",
"/tmp/faset-playable-exports-u_8rjufs/Faset Café 世界/collect-3d/verification.ppm",
"--profile",
"/tmp/faset-playable-exports-u_8rjufs/Faset Café 世界/collect-3d/profile.json"
],
"cwd": "/tmp/faset-playable-exports-u_8rjufs/empty-working-directory",
"seconds": 1.485020653984975,
"exit_code": 0,
"timed_out": false,
"stdout": "New round: collect the three gold cubes, then reach the green exit. E resets.\n{\"device\":\"NVIDIA GeForce RTX 2080 Ti\",\"dimension\":3,\"frames\":120,\"gpu_visibility_active\":false,\"ticks\":120,\"validation_errors\":0,\"visibility_mode\":\"direct\"}\n",
"stderr": "warning: material material-bb63b094febbf90bb7049c9bcf7587bc has features beyond the initial base-color/PBR renderer\n"
}
@@ -0,0 +1,12 @@
{
"arguments": [
"/tmp/faset-playable-exports-u_8rjufs/Faset Café 世界/collect-3d/faset_player",
"--validate"
],
"cwd": "/tmp/faset-playable-exports-u_8rjufs/empty-working-directory",
"seconds": 0.01345648302230984,
"exit_code": 0,
"timed_out": false,
"stdout": "{\"dimension\":3,\"validated\":true}\n",
"stderr": "warning: material material-bb63b094febbf90bb7049c9bcf7587bc has features beyond the initial base-color/PBR renderer\n"
}
@@ -0,0 +1,39 @@
Test project /home/emil/Desktop/.worktrees/Faset_Engine-p2/build/p2-release
Start 26: render_gpu_lifecycle
Start 29: render_gpu_open_sequence
1/15 Test #26: render_gpu_lifecycle ............. Passed 0.80 sec
Start 30: render_gpu_transparent
2/15 Test #30: render_gpu_transparent ........... Passed 0.43 sec
Start 27: render_gpu_views
3/15 Test #27: render_gpu_views ................. Passed 0.43 sec
Start 25: render_gpu_near
4/15 Test #25: render_gpu_near .................. Passed 0.36 sec
Start 23: render_gpu_lod
5/15 Test #23: render_gpu_lod ................... Passed 0.69 sec
Start 28: render_gpu_projection
6/15 Test #29: render_gpu_open_sequence ......... Passed 3.05 sec
Start 17: render_gpu_capacity
7/15 Test #28: render_gpu_projection ............ Passed 0.43 sec
Start 22: render_gpu_resize
8/15 Test #17: render_gpu_capacity .............. Passed 0.37 sec
Start 18: render_gpu_dense
9/15 Test #22: render_gpu_resize ................ Passed 0.38 sec
Start 24: render_gpu_teleport
10/15 Test #18: render_gpu_dense ................. Passed 0.30 sec
Start 16: render_gpu_empty
11/15 Test #24: render_gpu_teleport .............. Passed 0.38 sec
Start 21: render_gpu_cut
12/15 Test #16: render_gpu_empty ................. Passed 0.31 sec
Start 19: render_gpu_door
13/15 Test #21: render_gpu_cut ................... Passed 0.44 sec
Start 20: render_gpu_shadow
14/15 Test #19: render_gpu_door .................. Passed 0.42 sec
15/15 Test #20: render_gpu_shadow ................ Passed 0.30 sec
100% tests passed, 0 tests failed out of 15
Label Time Summary:
gpu = 9.09 sec*proc (15 tests)
p2 = 9.09 sec*proc (15 tests)
Total Test time (real) = 4.65 sec
@@ -0,0 +1,127 @@
Test project /home/emil/Desktop/.worktrees/Faset_Engine-p2/build/linux-debug
Start 37: build_schema_publication
Start 50: editor_gui_mcp
Start 44: editor_ui_reload
Start 46: editor_ui_templates
Start 34: lua_player_reload
Start 48: editor_ui_authoring
1/57 Test #48: editor_ui_authoring .............. Passed 2.61 sec
Start 32: player_shutdown_diagnostics
2/57 Test #34: lua_player_reload ................ Passed 3.22 sec
Start 47: editor_ui_gizmos
3/57 Test #46: editor_ui_templates .............. Passed 4.08 sec
Start 43: editor_ui_project_settings
4/57 Test #47: editor_ui_gizmos ................. Passed 1.50 sec
Start 45: editor_ui_launcher
5/57 Test #32: player_shutdown_diagnostics ...... Passed 2.37 sec
Start 42: editor_ui_import_conflicts
6/57 Test #44: editor_ui_reload ................. Passed 4.99 sec
Start 10: render_shader_reload
7/57 Test #43: editor_ui_project_settings ....... Passed 1.64 sec
Start 57: playable_3d
8/57 Test #45: editor_ui_launcher ............... Passed 1.24 sec
Start 41: ui_render
9/57 Test #42: editor_ui_import_conflicts ....... Passed 1.53 sec
Start 29: render_gpu_open_sequence
10/57 Test #50: editor_gui_mcp ................... Passed 6.83 sec
Start 8: render_offscreen
11/57 Test #57: playable_3d ...................... Passed 1.27 sec
Start 12: render_shader_reflection
12/57 Test #41: ui_render ........................ Passed 1.16 sec
Start 9: render_sprite_alpha
13/57 Test #8: render_offscreen ................. Passed 0.95 sec
Start 15: gpu_visibility
14/57 Test #9: render_sprite_alpha .............. Passed 0.76 sec
Start 26: render_gpu_lifecycle
15/57 Test #12: render_shader_reflection ......... Passed 1.58 sec
Start 56: playable_2d
16/57 Test #56: playable_2d ...................... Passed 0.60 sec
Start 28: render_gpu_projection
17/57 Test #15: gpu_visibility ................... Passed 2.00 sec
Start 25: render_gpu_near
18/57 Test #29: render_gpu_open_sequence ......... Passed 4.14 sec
Start 30: render_gpu_transparent
19/57 Test #10: render_shader_reload ............. Passed 6.04 sec
Start 17: render_gpu_capacity
20/57 Test #28: render_gpu_projection ............ Passed 2.29 sec
Start 24: render_gpu_teleport
21/57 Test #26: render_gpu_lifecycle ............. Passed 3.96 sec
Start 22: render_gpu_resize
22/57 Test #25: render_gpu_near .................. Passed 2.20 sec
Start 27: render_gpu_views
23/57 Test #30: render_gpu_transparent ........... Passed 2.74 sec
Start 23: render_gpu_lod
24/57 Test #17: render_gpu_capacity .............. Passed 2.51 sec
Start 16: render_gpu_empty
25/57 Test #24: render_gpu_teleport .............. Passed 2.28 sec
Start 18: render_gpu_dense
26/57 Test #22: render_gpu_resize ................ Passed 2.30 sec
Start 21: render_gpu_cut
27/57 Test #27: render_gpu_views ................. Passed 2.29 sec
Start 20: render_gpu_shadow
28/57 Test #37: build_schema_publication ......... Passed 14.35 sec
Start 36: process_and_cook
29/57 Test #36: process_and_cook ................. Passed 0.33 sec
Start 49: editor_mcp_stdio
30/57 Test #49: editor_mcp_stdio ................. Passed 0.28 sec
Start 19: render_gpu_door
31/57 Test #23: render_gpu_lod ................... Passed 2.55 sec
Start 6: lua_safety_contracts
32/57 Test #18: render_gpu_dense ................. Passed 2.42 sec
Start 3: assets_pipeline
33/57 Test #6: lua_safety_contracts ............. Passed 0.26 sec
Start 51: core
34/57 Test #16: render_gpu_empty ................. Passed 2.70 sec
Start 33: lua_cli_contracts
35/57 Test #3: assets_pipeline .................. Passed 0.17 sec
Start 2: runtime_contracts
36/57 Test #33: lua_cli_contracts ................ Passed 0.18 sec
Start 40: ui_widgets
37/57 Test #51: core ............................. Passed 0.21 sec
Start 5: lua_contracts
38/57 Test #21: render_gpu_cut ................... Passed 2.29 sec
Start 4: assets_blender_bundle
39/57 Test #20: render_gpu_shadow ................ Passed 2.23 sec
Start 55: tutorial_physics
40/57 Test #2: runtime_contracts ................ Passed 0.16 sec
Start 11: render_gpu_shader_contract
41/57 Test #5: lua_contracts .................... Passed 0.14 sec
Start 1: authoring
42/57 Test #55: tutorial_physics ................. Passed 0.09 sec
Start 38: editor_plugins
43/57 Test #4: assets_blender_bundle ............ Passed 0.14 sec
Start 52: tutorial_moving
44/57 Test #11: render_gpu_shader_contract ....... Passed 0.11 sec
Start 39: editor_session_settings
45/57 Test #40: ui_widgets ....................... Passed 0.21 sec
46/57 Test #1: authoring ........................ Passed 0.06 sec
Start 54: tutorial_spawning
Start 53: tutorial_following
47/57 Test #38: editor_plugins ................... Passed 0.08 sec
48/57 Test #52: tutorial_moving .................. Passed 0.07 sec
49/57 Test #54: tutorial_spawning ................ Passed 0.04 sec
Start 35: editor_mcp
Start 31: player_scene_contracts
Start 7: render_graph
50/57 Test #53: tutorial_following ............... Passed 0.05 sec
Start 14: visibility_policy
51/57 Test #35: editor_mcp ....................... Passed 0.03 sec
52/57 Test #31: player_scene_contracts ........... Passed 0.02 sec
53/57 Test #7: render_graph ..................... Passed 0.02 sec
Start 13: render_window_lifecycle
54/57 Test #39: editor_session_settings .......... Passed 0.08 sec
55/57 Test #14: visibility_policy ................ Passed 0.01 sec
56/57 Test #19: render_gpu_door .................. Passed 1.76 sec
57/57 Test #13: render_window_lifecycle ..........***Skipped 4.22 sec
100% tests passed, 0 tests failed out of 57
Label Time Summary:
gpu = 81.79 sec*proc (30 tests)
p2 = 38.66 sec*proc (15 tests)
window = 11.04 sec*proc (2 tests)
Total Test time (real) = 20.92 sec
The following tests did not run:
13 - render_window_lifecycle (Skipped)
@@ -0,0 +1,127 @@
Test project /home/emil/Desktop/.worktrees/Faset_Engine-p2/build/p2-release
Start 10: render_shader_reload
Start 32: player_shutdown_diagnostics
Start 44: editor_ui_reload
Start 34: lua_player_reload
Start 15: gpu_visibility
Start 29: render_gpu_open_sequence
1/57 Test #29: render_gpu_open_sequence ......... Passed 3.15 sec
Start 26: render_gpu_lifecycle
2/57 Test #15: gpu_visibility ................... Passed 3.31 sec
Start 37: build_schema_publication
3/57 Test #34: lua_player_reload ................ Passed 3.51 sec
Start 28: render_gpu_projection
4/57 Test #32: player_shutdown_diagnostics ...... Passed 4.60 sec
Start 30: render_gpu_transparent
5/57 Test #44: editor_ui_reload ................. Passed 5.01 sec
Start 25: render_gpu_near
6/57 Test #28: render_gpu_projection ............ Passed 1.77 sec
Start 23: render_gpu_lod
7/57 Test #37: build_schema_publication ......... Passed 2.03 sec
Start 27: render_gpu_views
8/57 Test #30: render_gpu_transparent ........... Passed 2.48 sec
Start 8: render_offscreen
9/57 Test #26: render_gpu_lifecycle ............. Passed 3.92 sec
Start 50: editor_gui_mcp
10/57 Test #10: render_shader_reload ............. Passed 7.15 sec
Start 24: render_gpu_teleport
11/57 Test #25: render_gpu_near .................. Passed 2.30 sec
Start 12: render_shader_reflection
12/57 Test #23: render_gpu_lod ................... Passed 2.23 sec
Start 9: render_sprite_alpha
13/57 Test #27: render_gpu_views ................. Passed 2.39 sec
Start 46: editor_ui_templates
14/57 Test #8: render_offscreen ................. Passed 1.53 sec
Start 45: editor_ui_launcher
15/57 Test #9: render_sprite_alpha .............. Passed 1.26 sec
Start 22: render_gpu_resize
16/57 Test #12: render_shader_reflection ......... Passed 1.56 sec
Start 18: render_gpu_dense
17/57 Test #24: render_gpu_teleport .............. Passed 2.04 sec
Start 17: render_gpu_capacity
18/57 Test #46: editor_ui_templates .............. Passed 1.98 sec
Start 16: render_gpu_empty
19/57 Test #50: editor_gui_mcp ................... Passed 2.78 sec
Start 21: render_gpu_cut
20/57 Test #45: editor_ui_launcher ............... Passed 1.57 sec
Start 48: editor_ui_authoring
21/57 Test #18: render_gpu_dense ................. Passed 2.48 sec
Start 19: render_gpu_door
22/57 Test #22: render_gpu_resize ................ Passed 2.74 sec
Start 43: editor_ui_project_settings
23/57 Test #48: editor_ui_authoring .............. Passed 1.58 sec
Start 20: render_gpu_shadow
24/57 Test #17: render_gpu_capacity .............. Passed 2.90 sec
Start 42: editor_ui_import_conflicts
25/57 Test #16: render_gpu_empty ................. Passed 2.48 sec
Start 41: ui_render
26/57 Test #21: render_gpu_cut ................... Passed 2.46 sec
Start 47: editor_ui_gizmos
27/57 Test #43: editor_ui_project_settings ....... Passed 1.66 sec
Start 36: process_and_cook
28/57 Test #36: process_and_cook ................. Passed 0.30 sec
Start 49: editor_mcp_stdio
29/57 Test #49: editor_mcp_stdio ................. Passed 0.25 sec
Start 4: assets_blender_bundle
30/57 Test #42: editor_ui_import_conflicts ....... Passed 1.75 sec
Start 33: lua_cli_contracts
31/57 Test #4: assets_blender_bundle ............ Passed 0.14 sec
Start 40: ui_widgets
32/57 Test #19: render_gpu_door .................. Passed 2.52 sec
Start 57: playable_3d
33/57 Test #41: ui_render ........................ Passed 1.71 sec
34/57 Test #47: editor_ui_gizmos ................. Passed 1.57 sec
Start 6: lua_safety_contracts
Start 51: core
35/57 Test #20: render_gpu_shadow ................ Passed 2.23 sec
Start 56: playable_2d
36/57 Test #51: core ............................. Passed 0.10 sec
Start 3: assets_pipeline
37/57 Test #6: lua_safety_contracts ............. Passed 0.14 sec
Start 38: editor_plugins
38/57 Test #57: playable_3d ...................... Passed 0.18 sec
Start 5: lua_contracts
39/57 Test #38: editor_plugins ................... Passed 0.03 sec
Start 1: authoring
40/57 Test #3: assets_pipeline .................. Passed 0.08 sec
Start 2: runtime_contracts
41/57 Test #40: ui_widgets ....................... Passed 0.22 sec
Start 11: render_gpu_shader_contract
42/57 Test #33: lua_cli_contracts ................ Passed 0.25 sec
Start 31: player_scene_contracts
43/57 Test #56: playable_2d ...................... Passed 0.10 sec
Start 55: tutorial_physics
44/57 Test #1: authoring ........................ Passed 0.03 sec
Start 39: editor_session_settings
45/57 Test #31: player_scene_contracts ........... Passed 0.01 sec
Start 35: editor_mcp
46/57 Test #2: runtime_contracts ................ Passed 0.04 sec
47/57 Test #11: render_gpu_shader_contract ....... Passed 0.03 sec
48/57 Test #39: editor_session_settings .......... Passed 0.02 sec
49/57 Test #35: editor_mcp ....................... Passed 0.01 sec
Start 7: render_graph
Start 14: visibility_policy
Start 54: tutorial_spawning
Start 52: tutorial_moving
50/57 Test #5: lua_contracts .................... Passed 0.09 sec
51/57 Test #7: render_graph ..................... Passed 0.02 sec
52/57 Test #14: visibility_policy ................ Passed 0.02 sec
Start 53: tutorial_following
Start 13: render_window_lifecycle
53/57 Test #55: tutorial_physics ................. Passed 0.06 sec
54/57 Test #54: tutorial_spawning ................ Passed 0.03 sec
55/57 Test #52: tutorial_moving .................. Passed 0.02 sec
56/57 Test #53: tutorial_following ............... Passed 0.02 sec
57/57 Test #13: render_window_lifecycle ..........***Skipped 4.23 sec
100% tests passed, 0 tests failed out of 57
Label Time Summary:
gpu = 79.96 sec*proc (30 tests)
p2 = 38.08 sec*proc (15 tests)
window = 7.01 sec*proc (2 tests)
Total Test time (real) = 18.39 sec
The following tests did not run:
13 - render_window_lifecycle (Skipped)
@@ -0,0 +1,97 @@
{
"source_report": "report.json",
"runs": [
{
"name": "collect-2d",
"mode": "gpu-frustum",
"frames": 6,
"gpu_visibility_active": true,
"validation_errors": 0,
"device": "NVIDIA GeForce RTX 2080 Ti",
"capture_sha256": "f9d74067d87c1ebf30c6db372a26d93b7285791c8cb0307a24af5adb23bf201a",
"profile": "collect-2d-gpu-frustum-profile.json",
"capture": "collect-2d-gpu-frustum.ppm",
"command": [
"/tmp/faset-playable-exports-u_8rjufs/Faset Café 世界/collect-2d/faset_player",
"--headless",
"--frames",
"6",
"--visibility",
"gpu-frustum",
"--profile",
"/home/emil/Desktop/.worktrees/Faset_Engine-p2/.cache/p2-playable-exports-retry/evidence/collect-2d-gpu-frustum-profile.json",
"--capture",
"/home/emil/Desktop/.worktrees/Faset_Engine-p2/.cache/p2-playable-exports-retry/evidence/collect-2d-gpu-frustum.ppm"
]
},
{
"name": "collect-2d",
"mode": "gpu-occlusion",
"frames": 6,
"gpu_visibility_active": true,
"validation_errors": 0,
"device": "NVIDIA GeForce RTX 2080 Ti",
"capture_sha256": "f9d74067d87c1ebf30c6db372a26d93b7285791c8cb0307a24af5adb23bf201a",
"profile": "collect-2d-gpu-occlusion-profile.json",
"capture": "collect-2d-gpu-occlusion.ppm",
"command": [
"/tmp/faset-playable-exports-u_8rjufs/Faset Café 世界/collect-2d/faset_player",
"--headless",
"--frames",
"6",
"--visibility",
"gpu-occlusion",
"--profile",
"/home/emil/Desktop/.worktrees/Faset_Engine-p2/.cache/p2-playable-exports-retry/evidence/collect-2d-gpu-occlusion-profile.json",
"--capture",
"/home/emil/Desktop/.worktrees/Faset_Engine-p2/.cache/p2-playable-exports-retry/evidence/collect-2d-gpu-occlusion.ppm"
]
},
{
"name": "collect-3d",
"mode": "gpu-frustum",
"frames": 6,
"gpu_visibility_active": true,
"validation_errors": 0,
"device": "NVIDIA GeForce RTX 2080 Ti",
"capture_sha256": "7d18da12d685ed41705175fd7c65887d767668c1614b1b7669c99f05c694d435",
"profile": "collect-3d-gpu-frustum-profile.json",
"capture": "collect-3d-gpu-frustum.ppm",
"command": [
"/tmp/faset-playable-exports-u_8rjufs/Faset Café 世界/collect-3d/faset_player",
"--headless",
"--frames",
"6",
"--visibility",
"gpu-frustum",
"--profile",
"/home/emil/Desktop/.worktrees/Faset_Engine-p2/.cache/p2-playable-exports-retry/evidence/collect-3d-gpu-frustum-profile.json",
"--capture",
"/home/emil/Desktop/.worktrees/Faset_Engine-p2/.cache/p2-playable-exports-retry/evidence/collect-3d-gpu-frustum.ppm"
]
},
{
"name": "collect-3d",
"mode": "gpu-occlusion",
"frames": 6,
"gpu_visibility_active": true,
"validation_errors": 0,
"device": "NVIDIA GeForce RTX 2080 Ti",
"capture_sha256": "7d18da12d685ed41705175fd7c65887d767668c1614b1b7669c99f05c694d435",
"profile": "collect-3d-gpu-occlusion-profile.json",
"capture": "collect-3d-gpu-occlusion.ppm",
"command": [
"/tmp/faset-playable-exports-u_8rjufs/Faset Café 世界/collect-3d/faset_player",
"--headless",
"--frames",
"6",
"--visibility",
"gpu-occlusion",
"--profile",
"/home/emil/Desktop/.worktrees/Faset_Engine-p2/.cache/p2-playable-exports-retry/evidence/collect-3d-gpu-occlusion-profile.json",
"--capture",
"/home/emil/Desktop/.worktrees/Faset_Engine-p2/.cache/p2-playable-exports-retry/evidence/collect-3d-gpu-occlusion.ppm"
]
}
]
}
@@ -0,0 +1,435 @@
{
"format": "faset.playable-export-verification",
"version": 1,
"started_utc": "2026-09-23T20:13:26.594779+00:00",
"platform": "linux",
"engine": "/home/emil/Desktop/.worktrees/Faset_Engine-p2",
"editor": "/home/emil/Desktop/.worktrees/Faset_Engine-p2/build/p2-release/faset_editor",
"standalone_root": "/tmp/faset-playable-exports-u_8rjufs",
"frames_per_game": 120,
"status": "passed",
"projects": [
{
"name": "collect-2d",
"dimension": 2,
"source_inputs": [
{
"path": ".gitignore",
"sha256": "53aa4d7124d4c8d93b8d7c4cb470b6c82b844e019a660d6243ffeadc50602de1"
},
{
"path": "README.md",
"sha256": "8cf5a2d6de849eb090b9ea6d5e27841f551bd06947e5054f0d2f59639a90edd0"
},
{
"path": "Scenes/main.scene.json",
"sha256": "be48a6d21385e717b6c8ebf9a3b4322eebbeff6bb067428e089ab5214be79854"
},
{
"path": "Scripts/Gameplay.cpp",
"sha256": "6b581b24da613e1915819de0a0f0ea820dd3333efa62c4b479a9ea7ffdbc6bcc"
},
{
"path": "Scripts/Gameplay.hpp",
"sha256": "4121587182ed4f74901b1c0757c53daadbf309af1d6bb5dd87fef142130ccbbe"
},
{
"path": "project.faset.json",
"sha256": "36e2acd32210f5489372a2331346a3294ead2395f0713e3e5fd2da4e83263689"
}
],
"generation": "e10bfc78-962f-45ef-a570-1237628cc7ec",
"configuration": "Release",
"standalone_directory": "/tmp/faset-playable-exports-u_8rjufs/Faset Café 世界/collect-2d",
"executable": "faset_player",
"package_file_count": 27,
"asset_generations": {},
"device": "NVIDIA GeForce RTX 2080 Ti",
"validation_enabled": true,
"validation_errors": 0,
"completed_frames": 120,
"summary_ms": {
"gpu": {
"max": 0.581792,
"min": 0.55696,
"p50": 0.56032,
"p95": 0.571968,
"samples": 120
},
"render_call": {
"max": 8.92785,
"min": 1.767093,
"p50": 2.388886,
"p95": 4.916754,
"samples": 120
},
"renderer_cpu": {
"max": 8.922791,
"min": 1.762985,
"p50": 2.372405,
"p95": 4.910192,
"samples": 120
},
"renderer_readback_cpu": {
"max": 3.480115,
"min": 0.461981,
"p50": 0.631702,
"p95": 1.483368,
"samples": 120
},
"simulation": {
"max": 4.035202,
"min": 0.141437,
"p50": 0.213794,
"p95": 0.321327,
"samples": 120
},
"snapshot": {
"max": 0.740767,
"min": 0.13285,
"p50": 0.194106,
"p95": 0.407779,
"samples": 120
},
"wall": {
"max": 9.833829,
"min": 2.085394,
"p50": 2.880784,
"p95": 5.96917,
"samples": 120
}
},
"capture": {
"width": 1280,
"height": 720,
"sampled_colors": 7,
"sha256": "f9d74067d87c1ebf30c6db372a26d93b7285791c8cb0307a24af5adb23bf201a"
},
"source_project_paths_unavailable": true,
"status": "passed"
},
{
"name": "collect-3d",
"dimension": 3,
"source_inputs": [
{
"path": ".gitignore",
"sha256": "53aa4d7124d4c8d93b8d7c4cb470b6c82b844e019a660d6243ffeadc50602de1"
},
{
"path": "Assets/exit-arch/create.py",
"sha256": "9c7291124fb1498a3f992ef74afc39cd98f9cc3e2ff4687c633bece85d580905"
},
{
"path": "Assets/exit-arch/manifest.json",
"sha256": "7a13347adc89761fb02ebeab3c58ba87f319cd62f53ec87a3bb61bcd066ffa55"
},
{
"path": "Assets/exit-arch/manifest.json.faset-import.json",
"sha256": "ef4eef28a18a0cc40a40df75db34c97faa5d783b891265f862633f3aec514afc"
},
{
"path": "Assets/exit-arch/payload/ee6c748a212905fc9c465cbe95c033e94b80be643624f4f240ad5353761205b3.glb",
"sha256": "ee6c748a212905fc9c465cbe95c033e94b80be643624f4f240ad5353761205b3"
},
{
"path": "Assets/exit-arch/source.blend",
"sha256": "ff2676bec97ab778e531e87a185ad716049ea3b05b4a4f0027a6345737735035"
},
{
"path": "README.md",
"sha256": "2df5ca4df47ab5d3d05d41508201296d4ad5ec876245f19f061767ade6a30e8f"
},
{
"path": "Scenes/main.scene.json",
"sha256": "61b65baf79e52f07ac386a7f98acf985a1b09e88770cdde37ef461dc94b9dcd7"
},
{
"path": "Scripts/Extensions/Beacon.hpp",
"sha256": "c60d56161eead16f541835053ad32ac3333383d83015709c060b7d45e0af5a97"
},
{
"path": "Scripts/Gameplay.cpp",
"sha256": "5d419786a6861d7f14ed4eca54634694d8cd43be5dbbd60a2c6790db665c3a6a"
},
{
"path": "Scripts/Gameplay.hpp",
"sha256": "4121587182ed4f74901b1c0757c53daadbf309af1d6bb5dd87fef142130ccbbe"
},
{
"path": "project.faset.json",
"sha256": "43d273b1054ec9069369073f54cc1fc7efb3d6b699dcd342c552a2dc2ef852ef"
}
],
"import": {
"asset_id": "5832763b-3ed0-44d6-9088-0b524f196a91",
"cache_hit": false,
"diagnostics": [],
"generation": "4a5bfcc1437a7b4d65c388da2beace0308cceda8e16503d08ce676260f21d5c2",
"manifest": {
"asset_id": "5832763b-3ed0-44d6-9088-0b524f196a91",
"files": [
{
"path": "meshes/mesh-fc069a07a87e0f831fd92efdbc4efa1f-0.fmesh",
"sha256": "98b38aca7d2786c58a2265ba4d1f2255123f03d31d947e239232cf55bfdc2c97",
"size": 928
},
{
"path": "meshes/mesh-0961e2a3f92977836a3aa80cab09277e-0.fmesh",
"sha256": "98b38aca7d2786c58a2265ba4d1f2255123f03d31d947e239232cf55bfdc2c97",
"size": 928
},
{
"path": "meshes/mesh-93b5b3e52cb6bb120fefb80e2d8e222b-0.fmesh",
"sha256": "3875c16ea628d4126373ebfe07816621fbad3961596a2fcd112f1eec0e378071",
"size": 928
}
],
"generation": "4a5bfcc1437a7b4d65c388da2beace0308cceda8e16503d08ce676260f21d5c2",
"importer": "faset-gltf-1/cgltf-1.15",
"input_key": {
"bundle_sha256": "7a13347adc89761fb02ebeab3c58ba87f319cd62f53ec87a3bb61bcd066ffa55",
"dependencies": {},
"importer": "faset-gltf-1/cgltf-1.15",
"settings": {},
"source": "ee6c748a212905fc9c465cbe95c033e94b80be643624f4f240ad5353761205b3",
"target_profile": "desktop-static-pbr-v1",
"toolchain": {
"cgltf": "360db1a95480fe102ae9c69b27c5d101167ff5ba",
"stb": "2c980bb59875b0d32144a71867fbdebb2f77cd20"
}
},
"kind": "scene",
"materials": [
{
"alpha_cutoff": 0.5,
"alpha_mode": "OPAQUE",
"base_color": [
0.2199999988079071,
0.28999999165534973,
0.3400000035762787,
1.0
],
"base_color_texture": -1,
"double_sided": true,
"emissive": [
0.0,
0.0,
0.0
],
"emissive_texture": -1,
"format": "faset.material",
"id": "material-bb63b094febbf90bb7049c9bcf7587bc",
"metallic": 0.07999999821186066,
"metallic_roughness_texture": -1,
"name": "Weathered stone",
"normal_texture": -1,
"occlusion_texture": -1,
"roughness": 0.800000011920929,
"unlit": false,
"version": 1
}
],
"meshes": [
{
"id": "mesh-fc069a07a87e0f831fd92efdbc4efa1f",
"name": "Cube.001",
"primitives": [
{
"material": 0,
"path": "meshes/mesh-fc069a07a87e0f831fd92efdbc4efa1f-0.fmesh"
}
]
},
{
"id": "mesh-0961e2a3f92977836a3aa80cab09277e",
"name": "Cube.002",
"primitives": [
{
"material": 0,
"path": "meshes/mesh-0961e2a3f92977836a3aa80cab09277e-0.fmesh"
}
]
},
{
"id": "mesh-93b5b3e52cb6bb120fefb80e2d8e222b",
"name": "Cube.003",
"primitives": [
{
"material": 0,
"path": "meshes/mesh-93b5b3e52cb6bb120fefb80e2d8e222b-0.fmesh"
}
]
}
],
"nodes": [
{
"id": "node-cec6e8cea80cf5a98ba3263a0156bee4",
"local_transform": [
1.0,
0.0,
0.0,
0.0,
0.0,
1.0,
0.0,
0.0,
0.0,
0.0,
1.0,
0.0,
0.0,
1.4500000476837158,
1.2999999523162842,
1.0
],
"mesh": 0,
"name": "Left post",
"parent_id": "",
"stable_source_id": true
},
{
"id": "node-5f8a90a6c4d27020d20bd4fa81d1d958",
"local_transform": [
1.0,
0.0,
0.0,
0.0,
0.0,
1.0,
0.0,
0.0,
0.0,
0.0,
1.0,
0.0,
0.0,
1.4500000476837158,
-1.2999999523162842,
1.0
],
"mesh": 1,
"name": "Right post",
"parent_id": "",
"stable_source_id": true
},
{
"id": "node-482463e486a8d1fd741340c653cd128f",
"local_transform": [
1.0,
0.0,
0.0,
0.0,
0.0,
1.0,
0.0,
0.0,
0.0,
0.0,
1.0,
0.0,
0.0,
3.0,
0.0,
1.0
],
"mesh": 2,
"name": "Lintel",
"parent_id": "",
"stable_source_id": true
}
],
"outputs": [
"node-cec6e8cea80cf5a98ba3263a0156bee4",
"node-5f8a90a6c4d27020d20bd4fa81d1d958",
"node-482463e486a8d1fd741340c653cd128f",
"mesh-fc069a07a87e0f831fd92efdbc4efa1f",
"mesh-0961e2a3f92977836a3aa80cab09277e",
"mesh-93b5b3e52cb6bb120fefb80e2d8e222b",
"material-bb63b094febbf90bb7049c9bcf7587bc"
],
"payload_source": "/home/emil/Desktop/.worktrees/Faset_Engine-p2/.cache/p2-playable-exports-retry/Faset Café 世界/collect-3d/Assets/exit-arch/payload/ee6c748a212905fc9c465cbe95c033e94b80be643624f4f240ad5353761205b3.glb",
"schema_version": 1,
"settings": {},
"source": "/home/emil/Desktop/.worktrees/Faset_Engine-p2/.cache/p2-playable-exports-retry/Faset Café 世界/collect-3d/Assets/exit-arch/manifest.json",
"source_sha256": "ee6c748a212905fc9c465cbe95c033e94b80be643624f4f240ad5353761205b3",
"textures": []
},
"previous_generation": "",
"removed_output_ids": []
},
"generation": "013fe953-8787-45ac-963f-ffbd9ac5f636",
"configuration": "Release",
"standalone_directory": "/tmp/faset-playable-exports-u_8rjufs/Faset Café 世界/collect-3d",
"executable": "faset_player",
"package_file_count": 32,
"asset_generations": {
"5832763b-3ed0-44d6-9088-0b524f196a91": "4a5bfcc1437a7b4d65c388da2beace0308cceda8e16503d08ce676260f21d5c2"
},
"device": "NVIDIA GeForce RTX 2080 Ti",
"validation_enabled": true,
"validation_errors": 0,
"completed_frames": 120,
"summary_ms": {
"gpu": {
"max": 0.603104,
"min": 0.57088,
"p50": 0.57456,
"p95": 0.587488,
"samples": 120
},
"render_call": {
"max": 15.27347,
"min": 1.95597,
"p50": 2.713318,
"p95": 8.219264,
"samples": 120
},
"renderer_cpu": {
"max": 15.265616,
"min": 1.95115,
"p50": 2.705423,
"p95": 8.212883,
"samples": 120
},
"renderer_readback_cpu": {
"max": 5.034867,
"min": 0.493391,
"p50": 0.680484,
"p95": 2.359841,
"samples": 120
},
"simulation": {
"max": 9.318287,
"min": 0.205918,
"p50": 0.288985,
"p95": 1.079266,
"samples": 120
},
"snapshot": {
"max": 2.595406,
"min": 0.178897,
"p50": 0.267054,
"p95": 0.536412,
"samples": 120
},
"wall": {
"max": 15.872521,
"min": 2.389648,
"p50": 3.497057,
"p95": 9.960939,
"samples": 120
}
},
"capture": {
"width": 1280,
"height": 720,
"sampled_colors": 42,
"sha256": "914060401de93d08b33bf09a1e210859e491a0060c331e5e2044f517356f4980"
},
"source_project_paths_unavailable": true,
"status": "passed"
}
],
"finished_utc": "2026-09-23T20:19:17.315585+00:00"
}
@@ -0,0 +1,10 @@
spirv-val --target-env vulkan1.3 (Release bundle)
compatibility.spv sha256=83d519113c99c7b14cf92bc6e0e9867edd91da1f370f964df6ba978d51470a54 exit=0
fragmentMain.spv sha256=f5c4f289917ecab5d00d543c053aac1d10e6cca311fd172daf06d315160a3505 exit=0
gpuCullMain.spv sha256=7691360ec55f41d40d43652f506b051cef8b3a3ddcdcc7db61a7d4d97f9e87d8 exit=0
gpuHzbMain.spv sha256=08682362ee2120ed19d260e613285071747c3e436bb09bb6238e46f9cedc2308 exit=0
gpuPostCullMain.spv sha256=62cb72e356346e1511c6d640a3cecb4a6e5283795338299b357edae5f7f52be4 exit=0
gpuShadowMain.spv sha256=9078577943bf9c51220d5341434834eb4a28cf0f0f6203bad2b96e1b0e11b360 exit=0
gpuVertexMain.spv sha256=041c1e5f0db4007c51e01ed5db6e0fbf4db09b8dcbcb085c0c73612cdc682fe3 exit=0
shadowMain.spv sha256=7643b4d688492b5ee923b9606f0b0e70343ca05fa67673838206119a6f86d8d8 exit=0
vertexMain.spv sha256=1ad2631c35d654f48166321ae43d4165043e1b919b14f1dc61caf97b1ada0898 exit=0