diff --git a/img/control_gallery.webp b/img/control_gallery.webp new file mode 100644 index 000000000..836744f54 Binary files /dev/null and b/img/control_gallery.webp differ diff --git a/tutorials/3d/3d_antialiasing.rst b/tutorials/3d/3d_antialiasing.rst index 4850bea13..0ccc2d0e9 100644 --- a/tutorials/3d/3d_antialiasing.rst +++ b/tutorials/3d/3d_antialiasing.rst @@ -33,6 +33,11 @@ and thin lines on top of the box have almost disappeared: To combat this, various antialiasing techniques can be used in Godot. These are detailed below. +.. seealso:: + + You can compare antialiasing algorithms in action using the + `3D Antialiasing demo project `__. + Multisample antialiasing (MSAA) ------------------------------- diff --git a/tutorials/3d/3d_text.rst b/tutorials/3d/3d_text.rst index b36a9de0e..ccb2c6d28 100644 --- a/tutorials/3d/3d_text.rst +++ b/tutorials/3d/3d_text.rst @@ -16,6 +16,9 @@ Additionally, Godot makes it possible to position Control nodes according to a .. seealso:: + You can see 3D text in action using the + `3D Labels and Texts demo project `__. + This page does **not** cover how to display a GUI scene within a 3D environment. For information on how to achieve that, see the `GUI in 3D `__ diff --git a/tutorials/3d/csg_tools.rst b/tutorials/3d/csg_tools.rst index 36263e388..745ad3d54 100644 --- a/tutorials/3d/csg_tools.rst +++ b/tutorials/3d/csg_tools.rst @@ -25,6 +25,11 @@ Interior environments can be created by using inverted primitives. .. image:: img/csg.gif +.. seealso:: + + You can check how to use CSG nodes to build various shapes (such as stairs or roads) using the + `Constructive Solid Geometry demo project `__. + Introduction to CSG nodes ------------------------- diff --git a/tutorials/3d/global_illumination/introduction_to_global_illumination.rst b/tutorials/3d/global_illumination/introduction_to_global_illumination.rst index 8d7783931..3c2d8abcf 100644 --- a/tutorials/3d/global_illumination/introduction_to_global_illumination.rst +++ b/tutorials/3d/global_illumination/introduction_to_global_illumination.rst @@ -340,6 +340,11 @@ If you are unsure about which GI technique to use: :ref:`ReflectionProbes ` are the only supported options. See also :ref:`doc_introduction_to_global_illumination_alternatives`. +.. seealso:: + + You can compare global illumination techniques in action using the + `Global Illumination demo project `__. + .. _doc_introduction_to_global_illumination_gi_mode_recommendations: Which global illumination mode should I use on meshes and lights? diff --git a/tutorials/3d/lights_and_shadows.rst b/tutorials/3d/lights_and_shadows.rst index d1f81f970..598c7d7ce 100644 --- a/tutorials/3d/lights_and_shadows.rst +++ b/tutorials/3d/lights_and_shadows.rst @@ -20,6 +20,11 @@ result. Light can come from several types of sources in a scene: The emission color is a material property. You can read more about it in the :ref:`doc_standard_material_3d` tutorial. +.. seealso:: + + You can compare various types of lights in action using the + `3D Lights and Shadows demo project `__. + Light nodes ----------- diff --git a/tutorials/3d/mesh_lod.rst b/tutorials/3d/mesh_lod.rst index b123878ff..d073dbffd 100644 --- a/tutorials/3d/mesh_lod.rst +++ b/tutorials/3d/mesh_lod.rst @@ -13,6 +13,11 @@ On this page, you'll learn: - How to measure mesh LOD's effectiveness in your project (and alternatives you can explore if it doesn't meet your expectations). +.. seealso:: + + You can see how mesh LOD works in action using the + `Occlusion Culling and Mesh LOD demo project `__. + Introduction ------------ diff --git a/tutorials/3d/occlusion_culling.rst b/tutorials/3d/occlusion_culling.rst index 62074a552..7e0e0f0e5 100644 --- a/tutorials/3d/occlusion_culling.rst +++ b/tutorials/3d/occlusion_culling.rst @@ -12,6 +12,11 @@ On this page, you'll learn: - How to set up occlusion culling in Godot. - Troubleshooting common issues with occlusion culling. +.. seealso:: + + You can see how occlusion culling works in action using the + `Occlusion Culling and Mesh LOD demo project `__. + Why use occlusion culling ------------------------- diff --git a/tutorials/3d/resolution_scaling.rst b/tutorials/3d/resolution_scaling.rst index 53c92c67b..2772870d6 100644 --- a/tutorials/3d/resolution_scaling.rst +++ b/tutorials/3d/resolution_scaling.rst @@ -20,6 +20,11 @@ scaling is not intended to be a replacement for decreasing graphics settings on lower-end hardware. Consider exposing both resolution scale and graphics settings in your in-game menus. +.. seealso:: + + You can compare resolution scaling modes and factors in action using the + `3D Antialiasing demo project `__. + .. note:: Resolution scaling is currently not available for 2D rendering, but it can be diff --git a/tutorials/3d/volumetric_fog.rst b/tutorials/3d/volumetric_fog.rst index ec0e20b88..a96093f14 100644 --- a/tutorials/3d/volumetric_fog.rst +++ b/tutorials/3d/volumetric_fog.rst @@ -22,8 +22,8 @@ On this page, you'll learn: .. seealso:: - The Godot demo projects repository contains a - `volumetric fog demo `__. + You can see how volumetric fog works in action using the + `Volumetric Fog demo project `__. Here is a comparison between traditional fog (which does not interact with lighting) and volumetric fog, which is able to interact with lighting: diff --git a/tutorials/i18n/internationalizing_games.rst b/tutorials/i18n/internationalizing_games.rst index 89b0cf6cd..8294e34b1 100644 --- a/tutorials/i18n/internationalizing_games.rst +++ b/tutorials/i18n/internationalizing_games.rst @@ -226,7 +226,7 @@ For RTL languages, Godot will automatically do the following changes to the UI: - Swaps left and right text alignment. - Mirrors horizontal order of the child controls in the containers, and items in Tree/ItemList controls. - Uses mirrored order of the internal control elements (e.g. OptionButton dropdown button, checkbox alignment, List column order, Tree item icons and connecting line alignment, e.t.c.), in some cases mirrored controls use separate theme styles. -- Coordinate system is not mirrored, and non-UI nodes (sprites, e.t.c) are not affected.x +- Coordinate system is not mirrored, and non-UI nodes (sprites, e.t.c) are not affected. It is possible to override text and control layout direction by using the following control properties: @@ -237,6 +237,11 @@ It is possible to override text and control layout direction by using the follow .. image:: img/ui_mirror.png +.. seealso:: + + You can see how right-to-left typesetting works in action using the + `BiDI and Font Features demo project `__. + Adding break iterator data to exported project ---------------------------------------------- diff --git a/tutorials/i18n/pseudolocalization.rst b/tutorials/i18n/pseudolocalization.rst index e7ac25e50..a9ef607e4 100644 --- a/tutorials/i18n/pseudolocalization.rst +++ b/tutorials/i18n/pseudolocalization.rst @@ -15,9 +15,10 @@ when it comes to locale changes. Pseudolocalization simulates changes that might take place during localization. This way, any issues regarding internationalization can be recognized early on during development. -.. note:: The official demo for pseudolocalization can be used to play around with - the various properties and observe their effects. You can - `download it from the godot-demo-projects GitHub repository `_. +.. seealso:: + + You can see how pseudolocalization works in action using the + `Pseudolocalizaton demo project `__. Enabling and configuring pseudolocalization ------------------------------------------- @@ -34,8 +35,8 @@ Pseudolocalization can also be :ref:`toggled at runtime from a script ` property in TranslationServer. -However, if runtime configuration of pseudolocalization properties is required, +However, if runtime configuration of pseudolocalization properties is required, they can be directly configured using :ref:`ProjectSettings.set_setting(property, value) ` and then calling :ref:`TranslationServer.reload_pseudolocalization() ` -which reparses the pseudolocalization properties and reloads the pseudolocalization. +which reparses the pseudolocalization properties and reloads the pseudolocalization. The following code snippet shall turn on ``replace_with_accents`` and ``double_vowels`` properties and then call ``reload_pseudolocalization()`` for the changes to get reflected:: diff --git a/tutorials/io/saving_games.rst b/tutorials/io/saving_games.rst index abc28fb91..383021ed3 100644 --- a/tutorials/io/saving_games.rst +++ b/tutorials/io/saving_games.rst @@ -17,6 +17,11 @@ scale as the game grows more complex. If you're looking to save user configuration, you can use the :ref:`class_ConfigFile` class for this purpose. +.. seealso:: + + You can see how saving and loading works in action using the + `Saving and Loading (Serialization) demo project `__. + Identify persistent objects --------------------------- diff --git a/tutorials/navigation/navigation_introduction_2d.rst b/tutorials/navigation/navigation_introduction_2d.rst index 3a4f570de..7d219a2e8 100644 --- a/tutorials/navigation/navigation_introduction_2d.rst +++ b/tutorials/navigation/navigation_introduction_2d.rst @@ -61,6 +61,13 @@ The 2D navigationm eshes are defined with the following resources: - The NavigationServer2D uses this resource to update navmesh of individual regions. - The TileSet Editor creates and uses this resource internally when defining tile navigation areas. +.. seealso:: + + You can see how 2D navigation works in action using the + `2D Navigation Polygon `__ + and `Grid-based Navigation with AStarGrid2D `__ + demo projects. + Setup for 2D scene ------------------ diff --git a/tutorials/navigation/navigation_introduction_3d.rst b/tutorials/navigation/navigation_introduction_3d.rst index c253780d4..bf7223c0c 100644 --- a/tutorials/navigation/navigation_introduction_3d.rst +++ b/tutorials/navigation/navigation_introduction_3d.rst @@ -1,6 +1,5 @@ .. _doc_navigation_overview_3d: - 3D Navigation Overview ====================== @@ -66,6 +65,11 @@ The 3D navigation meshes are defined with the following resources: - The NavigationServer3D uses this resource to update navmesh of individual regions. - The GridMap Editor uses this resource when specific navigation meshes are defined for each gridcell. +.. seealso:: + + You can see how 3D navigation works in action using the + `3D Navigation demo project `__. + Setup for 3D scene ------------------ diff --git a/tutorials/performance/using_servers.rst b/tutorials/performance/using_servers.rst index 9cb9849a5..95da03774 100644 --- a/tutorials/performance/using_servers.rst +++ b/tutorials/performance/using_servers.rst @@ -25,6 +25,11 @@ back to a more handcrafted, low level implementation of game code. Still, Godot is designed to work around this problem. +.. seealso:: + + You can see how using low-level servers works in action using the + `Bullet Shower demo project `__ + Servers ------- diff --git a/tutorials/shaders/compute_shaders.rst b/tutorials/shaders/compute_shaders.rst index dbe34745d..900711d7f 100644 --- a/tutorials/shaders/compute_shaders.rst +++ b/tutorials/shaders/compute_shaders.rst @@ -17,16 +17,17 @@ A compute shader is a special type of shader program that is orientated towards general purpose programming. In other words, they are more flexible than vertex shaders and fragment shaders as they don't have a fixed purpose (i.e. transforming vertices or writing colors to an image). Unlike fragment shaders -and vertex shaders, compute shaders have very little going on behind the scenes. The code you write is what the GPU runs and very little else. This can make them +and vertex shaders, compute shaders have very little going on behind the scenes. +The code you write is what the GPU runs and very little else. This can make them a very useful tool to offload heavy calculations to the GPU. Now let's get started by creating a short compute shader. First, in the **external** text editor of your choice, create a new file called -``compute_example.glsl`` in your project folder. When you write compute shaders in Godot, you write them -in GLSL directly. The Godot shader language is based on GLSL. If you are -familiar with normal shaders in Godot, the syntax below will look somewhat -familiar. +``compute_example.glsl`` in your project folder. When you write compute shaders +in Godot, you write them in GLSL directly. The Godot shader language is based on +GLSL. If you are familiar with normal shaders in Godot, the syntax below will +look somewhat familiar. .. note:: @@ -35,6 +36,9 @@ familiar. you are using the Forward+ or Mobile renderer. The setting for which is located in the top right-hand corner of the editor. + Note that compute shader support is generally poor on mobile devices (due to + driver bugs), even if they are technically supported. + Let's take a look at this compute shader code: .. code-block:: glsl @@ -345,3 +349,12 @@ the data and print the results to our console. With that, you have everything you need to get started working with compute shaders. + +.. seealso:: + + The demo projects repository contains a + `Compute Shader Heightmap demo `__ + This project performs heightmap image generation on the CPU and + GPU separately, which lets you compare how a similar algorithm can be + implemented in two different ways (with the GPU implementation being faster + in most cases). diff --git a/tutorials/ui/control_node_gallery.rst b/tutorials/ui/control_node_gallery.rst index adb8c6bef..9aa77b4aa 100644 --- a/tutorials/ui/control_node_gallery.rst +++ b/tutorials/ui/control_node_gallery.rst @@ -5,7 +5,7 @@ Control node gallery Here is a list of common Control nodes with their name next to them: -.. image:: /img/control_gallery.png +.. image:: /img/control_gallery.webp The Control Gallery demo pictured above can be found `on GitHub `__. diff --git a/tutorials/ui/gui_using_fonts.rst b/tutorials/ui/gui_using_fonts.rst index 9067de3a3..30cd80bf0 100644 --- a/tutorials/ui/gui_using_fonts.rst +++ b/tutorials/ui/gui_using_fonts.rst @@ -37,6 +37,11 @@ as *ligatures* (several characters transforming into a single different design). Fonts are covered by copyright. Double-check the license of a font before using it, as not all fonts allow commercial use without purchasing a license. +.. seealso:: + + You can see how fonts work in action using the + `BiDI and Font Features demo project `__. + Dynamic fonts -------------