diff --git a/about/docs_changelog.rst b/about/docs_changelog.rst index 88a0123aa..ee169a098 100644 --- a/about/docs_changelog.rst +++ b/about/docs_changelog.rst @@ -304,7 +304,6 @@ Miscellaneous - :ref:`doc_jitter_stutter` - :ref:`doc_running_code_in_the_editor` - :ref:`doc_change_scenes_manually` -- :ref:`doc_gles2_gles3_differences` Compiling ^^^^^^^^^ diff --git a/community/contributing/bug_triage_guidelines.rst b/community/contributing/bug_triage_guidelines.rst index 33a8a33cf..7c1381cf2 100644 --- a/community/contributing/bug_triage_guidelines.rst +++ b/community/contributing/bug_triage_guidelines.rst @@ -112,7 +112,7 @@ feature request, or one that is not precise enough to be worked on. - *Buildsystem*: relates to building issues, either linked to the SCons buildsystem or to compiler peculiarities. - *Codestyle*: relates to the programming style used within the codebase. -- *Core*: anything related to the core engine. Specific topics are split off seperately as they crop up. +- *Core*: anything related to the core engine. Specific topics are split off separately as they crop up. - *Dotnet*: relates to the C# / Dotnet bindings. - *Editor*: relates to issues in the editor (mainly UI). - *Export*: relates to the export system and templates. diff --git a/tutorials/editor/project_manager.rst b/tutorials/editor/project_manager.rst index 1e4785a83..07e952fc4 100644 --- a/tutorials/editor/project_manager.rst +++ b/tutorials/editor/project_manager.rst @@ -27,9 +27,6 @@ To create a new project: .. image:: img/editor_ui_intro_project_manager_04.png -.. seealso:: For more information about rendering backends, see - :ref:`doc_gles2_gles3_differences`. - Using the file browser ~~~~~~~~~~~~~~~~~~~~~~ diff --git a/tutorials/rendering/gles2_gles3_differences.rst b/tutorials/rendering/gles2_gles3_differences.rst deleted file mode 100644 index 4d5746d36..000000000 --- a/tutorials/rendering/gles2_gles3_differences.rst +++ /dev/null @@ -1,227 +0,0 @@ -.. _doc_gles2_gles3_differences: - -Differences between GLES2 and GLES3 -=================================== - -This page documents the differences between GLES2 and GLES3 that are by design and are not the result -of bugs. There may be differences that are unintentional, but they should be reported as bugs. - -.. note:: "GLES2" and "GLES3" are the names used in Godot for the two OpenGL-based rendering backends. - In terms of graphics APIs, the GLES2 backend maps to OpenGL 2.1 on desktop, OpenGL ES 2.0 on - mobile and WebGL 1.0 on the web. The GLES3 backend maps to OpenGL 3.3 on desktop, OpenGL ES - 3.0 on mobile and WebGL 2.0 on the web. - -Particles ---------- - -GLES2 cannot use the :ref:`GPUParticles3D ` or :ref:`GPUParticles2D ` nodes -as they require advanced GPU features. Instead, use :ref:`CPUParticles3D ` or -:ref:`CPUParticles2D `, which provides a similar interface to a -:ref:`ParticleProcessMaterial `. - -.. tip:: Particles and GPUParticles2D can be converted to their CPU equivalent node with the "Convert to - CPUParticles" option in the editor. - -``SCREEN_TEXTURE`` mip-maps ---------------------------- - -In GLES2, ``SCREEN_TEXTURE`` (accessed via a :ref:`ShaderMaterial `) does not have -computed mip-maps. So when accessing at a different LOD, the texture will not appear blurry. - -``DEPTH_TEXTURE`` ------------------ - -While GLES2 supports ``DEPTH_TEXTURE`` in shaders, it may not work on some old hardware (especially mobile). - -Color space ------------ - -GLES2 and GLES3 are in different color spaces. This means that colors will appear slightly -different between them especially when lighting is used. - -If your game is going to use both GLES2 and GLES3, you can use an ``if`` -statement check and see if the output is in sRGB, using ``OUTPUT_IS_SRGB``. ``OUTPUT_IS_SRGB`` is -``true`` in GLES2 and ``false`` in GLES3. - -HDR ---- - -GLES2 is not capable of using High Dynamic Range (HDR) rendering features. If HDR is set for your -project, or for a given viewport, Godot will still use Low Dynamic Range (LDR) which limits -viewport values to the ``0-1`` range. - -The Viewport **Debanding** property and associated project setting will also have -no effect when HDR is disabled. This means debanding can't be used in GLES2. - -StandardMaterial3D features ---------------------------- - -In GLES2, the following advanced rendering features in the :ref:`StandardMaterial3D ` are missing: - -- Refraction -- Subsurface scattering -- Anisotropy -- Clearcoat -- Depth mapping - -When using StandardMaterial3Ds they will not even appear in the editor. - -In custom :ref:`ShaderMaterials `, you can set values for these features but they -will be non-functional. For example, you will still be able to set the ``SSS`` built-in (which normally adds -subsurface scattering) in your shader, but nothing will happen. - -Environment features --------------------- - -In GLES2, the following features in the :ref:`Environment ` are missing: - -- Auto exposure -- Tonemapping -- Screen space reflections -- Screen space ambient occlusion - -That means that in GLES2 environments you can only set: - -- Sky (including procedural sky) -- Ambient light -- Fog -- Depth of field -- Glow (also known as bloom) -- Adjustment - -See :ref:`doc_environment_and_post_processing` for more information. - -Glow ----- - -Many GLES2 devices only have a maximum of eight texture units. On such devices, you -can only use the first six levels of glow; the seventh one won't do anything. - -GIProbes --------- - -.. FIXME: Removed references to no longer existing classes in master/4.0 version to - silence warning, but the whole page will likely end up rewritten or removed - in 4.0. - -GIProbes do not work in GLES2. Instead use Baked Lightmaps. -For a description of how baked lightmaps work see the :ref:`Baked Lightmaps tutorial `. - -Contact shadows ---------------- - -The ``shadow_contact`` property of lights is not supported in GLES2 and so does nothing. - -Light performance ------------------ - -In GLES2, performance scales poorly with several lights, as each light is processed in a separate render -pass (in opposition to GLES3 which is all done in a single pass). Try to limit scenes to as few lights as -possible in order to achieve greatest performance. - -Texture compression -------------------- - -On mobile, GLES2 requires ETC texture compression, while GLES3 requires ETC2. ETC2 is enabled by default, -so if exporting to mobile using GLES2 make sure to set the project setting -``rendering/vram_compression/import_etc`` and then reimport textures. - -.. warning:: - - Since ETC doesn't support transparency, you must reimport textures that contain - an alpha channel to use the Uncompressed, Lossy or Lossless compression mode - (instead of Video RAM). This can be done in the Import dock after selecting - them in the FileSystem dock. - -Blend shapes ------------- - -In GLES2, blend shapes are implemented on the CPU instead of the GPU. -Accordingly, they may not perform as well as blend shapes in GLES3. To avoid -performance issues when using blend shapes in GLES2, try to minimize the number -of blend shapes that are updated each frame. - -Shading language ----------------- - -GLES3 provides many built-in functions that GLES2 does not. Below is a list of functions -that are not available or are have limited support in GLES2. - -For a complete list of built-in GLSL functions see the :ref:`Shading Language doc `. - -+---------------------------------------------------------------------------------------------+--------------------------------------------------+ -| Function | | -+=============================================================================================+==================================================+ -| vec_type **modf** ( vec_type x, out vec_type i ) | | -+---------------------------------------------------------------------------------------------+--------------------------------------------------+ -| vec_int_type **floatBitsToInt** ( vec_type x ) | | -+---------------------------------------------------------------------------------------------+--------------------------------------------------+ -| vec_uint_type **floatBitsToUint** ( vec_type x ) | | -+---------------------------------------------------------------------------------------------+--------------------------------------------------+ -| vec_type **intBitsToFloat** ( vec_int_type x ) | | -+---------------------------------------------------------------------------------------------+--------------------------------------------------+ -| vec_type **uintBitsToFloat** ( vec_uint_type x ) | | -+---------------------------------------------------------------------------------------------+--------------------------------------------------+ -| ivec2 **textureSize** ( sampler2D_type s, int lod ) | See workaround below | -+---------------------------------------------------------------------------------------------+--------------------------------------------------+ -| ivec2 **textureSize** ( samplerCube s, int lod ) | See workaround below | -+---------------------------------------------------------------------------------------------+--------------------------------------------------+ -| vec4_type **texture** ( sampler_type s, vec_type uv [, float bias] ) | **bias** not available in vertex shader | -+---------------------------------------------------------------------------------------------+--------------------------------------------------+ -| vec4_type **textureProj** ( sampler_type s, vec_type uv [, float bias] ) | | -+---------------------------------------------------------------------------------------------+--------------------------------------------------+ -| vec4_type **textureLod** ( sampler_type s, vec_type uv, float lod ) | Only available in vertex shader on some hardware | -+---------------------------------------------------------------------------------------------+--------------------------------------------------+ -| vec4_type **textureProjLod** ( sampler_type s, vec_type uv, float lod ) | | -+---------------------------------------------------------------------------------------------+--------------------------------------------------+ -| vec4_type **textureGrad** ( sampler_type s, vec_type uv, vec_type dPdx, vec_type dPdy ) | | -+---------------------------------------------------------------------------------------------+--------------------------------------------------+ -| vec_type **dFdx** ( vec_type p ) | | -+---------------------------------------------------------------------------------------------+--------------------------------------------------+ -| vec_type **dFdy** ( vec_type p ) | | -+---------------------------------------------------------------------------------------------+--------------------------------------------------+ -| vec_type **fwidth** ( vec_type p ) | | -+---------------------------------------------------------------------------------------------+--------------------------------------------------+ - -.. note:: Functions not in GLES2's GLSL were added with Godots own shader standard library. These functions may perform worse in GLES2 compared to GLES3. - -``textureSize()`` workaround -^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -GLES2 does not support ``textureSize()``. You can get the size of a texture the old fashioned way by passing in a -uniform with the texture size yourself. - -.. code-block:: glsl - - // In the shader: - uniform sampler2D textureName; - uniform vec2 textureName_size; - -:: - - # In GDScript: - material_name.set_shader_param("textureName", my_texture) - material_name.set_shader_param("textureName_size", my_texture_size) - -Built in variables and render modes ------------------------------------ - -Godot also provides many built-in variables and render modes. Some cannot be supported in GLES2. Below is a list of -built-in variables and render modes that, when written to, will have no effect or could even cause issues when using -the GLES2 backend. - -+----------------------------+ -| Variable / Render Mode | -+============================+ -| ``ensure_correct_normals`` | -+----------------------------+ -| ``INSTANCE_ID`` | -+----------------------------+ -| ``DEPTH`` | -+----------------------------+ -| ``ANISOTROPY`` | -+----------------------------+ -| ``ANISOTROPY_FLOW`` | -+----------------------------+ -| ``SSS_STRENGTH`` | -+----------------------------+ diff --git a/tutorials/shaders/shader_reference/shading_language.rst b/tutorials/shaders/shader_reference/shading_language.rst index c01cf054e..0c32da50e 100644 --- a/tutorials/shaders/shader_reference/shading_language.rst +++ b/tutorials/shaders/shader_reference/shading_language.rst @@ -856,10 +856,6 @@ A large number of built-in functions are supported, conforming to GLSL ES 3.0. When vec_type (float), vec_int_type, vec_uint_type, vec_bool_type nomenclature is used, it can be scalar or vector. -.. note:: For a list of the functions that are not available in the GLES2 - backend, please see the :ref:`Differences between GLES2 and GLES3 doc - `. - +-----------------------------------------------------------------------------+---------------------------------------------------------------------+ | Function | Description / Return value | +=============================================================================+=====================================================================+