branchrust_reboot/main/indirect_instancingcancel
260 Commits over 304 Days - 0.04cph!
Merge bitmapped_damage_tracking → indirect_instancing
Clean up some failed experiments
Fix nothing rendering for real this time.
Fix nothing actually rendering with new Graphics.DrawMeshInstancedIndirect based draw call submission
Fix NRE in Indirect Instancing debug overlay
Add agressive optimisation attributes to the hot path of Indirect Instancing.
Rebase on /main (save 271)
Regenerate ConVars and force bounds to be always huge (experiment)
Add a third submission mode to indirect instancing which works through `Graphics.DrawMeshInstancedIndirect` and avoids copying to a command buffer.
Enable `indirect_instancing.command_buffer` to switch back to the old way.
Finalise SIMD terrain culling implementation:
- Fix oscillation/flicker bug by tracking individual ray progress properly.
- Adjust step size dynamically with altitude to reduce iterations.
- Limit overall iterations to ConVar `indirect_instancing.tc_max_iterations`.
- Ignore rays to instances that have been culled in a previous step.
Add more debug output to the indirect_instancing.debug overlay
Add new SIMD terrain culling implementation (WIP) providing ~3x speedup (up to 30x in certain cases)
Only allow StartMotion() when IsDynamic is set
Speed up motion list execution 30x by caching matrices and checking them for changes.
Regenerate ConsoleSystem.cs
Remove merging of damaged regions as the sorting and merging was taking more time than it saved in some situations.
If frequent buffer updates continue to be a problem, /indirect_instancing/bitmapped_damage_tracking should fix that.
Only run terrain culling when it's actually worth it (when camera is above some but not all terrain)
Fixed node visuals not chaning while harvesting them
- Don't perform `graphics.aggressiveshadowlod` optimisation on shadow proxies.
- Only respect `indirect_instancing.shadows` when Indirect Instancing is enabled.
Force disable HLOD while Indirect Instancing is enabled
Remove unused compute shader from indirect instancing
Fix indirect instancing tools never actually applying material changes. (Again, because I love Plastic but it doesn't love me back)
Remove Standard+Wind from the list of supported shaders for indirect instancing as it caused some foliage to be rendered white.
Revert instancing flags on materials that were using Standard+Wind to their original state.
Set correct mip map bias when using indirect instancing
Make sure indirect instancing ConVars are disabled by default and saved
Fix a shader error in certain terrain shaders using _SecondaryDetail_Color
Remove RustRenderer (for now)
Implement IRefreshable and BroadcastRefresh as a better way to refresh InstancedLODComponent after colour changes.
Remove old damage tracker code and rename NativeDamageTracker → DamageTracker
Move `autoconnect` variable to `client.autoconnect`.
▉▆▇▋▅ ▅▋▍▇ ▍▌▊█▉▌▉▄_█▌▆▅▅▇▍_▇▊▅▅▅
Remove dead code and other cleanups from the code review
Revert shader changes that turned out to be not required for indirect instancing. (I'm glad. They didn't make any sense, either.)
Remove old unused LOD fading variant
Clean up instancing shader code and remove old instancing code
▆▋█▇▄▄-▇▅▄█ ▍▇▄▋▋▉█▇▅▋.▌▍▇▉▉ ▊▄▅