With our first dev snapshot out of the way, the 4.6 development cycle is no longer constraining itself to the territory of bugfixes. Many long-awaited features and enhancements are seeing the light of day at long last, as this behemoth of a snapshot boasts over 300 improvements in all! This blog post will aim to highlight the heavy-hitters to the best of its ability, but the sheer number of changes may warrant users to check the interactive changelog for a more thorough dive. With new features comes the potential of new bugs, so early testing and reporting will be essential to catching regressions as quickly as possible.
Please consider supporting the project financially, if you are able. Godot is maintained by the efforts of volunteers and a small team of paid contributors. Your donations go towards sponsoring their work and ensuring they can dedicate their undivided attention to the needs of the project.
Jump to the Downloads section, and give it a spin right now, or continue reading to learn more about improvements in this release. You can also try the Web editor, the XR editor, or the Android editor for this release. If you are interested in the latter, please request to join our testing group to get access to pre-release builds.
The cover illustration is from Upload Labs, an idle game where you build and optimize your computer’s system from the ground up. You can get the game for free on Steam, and follow the developers on YouTube or Discord.
Highlights
Build Godot Engine as a library
A very common request we’ve seen regarding Godot is the ability to build the engine as a standalone library. In the past, it’s not something we’ve actively pursued, as the engine paradigm is so central to many of our design philosophies. However, as time has gone on, we’ve encountered more and more scenarios where simply having the ability to access Godot in an isolated context is absolutely necessary for certain workflows. So while a fully-fledged integration of this concept isn’t something we fully support at this time, Gergely Kis has put in the work to allow for a functional baseline (GH-110863). Currently dubbed LibGodot
internally, there’s now a basic support for a GodotInstance
to function as an entry point for these specialized workflows.
ObjectDB
profiling tool
Another common request from more technically-minded users has been a proper means of profiling ObjectDB
, which can be considered the heart of our entire Object
structure. First-time contributor Aleksander Litynski took to this daunting task, bringing us the ObjectDB Profiler
tool (GH-97210). With this, users will be able to take snapshots of the current ObjectDB
state during debug sessions, and compare that to other snapshots at a given point in time. These snapshots can also be viewed in a variety of contexts detailed in the PR’s original post, but the short version is finding or exporting a diff between states has never been easier or more accessible!
Improved automatic mesh LOD using component pruning
Our mesh simplifier currently supports the ability to collapse edges, but lacked functionality for simplifying the components themselves. Arseny Kapoulkine has addressed this shortcoming, enabling topologically complex sections of a larger mesh to more easily reach the desired LOD target (GH-110028).
Rotation visualization and snapping
The way that we present and handle our 3D space has already seen a fair number of improvements in the 4.6 cycle, but these two warrant particular mention for implementing popular features that are found in many 3D modelling programs today. Firstly, Robert Yevdokimov has expanded the 3D Transform gizmo to visualize the current delta angle of a rotation operation (GH-108576). This process is non-accumulating, meaning rotations beyond 360° are reset.
The second comes to us from passivestar, who integrated orbit snapping to the 3D Viewport (GH-111509). While holding Alt
, exiting an orbit pan will cause the resulting view to be snapped to a static, 45° offset. This is similar to directly swapping to an orthographic view, but from the convenience of orbitting and allowing for more granular 45° midpoints.
Rendering: Blend glow before tonemapping and change default to screen
HDR has been growing in prevalence as a feature in modern displays, but actual support of the feature is lagging behind somewhat. This is largely because most existing programs were designed with sRGB in mind, and necessitate retrofitting themselves to handle HDR. This process is much easier said than done, and sometimes the effects can be invisible to the average user, meaning such advancements are rarely given a proper highlight. Allen Pestaluky has broken this convention, with a PR that improves visual quality for all users and sets the stage for HDR output support (GH-110671).
The first change was to blend glow before tonemapping for all rendering methods and blend modes (except soft light). While this was always the case in the Compatibility renderer, the functionality has been expanded to the Mobile and Forward+ renderers as well. Blending beforehand results in the glow effect blending in a more realistic fashion, sidestepping the hard edges and hue shifts if blended after.
Original scene | Before tonemapping (screen, AgX, 16.29 white) | After tonemapping (screen, AgX, 16.29 white) |
---|---|---|
![]() | ![]() | ![]() |
The second change was adjusting the default blend mode from soft light to screen for all renderers. This too was already the case for the Compatibility renderer, though that default was set with the behavior of blend glow before tonemapping in mind. As such, a change in the other renderers to match the new behavior is to be expected.
Renderer | Soft light blend mode | Screen blend mode |
---|---|---|
Mobile | ![]() | ![]() |
Forward+ | ![]() | ![]() |
This change technically breaks compatibility since it will result in a noticeable visual change, and the previous behavior cannot be restored by simply adjusting settings. In most cases we are confident that this change in behavior will be a direct upgrade. But this change is something to be aware of if your game is using Glow at all.
And more!
There are too many exciting changes to list them all here, but here’s a curated selection:
- Core: Add
reserve_exact
toCowData
, and change growth factor to 1.5x (GH-106039). - Core: Add
reserve
function toArray
,Vector
, andString
(GH-105928). - Core: Add unique Node IDs to support base and instantiated scene refactorings (GH-106837).
- Documentation: Drop the experimental label for the Jolt Physics integration (GH-111115).
- Editor: Add game speed controls to the embedded game window (GH-107273).
- Editor: Add source lines to file locations on POT generation (GH-111419).
- Editor: Make file part of errors/warnings clickable in Output panel (GH-108473).
- Editor: Rework editor docks (GH-106503).
- Editor: Store script states for built-in scripts (GH-93713).
- GDScript: Add opt-in GDScript warning for when calling coroutine without
await
(GH-107936). - GUI: Add
pivot_offset_ratio
property to Control (GH-70646). - GUI: Add auto-scroll behavior when selecting text outside the visible area in RichTextLabel (GH-104715).
- GUI: Visualize MarginContainer margins when selected (GH-111095).
- Import: OBJ: Support bump multiplier (normal scale) (GH-110925).
- Network: Add Core UNIX domain socket support (GH-107954).
- Physics: Add MeshInstance3D primitive conversion options (GH-101521).
- Physics: Add MultiMesh physics interpolation for 2D transforms (MultiMeshInstance2D) (GH-107666).
- Rendering: Add material debanding for use in Mobile rendering method (GH-109084).
- Rendering: Implement motion vectors in compatibility renderer (GH-97151).
- Rendering: Make
OpenXRCompositionLayer
and its children safe for multithreaded rendering (GH-109431).
Changelog
114 contributors submitted 323 fixes for this release. See our interactive changelog for the complete list of changes since 4.6-dev1. You can also review all changes included in 4.6 compared to the previous 4.5 feature release.
This release is built from commit 7864ac801
.
Downloads
Standard build includes support for GDScript and GDExtension.
.NET build (marked as mono
) includes support for C#, as well as GDScript and GDExtension.
While engine maintainers try their best to ensure that each preview snapshot and release candidate is stable, this is by definition a pre-release piece of software. Be sure to make frequent backups, or use a version control system such as Git, to preserve your projects in case of corruption or data loss.
Known issues
There are currently no known issues introduced by this release.
With every release we accept that there are going to be various issues, which have already been reported but haven’t been fixed yet. See the GitHub issue tracker for a complete list of known bugs.
Bug reports
As a tester, we encourage you to open bug reports if you experience issues with this release. Please check the existing issues on GitHub first, using the search function with relevant keywords, to ensure that the bug you experience is not already known.
In particular, any change that would cause a regression in your projects is very important to report (e.g. if something that worked fine in previous 4.x releases, but no longer works in this snapshot).
Support
Godot is a non-profit, open source game engine developed by hundreds of contributors on their free time, as well as a handful of part and full-time developers hired thanks to generous donations from the Godot community. A big thank you to everyone who has contributed their time or their financial support to the project!
If you’d like to support the project financially and help us secure our future hires, you can do so using the Godot Development Fund platform managed by Godot Foundation. There are also several alternative ways to donate which you may find more suitable.