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.).
We've made Mesh Traces (SceneTrace.UseRenderMeshes) editor-only, using it in-game will now throw an error.

The underlying mechanism was never designed for runtime use and has significant performance and memory overhead (1GB+).

Right now there is no replacement, if there's enough demand, we may explore a proper mechanism for mesh tracing in the future.
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:


Face selection has had a some work to make it feel better. We support filtered selection on face mode, selection from normal and material.
You can convert your selection, so for example; If you select a face then hold alt + edge mode it'll convert the selection into the edges of the face.
You can now grow and shrink select with + & -
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
  • Codegen lambdas are cached
  • Optimize Json.Diff.ReorderAddedObjects
  • Vector3 micro optimizations
  • Reduce smoothdamp usage in audio components
  • GroupButtonControlWidget Enabled/ReadOnly handling
  • Movie Maker Maintenance
  • BlobDataSerializer is now stack based
  • Enabled VK_EXT_robustness2, adding extra safety and allowing null
  • When creating a new asset, it is named before being created instead of renamed
  • GenericControlWidget will pick the parameterless ToString method @766974616c79
🪛 Fixed
  • Potential crash with PoseContext::TryTakePose and PoseContext::GetPose
  • Potential crash with AsyncResourceLoader accessing the resource system during shutdown
  • Crash on shutdown when the main loop throws an exception
  • Crash when rendering envmaps during an active render pass
  • Crash when closing dock tabs by the context menu
  • Crash with Qt widgets getting deleted too soon in event callbacks
  • Crash with exclusive fullscreen in editor mode (disabled it)
  • Error with ReferenceMaterial not being found when loading the fast texture tool
  • Error when using dump_scene command
  • Trying to ConVarSystem.AddAssembly the same game assembly twice
  • Video generation for batch upload by making sure ScreenSize is set
  • ScreenRecorder not respecting framerate cvar
  • Rubber surface being way too bouncy
  • Certain tools eating shortcuts because the ViewportToolbar was taking focus
  • Fast texture tool UV's not being frames to the preview
  • Fast texture tool world scale having confusing extra options
  • Missing large network files on local networked instances
  • GameObjectSystems not existing on clients (older version) erroring when connecting to servers
  • ConsoleWidget trying to parse arg: anchor as uri
  • Cloud assets not persisting between sessions @trende2001
🚯 Removed
  • SceneTrace.UseRenderMeshes are now editor only
  • GPU crash diagnostics which had some performance overhead
trophy 1515
Apr 2021 125 posts
Update 26.01.28 : news/update-26-01-28
trophy 400
Jul 2023 31 posts
🔥🔥🔥
trophy 2465
Jul 2022 66 posts
Thank you for the update
trophy 670
Nov 2025 4 posts
EGoriy 5 days ago edited 2 days ago
Okey
Hammer - Time to Yield...


edit 01/31/26
I was wrong


trophy 1105
Aug 2022 101 posts
need my shadows2 after diddy gi please
trophy 2045
Apr 2021 71 posts
Amazing stuff this week
trophy 1833
Sep 2021 157 posts
Just post a fucking awesome screen by my friend Dada using Indirect Light Volumes, thanks FP
trophy 1140
Sep 2021 12 posts
Great job as always
trophy 160
Aug 2021 8 posts
Great update!
trophy 4880
Oct 2022 42 posts
 Amazing work ! 
trophy 1385
Feb 2024 40 posts
This week was a optimization week awesome!!!
trophy 640
Aug 2022 6 posts
AMAZING
trophy 2691
Jan 2025 10 posts
Obg sam você foi o dono do novo update 😛
trophy 660
Jun 2023 1 post
cool
trophy 85
Sep 2022 4 posts
"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. 
people
Log in to reply
You can't reply if you're not logged in. That would be crazy.