branchrust_reboot/main/triggerparentdelayedexit_optimcancel
63 Commits over 31 Days - 0.08cph!
Tests: Add TraceRay/-s perf tests
The numbers of serial vs batched are a bit too crazy(128 rays: 7.5ms vs 0.3ms; 1024: 716ms vs 2.2ms), but looks like managed sort is too costly. Need to investigate the 8k batched hang(5min+ )
Tests: ran the perf tests
Tests: add perf tests for TraceRaysUnsorted and TraceAllUnordered(radius == 0)
At 128 rays perf is same, at 8k we get 25% faster without water checks/41% faster with water. Need to profile deeper if we get more wins
Tests: ran the new tests
Clean: reorganize GamePhysics tests into Unit child class
Prep for Perf unit tests.
Tests: ran all relevant tests, discovered we forgot to implement 1 fully - chasing up separately
Update: made GamePhysics.TraceRays return guaranteed nearest hits
- added fast path for TraceRays with maxHits == 1
- Added tests for TraceRaysUnordered, rewrote test for TraceRays to be more thorough
Tests: ran unit tests
Update: started on ShouldParentEntitiesJobs (incorrect name)
- Simplified ShouldParentEntities (also incorrectly named)
Converted CheckForObjUnderFeet to burst jobs, need to do IsClipping internals next (needs a bunch more on the GamePhysics side)
Tests: none, not ready
Update: GamePhysics.TraceRays now supports ignore entities
- Added TraceRealmRays (not unit tested, will do that tomorrow)
- Added unit tests for TraceRays
- TraceRays skips sorting if maxHitsPerTrace is less than 2
Tests: unit tests
Update: hook up PersistentObjectQueue as well
- consolidate work scheduling to AddTo-/RemoveFromActiveTriggers
- fixed an exception when unity sends 2 OnTriggerEnter for 1 entity (not sure how, but TriggerBase handled it already)
Just the most complicated version left - custom queue with jobs
Tests: jumped on and off from moving boat
Update: hooked up the crude queue, added server var
- partial codegen (Grid<T> borkage)
- Fixed a couple bugs with invalid tracking on TriggerParents in StableObjectCache
Can move on to other queue impls
Tests: craggy, toggled default and batched mode
WIP: TriggerParent managed queue, no batching, no burst
Still need to implement using PersistentObjectWorkQueue and experiment with batched-burst queries and compare all, as this version should have a bit more overhead due to bookkeeping.
Tests: none, not plugged in
Merge: from opt_triggerparent_timeslice
- Optim: reduced component accesses and added support for triggerparent.ontick timeslicing
Tests: jumped around the boat