bench/scenes: 10,000 scripted spinning cubes (simulated, and rendered at 1280x720), a city of 5,184 towers flown through at street level (rendered with shadows, with and without GPU culling), 2,000 boxes settling in a pen (PhysX), and 5,000 job-system particles. Scripts live in the samples (BenchScenes.cs,JobSwarm.cs).tassix_player --bench-out <json>writes mean/p50/p99/max of the steady frames (after 60 warmup frames), waiting for the GPU each rendered frame; render benchmarks report "skipped" on machines without a hardware adapter.bench/budgets.jsonandcargo xtask bench-check: fail when a frame time exceeds its budget (about three times this machine's);cargo xtask ciruns it, the workflow scales budgets for hosted runners (TASSIX_BENCH_SCALE) and uploads the results.cargo xtask bench-unity: builds a Unity 6000.2 Windows player (Mono) frombench/unity-projectwith the same scripts, the scenes set up in code with the same values, runs each benchmark (rendering ones windowed, the others with -nographics), and writes the table totarget/bench/comparison.md. Measured (RTX 4070 SUPER; Tassix on Vulkan, Unity on D3D12; mean / p99 ms): | benchmark | Tassix | Unity | Unity / Tassix | |---|---|---|---| | cubes_simulate | 3.01 / 4.90 | 3.14 / 4.26 | 1.04x | | cubes_render | 6.47 / 8.39 | 6.09 / 7.87 | 0.94x | | city_render | 1.54 / 2.32 | 1.50 / 2.21 | 0.98x | | physics_pile | 3.37 / 5.73 | 1.48 / 2.20 | 0.44x | | jobs_swarm | 3.02 / 4.52 | 5.75 / 6.40 | 1.91x |- Findings: physics is 2.3x slower than Unity's (a target: the per-body transform sync and contact reporting), the job system is faster than Unity's without Burst, rendering is on par. GPU culling doesn't pay off yet on the city (1.54 vs 1.32 ms without it): the culling passes cost more than the simple cubes they skip, and shadow casters aren't culled.
- Next: the cooked rkyv asset format with memory-mapped streaming.
Phase 5 · Slice 23 ·