branchrust_reboot/main/procgen_visualiser/generation_optimisationscancel
4 Commits over 0 Days - Infinitycph!
Prefab filters can now check topology in radius using generated distance transform fields of Chebyshev distance to the nearest texel of that topology. Effectively a per-stage cache of distance from topologies to avoid walking texels.
- Built in two-pass Burst
- Built per-stage only when a stage has asked about a bit 100k times to make the building worth it. Bits written mid-stage fall back to the existing texel scan (decor that writes topology as it is placed)
- TerrainTopologyMap.GetTopology picks fields or the existing texel scan
New tests compared with previous baseline show 8-12s saved (Cliffs Hills & Cliffs Hills Small) depending on the seed. Roughly 3% time savings across the entire generation.
Radius scans per run dropped from 8.76 billion -> 2.12 billion.
Prefab placement is slightly stricter as fields check a full square of texels whereas the scan clipped corners at radii of 1 or 2 texels. Recorded a 1.6% reduction cliff hills small placements (0.7% of all prefabs)
Replace powershell nonsense with Unity editor window, similar to ProcgenReplay.
Updated procgen benchmark to create durable version controlled results (we could probably further automate and grafana this at a later date).
Ran a baseline test over 2 repeats of 5 size 3250 seeds (10 runs total), median 205.9s generation time (per-stage breakdown in the CSV).
Added a per-stage benchmark measurement harness before moving onto experimental optimisations. To be used to measure future improvements and map changes.
- ProcgenStats: time per-stage, number of prefabs placed, placement hash, counters (filter calls, radius scans, texel reads, anchor scans, monument attempts).
- ProcgenBenchmark: editor tooling to generate maps for queued seeds and writes a CSV row per-stage. One map per play session, exiting play mode after each generation.
- Powershell scripts to drive the editor benchmarks and compare CSV outputs by hash and stage time
merge from procgen_visualiser