Skip to content

Commit

Permalink
Standardize renderer names and terms
Browse files Browse the repository at this point in the history
  • Loading branch information
tetrapod00 committed Nov 8, 2024
1 parent b1861e0 commit 1aaadff
Show file tree
Hide file tree
Showing 21 changed files with 133 additions and 138 deletions.
2 changes: 1 addition & 1 deletion about/faq.rst
Original file line number Diff line number Diff line change
Expand Up @@ -290,7 +290,7 @@ While Vulkan and OpenGL remain our primary focus for their open standard and
cross-platform benefits, Godot 4.3 introduced experimental support for Direct3D 12.
This addition aims to enhance performance and compatibility on platforms where
Direct3D 12 is prevalent, such as Windows and Xbox. However, Vulkan and OpenGL
will continue as the default rendering backends on all platforms, including Windows.
will continue as the default rendering drivers on all platforms, including Windows.

Why does Godot aim to keep its core feature set small?
------------------------------------------------------
Expand Down
39 changes: 20 additions & 19 deletions about/list_of_features.rst
Original file line number Diff line number Diff line change
Expand Up @@ -95,17 +95,18 @@ Editor
Rendering
---------

3 rendering *methods* (running over 2 rendering *drivers*) are available:

- **Forward+**, running over Vulkan 1.0 (with optional Vulkan 1.1 and 1.2
features). The most advanced graphics backend, suited for desktop platforms
only. Used by default on desktop platforms.
- **Forward Mobile**, running over Vulkan 1.0 (with optional Vulkan 1.1 and 1.2
features). Less features, but renders simple scenes faster. Suited for mobile
and desktop platforms. Used by default on mobile platforms.
- **Compatibility**, running over OpenGL 3.3 / OpenGL ES 3.0 / WebGL 2.0. The least
advanced graphics backend, suited for low-end desktop and mobile platforms.
Used by default on the web platform.
Godot 4 includes three renderers:

- **Forward+**. The most advanced renderer, suited for desktop platforms only.
Used by default on desktop platforms. This renderer uses **Vulkan**, **Direct3D 12**,
or **Metal** as the rendering driver, and it uses the **RenderingDevice** backend.
- **Mobile**. Fewer features, but renders simple scenes faster. Suited for mobile
and desktop platforms. Used by default on mobile platforms. This renderer uses
**Vulkan**, **Direct3D 12**, or **Metal** as the rendering driver, and it uses
the **RenderingDevice** backend.
- **Compatibility**, sometimes called **GL Compatibility**. The least advanced
renderer, suited for low-end desktop and mobile platforms. Used by default on
the web platform. This renderer uses **OpenGL** as the rendering driver.

See :ref:`doc_renderers` for a detailed comparison of the rendering methods.

Expand Down Expand Up @@ -188,9 +189,9 @@ See :ref:`doc_renderers` for a detailed comparison of the rendering methods.

- HDR rendering with sRGB.
- Perspective, orthographic and frustum-offset cameras.
- When using the Forward+ backend, a depth prepass is used to improve
- When using the Forward+ renderer, a depth prepass is used to improve
performance in complex scenes by reducing the cost of overdraw.
- :ref:`doc_variable_rate_shading` on supported GPUs in Forward+ and Forward Mobile.
- :ref:`doc_variable_rate_shading` on supported GPUs in Forward+ and Mobile.

**Physically-based rendering (built-in material features):**

Expand All @@ -217,10 +218,10 @@ See :ref:`doc_renderers` for a detailed comparison of the rendering methods.
- Specular, indirect light, and volumetric fog energy can be adjusted on a per-light basis.
- Adjustable light "size" for fake area lights (will also make shadows blurrier).
- Optional distance fade system to fade distant lights and their shadows, improving performance.
- When using the Forward+ backend (default on desktop), lights are
- When using the Forward+ renderer (default on desktop), lights are
rendered with clustered forward optimizations to decrease their individual cost.
Clustered rendering also lifts any limits on the number of lights that can be used on a mesh.
- When using the Forward Mobile backend, up to 8 omni lights and 8 spot lights can
- When using the Mobile renderer, up to 8 omni lights and 8 spot lights can
be displayed per mesh resource. Baked lighting can be used to overcome this limit
if needed.

Expand Down Expand Up @@ -276,10 +277,10 @@ See :ref:`doc_renderers` for a detailed comparison of the rendering methods.
Parallax box correction can optionally be enabled.
- Screen-space reflections with support for material roughness.
- Reflection techniques can be mixed together for greater accuracy or scalability.
- When using the Forward+ backend (default on desktop), reflection probes are
- When using the Forward+ renderer (default on desktop), reflection probes are
rendered with clustered forward optimizations to decrease their individual cost.
Clustered rendering also lifts any limits on the number of reflection probes that can be used on a mesh.
- When using the Forward Mobile backend, up to 8 reflection probes can be displayed per mesh
- When using the Mobile renderer, up to 8 reflection probes can be displayed per mesh
resource. When using the Compatibility renderer, up to 2 reflection probes can
be displayed per mesh resource.

Expand All @@ -294,10 +295,10 @@ See :ref:`doc_renderers` for a detailed comparison of the rendering methods.
complex skinned meshes with no performance penalty, even if the decal moves every frame.
- Support for nearest, bilinear, trilinear or anisotropic texture filtering (configured globally).
- Optional distance fade system to fade distant decals, improving performance.
- When using the Forward+ backend (default on desktop), decals are
- When using the Forward+ renderer (default on desktop), decals are
rendered with clustered forward optimizations to decrease their individual cost.
Clustered rendering also lifts any limits on the number of decals that can be used on a mesh.
- When using the Forward Mobile backend, up to 8 decals can be displayed per mesh
- When using the Mobile renderer, up to 8 decals can be displayed per mesh
resource.

**Sky:**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ The official platform ports can be used as a reference when creating a custom pl

While platform code is usually self-contained, there are exceptions to this
rule. For instance, audio drivers that are shared across several platforms and
rendering backends are located in the
rendering drivers are located in the
`drivers/ folder <https://github.com/godotengine/godot/tree/master/drivers>`__
of the Godot source code.

Expand Down Expand Up @@ -184,7 +184,7 @@ clone's ``platform/`` folder, then run ``scons platform=<name>``. No other steps
necessary for building, unless third-party platform-specific dependencies need
to be installed first.

However, when a custom rendering backend is needed, another folder must be added
However, when a custom rendering driver is needed, another folder must be added
in ``drivers/``. In this case, the platform port can be distributed as a fork of
the Godot repository, or as a collection of several folders that can be added
over a Godot Git repository clone.
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,11 @@ affect that pixel.
This approach can greatly speed up rendering performance on desktop hardware,
but is substantially less efficient on mobile.

Forward Mobile
^^^^^^^^^^^^^^
Mobile
^^^^^^

This is a forward renderer that uses a traditional single-pass approach to lighting.
Internally, it is called **Forward Mobile**.

Intended for mobile platforms, but can also run on desktop platforms. This
rendering method is optimized to perform well on mobile GPUs. Mobile GPUs have a
Expand Down Expand Up @@ -92,7 +93,7 @@ features result in a notable performance penalty.

On desktop platforms, the use of sub-passes won't have any impact on
performance. However, this rendering method can still perform better than
Clustered Forward in simple scenes thanks to its lower complexity and lower
Forward+ in simple scenes thanks to its lower complexity and lower
bandwidth usage. This is especially noticeable on low-end GPUs, integrated
graphics or in VR applications.

Expand All @@ -110,11 +111,11 @@ Compatibility
This is the only rendering method available when using the OpenGL driver.
This rendering method is not available when using Vulkan or Direct3D 12.

This is a traditional (non-clustered) forward renderer. It's intended for old
GPUs that don't have Vulkan support, but still works very efficiently on newer
hardware. Specifically, it is optimized for older and lower-end mobile devices
However, many optimizations carry over making it a good choice for older and
lower-end desktop as well.
This is a traditional (non-clustered) forward renderer. Internally, it is called
**GL Compatibility**. It's intended for old GPUs that don't have Vulkan support,
but still works very efficiently on newer hardware. Specifically, it is optimized
for older and lower-end mobile devices. However, many optimizations carry over
making it a good choice for older and lower-end desktop as well.

Like the Mobile renderer, the Compatibility renderer uses an R10G10B10A2 UNORM
texture for 3D rendering. Unlike the mobile renderer, colors are tonemapped and
Expand All @@ -134,7 +135,7 @@ looks and needs to be kept in mind when designing scenes for the Compatibility
renderer.

Given its low-end focus, this rendering method does not provide high-end
rendering features (even less so compared to Forward Mobile). Most
rendering features (even less so compared to Mobile). Most
post-processing effects are not available.

Why not deferred rendering?
Expand Down Expand Up @@ -248,11 +249,11 @@ Summary of rendering drivers/methods
The following rendering API + rendering method combinations are currently possible:

- Vulkan + Forward+
- Vulkan + Forward Mobile
- Vulkan + Mobile
- Direct3D 12 + Forward+
- Direct3D 12 + Forward Mobile
- Direct3D 12 + Mobile
- Metal + Forward+ (via MoltenVK)
- Metal + Forward Mobile (via MoltenVK)
- Metal + Mobile (via MoltenVK)
- OpenGL + Compatibility

Each combination has its own limitations and performance characteristics. Make
Expand Down Expand Up @@ -350,14 +351,14 @@ this.
**Core GLSL material shaders:**

- Forward+: `servers/rendering/renderer_rd/shaders/forward_clustered/scene_forward_clustered.glsl <https://github.com/godotengine/godot/blob/4.2/servers/rendering/renderer_rd/shaders/forward_clustered/scene_forward_clustered.glsl>`__
- Forward Mobile: `servers/rendering/renderer_rd/shaders/forward_mobile/scene_forward_mobile.glsl <https://github.com/godotengine/godot/blob/4.2/servers/rendering/renderer_rd/shaders/forward_mobile/scene_forward_mobile.glsl>`__
- Mobile: `servers/rendering/renderer_rd/shaders/forward_mobile/scene_forward_mobile.glsl <https://github.com/godotengine/godot/blob/4.2/servers/rendering/renderer_rd/shaders/forward_mobile/scene_forward_mobile.glsl>`__
- Compatibility: `drivers/gles3/shaders/scene.glsl <https://github.com/godotengine/godot/blob/4.2/drivers/gles3/shaders/scene.glsl>`__

**Material shader generation:**

- `scene/resources/material.cpp <https://github.com/godotengine/godot/blob/4.2/scene/resources/material.cpp>`__

**Other GLSL shaders for Forward+ and Forward Mobile rendering methods:**
**Other GLSL shaders for Forward+ and Mobile rendering methods:**

- `servers/rendering/renderer_rd/shaders/ <https://github.com/godotengine/godot/blob/4.2/servers/rendering/renderer_rd/shaders/>`__
- `modules/lightmapper_rd/ <https://github.com/godotengine/godot/blob/4.2/modules/lightmapper_rd>`__
Expand All @@ -371,9 +372,9 @@ this.

.. note::

The following is only applicable in the Forward+ and Forward Mobile
The following is only applicable in the Forward+ and Mobile
rendering methods, not in Compatibility. Multiple Viewports can be used to
emulate this when using the Compatibility backend, or to perform 2D
emulate this when using the Compatibility renderer, or to perform 2D
resolution scaling.

2D and 3D are rendered to separate buffers, as 2D rendering in Godot is performed
Expand Down Expand Up @@ -416,7 +417,7 @@ with large amounts of lights.
The Forward+ and Mobile rendering methods don't feature 2D batching yet, but
it's planned for a future release.

The Compatibility backend features 2D batching to improve performance, which is
The Compatibility renderer features 2D batching to improve performance, which is
especially noticeable with lots of text on screen.

MSAA can be enabled in 2D to provide "automatic" line and polygon antialiasing,
Expand All @@ -440,7 +441,7 @@ used to calculate particle collisions in 2D.
Batching and instancing
^^^^^^^^^^^^^^^^^^^^^^^

In the Forward+ backend, Vulkan instancing is used to group rendering
In the Forward+ renderer, Vulkan instancing is used to group rendering
of identical objects for performance. This is not as fast as static mesh
merging, but it still allows instances to be culled individually.

Expand All @@ -449,10 +450,9 @@ Light, decal and reflection probe rendering

.. note::

Reflection probe and decal rendering are currently not available in the
Compatibility backend.
Decal rendering is currently not available in the Compatibility renderer.

As its name implies, the Forward+ backend uses clustered lighting. This
The Forward+ renderer uses clustered lighting. This
allows using as many lights as you want; performance largely depends on screen
coverage. Shadow-less lights can be almost free if they don't occupy much space
on screen.
Expand All @@ -461,12 +461,12 @@ All rendering methods also support rendering up to 8 directional lights at the
same time (albeit with lower shadow quality when more than one light has shadows
enabled).

The Forward Mobile backend uses a single-pass lighting approach, with a
The Mobile renderer uses a single-pass lighting approach, with a
limitation of 8 OmniLights + 8 SpotLights affecting each Mesh *resource* (plus a
limitation of 256 OmniLights + 256 SpotLights in the camera view). These limits
are hardcoded and can't be adjusted in the project settings.

The Compatibility backend uses a hybrid single-pass + multi-pass lighting
The Compatibility renderer uses a hybrid single-pass + multi-pass lighting
approach. Lights without shadows are rendered in a single pass. Lights with
shadows are rendered in multiple passes. This is required for performance
reasons on mobile devices. As a result, performance does not scale well with
Expand All @@ -483,34 +483,34 @@ separate static shadow rendering from dynamic shadow rendering, but this is
planned in a future release.

Clustering is also used for reflection probes and decal rendering in the
Forward+ backend.
Forward+ renderer.

Shadow mapping
^^^^^^^^^^^^^^

Both Forward+ and Forward Mobile methods use
Both Forward+ and Mobile methods use
:abbr:`PCF (Percentage Closer Filtering)` to filter shadow maps and create a
soft penumbra. Instead of using a fixed PCF pattern, these methods use a vogel
disk pattern which allows for changing the number of samples and smoothly
changing the quality.

Godot also supports percentage-closer soft shadows (PCSS) for more realistic
shadow penumbra rendering. PCSS shadows are limited to the Forward+
backend as they're too demanding to be usable in the Forward Mobile backend.
shadow penumbra rendering. PCSS shadows are limited to the Forward+ renderer
as they're too demanding to be usable in the Mobile renderer.
PCSS also uses a vogel-disk shaped kernel.

Additionally, both shadow-mapping techniques rotate the kernel on a per-pixel
basis to help soften under-sampling artifacts.

The Compatibility backend doesn't support shadow mapping for any light types yet.
The Compatibility renderer supports shadow mapping for DirectionalLight3D,
OmniLight3D, and SpotLight3D lights.

Temporal antialiasing
^^^^^^^^^^^^^^^^^^^^^

.. note::

Only available in the Forward+ backend, not the Forward Mobile or
Compatibility methods.
Only available in the Forward+ renderer, not the Mobile or Compatibility renderers.

Godot uses a custom TAA implementation based on the old TAA implementation from
`Spartan Engine <https://github.com/PanosK92/SpartanEngine>`__.
Expand Down Expand Up @@ -542,13 +542,12 @@ Global illumination

.. note::

VoxelGI and SDFGI are only available in the Forward+ backend, not the
Forward Mobile or Compatibility methods.
VoxelGI and SDFGI are only available in the Forward+ renderer, not the
Mobile or Compatibility renderers.

LightmapGI *baking* is only available in the Forward+ and Forward Mobile
methods, and can only be performed within the editor (not in an exported
project). LightmapGI *rendering* will eventually be supported by the
Compatibility backend.
LightmapGI *baking* is only available in the Forward+ and Mobile renderers,
and can only be performed within the editor (not in an exported
project). LightmapGI *rendering* is supported by the Compatibility renderer.

Godot supports voxel-based GI (VoxelGI), signed distance field GI (SDFGI) and
lightmap baking and rendering (LightmapGI). These techniques can be used
Expand All @@ -558,7 +557,7 @@ Lightmap baking happens on the GPU using Vulkan compute shaders. The GPU-based
lightmapper is implemented in the LightmapperRD class, which inherits from the
Lightmapper class. This allows for implementing additional lightmappers, paving
the way for a future port of the CPU-based lightmapper present in Godot 3.x.
This would allow baking lightmaps while using the Compatibility backend.
This would allow baking lightmaps while using the Compatibility renderer.

**Core GI C++ code:**

Expand Down Expand Up @@ -594,14 +593,13 @@ Depth of field

.. note::

Only available in the Forward+ and Forward Mobile methods, not the
Compatibility backend.
Only available in the Forward+ and Mobile renderers, not the
Compatibility renderer.

The Forward+ and Forward Mobile methods use different approaches to
DOF rendering, with different visual results. This is done to best
match the performance characteristics of the target hardware. In Clustered
Forward, DOF is performed using a compute shader. In Forward Mobile, DOF is
performed using a fragment shader (raster).
The Forward+ and Mobile renderers use different approaches to DOF rendering, with
different visual results. This is done to best match the performance characteristics
of the target hardware. In Forward+, DOF is performed using a compute shader. In
Mobile, DOF is performed using a fragment shader (raster).

Box, hexagon and circle bokeh shapes are available (from fastest to slowest).
Depth of field can optionally be jittered every frame to improve its appearance
Expand All @@ -615,7 +613,7 @@ when temporal antialiasing is enabled.

- `servers/rendering/renderer_rd/shaders/effects/bokeh_dof.glsl <https://github.com/godotengine/godot/blob/4.2/servers/rendering/renderer_rd/shaders/effects/bokeh_dof.glsl>`__

**Depth of field GLSL shader (raster - used for Forward Mobile):**
**Depth of field GLSL shader (raster - used for Mobile):**

- `servers/rendering/renderer_rd/shaders/effects/bokeh_dof_raster.glsl <https://github.com/godotengine/godot/blob/4.2/servers/rendering/renderer_rd/shaders/effects/bokeh_dof_raster.glsl>`__

Expand All @@ -624,10 +622,9 @@ Screen-space effects (SSAO, SSIL, SSR, SSS)

.. note::

Only available in the Forward+ backend, not the Forward Mobile or
Compatibility methods.
Only available in the Forward+ renderer, not the Mobile or Compatibility renderers.

The Forward+ backend supports screen-space ambient occlusion,
The Forward+ renderer supports screen-space ambient occlusion,
screen-space indirect lighting, screen-space reflections and subsurface scattering.

SSAO uses an implementation derived from Intel's
Expand Down Expand Up @@ -701,8 +698,7 @@ Volumetric fog

.. note::

Only available in the Forward+ backend, not the Forward Mobile or
Compatibility methods.
Only available in the Forward+ renderer, not the Mobile or Compatibility renderers.

.. seealso::

Expand Down
Loading

0 comments on commit 1aaadff

Please sign in to comment.