612 Commits over 457 Days - 0.06cph!
A week's worth of fixes for indirect:
- Added a `spawnprefab` editor-only command that allows to spawn (and pre-process) any prefab for testing.
- Moved indirect ConVar stuff to a proper indirect_instancing.cs
- Temporarily removed Core/* shaders from the compatibility list because indirect support is unclear.
- Revamped the indirect compatibility decision logic to be more granular and robust.
- Fixed invisible models when a renderer in instanceable but none of its materials are.
- Fixed NRE when encoundering null materials.
- Added TryEnqueueAdd which gives feedback about when enqueing a renderer failed due to incompatibility.
- Downgraded assertion exception when a shader wasn't found to just a warning.
- Reworked RejectReason structure to a struct fully interoperable with bool.
- RustRenderer now remembers original shadow casting modes so that they can be restored when indirect rendering is disabled.
- Store errors reported by TryEnqueueAdd in RustRenderer for debug purposes.
- Automatically disable RustRenderer if object is a shadow proxy.
- Automatically disable RustRenderer if any submeshes are incompatible with either indirect or fallback rendering.
Fixed shader errors about missing implementations of vertInstancingSetup
Fix construction guide not appearing
Changed implementation to only render colour pass and leave shadow culling and rendering to Unity
Fixed various causes that could render meshes twice
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()
merge from debug_draw_fixes (Make `ddraw.clear` work with Instanced DDraw)
Make `ddraw.clear` work with Instanced DDraw
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.
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
▆ █▍▊▇▇▌▊ ▋▅▍▌ ▇▉█▉▍▊ ▍▅▍▋▆▋▄▅ ▉▇▅ ▇▊█▄▌ ▍▍▋▊▋ ▇▍▅▆▄ ▆▊ ▆▆▉▊▊ ▊▋▄█▉▅▅ ▊▅ ▋▉███
Server: Fix error message about missing `InstancedDebugDraw` script
Fix: Add "vine" to texture streaming exclude patterns.
Fix texture streaming exclude pattern for keypad lock shock effect
Fix `billboard` filter patten not catching certain new textures and breaking texture streaming on them.
Add ConVar `memory_budget_factor`. Giving players with little VRAM a way to mitigate blurry textures at the cost of performance by allowing texture memory to spill over into system memory.
Disable streaming on problematic textures after updating exclude patterns based off previous manual fixes (thanks to Aron Striebich for making a list!)
Fix textures that should be streamable but aren't based on heuristic; saving about 1.8 GB of texture memory; should mostly mitigate blurry texture issues on 4 GB cards.
Restrict texture streaming debug ConVars to development builds only.