All Rust commits from Facepunch
Add queue system for adding/removing instances to prevent colliding with the jobs
Implement a fallback renderer for non-instanced draw calls based on Graphics.RenderMesh()
Disable only unsupported submeshes in MeshRenderers, not all of them
Re-enable texture streaming jobs
* Restore damage tracking for command and instance buffers * Skip RemoveDestroyedMeshes() as it doesn't seem to be needed anymore and it was taking well over 3 ms
Improve performance in the hierarchical culling job by reordering the culling tests by cost
Fix wrong index calculation in ArrayEx.RemoveAtNoResize()
Improve handling of null meshes in RustRenderer auto conversion
Grow block allocations exponentially because linearily wastes more buffer space.
Implement ArrayEx.RemoveAt* utility functions
- Render all instanceable submeshes instead of rejecting the whole mesh - Use real LOD thresholds instead of 5 meter increments
- Disable LOD fading to be reintroduced when LOD switching is stable - Pass final Mesh instead of MeshFilter to instancing system to allow assets based on MeshLOD to work properly - Restructure RustRenderer for more robust automatic conversion - Fix invisible LODs by merging duplicate entries referring to the same Mesh
Fix frustum culling by skipping damage tracking as a temporary workaround
Prevent NRE when a MeshCull is without a MeshRenderer or MeshFilter
Do not update indirect instancing system when scene is loading
Do not update indirect instancing system when scene is loading
Always grow GPU instancing buffers exponentially to prevent VRAM exhaustion in during initial spawn.
merge from main
merge from main
First complete (but mostly broken) implementation of indirect instancing. Split most classes into separate files for easier handling and less conflicts.
Regenerate console system
cherry-pick platform fixes
cherry-pick platform fixes
merge from main
Merge from /main
Add terrain occlusion culling to the instanced renderer (WIP)
Fix release build
Add frustum culling to the instanced calls
Cherry pick quality_level_squash
Add texture streaming support to indirect instanced rendering
Automatically remove any meshes from the instancing system that have been destroyed by Unity for whatever reason.
Port all new fixes and refactors from InstancedDebugDraw to IndirectInstancing
Fix compilation due to renaming of FastDebugDraw to InstancedDebugDraw
Merge from main
Merge from /main
Merge from /main
Cerry-pick BufferMemoryBase, CommandMemoryBase and InstanceMemoryBase
Cherry-pick marking DamageTracker `public`
Mark DamageTracker `public` (again 🙄)
Mark DamageTracker `public`
(Add) Pull out MemoryBlock, AllocatingMemoryBlock and DamageTracker into separate files so they can be reused. In a different directory this time, so Plastic may allow me to cherry-pick, please.
(Remove) Pull out MemoryBlock, AllocatingMemoryBlock and DamageTracker into separate files so they can be reused. In a different directory this time, so Plastic may allow me to cherry-pick, please.
(Add) Pull out MemoryBlock, AllocatingMemoryBlock and DamageTracker into separate files so they can be reused by /main/fast_debug_draw
(Remove) Pull out MemoryBlock, AllocatingMemoryBlock and DamageTracker into separate files so they can be reused by /main/fast_debug_draw
Use FastDebugDraw to draw debugging information of IndirectInstancing
Merge from /fast_debug_draw
Merge from /main
Collect debug information about whether the color supplied by RendererBatch matches the color in the material property block
Restructure handling of debug code in IndirectInstancingCamera
Indirect Instancing: Initial support for material propery blocks (only _Color so far)