We have released a preview of our Indirect Light Volume feature to gather feedback. (Thanks Oz)
The biggest feature gap for our Scene system was that VRAD is tied to Hammer & needs to pause your work every time you want to have lighting update on your map, and you can't remix the lighting of an existing map after it's compiled, so Day/Night variant of maps for example need an entire new map, IBL is nice but doesn't have the same granularity.
I think it never made much sense to have lighting information tied to geometry, the lighting system should be all unified and used in Geometry/Objects/Fog, this opens up a lot of possibilities while making the pipeline less complicated at the same time.
(My Summer Cottage by Small Fish)
Can interactively bake lighting on your scene, usually seconds, anything you add to the scene will contribute to indirect lighting and don't have to pause your work. For example an emissive object just becomes an area light naturally: We want to have it magical, It isn't magical yet, probe density is almost all uniform, would be nice to have it use sparse allocations, real time. Best practices is to use it outdoors right now.
Trees and foliage got a well deserved overhaul. A collection of techniques and tricks has been added to our foliage shader, affecting trees, bushes and clumps. Our previous foliage shader had issues with transparency and didn't scale well over distances resulting in artifacts.
Transmission
Leaf cards now support light transmission, allowing light to pass through leaves and reducing flat, opaque shading.
Normals
Custom leaf normals better average the overall shape of the tree, breaking up obvious card silhouettes and improving canopy cohesion. A subtle effect, that break up grid-like pattern that is sometimes noticeable. The foliage highlights seem rounder.
Additional normal noise breaks up flat-looking cards.
Lighting
Rim lighting and warped lighting now illuminate occluded areas, preventing trees from looking like solid walls of cards and helping them sit more naturally in the scene.
Fading cards
Leaf cards fade at grazing angles perpendicular to the view direction, softening harsh geometry. This gets rid of protruding cards coming out of the foliage
Alpha transparency cutoff now adjusts dynamically with distance to keep far trees looking fuller and more lush.
Swaying
Subtle trunk swaying was also added to bring more life to scenes. The leaves also flutter following the trunk movements. Overall, trees are now far more usable in large environments and perform well even when rendered in large numbers.
We had progress bars in the editor but they were modals, which means they popped up a window and you couldn't interact with the rest of the editor while they were visible. That's useful in some situations, but most of the time it feels pretty clunky and unnecessary.
With the Indirect Light Volume stuff, we wanted to show cancellable progress while baking, which spurred me on to improve the situation. They appear in the toast area now, the same as compile notices.
We've added a new project bar to the top of the editor, so you can quickly access project related settings. Quite possibly the most requested editor feature: we've moved the project settings back into a window. You're welcome.
You're now able to configure GameObjectSystems in the editor, just like components. This'll be useful for globals that exist in all scenes. You can also configure these per-scene.
We've been working a lot on stability this month and it's starting to show in our crash rate. From our all time high of ~15% we are now down to ~6%
You can always view these stats at: https://sbox.game/metrics/stability We've also landed a bunch of fixes this week, so expect this trend to continue over the next few days:
GPU robustness
Enabled VK_EXT_robustness2 provides bounds checks and null buffer validation
Fixed a crash when rendering envmaps during an active render pass.
We've also disabled GPU tracing again, so expect a small performance & stability boost in draw call-heavy scenes.
Editor crashes – Improved Qt object cleanup to prevent crashes in event callbacks, and fixed issues with Vulkan's exclusive fullscreen extension.
Shutdown crashes – Fixed an edge case where the main loop throwing an exception would cause a crash on exit.
Misc hardening – Added defensive checks and small optimizations (resource loading, animation, JSON diffing, vector math, etc.).
Previously when you started a new instance with Join via New Instance to test multiplayer in your game, the new instance would have the same SteamId as your editor host.
Now, whenever you create a new instance it'll be assigned a new index based on how many instances you have open.
The SteamId it reports to the host will be based from that index. So you'll have a deterministic way of testing stuff like persistent data for a user based on their SteamId.
Significant improvements have been made to networking in general. We're now using the Steam Networking SendMessages API to batch outgoing networking messages and completely eliminate allocations from copying the message buffer to the Steam API.
In addition, properties wrapped with CodeGenerator such as properties with [Sync] now eliminate allocations from lambda usage by caching the lambdas for the wrapped set and get accessors.
Various micro-optimizations have been made to writing the snapshot state per networked object, and because this is a very hot path, these really make a difference.
Optimizations have been made to IsProxy, this is now only updated when the host or owner changes instead of being calculated every time it's accessed.
In my test scene with 2000 networked rigidbodies, the following performance improvement was observed:
Here's a grab bag of bug fixes and improvements for Movie Maker. Some of these are groundwork for a WIP demo recording feature, letting you record gameplay outside of the editor.
Track List
Can select all tracks with Ctrl+A
Added Create Missing References context menu option, to create GameObjects and Components for the selected tracks to target
Only expand root tracks by default, to make navigating big projects easier
Timeline
Fix vertical scroll bar
Fix jittering when zooming
Support zooming in and out more
Fix major / minor timeline tick interval logic
Internals
Support .movie projects imported from in-game recordings
Simplify how raw samples are stored in .movie assets
Support List<T> properties in movies
26.01.28
26.01.28
28 January 2026
🎁 Added
Indirect Baked Lighting - DDGI
Project settings window, accessible from project bar in the top right of the editor window
GameObjectSystems can have confgiurable properties, accessible in the project settings window
Networked local instances now have a unique SteamID for testing persistence
Networked objects can now be "detached" meaning they're no longer networked
Snap To Frame option for particle sheet sequences
Popup.PositionModel.Right
🧼 Improved
Binaries (exes, dlls) are now code signed by Facepunch - makes Windows trust them more
Foliage shader has been improved in many ways, adding new options, fixing dithering, and more
Mapping tool hotspot matches Hammer's hotspot
Mapping selection enhancements
Mapping face selections
Active material is remembered with a cookie when you restart the editor
Profiler post processing removes dead threads
Console output gets forwarded to attached debuggers
Unspawned networked objects do nothing when Network.Refresh() is called
Lots of micro optimizations for networking CPU performance
Dedicated servers use Steam Networking's SendMessages API
"We've made Mesh Traces (SceneTrace.UseRenderMeshes) editor-only" NOOO I was abusing this and it made for a good visual effect! I was able to shoot beems into the eye sockets of this big ass skeleton I;m working on and use the mesh detection to illuminate the inside of the skull. Really minor thing. but the rest of the progress is awesome dudes. Sam is fucking cracked.
Hammer - Time to Yield...
edit 01/31/26
I was wrong
SceneTrace.UseRenderMeshes) editor-only" NOOO I was abusing this and it made for a good visual effect! I was able to shoot beems into the eye sockets of this big ass skeleton I;m working on and use the mesh detection to illuminate the inside of the skull. Really minor thing. but the rest of the progress is awesome dudes. Sam is fucking cracked.