444 Commits over 335 Days - 0.06cph!
Split crude profiler and memory tally into separate files as they should
- Add more ConVars and explainations to indirect instancing
- Disable indirect instancing by default
- Disable debug info by default
- Fix multiple NREs when returning to the main menu
- Add assertions to catch use after free with the crude profiler / memory tally
Check for AVX2 support instead of FMA because Burst won't compile for FMA specifically.
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
Revert model importers and materials to the state they have on /main
(WIP) SIMD frustum culling implementation
Increase minimum considered graphics memory for texture streaming budget calculations to 8 GB. This should reduce blurryness on lower end GPUs, possibly at the cost of frame rate.
Increase minimum considered graphics memory for texture streaming budget calculations to 8 GB.
Merge from ./command_buffer_indirect
Update indirect instancing tools with new mesh r/w logic
Re-enable Read/Write for collision meshes only
Wrote SIMD distance culling code for ARM64/Neon as well as a scalar variant that vectorises well for SSE2/SSE4.
Fix build error due to InstanceHandleList
Reset meshes to their state in /main
Fix class layout build error
Found another double rendering issue in MeshCull
Set GPU instancing on materials
Enable Read/Write for nature assets
(Test) set all meshes isReadable=0
Subtract mesh and material changes
work around unity_BaseCommandID not being set
Fix build regarding AssetDatabase
Fix build error about missing TerrainTools
Set correct stencil states in all sub shaders that are used by indirect instancing in order to emulate what Unity normally does during the GBuffer pass
Implement indirect instancing without requiring monster meshes:
- Use a command buffer to submit indirect draw calls referring to individual meshes
- Monster meshes are disabled by default
- Mesh Read/Write is no longer required
- Should reclaim ~3 GB of VRAM and RAM
- Calculate UV distribution metrics based on individual meshes rather than monster meshes
Instancing shaders now always access the IndirectDrawIndexedArgs buffer in order to retrieve the startInstance parameter which is no longer passed to Unity.
MegaMesh approach (1+2) WIP
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.
Add a function to estimate memory usage to the batching system
Move EstimateMeshBytes to an extension.
Allow drawing instances without making use of monster meshes.
- 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