branchrust_reboot/main/buoyancy_optimizationcancel
17 Commits over 0 Days - ∞cph!
Burst the rest of buoyancy, now the batched version is 2-3x faster than the original. Still missing some edge cases but its functional for boats.
Remove flow map from shared burst data, I forgot to undo this change earlier.
- Reuse list buffer in water collision checks.
- Add shared static accessor to TerrainMeta to access terrain position/size from burst.
- Make more buoyancy native arrays persistent, reuse them. (temp job allocs seem a lot heavier than just temp allocs.)
- Make GetFlowDirection easier to access from burst, not yet burst compiled
- Burst compile GetBuoyancyWaterInfoBatched, temporarily remove deep underwater checks from it, we'll move deep water checks to a different code path.
Things seem functional, but only slightly faster than the non batched version. A lot of terrain data access still isn't batched.
Fix water collision jobs in buoyancy throwing exceptions due to temp allocator use.
Further optimize GetBuoyancyWaterInfoBatched, let topology queries run in burst(no batch yet), batch water ignores.
Batched Buoyancy is now functional, but still missing some code and needs more optimization:
- Move buoyancy data into persistent arrays and reuse them.
- Add convar for switching between batched/old buoyancy.
- Add 3D positions for water info step.
- Add Ocean Simulation.GetHeights span overloads for interop with native arrays. (they still need a XZ3D step, otherwise we'd use the native arrays directly - TODO later.)
- Add GetBuoyancyWaterInfoBatched. (wip, missing entity fast paths for inside terrain/above water)
- Shim Ocean simulation into WaterSystem.GetHeightArray_Native, it's already batched, works for now.
Still heavily wip, run the watermap jobs from burst.
Start tracking buoyancy components to track them, split batches into deepsea/mainland.
merge from main to fix playmode
WIP, it's getting annoying to drag these changes across branches:
- Move a good chunk of buoyancy into burst.
- Add burst methods for filling buoyancy point data arrays.
- Introduce methods for running buoyancy in a batch rather than on every component separately.
Make terrain height and shore vector methods readonly to indicate that they're pure.
Add indexer to pooled array, add extension for copying managed arrays into native arrays. (intended for smaller collections)