Godot 4.8 dev 6 brings contact shadows and a sub-week release
Thaddeus Crews put the sixth pre-release snapshot, less than a week after dev 5. That cadence is unusually tight, and it wasn't done just to keep things fresh. The team was chasing two hard blockers.
Both are fixed here. A Metal renderer startup crash on macOS (GH-123439) and a failure to upload to the Google Play Store (GH-123474) are now resolved. So the fast turnaround is partly damage control and partly the usual race before the feature-freeze cutoff later this month. dev5's post already flagged dev6 as one of the last snapshot highlights of the 4.8 cycle. After freeze, the shift goes to stabilization.
Keep in mind that the official post repeats the usual warning: back up your project or use version control before testing. Project corruption is a real risk with software this early.
Screen-space contact shadows
The biggest change is contact shadows for directional lights. It comes from GH-118045 by Rudolph-B, heavily based on Bend Studios' public approach, and it closes the long-floated proposal godot-proposals#14141. For each directional light, Godot now builds an R8 shadow texture and blends it into the existing shadow maps. That softens the visible gap between an object and the surface under it, something plain shadow maps can't capture on their own.
The pitch is performance. Rudolph-B measured roughly 0.1 ms per directional light on a Ryzen 7 3700X with an RTX 2070 Super. Directional lights are stable on screen and rare — at most eight of them — so managing per-light textures stays cheap. Positional lights move constantly and multiply fast, which is why this first pass points only at directional lights.
Scope was a deliberate engineering call. Maintainer clayjohn steered the engine toward contact shadows as a refinement on top of shadow maps rather than full screen-space shadows as a replacement. His argument is that raw screen-space shadows "will never be a good fit" for a general-purpose engine, because they can't be cached. You pay the full trace cost every frame for every pixel, whereas shadow maps are cached automatically and stay cheaper.
Calinou backed that up with benchmark data from an experimental follow-up branch. At 1440p the Bend method added about 0.38 mspf; the more thorough method ran about 0.97 mspf. At 4K the numbers held roughly the same. The official implementation follows the efficient Bend route. It's arguably the most useful shadow refinement in a while, though the limits are real.
Editor cleanup and the rest of the build
The 3D toolbar gets the final chapter of Jayden Sipe's overhaul trilogy. You've already seen the game-view toolbar in dev1 and the 2D toolbar in dev5, so this follows the same redesign language. The focus is visual clarity and usability, and it's part of a broader effort to make the editor feel consistent on top of the docked game view and the main-screen-to-dock migration.
A batch of smaller changes rounds out the snapshot. GDScript syntax highlighting got faster (GH-123320), InputEventScreenTouch gains a long_press property (GH-122865), and panning plus touchpad scrolling are fixed on Linux and macOS (GH-111305). SDL bumps to 3.4.16, and Vulkan's swap chain resize gets its swapped swappy_mode cases corrected (GH-123300).
The multi-layer projection camera for XR (GH-116424) arrives too, but it comes with baggage. That same PR introduced a regression in OpenXR Spatial Container integration, and a fix is still being worked on. Progress with a trade-off.
Where to grab it
Dev 6 runs on Linux, Windows, and macOS (universal), each split into a Standard build and a .NET/mono build with C#. The interactive changelog spells out all 56 fixes since dev5 and can also show the entire 4.8 versus 4.7 diff.
Head here to download the release.
