branchrust_reboot/main/culling_falsepos_improvcancel
24 Commits over 30 Days - 0.03cph!
Update: replace editor GUIStyle with default one to allow culling.debugshowstats to work
- remove UNITY_EDITOR defines
Tests: built debug client standalone
Bugfix: ignore set calls if occlusionculling instance hasn't been created yet
Tests: compiles
Update: expose more of culling debug tools
- DebugShowStats - same as PrintStats, but continuously rendered to screen
- DebugDrawHiZMipChain - draw all depth mip levels on screen
- DebugDrawHiZOverlay - overlay specific level of mipchain on the screen, -1 to disable
Tests: used all on craggy
Clean: get rid of OcclusionCulling.DebugFilter
We already had DebugMask that represented exactly the same
Tests: compiles
Update: expose more of OcclusionCulling debug
- got rid of original culling.debug clientvar (superseded by debugmask which accepts a bitmask value)
- added debugscreenbounds (shows screenspace bounds + resolved LOD of hiz chain)
- added printstats
Most of this was available in the editor, should make it easier to sus out the specific conditions of bugs
Tests: used all on craggy
Update: add debugshowoccluderid to help with filtering to specific occluder
Tests: used on Craggy to look at boxes
Update: couple more debug features for OcclusionCulling debug
DebugLookingAt will try to resolve LODComponent (but our entity hierarchies are wild, so it fails frequently), DebugRange limits which occluders are debugged
Tests: used both to target props on Craggy
Update(debug): allow to filter occlusion culling debug to just 1 specific instance via culling.debugid
- added editor only way to copy id (need a way to do this in standalone)
Tests: used it to isolate apartment corridor wall (still pants to use though, need something better)
Update(editor): occlusion hiz overlay - "auto-expose" depth overlay
Original implementation made it very difficult to discern anything in enclosed spaces
Tests: used it in apartments
Update(editor): use same color for lod level of occludee when rendering ss bounds
- also added memoization of lod level
Tests: none, trivial change
Update(editor): use different colors for visualizing occluidee screen-space bounds
Red for dynamics, cyan for statics, purple for grid
Tests: visualized swing - saw all 3 colors
Bugfix(editor): fix dynamic occludees rendering sphere in LS, instead of WS
- use cached location to help detect slow updates to dynamic occludees
Tests: visualized bounds of swing seats - they're no longer at origin
Update: add visible count to occlusion debug output
Tests: used it on craggy while tweaking extra lod steps
Update: add ability to step through higher levels of mip chain to reconfirm visibility
- controlled via culling.extralodsteps, default to 0 (same as before)
Out HiZ downsampling filter erodes depth at edges of objects, so if objects picks a low mip, there's a good chance it won't see any occluding depth
Tests: ran around apartments monument in editor with 0, 2 and 7. at 2 saved only 0.25% percent of drawcalls, but 7 can save up to 10% (will profile standalone later)
Update: draw picked hiz lod for occludees in occlusion debug
Tests: used debug visualization in editor