diff --git a/about/release_policy.rst b/about/release_policy.rst index ba6dd3d588b..7309cf8f969 100644 --- a/about/release_policy.rst +++ b/about/release_policy.rst @@ -218,11 +218,11 @@ Maintenance (patch) releases are released as needed with potentially very short development cycles, to provide users of the current stable branch with the latest bug fixes for their production needs. -The 3.6 release is still planned and should be the last stable branch of Godot -3.x. It will be a Long-Term Support (LTS) release, which we plan to support for -as long as users still need it (due to missing features in Godot 4.x, or -having published games which they need to keep updating for platform -requirements). +The 3.6 release is out, and may be the last stable branch of Godot 3.x. It is a +Long-Term Support (LTS) release, which we plan to support for as long as users +still need it (due to missing features in Godot 4.x, or having published games +which they need to keep updating for platform requirements). There is a +development branch for 3.x, which may become 3.7, but it has no ETA. What are the criteria for compatibility across engine versions? --------------------------------------------------------------- diff --git a/contributing/workflow/pr_workflow.rst b/contributing/workflow/pr_workflow.rst index 0f373d3676f..040cdc9031e 100644 --- a/contributing/workflow/pr_workflow.rst +++ b/contributing/workflow/pr_workflow.rst @@ -97,9 +97,6 @@ To clone your fork from GitHub, use the following command: git clone https://github.com/USERNAME/godot -.. note:: In our examples, the "$" character denotes the command line prompt - on typical UNIX shells. It is not part of the command and should - not be typed. After a little while, you should have a ``godot`` directory in your current working directory. Move into it using the ``cd`` command: diff --git a/tutorials/3d/img/spatial_material7.png b/tutorials/3d/img/spatial_material7.png deleted file mode 100644 index 009f9cebbc5..00000000000 Binary files a/tutorials/3d/img/spatial_material7.png and /dev/null differ diff --git a/tutorials/3d/img/spatial_material7.webp b/tutorials/3d/img/spatial_material7.webp new file mode 100644 index 00000000000..ffb8f2c0c33 Binary files /dev/null and b/tutorials/3d/img/spatial_material7.webp differ diff --git a/tutorials/3d/particles/properties.rst b/tutorials/3d/particles/properties.rst index 601aca71f8b..fca3abe9641 100644 --- a/tutorials/3d/particles/properties.rst +++ b/tutorials/3d/particles/properties.rst @@ -98,7 +98,7 @@ property has no effect. :alt: Particles running at low FPS :align: right - Interpolation on (left) vs. off (right) + Interpolation off (left) vs. on (right) The ``Fixed FPS`` property limits how often the particle system is processed. This includes property updates as well as collision and attractors. This can improve performance a lot, diff --git a/tutorials/3d/standard_material_3d.rst b/tutorials/3d/standard_material_3d.rst index 1395e5386cc..456acc963bb 100644 --- a/tutorials/3d/standard_material_3d.rst +++ b/tutorials/3d/standard_material_3d.rst @@ -295,13 +295,10 @@ Specifies how the specular blob will be rendered. The specular blob represents the shape of a light source reflected in the object. * **SchlickGGX:** The most common blob used by PBR 3D engines nowadays. -* **Blinn:** Common in previous-generation engines. - Not worth using nowadays, but left here for the sake of compatibility. -* **Phong:** Same as above. * **Toon:** Creates a toon blob, which changes size depending on roughness. * **Disabled:** Sometimes the blob gets in the way. Begone! -.. image:: img/spatial_material7.png +.. image:: img/spatial_material7.webp Disable Ambient Light ~~~~~~~~~~~~~~~~~~~~~ diff --git a/tutorials/animation/2d_skeletons.rst b/tutorials/animation/2d_skeletons.rst index 396cf327103..d9831b4bfe9 100644 --- a/tutorials/animation/2d_skeletons.rst +++ b/tutorials/animation/2d_skeletons.rst @@ -13,8 +13,7 @@ and most 3D modeling applications support it. For 2D, as this function is not used as often, it's difficult to find mainstream software aimed for this. One option is to create animations in third-party software such as Spine or -Dragonbones. From Godot 3.1 onwards, though, this functionality is supported -built-in. +Dragonbones. This functionality is also supported built-in. Why would you want to do skeletal animations directly in Godot? The answer is that there are many advantages to it: diff --git a/tutorials/animation/animation_tree.rst b/tutorials/animation/animation_tree.rst index 547ee62d435..bd9fb8d00e7 100644 --- a/tutorials/animation/animation_tree.rst +++ b/tutorials/animation/animation_tree.rst @@ -12,9 +12,6 @@ function calling, audio and sub-animation tracks, is pretty much unique. However, the support for blending those animations via ``AnimationPlayer`` is relatively limited, as only a fixed cross-fade transition time can be set. -:ref:`AnimationTree ` is a new node introduced in Godot 3.1 to deal with advanced transitions. -It supersedes the ancient ``AnimationTreePlayer``, while adding a huge amount of features and flexibility. - Creating an AnimationTree ------------------------- diff --git a/tutorials/audio/sync_with_audio.rst b/tutorials/audio/sync_with_audio.rst index 8a789d6576b..9cd090c75d6 100644 --- a/tutorials/audio/sync_with_audio.rst +++ b/tutorials/audio/sync_with_audio.rst @@ -23,7 +23,9 @@ The most common way to reduce latency is to shrink the audio buffers (again, by This is a common tradeoff, so Godot ships with sensible defaults that should not need to be altered. -The problem, in the end, is not this slight delay but synchronizing graphics and audio for games that require it. Beginning with Godot 3.2, some helpers were added to obtain more precise playback timing. +The problem, in the end, is not this slight delay but synchronizing graphics and +audio for games that require it. Some helpers are available to obtain more +precise playback timing. Using the system clock to sync ------------------------------ diff --git a/tutorials/best_practices/scenes_versus_scripts.rst b/tutorials/best_practices/scenes_versus_scripts.rst index f0abd2515b0..713075404c4 100644 --- a/tutorials/best_practices/scenes_versus_scripts.rst +++ b/tutorials/best_practices/scenes_versus_scripts.rst @@ -118,8 +118,6 @@ There are two systems for registering types: - Engine developers must add support for languages manually (both name exposure and runtime accessibility). - - Godot 3.1+ only. - - The Editor scans project folders and registers any exposed names for all scripting languages. Each scripting language must implement its own support for exposing this information. diff --git a/tutorials/editor/using_the_web_editor.rst b/tutorials/editor/using_the_web_editor.rst index 075d9b34aca..bc214a23a94 100644 --- a/tutorials/editor/using_the_web_editor.rst +++ b/tutorials/editor/using_the_web_editor.rst @@ -5,8 +5,8 @@ Using the Web editor ==================== -Since Godot 3.3, there is a `Web editor `__ -you can use to work on new or existing projects. +There is a `Web editor `__ you can use to work +on new or existing projects. .. note:: diff --git a/tutorials/export/exporting_for_windows.rst b/tutorials/export/exporting_for_windows.rst index 33b78934c1c..a3d317ec9dd 100644 --- a/tutorials/export/exporting_for_windows.rst +++ b/tutorials/export/exporting_for_windows.rst @@ -24,7 +24,7 @@ Code signing Godot is capable of automatic code signing on export. To do this you must have the ``Windows SDK`` (on Windows) or `osslsigncode `__ (on any other OS) installed. You will also need a package signing certificate, -information on creating one can be found `here `__. +information on creating one can be found `here `__. .. warning:: diff --git a/tutorials/inputs/controllers_gamepads_joysticks.rst b/tutorials/inputs/controllers_gamepads_joysticks.rst index 37e7124cfcb..74099f0d153 100644 --- a/tutorials/inputs/controllers_gamepads_joysticks.rst +++ b/tutorials/inputs/controllers_gamepads_joysticks.rst @@ -136,10 +136,6 @@ use ``Input.is_action_pressed()``: held, ``Input.is_action_just_pressed()`` will only return ``true`` for one frame after the button has been pressed. -In Godot versions before 3.4, such as 3.3, ``Input.get_vector()`` and -``Input.get_axis()`` aren't available. Only ``Input.get_action_strength()`` -and ``Input.is_action_pressed()`` are available in Godot 3.3. - Vibration --------- diff --git a/tutorials/migrating/upgrading_to_godot_4.rst b/tutorials/migrating/upgrading_to_godot_4.rst index 0382520b748..57f7b99f7dc 100644 --- a/tutorials/migrating/upgrading_to_godot_4.rst +++ b/tutorials/migrating/upgrading_to_godot_4.rst @@ -71,9 +71,10 @@ in future Godot releases: manually change it to GodotPhysics. There are no plans to re-add Bullet physics in core, but a third-party add-on could be created for it thanks to GDExtension. -- Rendering in 2D is no longer performed in HDR, which means "overbright" - modulate values have no visible effect. This is planned to be restored at some - point in the future. +- By default, rendering in 2D is no longer performed in HDR, which means + "overbright" modulate values have no visible effect. Since Godot 4.2, you can + enable the project setting :ref:`HDR 2D` + to perform 2D rendering in HDR. See also :ref:`doc_environment_and_post_processing_using_glow_in_2d`. - While rendering still happens in HDR in 3D when using the Forward Plus or Forward Mobile backends, Viewports cannot return HDR data anymore. This is planned to be restored at some point in the future. diff --git a/tutorials/scripting/gdscript/gdscript_styleguide.rst b/tutorials/scripting/gdscript/gdscript_styleguide.rst index ce2c6787fe9..89c4eb4dc4c 100644 --- a/tutorials/scripting/gdscript/gdscript_styleguide.rst +++ b/tutorials/scripting/gdscript/gdscript_styleguide.rst @@ -744,7 +744,7 @@ We suggest to organize GDScript code this way: 01. @tool 02. class_name 03. extends - 04. # docstring + 04. ## docstring 05. signals 06. enums @@ -917,7 +917,7 @@ in that order. Static typing ------------- -Since Godot 3.1, GDScript supports :ref:`optional static typing`. +GDScript supports :ref:`optional static typing`. Declared types ~~~~~~~~~~~~~~ diff --git a/tutorials/scripting/gdscript/static_typing.rst b/tutorials/scripting/gdscript/static_typing.rst index 1b37c031c86..133178a714f 100644 --- a/tutorials/scripting/gdscript/static_typing.rst +++ b/tutorials/scripting/gdscript/static_typing.rst @@ -384,9 +384,9 @@ Warning system Detailed documentation about the GDScript warning system has been moved to :ref:`doc_gdscript_warning_system`. -From version 3.1, Godot gives you warnings about your code as you write it: -the engine identifies sections of your code that may lead to issues at runtime, -but lets you decide whether or not you want to leave the code as it is. +Godot gives you warnings about your code as you write it. The engine identifies +sections of your code that may lead to issues at runtime, but lets you decide +whether or not you want to leave the code as it is. We have a number of warnings aimed specifically at users of typed GDScript. By default, these warnings are disabled, you can enable them in Project Settings diff --git a/tutorials/shaders/shader_reference/canvas_item_shader.rst b/tutorials/shaders/shader_reference/canvas_item_shader.rst index 8c581916971..ae4ebb0dbbf 100644 --- a/tutorials/shaders/shader_reference/canvas_item_shader.rst +++ b/tutorials/shaders/shader_reference/canvas_item_shader.rst @@ -335,7 +335,8 @@ SDF functions There are a few additional functions implemented to sample an automatically generated Signed Distance Field texture. These functions available for the ``fragment()`` -and ``light()`` functions of CanvasItem shaders. +and ``light()`` functions of CanvasItem shaders. Custom functions may also use them as long +as they called from supported functions. The signed distance field is generated from :ref:`class_LightOccluder2D` nodes present in the scene with the **SDF Collision** property enabled (which is the diff --git a/tutorials/shaders/shader_reference/shader_preprocessor.rst b/tutorials/shaders/shader_reference/shader_preprocessor.rst index 8f713cbfc5a..05f3af1a585 100644 --- a/tutorials/shaders/shader_reference/shader_preprocessor.rst +++ b/tutorials/shaders/shader_reference/shader_preprocessor.rst @@ -355,6 +355,24 @@ Defines the optional block which is included when the previously defined ``#if`` Used as terminator for the ``#if``, ``#ifdef``, ``#ifndef`` or subsequent ``#else`` directives. +#error +^^^^^^ + +**Syntax:** ``#error `` + +The ``#error`` directive forces the preprocessor to emit an error with optional message. +For example, it's useful when used within ``#if`` block to provide a strict limitation of the +defined value. + +.. code-block:: glsl + + #define MAX_LOD 3 + #define LOD 4 + + #if LOD > MAX_LOD + #error LOD exceeds MAX_LOD + #endif + #include ^^^^^^^^ diff --git a/tutorials/shaders/shader_reference/shading_language.rst b/tutorials/shaders/shader_reference/shading_language.rst index ec23f4953fe..793bb06fd1e 100644 --- a/tutorials/shaders/shader_reference/shading_language.rst +++ b/tutorials/shaders/shader_reference/shading_language.rst @@ -163,8 +163,8 @@ Individual scalar members of vector types are accessed via the "x", "y", "z" and equivalent. Use whatever fits best for your needs. For matrices, use the ``m[column][row]`` indexing syntax to access each scalar, -or ``m[idx]`` to access a vector by row index. For example, for accessing the y -position of an object in a mat4 you use ``m[3][1]``. +or ``m[column]`` to access a vector by column index. For example, for accessing the +y-component of the translation from a mat4 transform matrix (4th column, 2nd line) you use ``m[3][1]`` or ``m[3].y``. Constructing ~~~~~~~~~~~~ @@ -182,7 +182,7 @@ Construction of vector types must always pass: vec4 a = vec4(0.0); Construction of matrix types requires vectors of the same dimension as the -matrix. You can also build a diagonal matrix using ``matx(float)`` syntax. +matrix, interpreted as columns. You can also build a diagonal matrix using ``matx(float)`` syntax. Accordingly, ``mat4(1.0)`` is an identity matrix. .. code-block:: glsl @@ -597,8 +597,8 @@ information. Discarding ---------- -Fragment and light functions can use the ``discard`` keyword. If used, the -fragment is discarded and nothing is written. +Fragment, light, and custom functions (called from fragment or light) can use the +``discard`` keyword. If used, the fragment is discarded and nothing is written. Beware that ``discard`` has a performance cost when used, as it will prevent the depth prepass from being effective on any surfaces using the shader. Also, a diff --git a/tutorials/xr/a_better_xr_start_script.rst b/tutorials/xr/a_better_xr_start_script.rst index cc97a695111..5046205e0fa 100644 --- a/tutorials/xr/a_better_xr_start_script.rst +++ b/tutorials/xr/a_better_xr_start_script.rst @@ -20,7 +20,7 @@ Signals for our script We are introducing 3 signals to our script so that our game can add further logic: - ``focus_lost`` is emitted when the player takes off their headset or when the player enters the menu system of the headset. -- ``focus_gained`` is emitted when the player puts their headset back on or exists the menu system and returns to the game. +- ``focus_gained`` is emitted when the player puts their headset back on or exits the menu system and returns to the game. - ``pose_recentered`` is emitted when the headset requests the players position to be reset. Our game should react accordingly to these signals.