All Rust commits from Facepunch
Establish basic compatibility with SRP/RRP
RRP: Prevent NRE from destroyed cameras
rebase on main
Added statistical analysis for mesh sizes to Indirect Instancing Tools
Enable Read/Write for 2752 meshes below 128 KB
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.
rebase on main
▋ █▅▍▊██ ▋▋▇▅▆██▄ ▅▌▋██▆▇▇█▉ ▌▊▄▋▅▇ ▅█▉▍▅▌
Remove _CommandID shader property to not ever confuse any shader compilers
fix server build
Render single-draw commands through Graphics.RenderMeshIndirect()
Check Unity object lifetime before calling onVisibilityChanged callback

fix compile error

LightGroupAtTime: keep track of renderers under RendererLODs to properly update instancing when emission changes
avoid NRE when enabling indirect instancing

exclude renderers with negative scale from instancing and warn about them
▌ ▌▄▋ ▍▇▆▄▅▋▌█▍ ▉▊▍▇▊▋▋ ▆▍▇ ▄▋▇▊██▌▅ ▅▊▊▌▇█▋▊▉▄ ▋▍▄▇█ ▅▄▊▉▊▆▌▊▅ ▍▉▍▄▊▊▌▉▆ ▉▊▌▇▊▆█▉▍ ▆▊▉▍▆▊▆▅ ▉▋▍▆ ▍▇▍▉ ▍▌ █▋▄▌▆▆▊
rebase on main
* 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`.

fix EmissionToggle with indirect instancing

fix EmissionScaledByLight with indirect instancing
Fixed slot machine not animating with Indirect Instancing
rebase on main
resolve conflicts
merge from main
* 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.
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.
rebase on main
rebase on main
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)
rebase on main
Fix client and server build 🎳
rebase on main
* 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)
rebase on main
CodeGen
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
rebase on main
Made non-monster (mesh-draw) renderers toggleable for performance testing
Mark Indirect Instancing as DeveloperOnly
Fixed NRE in FallbackMemory.SubmitDrawCalls and other problems by using a free space bitmap and keeping fallback indices stable
rebase on main