Skip to content

Commit f907ef1

Browse files
committed
Merge tag '4.6.1-stable' into work2
2 parents 386ff59 + 14d1969 commit f907ef1

114 files changed

Lines changed: 35982 additions & 2225 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGELOG.md

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,96 @@ previous feature release. It is equivalent to the listings on our
77
Changelogs for earlier feature releases are available in their respective Git
88
branches, and linked at the [end of this file](#Past-releases).
99

10+
## 4.6.1 - 2026-02-16
11+
12+
- [Release announcement](https://godotengine.org/article/maintenance-release-godot-4-6-1)
13+
- [Interactive changelog](https://godotengine.github.io/godot-interactive-changelog/#4.6.1)
14+
15+
#### 3D
16+
17+
- Change orbit snap shortcut with navigation scheme ([GH-115298](https://github.com/godotengine/godot/pull/115298)).
18+
- Fix `Skeleton3D` Edit Mode bone buttons have priority over transform gizmo ([GH-115608](https://github.com/godotengine/godot/pull/115608)).
19+
- Fix viewport orbit snap defaulting to always snapping when shortcut(s) are set to none ([GH-115002](https://github.com/godotengine/godot/pull/115002)).
20+
- Increase float precision in the editor inspector for Quaternions ([GH-106352](https://github.com/godotengine/godot/pull/106352)).
21+
- Register zoom shortcuts to match preset `Godot` navigation scheme ([GH-115290](https://github.com/godotengine/godot/pull/115290)).
22+
23+
#### Animation
24+
25+
- Fix double memdelete of `dummy_player` ([GH-115968](https://github.com/godotengine/godot/pull/115968)).
26+
- Fix LookAtModifier3D / AimModifier3D forward vector ([GH-115689](https://github.com/godotengine/godot/pull/115689)).
27+
- Fix use-after-free in Animation Blend Tree ([GH-115919](https://github.com/godotengine/godot/pull/115919)).
28+
- Fix use-after-free in AnimationTree (AHashMap realloc) ([GH-115931](https://github.com/godotengine/godot/pull/115931)).
29+
30+
#### Buildsystem
31+
32+
- Fix missing lib with `builtin_glslang=false` ([GH-93478](https://github.com/godotengine/godot/pull/93478)).
33+
34+
#### C#
35+
36+
- Revert "Improve performance of `CSharpLanguage::reload_assemblies`" ([GH-115759](https://github.com/godotengine/godot/pull/115759)).
37+
38+
#### Core
39+
40+
- Fix ClassDB class list sorting regression ([GH-115923](https://github.com/godotengine/godot/pull/115923)).
41+
- Fix the `NodePath` hash function to not yield the same value for similar paths ([GH-115473](https://github.com/godotengine/godot/pull/115473)).
42+
43+
#### Editor
44+
45+
- Fix `NodePath` `EditorProperty` using the wrong scene root ([GH-115422](https://github.com/godotengine/godot/pull/115422)).
46+
- Fix create dialog recents ([GH-115314](https://github.com/godotengine/godot/pull/115314)).
47+
- Fix Rename option for instance roots ([GH-115575](https://github.com/godotengine/godot/pull/115575)).
48+
- Fix Unique Resources from Inherited Scenes ([GH-115862](https://github.com/godotengine/godot/pull/115862)).
49+
- Fix wrong base type when creating script ([GH-115778](https://github.com/godotengine/godot/pull/115778)).
50+
51+
#### Export
52+
53+
- Load translation files to check locale for ICU data export ([GH-115827](https://github.com/godotengine/godot/pull/115827)).
54+
55+
#### GDScript
56+
57+
- LSP: Add `godot` to known language ids ([GH-115671](https://github.com/godotengine/godot/pull/115671)).
58+
- LSP: Handle clients that do not support `CompletionContext` ([GH-115672](https://github.com/godotengine/godot/pull/115672)).
59+
60+
#### GUI
61+
62+
- Fix current line highlight not extending into gutter ([GH-115729](https://github.com/godotengine/godot/pull/115729)).
63+
64+
#### Input
65+
66+
- Update editor shortcuts when changing 3D navigation scheme ([GH-115289](https://github.com/godotengine/godot/pull/115289)).
67+
68+
#### Particles
69+
70+
- Revert "Change curve range for particle multipliers" ([GH-116140](https://github.com/godotengine/godot/pull/116140)).
71+
72+
#### Physics
73+
74+
- Fix transform updates sometimes being discarded when using Jolt ([GH-115364](https://github.com/godotengine/godot/pull/115364)).
75+
76+
#### Platforms
77+
78+
- Android: Fix `Bad file descriptor` in SAF/MediaStore in long term access ([GH-115751](https://github.com/godotengine/godot/pull/115751)).
79+
- Fix crash in `StorageScope.kt` on Android ([GH-115515](https://github.com/godotengine/godot/pull/115515)).
80+
- Wayland Embedder: Fix FD leak with inert objects ([GH-115823](https://github.com/godotengine/godot/pull/115823)).
81+
- Windows: Disable MSVC control flow check on IAT hooks ([GH-115430](https://github.com/godotengine/godot/pull/115430)).
82+
83+
#### Plugin
84+
85+
- Android: Fix plugin type mismatch regression ([GH-115685](https://github.com/godotengine/godot/pull/115685)).
86+
87+
#### Rendering
88+
89+
- Avoid reading from sky pointer when rendering background without sky ([GH-115874](https://github.com/godotengine/godot/pull/115874)).
90+
- Ensure that uv border size is passed in to sky rendering functions ([GH-115606](https://github.com/godotengine/godot/pull/115606)).
91+
- Pick the sample closer to the camera when resolving 2x MSAA ([GH-115124](https://github.com/godotengine/godot/pull/115124)).
92+
- Update re-spirv with more derivative operations ([GH-115921](https://github.com/godotengine/godot/pull/115921)).
93+
- Use sky's corrected camera projection for `combined_reprojection` ([GH-115292](https://github.com/godotengine/godot/pull/115292)).
94+
- Use transmittance instead of opacity in the early-out branch when calculating volumetric fog ([GH-116107](https://github.com/godotengine/godot/pull/116107)).
95+
96+
#### Thirdparty
97+
98+
- libpng: Update to 1.6.54 ([GH-115714](https://github.com/godotengine/godot/pull/115714)).
99+
10100
## 4.6 - 2026-01-26
11101

12102
- [Release announcement](https://godotengine.org/releases/4.6/)

COPYRIGHT.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -390,8 +390,8 @@ License: BSD-3-clause
390390

391391
Files: thirdparty/libpng/*
392392
Comment: libpng
393-
Copyright: 1995-2025, The PNG Reference Library Authors.
394-
2018-2025, Cosmin Truta.
393+
Copyright: 1995-2026, The PNG Reference Library Authors.
394+
2018-2026, Cosmin Truta.
395395
2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson.
396396
1996-1997, Andreas Dilger.
397397
1995-1996, Guy Eric Schalnat, Group 42, Inc.

core/object/class_db.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ void ClassDB::get_class_list(LocalVector<StringName> &p_classes) {
255255
p_classes.push_back(cls.key);
256256
}
257257

258-
SortArray<StringName> sorter;
258+
SortArray<StringName, StringName::AlphCompare> sorter;
259259
sorter.sort(&p_classes[p_classes.size() - classes.size()], classes.size());
260260
}
261261

@@ -279,7 +279,7 @@ void ClassDB::get_extensions_class_list(LocalVector<StringName> &p_classes) {
279279
return;
280280
}
281281

282-
SortArray<StringName> sorter;
282+
SortArray<StringName, StringName::AlphCompare> sorter;
283283
sorter.sort(&p_classes[original_size], p_classes.size() - original_size);
284284
}
285285

core/object/script_language.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -527,7 +527,7 @@ void ScriptServer::get_global_class_list(LocalVector<StringName> &r_global_class
527527
for (const KeyValue<StringName, GlobalScriptClass> &global_class : global_classes) {
528528
r_global_classes.push_back(global_class.key);
529529
}
530-
SortArray<StringName> sorter;
530+
SortArray<StringName, StringName::AlphCompare> sorter;
531531
sorter.sort(&r_global_classes[r_global_classes.size() - global_classes.size()], global_classes.size());
532532
}
533533

core/string/node_path.cpp

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -33,20 +33,11 @@
3333
#include "core/variant/variant.h"
3434

3535
void NodePath::_update_hash_cache() const {
36-
uint32_t h = data->absolute ? 1 : 0;
37-
int pc = data->path.size();
38-
const StringName *sn = data->path.ptr();
39-
for (int i = 0; i < pc; i++) {
40-
h = h ^ sn[i].hash();
41-
}
42-
int spc = data->subpath.size();
43-
const StringName *ssn = data->subpath.ptr();
44-
for (int i = 0; i < spc; i++) {
45-
h = h ^ ssn[i].hash();
46-
}
47-
36+
StringName path = get_concatenated_names();
37+
StringName subpath = get_concatenated_subnames();
38+
uint32_t hash = HashMapHasherDefault::hash(Pair<const StringName &, const StringName &>(path, subpath));
39+
data->hash_cache = is_absolute() ? hash : ~hash;
4840
data->hash_cache_valid = true;
49-
data->hash_cache = h;
5041
}
5142

5243
void NodePath::prepend_period() {

doc/classes/LookAtModifier3D.xml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,9 @@
9191
<member name="primary_rotation_axis" type="int" setter="set_primary_rotation_axis" getter="get_primary_rotation_axis" enum="Vector3.Axis" default="1">
9292
The axis of the first rotation. This [SkeletonModifier3D] works by compositing the rotation by Euler angles to prevent to rotate the [member forward_axis].
9393
</member>
94-
<member name="relative" type="bool" setter="set_relative" getter="is_relative" default="true">
94+
<member name="relative" type="bool" setter="set_relative" getter="is_relative" default="false">
9595
The relative option. If [code]true[/code], the rotation is applied relative to the pose. If [code]false[/code], the rotation is applied relative to the rest. It means to replace the current pose with the [LookAtModifier3D]'s result.
96+
[b]Note:[/b] This option affects the base angle for [member use_angle_limitation] unlike [IterateIK3D]'s [JointLimitation3D]. Since the [LookAtModifier3D] relies strongly on Euler rotation, the axis that determines the limitation and the actual rotation are strongly tied together.
9697
</member>
9798
<member name="secondary_damp_threshold" type="float" setter="set_secondary_damp_threshold" getter="get_secondary_damp_threshold">
9899
The threshold to start damping for [member secondary_limit_angle].
@@ -124,7 +125,7 @@
124125
</member>
125126
<member name="use_angle_limitation" type="bool" setter="set_use_angle_limitation" getter="is_using_angle_limitation" default="false">
126127
If [code]true[/code], limits the amount of rotation. For example, this helps to prevent a character's neck from rotating 360 degrees.
127-
[b]Note:[/b] As with [AnimationTree] blending, interpolation is provided that favors [method Skeleton3D.get_bone_rest]. This means that interpolation does not select the shortest path in some cases.
128+
[b]Note:[/b] As with [AnimationTree] blending, interpolation is provided that favors [method Skeleton3D.get_bone_rest] or [method Skeleton3D.get_bone_pose] depends on the [member relative] option. This means that interpolation does not select the shortest path in some cases.
128129
[b]Note:[/b] Some values for [member transition_type] (such as [constant Tween.TRANS_BACK], [constant Tween.TRANS_ELASTIC], and [constant Tween.TRANS_SPRING]) may exceed the limitations. If interpolation occurs while overshooting the limitations, the result might not respect the bone rest.
129130
</member>
130131
<member name="use_secondary_rotation" type="bool" setter="set_use_secondary_rotation" getter="is_using_secondary_rotation" default="true">

doc/classes/SoftBody3D.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,7 @@
165165
</member>
166166
<member name="total_mass" type="float" setter="set_total_mass" getter="get_total_mass" default="1.0">
167167
The SoftBody3D's mass.
168+
[b]Note:[/b] When using Jolt Physics, the default value of this property will instead be [code]0.0[/code], which will cause the body to automatically calculate the mass to 1 kg per point. This is a bug, which will be fixed in Godot 4.7.
168169
</member>
169170
</members>
170171
<constants>

doc/translations/de.po

Lines changed: 50 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,12 +114,13 @@
114114
# Albert Sobral <albertsobral610@gmail.com>, 2025.
115115
# Dragon7 <nopenope@gmx.ch>, 2025.
116116
# asdad <zabooz1988@gmail.com>, 2026.
117+
# Alexander Klaus <alexander-klaus@outlook.de>, 2026.
117118
msgid ""
118119
msgstr ""
119120
"Project-Id-Version: Godot Engine class reference\n"
120121
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
121-
"PO-Revision-Date: 2026-01-20 09:04+0000\n"
122-
"Last-Translator: Rémi Verschelde <remi@godotengine.org>\n"
122+
"PO-Revision-Date: 2026-02-03 14:02+0000\n"
123+
"Last-Translator: Alexander Klaus <alexander-klaus@outlook.de>\n"
123124
"Language-Team: German <https://hosted.weblate.org/projects/godot-engine/godot-"
124125
"class-reference/de/>\n"
125126
"Language: de\n"
@@ -14142,6 +14143,9 @@ msgstr ""
1414214143
"wenn [constant BILLBOARD_PARTICLES] verwendet wird. Siehe auch [member "
1414314144
"billboard_mode]."
1414414145

14146+
msgid "The point size in pixels. See [member use_point_size]."
14147+
msgstr "Die Punktgröße in Pixeln. Siehe [member use_point_size]."
14148+
1414514149
msgid ""
1414614150
"Distance over which the fade effect takes place. The larger the distance the "
1414714151
"longer it takes for an object to fade."
@@ -14174,6 +14178,50 @@ msgstr ""
1417414178
"Textur, die verwendet wird, um die Stärke des Randbeleuchtungseffekts pro "
1417514179
"Pixel festzulegen. Multipliziert mit [member rim]."
1417614180

14181+
msgid ""
14182+
"The amount of to blend light and albedo color when rendering rim effect. If "
14183+
"[code]0[/code] the light color is used, while [code]1[/code] means albedo "
14184+
"color is used. An intermediate value generally works best."
14185+
msgstr ""
14186+
"Die Stärke, mit der Licht- und Albedo-Farbe beim Rendern des Rim-Effekts "
14187+
"gemischt werden. Bei [code]0[/code] wird die Lichtfarbe verwendet, bei "
14188+
"[code]1[/code] die Albedo-Farbe. Ein Zwischenwert funktioniert in der Regel "
14189+
"am besten."
14190+
14191+
msgid ""
14192+
"Surface reflection. A value of [code]0[/code] represents a perfect mirror "
14193+
"while a value of [code]1[/code] completely blurs the reflection. See also "
14194+
"[member metallic]."
14195+
msgstr ""
14196+
"Oberflächenreflexion. Ein Wert von [code]0[/code] entspricht einem perfekten "
14197+
"Spiegel, während ein Wert von [code]1[/code] die Reflexion vollständig "
14198+
"weichzeichnet. Siehe auch [member metallic]."
14199+
14200+
msgid ""
14201+
"Texture used to control the roughness per-pixel. Multiplied by [member "
14202+
"roughness]."
14203+
msgstr ""
14204+
"Textur, mit der die Rauheit pro Pixel gesteuert wird. Wird mit [member "
14205+
"roughness] multipliziert."
14206+
14207+
msgid ""
14208+
"If [code]true[/code], enables the \"shadow to opacity\" render mode where "
14209+
"lighting modifies the alpha so shadowed areas are opaque and non-shadowed "
14210+
"areas are transparent. Useful for overlaying shadows onto a camera feed in AR."
14211+
msgstr ""
14212+
"Wenn [code]true[/code], wird der Rendermodus „shadow to opacity“ aktiviert, "
14213+
"bei dem die Beleuchtung den Alpha-Wert so verändert, sodass im Schatten "
14214+
"liegende Bereiche deckend und beleuchtete Bereiche transparent sind. "
14215+
"Nützlich, um Schatten in AR über ein Kamerabild zu legen."
14216+
14217+
msgid ""
14218+
"Texture used to control the subsurface scattering strength. Stored in the red "
14219+
"texture channel. Multiplied by [member subsurf_scatter_strength]."
14220+
msgstr ""
14221+
"Textur, mit der die Stärke des Subsurface-Scatterings gesteuert wird. Im "
14222+
"roten Texturkanal gespeichert. Wird mit [member subsurf_scatter_strength] "
14223+
"multipliziert."
14224+
1417714225
msgid ""
1417814226
"If [code]true[/code], triplanar mapping for [code]UV[/code] is calculated in "
1417914227
"world space rather than object local space. See also [member uv1_triplanar]."

0 commit comments

Comments
 (0)