Performance and compatibility
Optimization
Tune density, distance, chunking, culling, memory, and runtime quality.
Measure the Player
Use a Development Player at a fixed resolution, camera, quality level, density, lighting mode, and graphics API. Warm the renderer before sampling. Report CPU frame time, GPU frame time, grass-stage CPU markers, visible blades, visible chunks, indirect commands, GPU memory, and steady-state managed allocation separately.
Editor Game-view FPS is useful for interaction checks but is not a release benchmark. Record controlled Development Player results for the target hardware and keep internal evidence separate from the distributable package.
Select the quality budget
| target | package profile | runtime level | intended use |
|---|---|---|---|
| cinematic desktop | Cinematic | High | hero shots and the 60 FPS reference scene |
| balanced desktop | Desktop High | Medium | the replacement for the old planned Desktop Balanced preset |
| high mobile | Mobile High | High | compute-capable mobile targets after device validation |
| low mobile | Mobile Low | Low | reduced distance, survivors, and cameras |
| disabled | any | Off | no culling, upload, stomp, or draw work |
High, Medium, and Low reuse the same packed 24-byte blade allocation. Normal Off retains it for instant reactivation. Release Resources While Off is a separate delayed memory policy and can add a reload or regeneration cost later.
Tune the real bottleneck
- If GPU time rises with stable CPU time, reduce survivor density, maximum distance, shadows, procedural motion vectors, semantic field resolution, or overdraw-heavy far width.
- If CPU grass stages rise with species count, inspect visible commands. Species share one blade budget but require material and geometry command ranges.
- If memory is high, lower the total blade cap or author a smaller field. Do not create one blade allocation per runtime quality level.
- If dirty painting stalls, increase chunk size only after measuring the tradeoff between command count and patch granularity.
- If a distant field is open and automatic Hi-Z has no profitable occlusion, its backoff path is expected. Do not force Hi-Z merely because it exists.
Still stuck?
Bring the renderer status with you.
Include the Kiwi Grass version, Unity and URP versions, operating system, graphics API, renderer status, Player log, and a minimal reproduction.