userFelixcancel
reporust_rebootcancel

472 Commits over 365 Days - 0.05cph!

Yesterday
- Rewrite the buffer update logic to ensure a direct update only happens once per frame to make DX11 happy. - Always update the entire buffer to make greedy GPU drivers happy. - Add IGraphicsBuffer wrapper because Unity didn't do it so I can finally stop copy/pasting everything. - Use a function pointer (👻) in damage region processing for similar reasions. - Unlock the arrays in Update in case OnPreCull wasn't called. - New debugging ConVars: `reorder_instances_job`, `damage_bitscan_job` and `buffer_upload_mode`
Yesterday
A whole marathon of Indirect Instancing changes: - Schedule all jobs at the beginning of LateUpdate() for better worker utilisation. - Further improve scheduling behavior by modeling actual dependencies between jobs using writes_to_* and reads_from_* handles. - Allow instance reordering and command aggregation to run in paralell to give even more flexibility to the scheduler. - Run the debug overlay (where possible) in parallel with the jobs to improve performance - Avoid garbage allocation when scheduling the frustum culling job. (GeometryUtility.CalculateFrustumPlanes) - Schedule all jobs using ScheduleByRef. - Correctly set `[ReadOnly]` and `readonly` for all jobs to help Burst as much as possible. - Make batch size tunable: `indirect_instancing.batches_per_worker` - Add somewhat automatic instrumentation to CrudeProfiler via `using` statements. - Add ProfilerMarker to mimic what Unity 6 is doing with `using` statements. (Still need to verify it this compiles out properly.) - Add more profiler instrumentation. - Rename a ton of things for clarity. - Remove CommandBuffer. We won't need it where we're going.
2 Days Ago
Some cleanups
3 Days Ago
Fix burst compile issues by bringing back `DamageRegion` struct
3 Days Ago
Jobify the damage region scanning for instance data
4 Days Ago
First implementation of hybrid monster meshes
4 Days Ago
Merge from /indirect_instancing/layers
5 Days Ago
Slightly optimise command reordering
5 Days Ago
Jobified instance reordering
6 Days Ago
▅▇▅▊█▋▉▌ ▆▌▄██▇▌▇ ▍▆▄▊█▍▍▉▍▉ ▌▅▆▉▇▌█ █▆ ▆█▋▄▇ ▍▍▊▊▋▄ ▍▊▅▄▄
8 Days Ago
Merge bitmapped_damage_tracking → indirect_instancing
8 Days Ago
Implement bitmapped damage tracking
11 Days Ago
Rebase on current /indirect_instancing
11 Days Ago
Clean up some failed experiments
12 Days Ago
Fix nothing rendering for real this time.
13 Days Ago
Fix nothing actually rendering with new Graphics.DrawMeshInstancedIndirect based draw call submission
13 Days Ago
Fix NRE in Indirect Instancing debug overlay
13 Days Ago
Add agressive optimisation attributes to the hot path of Indirect Instancing.
15 Days Ago
Rebase on /main (save 271)
15 Days Ago
Regenerate ConVars and force bounds to be always huge (experiment)
16 Days Ago
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.
17 Days Ago
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.
17 Days Ago
Add more debug output to the indirect_instancing.debug overlay
18 Days Ago
Add new SIMD terrain culling implementation (WIP) providing ~3x speedup (up to 30x in certain cases)
18 Days Ago
Only allow StartMotion() when IsDynamic is set
22 Days Ago
Rebase on /main
22 Days Ago
Speed up motion list execution 30x by caching matrices and checking them for changes.
23 Days Ago
Rebase on /main
29 Days Ago
Rebase on /main
30 Days Ago
Regenerate ConsoleSystem.cs
30 Days Ago
Regenerate ConsoleSystem.cs
30 Days Ago
Merge other fixes from /indirect_instancing
30 Days Ago
Rebase on /main
30 Days Ago
Merge build fix from /indirect_instancing_fixes
30 Days Ago
Restore constant that I removed because I was an idiot.
30 Days Ago
Merge from /indirect_instancing_fixes
30 Days Ago
Rebase on /main
30 Days Ago
Fix multiple issues with LOD bounds/distance calculations: - Never return zero-bounds for anything, try multiple things and fall back to 1 m³ as a last resort. - Always use bounds (and center) of LOD0 for consensus between LOD states. - Fix fallback renderer using transform position instead of bounds center for distance calculations.
30 Days Ago
Fix Radtown sign by manually disabling mipmap streaming.
30 Days Ago
Properly fix brightness flicker by using a GlobalKeyword instead of a string
31 Days Ago
Add preliminary support for layers to indirect instancing
31 Days Ago
Fixed brightness flickering on indirect instancing objects when moving camera (inefficient variant)
33 Days Ago
Completely hide shadow-proxy states affected by agressiveShadowLOD to improve performance
33 Days Ago
Completely hide shadow-proxy states affected by agressiveShadowLOD to improve performance
33 Days Ago
Rebase on /main
36 Days Ago
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.
36 Days Ago
Add ConcurrentBoolArray as a simpler (but more wasteful) form of ConcurrentBitArray to get things going quicker. Add a function to find contiguous regions of values efficiently.
37 Days Ago
Only run terrain culling when it's actually worth it (when camera is above some but not all terrain)
37 Days Ago
Introduce WIP version of ConcurrentBitArray for bitmapped damage tracking
38 Days Ago
Restrict Indirect Instancing ConVars to debug builds only