20,758 Commits over 1,522 Days - 0.57cph!
Auto calculate tiling parameters
This avoids having to expose them, while we are not sure if they should be.
Optimize tile geometry collection
Only add physic shapes to generator that are in bounds
Make tile geometry collection thread safe
Speed navmesh geometry collection for scenes with complex physicbodies
The geometry collection is optimized by only collecting the PhysicsShapes of a PhysicsBody that are actually in the navmesh bounds. Previously, all shapes of a PhysicsBody were collected, which resulted in a lot of irrelevant geometry being collected.
This optimization significantly speeds up the overall navmesh generation (70 times faster when benchmarked on FP square).
Replace AO on shader with a single, non-directional AO but that composites properly, older shaders wont have incompatibility problems, also makes Dynamic Reflection work without ao
SampleScreenSsMSAA to composite non-MSAA screen effects ( SSR, AO, etc ) into an MSAA buffer
https://files.facepunch.com/sampavlovic/1b1711b1/05csVIYZJM.png
Fix AO compositing for custom shaders
https://files.facepunch.com/sampavlovic/1b2111b1/CRqx99maFj.png
Add compiled shaders for AO including for Material shaders
Composite AO to pipeline rather than blitting, cleanup
AddHookAfterTranslucent > AddHookAfterDepthPrepass
[Pick] Add internal Graphics.FrameAttributes, up to review
Remove hack for clearing AO and use FrameAttributes instead
[pick] GetBindlessRWTextureXXX if compute shader
Move all ambient occlusion sampling to AmbientOcclusion.hlsl, bindless sampling
RWTextureCubeArray doesnt exist, should just be a RWTexture2DArray
[pick] Fix sampletexture_bicubic (is anything using it)?
[pick] Fog.hlsl cant be sampled from compute shaders in compute shaders that also ref lighting.fxc
[pick] Fix include guards for hlsl classes, fixes declaration in both standard and material shaders, fix AO sampling
Update shaders with bindless SSAO sampling
Do a simple texture fetch for AmbientOcclusion::Sample, simplify SampleScreenSsMSAA
Compile shaders without MSAA sampling for AO
Do a simple texture fetch for AmbientOcclusion::Sample, simplify SampleScreenSsMSAA
razor: Invalidate render tree when setting RenderFragment - fixes sections of razor ui not updating until hovered
Fix map page using wrong logic
Update Facepunch.XR to 1dce6d64669f0c19b0e43936bf53b1770d50a6f8, cache HasHeadset value
Don't build VR Toggle Widget if there's no headset or runtime
When creating a Sound Event, the file extension is now replaced instead of appended. Resolves Facepunch/sbox-issues#6816
[pick] Fix include guards for hlsl classes, fixes declaration in both standard and material shaders, fix AO sampling
Update shaders with bindless SSAO sampling
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
RWTextureCubeArray doesnt exist, should just be a RWTexture2DArray
[pick] Fix sampletexture_bicubic (is anything using it)?
[pick] Fog.hlsl cant be sampled from compute shaders in compute shaders that also ref lighting.fxc
Categorize Create Asset menu, can create code files, add templates for compute, material, unlit shaders
Use GameResource.Category in New Asset menu
Give built in resources categories too, merge with gameresources
Create templates for c# empty, component, razor code files and compute, material, unlit shaders
Fix some compiled assets wrongly being hidden, Facepunch/sbox-issues#6814
Main menu - home page redesign
Move all ambient occlusion sampling to AmbientOcclusion.hlsl, bindless sampling
Cloud browser: maintain location query when searching, clear facet selection with sidebar shortcut
Remove unused folder node logic for cloud locations
Skip dropdowns for facets included in the base/location query
Use error model for sceneobject when model has no valid render meshes
Do the same for scenemodel
PanelTraversalSystem: Refactor root panel focus, in case a modal pops up in the way, or any other overlay
Can pop modals
PanelTraversalSystem: pop modal one-by-one if hitting B on controller
Broke input actions, whoops
Implement stubbed Search Bar in HomeWidget, moving it outside of the filters popup
https://files.facepunch.com/CarsonKompon/2024/November/07_07-14-FakeMillipede.mp4
Tidy/refactor search widget, asset type filtering works in both flat and normal views
Make sure picker-enforced filters are shown in the search widget, disable user editing
Clip tile bounds to geometry
Limit navmesh generation parallelism
Bump cell Height to 4
This avoids issues when tiles are very tall (Z).
Potentially decreases generation quality a little, but so far it looks fine.
Fix debug draw triangle offset
Better tiling defaults
Removed debug logs
Fix asset type filters excluding compiled assets that should be shown, resolves Facepunch/sbox-issues#6814
Create assets/folders from sidebar folder nodes
Use AppIsDedicatedServer() to determine if should print warning log in texturebase. Don't run Panel.TickInternal if we're a dedicated server - makes no sense for Panels to even exist.
Make dedicated server console window title s&box Dedicated Server
We can omit this warning too if we're a dedicated server
Keep original generate signature
Simplify physics geometry collection
Add +hostname support for dedicated servers. For now, just so we have a way of seeing them, bundle dedicated servers in with other lobbies when querying lobbies so they show in the lobby list for a game.
Dedicated Server Querying and Session Authentication (#1690)
* Authentication and encryption can now be enabled (by default)
* Session authentication is added for authentication tickets - this is what makes the player count go up on a server or down when they leave
* Dedicated servers use a Fake IP and can be connected to either by their Fake IP or by their associated Steam Id
* Dedicated servers can be queried from the master server using the GameSocketShare mode and so can now be fetched in-game for displaying in some UI later (Steam Server Browser does not display them due to using Fake IP)
* Added Rich Presence support for players who are connected to a dedicated server (and other players can join the game)
* Fixed some issues with headless mode such as when things were attempting to use ISteamFriends or some texture methods
* Stale connections are properly disposed of and cleaned up within a network system where in some cases before they were not
* Ensure that we disconnect from the network system when closing the game/app, this makes sure that the Steam Game Server is properly shut down
* Fixed / implemented Steam Game Server callbacks
* Moved Steam Network Sockets configuration to C# and set them in the right place now
* Ensure that we disallow a player to connect to a dedicated server if there are no player slots remaining
Fix another issue with steam friends not being installed
Some extra fixes for that
TextRendering.GetOrCreateTexture, if we're headless, return Texture.Invalid
Steam Rich Present Join Game support for dedicated server by fake IP or steam id depending on connection type
Update servers list, fix NREs from things tryna access ISteamFriends when they're a dedicated server and that interface isnt loaded
Clean up all the logs, better reason code for invalid ticket closure
Properly leave closing remote connection, such as when they dont have a valid auth ticket
Make sure reason code is clamped properly - only call socket disconnect if previously connected
Cleanup
Fix map drop object for local maps
Make sure ListView itemsPerRow can't be zero
Added internal c# methods for steam auth ticket authentication with game server - add some log output for test
Add TrailRenderer.Emitting to control when new points should be added to the trail or not
Fix camera shader node typo with FarPlane
PanelTraversalSystem: Refactor, no more block size, don't use GetPanelsAt, filter root panel descendants by on-screen, eligible panels, then rate them
Set some defaults now stuff is working. Set authentication=true, fakeip=true, and sharedqueryport=true. Servers can be queried in-game, and hide the real IP of the dedi, can be connected to via fake ip or steamid. Oddly though, the Steam Server Browser does not list the server, unless fake ip is off - can look into resolving that later as I don't know who really uses that
More configuration for debugging purposes