978 Commits over 610 Days - 0.07cph!
Cache all gameobject bounds, fit parent bounds to children
Readback runs callback, applies culling to sceneobject (tho we should really apply this per-view)
Rather than clamping to viewport, if all corners of bbox are off-screen, cull the object
Cache GameObject bounds
Fix a few things inside occlusion culling render layer
Wrap occlusion objects inside a record
Remove more native occlusion culling stuff
Initial
Use spheres so we only have to send a single list of vec4s over
Gather objects
Split logic into COcclusionCullingStandard
Change order, gather correctly, readback, count visible + culled objects
Reject occluded objects, tweak gather & shader
Improved gather, only select the objects we want
Shader re-write, output object depth and buffer depth for debug
Put debug spew behind convar, tweak shader
Tidy up, add CSceneObjectCullingData, add user-controllable per-camera toggle for occlusion culling
Stash shader before I re-write to use AABB
Switch to using bboxes for slightly more accurate results, hi-z mip checks
Start moving all this over to managed, we can benefit from various things here
Initial
Use spheres so we only have to send a single list of vec4s over
Gather objects
Split logic into COcclusionCullingStandard
Change order, gather correctly, readback, count visible + culled objects
Reject occluded objects, tweak gather & shader
Improved gather, only select the objects we want
Shader re-write, output object depth and buffer depth for debug
Put debug spew behind convar, tweak shader
Tidy up, add CSceneObjectCullingData, add user-controllable per-camera toggle for occlusion culling
Stash shader before I re-write to use AABB
Switch to using bboxes for slightly more accurate results, hi-z mip checks
Stash shader before I re-write to use AABB
Switch to using bboxes for slightly more accurate results, hi-z mip checks
Tidy up, add CSceneObjectCullingData, add user-controllable per-camera toggle for occlusion culling
Put debug spew behind convar
Shader tweaks
Not perfect yet, but definitely a step in the right direction
https://files.facepunch.com/alexguthrie/1b1211b1/NVIDIA_Overlay_J85xCR3e3b.mp4
Improved gather, only select the objects we want
Shader re-write, output object depth and buffer depth for debug
Reject occluded objects, tweak gather & shader
Quite conservative right now and not perfect
Change order, gather correctly, readback, count visible + culled objects
This makes more sense
Gather objects
Split logic into COcclusionCullingStandard
Use spheres so we only have to send a single list of vec4s over
UI: Set Button.Active inside TabContainer rather than setting active class directly (consistent with ButtonGroup)
UI: Fix worldpanel filters, save off default viewport Z range when setting a render target (solves depth issues after pushing/popping worldpanel filters)
https://files.facepunch.com/alexguthrie/1b2911b1/sbox-dev_Nl7AwCZeb5.mp4
VR: more logging, always enable debug callback
VR: add -novr force disable
Update fpxr to 8e70816536da3c657eb9f9a7b815268c5ef7a729, improves headset checks
Improved checks inside HasHeadset
UI: Expose UI.WorldInput.Hovered inside WorldInput component
VR: check for headset in PreInit() instead of Init()
VR: init g_pVrSystem before finishing material system setup
Update Facepunch.XR to 1dce6d64669f0c19b0e43936bf53b1770d50a6f8, cache HasHeadset value
Don't build VR Toggle Widget if there's no headset or runtime
Check if we can actually init OpenXR when calling HasHeadset - makes the call more expensive(!) but more accurate
Update Facepunch.XR and defs to 24b8e70e5c89d04b3f42d8b022bf97e05b82349f, adds check for headset/runtime availablity
VR initialization changes - always load VR extensions if there's a runtime and headset available, so we can init mid-session
Editor: Make ToggleSwitch look nicer
Add toggle switch in editor for VR
https://files.facepunch.com/alexguthrie/1b0711b1/sbox-dev_k3x5LXNKca.png
Remove unused OpenXR launch environment variables
Update Facepunch.XR to ec56d1c119e0251cbc105be8a26792e266b68ed3, fixes some minor launching issues
VR hand component fixes
VR world input component
Remove unused VR bits in MenuSystem
Basic VR scene menu, loads automatically if VR is enabled
Additional checks when loading JSON bindings, don't poll for hand tracking if instance doesn't support it, make sure we have an instance
Clean up EditorUtility.PlayAssetSound a bit
Ignore edging when drawing text outlines, helps with `font-smooth: never;` in combination with `text-stroke`
Facepunch/sbox-issues/issues/6764
EditorUtility.PlayAssetSound supports sound events
Asset browser: Play overlay for sounds
Asset browser: double clicking a folder in the left pane expands it + highlight current folder in sidebar
Asset browser: Re-build sidebar locations when we make a new folder
Asset browser: can highlight scene file by right clicking the tab
https://files.facepunch.com/alexguthrie/1b0411b1/sbox-dev_glaXsIVvIP.mp4
Get rid of map
Update sbproj
Don't tick this if we're not in VR
Remove old VR stuff
Update Facepunch.XR to match commit 5cb9da3f30cde711d40b872e8b37e29c6f1dfbfe
API fixes
Don't crash if we fail to open bindings JSON file
PollEvents() returns NO_SESSION_RUNNING if a session isn't attached
Initial VR scene for main menu
https://files.facepunch.com/alexguthrie/1b2011b1/sbox_pKFaTyqkgq.png
UI: Fix worldpanel depth issues, treat worldpanel roots as layers
Render VR menu at 4k, scale down to fit
Basic VR world input component, menu works properly
https://files.facepunch.com/alexguthrie/1b2511b1/Desktop%202024.06.25%20-%2015.51.37.05.mp4
Line hands up better in VR menu scene
Quick little test map just so I'm not staring at an orange texture
Mouse back/forward buttons in asset browser
Clean up history logic a bit
Add "Go To Folder" in recents
Fix compiled asset filtering
Don't hide compiled assets if no source file is available
Show 'open with' dialog if we can't open a file
Set hammer material when selected (both in cloud and asset browsers)
Moving selected facet dropdown entry fetches from current facet entries rather than copying
Add 'copy absolute path' option
Find root paths automatically instead of just using current project
Show base, citizen, and core
Better sidebar separation
Hide cloud browser when not requested
Limit file count for now, need pagination
Docs
Fix obj/ files still showing up in some places (I had this in the wrong place entirely 🤦♂️)
Direct check for EditorUtility.IsCodeFolder
Initial
Assets have colors
Preview tweaks
Search widget
Asset popup, will turn this into something more tooltip-oriented later
Split left / split right
Chips from tags
Tweak styling, move current project to top of asset locations list
Implement chip tag filtering
Initial cloud browser, separate from asset browser
Initial tabbed asset picker w/ both local and cloud assets
Asset type picker
Renames, deletes, duplicates handled by IAssetListEntry
Clean up
Implement `t:vmdl`/`t:vmat`/etc. and filters
Implement Everything & Recents
Cloud browser uses facets to select type - hide picker on search bar
Fix warnings
Fix FindItemsThatStartWith
Sort recents properly
Display "Everything" / "Recents" in address bar when those are active
Show asset name if only deleting one asset
https://files.facepunch.com/alexguthrie/1b2111b1/sbox-dev_aNrz89mgvo.png
Show file name + extension
Use project root path as root for asset browser stuff
Hide hidden files & folders
Icons for assets, code, libraries, exports, localization, projectsettings folders
https://files.facepunch.com/alexguthrie/1b2211b1/sbox-dev_vj4aOCIDDr.png
Hide .sbox folder
Open non-asset files (e.g. .cs files) when double clicked too
New generic file context menu (for any non-asset type - .cs, .scss, .razor, etc.)
Implement OnContextMenu in FolderNode
Navigate to code files using selected code editor
should prefer an active / open solution
Hide obj/ folder in code directories
Add support for drag-dropping assets / folders / etc.
Top of asset locations list shows favorites again
Favorites -> pins, hide node if it hasn't got any entries, hide obj/ folder in tree view
Doesn't refresh properly when going from no entries to some entries yet
Docs
Fixed searching through everything/recents
Show pins in tree when there are some added
Rebase fixes
Fix warnings