21,395 Commits over 1,552 Days - 0.57cph!
Tweak wording on External Changes dialog to make it more clear what the options are
Only ever show one External Changes dialog for a scene
Bring back external changes detected dialog, move to interface event
Assets added at runtime can be loaded into promises/missing resources again
Move prefab instance reload logic out of ResourceLoader
Clear selection when reloading SceneEditorSession
Fix overriding SSR with a black texture when it should be initialized with a translucent one
in Material.Lerp, normalize after lerping normals
Include ReflectionTextureColor in all the layers
@samzanemesis might wanna check this is the right thing to do
build shaders
Normalize quats going to physicsbody, set to identity if they can't be normalized - could potentially fix rare physics failure
Move joint OnBreak action to breaking group
Add buttons to joint break and unbreak so it can be toggled from editor https://files.facepunch.com/layla/1b0311b1/sbox-dev_uEafwaFZFI.mp4
Add Joint.IsBroken
Add Joint.StartBroken
Add Joint.Unbreak() to activate the joint after breaking
Add Joint.LinearStress/AngularStress - mostly to check current impulse against break limits
Spring joint impulse checked against break limit seems to be negated?
Prevent Scene Editor from attempting to do FPS cam when holding right click in a 2D view
Use spheres so we only have to send a single list of vec4s over
Remove unused shit from lightbinner and make everything enums
Fix Gizmo.Control.Position returning true without it being dragged on
Grey out tool buttons when disabled
Fix asset picker when selecting cloud maps
Adjustments to cubemap normalization, make cubemap feathering happen from center of cubemap, and in world units, rather than inner, math is much simpler
Clamp cube box parallax projection to actual bounds box the box, cleanup
Our both our envmap filters uses linear roughness instead of sqrt roughness
Gizmo for scale in envmaps, adjust default for feathering in world units
Sort envmaps also by size, giving higher priority to smaller ones if it's in a draw condition
tiled light culling with edge feathering additions
vLevel isn't const
Update path of build-shaders, upload all shaders as artifacts
Fix EnvironmentMapLight::GetEnvMapColor using deprecated variable
Gamma correct samples during accumulated ggx, makes highlight less blown out and makes the cubemap more vibrant
Reenable MSAA fetching for SSAO compositing, don't use loops
Depthresolve takes first MSAA sample rather than doing min/max calculation, if we want depth::get we'd want the proper sample to compare perfectly on the screen
GTAO temporal filter uses edge detection to filter out edge ghosting
https://i.imgur.com/EzfclG7.mp4
Trigger exit detection only checks if there's any contacts on triggers, not non triggers
Partial backport of ISceneObjectDesc::OnSceneObjectVisibleInView (Don't merge this, hacky temp allocation)
CSceneObject::GetCTransformUnaligned()
Forward+ Decals
* Decals get binned by the lightbinner from OnSceneObjectVisibleInView (all lights should start using this callback too)
* Tiled culling checks decals within each tiles frustum
* Decal::Apply( ... ) is used to mix decal's albedo, normal, etc. into surface
Revert 7e8268d0ca, it was causing issues when selecting every other GameObject node, I don't understand what it's trying to do 🙊
Refactor non polymesh navmesh data
Initial link component
Add navmesh links to tile cache
Disable Navmesh Warning "Could not build compact data" for now
Editor buttons desaturate when disabled/readonly
Add missing XeGTAO headers
Physics tool selects all rigidbodies in hierarchy
Expose MeshComponent.Model
Don't invoke ISceneCollisionEvents for trigger intersections
Update skinned renderers if they have physics bones
Improve handling of empty navmesh tiles
Also improve editor auto update when world bounds change.
deserialize absolute game object flag, flags are deserialized selectively
Joints execute in editor, physics tool can manipulate physics in editor so joints should also work
Colliders without rigidbody are static in editor
Ao proxies removal (#1678)
* Remove aoproxies ambient occlusion, it never looked too right and it's stupid to have artists authoring them manually, almost no one did
I still think SDF AO works better than SSAO in most cases, but they should live as a renderhook and artists don't need to touch anything, the way it is now is very hard to maintain, it could be 10x simpler
* Remove sdf.hlsl (until we meet again 🫡 )
Navmesh only run heightfield generator cleanup in task
Navmesh generator cleanup is sub 10 microseconds, so not worth it to dispatch a task, since task dispatch overhead would be higher than actual compute.
Remove aoproxies ambient occlusion, it never looked too right and it's stupid to have artists authoring them manually, almost no one did
I still think SDF AO works better than SSAO in most cases, but they should live as a renderhook and artists don't need to touch anything, the way it is now is very hard to maintain, it could be 10x simpler
Remove sdf.hlsl (until we meet again 🫡 )
TextEntry: Prevent brief caret selection of placeholder text, fixes Facepunch/sbox-issues#7087
Tweak TextEntry selection behaviour to match modern browsers
Update Facepunch.ActionGraphs
* Fix display info of constructor node result output
Sort filtered node query by relevance
https://files.facepunch.com/ziks/2024-12-02/sbox-dev_02cGbJAziV.png
Make it easier to find constructors for Vector3 etc
Applies to constructors that were already [ActionGraphNode]s
Facepunch/sbox-issues#5624
Make node queries less strict
https://files.facepunch.com/ziks/2024-12-02/sbox-dev_jj1QWkPK4U.mp4
Fixes Facepunch/sbox-issues#7024
Fix potential infinite loop in navmesh generation
Fix navmesh geometry collection physicsworld NRE
Fix NavmeshGeneration performance regression caused by 51c5e14
Navmesh generator cleanup now runs in parallel
Heightfield span pools are no longer freed after a completed generator run, instead they are returned to the freelist and reused.
Disposing of the generators now waits for all active generator tasks to terminate.
Partial backport of ISceneObjectDesc::OnSceneObjectVisibleInView (Don't merge this, hacky temp allocation)
Forward+ Decals
* Decals get binned by the lightbinner from OnSceneObjectVisibleInView (all lights should start using this callback too)
* Tiled culling checks decals within each tiles frustum
* Decal::Apply( ... ) is used to mix decal's albedo, normal, etc. into surface
Support SoundHandle.Stop fade time, add Fadeout curve to control fading
Fixed backward compat for Authority attribute when specifying NetPermission. Ensure networking is cleaned up after game leave so any last-chance RPCs can be sent.
Actually include stats from direct connection / dedicated server with net_debug on
Added Connection.GetStats support / implementation for non-lobby Steam connections. Can view net stats for connection to dedicated server or clients connected to dedicated server as well