966 Commits over 761 Days - 0.05cph!
Added basic support for occlusion culling to indirect instancing
Fixed hack test not correctly skipping single draw renderers
Disable fallback rendering by default
Added `hack_test` option to simulate the potential performance gains from rendering multiple separate meshes with a single render node.
merge from /indirect_instancing
▋ █▅▍▊██ ▋▋▇▅▆██▄ ▅▌▋██▆▇▇█▉ ▌▊▄▋▅▇ ▅█▉▍▅▌
Remove _CommandID shader property to not ever confuse any shader compilers
Render single-draw commands through Graphics.RenderMeshIndirect()
Check Unity object lifetime before calling onVisibilityChanged callback
avoid NRE when enabling indirect instancing
▌ ▌▄▋ ▍▇▆▄▅▋▌█▍ ▉▊▍▇▊▋▋ ▆▍▇ ▄▋▇▊██▌▅ ▅▊▊▌▇█▋▊▉▄ ▋▍▄▇█ ▅▄▊▉▊▆▌▊▅ ▍▉▍▄▊▊▌▉▆ ▉▊▌▇▊▆█▉▍ ▆▊▉▍▆▊▆▅ ▉▋▍▆ ▍▇▍▉ ▍▌ █▋▄▌▆▆▊
merge from indirect_instancing
* Turn `_PARTICLELAYER_ON` back to a multi_compile keyword to fix snow coverings.
* Reject renderers with property blocks that set `_ParticleLayer` from instancing.
* Keep renderers non-instanced when `indirect_instancing.fallback` is disabled.
* Store reasons for reject/fallback and display it in the debug overlay.
* Do not spam the console about fallback instances.
* Rename ConVars monsters/non_monsters to multi_draw/single_draw for consistency.
* Guard dangerous Indirect Instancing ConVars behind ClientAdmin.
* Display the current biome when running `terrain.debug`.
Fixed slot machine not animating with Indirect Instancing
merge from /indirect_instancing
* Add an extra update call at the end of the frame after spawning instanced objects to catch spawn-then-move position errors.
* Only deal with valid LOD states and skip invalid states both in the middle and at the end of the state array.
* Reject renderers without materials outright.
merge from indirect_instancing
Fixed NRE and missing objects after toggling Indirect Instancing at runtime.
- Don't reuse MaterialPropertyBlock arrays and allocate completely new ones instead.
- Keep separate MPB references for per-renderer and per-material blocks and decide which one to use later.
- Ignore empty LOD states everywhere it makes sense.
merge from indirect_instancing
Update terminology for debug overlay
Use direct-to-VRAM buffer uploads on Mac to fix memory leak.
Force-disable Occlusion Culling when Indirect Instancing is enabled. (Only until Indirect Instancing can ingest result data from Occlusion Culling)
merge from indirect_instancing (build fix)
Fix client and server build 🎳
merge from indirect_instancing
* Fixed doors getting detached when operated on a vehicle with indirect instancing
* Fixed ghost objects being left behind if they had skins applied.
* Fixed debug overlay not returning correct results in the editor
* Improved debug overlay to be more useful and readable
* Added prototype SIMD collider-less raycasting code. (WIP)
merge from indirect_instancing
Remove DeveloperOnly restriction from Indirect Instancing Convars
Add an assertion when trying to update visibility while jobs are running
Fix assertion triggered when another player uses a telephone
merge from shader_variant_cleanup
Made non-monster (mesh-draw) renderers toggleable for performance testing
merge from indirect_instancing
Mark Indirect Instancing as DeveloperOnly
Fixed NRE in FallbackMemory.SubmitDrawCalls and other problems by using a free space bitmap and keeping fallback indices stable