瀏覽代碼

classref: Sync with current master branch (a7a2a12)

Godot Organization 7 月之前
父節點
當前提交
c1577c5e3a
共有 61 個文件被更改,包括 1286 次插入238 次删除
  1. 1 1
      classes/[email protected]
  2. 4 4
      classes/[email protected]
  3. 2 2
      classes/class_animationnode.rst
  4. 10 10
      classes/class_animationnodeextension.rst
  5. 1 1
      classes/class_animationrootnode.rst
  6. 14 0
      classes/class_arraymesh.rst
  7. 24 10
      classes/class_astar3d.rst
  8. 24 3
      classes/class_audioeffectamplify.rst
  9. 33 1
      classes/class_audioserver.rst
  10. 23 2
      classes/class_audiostreamplayer.rst
  11. 22 1
      classes/class_audiostreamplayer2d.rst
  12. 21 0
      classes/class_audiostreamplayer3d.rst
  13. 2 0
      classes/class_basematerial3d.rst
  14. 30 0
      classes/class_camerafeed.rst
  15. 1 1
      classes/class_cameraserver.rst
  16. 32 0
      classes/class_canvasitem.rst
  17. 35 0
      classes/class_codeedit.rst
  18. 4 4
      classes/class_collisionshape2d.rst
  19. 3 1
      classes/class_collisionshape3d.rst
  20. 4 4
      classes/class_compositoreffect.rst
  21. 3 1
      classes/class_csgmesh3d.rst
  22. 10 2
      classes/class_displayserver.rst
  23. 2 2
      classes/class_dtlsserver.rst
  24. 16 0
      classes/class_editorexportplatformandroid.rst
  25. 16 0
      classes/class_editorinspector.rst
  26. 3 3
      classes/class_editorinterface.rst
  27. 2 0
      classes/class_editorplugin.rst
  28. 14 0
      classes/class_editorsettings.rst
  29. 14 0
      classes/class_engine.rst
  30. 1 1
      classes/class_geometryinstance3d.rst
  31. 2 0
      classes/class_gpuparticles2d.rst
  32. 2 0
      classes/class_gpuparticles3d.rst
  33. 129 72
      classes/class_graphedit.rst
  34. 165 0
      classes/class_gridmapeditorplugin.rst
  35. 4 4
      classes/class_heightmapshape3d.rst
  36. 1 1
      classes/class_imagetexture.rst
  37. 9 3
      classes/class_input.rst
  38. 2 0
      classes/class_inputeventmidi.rst
  39. 90 40
      classes/class_itemlist.rst
  40. 2 2
      classes/class_light3d.rst
  41. 1 1
      classes/class_menubar.rst
  42. 12 0
      classes/class_node.rst
  43. 2 0
      classes/class_omnilight3d.rst
  44. 27 3
      classes/class_os.rst
  45. 18 2
      classes/class_projectsettings.rst
  46. 150 0
      classes/class_renderingserver.rst
  47. 38 19
      classes/class_renderscenebuffersconfiguration.rst
  48. 23 9
      classes/class_renderscenebuffersextension.rst
  49. 18 0
      classes/class_richtextlabel.rst
  50. 16 0
      classes/class_scriptextension.rst
  51. 25 3
      classes/class_scriptlanguageextension.rst
  52. 2 0
      classes/class_spotlight3d.rst
  53. 1 1
      classes/class_texture2d.rst
  54. 32 13
      classes/class_timer.rst
  55. 14 0
      classes/class_treeitem.rst
  56. 84 1
      classes/class_viewport.rst
  57. 3 1
      classes/class_viewporttexture.rst
  58. 12 0
      classes/class_window.rst
  59. 2 2
      classes/class_xrinterface.rst
  60. 28 7
      classes/class_xrserver.rst
  61. 1 0
      classes/index.rst

+ 1 - 1
classes/[email protected]

@@ -803,7 +803,7 @@ Mark the following property as assigned when the :ref:`Node<class_Node>` is read
 
 ::
 
-    @onready var character_name: Label = $Label
+    @onready var character_name = $Label
 
 .. rst-class:: classref-item-separator
 

+ 4 - 4
classes/[email protected]

@@ -1425,7 +1425,7 @@ Help key.
 
 :ref:`Key<enum_@GlobalScope_Key>` **KEY_BACK** = ``4194376``
 
-Media back key. Not to be confused with the Back button on an Android device.
+Back key.
 
 .. _class_@GlobalScope_constant_KEY_FORWARD:
 
@@ -1433,7 +1433,7 @@ Media back key. Not to be confused with the Back button on an Android device.
 
 :ref:`Key<enum_@GlobalScope_Key>` **KEY_FORWARD** = ``4194377``
 
-Media forward key.
+Forward key.
 
 .. _class_@GlobalScope_constant_KEY_STOP:
 
@@ -1449,7 +1449,7 @@ Media stop key.
 
 :ref:`Key<enum_@GlobalScope_Key>` **KEY_REFRESH** = ``4194379``
 
-Media refresh key.
+Refresh key.
 
 .. _class_@GlobalScope_constant_KEY_VOLUMEDOWN:
 
@@ -3879,7 +3879,7 @@ Hints that a property will be changed on its own after setting, such as :ref:`Au
 
 .. rst-class:: classref-enumeration-constant
 
-:ref:`PropertyHint<enum_@GlobalScope_PropertyHint>` **PROPERTY_HINT_MAX** = ``41``
+:ref:`PropertyHint<enum_@GlobalScope_PropertyHint>` **PROPERTY_HINT_MAX** = ``42``
 
 Represents the size of the :ref:`PropertyHint<enum_@GlobalScope_PropertyHint>` enum.
 

+ 2 - 2
classes/class_animationnode.rst

@@ -12,7 +12,7 @@ AnimationNode
 
 **Inherits:** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
-**Inherited By:** :ref:`AnimationNodeOutput<class_AnimationNodeOutput>`, :ref:`AnimationNodeSync<class_AnimationNodeSync>`, :ref:`AnimationNodeTimeScale<class_AnimationNodeTimeScale>`, :ref:`AnimationNodeTimeSeek<class_AnimationNodeTimeSeek>`, :ref:`AnimationRootNode<class_AnimationRootNode>`
+**Inherited By:** :ref:`AnimationNodeExtension<class_AnimationNodeExtension>`, :ref:`AnimationNodeOutput<class_AnimationNodeOutput>`, :ref:`AnimationNodeSync<class_AnimationNodeSync>`, :ref:`AnimationNodeTimeScale<class_AnimationNodeTimeScale>`, :ref:`AnimationNodeTimeSeek<class_AnimationNodeTimeSeek>`, :ref:`AnimationRootNode<class_AnimationRootNode>`
 
 Base class for :ref:`AnimationTree<class_AnimationTree>` nodes. Not related to scene nodes.
 
@@ -437,7 +437,7 @@ Gets the value of a parameter. Parameters are custom local memory used for your
 
 Returns the object id of the :ref:`AnimationTree<class_AnimationTree>` that owns this node.
 
-\ **Note:** This method should only be called from within the :ref:`AnimationNodeExtension._process<class_AnimationNodeExtension_private_method__process>` method, and will return an invalid id otherwise.
+\ **Note:** This method should only be called from within the :ref:`AnimationNodeExtension._process_animation_node<class_AnimationNodeExtension_private_method__process_animation_node>` method, and will return an invalid id otherwise.
 
 .. rst-class:: classref-item-separator
 

+ 10 - 10
classes/class_animationnodeextension.rst

@@ -12,7 +12,7 @@ AnimationNodeExtension
 
 **Experimental:** This class may be changed or removed in future versions.
 
-**Inherits:** :ref:`AnimationRootNode<class_AnimationRootNode>` **<** :ref:`AnimationNode<class_AnimationNode>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
+**Inherits:** :ref:`AnimationNode<class_AnimationNode>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
 Base class for extending :ref:`AnimationRootNode<class_AnimationRootNode>`\ s from GDScript, C#, or C++.
 
@@ -31,13 +31,13 @@ Methods
 .. table::
    :widths: auto
 
-   +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`PackedFloat32Array<class_PackedFloat32Array>` | :ref:`_process<class_AnimationNodeExtension_private_method__process>`\ (\ playback_info\: :ref:`PackedFloat64Array<class_PackedFloat64Array>`, test_only\: :ref:`bool<class_bool>`\ ) |virtual|         |
-   +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`float<class_float>`                           | :ref:`get_remaining_time<class_AnimationNodeExtension_method_get_remaining_time>`\ (\ node_info\: :ref:`PackedFloat32Array<class_PackedFloat32Array>`, break_loop\: :ref:`bool<class_bool>`\ ) |static| |
-   +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`bool<class_bool>`                             | :ref:`is_looping<class_AnimationNodeExtension_method_is_looping>`\ (\ node_info\: :ref:`PackedFloat32Array<class_PackedFloat32Array>`\ ) |static|                                                       |
-   +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`PackedFloat32Array<class_PackedFloat32Array>` | :ref:`_process_animation_node<class_AnimationNodeExtension_private_method__process_animation_node>`\ (\ playback_info\: :ref:`PackedFloat64Array<class_PackedFloat64Array>`, test_only\: :ref:`bool<class_bool>`\ ) |virtual| |
+   +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`float<class_float>`                           | :ref:`get_remaining_time<class_AnimationNodeExtension_method_get_remaining_time>`\ (\ node_info\: :ref:`PackedFloat32Array<class_PackedFloat32Array>`, break_loop\: :ref:`bool<class_bool>`\ ) |static|                       |
+   +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                             | :ref:`is_looping<class_AnimationNodeExtension_method_is_looping>`\ (\ node_info\: :ref:`PackedFloat32Array<class_PackedFloat32Array>`\ ) |static|                                                                             |
+   +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 .. rst-class:: classref-section-separator
 
@@ -48,11 +48,11 @@ Methods
 Method Descriptions
 -------------------
 
-.. _class_AnimationNodeExtension_private_method__process:
+.. _class_AnimationNodeExtension_private_method__process_animation_node:
 
 .. rst-class:: classref-method
 
-:ref:`PackedFloat32Array<class_PackedFloat32Array>` **_process**\ (\ playback_info\: :ref:`PackedFloat64Array<class_PackedFloat64Array>`, test_only\: :ref:`bool<class_bool>`\ ) |virtual| :ref:`🔗<class_AnimationNodeExtension_private_method__process>`
+:ref:`PackedFloat32Array<class_PackedFloat32Array>` **_process_animation_node**\ (\ playback_info\: :ref:`PackedFloat64Array<class_PackedFloat64Array>`, test_only\: :ref:`bool<class_bool>`\ ) |virtual| :ref:`🔗<class_AnimationNodeExtension_private_method__process_animation_node>`
 
 A version of the :ref:`AnimationNode._process<class_AnimationNode_private_method__process>` method that is meant to be overridden by custom nodes. It returns a :ref:`PackedFloat32Array<class_PackedFloat32Array>` with the processed animation data.
 

+ 1 - 1
classes/class_animationrootnode.rst

@@ -12,7 +12,7 @@ AnimationRootNode
 
 **Inherits:** :ref:`AnimationNode<class_AnimationNode>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
-**Inherited By:** :ref:`AnimationNodeAnimation<class_AnimationNodeAnimation>`, :ref:`AnimationNodeBlendSpace1D<class_AnimationNodeBlendSpace1D>`, :ref:`AnimationNodeBlendSpace2D<class_AnimationNodeBlendSpace2D>`, :ref:`AnimationNodeBlendTree<class_AnimationNodeBlendTree>`, :ref:`AnimationNodeExtension<class_AnimationNodeExtension>`, :ref:`AnimationNodeStateMachine<class_AnimationNodeStateMachine>`
+**Inherited By:** :ref:`AnimationNodeAnimation<class_AnimationNodeAnimation>`, :ref:`AnimationNodeBlendSpace1D<class_AnimationNodeBlendSpace1D>`, :ref:`AnimationNodeBlendSpace2D<class_AnimationNodeBlendSpace2D>`, :ref:`AnimationNodeBlendTree<class_AnimationNodeBlendTree>`, :ref:`AnimationNodeStateMachine<class_AnimationNodeStateMachine>`
 
 Base class for :ref:`AnimationNode<class_AnimationNode>`\ s that hold one or multiple composite animations. Usually used for :ref:`AnimationTree.tree_root<class_AnimationTree_property_tree_root>`.
 

+ 14 - 0
classes/class_arraymesh.rst

@@ -134,6 +134,8 @@ Methods
    +---------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`PrimitiveType<enum_Mesh_PrimitiveType>`           | :ref:`surface_get_primitive_type<class_ArrayMesh_method_surface_get_primitive_type>`\ (\ surf_idx\: :ref:`int<class_int>`\ ) |const|                                                                                                                                                                                                                                                  |
    +---------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                  | :ref:`surface_remove<class_ArrayMesh_method_surface_remove>`\ (\ surf_idx\: :ref:`int<class_int>`\ )                                                                                                                                                                                                                                                                                  |
+   +---------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                                  | :ref:`surface_set_name<class_ArrayMesh_method_surface_set_name>`\ (\ surf_idx\: :ref:`int<class_int>`, name\: :ref:`String<class_String>`\ )                                                                                                                                                                                                                                          |
    +---------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                                  | :ref:`surface_update_attribute_region<class_ArrayMesh_method_surface_update_attribute_region>`\ (\ surf_idx\: :ref:`int<class_int>`, offset\: :ref:`int<class_int>`, data\: :ref:`PackedByteArray<class_PackedByteArray>`\ )                                                                                                                                                          |
@@ -402,6 +404,18 @@ Returns the primitive type of the requested surface (see :ref:`add_surface_from_
 
 ----
 
+.. _class_ArrayMesh_method_surface_remove:
+
+.. rst-class:: classref-method
+
+|void| **surface_remove**\ (\ surf_idx\: :ref:`int<class_int>`\ ) :ref:`🔗<class_ArrayMesh_method_surface_remove>`
+
+Removes the surface at the given index from the Mesh, shifting surfaces with higher index down by one.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_ArrayMesh_method_surface_set_name:
 
 .. rst-class:: classref-method

+ 24 - 10
classes/class_astar3d.rst

@@ -23,34 +23,48 @@ A\* (A star) is a computer algorithm used in pathfinding and graph traversal, th
 
 You must add points manually with :ref:`add_point<class_AStar3D_method_add_point>` and create segments manually with :ref:`connect_points<class_AStar3D_method_connect_points>`. Once done, you can test if there is a path between two points with the :ref:`are_points_connected<class_AStar3D_method_are_points_connected>` function, get a path containing indices by :ref:`get_id_path<class_AStar3D_method_get_id_path>`, or one containing actual coordinates with :ref:`get_point_path<class_AStar3D_method_get_point_path>`.
 
-It is also possible to use non-Euclidean distances. To do so, create a class that extends **AStar3D** and override methods :ref:`_compute_cost<class_AStar3D_private_method__compute_cost>` and :ref:`_estimate_cost<class_AStar3D_private_method__estimate_cost>`. Both take two indices and return a length, as is shown in the following example.
+It is also possible to use non-Euclidean distances. To do so, create a script that extends **AStar3D** and override the methods :ref:`_compute_cost<class_AStar3D_private_method__compute_cost>` and :ref:`_estimate_cost<class_AStar3D_private_method__estimate_cost>`. Both should take two point IDs and return the distance between the corresponding points.
+
+\ **Example:** Use Manhattan distance instead of Euclidean distance:
 
 
 .. tabs::
 
  .. code-tab:: gdscript
 
-    class MyAStar:
-        extends AStar3D
+    class_name MyAStar3D
+    extends AStar3D
     
-        func _compute_cost(u, v):
-            return abs(u - v)
+    func _compute_cost(u, v):
+        var u_pos = get_point_position(u)
+        var v_pos = get_point_position(v)
+        return abs(u_pos.x - v_pos.x) + abs(u_pos.y - v_pos.y) + abs(u_pos.z - v_pos.z)
     
-        func _estimate_cost(u, v):
-            return min(0, abs(u - v) - 1)
+    func _estimate_cost(u, v):
+        var u_pos = get_point_position(u)
+        var v_pos = get_point_position(v)
+        return abs(u_pos.x - v_pos.x) + abs(u_pos.y - v_pos.y) + abs(u_pos.z - v_pos.z)
 
  .. code-tab:: csharp
 
-    public partial class MyAStar : AStar3D
+    using Godot;
+    
+    [GlobalClass]
+    public partial class MyAStar3D : AStar3D
     {
         public override float _ComputeCost(long fromId, long toId)
         {
-            return Mathf.Abs((int)(fromId - toId));
+            Vector3 fromPoint = GetPointPosition(fromId);
+            Vector3 toPoint = GetPointPosition(toId);
+    
+            return Mathf.Abs(fromPoint.X - toPoint.X) + Mathf.Abs(fromPoint.Y - toPoint.Y) + Mathf.Abs(fromPoint.Z - toPoint.Z);
         }
     
         public override float _EstimateCost(long fromId, long toId)
         {
-            return Mathf.Min(0, Mathf.Abs((int)(fromId - toId)) - 1);
+            Vector3 fromPoint = GetPointPosition(fromId);
+            Vector3 toPoint = GetPointPosition(toId);
+            return Mathf.Abs(fromPoint.X - toPoint.X) + Mathf.Abs(fromPoint.Y - toPoint.Y) + Mathf.Abs(fromPoint.Z - toPoint.Z);
         }
     }
 

+ 24 - 3
classes/class_audioeffectamplify.rst

@@ -36,9 +36,11 @@ Properties
 .. table::
    :widths: auto
 
-   +---------------------------+---------------------------------------------------------------+---------+
-   | :ref:`float<class_float>` | :ref:`volume_db<class_AudioEffectAmplify_property_volume_db>` | ``0.0`` |
-   +---------------------------+---------------------------------------------------------------+---------+
+   +---------------------------+-----------------------------------------------------------------------+---------+
+   | :ref:`float<class_float>` | :ref:`volume_db<class_AudioEffectAmplify_property_volume_db>`         | ``0.0`` |
+   +---------------------------+-----------------------------------------------------------------------+---------+
+   | :ref:`float<class_float>` | :ref:`volume_linear<class_AudioEffectAmplify_property_volume_linear>` |         |
+   +---------------------------+-----------------------------------------------------------------------+---------+
 
 .. rst-class:: classref-section-separator
 
@@ -62,6 +64,25 @@ Property Descriptions
 
 Amount of amplification in decibels. Positive values make the sound louder, negative values make it quieter. Value can range from -80 to 24.
 
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AudioEffectAmplify_property_volume_linear:
+
+.. rst-class:: classref-property
+
+:ref:`float<class_float>` **volume_linear** :ref:`🔗<class_AudioEffectAmplify_property_volume_linear>`
+
+.. rst-class:: classref-property-setget
+
+- |void| **set_volume_linear**\ (\ value\: :ref:`float<class_float>`\ )
+- :ref:`float<class_float>` **get_volume_linear**\ (\ )
+
+Amount of amplification as a linear value.
+
+\ **Note:** This member modifies :ref:`volume_db<class_AudioEffectAmplify_property_volume_db>` for convenience. The returned value is equivalent to the result of :ref:`@GlobalScope.db_to_linear<class_@GlobalScope_method_db_to_linear>` on :ref:`volume_db<class_AudioEffectAmplify_property_volume_db>`. Setting this member is equivalent to setting :ref:`volume_db<class_AudioEffectAmplify_property_volume_db>` to the result of :ref:`@GlobalScope.linear_to_db<class_@GlobalScope_method_linear_to_db>` on a value.
+
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`

+ 33 - 1
classes/class_audioserver.rst

@@ -87,6 +87,8 @@ Methods
    +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`float<class_float>`                             | :ref:`get_bus_volume_db<class_AudioServer_method_get_bus_volume_db>`\ (\ bus_idx\: :ref:`int<class_int>`\ ) |const|                                                                              |
    +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`float<class_float>`                             | :ref:`get_bus_volume_linear<class_AudioServer_method_get_bus_volume_linear>`\ (\ bus_idx\: :ref:`int<class_int>`\ ) |const|                                                                      |
+   +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`String<class_String>`                           | :ref:`get_driver_name<class_AudioServer_method_get_driver_name>`\ (\ ) |const|                                                                                                                   |
    +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`PackedStringArray<class_PackedStringArray>`     | :ref:`get_input_device_list<class_AudioServer_method_get_input_device_list>`\ (\ )                                                                                                               |
@@ -141,6 +143,8 @@ Methods
    +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                                | :ref:`set_bus_volume_db<class_AudioServer_method_set_bus_volume_db>`\ (\ bus_idx\: :ref:`int<class_int>`, volume_db\: :ref:`float<class_float>`\ )                                               |
    +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                | :ref:`set_bus_volume_linear<class_AudioServer_method_set_bus_volume_linear>`\ (\ bus_idx\: :ref:`int<class_int>`, volume_linear\: :ref:`float<class_float>`\ )                                   |
+   +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                                | :ref:`set_enable_tagging_used_audio_streams<class_AudioServer_method_set_enable_tagging_used_audio_streams>`\ (\ enable\: :ref:`bool<class_bool>`\ )                                             |
    +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                                | :ref:`swap_bus_effects<class_AudioServer_method_swap_bus_effects>`\ (\ bus_idx\: :ref:`int<class_int>`, effect_idx\: :ref:`int<class_int>`, by_effect_idx\: :ref:`int<class_int>`\ )             |
@@ -518,6 +522,20 @@ Returns the volume of the bus at index ``bus_idx`` in dB.
 
 ----
 
+.. _class_AudioServer_method_get_bus_volume_linear:
+
+.. rst-class:: classref-method
+
+:ref:`float<class_float>` **get_bus_volume_linear**\ (\ bus_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AudioServer_method_get_bus_volume_linear>`
+
+Returns the volume of the bus at index ``bus_idx`` as a linear value.
+
+\ **Note:** The returned value is equivalent to the result of :ref:`@GlobalScope.db_to_linear<class_@GlobalScope_method_db_to_linear>` on the result of :ref:`get_bus_volume_db<class_AudioServer_method_get_bus_volume_db>`.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_AudioServer_method_get_driver_name:
 
 .. rst-class:: classref-method
@@ -850,7 +868,21 @@ If ``true``, the bus at index ``bus_idx`` is in solo mode.
 
 |void| **set_bus_volume_db**\ (\ bus_idx\: :ref:`int<class_int>`, volume_db\: :ref:`float<class_float>`\ ) :ref:`🔗<class_AudioServer_method_set_bus_volume_db>`
 
-Sets the volume of the bus at index ``bus_idx`` to ``volume_db``.
+Sets the volume in decibels of the bus at index ``bus_idx`` to ``volume_db``.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AudioServer_method_set_bus_volume_linear:
+
+.. rst-class:: classref-method
+
+|void| **set_bus_volume_linear**\ (\ bus_idx\: :ref:`int<class_int>`, volume_linear\: :ref:`float<class_float>`\ ) :ref:`🔗<class_AudioServer_method_set_bus_volume_linear>`
+
+Sets the volume as a linear value of the bus at index ``bus_idx`` to ``volume_linear``.
+
+\ **Note:** Using this method is equivalent to calling :ref:`set_bus_volume_db<class_AudioServer_method_set_bus_volume_db>` with the result of :ref:`@GlobalScope.linear_to_db<class_@GlobalScope_method_linear_to_db>` on a value.
 
 .. rst-class:: classref-item-separator
 

+ 23 - 2
classes/class_audiostreamplayer.rst

@@ -74,6 +74,8 @@ Properties
    +----------------------------------------------------+----------------------------------------------------------------------+---------------+
    | :ref:`float<class_float>`                          | :ref:`volume_db<class_AudioStreamPlayer_property_volume_db>`         | ``0.0``       |
    +----------------------------------------------------+----------------------------------------------------------------------+---------------+
+   | :ref:`float<class_float>`                          | :ref:`volume_linear<class_AudioStreamPlayer_property_volume_linear>` |               |
+   +----------------------------------------------------+----------------------------------------------------------------------+---------------+
 
 .. rst-class:: classref-reftable-group
 
@@ -332,9 +334,28 @@ If ``true``, the sounds are paused. Setting :ref:`stream_paused<class_AudioStrea
 - |void| **set_volume_db**\ (\ value\: :ref:`float<class_float>`\ )
 - :ref:`float<class_float>` **get_volume_db**\ (\ )
 
-Volume of sound, in decibel. This is an offset of the :ref:`stream<class_AudioStreamPlayer_property_stream>`'s volume.
+Volume of sound, in decibels. This is an offset of the :ref:`stream<class_AudioStreamPlayer_property_stream>`'s volume.
+
+\ **Note:** To convert between decibel and linear energy (like most volume sliders do), use :ref:`volume_linear<class_AudioStreamPlayer_property_volume_linear>`, or :ref:`@GlobalScope.db_to_linear<class_@GlobalScope_method_db_to_linear>` and :ref:`@GlobalScope.linear_to_db<class_@GlobalScope_method_linear_to_db>`.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AudioStreamPlayer_property_volume_linear:
+
+.. rst-class:: classref-property
+
+:ref:`float<class_float>` **volume_linear** :ref:`🔗<class_AudioStreamPlayer_property_volume_linear>`
+
+.. rst-class:: classref-property-setget
+
+- |void| **set_volume_linear**\ (\ value\: :ref:`float<class_float>`\ )
+- :ref:`float<class_float>` **get_volume_linear**\ (\ )
+
+Volume of sound, as a linear value.
 
-\ **Note:** To convert between decibel and linear energy (like most volume sliders do), use :ref:`@GlobalScope.db_to_linear<class_@GlobalScope_method_db_to_linear>` and :ref:`@GlobalScope.linear_to_db<class_@GlobalScope_method_linear_to_db>`.
+\ **Note:** This member modifies :ref:`volume_db<class_AudioStreamPlayer_property_volume_db>` for convenience. The returned value is equivalent to the result of :ref:`@GlobalScope.db_to_linear<class_@GlobalScope_method_db_to_linear>` on :ref:`volume_db<class_AudioStreamPlayer_property_volume_db>`. Setting this member is equivalent to setting :ref:`volume_db<class_AudioStreamPlayer_property_volume_db>` to the result of :ref:`@GlobalScope.linear_to_db<class_@GlobalScope_method_linear_to_db>` on a value.
 
 .. rst-class:: classref-section-separator
 

+ 22 - 1
classes/class_audiostreamplayer2d.rst

@@ -72,6 +72,8 @@ Properties
    +----------------------------------------------------+------------------------------------------------------------------------------+---------------+
    | :ref:`float<class_float>`                          | :ref:`volume_db<class_AudioStreamPlayer2D_property_volume_db>`               | ``0.0``       |
    +----------------------------------------------------+------------------------------------------------------------------------------+---------------+
+   | :ref:`float<class_float>`                          | :ref:`volume_linear<class_AudioStreamPlayer2D_property_volume_linear>`       |               |
+   +----------------------------------------------------+------------------------------------------------------------------------------+---------------+
 
 .. rst-class:: classref-reftable-group
 
@@ -340,7 +342,26 @@ If ``true``, the playback is paused. You can resume it by setting :ref:`stream_p
 - |void| **set_volume_db**\ (\ value\: :ref:`float<class_float>`\ )
 - :ref:`float<class_float>` **get_volume_db**\ (\ )
 
-Base volume before attenuation.
+Base volume before attenuation, in decibels.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AudioStreamPlayer2D_property_volume_linear:
+
+.. rst-class:: classref-property
+
+:ref:`float<class_float>` **volume_linear** :ref:`🔗<class_AudioStreamPlayer2D_property_volume_linear>`
+
+.. rst-class:: classref-property-setget
+
+- |void| **set_volume_linear**\ (\ value\: :ref:`float<class_float>`\ )
+- :ref:`float<class_float>` **get_volume_linear**\ (\ )
+
+Base volume before attenuation, as a linear value.
+
+\ **Note:** This member modifies :ref:`volume_db<class_AudioStreamPlayer2D_property_volume_db>` for convenience. The returned value is equivalent to the result of :ref:`@GlobalScope.db_to_linear<class_@GlobalScope_method_db_to_linear>` on :ref:`volume_db<class_AudioStreamPlayer2D_property_volume_db>`. Setting this member is equivalent to setting :ref:`volume_db<class_AudioStreamPlayer2D_property_volume_db>` to the result of :ref:`@GlobalScope.linear_to_db<class_@GlobalScope_method_linear_to_db>` on a value.
 
 .. rst-class:: classref-section-separator
 

+ 21 - 0
classes/class_audiostreamplayer3d.rst

@@ -88,6 +88,8 @@ Properties
    +--------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+---------------+
    | :ref:`float<class_float>`                                          | :ref:`volume_db<class_AudioStreamPlayer3D_property_volume_db>`                                                       | ``0.0``       |
    +--------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+---------------+
+   | :ref:`float<class_float>`                                          | :ref:`volume_linear<class_AudioStreamPlayer3D_property_volume_linear>`                                               |               |
+   +--------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------+---------------+
 
 .. rst-class:: classref-reftable-group
 
@@ -575,6 +577,25 @@ The factor for the attenuation effect. Higher values make the sound audible over
 
 The base sound level before attenuation, in decibels.
 
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AudioStreamPlayer3D_property_volume_linear:
+
+.. rst-class:: classref-property
+
+:ref:`float<class_float>` **volume_linear** :ref:`🔗<class_AudioStreamPlayer3D_property_volume_linear>`
+
+.. rst-class:: classref-property-setget
+
+- |void| **set_volume_linear**\ (\ value\: :ref:`float<class_float>`\ )
+- :ref:`float<class_float>` **get_volume_linear**\ (\ )
+
+The base sound level before attenuation, as a linear value.
+
+\ **Note:** This member modifies :ref:`volume_db<class_AudioStreamPlayer3D_property_volume_db>` for convenience. The returned value is equivalent to the result of :ref:`@GlobalScope.db_to_linear<class_@GlobalScope_method_db_to_linear>` on :ref:`volume_db<class_AudioStreamPlayer3D_property_volume_db>`. Setting this member is equivalent to setting :ref:`volume_db<class_AudioStreamPlayer3D_property_volume_db>` to the result of :ref:`@GlobalScope.linear_to_db<class_@GlobalScope_method_linear_to_db>` on a value.
+
 .. rst-class:: classref-section-separator
 
 ----

+ 2 - 0
classes/class_basematerial3d.rst

@@ -2738,6 +2738,8 @@ If ``true``, the proximity fade effect is enabled. The proximity fade effect fad
 
 If ``true``, the refraction effect is enabled. Distorts transparency based on light from behind the object.
 
+\ **Note:** Refraction is implemented using the screen texture. Only opaque materials will appear in the refraction, since transparent materials do not appear in the screen texture.
+
 .. rst-class:: classref-item-separator
 
 ----

+ 30 - 0
classes/class_camerafeed.rst

@@ -23,6 +23,8 @@ A camera feed gives you access to a single physical camera attached to your devi
 
 \ **Note:** Many cameras will return YCbCr images which are split into two textures and need to be combined in a shader. Godot does this automatically for you if you set the environment to show the camera image in the background.
 
+\ **Note:** This class is currently only implemented on Linux, macOS, and iOS. On other platforms no **CameraFeed**\ s will be available. To get a **CameraFeed** on iOS, the camera plugin from `godot-ios-plugins <https://github.com/godotengine/godot-ios-plugins>`__ is required.
+
 .. rst-class:: classref-reftable-group
 
 Properties
@@ -47,6 +49,10 @@ Methods
 .. table::
    :widths: auto
 
+   +---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                           | :ref:`_activate_feed<class_CameraFeed_private_method__activate_feed>`\ (\ ) |virtual|                                                        |
+   +---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                            | :ref:`_deactivate_feed<class_CameraFeed_private_method__deactivate_feed>`\ (\ ) |virtual|                                                    |
    +---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`FeedDataType<enum_CameraFeed_FeedDataType>` | :ref:`get_datatype<class_CameraFeed_method_get_datatype>`\ (\ ) |const|                                                                      |
    +---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------+
@@ -253,6 +259,30 @@ Formats supported by the feed. Each entry is a :ref:`Dictionary<class_Dictionary
 Method Descriptions
 -------------------
 
+.. _class_CameraFeed_private_method__activate_feed:
+
+.. rst-class:: classref-method
+
+:ref:`bool<class_bool>` **_activate_feed**\ (\ ) |virtual| :ref:`🔗<class_CameraFeed_private_method__activate_feed>`
+
+Called when the camera feed is activated.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_CameraFeed_private_method__deactivate_feed:
+
+.. rst-class:: classref-method
+
+|void| **_deactivate_feed**\ (\ ) |virtual| :ref:`🔗<class_CameraFeed_private_method__deactivate_feed>`
+
+Called when the camera feed is deactivated.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_CameraFeed_method_get_datatype:
 
 .. rst-class:: classref-method

+ 1 - 1
classes/class_cameraserver.rst

@@ -23,7 +23,7 @@ The **CameraServer** keeps track of different cameras accessible in Godot. These
 
 It is notably used to provide AR modules with a video feed from the camera.
 
-\ **Note:** This class is currently only implemented on Linux, macOS, and iOS, on other platforms no :ref:`CameraFeed<class_CameraFeed>`\ s will be available. To get a :ref:`CameraFeed<class_CameraFeed>` on iOS, the camera plugin from `godot-ios-plugins <https://github.com/godotengine/godot-ios-plugins>`__ is required.
+\ **Note:** This class is currently only implemented on Linux, macOS, and iOS. On other platforms no :ref:`CameraFeed<class_CameraFeed>`\ s will be available. To get a :ref:`CameraFeed<class_CameraFeed>` on iOS, the camera plugin from `godot-ios-plugins <https://github.com/godotengine/godot-ios-plugins>`__ is required.
 
 .. rst-class:: classref-reftable-group
 

+ 32 - 0
classes/class_canvasitem.rst

@@ -169,6 +169,8 @@ Methods
    +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`Transform2D<class_Transform2D>` | :ref:`get_global_transform_with_canvas<class_CanvasItem_method_get_global_transform_with_canvas>`\ (\ ) |const|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
    +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`Variant<class_Variant>`         | :ref:`get_instance_shader_parameter<class_CanvasItem_method_get_instance_shader_parameter>`\ (\ name\: :ref:`StringName<class_StringName>`\ ) |const|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
+   +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`Vector2<class_Vector2>`         | :ref:`get_local_mouse_position<class_CanvasItem_method_get_local_mouse_position>`\ (\ ) |const|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
    +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`Transform2D<class_Transform2D>` | :ref:`get_screen_transform<class_CanvasItem_method_get_screen_transform>`\ (\ ) |const|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
@@ -199,6 +201,8 @@ Methods
    +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                | :ref:`queue_redraw<class_CanvasItem_method_queue_redraw>`\ (\ )                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
    +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                | :ref:`set_instance_shader_parameter<class_CanvasItem_method_set_instance_shader_parameter>`\ (\ name\: :ref:`StringName<class_StringName>`, value\: :ref:`Variant<class_Variant>`\ )                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
+   +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                | :ref:`set_notify_local_transform<class_CanvasItem_method_set_notify_local_transform>`\ (\ enable\: :ref:`bool<class_bool>`\ )                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
    +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                | :ref:`set_notify_transform<class_CanvasItem_method_set_notify_transform>`\ (\ enable\: :ref:`bool<class_bool>`\ )                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
@@ -1346,6 +1350,18 @@ Returns the transform from the local coordinate system of this **CanvasItem** to
 
 ----
 
+.. _class_CanvasItem_method_get_instance_shader_parameter:
+
+.. rst-class:: classref-method
+
+:ref:`Variant<class_Variant>` **get_instance_shader_parameter**\ (\ name\: :ref:`StringName<class_StringName>`\ ) |const| :ref:`🔗<class_CanvasItem_method_get_instance_shader_parameter>`
+
+Get the value of a shader parameter as set on this instance.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_CanvasItem_method_get_local_mouse_position:
 
 .. rst-class:: classref-method
@@ -1540,6 +1556,22 @@ Queues the **CanvasItem** to redraw. During idle time, if **CanvasItem** is visi
 
 ----
 
+.. _class_CanvasItem_method_set_instance_shader_parameter:
+
+.. rst-class:: classref-method
+
+|void| **set_instance_shader_parameter**\ (\ name\: :ref:`StringName<class_StringName>`, value\: :ref:`Variant<class_Variant>`\ ) :ref:`🔗<class_CanvasItem_method_set_instance_shader_parameter>`
+
+Set the value of a shader uniform for this instance only (`per-instance uniform <../tutorials/shaders/shader_reference/shading_language.html#per-instance-uniforms>`__). See also :ref:`ShaderMaterial.set_shader_parameter<class_ShaderMaterial_method_set_shader_parameter>` to assign a uniform on all instances using the same :ref:`ShaderMaterial<class_ShaderMaterial>`.
+
+\ **Note:** For a shader uniform to be assignable on a per-instance basis, it *must* be defined with ``instance uniform ...`` rather than ``uniform ...`` in the shader code.
+
+\ **Note:** ``name`` is case-sensitive and must match the name of the uniform in the code exactly (not the capitalized name in the inspector).
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_CanvasItem_method_set_notify_local_transform:
 
 .. rst-class:: classref-method

+ 35 - 0
classes/class_codeedit.rst

@@ -74,6 +74,8 @@ Properties
    +----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
    | :ref:`bool<class_bool>`                                  | :ref:`symbol_lookup_on_click<class_CodeEdit_property_symbol_lookup_on_click>`                                     | ``false``                                                                 |
    +----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                                  | :ref:`symbol_tooltip_on_hover<class_CodeEdit_property_symbol_tooltip_on_hover>`                                   | ``false``                                                                 |
+   +----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
    | :ref:`TextDirection<enum_Control_TextDirection>`         | text_direction                                                                                                    | ``1`` (overrides :ref:`TextEdit<class_TextEdit_property_text_direction>`) |
    +----------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
 
@@ -326,6 +328,20 @@ Emitted when the user requests code completion. This signal will not be sent if
 
 ----
 
+.. _class_CodeEdit_signal_symbol_hovered:
+
+.. rst-class:: classref-signal
+
+**symbol_hovered**\ (\ symbol\: :ref:`String<class_String>`, line\: :ref:`int<class_int>`, column\: :ref:`int<class_int>`\ ) :ref:`🔗<class_CodeEdit_signal_symbol_hovered>`
+
+Emitted when the user hovers over a symbol. Unlike :ref:`Control.mouse_entered<class_Control_signal_mouse_entered>`, this signal is not emitted immediately, but when the cursor is over the symbol for :ref:`ProjectSettings.gui/timers/tooltip_delay_sec<class_ProjectSettings_property_gui/timers/tooltip_delay_sec>` seconds.
+
+\ **Note:** :ref:`symbol_tooltip_on_hover<class_CodeEdit_property_symbol_tooltip_on_hover>` must be ``true`` for this signal to be emitted.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_CodeEdit_signal_symbol_lookup:
 
 .. rst-class:: classref-signal
@@ -346,6 +362,8 @@ Emitted when the user has clicked on a valid symbol.
 
 Emitted when the user hovers over a symbol. The symbol should be validated and responded to, by calling :ref:`set_symbol_lookup_word_as_valid<class_CodeEdit_method_set_symbol_lookup_word_as_valid>`.
 
+\ **Note:** :ref:`symbol_lookup_on_click<class_CodeEdit_property_symbol_lookup_on_click>` must be ``true`` for this signal to be emitted.
+
 .. rst-class:: classref-section-separator
 
 ----
@@ -828,6 +846,23 @@ Draws vertical lines at the provided columns. The first entry is considered a ma
 
 Set when a validated word from :ref:`symbol_validate<class_CodeEdit_signal_symbol_validate>` is clicked, the :ref:`symbol_lookup<class_CodeEdit_signal_symbol_lookup>` should be emitted.
 
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_CodeEdit_property_symbol_tooltip_on_hover:
+
+.. rst-class:: classref-property
+
+:ref:`bool<class_bool>` **symbol_tooltip_on_hover** = ``false`` :ref:`🔗<class_CodeEdit_property_symbol_tooltip_on_hover>`
+
+.. rst-class:: classref-property-setget
+
+- |void| **set_symbol_tooltip_on_hover_enabled**\ (\ value\: :ref:`bool<class_bool>`\ )
+- :ref:`bool<class_bool>` **is_symbol_tooltip_on_hover_enabled**\ (\ )
+
+Set when a word is hovered, the :ref:`symbol_hovered<class_CodeEdit_signal_symbol_hovered>` should be emitted.
+
 .. rst-class:: classref-section-separator
 
 ----

+ 4 - 4
classes/class_collisionshape2d.rst

@@ -43,7 +43,7 @@ Properties
    :widths: auto
 
    +-------------------------------+-------------------------------------------------------------------------------------------+-----------------------+
-   | :ref:`Color<class_Color>`     | :ref:`debug_color<class_CollisionShape2D_property_debug_color>`                           | ``Color(0, 0, 0, 1)`` |
+   | :ref:`Color<class_Color>`     | :ref:`debug_color<class_CollisionShape2D_property_debug_color>`                           | ``Color(0, 0, 0, 0)`` |
    +-------------------------------+-------------------------------------------------------------------------------------------+-----------------------+
    | :ref:`bool<class_bool>`       | :ref:`disabled<class_CollisionShape2D_property_disabled>`                                 | ``false``             |
    +-------------------------------+-------------------------------------------------------------------------------------------+-----------------------+
@@ -67,16 +67,16 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`Color<class_Color>` **debug_color** = ``Color(0, 0, 0, 1)`` :ref:`🔗<class_CollisionShape2D_property_debug_color>`
+:ref:`Color<class_Color>` **debug_color** = ``Color(0, 0, 0, 0)`` :ref:`🔗<class_CollisionShape2D_property_debug_color>`
 
 .. rst-class:: classref-property-setget
 
 - |void| **set_debug_color**\ (\ value\: :ref:`Color<class_Color>`\ )
 - :ref:`Color<class_Color>` **get_debug_color**\ (\ )
 
-The collision shape debug color.
+The collision shape color that is displayed in the editor, or in the running project if **Debug > Visible Collision Shapes** is checked at the top of the editor.
 
-\ **Note:** The default value is :ref:`ProjectSettings.debug/shapes/collision/shape_color<class_ProjectSettings_property_debug/shapes/collision/shape_color>`. The ``Color(0, 0, 0, 1)`` value documented here is a placeholder, and not the actual default debug color.
+\ **Note:** The default value is :ref:`ProjectSettings.debug/shapes/collision/shape_color<class_ProjectSettings_property_debug/shapes/collision/shape_color>`. The ``Color(0, 0, 0, 0)`` value documented here is a placeholder, and not the actual default debug color.
 
 .. rst-class:: classref-item-separator
 

+ 3 - 1
classes/class_collisionshape3d.rst

@@ -88,7 +88,9 @@ Property Descriptions
 - |void| **set_debug_color**\ (\ value\: :ref:`Color<class_Color>`\ )
 - :ref:`Color<class_Color>` **get_debug_color**\ (\ )
 
-The collision shape color that is displayed in the editor, or in the running project if **Debug > Visible Collision Shapes** is checked at the top of the editor. If this is reset to its default value of ``Color(0, 0, 0, 0)``, the value of :ref:`ProjectSettings.debug/shapes/collision/shape_color<class_ProjectSettings_property_debug/shapes/collision/shape_color>` will be used instead.
+The collision shape color that is displayed in the editor, or in the running project if **Debug > Visible Collision Shapes** is checked at the top of the editor.
+
+\ **Note:** The default value is :ref:`ProjectSettings.debug/shapes/collision/shape_color<class_ProjectSettings_property_debug/shapes/collision/shape_color>`. The ``Color(0, 0, 0, 0)`` value documented here is a placeholder, and not the actual default debug color.
 
 .. rst-class:: classref-item-separator
 

+ 4 - 4
classes/class_compositoreffect.rst

@@ -155,7 +155,7 @@ If ``true`` and MSAA is enabled, this will trigger a color buffer resolve before
 
 ::
 
-    var render_scene_buffers : RenderSceneBuffersRD = render_data.get_render_scene_buffers()
+    var render_scene_buffers = render_data.get_render_scene_buffers()
     var color_buffer = render_scene_buffers.get_texture("render_buffers", "color")
 
 .. rst-class:: classref-item-separator
@@ -179,7 +179,7 @@ If ``true`` and MSAA is enabled, this will trigger a depth buffer resolve before
 
 ::
 
-    var render_scene_buffers : RenderSceneBuffersRD = render_data.get_render_scene_buffers()
+    var render_scene_buffers = render_data.get_render_scene_buffers()
     var depth_buffer = render_scene_buffers.get_texture("render_buffers", "depth")
 
 .. rst-class:: classref-item-separator
@@ -237,7 +237,7 @@ If ``true`` this triggers motion vectors being calculated during the opaque rend
 
 ::
 
-    var render_scene_buffers : RenderSceneBuffersRD = render_data.get_render_scene_buffers()
+    var render_scene_buffers = render_data.get_render_scene_buffers()
     var motion_buffer = render_scene_buffers.get_velocity_texture()
 
 .. rst-class:: classref-item-separator
@@ -261,7 +261,7 @@ If ``true`` this triggers normal and roughness data to be output during our dept
 
 ::
 
-    var render_scene_buffers : RenderSceneBuffersRD = render_data.get_render_scene_buffers()
+    var render_scene_buffers = render_data.get_render_scene_buffers()
     var roughness_buffer = render_scene_buffers.get_texture("forward_clustered", "normal_roughness")
 
 The raw normal and roughness buffer is stored in an optimized format, different than the one available in Spatial shaders. When sampling the buffer, a conversion function must be applied. Use this function, copied from `here <https://github.com/godotengine/godot/blob/da5f39889f155658cef7f7ec3cc1abb94e17d815/servers/rendering/renderer_rd/shaders/forward_clustered/scene_forward_clustered_inc.glsl#L334-L341>`__:

+ 3 - 1
classes/class_csgmesh3d.rst

@@ -19,7 +19,7 @@ A CSG Mesh shape that uses a mesh resource.
 Description
 -----------
 
-This CSG node allows you to use any mesh resource as a CSG shape, provided it is closed, does not self-intersect, does not contain internal faces and has no edges that connect to more than two faces. See also :ref:`CSGPolygon3D<class_CSGPolygon3D>` for drawing 2D extruded polygons to be used as CSG nodes.
+This CSG node allows you to use any mesh resource as a CSG shape, provided it is *manifold*. A manifold shape is closed, does not self-intersect, does not contain internal faces and has no edges that connect to more than two faces. See also :ref:`CSGPolygon3D<class_CSGPolygon3D>` for drawing 2D extruded polygons to be used as CSG nodes.
 
 \ **Note:** CSG nodes are intended to be used for level prototyping. Creating CSG nodes has a significant CPU cost compared to creating a :ref:`MeshInstance3D<class_MeshInstance3D>` with a :ref:`PrimitiveMesh<class_PrimitiveMesh>`. Moving a CSG node within another CSG node also has a significant CPU cost, so it should be avoided during gameplay.
 
@@ -83,6 +83,8 @@ The :ref:`Material<class_Material>` used in drawing the CSG shape.
 
 The :ref:`Mesh<class_Mesh>` resource to use as a CSG shape.
 
+\ **Note:** Some :ref:`Mesh<class_Mesh>` types such as :ref:`PlaneMesh<class_PlaneMesh>`, :ref:`PointMesh<class_PointMesh>`, :ref:`QuadMesh<class_QuadMesh>`, and :ref:`RibbonTrailMesh<class_RibbonTrailMesh>` are excluded from the type hint for this property, as these primitives are non-*manifold* and thus not compatible with the CSG algorithm.
+
 \ **Note:** When using an :ref:`ArrayMesh<class_ArrayMesh>`, all vertex attributes except :ref:`Mesh.ARRAY_VERTEX<class_Mesh_constant_ARRAY_VERTEX>`, :ref:`Mesh.ARRAY_NORMAL<class_Mesh_constant_ARRAY_NORMAL>` and :ref:`Mesh.ARRAY_TEX_UV<class_Mesh_constant_ARRAY_TEX_UV>` are left unused. Only :ref:`Mesh.ARRAY_VERTEX<class_Mesh_constant_ARRAY_VERTEX>` and :ref:`Mesh.ARRAY_TEX_UV<class_Mesh_constant_ARRAY_TEX_UV>` will be passed to the GPU.
 
 \ :ref:`Mesh.ARRAY_NORMAL<class_Mesh_constant_ARRAY_NORMAL>` is only used to determine which faces require the use of flat shading. By default, CSGMesh will ignore the mesh's vertex normals, recalculate them for each vertex and use a smooth shader. If a flat shader is required for a face, ensure that all vertex normals of the face are approximately equal.

+ 10 - 2
classes/class_displayserver.rst

@@ -650,6 +650,14 @@ The display server supports initiating window drag operation on demand. See :ref
 
 Display server supports :ref:`WINDOW_FLAG_EXCLUDE_FROM_CAPTURE<class_DisplayServer_constant_WINDOW_FLAG_EXCLUDE_FROM_CAPTURE>` window flag.
 
+.. _class_DisplayServer_constant_FEATURE_WINDOW_EMBEDDING:
+
+.. rst-class:: classref-enumeration-constant
+
+:ref:`Feature<enum_DisplayServer_Feature>` **FEATURE_WINDOW_EMBEDDING** = ``29``
+
+Display server supports embedding a window from another process. **Windows, Linux (X11)**
+
 .. rst-class:: classref-item-separator
 
 ----
@@ -1890,7 +1898,7 @@ Returns OS theme accent color. Returns ``Color(0, 0, 0, 0)``, if accent color is
 
 Returns the OS theme base color (default control background). Returns ``Color(0, 0, 0, 0)`` if the base color is unknown.
 
-\ **Note:** This method is implemented on macOS and Windows.
+\ **Note:** This method is implemented on macOS, Windows, and Android.
 
 .. rst-class:: classref-item-separator
 
@@ -4597,7 +4605,7 @@ Sets the ``callback`` that will be called when an event occurs in the window spe
 
 Starts a drag operation on the window with the given ``window_id``, using the current mouse position. Call this method when handling a mouse button being pressed to simulate a pressed event on the window's title bar. Using this method allows the window to participate in space switching, tiling, and other system features.
 
-\ **Note:** This method is implemented only on macOS.
+\ **Note:** This method is implemented on Linux(X11/Wayland), macOS, and Windows.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`

+ 2 - 2
classes/class_dtlsserver.rst

@@ -43,8 +43,8 @@ Below a small example of how to use it:
     
     func _process(delta):
         while server.is_connection_available():
-            var peer: PacketPeerUDP = server.take_connection()
-            var dtls_peer: PacketPeerDTLS = dtls.take_connection(peer)
+            var peer = server.take_connection()
+            var dtls_peer = dtls.take_connection(peer)
             if dtls_peer.get_status() != PacketPeerDTLS.STATUS_HANDSHAKING:
                 continue # It is normal that 50% of the connections fails due to cookie exchange.
             print("Peer connected!")

+ 16 - 0
classes/class_editorexportplatformandroid.rst

@@ -430,6 +430,8 @@ Properties
    +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`String<class_String>`                       | :ref:`version/name<class_EditorExportPlatformAndroid_property_version/name>`                                                                     |
    +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                           | :ref:`wear_os/swipe_to_dismiss<class_EditorExportPlatformAndroid_property_wear_os/swipe_to_dismiss>`                                             |
+   +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`int<class_int>`                             | :ref:`xr_features/xr_mode<class_EditorExportPlatformAndroid_property_xr_features/xr_mode>`                                                       |
    +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
 
@@ -2860,6 +2862,20 @@ Application version visible to the user. Falls back to :ref:`ProjectSettings.app
 
 ----
 
+.. _class_EditorExportPlatformAndroid_property_wear_os/swipe_to_dismiss:
+
+.. rst-class:: classref-property
+
+:ref:`bool<class_bool>` **wear_os/swipe_to_dismiss** :ref:`🔗<class_EditorExportPlatformAndroid_property_wear_os/swipe_to_dismiss>`
+
+If ``true``, `Swipe to dismiss <https://developer.android.com/design/ui/wear/guides/components/swipe-to-dismiss>`__ will be enabled on Wear OS.
+
+\ **Note:** This is ``true`` by default. To disable this behavior, :ref:`gradle_build/use_gradle_build<class_EditorExportPlatformAndroid_property_gradle_build/use_gradle_build>` is required.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_EditorExportPlatformAndroid_property_xr_features/xr_mode:
 
 .. rst-class:: classref-property

+ 16 - 0
classes/class_editorinspector.rst

@@ -57,6 +57,8 @@ Methods
 .. table::
    :widths: auto
 
+   +---------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                      | :ref:`edit<class_EditorInspector_method_edit>`\ (\ object\: :ref:`Object<class_Object>`\ )                                                                                                                                                                                                                                                                                                                                    |
    +---------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`Object<class_Object>`                 | :ref:`get_edited_object<class_EditorInspector_method_get_edited_object>`\ (\ )                                                                                                                                                                                                                                                                                                                                                |
    +---------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -189,6 +191,20 @@ Emitted when a property that requires a restart to be applied is edited in the i
 Method Descriptions
 -------------------
 
+.. _class_EditorInspector_method_edit:
+
+.. rst-class:: classref-method
+
+|void| **edit**\ (\ object\: :ref:`Object<class_Object>`\ ) :ref:`🔗<class_EditorInspector_method_edit>`
+
+Shows the properties of the given ``object`` in this inspector for editing. To clear the inspector, call this method with ``null``.
+
+\ **Note:** If you want to edit an object in the editor's main inspector, use the ``edit_*`` methods in :ref:`EditorInterface<class_EditorInterface>` instead.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_EditorInspector_method_get_edited_object:
 
 .. rst-class:: classref-method

+ 3 - 3
classes/class_editorinterface.rst

@@ -126,7 +126,7 @@ Methods
    +----------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                                         | :ref:`mark_scene_as_unsaved<class_EditorInterface_method_mark_scene_as_unsaved>`\ (\ )                                                                                                                                                                                                                                                                                                                                                   |
    +----------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                         | :ref:`open_scene_from_path<class_EditorInterface_method_open_scene_from_path>`\ (\ scene_filepath\: :ref:`String<class_String>`\ )                                                                                                                                                                                                                                                                                                       |
+   | |void|                                                         | :ref:`open_scene_from_path<class_EditorInterface_method_open_scene_from_path>`\ (\ scene_filepath\: :ref:`String<class_String>`, set_inherited\: :ref:`bool<class_bool>` = false\ )                                                                                                                                                                                                                                                      |
    +----------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                                         | :ref:`play_current_scene<class_EditorInterface_method_play_current_scene>`\ (\ )                                                                                                                                                                                                                                                                                                                                                         |
    +----------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -649,9 +649,9 @@ Marks the current scene tab as unsaved.
 
 .. rst-class:: classref-method
 
-|void| **open_scene_from_path**\ (\ scene_filepath\: :ref:`String<class_String>`\ ) :ref:`🔗<class_EditorInterface_method_open_scene_from_path>`
+|void| **open_scene_from_path**\ (\ scene_filepath\: :ref:`String<class_String>`, set_inherited\: :ref:`bool<class_bool>` = false\ ) :ref:`🔗<class_EditorInterface_method_open_scene_from_path>`
 
-Opens the scene at the given path.
+Opens the scene at the given path. If ``set_inherited`` is ``true``, creates a new inherited scene.
 
 .. rst-class:: classref-item-separator
 

+ 2 - 0
classes/class_editorplugin.rst

@@ -12,6 +12,8 @@ EditorPlugin
 
 **Inherits:** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
 
+**Inherited By:** :ref:`GridMapEditorPlugin<class_GridMapEditorPlugin>`
+
 Used by the editor to extend its functionality.
 
 .. rst-class:: classref-introduction-group

+ 14 - 0
classes/class_editorsettings.rst

@@ -729,6 +729,8 @@ Properties
    +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`float<class_float>`                         | :ref:`text_editor/completion/idle_parse_delay<class_EditorSettings_property_text_editor/completion/idle_parse_delay>`                                                                                             |
    +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`float<class_float>`                         | :ref:`text_editor/completion/idle_parse_delay_with_errors_found<class_EditorSettings_property_text_editor/completion/idle_parse_delay_with_errors_found>`                                                         |
+   +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`bool<class_bool>`                           | :ref:`text_editor/completion/put_callhint_tooltip_below_current_line<class_EditorSettings_property_text_editor/completion/put_callhint_tooltip_below_current_line>`                                               |
    +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`bool<class_bool>`                           | :ref:`text_editor/completion/use_single_quotes<class_EditorSettings_property_text_editor/completion/use_single_quotes>`                                                                                           |
@@ -5203,6 +5205,18 @@ The delay in seconds after which the script editor should check for errors when
 
 ----
 
+.. _class_EditorSettings_property_text_editor/completion/idle_parse_delay_with_errors_found:
+
+.. rst-class:: classref-property
+
+:ref:`float<class_float>` **text_editor/completion/idle_parse_delay_with_errors_found** :ref:`🔗<class_EditorSettings_property_text_editor/completion/idle_parse_delay_with_errors_found>`
+
+The delay used instead of :ref:`text_editor/completion/idle_parse_delay<class_EditorSettings_property_text_editor/completion/idle_parse_delay>`, when the parser has found errors. A lower value should feel more responsive while fixing code, but may cause notable stuttering and increase CPU usage.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_EditorSettings_property_text_editor/completion/put_callhint_tooltip_below_current_line:
 
 .. rst-class:: classref-property

+ 14 - 0
classes/class_engine.rst

@@ -94,6 +94,8 @@ Methods
    +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`bool<class_bool>`                                          | :ref:`is_editor_hint<class_Engine_method_is_editor_hint>`\ (\ ) |const|                                                                                     |
    +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                                          | :ref:`is_embedded_in_editor<class_Engine_method_is_embedded_in_editor>`\ (\ ) |const|                                                                       |
+   +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`bool<class_bool>`                                          | :ref:`is_in_physics_frame<class_Engine_method_is_in_physics_frame>`\ (\ ) |const|                                                                           |
    +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`Error<enum_@GlobalScope_Error>`                            | :ref:`register_script_language<class_Engine_method_register_script_language>`\ (\ language\: :ref:`ScriptLanguage<class_ScriptLanguage>`\ )                 |
@@ -671,6 +673,18 @@ See :doc:`Running code in the editor <../tutorials/plugins/running_code_in_the_e
 
 ----
 
+.. _class_Engine_method_is_embedded_in_editor:
+
+.. rst-class:: classref-method
+
+:ref:`bool<class_bool>` **is_embedded_in_editor**\ (\ ) |const| :ref:`🔗<class_Engine_method_is_embedded_in_editor>`
+
+Returns ``true`` if the engine is running embedded in the editor. This is useful to prevent attempting to update window mode or window flags that are not supported when running the project embedded in the editor.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_Engine_method_is_in_physics_frame:
 
 .. rst-class:: classref-method

+ 1 - 1
classes/class_geometryinstance3d.rst

@@ -605,7 +605,7 @@ Set the value of a shader uniform for this instance only (`per-instance uniform
 
 \ **Note:** ``name`` is case-sensitive and must match the name of the uniform in the code exactly (not the capitalized name in the inspector).
 
-\ **Note:** Per-instance shader uniforms are currently only available in 3D, so there is no 2D equivalent of this method.
+\ **Note:** Per-instance shader uniforms are only available in Spatial and CanvasItem shaders, but not for Fog, Sky, or Particles shaders.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`

+ 2 - 0
classes/class_gpuparticles2d.rst

@@ -477,6 +477,8 @@ If ``true``, only one emission cycle occurs. If set ``true`` during a cycle, emi
 
 Particle system starts as if it had already run for this many seconds.
 
+\ **Note:** This can be very expensive if set to a high number as it requires running the particle shader a number of times equal to the :ref:`fixed_fps<class_GPUParticles2D_property_fixed_fps>` (or 30, if :ref:`fixed_fps<class_GPUParticles2D_property_fixed_fps>` is 0) for every second. In extreme cases it can even lead to a GPU crash due to the volume of work done in a single frame.
+
 .. rst-class:: classref-item-separator
 
 ----

+ 2 - 0
classes/class_gpuparticles3d.rst

@@ -676,6 +676,8 @@ If ``true``, only the number of particles equal to :ref:`amount<class_GPUParticl
 
 Amount of time to preprocess the particles before animation starts. Lets you start the animation some time after particles have started emitting.
 
+\ **Note:** This can be very expensive if set to a high number as it requires running the particle shader a number of times equal to the :ref:`fixed_fps<class_GPUParticles3D_property_fixed_fps>` (or 30, if :ref:`fixed_fps<class_GPUParticles3D_property_fixed_fps>` is 0) for every second. In extreme cases it can even lead to a GPU crash due to the volume of work done in a single frame.
+
 .. rst-class:: classref-item-separator
 
 ----

+ 129 - 72
classes/class_graphedit.rst

@@ -37,57 +37,59 @@ Properties
 .. table::
    :widths: auto
 
-   +----------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-   | :ref:`bool<class_bool>`                            | clip_contents                                                                              | ``true`` (overrides :ref:`Control<class_Control_property_clip_contents>`) |
-   +----------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-   | :ref:`bool<class_bool>`                            | :ref:`connection_lines_antialiased<class_GraphEdit_property_connection_lines_antialiased>` | ``true``                                                                  |
-   +----------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-   | :ref:`float<class_float>`                          | :ref:`connection_lines_curvature<class_GraphEdit_property_connection_lines_curvature>`     | ``0.5``                                                                   |
-   +----------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-   | :ref:`float<class_float>`                          | :ref:`connection_lines_thickness<class_GraphEdit_property_connection_lines_thickness>`     | ``4.0``                                                                   |
-   +----------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-   | :ref:`FocusMode<enum_Control_FocusMode>`           | focus_mode                                                                                 | ``2`` (overrides :ref:`Control<class_Control_property_focus_mode>`)       |
-   +----------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-   | :ref:`GridPattern<enum_GraphEdit_GridPattern>`     | :ref:`grid_pattern<class_GraphEdit_property_grid_pattern>`                                 | ``0``                                                                     |
-   +----------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-   | :ref:`bool<class_bool>`                            | :ref:`minimap_enabled<class_GraphEdit_property_minimap_enabled>`                           | ``true``                                                                  |
-   +----------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-   | :ref:`float<class_float>`                          | :ref:`minimap_opacity<class_GraphEdit_property_minimap_opacity>`                           | ``0.65``                                                                  |
-   +----------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-   | :ref:`Vector2<class_Vector2>`                      | :ref:`minimap_size<class_GraphEdit_property_minimap_size>`                                 | ``Vector2(240, 160)``                                                     |
-   +----------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-   | :ref:`PanningScheme<enum_GraphEdit_PanningScheme>` | :ref:`panning_scheme<class_GraphEdit_property_panning_scheme>`                             | ``0``                                                                     |
-   +----------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-   | :ref:`bool<class_bool>`                            | :ref:`right_disconnects<class_GraphEdit_property_right_disconnects>`                       | ``false``                                                                 |
-   +----------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-   | :ref:`Vector2<class_Vector2>`                      | :ref:`scroll_offset<class_GraphEdit_property_scroll_offset>`                               | ``Vector2(0, 0)``                                                         |
-   +----------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-   | :ref:`bool<class_bool>`                            | :ref:`show_arrange_button<class_GraphEdit_property_show_arrange_button>`                   | ``true``                                                                  |
-   +----------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-   | :ref:`bool<class_bool>`                            | :ref:`show_grid<class_GraphEdit_property_show_grid>`                                       | ``true``                                                                  |
-   +----------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-   | :ref:`bool<class_bool>`                            | :ref:`show_grid_buttons<class_GraphEdit_property_show_grid_buttons>`                       | ``true``                                                                  |
-   +----------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-   | :ref:`bool<class_bool>`                            | :ref:`show_menu<class_GraphEdit_property_show_menu>`                                       | ``true``                                                                  |
-   +----------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-   | :ref:`bool<class_bool>`                            | :ref:`show_minimap_button<class_GraphEdit_property_show_minimap_button>`                   | ``true``                                                                  |
-   +----------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-   | :ref:`bool<class_bool>`                            | :ref:`show_zoom_buttons<class_GraphEdit_property_show_zoom_buttons>`                       | ``true``                                                                  |
-   +----------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-   | :ref:`bool<class_bool>`                            | :ref:`show_zoom_label<class_GraphEdit_property_show_zoom_label>`                           | ``false``                                                                 |
-   +----------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-   | :ref:`int<class_int>`                              | :ref:`snapping_distance<class_GraphEdit_property_snapping_distance>`                       | ``20``                                                                    |
-   +----------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-   | :ref:`bool<class_bool>`                            | :ref:`snapping_enabled<class_GraphEdit_property_snapping_enabled>`                         | ``true``                                                                  |
-   +----------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-   | :ref:`float<class_float>`                          | :ref:`zoom<class_GraphEdit_property_zoom>`                                                 | ``1.0``                                                                   |
-   +----------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-   | :ref:`float<class_float>`                          | :ref:`zoom_max<class_GraphEdit_property_zoom_max>`                                         | ``2.0736``                                                                |
-   +----------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-   | :ref:`float<class_float>`                          | :ref:`zoom_min<class_GraphEdit_property_zoom_min>`                                         | ``0.232568``                                                              |
-   +----------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
-   | :ref:`float<class_float>`                          | :ref:`zoom_step<class_GraphEdit_property_zoom_step>`                                       | ``1.2``                                                                   |
-   +----------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+   +------------------------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                                          | clip_contents                                                                              | ``true`` (overrides :ref:`Control<class_Control_property_clip_contents>`) |
+   +------------------------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                                          | :ref:`connection_lines_antialiased<class_GraphEdit_property_connection_lines_antialiased>` | ``true``                                                                  |
+   +------------------------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+   | :ref:`float<class_float>`                                        | :ref:`connection_lines_curvature<class_GraphEdit_property_connection_lines_curvature>`     | ``0.5``                                                                   |
+   +------------------------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+   | :ref:`float<class_float>`                                        | :ref:`connection_lines_thickness<class_GraphEdit_property_connection_lines_thickness>`     | ``4.0``                                                                   |
+   +------------------------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+   | :ref:`Array<class_Array>`\[:ref:`Dictionary<class_Dictionary>`\] | :ref:`connections<class_GraphEdit_property_connections>`                                   | ``[]``                                                                    |
+   +------------------------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+   | :ref:`FocusMode<enum_Control_FocusMode>`                         | focus_mode                                                                                 | ``2`` (overrides :ref:`Control<class_Control_property_focus_mode>`)       |
+   +------------------------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+   | :ref:`GridPattern<enum_GraphEdit_GridPattern>`                   | :ref:`grid_pattern<class_GraphEdit_property_grid_pattern>`                                 | ``0``                                                                     |
+   +------------------------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                                          | :ref:`minimap_enabled<class_GraphEdit_property_minimap_enabled>`                           | ``true``                                                                  |
+   +------------------------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+   | :ref:`float<class_float>`                                        | :ref:`minimap_opacity<class_GraphEdit_property_minimap_opacity>`                           | ``0.65``                                                                  |
+   +------------------------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+   | :ref:`Vector2<class_Vector2>`                                    | :ref:`minimap_size<class_GraphEdit_property_minimap_size>`                                 | ``Vector2(240, 160)``                                                     |
+   +------------------------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+   | :ref:`PanningScheme<enum_GraphEdit_PanningScheme>`               | :ref:`panning_scheme<class_GraphEdit_property_panning_scheme>`                             | ``0``                                                                     |
+   +------------------------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                                          | :ref:`right_disconnects<class_GraphEdit_property_right_disconnects>`                       | ``false``                                                                 |
+   +------------------------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+   | :ref:`Vector2<class_Vector2>`                                    | :ref:`scroll_offset<class_GraphEdit_property_scroll_offset>`                               | ``Vector2(0, 0)``                                                         |
+   +------------------------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                                          | :ref:`show_arrange_button<class_GraphEdit_property_show_arrange_button>`                   | ``true``                                                                  |
+   +------------------------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                                          | :ref:`show_grid<class_GraphEdit_property_show_grid>`                                       | ``true``                                                                  |
+   +------------------------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                                          | :ref:`show_grid_buttons<class_GraphEdit_property_show_grid_buttons>`                       | ``true``                                                                  |
+   +------------------------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                                          | :ref:`show_menu<class_GraphEdit_property_show_menu>`                                       | ``true``                                                                  |
+   +------------------------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                                          | :ref:`show_minimap_button<class_GraphEdit_property_show_minimap_button>`                   | ``true``                                                                  |
+   +------------------------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                                          | :ref:`show_zoom_buttons<class_GraphEdit_property_show_zoom_buttons>`                       | ``true``                                                                  |
+   +------------------------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                                          | :ref:`show_zoom_label<class_GraphEdit_property_show_zoom_label>`                           | ``false``                                                                 |
+   +------------------------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+   | :ref:`int<class_int>`                                            | :ref:`snapping_distance<class_GraphEdit_property_snapping_distance>`                       | ``20``                                                                    |
+   +------------------------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                                          | :ref:`snapping_enabled<class_GraphEdit_property_snapping_enabled>`                         | ``true``                                                                  |
+   +------------------------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+   | :ref:`float<class_float>`                                        | :ref:`zoom<class_GraphEdit_property_zoom>`                                                 | ``1.0``                                                                   |
+   +------------------------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+   | :ref:`float<class_float>`                                        | :ref:`zoom_max<class_GraphEdit_property_zoom_max>`                                         | ``2.0736``                                                                |
+   +------------------------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+   | :ref:`float<class_float>`                                        | :ref:`zoom_min<class_GraphEdit_property_zoom_min>`                                         | ``0.232568``                                                              |
+   +------------------------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
+   | :ref:`float<class_float>`                                        | :ref:`zoom_step<class_GraphEdit_property_zoom_step>`                                       | ``1.2``                                                                   |
+   +------------------------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+
 
 .. rst-class:: classref-reftable-group
 
@@ -118,7 +120,7 @@ Methods
    +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                                           | :ref:`clear_connections<class_GraphEdit_method_clear_connections>`\ (\ )                                                                                                                                                                                                                     |
    +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`Error<enum_@GlobalScope_Error>`                            | :ref:`connect_node<class_GraphEdit_method_connect_node>`\ (\ from_node\: :ref:`StringName<class_StringName>`, from_port\: :ref:`int<class_int>`, to_node\: :ref:`StringName<class_StringName>`, to_port\: :ref:`int<class_int>`\ )                                                           |
+   | :ref:`Error<enum_@GlobalScope_Error>`                            | :ref:`connect_node<class_GraphEdit_method_connect_node>`\ (\ from_node\: :ref:`StringName<class_StringName>`, from_port\: :ref:`int<class_int>`, to_node\: :ref:`StringName<class_StringName>`, to_port\: :ref:`int<class_int>`, keep_alive\: :ref:`bool<class_bool>` = false\ )             |
    +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                                           | :ref:`detach_graph_element_from_frame<class_GraphEdit_method_detach_graph_element_from_frame>`\ (\ element\: :ref:`StringName<class_StringName>`\ )                                                                                                                                          |
    +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -134,8 +136,6 @@ Methods
    +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`PackedVector2Array<class_PackedVector2Array>`              | :ref:`get_connection_line<class_GraphEdit_method_get_connection_line>`\ (\ from_node\: :ref:`Vector2<class_Vector2>`, to_node\: :ref:`Vector2<class_Vector2>`\ ) |const|                                                                                                                     |
    +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`Array<class_Array>`\[:ref:`Dictionary<class_Dictionary>`\] | :ref:`get_connection_list<class_GraphEdit_method_get_connection_list>`\ (\ ) |const|                                                                                                                                                                                                         |
-   +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`Array<class_Array>`\[:ref:`Dictionary<class_Dictionary>`\] | :ref:`get_connections_intersecting_with_rect<class_GraphEdit_method_get_connections_intersecting_with_rect>`\ (\ rect\: :ref:`Rect2<class_Rect2>`\ ) |const|                                                                                                                                 |
    +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`GraphFrame<class_GraphFrame>`                              | :ref:`get_element_frame<class_GraphEdit_method_get_element_frame>`\ (\ element\: :ref:`StringName<class_StringName>`\ )                                                                                                                                                                      |
@@ -182,6 +182,8 @@ Theme Properties
    +-----------------------------------+-----------------------------------------------------------------------------------------------------------+-------------------------------+
    | :ref:`Color<class_Color>`         | :ref:`selection_stroke<class_GraphEdit_theme_color_selection_stroke>`                                     | ``Color(1, 1, 1, 0.8)``       |
    +-----------------------------------+-----------------------------------------------------------------------------------------------------------+-------------------------------+
+   | :ref:`int<class_int>`             | :ref:`connection_hover_thickness<class_GraphEdit_theme_constant_connection_hover_thickness>`              | ``0``                         |
+   +-----------------------------------+-----------------------------------------------------------------------------------------------------------+-------------------------------+
    | :ref:`int<class_int>`             | :ref:`port_hotzone_inner_extent<class_GraphEdit_theme_constant_port_hotzone_inner_extent>`                | ``22``                        |
    +-----------------------------------+-----------------------------------------------------------------------------------------------------------+-------------------------------+
    | :ref:`int<class_int>`             | :ref:`port_hotzone_outer_extent<class_GraphEdit_theme_constant_port_hotzone_outer_extent>`                | ``26``                        |
@@ -559,6 +561,37 @@ The thickness of the lines between the nodes.
 
 ----
 
+.. _class_GraphEdit_property_connections:
+
+.. rst-class:: classref-property
+
+:ref:`Array<class_Array>`\[:ref:`Dictionary<class_Dictionary>`\] **connections** = ``[]`` :ref:`🔗<class_GraphEdit_property_connections>`
+
+.. rst-class:: classref-property-setget
+
+- |void| **set_connections**\ (\ value\: :ref:`Array<class_Array>`\[:ref:`Dictionary<class_Dictionary>`\]\ )
+- :ref:`Array<class_Array>`\[:ref:`Dictionary<class_Dictionary>`\] **get_connection_list**\ (\ )
+
+The connections between :ref:`GraphNode<class_GraphNode>`\ s.
+
+A connection is represented as a :ref:`Dictionary<class_Dictionary>` in the form of:
+
+::
+
+    {
+        from_node: StringName,
+        from_port: int,
+        to_node: StringName,
+        to_port: int,
+        keep_alive: bool
+    }
+
+Connections with ``keep_alive`` set to ``false`` may be deleted automatically if invalid during a redraw.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_GraphEdit_property_grid_pattern:
 
 .. rst-class:: classref-property
@@ -931,8 +964,8 @@ Below is a sample code to help get started:
 ::
 
     func _is_in_input_hotzone(in_node, in_port, mouse_position):
-        var port_size: Vector2 = Vector2(get_theme_constant("port_grab_distance_horizontal"), get_theme_constant("port_grab_distance_vertical"))
-        var port_pos: Vector2 = in_node.get_position() + in_node.get_input_port_position(in_port) - port_size / 2
+        var port_size = Vector2(get_theme_constant("port_grab_distance_horizontal"), get_theme_constant("port_grab_distance_vertical"))
+        var port_pos = in_node.get_position() + in_node.get_input_port_position(in_port) - port_size / 2
         var rect = Rect2(port_pos, port_size)
     
         return rect.has_point(mouse_position)
@@ -954,8 +987,8 @@ Below is a sample code to help get started:
 ::
 
     func _is_in_output_hotzone(in_node, in_port, mouse_position):
-        var port_size: Vector2 = Vector2(get_theme_constant("port_grab_distance_horizontal"), get_theme_constant("port_grab_distance_vertical"))
-        var port_pos: Vector2 = in_node.get_position() + in_node.get_output_port_position(in_port) - port_size / 2
+        var port_size = Vector2(get_theme_constant("port_grab_distance_horizontal"), get_theme_constant("port_grab_distance_vertical"))
+        var port_pos = in_node.get_position() + in_node.get_output_port_position(in_port) - port_size / 2
         var rect = Rect2(port_pos, port_size)
     
         return rect.has_point(mouse_position)
@@ -1075,10 +1108,12 @@ Removes all connections between nodes.
 
 .. rst-class:: classref-method
 
-:ref:`Error<enum_@GlobalScope_Error>` **connect_node**\ (\ from_node\: :ref:`StringName<class_StringName>`, from_port\: :ref:`int<class_int>`, to_node\: :ref:`StringName<class_StringName>`, to_port\: :ref:`int<class_int>`\ ) :ref:`🔗<class_GraphEdit_method_connect_node>`
+:ref:`Error<enum_@GlobalScope_Error>` **connect_node**\ (\ from_node\: :ref:`StringName<class_StringName>`, from_port\: :ref:`int<class_int>`, to_node\: :ref:`StringName<class_StringName>`, to_port\: :ref:`int<class_int>`, keep_alive\: :ref:`bool<class_bool>` = false\ ) :ref:`🔗<class_GraphEdit_method_connect_node>`
 
 Create a connection between the ``from_port`` of the ``from_node`` :ref:`GraphNode<class_GraphNode>` and the ``to_port`` of the ``to_node`` :ref:`GraphNode<class_GraphNode>`. If the connection already exists, no connection is created.
 
+Connections with ``keep_alive`` set to ``false`` may be deleted automatically if invalid during a redraw.
+
 .. rst-class:: classref-item-separator
 
 ----
@@ -1143,7 +1178,17 @@ Returns an array of node names that are attached to the :ref:`GraphFrame<class_G
 
 Returns the closest connection to the given point in screen space. If no connection is found within ``max_distance`` pixels, an empty :ref:`Dictionary<class_Dictionary>` is returned.
 
-A connection consists in a structure of the form ``{ from_port: 0, from_node: "GraphNode name 0", to_port: 1, to_node: "GraphNode name 1" }``.
+A connection is represented as a :ref:`Dictionary<class_Dictionary>` in the form of:
+
+::
+
+    {
+        from_node: StringName,
+        from_port: int,
+        to_node: StringName,
+        to_port: int,
+        keep_alive: bool
+    }
 
 For example, getting a connection at a given mouse position can be achieved like this:
 
@@ -1184,25 +1229,25 @@ Returns the points which would make up a connection between ``from_node`` and ``
 
 ----
 
-.. _class_GraphEdit_method_get_connection_list:
+.. _class_GraphEdit_method_get_connections_intersecting_with_rect:
 
 .. rst-class:: classref-method
 
-:ref:`Array<class_Array>`\[:ref:`Dictionary<class_Dictionary>`\] **get_connection_list**\ (\ ) |const| :ref:`🔗<class_GraphEdit_method_get_connection_list>`
-
-Returns an :ref:`Array<class_Array>` containing the list of connections. A connection consists in a structure of the form ``{ from_port: 0, from_node: "GraphNode name 0", to_port: 1, to_node: "GraphNode name 1" }``.
-
-.. rst-class:: classref-item-separator
-
-----
+:ref:`Array<class_Array>`\[:ref:`Dictionary<class_Dictionary>`\] **get_connections_intersecting_with_rect**\ (\ rect\: :ref:`Rect2<class_Rect2>`\ ) |const| :ref:`🔗<class_GraphEdit_method_get_connections_intersecting_with_rect>`
 
-.. _class_GraphEdit_method_get_connections_intersecting_with_rect:
+Returns an :ref:`Array<class_Array>` containing the list of connections that intersect with the given :ref:`Rect2<class_Rect2>`.
 
-.. rst-class:: classref-method
+A connection is represented as a :ref:`Dictionary<class_Dictionary>` in the form of:
 
-:ref:`Array<class_Array>`\[:ref:`Dictionary<class_Dictionary>`\] **get_connections_intersecting_with_rect**\ (\ rect\: :ref:`Rect2<class_Rect2>`\ ) |const| :ref:`🔗<class_GraphEdit_method_get_connections_intersecting_with_rect>`
+::
 
-Returns an :ref:`Array<class_Array>` containing the list of connections that intersect with the given :ref:`Rect2<class_Rect2>`. A connection consists in a structure of the form ``{ from_port: 0, from_node: "GraphNode name 0", to_port: 1, to_node: "GraphNode name 1" }``.
+    {
+        from_node: StringName,
+        from_port: int,
+        to_node: StringName,
+        to_port: int,
+        keep_alive: bool
+    }
 
 .. rst-class:: classref-item-separator
 
@@ -1423,6 +1468,18 @@ The outline color of the selection rectangle.
 
 ----
 
+.. _class_GraphEdit_theme_constant_connection_hover_thickness:
+
+.. rst-class:: classref-themeproperty
+
+:ref:`int<class_int>` **connection_hover_thickness** = ``0`` :ref:`🔗<class_GraphEdit_theme_constant_connection_hover_thickness>`
+
+Widen the line of the connection when the mouse is hovering over it by a percentage factor. A value of ``0`` disables the highlight. A value of ``100`` doubles the line width.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_GraphEdit_theme_constant_port_hotzone_inner_extent:
 
 .. rst-class:: classref-themeproperty

+ 165 - 0
classes/class_gridmapeditorplugin.rst

@@ -0,0 +1,165 @@
+:github_url: hide
+
+.. meta::
+	:keywords: tilemap
+
+.. DO NOT EDIT THIS FILE!!!
+.. Generated automatically from Godot engine sources.
+.. Generator: https://github.com/godotengine/godot/tree/master/doc/tools/make_rst.py.
+.. XML source: https://github.com/godotengine/godot/tree/master/modules/gridmap/doc_classes/GridMapEditorPlugin.xml.
+
+.. _class_GridMapEditorPlugin:
+
+GridMapEditorPlugin
+===================
+
+**Inherits:** :ref:`EditorPlugin<class_EditorPlugin>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
+
+Editor for :ref:`GridMap<class_GridMap>` nodes.
+
+.. rst-class:: classref-introduction-group
+
+Description
+-----------
+
+GridMapEditorPlugin provides access to the :ref:`GridMap<class_GridMap>` editor functionality.
+
+.. rst-class:: classref-reftable-group
+
+Methods
+-------
+
+.. table::
+   :widths: auto
+
+   +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                        | :ref:`clear_selection<class_GridMapEditorPlugin_method_clear_selection>`\ (\ )                                                                             |
+   +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`GridMap<class_GridMap>` | :ref:`get_current_grid_map<class_GridMapEditorPlugin_method_get_current_grid_map>`\ (\ ) |const|                                                           |
+   +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`Array<class_Array>`     | :ref:`get_selected_cells<class_GridMapEditorPlugin_method_get_selected_cells>`\ (\ ) |const|                                                               |
+   +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`int<class_int>`         | :ref:`get_selected_palette_item<class_GridMapEditorPlugin_method_get_selected_palette_item>`\ (\ ) |const|                                                 |
+   +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`AABB<class_AABB>`       | :ref:`get_selection<class_GridMapEditorPlugin_method_get_selection>`\ (\ ) |const|                                                                         |
+   +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`       | :ref:`has_selection<class_GridMapEditorPlugin_method_has_selection>`\ (\ ) |const|                                                                         |
+   +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                        | :ref:`set_selected_palette_item<class_GridMapEditorPlugin_method_set_selected_palette_item>`\ (\ item\: :ref:`int<class_int>`\ ) |const|                   |
+   +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                        | :ref:`set_selection<class_GridMapEditorPlugin_method_set_selection>`\ (\ begin\: :ref:`Vector3i<class_Vector3i>`, end\: :ref:`Vector3i<class_Vector3i>`\ ) |
+   +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+.. rst-class:: classref-section-separator
+
+----
+
+.. rst-class:: classref-descriptions-group
+
+Method Descriptions
+-------------------
+
+.. _class_GridMapEditorPlugin_method_clear_selection:
+
+.. rst-class:: classref-method
+
+|void| **clear_selection**\ (\ ) :ref:`🔗<class_GridMapEditorPlugin_method_clear_selection>`
+
+Deselects any currently selected cells.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_GridMapEditorPlugin_method_get_current_grid_map:
+
+.. rst-class:: classref-method
+
+:ref:`GridMap<class_GridMap>` **get_current_grid_map**\ (\ ) |const| :ref:`🔗<class_GridMapEditorPlugin_method_get_current_grid_map>`
+
+Returns the :ref:`GridMap<class_GridMap>` node currently edited by the grid map editor.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_GridMapEditorPlugin_method_get_selected_cells:
+
+.. rst-class:: classref-method
+
+:ref:`Array<class_Array>` **get_selected_cells**\ (\ ) |const| :ref:`🔗<class_GridMapEditorPlugin_method_get_selected_cells>`
+
+Returns an array of :ref:`Vector3i<class_Vector3i>`\ s with the selected cells' coordinates.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_GridMapEditorPlugin_method_get_selected_palette_item:
+
+.. rst-class:: classref-method
+
+:ref:`int<class_int>` **get_selected_palette_item**\ (\ ) |const| :ref:`🔗<class_GridMapEditorPlugin_method_get_selected_palette_item>`
+
+Returns the index of the selected :ref:`MeshLibrary<class_MeshLibrary>` item in the grid map editor's palette or ``-1`` if no item is selected.
+
+\ **Note:** The indices might not be in the same order as they appear in the editor's interface.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_GridMapEditorPlugin_method_get_selection:
+
+.. rst-class:: classref-method
+
+:ref:`AABB<class_AABB>` **get_selection**\ (\ ) |const| :ref:`🔗<class_GridMapEditorPlugin_method_get_selection>`
+
+Returns the cell coordinate bounds of the current selection. Use :ref:`has_selection<class_GridMapEditorPlugin_method_has_selection>` to check if there is an active selection.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_GridMapEditorPlugin_method_has_selection:
+
+.. rst-class:: classref-method
+
+:ref:`bool<class_bool>` **has_selection**\ (\ ) |const| :ref:`🔗<class_GridMapEditorPlugin_method_has_selection>`
+
+Returns ``true`` if there are selected cells.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_GridMapEditorPlugin_method_set_selected_palette_item:
+
+.. rst-class:: classref-method
+
+|void| **set_selected_palette_item**\ (\ item\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_GridMapEditorPlugin_method_set_selected_palette_item>`
+
+Selects the :ref:`MeshLibrary<class_MeshLibrary>` item with the given index in the grid map editor's palette. If a negative index is given, no item will be selected. If a value greater than the last index is given, the last item will be selected.
+
+\ **Note:** The indices might not be in the same order as they appear in the editor's interface.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_GridMapEditorPlugin_method_set_selection:
+
+.. rst-class:: classref-method
+
+|void| **set_selection**\ (\ begin\: :ref:`Vector3i<class_Vector3i>`, end\: :ref:`Vector3i<class_Vector3i>`\ ) :ref:`🔗<class_GridMapEditorPlugin_method_set_selection>`
+
+Selects the cells inside the given bounds from ``begin`` to ``end``.
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`
+.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)`
+.. |void| replace:: :abbr:`void (No return value.)`

+ 4 - 4
classes/class_heightmapshape3d.rst

@@ -30,12 +30,12 @@ A heightmap collision shape can also be build by using an :ref:`Image<class_Imag
 
  .. code-tab:: gdscript
 
-    var heightmap_texture: Texture = ResourceLoader.load("res://heightmap_image.exr")
-    var heightmap_image: Image = heightmap_texture.get_image()
+    var heightmap_texture = ResourceLoader.load("res://heightmap_image.exr")
+    var heightmap_image = heightmap_texture.get_image()
     heightmap_image.convert(Image.FORMAT_RF)
     
-    var height_min: float = 0.0
-    var height_max: float = 10.0
+    var height_min = 0.0
+    var height_max = 10.0
     
     update_map_data_from_image(heightmap_image, height_min, height_max)
 

+ 1 - 1
classes/class_imagetexture.rst

@@ -43,7 +43,7 @@ This is because images have to be imported as a :ref:`CompressedTexture2D<class_
 ::
 
     var texture = load("res://icon.svg")
-    var image: Image = texture.get_image()
+    var image = texture.get_image()
 
 An **ImageTexture** is not meant to be operated from within the editor interface directly, and is mostly useful for rendering images on screen dynamically via code. If you need to generate images procedurally from within the editor, consider saving and importing images as custom texture resources implementing a new :ref:`EditorImportPlugin<class_EditorImportPlugin>`.
 

+ 9 - 3
classes/class_input.rst

@@ -644,7 +644,9 @@ Returns the current value of the joypad axis at given index (see :ref:`JoyAxis<e
 
 :ref:`String<class_String>` **get_joy_guid**\ (\ device\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_Input_method_get_joy_guid>`
 
-Returns an SDL2-compatible device GUID on platforms that use gamepad remapping, e.g. ``030000004c050000c405000000010000``. Returns ``"Default Gamepad"`` otherwise. Godot uses the `SDL2 game controller database <https://github.com/gabomdq/SDL_GameControllerDB>`__ to determine gamepad names and mappings based on this GUID.
+Returns an SDL2-compatible device GUID on platforms that use gamepad remapping, e.g. ``030000004c050000c405000000010000``. Returns an empty string if it cannot be found. Godot uses the `SDL2 game controller database <https://github.com/gabomdq/SDL_GameControllerDB>`__ to determine gamepad names and mappings based on this GUID.
+
+On Windows, all XInput joypad GUIDs will be overridden by Godot to ``__XINPUT_DEVICE__``, because their mappings are the same.
 
 .. rst-class:: classref-item-separator
 
@@ -658,9 +660,13 @@ Returns an SDL2-compatible device GUID on platforms that use gamepad remapping,
 
 Returns a dictionary with extra platform-specific information about the device, e.g. the raw gamepad name from the OS or the Steam Input index.
 
-On Windows the dictionary contains the following fields:
+On Windows, the dictionary contains the following fields:
+
+\ ``xinput_index``: The index of the controller in the XInput system. Undefined for DirectInput devices.
 
-\ ``xinput_index``: The index of the controller in the XInput system.
+\ ``vendor_id``: The USB vendor ID of the device.
+
+\ ``product_id``: The USB product ID of the device.
 
 On Linux:
 

+ 2 - 0
classes/class_inputeventmidi.rst

@@ -82,6 +82,8 @@ By default, Godot does not detect MIDI devices. You need to call :ref:`OS.open_m
 
 \ **Note:** Godot does not support MIDI output, so there is no way to emit MIDI messages from Godot. Only MIDI input is supported.
 
+\ **Note:** On the Web platform, using MIDI input requires a browser permission to be granted first. This permission request is performed when calling :ref:`OS.open_midi_inputs<class_OS_method_open_midi_inputs>`. MIDI input will not work until the user accepts the permission request.
+
 .. rst-class:: classref-introduction-group
 
 Tutorials

+ 90 - 40
classes/class_itemlist.rst

@@ -185,45 +185,51 @@ Theme Properties
 .. table::
    :widths: auto
 
-   +---------------------------------+----------------------------------------------------------------------------+--------------------------------+
-   | :ref:`Color<class_Color>`       | :ref:`font_color<class_ItemList_theme_color_font_color>`                   | ``Color(0.65, 0.65, 0.65, 1)`` |
-   +---------------------------------+----------------------------------------------------------------------------+--------------------------------+
-   | :ref:`Color<class_Color>`       | :ref:`font_hovered_color<class_ItemList_theme_color_font_hovered_color>`   | ``Color(0.95, 0.95, 0.95, 1)`` |
-   +---------------------------------+----------------------------------------------------------------------------+--------------------------------+
-   | :ref:`Color<class_Color>`       | :ref:`font_outline_color<class_ItemList_theme_color_font_outline_color>`   | ``Color(0, 0, 0, 1)``          |
-   +---------------------------------+----------------------------------------------------------------------------+--------------------------------+
-   | :ref:`Color<class_Color>`       | :ref:`font_selected_color<class_ItemList_theme_color_font_selected_color>` | ``Color(1, 1, 1, 1)``          |
-   +---------------------------------+----------------------------------------------------------------------------+--------------------------------+
-   | :ref:`Color<class_Color>`       | :ref:`guide_color<class_ItemList_theme_color_guide_color>`                 | ``Color(0.7, 0.7, 0.7, 0.25)`` |
-   +---------------------------------+----------------------------------------------------------------------------+--------------------------------+
-   | :ref:`int<class_int>`           | :ref:`h_separation<class_ItemList_theme_constant_h_separation>`            | ``4``                          |
-   +---------------------------------+----------------------------------------------------------------------------+--------------------------------+
-   | :ref:`int<class_int>`           | :ref:`icon_margin<class_ItemList_theme_constant_icon_margin>`              | ``4``                          |
-   +---------------------------------+----------------------------------------------------------------------------+--------------------------------+
-   | :ref:`int<class_int>`           | :ref:`line_separation<class_ItemList_theme_constant_line_separation>`      | ``2``                          |
-   +---------------------------------+----------------------------------------------------------------------------+--------------------------------+
-   | :ref:`int<class_int>`           | :ref:`outline_size<class_ItemList_theme_constant_outline_size>`            | ``0``                          |
-   +---------------------------------+----------------------------------------------------------------------------+--------------------------------+
-   | :ref:`int<class_int>`           | :ref:`v_separation<class_ItemList_theme_constant_v_separation>`            | ``4``                          |
-   +---------------------------------+----------------------------------------------------------------------------+--------------------------------+
-   | :ref:`Font<class_Font>`         | :ref:`font<class_ItemList_theme_font_font>`                                |                                |
-   +---------------------------------+----------------------------------------------------------------------------+--------------------------------+
-   | :ref:`int<class_int>`           | :ref:`font_size<class_ItemList_theme_font_size_font_size>`                 |                                |
-   +---------------------------------+----------------------------------------------------------------------------+--------------------------------+
-   | :ref:`StyleBox<class_StyleBox>` | :ref:`cursor<class_ItemList_theme_style_cursor>`                           |                                |
-   +---------------------------------+----------------------------------------------------------------------------+--------------------------------+
-   | :ref:`StyleBox<class_StyleBox>` | :ref:`cursor_unfocused<class_ItemList_theme_style_cursor_unfocused>`       |                                |
-   +---------------------------------+----------------------------------------------------------------------------+--------------------------------+
-   | :ref:`StyleBox<class_StyleBox>` | :ref:`focus<class_ItemList_theme_style_focus>`                             |                                |
-   +---------------------------------+----------------------------------------------------------------------------+--------------------------------+
-   | :ref:`StyleBox<class_StyleBox>` | :ref:`hovered<class_ItemList_theme_style_hovered>`                         |                                |
-   +---------------------------------+----------------------------------------------------------------------------+--------------------------------+
-   | :ref:`StyleBox<class_StyleBox>` | :ref:`panel<class_ItemList_theme_style_panel>`                             |                                |
-   +---------------------------------+----------------------------------------------------------------------------+--------------------------------+
-   | :ref:`StyleBox<class_StyleBox>` | :ref:`selected<class_ItemList_theme_style_selected>`                       |                                |
-   +---------------------------------+----------------------------------------------------------------------------+--------------------------------+
-   | :ref:`StyleBox<class_StyleBox>` | :ref:`selected_focus<class_ItemList_theme_style_selected_focus>`           |                                |
-   +---------------------------------+----------------------------------------------------------------------------+--------------------------------+
+   +---------------------------------+--------------------------------------------------------------------------------------------+--------------------------------+
+   | :ref:`Color<class_Color>`       | :ref:`font_color<class_ItemList_theme_color_font_color>`                                   | ``Color(0.65, 0.65, 0.65, 1)`` |
+   +---------------------------------+--------------------------------------------------------------------------------------------+--------------------------------+
+   | :ref:`Color<class_Color>`       | :ref:`font_hovered_color<class_ItemList_theme_color_font_hovered_color>`                   | ``Color(0.95, 0.95, 0.95, 1)`` |
+   +---------------------------------+--------------------------------------------------------------------------------------------+--------------------------------+
+   | :ref:`Color<class_Color>`       | :ref:`font_hovered_selected_color<class_ItemList_theme_color_font_hovered_selected_color>` | ``Color(1, 1, 1, 1)``          |
+   +---------------------------------+--------------------------------------------------------------------------------------------+--------------------------------+
+   | :ref:`Color<class_Color>`       | :ref:`font_outline_color<class_ItemList_theme_color_font_outline_color>`                   | ``Color(0, 0, 0, 1)``          |
+   +---------------------------------+--------------------------------------------------------------------------------------------+--------------------------------+
+   | :ref:`Color<class_Color>`       | :ref:`font_selected_color<class_ItemList_theme_color_font_selected_color>`                 | ``Color(1, 1, 1, 1)``          |
+   +---------------------------------+--------------------------------------------------------------------------------------------+--------------------------------+
+   | :ref:`Color<class_Color>`       | :ref:`guide_color<class_ItemList_theme_color_guide_color>`                                 | ``Color(0.7, 0.7, 0.7, 0.25)`` |
+   +---------------------------------+--------------------------------------------------------------------------------------------+--------------------------------+
+   | :ref:`int<class_int>`           | :ref:`h_separation<class_ItemList_theme_constant_h_separation>`                            | ``4``                          |
+   +---------------------------------+--------------------------------------------------------------------------------------------+--------------------------------+
+   | :ref:`int<class_int>`           | :ref:`icon_margin<class_ItemList_theme_constant_icon_margin>`                              | ``4``                          |
+   +---------------------------------+--------------------------------------------------------------------------------------------+--------------------------------+
+   | :ref:`int<class_int>`           | :ref:`line_separation<class_ItemList_theme_constant_line_separation>`                      | ``2``                          |
+   +---------------------------------+--------------------------------------------------------------------------------------------+--------------------------------+
+   | :ref:`int<class_int>`           | :ref:`outline_size<class_ItemList_theme_constant_outline_size>`                            | ``0``                          |
+   +---------------------------------+--------------------------------------------------------------------------------------------+--------------------------------+
+   | :ref:`int<class_int>`           | :ref:`v_separation<class_ItemList_theme_constant_v_separation>`                            | ``4``                          |
+   +---------------------------------+--------------------------------------------------------------------------------------------+--------------------------------+
+   | :ref:`Font<class_Font>`         | :ref:`font<class_ItemList_theme_font_font>`                                                |                                |
+   +---------------------------------+--------------------------------------------------------------------------------------------+--------------------------------+
+   | :ref:`int<class_int>`           | :ref:`font_size<class_ItemList_theme_font_size_font_size>`                                 |                                |
+   +---------------------------------+--------------------------------------------------------------------------------------------+--------------------------------+
+   | :ref:`StyleBox<class_StyleBox>` | :ref:`cursor<class_ItemList_theme_style_cursor>`                                           |                                |
+   +---------------------------------+--------------------------------------------------------------------------------------------+--------------------------------+
+   | :ref:`StyleBox<class_StyleBox>` | :ref:`cursor_unfocused<class_ItemList_theme_style_cursor_unfocused>`                       |                                |
+   +---------------------------------+--------------------------------------------------------------------------------------------+--------------------------------+
+   | :ref:`StyleBox<class_StyleBox>` | :ref:`focus<class_ItemList_theme_style_focus>`                                             |                                |
+   +---------------------------------+--------------------------------------------------------------------------------------------+--------------------------------+
+   | :ref:`StyleBox<class_StyleBox>` | :ref:`hovered<class_ItemList_theme_style_hovered>`                                         |                                |
+   +---------------------------------+--------------------------------------------------------------------------------------------+--------------------------------+
+   | :ref:`StyleBox<class_StyleBox>` | :ref:`hovered_selected<class_ItemList_theme_style_hovered_selected>`                       |                                |
+   +---------------------------------+--------------------------------------------------------------------------------------------+--------------------------------+
+   | :ref:`StyleBox<class_StyleBox>` | :ref:`hovered_selected_focus<class_ItemList_theme_style_hovered_selected_focus>`           |                                |
+   +---------------------------------+--------------------------------------------------------------------------------------------+--------------------------------+
+   | :ref:`StyleBox<class_StyleBox>` | :ref:`panel<class_ItemList_theme_style_panel>`                                             |                                |
+   +---------------------------------+--------------------------------------------------------------------------------------------+--------------------------------+
+   | :ref:`StyleBox<class_StyleBox>` | :ref:`selected<class_ItemList_theme_style_selected>`                                       |                                |
+   +---------------------------------+--------------------------------------------------------------------------------------------+--------------------------------+
+   | :ref:`StyleBox<class_StyleBox>` | :ref:`selected_focus<class_ItemList_theme_style_selected_focus>`                           |                                |
+   +---------------------------------+--------------------------------------------------------------------------------------------+--------------------------------+
 
 .. rst-class:: classref-section-separator
 
@@ -353,6 +359,14 @@ Only allow selecting a single item.
 
 Allows selecting multiple items by holding :kbd:`Ctrl` or :kbd:`Shift`.
 
+.. _class_ItemList_constant_SELECT_TOGGLE:
+
+.. rst-class:: classref-enumeration-constant
+
+:ref:`SelectMode<enum_ItemList_SelectMode>` **SELECT_TOGGLE** = ``2``
+
+Allows selecting multiple items by toggling them on and off.
+
 .. rst-class:: classref-section-separator
 
 ----
@@ -1245,6 +1259,18 @@ Text :ref:`Color<class_Color>` used when the item is hovered and not selected ye
 
 ----
 
+.. _class_ItemList_theme_color_font_hovered_selected_color:
+
+.. rst-class:: classref-themeproperty
+
+:ref:`Color<class_Color>` **font_hovered_selected_color** = ``Color(1, 1, 1, 1)`` :ref:`🔗<class_ItemList_theme_color_font_hovered_selected_color>`
+
+Text :ref:`Color<class_Color>` used when the item is hovered and selected.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_ItemList_theme_color_font_outline_color:
 
 .. rst-class:: classref-themeproperty
@@ -1263,7 +1289,7 @@ The tint of text outline of the item.
 
 :ref:`Color<class_Color>` **font_selected_color** = ``Color(1, 1, 1, 1)`` :ref:`🔗<class_ItemList_theme_color_font_selected_color>`
 
-Text :ref:`Color<class_Color>` used when the item is selected.
+Text :ref:`Color<class_Color>` used when the item is selected, but not hovered.
 
 .. rst-class:: classref-item-separator
 
@@ -1415,6 +1441,30 @@ The focused style for the **ItemList**, drawn on top of the background, but belo
 
 ----
 
+.. _class_ItemList_theme_style_hovered_selected:
+
+.. rst-class:: classref-themeproperty
+
+:ref:`StyleBox<class_StyleBox>` **hovered_selected** :ref:`🔗<class_ItemList_theme_style_hovered_selected>`
+
+:ref:`StyleBox<class_StyleBox>` for the hovered and selected items, used when the **ItemList** is not being focused.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_ItemList_theme_style_hovered_selected_focus:
+
+.. rst-class:: classref-themeproperty
+
+:ref:`StyleBox<class_StyleBox>` **hovered_selected_focus** :ref:`🔗<class_ItemList_theme_style_hovered_selected_focus>`
+
+:ref:`StyleBox<class_StyleBox>` for the hovered and selected items, used when the **ItemList** is being focused.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_ItemList_theme_style_panel:
 
 .. rst-class:: classref-themeproperty

+ 2 - 2
classes/class_light3d.rst

@@ -75,7 +75,7 @@ Properties
    +----------------------------------------+----------------------------------------------------------------------------------------+-----------------------+
    | :ref:`float<class_float>`              | :ref:`light_size<class_Light3D_property_light_size>`                                   | ``0.0``               |
    +----------------------------------------+----------------------------------------------------------------------------------------+-----------------------+
-   | :ref:`float<class_float>`              | :ref:`light_specular<class_Light3D_property_light_specular>`                           | ``0.5``               |
+   | :ref:`float<class_float>`              | :ref:`light_specular<class_Light3D_property_light_specular>`                           | ``1.0``               |
    +----------------------------------------+----------------------------------------------------------------------------------------+-----------------------+
    | :ref:`float<class_float>`              | :ref:`light_temperature<class_Light3D_property_light_temperature>`                     |                       |
    +----------------------------------------+----------------------------------------------------------------------------------------+-----------------------+
@@ -658,7 +658,7 @@ The size of the light in Godot units. Only available for :ref:`OmniLight3D<class
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **light_specular** = ``0.5`` :ref:`🔗<class_Light3D_property_light_specular>`
+:ref:`float<class_float>` **light_specular** = ``1.0`` :ref:`🔗<class_Light3D_property_light_specular>`
 
 .. rst-class:: classref-property-setget
 

+ 1 - 1
classes/class_menubar.rst

@@ -19,7 +19,7 @@ A horizontal menu bar that creates a menu for each :ref:`PopupMenu<class_PopupMe
 Description
 -----------
 
-A horizontal menu bar that creates a menu for each :ref:`PopupMenu<class_PopupMenu>` child. New items are created by adding :ref:`PopupMenu<class_PopupMenu>`\ s to this node.
+A horizontal menu bar that creates a menu for each :ref:`PopupMenu<class_PopupMenu>` child. New items are created by adding :ref:`PopupMenu<class_PopupMenu>`\ s to this node. Item title is determined by :ref:`Window.title<class_Window_property_title>`, or node name if :ref:`Window.title<class_Window_property_title>` is empty. Item title can be overridden using :ref:`set_menu_title<class_MenuBar_method_set_menu_title>`.
 
 .. rst-class:: classref-reftable-group
 

+ 12 - 0
classes/class_node.rst

@@ -363,6 +363,18 @@ Emitted when the node's editor description field changed.
 
 ----
 
+.. _class_Node_signal_editor_state_changed:
+
+.. rst-class:: classref-signal
+
+**editor_state_changed**\ (\ ) :ref:`🔗<class_Node_signal_editor_state_changed>`
+
+Emitted when an attribute of the node that is relevant to the editor is changed. Only emitted in the editor.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_Node_signal_ready:
 
 .. rst-class:: classref-signal

+ 2 - 0
classes/class_omnilight3d.rst

@@ -45,6 +45,8 @@ Properties
 .. table::
    :widths: auto
 
+   +------------------------------------------------+----------------------------------------------------------------------+-------------------------------------------------------------------------------+
+   | :ref:`float<class_float>`                      | light_specular                                                       | ``0.5`` (overrides :ref:`Light3D<class_Light3D_property_light_specular>`)     |
    +------------------------------------------------+----------------------------------------------------------------------+-------------------------------------------------------------------------------+
    | :ref:`float<class_float>`                      | :ref:`omni_attenuation<class_OmniLight3D_property_omni_attenuation>` | ``1.0``                                                                       |
    +------------------------------------------------+----------------------------------------------------------------------+-------------------------------------------------------------------------------+

+ 27 - 3
classes/class_os.rst

@@ -151,6 +151,8 @@ Methods
    +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`String<class_String>`                       | :ref:`get_version<class_OS_method_get_version>`\ (\ ) |const|                                                                                                                                                                                                                                                                                                                               |
    +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`String<class_String>`                       | :ref:`get_version_alias<class_OS_method_get_version_alias>`\ (\ ) |const|                                                                                                                                                                                                                                                                                                                   |
+   +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`PackedStringArray<class_PackedStringArray>` | :ref:`get_video_adapter_driver_info<class_OS_method_get_video_adapter_driver_info>`\ (\ ) |const|                                                                                                                                                                                                                                                                                           |
    +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`bool<class_bool>`                           | :ref:`has_environment<class_OS_method_has_environment>`\ (\ variable\: :ref:`String<class_String>`\ ) |const|                                                                                                                                                                                                                                                                               |
@@ -464,7 +466,7 @@ Displays a modal dialog box using the host platform's implementation. The engine
 
 Shuts down the system MIDI driver. Godot will no longer receive :ref:`InputEventMIDI<class_InputEventMIDI>`. See also :ref:`open_midi_inputs<class_OS_method_open_midi_inputs>` and :ref:`get_connected_midi_inputs<class_OS_method_get_connected_midi_inputs>`.
 
-\ **Note:** This method is implemented on Linux, macOS, and Windows.
+\ **Note:** This method is implemented on Linux, macOS, Windows, and Web.
 
 .. rst-class:: classref-item-separator
 
@@ -821,7 +823,11 @@ Not to be confused with :ref:`get_user_data_dir<class_OS_method_get_user_data_di
 
 Returns an array of connected MIDI device names, if they exist. Returns an empty array if the system MIDI driver has not previously been initialized with :ref:`open_midi_inputs<class_OS_method_open_midi_inputs>`. See also :ref:`close_midi_inputs<class_OS_method_close_midi_inputs>`.
 
-\ **Note:** This method is implemented on Linux, macOS, and Windows.
+\ **Note:** This method is implemented on Linux, macOS, Windows, and Web.
+
+\ **Note:** On the Web platform, Web MIDI needs to be supported by the browser. `For the time being <https://caniuse.com/midi>`__, it is currently supported by all major browsers, except Safari.
+
+\ **Note:** On the Web platform, using MIDI input requires a browser permission to be granted first. This permission request is performed when calling :ref:`open_midi_inputs<class_OS_method_open_midi_inputs>`. The browser will refrain from processing MIDI input until the user accepts the permission request.
 
 .. rst-class:: classref-item-separator
 
@@ -1417,6 +1423,20 @@ Returns the exact production and build version of the operating system. This is
 
 ----
 
+.. _class_OS_method_get_version_alias:
+
+.. rst-class:: classref-method
+
+:ref:`String<class_String>` **get_version_alias**\ (\ ) |const| :ref:`🔗<class_OS_method_get_version_alias>`
+
+Returns the branded version used in marketing, followed by the build number (on Windows) or the version number (on macOS). Examples include ``11 (build 22000)`` and ``Sequoia (15.0.0)``. This value can then be appended to :ref:`get_name<class_OS_method_get_name>` to get a full, human-readable operating system name and version combination for the operating system. Windows feature updates such as 24H2 are not contained in the resulting string, but Windows Server is recognized as such (e.g. ``2025 (build 26100)`` for Windows Server 2025).
+
+\ **Note:** This method is only supported on Windows and macOS. On other operating systems, it returns the same value as :ref:`get_version<class_OS_method_get_version>`.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_OS_method_get_video_adapter_driver_info:
 
 .. rst-class:: classref-method
@@ -1635,7 +1655,11 @@ Returns :ref:`@GlobalScope.FAILED<class_@GlobalScope_constant_FAILED>` if the fi
 
 Initializes the singleton for the system MIDI driver, allowing Godot to receive :ref:`InputEventMIDI<class_InputEventMIDI>`. See also :ref:`get_connected_midi_inputs<class_OS_method_get_connected_midi_inputs>` and :ref:`close_midi_inputs<class_OS_method_close_midi_inputs>`.
 
-\ **Note:** This method is implemented on Linux, macOS, and Windows.
+\ **Note:** This method is implemented on Linux, macOS, Windows, and Web.
+
+\ **Note:** On the Web platform, Web MIDI needs to be supported by the browser. `For the time being <https://caniuse.com/midi>`__, it is currently supported by all major browsers, except Safari.
+
+\ **Note:** On the Web platform, using MIDI input requires a browser permission to be granted first. This permission request is performed when calling :ref:`open_midi_inputs<class_OS_method_open_midi_inputs>`. The browser will refrain from processing MIDI input until the user accepts the permission request.
 
 .. rst-class:: classref-item-separator
 

+ 18 - 2
classes/class_projectsettings.rst

@@ -1489,6 +1489,8 @@ Properties
    +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+
    | :ref:`int<class_int>`                             | :ref:`rendering/lightmapping/bake_performance/max_rays_per_probe_pass<class_ProjectSettings_property_rendering/lightmapping/bake_performance/max_rays_per_probe_pass>`                                     | ``64``                                                                                           |
    +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+
+   | :ref:`int<class_int>`                             | :ref:`rendering/lightmapping/bake_performance/max_transparency_rays<class_ProjectSettings_property_rendering/lightmapping/bake_performance/max_transparency_rays>`                                         | ``8``                                                                                            |
+   +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+
    | :ref:`int<class_int>`                             | :ref:`rendering/lightmapping/bake_performance/region_size<class_ProjectSettings_property_rendering/lightmapping/bake_performance/region_size>`                                                             | ``512``                                                                                          |
    +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+
    | :ref:`int<class_int>`                             | :ref:`rendering/lightmapping/bake_quality/high_quality_probe_ray_count<class_ProjectSettings_property_rendering/lightmapping/bake_quality/high_quality_probe_ray_count>`                                   | ``512``                                                                                          |
@@ -11140,6 +11142,18 @@ The maximum number of rays that can be thrown per pass when baking dynamic objec
 
 ----
 
+.. _class_ProjectSettings_property_rendering/lightmapping/bake_performance/max_transparency_rays:
+
+.. rst-class:: classref-property
+
+:ref:`int<class_int>` **rendering/lightmapping/bake_performance/max_transparency_rays** = ``8`` :ref:`🔗<class_ProjectSettings_property_rendering/lightmapping/bake_performance/max_transparency_rays>`
+
+The maximum number of retry rays that can be thrown per pass when hitting a transparent surface when baking lightmaps with :ref:`LightmapGI<class_LightmapGI>`. Depending on the scene, reducing this value may lead to faster bake times.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_ProjectSettings_property_rendering/lightmapping/bake_performance/region_size:
 
 .. rst-class:: classref-property
@@ -12352,9 +12366,11 @@ Sets the maximum number of samples to take when using anisotropic filtering on t
 
 The anisotropic filtering level also affects decals and light projectors if they are configured to use anisotropic filtering. See :ref:`rendering/textures/decals/filter<class_ProjectSettings_property_rendering/textures/decals/filter>` and :ref:`rendering/textures/light_projectors/filter<class_ProjectSettings_property_rendering/textures/light_projectors/filter>`.
 
-\ **Note:** For performance reasons, anisotropic filtering *is not enabled by default* on 2D and 3D materials. For this setting to have an effect in 3D, set :ref:`BaseMaterial3D.texture_filter<class_BaseMaterial3D_property_texture_filter>` to :ref:`BaseMaterial3D.TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC<class_BaseMaterial3D_constant_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC>` or :ref:`BaseMaterial3D.TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC<class_BaseMaterial3D_constant_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC>` on materials. For this setting to have an effect in 2D, set :ref:`CanvasItem.texture_filter<class_CanvasItem_property_texture_filter>` to :ref:`CanvasItem.TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC<class_CanvasItem_constant_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC>` or :ref:`CanvasItem.TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC<class_CanvasItem_constant_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC>` on the :ref:`CanvasItem<class_CanvasItem>` node displaying the texture (or in :ref:`CanvasTexture<class_CanvasTexture>`). However, anisotropic filtering is rarely useful in 2D, so only enable it for textures in 2D if it makes a meaningful visual difference.
+\ **Note:** In 3D, for this setting to have an effect, set :ref:`BaseMaterial3D.texture_filter<class_BaseMaterial3D_property_texture_filter>` to :ref:`BaseMaterial3D.TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC<class_BaseMaterial3D_constant_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC>` or :ref:`BaseMaterial3D.TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC<class_BaseMaterial3D_constant_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC>` on materials.
 
-\ **Note:** This property is only read when the project starts. There is currently no way to change this setting at run-time.
+\ **Note:** In 2D, for this setting to have an effect, set :ref:`CanvasItem.texture_filter<class_CanvasItem_property_texture_filter>` to :ref:`CanvasItem.TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC<class_CanvasItem_constant_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC>` or :ref:`CanvasItem.TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC<class_CanvasItem_constant_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC>` on the :ref:`CanvasItem<class_CanvasItem>` node displaying the texture (or in :ref:`CanvasTexture<class_CanvasTexture>`). However, anisotropic filtering is rarely useful in 2D, so only enable it for textures in 2D if it makes a meaningful visual difference.
+
+\ **Note:** This property is only read when the project starts. To change the anisotropic filtering level at runtime, set :ref:`Viewport.anisotropic_filtering_level<class_Viewport_property_anisotropic_filtering_level>` on the root :ref:`Viewport<class_Viewport>` instead.
 
 .. rst-class:: classref-item-separator
 

+ 150 - 0
classes/class_renderingserver.rst

@@ -147,6 +147,12 @@ Methods
    +----------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`RID<class_RID>`                                                            | :ref:`canvas_item_create<class_RenderingServer_method_canvas_item_create>`\ (\ )                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
    +----------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`Variant<class_Variant>`                                                    | :ref:`canvas_item_get_instance_shader_parameter<class_RenderingServer_method_canvas_item_get_instance_shader_parameter>`\ (\ instance\: :ref:`RID<class_RID>`, parameter\: :ref:`StringName<class_StringName>`\ ) |const|                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
+   +----------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`Variant<class_Variant>`                                                    | :ref:`canvas_item_get_instance_shader_parameter_default_value<class_RenderingServer_method_canvas_item_get_instance_shader_parameter_default_value>`\ (\ instance\: :ref:`RID<class_RID>`, parameter\: :ref:`StringName<class_StringName>`\ ) |const|                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
+   +----------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`Array<class_Array>`\[:ref:`Dictionary<class_Dictionary>`\]                 | :ref:`canvas_item_get_instance_shader_parameter_list<class_RenderingServer_method_canvas_item_get_instance_shader_parameter_list>`\ (\ instance\: :ref:`RID<class_RID>`\ ) |const|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
+   +----------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                                                           | :ref:`canvas_item_reset_physics_interpolation<class_RenderingServer_method_canvas_item_reset_physics_interpolation>`\ (\ item\: :ref:`RID<class_RID>`\ )                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
    +----------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                                                           | :ref:`canvas_item_set_canvas_group_mode<class_RenderingServer_method_canvas_item_set_canvas_group_mode>`\ (\ item\: :ref:`RID<class_RID>`, mode\: :ref:`CanvasGroupMode<enum_RenderingServer_CanvasGroupMode>`, clear_margin\: :ref:`float<class_float>` = 5.0, fit_empty\: :ref:`bool<class_bool>` = false, fit_margin\: :ref:`float<class_float>` = 0.0, blur_mipmaps\: :ref:`bool<class_bool>` = false\ )                                                                                                                                                                                                                                                                                            |
@@ -167,6 +173,8 @@ Methods
    +----------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                                                           | :ref:`canvas_item_set_draw_index<class_RenderingServer_method_canvas_item_set_draw_index>`\ (\ item\: :ref:`RID<class_RID>`, index\: :ref:`int<class_int>`\ )                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
    +----------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                                           | :ref:`canvas_item_set_instance_shader_parameter<class_RenderingServer_method_canvas_item_set_instance_shader_parameter>`\ (\ instance\: :ref:`RID<class_RID>`, parameter\: :ref:`StringName<class_StringName>`, value\: :ref:`Variant<class_Variant>`\ )                                                                                                                                                                                                                                                                                                                                                                                                                                                |
+   +----------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                                                           | :ref:`canvas_item_set_interpolated<class_RenderingServer_method_canvas_item_set_interpolated>`\ (\ item\: :ref:`RID<class_RID>`, interpolated\: :ref:`bool<class_bool>`\ )                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
    +----------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                                                           | :ref:`canvas_item_set_light_mask<class_RenderingServer_method_canvas_item_set_light_mask>`\ (\ item\: :ref:`RID<class_RID>`, mask\: :ref:`int<class_int>`\ )                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
@@ -633,6 +641,8 @@ Methods
    +----------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`RID<class_RID>`                                                            | :ref:`mesh_surface_get_material<class_RenderingServer_method_mesh_surface_get_material>`\ (\ mesh\: :ref:`RID<class_RID>`, surface\: :ref:`int<class_int>`\ ) |const|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
    +----------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                                           | :ref:`mesh_surface_remove<class_RenderingServer_method_mesh_surface_remove>`\ (\ mesh\: :ref:`RID<class_RID>`, surface\: :ref:`int<class_int>`\ )                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
+   +----------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                                                           | :ref:`mesh_surface_set_material<class_RenderingServer_method_mesh_surface_set_material>`\ (\ mesh\: :ref:`RID<class_RID>`, surface\: :ref:`int<class_int>`, material\: :ref:`RID<class_RID>`\ )                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
    +----------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                                                           | :ref:`mesh_surface_update_attribute_region<class_RenderingServer_method_mesh_surface_update_attribute_region>`\ (\ mesh\: :ref:`RID<class_RID>`, surface\: :ref:`int<class_int>`, offset\: :ref:`int<class_int>`, data\: :ref:`PackedByteArray<class_PackedByteArray>`\ )                                                                                                                                                                                                                                                                                                                                                                                                                               |
@@ -959,6 +969,8 @@ Methods
    +----------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                                                           | :ref:`viewport_set_active<class_RenderingServer_method_viewport_set_active>`\ (\ viewport\: :ref:`RID<class_RID>`, active\: :ref:`bool<class_bool>`\ )                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
    +----------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                                           | :ref:`viewport_set_anisotropic_filtering_level<class_RenderingServer_method_viewport_set_anisotropic_filtering_level>`\ (\ viewport\: :ref:`RID<class_RID>`, anisotropic_filtering_level\: :ref:`ViewportAnisotropicFiltering<enum_RenderingServer_ViewportAnisotropicFiltering>`\ )                                                                                                                                                                                                                                                                                                                                                                                                                    |
+   +----------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                                                           | :ref:`viewport_set_canvas_cull_mask<class_RenderingServer_method_viewport_set_canvas_cull_mask>`\ (\ viewport\: :ref:`RID<class_RID>`, canvas_cull_mask\: :ref:`int<class_int>`\ )                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
    +----------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                                                           | :ref:`viewport_set_canvas_stacking<class_RenderingServer_method_viewport_set_canvas_stacking>`\ (\ viewport\: :ref:`RID<class_RID>`, canvas\: :ref:`RID<class_RID>`, layer\: :ref:`int<class_int>`, sublayer\: :ref:`int<class_int>`\ )                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
@@ -3306,6 +3318,64 @@ Represents the size of the :ref:`ViewportMSAA<enum_RenderingServer_ViewportMSAA>
 
 ----
 
+.. _enum_RenderingServer_ViewportAnisotropicFiltering:
+
+.. rst-class:: classref-enumeration
+
+enum **ViewportAnisotropicFiltering**: :ref:`🔗<enum_RenderingServer_ViewportAnisotropicFiltering>`
+
+.. _class_RenderingServer_constant_VIEWPORT_ANISOTROPY_DISABLED:
+
+.. rst-class:: classref-enumeration-constant
+
+:ref:`ViewportAnisotropicFiltering<enum_RenderingServer_ViewportAnisotropicFiltering>` **VIEWPORT_ANISOTROPY_DISABLED** = ``0``
+
+Anisotropic filtering is disabled.
+
+.. _class_RenderingServer_constant_VIEWPORT_ANISOTROPY_2X:
+
+.. rst-class:: classref-enumeration-constant
+
+:ref:`ViewportAnisotropicFiltering<enum_RenderingServer_ViewportAnisotropicFiltering>` **VIEWPORT_ANISOTROPY_2X** = ``1``
+
+Use 2× anisotropic filtering.
+
+.. _class_RenderingServer_constant_VIEWPORT_ANISOTROPY_4X:
+
+.. rst-class:: classref-enumeration-constant
+
+:ref:`ViewportAnisotropicFiltering<enum_RenderingServer_ViewportAnisotropicFiltering>` **VIEWPORT_ANISOTROPY_4X** = ``2``
+
+Use 4× anisotropic filtering. This is the default value.
+
+.. _class_RenderingServer_constant_VIEWPORT_ANISOTROPY_8X:
+
+.. rst-class:: classref-enumeration-constant
+
+:ref:`ViewportAnisotropicFiltering<enum_RenderingServer_ViewportAnisotropicFiltering>` **VIEWPORT_ANISOTROPY_8X** = ``3``
+
+Use 8× anisotropic filtering.
+
+.. _class_RenderingServer_constant_VIEWPORT_ANISOTROPY_16X:
+
+.. rst-class:: classref-enumeration-constant
+
+:ref:`ViewportAnisotropicFiltering<enum_RenderingServer_ViewportAnisotropicFiltering>` **VIEWPORT_ANISOTROPY_16X** = ``4``
+
+Use 16× anisotropic filtering.
+
+.. _class_RenderingServer_constant_VIEWPORT_ANISOTROPY_MAX:
+
+.. rst-class:: classref-enumeration-constant
+
+:ref:`ViewportAnisotropicFiltering<enum_RenderingServer_ViewportAnisotropicFiltering>` **VIEWPORT_ANISOTROPY_MAX** = ``5``
+
+Represents the size of the :ref:`ViewportAnisotropicFiltering<enum_RenderingServer_ViewportAnisotropicFiltering>` enum.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _enum_RenderingServer_ViewportScreenSpaceAA:
 
 .. rst-class:: classref-enumeration
@@ -6514,6 +6584,44 @@ Once finished with your RID, you will want to free the RID using the RenderingSe
 
 ----
 
+.. _class_RenderingServer_method_canvas_item_get_instance_shader_parameter:
+
+.. rst-class:: classref-method
+
+:ref:`Variant<class_Variant>` **canvas_item_get_instance_shader_parameter**\ (\ instance\: :ref:`RID<class_RID>`, parameter\: :ref:`StringName<class_StringName>`\ ) |const| :ref:`🔗<class_RenderingServer_method_canvas_item_get_instance_shader_parameter>`
+
+Returns the value of the per-instance shader uniform from the specified canvas item instance. Equivalent to :ref:`CanvasItem.get_instance_shader_parameter<class_CanvasItem_method_get_instance_shader_parameter>`.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_RenderingServer_method_canvas_item_get_instance_shader_parameter_default_value:
+
+.. rst-class:: classref-method
+
+:ref:`Variant<class_Variant>` **canvas_item_get_instance_shader_parameter_default_value**\ (\ instance\: :ref:`RID<class_RID>`, parameter\: :ref:`StringName<class_StringName>`\ ) |const| :ref:`🔗<class_RenderingServer_method_canvas_item_get_instance_shader_parameter_default_value>`
+
+Returns the default value of the per-instance shader uniform from the specified canvas item instance. Equivalent to :ref:`CanvasItem.get_instance_shader_parameter<class_CanvasItem_method_get_instance_shader_parameter>`.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_RenderingServer_method_canvas_item_get_instance_shader_parameter_list:
+
+.. rst-class:: classref-method
+
+:ref:`Array<class_Array>`\[:ref:`Dictionary<class_Dictionary>`\] **canvas_item_get_instance_shader_parameter_list**\ (\ instance\: :ref:`RID<class_RID>`\ ) |const| :ref:`🔗<class_RenderingServer_method_canvas_item_get_instance_shader_parameter_list>`
+
+Returns a dictionary of per-instance shader uniform names of the per-instance shader uniform from the specified canvas item instance.
+
+The returned dictionary is in PropertyInfo format, with the keys ``name``, ``class_name``, ``type``, ``hint``, ``hint_string``, and ``usage``.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_RenderingServer_method_canvas_item_reset_physics_interpolation:
 
 .. rst-class:: classref-method
@@ -6640,6 +6748,18 @@ Sets the index for the :ref:`CanvasItem<class_CanvasItem>`.
 
 ----
 
+.. _class_RenderingServer_method_canvas_item_set_instance_shader_parameter:
+
+.. rst-class:: classref-method
+
+|void| **canvas_item_set_instance_shader_parameter**\ (\ instance\: :ref:`RID<class_RID>`, parameter\: :ref:`StringName<class_StringName>`, value\: :ref:`Variant<class_Variant>`\ ) :ref:`🔗<class_RenderingServer_method_canvas_item_set_instance_shader_parameter>`
+
+Sets the per-instance shader uniform on the specified canvas item instance. Equivalent to :ref:`CanvasItem.set_instance_shader_parameter<class_CanvasItem_method_set_instance_shader_parameter>`.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_RenderingServer_method_canvas_item_set_interpolated:
 
 .. rst-class:: classref-method
@@ -9622,6 +9742,18 @@ Returns a mesh's surface's material.
 
 ----
 
+.. _class_RenderingServer_method_mesh_surface_remove:
+
+.. rst-class:: classref-method
+
+|void| **mesh_surface_remove**\ (\ mesh\: :ref:`RID<class_RID>`, surface\: :ref:`int<class_int>`\ ) :ref:`🔗<class_RenderingServer_method_mesh_surface_remove>`
+
+Removes the surface at the given index from the Mesh, shifting surfaces with higher index down by one.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_RenderingServer_method_mesh_surface_set_material:
 
 .. rst-class:: classref-method
@@ -11782,6 +11914,24 @@ If ``true``, sets the viewport active, else sets it inactive.
 
 ----
 
+.. _class_RenderingServer_method_viewport_set_anisotropic_filtering_level:
+
+.. rst-class:: classref-method
+
+|void| **viewport_set_anisotropic_filtering_level**\ (\ viewport\: :ref:`RID<class_RID>`, anisotropic_filtering_level\: :ref:`ViewportAnisotropicFiltering<enum_RenderingServer_ViewportAnisotropicFiltering>`\ ) :ref:`🔗<class_RenderingServer_method_viewport_set_anisotropic_filtering_level>`
+
+Sets the maximum number of samples to take when using anisotropic filtering on textures (as a power of two). A higher sample count will result in sharper textures at oblique angles, but is more expensive to compute. A value of ``0`` forcibly disables anisotropic filtering, even on materials where it is enabled.
+
+The anisotropic filtering level also affects decals and light projectors if they are configured to use anisotropic filtering. See :ref:`ProjectSettings.rendering/textures/decals/filter<class_ProjectSettings_property_rendering/textures/decals/filter>` and :ref:`ProjectSettings.rendering/textures/light_projectors/filter<class_ProjectSettings_property_rendering/textures/light_projectors/filter>`.
+
+\ **Note:** In 3D, for this setting to have an effect, set :ref:`BaseMaterial3D.texture_filter<class_BaseMaterial3D_property_texture_filter>` to :ref:`BaseMaterial3D.TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC<class_BaseMaterial3D_constant_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC>` or :ref:`BaseMaterial3D.TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC<class_BaseMaterial3D_constant_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC>` on materials.
+
+\ **Note:** In 2D, for this setting to have an effect, set :ref:`CanvasItem.texture_filter<class_CanvasItem_property_texture_filter>` to :ref:`CanvasItem.TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC<class_CanvasItem_constant_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC>` or :ref:`CanvasItem.TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC<class_CanvasItem_constant_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC>` on the :ref:`CanvasItem<class_CanvasItem>` node displaying the texture (or in :ref:`CanvasTexture<class_CanvasTexture>`). However, anisotropic filtering is rarely useful in 2D, so only enable it for textures in 2D if it makes a meaningful visual difference.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_RenderingServer_method_viewport_set_canvas_cull_mask:
 
 .. rst-class:: classref-method

+ 38 - 19
classes/class_renderscenebuffersconfiguration.rst

@@ -29,25 +29,27 @@ Properties
 .. table::
    :widths: auto
 
-   +--------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
-   | :ref:`float<class_float>`                                                | :ref:`fsr_sharpness<class_RenderSceneBuffersConfiguration_property_fsr_sharpness>`             | ``0.0``            |
-   +--------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
-   | :ref:`Vector2i<class_Vector2i>`                                          | :ref:`internal_size<class_RenderSceneBuffersConfiguration_property_internal_size>`             | ``Vector2i(0, 0)`` |
-   +--------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
-   | :ref:`ViewportMSAA<enum_RenderingServer_ViewportMSAA>`                   | :ref:`msaa_3d<class_RenderSceneBuffersConfiguration_property_msaa_3d>`                         | ``0``              |
-   +--------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
-   | :ref:`RID<class_RID>`                                                    | :ref:`render_target<class_RenderSceneBuffersConfiguration_property_render_target>`             | ``RID()``          |
-   +--------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
-   | :ref:`ViewportScaling3DMode<enum_RenderingServer_ViewportScaling3DMode>` | :ref:`scaling_3d_mode<class_RenderSceneBuffersConfiguration_property_scaling_3d_mode>`         | ``255``            |
-   +--------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
-   | :ref:`ViewportScreenSpaceAA<enum_RenderingServer_ViewportScreenSpaceAA>` | :ref:`screen_space_aa<class_RenderSceneBuffersConfiguration_property_screen_space_aa>`         | ``0``              |
-   +--------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
-   | :ref:`Vector2i<class_Vector2i>`                                          | :ref:`target_size<class_RenderSceneBuffersConfiguration_property_target_size>`                 | ``Vector2i(0, 0)`` |
-   +--------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
-   | :ref:`float<class_float>`                                                | :ref:`texture_mipmap_bias<class_RenderSceneBuffersConfiguration_property_texture_mipmap_bias>` | ``0.0``            |
-   +--------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
-   | :ref:`int<class_int>`                                                    | :ref:`view_count<class_RenderSceneBuffersConfiguration_property_view_count>`                   | ``1``              |
-   +--------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+--------------------+
+   +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------+--------------------+
+   | :ref:`ViewportAnisotropicFiltering<enum_RenderingServer_ViewportAnisotropicFiltering>` | :ref:`anisotropic_filtering_level<class_RenderSceneBuffersConfiguration_property_anisotropic_filtering_level>` | ``2``              |
+   +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------+--------------------+
+   | :ref:`float<class_float>`                                                              | :ref:`fsr_sharpness<class_RenderSceneBuffersConfiguration_property_fsr_sharpness>`                             | ``0.0``            |
+   +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------+--------------------+
+   | :ref:`Vector2i<class_Vector2i>`                                                        | :ref:`internal_size<class_RenderSceneBuffersConfiguration_property_internal_size>`                             | ``Vector2i(0, 0)`` |
+   +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------+--------------------+
+   | :ref:`ViewportMSAA<enum_RenderingServer_ViewportMSAA>`                                 | :ref:`msaa_3d<class_RenderSceneBuffersConfiguration_property_msaa_3d>`                                         | ``0``              |
+   +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------+--------------------+
+   | :ref:`RID<class_RID>`                                                                  | :ref:`render_target<class_RenderSceneBuffersConfiguration_property_render_target>`                             | ``RID()``          |
+   +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------+--------------------+
+   | :ref:`ViewportScaling3DMode<enum_RenderingServer_ViewportScaling3DMode>`               | :ref:`scaling_3d_mode<class_RenderSceneBuffersConfiguration_property_scaling_3d_mode>`                         | ``255``            |
+   +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------+--------------------+
+   | :ref:`ViewportScreenSpaceAA<enum_RenderingServer_ViewportScreenSpaceAA>`               | :ref:`screen_space_aa<class_RenderSceneBuffersConfiguration_property_screen_space_aa>`                         | ``0``              |
+   +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------+--------------------+
+   | :ref:`Vector2i<class_Vector2i>`                                                        | :ref:`target_size<class_RenderSceneBuffersConfiguration_property_target_size>`                                 | ``Vector2i(0, 0)`` |
+   +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------+--------------------+
+   | :ref:`float<class_float>`                                                              | :ref:`texture_mipmap_bias<class_RenderSceneBuffersConfiguration_property_texture_mipmap_bias>`                 | ``0.0``            |
+   +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------+--------------------+
+   | :ref:`int<class_int>`                                                                  | :ref:`view_count<class_RenderSceneBuffersConfiguration_property_view_count>`                                   | ``1``              |
+   +----------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------+--------------------+
 
 .. rst-class:: classref-section-separator
 
@@ -58,6 +60,23 @@ Properties
 Property Descriptions
 ---------------------
 
+.. _class_RenderSceneBuffersConfiguration_property_anisotropic_filtering_level:
+
+.. rst-class:: classref-property
+
+:ref:`ViewportAnisotropicFiltering<enum_RenderingServer_ViewportAnisotropicFiltering>` **anisotropic_filtering_level** = ``2`` :ref:`🔗<class_RenderSceneBuffersConfiguration_property_anisotropic_filtering_level>`
+
+.. rst-class:: classref-property-setget
+
+- |void| **set_anisotropic_filtering_level**\ (\ value\: :ref:`ViewportAnisotropicFiltering<enum_RenderingServer_ViewportAnisotropicFiltering>`\ )
+- :ref:`ViewportAnisotropicFiltering<enum_RenderingServer_ViewportAnisotropicFiltering>` **get_anisotropic_filtering_level**\ (\ )
+
+Level of the anisotropic filter.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_RenderSceneBuffersConfiguration_property_fsr_sharpness:
 
 .. rst-class:: classref-property

+ 23 - 9
classes/class_renderscenebuffersextension.rst

@@ -29,15 +29,17 @@ Methods
 .. table::
    :widths: auto
 
-   +--------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void| | :ref:`_configure<class_RenderSceneBuffersExtension_private_method__configure>`\ (\ config\: :ref:`RenderSceneBuffersConfiguration<class_RenderSceneBuffersConfiguration>`\ ) |virtual| |
-   +--------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void| | :ref:`_set_fsr_sharpness<class_RenderSceneBuffersExtension_private_method__set_fsr_sharpness>`\ (\ fsr_sharpness\: :ref:`float<class_float>`\ ) |virtual|                              |
-   +--------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void| | :ref:`_set_texture_mipmap_bias<class_RenderSceneBuffersExtension_private_method__set_texture_mipmap_bias>`\ (\ texture_mipmap_bias\: :ref:`float<class_float>`\ ) |virtual|            |
-   +--------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void| | :ref:`_set_use_debanding<class_RenderSceneBuffersExtension_private_method__set_use_debanding>`\ (\ use_debanding\: :ref:`bool<class_bool>`\ ) |virtual|                                |
-   +--------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   +--------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void| | :ref:`_configure<class_RenderSceneBuffersExtension_private_method__configure>`\ (\ config\: :ref:`RenderSceneBuffersConfiguration<class_RenderSceneBuffersConfiguration>`\ ) |virtual|          |
+   +--------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void| | :ref:`_set_anisotropic_filtering_level<class_RenderSceneBuffersExtension_private_method__set_anisotropic_filtering_level>`\ (\ anisotropic_filtering_level\: :ref:`int<class_int>`\ ) |virtual| |
+   +--------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void| | :ref:`_set_fsr_sharpness<class_RenderSceneBuffersExtension_private_method__set_fsr_sharpness>`\ (\ fsr_sharpness\: :ref:`float<class_float>`\ ) |virtual|                                       |
+   +--------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void| | :ref:`_set_texture_mipmap_bias<class_RenderSceneBuffersExtension_private_method__set_texture_mipmap_bias>`\ (\ texture_mipmap_bias\: :ref:`float<class_float>`\ ) |virtual|                     |
+   +--------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void| | :ref:`_set_use_debanding<class_RenderSceneBuffersExtension_private_method__set_use_debanding>`\ (\ use_debanding\: :ref:`bool<class_bool>`\ ) |virtual|                                         |
+   +--------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 .. rst-class:: classref-section-separator
 
@@ -60,6 +62,18 @@ Implement this in GDExtension to handle the (re)sizing of a viewport.
 
 ----
 
+.. _class_RenderSceneBuffersExtension_private_method__set_anisotropic_filtering_level:
+
+.. rst-class:: classref-method
+
+|void| **_set_anisotropic_filtering_level**\ (\ anisotropic_filtering_level\: :ref:`int<class_int>`\ ) |virtual| :ref:`🔗<class_RenderSceneBuffersExtension_private_method__set_anisotropic_filtering_level>`
+
+Implement this in GDExtension to change the anisotropic filtering level.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_RenderSceneBuffersExtension_private_method__set_fsr_sharpness:
 
 .. rst-class:: classref-method

+ 18 - 0
classes/class_richtextlabel.rst

@@ -141,6 +141,8 @@ Methods
    +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`float<class_float>`           | :ref:`get_line_offset<class_RichTextLabel_method_get_line_offset>`\ (\ line\: :ref:`int<class_int>`\ )                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
    +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`Vector2i<class_Vector2i>`     | :ref:`get_line_range<class_RichTextLabel_method_get_line_range>`\ (\ line\: :ref:`int<class_int>`\ )                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
+   +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`PopupMenu<class_PopupMenu>`   | :ref:`get_menu<class_RichTextLabel_method_get_menu>`\ (\ ) |const|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
    +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`int<class_int>`               | :ref:`get_paragraph_count<class_RichTextLabel_method_get_paragraph_count>`\ (\ ) |const|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
@@ -1249,6 +1251,22 @@ Returns the vertical offset of the line found at the provided index.
 
 ----
 
+.. _class_RichTextLabel_method_get_line_range:
+
+.. rst-class:: classref-method
+
+:ref:`Vector2i<class_Vector2i>` **get_line_range**\ (\ line\: :ref:`int<class_int>`\ ) :ref:`🔗<class_RichTextLabel_method_get_line_range>`
+
+Returns the indexes of the first and last visible characters for the given ``line``, as a :ref:`Vector2i<class_Vector2i>`.
+
+\ **Note:** If :ref:`visible_characters_behavior<class_RichTextLabel_property_visible_characters_behavior>` is set to :ref:`TextServer.VC_CHARS_BEFORE_SHAPING<class_TextServer_constant_VC_CHARS_BEFORE_SHAPING>` only visible wrapped lines are counted.
+
+\ **Note:** If :ref:`threaded<class_RichTextLabel_property_threaded>` is enabled, this method returns a value for the loaded part of the document. Use :ref:`is_finished<class_RichTextLabel_method_is_finished>` or :ref:`finished<class_RichTextLabel_signal_finished>` to determine whether document is fully loaded.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_RichTextLabel_method_get_menu:
 
 .. rst-class:: classref-method

+ 16 - 0
classes/class_scriptextension.rst

@@ -35,6 +35,8 @@ Methods
    +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`Dictionary<class_Dictionary>`                              | :ref:`_get_constants<class_ScriptExtension_private_method__get_constants>`\ (\ ) |virtual| |const|                                                                                     |
    +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`StringName<class_StringName>`                              | :ref:`_get_doc_class_name<class_ScriptExtension_private_method__get_doc_class_name>`\ (\ ) |virtual| |const|                                                                           |
+   +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`Array<class_Array>`\[:ref:`Dictionary<class_Dictionary>`\] | :ref:`_get_documentation<class_ScriptExtension_private_method__get_documentation>`\ (\ ) |virtual| |const|                                                                             |
    +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`StringName<class_StringName>`                              | :ref:`_get_global_name<class_ScriptExtension_private_method__get_global_name>`\ (\ ) |virtual| |const|                                                                                 |
@@ -177,6 +179,20 @@ Method Descriptions
 
 ----
 
+.. _class_ScriptExtension_private_method__get_doc_class_name:
+
+.. rst-class:: classref-method
+
+:ref:`StringName<class_StringName>` **_get_doc_class_name**\ (\ ) |virtual| |const| :ref:`🔗<class_ScriptExtension_private_method__get_doc_class_name>`
+
+.. container:: contribute
+
+	There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`!
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_ScriptExtension_private_method__get_documentation:
 
 .. rst-class:: classref-method

+ 25 - 3
classes/class_scriptlanguageextension.rst

@@ -251,17 +251,39 @@ enum **LookupResultType**: :ref:`🔗<enum_ScriptLanguageExtension_LookupResultT
 
 :ref:`LookupResultType<enum_ScriptLanguageExtension_LookupResultType>` **LOOKUP_RESULT_CLASS_TBD_GLOBALSCOPE** = ``7``
 
+**Deprecated:** This constant may be changed or removed in future versions.
+
+
+
+.. _class_ScriptLanguageExtension_constant_LOOKUP_RESULT_CLASS_ANNOTATION:
+
+.. rst-class:: classref-enumeration-constant
+
+:ref:`LookupResultType<enum_ScriptLanguageExtension_LookupResultType>` **LOOKUP_RESULT_CLASS_ANNOTATION** = ``8``
+
 .. container:: contribute
 
 	There is currently no description for this enum. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`!
 
 
 
-.. _class_ScriptLanguageExtension_constant_LOOKUP_RESULT_CLASS_ANNOTATION:
+.. _class_ScriptLanguageExtension_constant_LOOKUP_RESULT_LOCAL_CONSTANT:
 
 .. rst-class:: classref-enumeration-constant
 
-:ref:`LookupResultType<enum_ScriptLanguageExtension_LookupResultType>` **LOOKUP_RESULT_CLASS_ANNOTATION** = ``8``
+:ref:`LookupResultType<enum_ScriptLanguageExtension_LookupResultType>` **LOOKUP_RESULT_LOCAL_CONSTANT** = ``9``
+
+.. container:: contribute
+
+	There is currently no description for this enum. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`!
+
+
+
+.. _class_ScriptLanguageExtension_constant_LOOKUP_RESULT_LOCAL_VARIABLE:
+
+.. rst-class:: classref-enumeration-constant
+
+:ref:`LookupResultType<enum_ScriptLanguageExtension_LookupResultType>` **LOOKUP_RESULT_LOCAL_VARIABLE** = ``10``
 
 .. container:: contribute
 
@@ -273,7 +295,7 @@ enum **LookupResultType**: :ref:`🔗<enum_ScriptLanguageExtension_LookupResultT
 
 .. rst-class:: classref-enumeration-constant
 
-:ref:`LookupResultType<enum_ScriptLanguageExtension_LookupResultType>` **LOOKUP_RESULT_MAX** = ``9``
+:ref:`LookupResultType<enum_ScriptLanguageExtension_LookupResultType>` **LOOKUP_RESULT_MAX** = ``11``
 
 .. container:: contribute
 

+ 2 - 0
classes/class_spotlight3d.rst

@@ -44,6 +44,8 @@ Properties
 .. table::
    :widths: auto
 
+   +---------------------------+----------------------------------------------------------------------------------+-------------------------------------------------------------------------------+
+   | :ref:`float<class_float>` | light_specular                                                                   | ``0.5`` (overrides :ref:`Light3D<class_Light3D_property_light_specular>`)     |
    +---------------------------+----------------------------------------------------------------------------------+-------------------------------------------------------------------------------+
    | :ref:`float<class_float>` | shadow_bias                                                                      | ``0.03`` (overrides :ref:`Light3D<class_Light3D_property_shadow_bias>`)       |
    +---------------------------+----------------------------------------------------------------------------------+-------------------------------------------------------------------------------+

+ 1 - 1
classes/class_texture2d.rst

@@ -240,7 +240,7 @@ Returns an :ref:`Image<class_Image>` that is a copy of data from this **Texture2
 
 \ **Note:** This will return ``null`` if this **Texture2D** is invalid.
 
-\ **Note:** This will fetch the texture data from the GPU, which might cause performance problems when overused.
+\ **Note:** This will fetch the texture data from the GPU, which might cause performance problems when overused. Avoid calling :ref:`get_image<class_Texture2D_method_get_image>` every frame, especially on large textures.
 
 .. rst-class:: classref-item-separator
 

+ 32 - 13
classes/class_timer.rst

@@ -49,19 +49,21 @@ Properties
 .. table::
    :widths: auto
 
-   +--------------------------------------------------------------+----------------------------------------------------------------+-----------+
-   | :ref:`bool<class_bool>`                                      | :ref:`autostart<class_Timer_property_autostart>`               | ``false`` |
-   +--------------------------------------------------------------+----------------------------------------------------------------+-----------+
-   | :ref:`bool<class_bool>`                                      | :ref:`one_shot<class_Timer_property_one_shot>`                 | ``false`` |
-   +--------------------------------------------------------------+----------------------------------------------------------------+-----------+
-   | :ref:`bool<class_bool>`                                      | :ref:`paused<class_Timer_property_paused>`                     |           |
-   +--------------------------------------------------------------+----------------------------------------------------------------+-----------+
-   | :ref:`TimerProcessCallback<enum_Timer_TimerProcessCallback>` | :ref:`process_callback<class_Timer_property_process_callback>` | ``1``     |
-   +--------------------------------------------------------------+----------------------------------------------------------------+-----------+
-   | :ref:`float<class_float>`                                    | :ref:`time_left<class_Timer_property_time_left>`               |           |
-   +--------------------------------------------------------------+----------------------------------------------------------------+-----------+
-   | :ref:`float<class_float>`                                    | :ref:`wait_time<class_Timer_property_wait_time>`               | ``1.0``   |
-   +--------------------------------------------------------------+----------------------------------------------------------------+-----------+
+   +--------------------------------------------------------------+------------------------------------------------------------------+-----------+
+   | :ref:`bool<class_bool>`                                      | :ref:`autostart<class_Timer_property_autostart>`                 | ``false`` |
+   +--------------------------------------------------------------+------------------------------------------------------------------+-----------+
+   | :ref:`bool<class_bool>`                                      | :ref:`ignore_time_scale<class_Timer_property_ignore_time_scale>` | ``false`` |
+   +--------------------------------------------------------------+------------------------------------------------------------------+-----------+
+   | :ref:`bool<class_bool>`                                      | :ref:`one_shot<class_Timer_property_one_shot>`                   | ``false`` |
+   +--------------------------------------------------------------+------------------------------------------------------------------+-----------+
+   | :ref:`bool<class_bool>`                                      | :ref:`paused<class_Timer_property_paused>`                       |           |
+   +--------------------------------------------------------------+------------------------------------------------------------------+-----------+
+   | :ref:`TimerProcessCallback<enum_Timer_TimerProcessCallback>` | :ref:`process_callback<class_Timer_property_process_callback>`   | ``1``     |
+   +--------------------------------------------------------------+------------------------------------------------------------------+-----------+
+   | :ref:`float<class_float>`                                    | :ref:`time_left<class_Timer_property_time_left>`                 |           |
+   +--------------------------------------------------------------+------------------------------------------------------------------+-----------+
+   | :ref:`float<class_float>`                                    | :ref:`wait_time<class_Timer_property_wait_time>`                 | ``1.0``   |
+   +--------------------------------------------------------------+------------------------------------------------------------------+-----------+
 
 .. rst-class:: classref-reftable-group
 
@@ -157,6 +159,23 @@ If ``true``, the timer will start immediately when it enters the scene tree.
 
 ----
 
+.. _class_Timer_property_ignore_time_scale:
+
+.. rst-class:: classref-property
+
+:ref:`bool<class_bool>` **ignore_time_scale** = ``false`` :ref:`🔗<class_Timer_property_ignore_time_scale>`
+
+.. rst-class:: classref-property-setget
+
+- |void| **set_ignore_time_scale**\ (\ value\: :ref:`bool<class_bool>`\ )
+- :ref:`bool<class_bool>` **get_ignore_time_scale**\ (\ )
+
+If ``true``, the timer will ignore :ref:`Engine.time_scale<class_Engine_property_time_scale>` and update with the real, elapsed time.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_Timer_property_one_shot:
 
 .. rst-class:: classref-property

+ 14 - 0
classes/class_treeitem.rst

@@ -58,6 +58,8 @@ Methods
    +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                                            | :ref:`call_recursive<class_TreeItem_method_call_recursive>`\ (\ method\: :ref:`StringName<class_StringName>`, ...\ ) |vararg|                                                                                                                                       |
    +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                            | :ref:`clear_buttons<class_TreeItem_method_clear_buttons>`\ (\ )                                                                                                                                                                                                     |
+   +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                                            | :ref:`clear_custom_bg_color<class_TreeItem_method_clear_custom_bg_color>`\ (\ column\: :ref:`int<class_int>`\ )                                                                                                                                                     |
    +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                                            | :ref:`clear_custom_color<class_TreeItem_method_clear_custom_color>`\ (\ column\: :ref:`int<class_int>`\ )                                                                                                                                                           |
@@ -446,6 +448,18 @@ Calls the ``method`` on the actual TreeItem and its children recursively. Pass p
 
 ----
 
+.. _class_TreeItem_method_clear_buttons:
+
+.. rst-class:: classref-method
+
+|void| **clear_buttons**\ (\ ) :ref:`🔗<class_TreeItem_method_clear_buttons>`
+
+Removes all buttons from all columns of this item.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_TreeItem_method_clear_custom_bg_color:
 
 .. rst-class:: classref-method

+ 84 - 1
classes/class_viewport.rst

@@ -60,6 +60,8 @@ Properties
 .. table::
    :widths: auto
 
+   +-----------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------+
+   | :ref:`AnisotropicFiltering<enum_Viewport_AnisotropicFiltering>`                               | :ref:`anisotropic_filtering_level<class_Viewport_property_anisotropic_filtering_level>`               | ``2``                                                                         |
    +-----------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------+
    | :ref:`bool<class_bool>`                                                                       | :ref:`audio_listener_enable_2d<class_Viewport_property_audio_listener_enable_2d>`                     | ``false``                                                                     |
    +-----------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------+
@@ -438,6 +440,64 @@ Represents the size of the :ref:`MSAA<enum_Viewport_MSAA>` enum.
 
 ----
 
+.. _enum_Viewport_AnisotropicFiltering:
+
+.. rst-class:: classref-enumeration
+
+enum **AnisotropicFiltering**: :ref:`🔗<enum_Viewport_AnisotropicFiltering>`
+
+.. _class_Viewport_constant_ANISOTROPY_DISABLED:
+
+.. rst-class:: classref-enumeration-constant
+
+:ref:`AnisotropicFiltering<enum_Viewport_AnisotropicFiltering>` **ANISOTROPY_DISABLED** = ``0``
+
+Anisotropic filtering is disabled.
+
+.. _class_Viewport_constant_ANISOTROPY_2X:
+
+.. rst-class:: classref-enumeration-constant
+
+:ref:`AnisotropicFiltering<enum_Viewport_AnisotropicFiltering>` **ANISOTROPY_2X** = ``1``
+
+Use 2× anisotropic filtering.
+
+.. _class_Viewport_constant_ANISOTROPY_4X:
+
+.. rst-class:: classref-enumeration-constant
+
+:ref:`AnisotropicFiltering<enum_Viewport_AnisotropicFiltering>` **ANISOTROPY_4X** = ``2``
+
+Use 4× anisotropic filtering. This is the default value.
+
+.. _class_Viewport_constant_ANISOTROPY_8X:
+
+.. rst-class:: classref-enumeration-constant
+
+:ref:`AnisotropicFiltering<enum_Viewport_AnisotropicFiltering>` **ANISOTROPY_8X** = ``3``
+
+Use 8× anisotropic filtering.
+
+.. _class_Viewport_constant_ANISOTROPY_16X:
+
+.. rst-class:: classref-enumeration-constant
+
+:ref:`AnisotropicFiltering<enum_Viewport_AnisotropicFiltering>` **ANISOTROPY_16X** = ``4``
+
+Use 16× anisotropic filtering.
+
+.. _class_Viewport_constant_ANISOTROPY_MAX:
+
+.. rst-class:: classref-enumeration-constant
+
+:ref:`AnisotropicFiltering<enum_Viewport_AnisotropicFiltering>` **ANISOTROPY_MAX** = ``5``
+
+Represents the size of the :ref:`AnisotropicFiltering<enum_Viewport_AnisotropicFiltering>` enum.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _enum_Viewport_ScreenSpaceAA:
 
 .. rst-class:: classref-enumeration
@@ -1065,6 +1125,29 @@ Represents the size of the :ref:`VRSUpdateMode<enum_Viewport_VRSUpdateMode>` enu
 Property Descriptions
 ---------------------
 
+.. _class_Viewport_property_anisotropic_filtering_level:
+
+.. rst-class:: classref-property
+
+:ref:`AnisotropicFiltering<enum_Viewport_AnisotropicFiltering>` **anisotropic_filtering_level** = ``2`` :ref:`🔗<class_Viewport_property_anisotropic_filtering_level>`
+
+.. rst-class:: classref-property-setget
+
+- |void| **set_anisotropic_filtering_level**\ (\ value\: :ref:`AnisotropicFiltering<enum_Viewport_AnisotropicFiltering>`\ )
+- :ref:`AnisotropicFiltering<enum_Viewport_AnisotropicFiltering>` **get_anisotropic_filtering_level**\ (\ )
+
+Sets the maximum number of samples to take when using anisotropic filtering on textures (as a power of two). A higher sample count will result in sharper textures at oblique angles, but is more expensive to compute. A value of ``0`` forcibly disables anisotropic filtering, even on materials where it is enabled.
+
+The anisotropic filtering level also affects decals and light projectors if they are configured to use anisotropic filtering. See :ref:`ProjectSettings.rendering/textures/decals/filter<class_ProjectSettings_property_rendering/textures/decals/filter>` and :ref:`ProjectSettings.rendering/textures/light_projectors/filter<class_ProjectSettings_property_rendering/textures/light_projectors/filter>`.
+
+\ **Note:** In 3D, for this setting to have an effect, set :ref:`BaseMaterial3D.texture_filter<class_BaseMaterial3D_property_texture_filter>` to :ref:`BaseMaterial3D.TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC<class_BaseMaterial3D_constant_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC>` or :ref:`BaseMaterial3D.TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC<class_BaseMaterial3D_constant_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC>` on materials.
+
+\ **Note:** In 2D, for this setting to have an effect, set :ref:`CanvasItem.texture_filter<class_CanvasItem_property_texture_filter>` to :ref:`CanvasItem.TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC<class_CanvasItem_constant_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC>` or :ref:`CanvasItem.TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC<class_CanvasItem_constant_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC>` on the :ref:`CanvasItem<class_CanvasItem>` node displaying the texture (or in :ref:`CanvasTexture<class_CanvasTexture>`). However, anisotropic filtering is rarely useful in 2D, so only enable it for textures in 2D if it makes a meaningful visual difference.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_Viewport_property_audio_listener_enable_2d:
 
 .. rst-class:: classref-property
@@ -2089,7 +2172,7 @@ Returns the transform from the Viewport's coordinates to the screen coordinates
 
 Returns the automatically computed 2D stretch transform, taking the **Viewport**'s stretch settings into account. The final value is multiplied by :ref:`Window.content_scale_factor<class_Window_property_content_scale_factor>`, but only for the root viewport. If this method is called on a :ref:`SubViewport<class_SubViewport>` (e.g., in a scene tree with :ref:`SubViewportContainer<class_SubViewportContainer>` and :ref:`SubViewport<class_SubViewport>`), the scale factor of the root window will not be applied. Using :ref:`Transform2D.get_scale<class_Transform2D_method_get_scale>` on the returned value, this can be used to compensate for scaling when zooming a :ref:`Camera2D<class_Camera2D>` node, or to scale down a :ref:`TextureRect<class_TextureRect>` to be pixel-perfect regardless of the automatically computed scale factor.
 
-\ **Note:** Due to how pixel scaling works, the transform's X scale value may differ slightly from the Y scale, even when :ref:`Window.content_scale_aspect<class_Window_property_content_scale_aspect>` is set to a mode that preserves pixel aspect ratio. If :ref:`Window.content_scale_aspect<class_Window_property_content_scale_aspect>` is :ref:`Window.CONTENT_SCALE_ASPECT_IGNORE<class_Window_constant_CONTENT_SCALE_ASPECT_IGNORE>`, the X value may differ *significantly* from Y due to differences between the original aspect ratio and the window aspect ratio.
+\ **Note:** Due to how pixel scaling works, the returned transform's X and Y scale may differ slightly, even when :ref:`Window.content_scale_aspect<class_Window_property_content_scale_aspect>` is set to a mode that preserves the pixels' aspect ratio. If :ref:`Window.content_scale_aspect<class_Window_property_content_scale_aspect>` is :ref:`Window.CONTENT_SCALE_ASPECT_IGNORE<class_Window_constant_CONTENT_SCALE_ASPECT_IGNORE>`, the X and Y scale may differ *significantly*.
 
 .. rst-class:: classref-item-separator
 

+ 3 - 1
classes/class_viewporttexture.rst

@@ -27,13 +27,15 @@ To get a **ViewportTexture** in code, use the :ref:`Viewport.get_texture<class_V
 
 \ **Note:** Instantiating scenes containing a high-resolution **ViewportTexture** may cause noticeable stutter.
 
-\ **Note:** When using a :ref:`Viewport<class_Viewport>` with :ref:`Viewport.use_hdr_2d<class_Viewport_property_use_hdr_2d>` set to ``true`` the returned texture will be an HDR image encoded in linear space. This may look darker than normal when displayed directly on screen. To convert to gamma space, you can do the following:
+\ **Note:** When using a :ref:`Viewport<class_Viewport>` with :ref:`Viewport.use_hdr_2d<class_Viewport_property_use_hdr_2d>` set to ``true``, the returned texture will be an HDR image encoded in linear space. This may look darker than normal when displayed directly on screen. To convert to gamma space, you can do the following:
 
 ::
 
     img.convert(Image.FORMAT_RGBA8)
     imb.linear_to_srgb()
 
+\ **Note:** Some nodes such as :ref:`Decal<class_Decal>`, :ref:`Light3D<class_Light3D>`, and :ref:`PointLight2D<class_PointLight2D>` do not support using **ViewportTexture** directly. To use texture data from a **ViewportTexture** in these nodes, you need to create an :ref:`ImageTexture<class_ImageTexture>` by calling :ref:`Texture2D.get_image<class_Texture2D_method_get_image>` on the **ViewportTexture** and passing the result to :ref:`ImageTexture.create_from_image<class_ImageTexture_method_create_from_image>`. This conversion is a slow operation, so it should not be performed every frame.
+
 .. rst-class:: classref-introduction-group
 
 Tutorials

+ 12 - 0
classes/class_window.rst

@@ -436,6 +436,18 @@ Emitted when the :ref:`NOTIFICATION_THEME_CHANGED<class_Window_constant_NOTIFICA
 
 ----
 
+.. _class_Window_signal_title_changed:
+
+.. rst-class:: classref-signal
+
+**title_changed**\ (\ ) :ref:`🔗<class_Window_signal_title_changed>`
+
+Emitted when window title bar text is changed.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_Window_signal_titlebar_changed:
 
 .. rst-class:: classref-signal

+ 2 - 2
classes/class_xrinterface.rst

@@ -621,9 +621,9 @@ Sets the active environment blend mode.
 ::
 
     func _ready():
-        var xr_interface: XRInterface = XRServer.find_interface("OpenXR")
+        var xr_interface = XRServer.find_interface("OpenXR")
         if xr_interface and xr_interface.is_initialized():
-            var vp: Viewport = get_viewport()
+            var vp = get_viewport()
             vp.use_xr = true
             var acceptable_modes = [XRInterface.XR_ENV_BLEND_MODE_OPAQUE, XRInterface.XR_ENV_BLEND_MODE_ADDITIVE]
             var modes = xr_interface.get_supported_environment_blend_modes()

+ 28 - 7
classes/class_xrserver.rst

@@ -36,13 +36,15 @@ Properties
 .. table::
    :widths: auto
 
-   +---------------------------------------+---------------------------------------------------------------------+-----------------------------------------------------+
-   | :ref:`XRInterface<class_XRInterface>` | :ref:`primary_interface<class_XRServer_property_primary_interface>` |                                                     |
-   +---------------------------------------+---------------------------------------------------------------------+-----------------------------------------------------+
-   | :ref:`Transform3D<class_Transform3D>` | :ref:`world_origin<class_XRServer_property_world_origin>`           | ``Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)`` |
-   +---------------------------------------+---------------------------------------------------------------------+-----------------------------------------------------+
-   | :ref:`float<class_float>`             | :ref:`world_scale<class_XRServer_property_world_scale>`             | ``1.0``                                             |
-   +---------------------------------------+---------------------------------------------------------------------+-----------------------------------------------------+
+   +---------------------------------------+---------------------------------------------------------------------------------+-----------------------------------------------------+
+   | :ref:`bool<class_bool>`               | :ref:`camera_locked_to_origin<class_XRServer_property_camera_locked_to_origin>` | ``false``                                           |
+   +---------------------------------------+---------------------------------------------------------------------------------+-----------------------------------------------------+
+   | :ref:`XRInterface<class_XRInterface>` | :ref:`primary_interface<class_XRServer_property_primary_interface>`             |                                                     |
+   +---------------------------------------+---------------------------------------------------------------------------------+-----------------------------------------------------+
+   | :ref:`Transform3D<class_Transform3D>` | :ref:`world_origin<class_XRServer_property_world_origin>`                       | ``Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)`` |
+   +---------------------------------------+---------------------------------------------------------------------------------+-----------------------------------------------------+
+   | :ref:`float<class_float>`             | :ref:`world_scale<class_XRServer_property_world_scale>`                         | ``1.0``                                             |
+   +---------------------------------------+---------------------------------------------------------------------------------+-----------------------------------------------------+
 
 .. rst-class:: classref-reftable-group
 
@@ -297,6 +299,25 @@ Does not reset the orientation of the HMD, only the position of the player gets
 Property Descriptions
 ---------------------
 
+.. _class_XRServer_property_camera_locked_to_origin:
+
+.. rst-class:: classref-property
+
+:ref:`bool<class_bool>` **camera_locked_to_origin** = ``false`` :ref:`🔗<class_XRServer_property_camera_locked_to_origin>`
+
+.. rst-class:: classref-property-setget
+
+- |void| **set_camera_locked_to_origin**\ (\ value\: :ref:`bool<class_bool>`\ )
+- :ref:`bool<class_bool>` **is_camera_locked_to_origin**\ (\ )
+
+If set to ``true``, the scene will be rendered as if the camera is locked to the :ref:`XROrigin3D<class_XROrigin3D>`.
+
+\ **Note:** This doesn't provide a very comfortable experience for users. This setting exists for doing benchmarking or automated testing, where you want to control what is rendered via code.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_XRServer_property_primary_interface:
 
 .. rst-class:: classref-property

+ 1 - 0
classes/index.rst

@@ -124,6 +124,7 @@ Nodes
     class_graphnode
     class_gridcontainer
     class_gridmap
+    class_gridmapeditorplugin
     class_groovejoint2d
     class_hboxcontainer
     class_hflowcontainer