Skip to content

Commit 7c8f6d9

Browse files
authored
Merge pull request #10183 from tetrapod00/rendering-method-driver-backend
Standardize renderer names and terms
2 parents e05cebe + f2ce3ee commit 7c8f6d9

20 files changed

+126
-132
lines changed

about/faq.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -322,7 +322,7 @@ While Vulkan and OpenGL remain our primary focus for their open standard and
322322
cross-platform benefits, Godot 4.3 introduced experimental support for Direct3D 12.
323323
This addition aims to enhance performance and compatibility on platforms where
324324
Direct3D 12 is prevalent, such as Windows and Xbox. However, Vulkan and OpenGL
325-
will continue as the default rendering backends on all platforms, including Windows.
325+
will continue as the default rendering drivers on all platforms, including Windows.
326326

327327
Why does Godot aim to keep its core feature set small?
328328
------------------------------------------------------

about/list_of_features.rst

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -95,17 +95,18 @@ Editor
9595
Rendering
9696
---------
9797

98-
3 rendering *methods* (running over 2 rendering *drivers*) are available:
99-
100-
- **Forward+**, running over Vulkan 1.0 (with optional Vulkan 1.1 and 1.2
101-
features). The most advanced graphics backend, suited for desktop platforms
102-
only. Used by default on desktop platforms.
103-
- **Forward Mobile**, running over Vulkan 1.0 (with optional Vulkan 1.1 and 1.2
104-
features). Less features, but renders simple scenes faster. Suited for mobile
105-
and desktop platforms. Used by default on mobile platforms.
106-
- **Compatibility**, running over OpenGL 3.3 / OpenGL ES 3.0 / WebGL 2.0. The least
107-
advanced graphics backend, suited for low-end desktop and mobile platforms.
108-
Used by default on the web platform.
98+
Godot 4 includes three renderers:
99+
100+
- **Forward+**. The most advanced renderer, suited for desktop platforms only.
101+
Used by default on desktop platforms. This renderer uses **Vulkan**, **Direct3D 12**,
102+
or **Metal** as the rendering driver, and it uses the **RenderingDevice** backend.
103+
- **Mobile**. Fewer features, but renders simple scenes faster. Suited for mobile
104+
and desktop platforms. Used by default on mobile platforms. This renderer uses
105+
**Vulkan**, **Direct3D 12**, or **Metal** as the rendering driver, and it uses
106+
the **RenderingDevice** backend.
107+
- **Compatibility**, sometimes called **GL Compatibility**. The least advanced
108+
renderer, suited for low-end desktop and mobile platforms. Used by default on
109+
the web platform. This renderer uses **OpenGL** as the rendering driver.
109110

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

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

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

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

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

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

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

303304
**Sky:**

contributing/development/core_and_modules/custom_platform_ports.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ The official platform ports can be used as a reference when creating a custom pl
5151

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

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

187-
However, when a custom rendering backend is needed, another folder must be added
187+
However, when a custom rendering driver is needed, another folder must be added
188188
in ``drivers/``. In this case, the platform port can be distributed as a fork of
189189
the Godot repository, or as a collection of several folders that can be added
190190
over a Godot Git repository clone.

contributing/development/core_and_modules/internal_rendering_architecture.rst

Lines changed: 46 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,11 @@ affect that pixel.
4444
This approach can greatly speed up rendering performance on desktop hardware,
4545
but is substantially less efficient on mobile.
4646

47-
Forward Mobile
48-
^^^^^^^^^^^^^^
47+
Mobile
48+
^^^^^^
4949

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

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

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

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

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

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

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

140141
Why not deferred rendering?
@@ -250,11 +251,11 @@ Summary of rendering drivers/methods
250251
The following rendering API + rendering method combinations are currently possible:
251252

252253
- Vulkan + Forward+
253-
- Vulkan + Forward Mobile
254+
- Vulkan + Mobile
254255
- Direct3D 12 + Forward+
255-
- Direct3D 12 + Forward Mobile
256+
- Direct3D 12 + Mobile
256257
- Metal + Forward+ (via MoltenVK)
257-
- Metal + Forward Mobile (via MoltenVK)
258+
- Metal + Mobile (via MoltenVK)
258259
- OpenGL + Compatibility
259260

260261
Each combination has its own limitations and performance characteristics. Make
@@ -352,14 +353,14 @@ this.
352353
**Core GLSL material shaders:**
353354

354355
- 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>`__
355-
- 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>`__
356+
- 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>`__
356357
- Compatibility: `drivers/gles3/shaders/scene.glsl <https://github.com/godotengine/godot/blob/4.2/drivers/gles3/shaders/scene.glsl>`__
357358

358359
**Material shader generation:**
359360

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

362-
**Other GLSL shaders for Forward+ and Forward Mobile rendering methods:**
363+
**Other GLSL shaders for Forward+ and Mobile rendering methods:**
363364

364365
- `servers/rendering/renderer_rd/shaders/ <https://github.com/godotengine/godot/blob/4.2/servers/rendering/renderer_rd/shaders/>`__
365366
- `modules/lightmapper_rd/ <https://github.com/godotengine/godot/blob/4.2/modules/lightmapper_rd>`__
@@ -373,9 +374,9 @@ this.
373374

374375
.. note::
375376

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

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

427-
The Compatibility backend features 2D batching to improve performance, which is
428+
The Compatibility renderer features 2D batching to improve performance, which is
428429
especially noticeable with lots of text on screen.
429430

430431
MSAA can be enabled in 2D to provide "automatic" line and polygon antialiasing,
@@ -448,7 +449,7 @@ used to calculate particle collisions in 2D.
448449
Batching and instancing
449450
^^^^^^^^^^^^^^^^^^^^^^^
450451

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

@@ -457,10 +458,9 @@ Light, decal and reflection probe rendering
457458

458459
.. note::
459460

460-
Reflection probe and decal rendering are currently not available in the
461-
Compatibility backend.
461+
Decal rendering is currently not available in the Compatibility renderer.
462462

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

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

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

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

499499
Shadow mapping
500500
^^^^^^^^^^^^^^
501501

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

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

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

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

518519
Temporal antialiasing
519520
^^^^^^^^^^^^^^^^^^^^^
520521

521522
.. note::
522523

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

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

554554
.. note::
555555

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

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

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

574573
**Core GI C++ code:**
575574

@@ -605,14 +604,13 @@ Depth of field
605604

606605
.. note::
607606

608-
Only available in the Forward+ and Forward Mobile methods, not the
609-
Compatibility backend.
607+
Only available in the Forward+ and Mobile renderers, not the
608+
Compatibility renderer.
610609

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

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

627625
- `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>`__
628626

629-
**Depth of field GLSL shader (raster - used for Forward Mobile):**
627+
**Depth of field GLSL shader (raster - used for Mobile):**
630628

631629
- `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>`__
632630

@@ -635,10 +633,9 @@ Screen-space effects (SSAO, SSIL, SSR, SSS)
635633

636634
.. note::
637635

638-
Only available in the Forward+ backend, not the Forward Mobile or
639-
Compatibility methods.
636+
Only available in the Forward+ renderer, not the Mobile or Compatibility renderers.
640637

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

644641
SSAO uses an implementation derived from Intel's
@@ -712,8 +709,7 @@ Volumetric fog
712709

713710
.. note::
714711

715-
Only available in the Forward+ backend, not the Forward Mobile or
716-
Compatibility methods.
712+
Only available in the Forward+ renderer, not the Mobile or Compatibility renderers.
717713

718714
.. seealso::
719715

tutorials/3d/3d_rendering_limitations.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,12 @@ without affecting the source file.
3333
Color banding
3434
-------------
3535

36-
When using the Forward+ or Forward Mobile rendering methods, Godot's 3D engine
36+
When using the Forward+ or Mobile rendering methods, Godot's 3D engine
3737
renders internally in HDR. However, the rendering output will be tonemapped to a
3838
low dynamic range so it can be displayed on the screen. This can result in
3939
visible banding, especially when using untextured materials. For performance
40-
reasons, color precision is also lower when using the Forward Mobile rendering
41-
method compared to Forward+.
40+
reasons, color precision is also lower when using the Mobile rendering method
41+
compared to Forward+.
4242

4343
When using the Compatibility rendering method, HDR is not used and the color
4444
precision is the lowest of all rendering methods. This also applies to 2D

0 commit comments

Comments
 (0)