branchrust_reboot/main/indirect_instancingcancel
194 Commits over 243 Days - 0.03cph!
Enable 3052 materials for instancing
Final SIMD frustum culling implementation for x86/AVX and untested implementation for ARM/Neon
Fix ARM/Neon SIMD (and non-SIMD) code for frustum culling.
Implement NativeArray.ReinterpretLoad() for NativeArray.ReadOnly to avoid triggering concurrency checks.
Fix unity_BaseCommandID not being set on Mac
Fix stencil buffer incompatibility in Standard and Standard-Terrain
Merge from ./command_buffer_indirect because I'm stupid
Merge from ./command_buffer_indirect
Added debug functions to get a list of the largest meshes in VRAM and a counter to keep track of transparent calls in indirect instancing.
- Added a crude way to estimate mesh VRAM and RAM usage
- Added a command to find duplicate meshes in the instancing system
Added a crude profiler that works in release builds
More toggleables: merge_damage (fixed), motion_list, remove_queue
Split MotionList in separate file
- fixed mip level calculation errors for fallback objects
- fixed fallback objects not properly updating when in motion
Implement texture streaming support for the instanced fallback renderer
Remove CombineTrivialDistancesJob
Fix NRE when trying to move an instance that previously failed the instancing checks
Prepare models and materials for instancing (once again)
Revert materials and models
Implemented support for instances in motion and other fixes
Eliminate the need to update call indices because they are stable and can be stored with each command
Made `count` property report the highest populated index instead of the allocated space.
WIP work to speed up culling (AVX fix)
Added toggles to turn culling stages on and off
Small cleanups left over from a failed experiment
Make all buffer memory blocks have a Swap() function
Speed up instancing terrain culling by only walking a single wide ray from the top of the bounding box: "If you can't see the ears, then you can't see the cat."
Enable GPU instancing and Read/Write on 5913 assets
Removed references to RendererWrapper
Revert materials and meshes for merge
Implemented command reorganising: Ensures that indirect args that survived culling are contiguous in memory so that culled commands can be skipped. This speeds up the colour pass on the render thread by almost 2x.
Unify LOD showing/hiding logic and ensure that Hide() is called when a state is covered by instancing
do not copy shadow mode from renderer to avoid rendering shadows twice
- Fixed invisible objects due to state information ending up wrong in the prefab pool
- Fixed method ambiguity build error in BufferList
- Merged aggressiveShadowLod optimisation into InstancedLODComponent
- Allow RendererLOD collapsing when instancing is enabled
- Added stats about fallback rendering to indirect instancing diagnostics
- Fixed shadow proxy detection
- Avoid leaking memory by actually destroying monster meshes before recreating them
Re-enabled instancing for the Nature/Cliff shaders
- Found a way to unity instance adding/removal code under InstancedLODComponent. This is starting to look very solid now.
- Started extending BufferList to work with Span<T>
- Added ArrayPoolBufferList as an experiment
Fix compilation error about RecordUnsupportedMaterial