Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve OpenGL documentation in Internal rendering architecture #9384

Merged
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -193,10 +193,10 @@ Both the Forward+ and Mobile :ref:`doc_internal_rendering_architecture_methods`
used with Direct3D 12.

:ref:`doc_internal_rendering_architecture_core_shaders` are shared with the
Vulkan renderer. Shaders are transpiled from GLSL to HLSL using
Vulkan renderer. Shaders are transpiled from
:abbr:`SPIR-V (Standard Portable Intermediate Representation)` to
:abbr:`DXIL (DirectX Intermediate Language)` using
Mesa NIR (`more information <https://godotengine.org/article/d3d12-adventures-in-shaderland/>`__).
This means you don't need to know HLSL to work on the Direct3D 12 renderer,
although knowing the language's basics is recommended to ease debugging.

**This driver is still experimental and only available in Godot 4.3 and later.**
While Direct3D 12 allows supporting Direct3D-exclusive features on Windows 11 such
Expand Down Expand Up @@ -228,14 +228,19 @@ support Vulkan. OpenGL 3.3 Core Profile is used on desktop platforms to run this
driver, as most graphics drivers on desktop don't support OpenGL ES.
WebGL 2.0 is used for web exports.

It is possible to use the use of OpenGL ES 3.0 directly on desktop platforms
using the ``--rendering-driver opengl3_es`` command line argument, although this
will only work on graphics drivers that feature native OpenGL ES support (such
as Mesa).

Only the :ref:`doc_internal_rendering_architecture_compatibility` rendering
method can be used with the OpenGL driver.

:ref:`doc_internal_rendering_architecture_core_shaders` are entirely different
from the Vulkan renderer.

**As of May 2023, this driver is still in development.** Many features
are still not implemented, especially in 3D.
Many advanced features are not supported with this driver, as it targets low-end
devices first and foremost.

Summary of rendering drivers/methods
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Expand Down Expand Up @@ -272,7 +277,7 @@ RenderingDevice presents a similar level of abstraction as Metal or WebGPU.

**Vulkan RenderingDevice implementation:**

- `drivers/vulkan/rendering_device_vulkan.cpp <https://github.com/godotengine/godot/blob/4.2/drivers/vulkan/rendering_device_vulkan.cpp>`__
- `drivers/vulkan/rendering_device_driver_vulkan.cpp <https://github.com/godotengine/godot/blob/master/drivers/vulkan/rendering_device_driver_vulkan.cpp>`__

**Direct3D 12 RenderingDevice implementation:**

Expand Down Expand Up @@ -731,8 +736,7 @@ Occlusion culling
^^^^^^^^^^^^^^^^^

While modern GPUs can handle drawing a lot of triangles, the number of draw
calls in complex scenes can still be a bottleneck (even with Vulkan and Direct3D
12).
calls in complex scenes can still be a bottleneck (even with Vulkan and Direct3D 12).

Godot 4 supports occlusion culling to reduce overdraw (when the depth prepass
is disabled) and reduce vertex throughput.
Expand Down