From 715748bab42c1d38ae13dff291aaf368d13bef49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Thu, 29 Jan 2026 20:45:13 +0100 Subject: [PATCH 1/3] GLES3: Tidy up includes for consistency --- drivers/gles3/effects/copy_effects.cpp | 5 +-- drivers/gles3/effects/cubemap_filter.cpp | 6 ++-- drivers/gles3/effects/feed_effects.cpp | 8 +---- drivers/gles3/effects/glow.cpp | 5 +-- drivers/gles3/effects/post_effects.cpp | 5 +-- drivers/gles3/effects/post_effects.h | 2 +- drivers/gles3/environment/fog.cpp | 4 +-- drivers/gles3/environment/gi.cpp | 4 +-- drivers/gles3/rasterizer_canvas_gles3.cpp | 15 ++++----- drivers/gles3/rasterizer_canvas_gles3.h | 11 +++---- drivers/gles3/rasterizer_gles3.cpp | 4 +-- drivers/gles3/rasterizer_gles3.h | 32 +++++++++---------- drivers/gles3/rasterizer_scene_gles3.cpp | 19 ++++++----- drivers/gles3/rasterizer_scene_gles3.h | 13 ++++---- drivers/gles3/shader_gles3.cpp | 1 - drivers/gles3/shader_gles3.h | 4 +-- drivers/gles3/storage/config.cpp | 6 ++-- drivers/gles3/storage/light_storage.cpp | 9 +++--- drivers/gles3/storage/light_storage.h | 6 ++-- drivers/gles3/storage/material_storage.cpp | 11 +++---- drivers/gles3/storage/material_storage.h | 9 +++--- drivers/gles3/storage/mesh_storage.cpp | 9 +++--- drivers/gles3/storage/particles_storage.cpp | 13 ++++---- .../storage/render_scene_buffers_gles3.cpp | 9 +++--- drivers/gles3/storage/texture_storage.cpp | 12 +++---- drivers/gles3/storage/texture_storage.h | 7 ++-- drivers/gles3/storage/utilities.cpp | 18 +++++------ 27 files changed, 120 insertions(+), 127 deletions(-) diff --git a/drivers/gles3/effects/copy_effects.cpp b/drivers/gles3/effects/copy_effects.cpp index e7b5a1721e..d26b2d3969 100644 --- a/drivers/gles3/effects/copy_effects.cpp +++ b/drivers/gles3/effects/copy_effects.cpp @@ -28,10 +28,11 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /**************************************************************************/ +#include "copy_effects.h" + #ifdef GLES3_ENABLED -#include "copy_effects.h" -#include "../storage/texture_storage.h" +#include "drivers/gles3/storage/texture_storage.h" using namespace GLES3; diff --git a/drivers/gles3/effects/cubemap_filter.cpp b/drivers/gles3/effects/cubemap_filter.cpp index cc4e370757..433b2c6e82 100644 --- a/drivers/gles3/effects/cubemap_filter.cpp +++ b/drivers/gles3/effects/cubemap_filter.cpp @@ -28,12 +28,12 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /**************************************************************************/ -#ifdef GLES3_ENABLED - #include "cubemap_filter.h" -#include "../storage/texture_storage.h" +#ifdef GLES3_ENABLED + #include "core/config/project_settings.h" +#include "drivers/gles3/storage/texture_storage.h" using namespace GLES3; diff --git a/drivers/gles3/effects/feed_effects.cpp b/drivers/gles3/effects/feed_effects.cpp index 8ca88da662..b89f7cff4f 100644 --- a/drivers/gles3/effects/feed_effects.cpp +++ b/drivers/gles3/effects/feed_effects.cpp @@ -28,15 +28,9 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /**************************************************************************/ -#ifdef GLES3_ENABLED - #include "feed_effects.h" -#ifdef ANDROID_ENABLED -#include -#endif - -#define GL_PROGRAM_POINT_SIZE 0x8642 +#ifdef GLES3_ENABLED using namespace GLES3; diff --git a/drivers/gles3/effects/glow.cpp b/drivers/gles3/effects/glow.cpp index 9728b089aa..40651c7553 100644 --- a/drivers/gles3/effects/glow.cpp +++ b/drivers/gles3/effects/glow.cpp @@ -28,10 +28,11 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /**************************************************************************/ +#include "glow.h" + #ifdef GLES3_ENABLED -#include "glow.h" -#include "../storage/texture_storage.h" +#include "drivers/gles3/storage/texture_storage.h" using namespace GLES3; diff --git a/drivers/gles3/effects/post_effects.cpp b/drivers/gles3/effects/post_effects.cpp index a9f51fc3a8..d588a10cfe 100644 --- a/drivers/gles3/effects/post_effects.cpp +++ b/drivers/gles3/effects/post_effects.cpp @@ -28,10 +28,11 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /**************************************************************************/ +#include "post_effects.h" + #ifdef GLES3_ENABLED -#include "post_effects.h" -#include "../storage/texture_storage.h" +#include "drivers/gles3/storage/texture_storage.h" using namespace GLES3; diff --git a/drivers/gles3/effects/post_effects.h b/drivers/gles3/effects/post_effects.h index ae686e249d..1056765261 100644 --- a/drivers/gles3/effects/post_effects.h +++ b/drivers/gles3/effects/post_effects.h @@ -32,8 +32,8 @@ #ifdef GLES3_ENABLED +#include "drivers/gles3/effects/glow.h" #include "drivers/gles3/shaders/effects/post.glsl.gen.h" -#include "glow.h" namespace GLES3 { diff --git a/drivers/gles3/environment/fog.cpp b/drivers/gles3/environment/fog.cpp index 6083c4da46..84e257f670 100644 --- a/drivers/gles3/environment/fog.cpp +++ b/drivers/gles3/environment/fog.cpp @@ -28,10 +28,10 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /**************************************************************************/ -#ifdef GLES3_ENABLED - #include "fog.h" +#ifdef GLES3_ENABLED + using namespace GLES3; /* FOG */ diff --git a/drivers/gles3/environment/gi.cpp b/drivers/gles3/environment/gi.cpp index 6b33e0aa22..b18fb172cc 100644 --- a/drivers/gles3/environment/gi.cpp +++ b/drivers/gles3/environment/gi.cpp @@ -28,10 +28,10 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /**************************************************************************/ -#ifdef GLES3_ENABLED - #include "gi.h" +#ifdef GLES3_ENABLED + using namespace GLES3; /* VOXEL GI API */ diff --git a/drivers/gles3/rasterizer_canvas_gles3.cpp b/drivers/gles3/rasterizer_canvas_gles3.cpp index 8da68e6eee..cdb69da324 100644 --- a/drivers/gles3/rasterizer_canvas_gles3.cpp +++ b/drivers/gles3/rasterizer_canvas_gles3.cpp @@ -32,18 +32,17 @@ #ifdef GLES3_ENABLED -#include "rasterizer_gles3.h" -#include "rasterizer_scene_gles3.h" - #include "core/config/project_settings.h" #include "core/math/geometry_2d.h" #include "core/math/transform_interpolator.h" +#include "drivers/gles3/rasterizer_gles3.h" +#include "drivers/gles3/rasterizer_scene_gles3.h" +#include "drivers/gles3/storage/config.h" +#include "drivers/gles3/storage/material_storage.h" +#include "drivers/gles3/storage/mesh_storage.h" +#include "drivers/gles3/storage/particles_storage.h" +#include "drivers/gles3/storage/texture_storage.h" #include "servers/rendering/rendering_server_default.h" -#include "storage/config.h" -#include "storage/material_storage.h" -#include "storage/mesh_storage.h" -#include "storage/particles_storage.h" -#include "storage/texture_storage.h" void RasterizerCanvasGLES3::_update_transform_2d_to_mat4(const Transform2D &p_transform, float *p_mat4) { p_mat4[0] = p_transform.columns[0][0]; diff --git a/drivers/gles3/rasterizer_canvas_gles3.h b/drivers/gles3/rasterizer_canvas_gles3.h index ff1b18c318..22c4ce54ec 100644 --- a/drivers/gles3/rasterizer_canvas_gles3.h +++ b/drivers/gles3/rasterizer_canvas_gles3.h @@ -32,14 +32,13 @@ #ifdef GLES3_ENABLED -#include "rasterizer_scene_gles3.h" -#include "servers/rendering/renderer_canvas_render.h" -#include "servers/rendering/renderer_compositor.h" -#include "storage/material_storage.h" -#include "storage/texture_storage.h" - +#include "drivers/gles3/rasterizer_scene_gles3.h" #include "drivers/gles3/shaders/canvas.glsl.gen.h" #include "drivers/gles3/shaders/canvas_occlusion.glsl.gen.h" +#include "drivers/gles3/storage/material_storage.h" +#include "drivers/gles3/storage/texture_storage.h" +#include "servers/rendering/renderer_canvas_render.h" +#include "servers/rendering/renderer_compositor.h" class RasterizerSceneGLES3; diff --git a/drivers/gles3/rasterizer_gles3.cpp b/drivers/gles3/rasterizer_gles3.cpp index 58eaa42dde..25462b266b 100644 --- a/drivers/gles3/rasterizer_gles3.cpp +++ b/drivers/gles3/rasterizer_gles3.cpp @@ -29,7 +29,6 @@ /**************************************************************************/ #include "rasterizer_gles3.h" -#include "storage/utilities.h" #ifdef GLES3_ENABLED @@ -37,7 +36,8 @@ #include "core/io/dir_access.h" #include "core/io/image.h" #include "core/os/os.h" -#include "storage/texture_storage.h" +#include "drivers/gles3/storage/texture_storage.h" +#include "drivers/gles3/storage/utilities.h" #define _EXT_DEBUG_OUTPUT_SYNCHRONOUS_ARB 0x8242 #define _EXT_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB 0x8243 diff --git a/drivers/gles3/rasterizer_gles3.h b/drivers/gles3/rasterizer_gles3.h index 6fd5f9c2f2..034961326e 100644 --- a/drivers/gles3/rasterizer_gles3.h +++ b/drivers/gles3/rasterizer_gles3.h @@ -32,23 +32,23 @@ #ifdef GLES3_ENABLED -#include "effects/copy_effects.h" -#include "effects/cubemap_filter.h" -#include "effects/feed_effects.h" -#include "effects/glow.h" -#include "effects/post_effects.h" -#include "environment/fog.h" -#include "environment/gi.h" -#include "rasterizer_canvas_gles3.h" -#include "rasterizer_scene_gles3.h" +#include "drivers/gles3/effects/copy_effects.h" +#include "drivers/gles3/effects/cubemap_filter.h" +#include "drivers/gles3/effects/feed_effects.h" +#include "drivers/gles3/effects/glow.h" +#include "drivers/gles3/effects/post_effects.h" +#include "drivers/gles3/environment/fog.h" +#include "drivers/gles3/environment/gi.h" +#include "drivers/gles3/rasterizer_canvas_gles3.h" +#include "drivers/gles3/rasterizer_scene_gles3.h" +#include "drivers/gles3/storage/config.h" +#include "drivers/gles3/storage/light_storage.h" +#include "drivers/gles3/storage/material_storage.h" +#include "drivers/gles3/storage/mesh_storage.h" +#include "drivers/gles3/storage/particles_storage.h" +#include "drivers/gles3/storage/texture_storage.h" +#include "drivers/gles3/storage/utilities.h" #include "servers/rendering/renderer_compositor.h" -#include "storage/config.h" -#include "storage/light_storage.h" -#include "storage/material_storage.h" -#include "storage/mesh_storage.h" -#include "storage/particles_storage.h" -#include "storage/texture_storage.h" -#include "storage/utilities.h" class RasterizerGLES3 : public RendererCompositor { private: diff --git a/drivers/gles3/rasterizer_scene_gles3.cpp b/drivers/gles3/rasterizer_scene_gles3.cpp index 56fb95ea9e..c9cc20b7b5 100644 --- a/drivers/gles3/rasterizer_scene_gles3.cpp +++ b/drivers/gles3/rasterizer_scene_gles3.cpp @@ -30,24 +30,23 @@ #include "rasterizer_scene_gles3.h" -#include "drivers/gles3/effects/copy_effects.h" -#include "drivers/gles3/effects/feed_effects.h" -#include "drivers/gles3/storage/material_storage.h" -#include "rasterizer_gles3.h" -#include "storage/config.h" -#include "storage/mesh_storage.h" -#include "storage/particles_storage.h" -#include "storage/texture_storage.h" +#ifdef GLES3_ENABLED #include "core/config/project_settings.h" #include "core/templates/sort_array.h" +#include "drivers/gles3/effects/copy_effects.h" +#include "drivers/gles3/effects/feed_effects.h" +#include "drivers/gles3/rasterizer_gles3.h" +#include "drivers/gles3/storage/config.h" +#include "drivers/gles3/storage/material_storage.h" +#include "drivers/gles3/storage/mesh_storage.h" +#include "drivers/gles3/storage/particles_storage.h" +#include "drivers/gles3/storage/texture_storage.h" #include "servers/camera/camera_feed.h" #include "servers/camera/camera_server.h" #include "servers/rendering/rendering_server_default.h" #include "servers/rendering/rendering_server_globals.h" -#ifdef GLES3_ENABLED - RasterizerSceneGLES3 *RasterizerSceneGLES3::singleton = nullptr; RenderGeometryInstance *RasterizerSceneGLES3::geometry_instance_create(RID p_base) { diff --git a/drivers/gles3/rasterizer_scene_gles3.h b/drivers/gles3/rasterizer_scene_gles3.h index 30486db2bc..90d58b7f07 100644 --- a/drivers/gles3/rasterizer_scene_gles3.h +++ b/drivers/gles3/rasterizer_scene_gles3.h @@ -30,24 +30,25 @@ #pragma once -#include "platform_gl.h" #ifdef GLES3_ENABLED #include "core/math/projection.h" #include "core/templates/paged_allocator.h" #include "core/templates/rid_owner.h" #include "core/templates/self_list.h" +#include "drivers/gles3/shader_gles3.h" #include "drivers/gles3/shaders/effects/cubemap_filter.glsl.gen.h" #include "drivers/gles3/shaders/sky.glsl.gen.h" +#include "drivers/gles3/storage/light_storage.h" +#include "drivers/gles3/storage/material_storage.h" +#include "drivers/gles3/storage/render_scene_buffers_gles3.h" +#include "drivers/gles3/storage/utilities.h" #include "scene/resources/mesh.h" #include "servers/rendering/renderer_compositor.h" #include "servers/rendering/renderer_scene_render.h" #include "servers/rendering/rendering_server.h" -#include "shader_gles3.h" -#include "storage/light_storage.h" -#include "storage/material_storage.h" -#include "storage/render_scene_buffers_gles3.h" -#include "storage/utilities.h" + +#include "platform_gl.h" enum RenderListType { RENDER_LIST_OPAQUE, //used for opaque objects diff --git a/drivers/gles3/shader_gles3.cpp b/drivers/gles3/shader_gles3.cpp index 346e906462..f43d0a0c87 100644 --- a/drivers/gles3/shader_gles3.cpp +++ b/drivers/gles3/shader_gles3.cpp @@ -34,7 +34,6 @@ #include "core/io/dir_access.h" #include "core/io/file_access.h" - #include "drivers/gles3/rasterizer_gles3.h" #include "drivers/gles3/storage/config.h" diff --git a/drivers/gles3/shader_gles3.h b/drivers/gles3/shader_gles3.h index 7589e828cf..fac5ad8bcc 100644 --- a/drivers/gles3/shader_gles3.h +++ b/drivers/gles3/shader_gles3.h @@ -30,6 +30,8 @@ #pragma once +#ifdef GLES3_ENABLED + #include "core/math/projection.h" #include "core/os/mutex.h" #include "core/string/string_builder.h" @@ -38,8 +40,6 @@ #include "core/templates/rid_owner.h" #include "servers/rendering/rendering_server.h" -#ifdef GLES3_ENABLED - #include "platform_gl.h" class ShaderGLES3 { diff --git a/drivers/gles3/storage/config.cpp b/drivers/gles3/storage/config.cpp index a8892bd511..c893398fe1 100644 --- a/drivers/gles3/storage/config.cpp +++ b/drivers/gles3/storage/config.cpp @@ -28,11 +28,11 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /**************************************************************************/ -#ifdef GLES3_ENABLED - #include "config.h" -#include "../rasterizer_gles3.h" +#ifdef GLES3_ENABLED + +#include "drivers/gles3/rasterizer_gles3.h" #ifdef WEB_ENABLED #include diff --git a/drivers/gles3/storage/light_storage.cpp b/drivers/gles3/storage/light_storage.cpp index df8b43f879..8c84bc6bef 100644 --- a/drivers/gles3/storage/light_storage.cpp +++ b/drivers/gles3/storage/light_storage.cpp @@ -28,14 +28,15 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /**************************************************************************/ +#include "light_storage.h" + #ifdef GLES3_ENABLED -#include "light_storage.h" -#include "../rasterizer_gles3.h" -#include "../rasterizer_scene_gles3.h" #include "core/config/project_settings.h" #include "core/math/geometry_3d.h" -#include "texture_storage.h" +#include "drivers/gles3/rasterizer_gles3.h" +#include "drivers/gles3/rasterizer_scene_gles3.h" +#include "drivers/gles3/storage/texture_storage.h" using namespace GLES3; diff --git a/drivers/gles3/storage/light_storage.h b/drivers/gles3/storage/light_storage.h index 487a14e54d..6ce652f746 100644 --- a/drivers/gles3/storage/light_storage.h +++ b/drivers/gles3/storage/light_storage.h @@ -32,15 +32,15 @@ #ifdef GLES3_ENABLED -#include "platform_gl.h" -#include "render_scene_buffers_gles3.h" - #include "core/templates/local_vector.h" #include "core/templates/rid_owner.h" +#include "drivers/gles3/storage/render_scene_buffers_gles3.h" #include "drivers/gles3/storage/texture_storage.h" #include "servers/rendering/storage/light_storage.h" #include "servers/rendering/storage/utilities.h" +#include "platform_gl.h" + namespace GLES3 { /* LIGHT */ diff --git a/drivers/gles3/storage/material_storage.cpp b/drivers/gles3/storage/material_storage.cpp index 1f7f5932e0..4ba0a14dec 100644 --- a/drivers/gles3/storage/material_storage.cpp +++ b/drivers/gles3/storage/material_storage.cpp @@ -28,17 +28,16 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /**************************************************************************/ +#include "material_storage.h" + #ifdef GLES3_ENABLED #include "core/config/project_settings.h" - -#include "config.h" -#include "material_storage.h" -#include "particles_storage.h" -#include "texture_storage.h" - #include "drivers/gles3/rasterizer_canvas_gles3.h" #include "drivers/gles3/rasterizer_gles3.h" +#include "drivers/gles3/storage/config.h" +#include "drivers/gles3/storage/particles_storage.h" +#include "drivers/gles3/storage/texture_storage.h" #include "servers/rendering/storage/variant_converters.h" using namespace GLES3; diff --git a/drivers/gles3/storage/material_storage.h b/drivers/gles3/storage/material_storage.h index 7136f1a03d..c8ee5e7aee 100644 --- a/drivers/gles3/storage/material_storage.h +++ b/drivers/gles3/storage/material_storage.h @@ -34,16 +34,15 @@ #include "core/templates/rid_owner.h" #include "core/templates/self_list.h" -#include "servers/rendering/shader_compiler.h" -#include "servers/rendering/shader_language.h" -#include "servers/rendering/storage/material_storage.h" -#include "servers/rendering/storage/utilities.h" - #include "drivers/gles3/shaders/canvas.glsl.gen.h" #include "drivers/gles3/shaders/particles.glsl.gen.h" #include "drivers/gles3/shaders/scene.glsl.gen.h" #include "drivers/gles3/shaders/sky.glsl.gen.h" #include "drivers/gles3/shaders/tex_blit.glsl.gen.h" +#include "servers/rendering/shader_compiler.h" +#include "servers/rendering/shader_language.h" +#include "servers/rendering/storage/material_storage.h" +#include "servers/rendering/storage/utilities.h" namespace GLES3 { diff --git a/drivers/gles3/storage/mesh_storage.cpp b/drivers/gles3/storage/mesh_storage.cpp index e51bef158d..1f13d58e01 100644 --- a/drivers/gles3/storage/mesh_storage.cpp +++ b/drivers/gles3/storage/mesh_storage.cpp @@ -28,12 +28,13 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /**************************************************************************/ +#include "mesh_storage.h" + #ifdef GLES3_ENABLED -#include "mesh_storage.h" -#include "config.h" -#include "texture_storage.h" -#include "utilities.h" +#include "drivers/gles3/storage/config.h" +#include "drivers/gles3/storage/texture_storage.h" +#include "drivers/gles3/storage/utilities.h" using namespace GLES3; diff --git a/drivers/gles3/storage/particles_storage.cpp b/drivers/gles3/storage/particles_storage.cpp index 4f3b13aad7..9551064782 100644 --- a/drivers/gles3/storage/particles_storage.cpp +++ b/drivers/gles3/storage/particles_storage.cpp @@ -28,16 +28,15 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /**************************************************************************/ -#ifdef GLES3_ENABLED - #include "particles_storage.h" -#include "config.h" -#include "material_storage.h" -#include "mesh_storage.h" -#include "texture_storage.h" -#include "utilities.h" +#ifdef GLES3_ENABLED +#include "drivers/gles3/storage/config.h" +#include "drivers/gles3/storage/material_storage.h" +#include "drivers/gles3/storage/mesh_storage.h" +#include "drivers/gles3/storage/texture_storage.h" +#include "drivers/gles3/storage/utilities.h" #include "servers/rendering/rendering_server_globals.h" using namespace GLES3; diff --git a/drivers/gles3/storage/render_scene_buffers_gles3.cpp b/drivers/gles3/storage/render_scene_buffers_gles3.cpp index e973968111..70f3ebdae9 100644 --- a/drivers/gles3/storage/render_scene_buffers_gles3.cpp +++ b/drivers/gles3/storage/render_scene_buffers_gles3.cpp @@ -28,12 +28,13 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /**************************************************************************/ +#include "render_scene_buffers_gles3.h" + #ifdef GLES3_ENABLED -#include "render_scene_buffers_gles3.h" -#include "config.h" -#include "texture_storage.h" -#include "utilities.h" +#include "drivers/gles3/storage/config.h" +#include "drivers/gles3/storage/texture_storage.h" +#include "drivers/gles3/storage/utilities.h" // Will only be defined if GLES 3.2 headers are included #ifndef GL_TEXTURE_2D_MULTISAMPLE_ARRAY diff --git a/drivers/gles3/storage/texture_storage.cpp b/drivers/gles3/storage/texture_storage.cpp index eb86613d29..33a711258b 100644 --- a/drivers/gles3/storage/texture_storage.cpp +++ b/drivers/gles3/storage/texture_storage.cpp @@ -28,14 +28,14 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /**************************************************************************/ -#ifdef GLES3_ENABLED - #include "texture_storage.h" -#include "../effects/copy_effects.h" -#include "../rasterizer_gles3.h" -#include "config.h" -#include "utilities.h" +#ifdef GLES3_ENABLED + +#include "drivers/gles3/effects/copy_effects.h" +#include "drivers/gles3/rasterizer_gles3.h" +#include "drivers/gles3/storage/material_storage.h" +#include "drivers/gles3/storage/utilities.h" using namespace GLES3; diff --git a/drivers/gles3/storage/texture_storage.h b/drivers/gles3/storage/texture_storage.h index 2f153c9297..f47f74778a 100644 --- a/drivers/gles3/storage/texture_storage.h +++ b/drivers/gles3/storage/texture_storage.h @@ -32,16 +32,15 @@ #ifdef GLES3_ENABLED -#include "platform_gl.h" - -#include "config.h" #include "core/io/image.h" #include "core/os/os.h" #include "core/templates/rid_owner.h" +#include "drivers/gles3/shaders/canvas_sdf.glsl.gen.h" +#include "drivers/gles3/storage/config.h" #include "servers/rendering/renderer_compositor.h" #include "servers/rendering/storage/texture_storage.h" -#include "drivers/gles3/shaders/canvas_sdf.glsl.gen.h" +#include "platform_gl.h" namespace GLES3 { diff --git a/drivers/gles3/storage/utilities.cpp b/drivers/gles3/storage/utilities.cpp index c8f939e706..4943c00ddb 100644 --- a/drivers/gles3/storage/utilities.cpp +++ b/drivers/gles3/storage/utilities.cpp @@ -28,17 +28,17 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /**************************************************************************/ -#ifdef GLES3_ENABLED - #include "utilities.h" -#include "../rasterizer_gles3.h" -#include "config.h" -#include "light_storage.h" -#include "material_storage.h" -#include "mesh_storage.h" -#include "particles_storage.h" -#include "texture_storage.h" +#ifdef GLES3_ENABLED + +#include "drivers/gles3/rasterizer_gles3.h" +#include "drivers/gles3/storage/config.h" +#include "drivers/gles3/storage/light_storage.h" +#include "drivers/gles3/storage/material_storage.h" +#include "drivers/gles3/storage/mesh_storage.h" +#include "drivers/gles3/storage/particles_storage.h" +#include "drivers/gles3/storage/texture_storage.h" using namespace GLES3; From 13bb08286e98c025d8bded932be65afb2ca8718e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Fri, 30 Jan 2026 12:34:25 +0100 Subject: [PATCH 2/3] GLES3: Remove unnecessary includes --- drivers/gles3/effects/feed_effects.h | 1 - drivers/gles3/rasterizer_canvas_gles3.cpp | 3 +-- drivers/gles3/rasterizer_canvas_gles3.h | 5 ----- drivers/gles3/rasterizer_gles3.cpp | 2 -- drivers/gles3/rasterizer_scene_gles3.cpp | 2 +- drivers/gles3/rasterizer_scene_gles3.h | 9 +-------- drivers/gles3/shader_gles3.cpp | 1 + drivers/gles3/shader_gles3.h | 8 +++----- drivers/gles3/storage/config.cpp | 2 ++ drivers/gles3/storage/config.h | 8 ++++++-- drivers/gles3/storage/light_storage.cpp | 2 +- drivers/gles3/storage/light_storage.h | 3 ++- drivers/gles3/storage/material_storage.cpp | 1 - drivers/gles3/storage/texture_storage.h | 3 +-- 14 files changed, 19 insertions(+), 31 deletions(-) diff --git a/drivers/gles3/effects/feed_effects.h b/drivers/gles3/effects/feed_effects.h index 255fd80ce6..78a705754f 100644 --- a/drivers/gles3/effects/feed_effects.h +++ b/drivers/gles3/effects/feed_effects.h @@ -32,7 +32,6 @@ #ifdef GLES3_ENABLED -#include "drivers/gles3/shader_gles3.h" #include "drivers/gles3/shaders/feed.glsl.gen.h" namespace GLES3 { diff --git a/drivers/gles3/rasterizer_canvas_gles3.cpp b/drivers/gles3/rasterizer_canvas_gles3.cpp index cdb69da324..29e2fae7bb 100644 --- a/drivers/gles3/rasterizer_canvas_gles3.cpp +++ b/drivers/gles3/rasterizer_canvas_gles3.cpp @@ -36,13 +36,12 @@ #include "core/math/geometry_2d.h" #include "core/math/transform_interpolator.h" #include "drivers/gles3/rasterizer_gles3.h" -#include "drivers/gles3/rasterizer_scene_gles3.h" #include "drivers/gles3/storage/config.h" -#include "drivers/gles3/storage/material_storage.h" #include "drivers/gles3/storage/mesh_storage.h" #include "drivers/gles3/storage/particles_storage.h" #include "drivers/gles3/storage/texture_storage.h" #include "servers/rendering/rendering_server_default.h" +#include "servers/rendering/rendering_server_globals.h" void RasterizerCanvasGLES3::_update_transform_2d_to_mat4(const Transform2D &p_transform, float *p_mat4) { p_mat4[0] = p_transform.columns[0][0]; diff --git a/drivers/gles3/rasterizer_canvas_gles3.h b/drivers/gles3/rasterizer_canvas_gles3.h index 22c4ce54ec..3c0184d6a8 100644 --- a/drivers/gles3/rasterizer_canvas_gles3.h +++ b/drivers/gles3/rasterizer_canvas_gles3.h @@ -32,15 +32,10 @@ #ifdef GLES3_ENABLED -#include "drivers/gles3/rasterizer_scene_gles3.h" #include "drivers/gles3/shaders/canvas.glsl.gen.h" #include "drivers/gles3/shaders/canvas_occlusion.glsl.gen.h" #include "drivers/gles3/storage/material_storage.h" -#include "drivers/gles3/storage/texture_storage.h" #include "servers/rendering/renderer_canvas_render.h" -#include "servers/rendering/renderer_compositor.h" - -class RasterizerSceneGLES3; class RasterizerCanvasGLES3 : public RendererCanvasRender { static RasterizerCanvasGLES3 *singleton; diff --git a/drivers/gles3/rasterizer_gles3.cpp b/drivers/gles3/rasterizer_gles3.cpp index 25462b266b..9b6338810d 100644 --- a/drivers/gles3/rasterizer_gles3.cpp +++ b/drivers/gles3/rasterizer_gles3.cpp @@ -36,8 +36,6 @@ #include "core/io/dir_access.h" #include "core/io/image.h" #include "core/os/os.h" -#include "drivers/gles3/storage/texture_storage.h" -#include "drivers/gles3/storage/utilities.h" #define _EXT_DEBUG_OUTPUT_SYNCHRONOUS_ARB 0x8242 #define _EXT_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB 0x8243 diff --git a/drivers/gles3/rasterizer_scene_gles3.cpp b/drivers/gles3/rasterizer_scene_gles3.cpp index c9cc20b7b5..ada0af8897 100644 --- a/drivers/gles3/rasterizer_scene_gles3.cpp +++ b/drivers/gles3/rasterizer_scene_gles3.cpp @@ -38,9 +38,9 @@ #include "drivers/gles3/effects/feed_effects.h" #include "drivers/gles3/rasterizer_gles3.h" #include "drivers/gles3/storage/config.h" -#include "drivers/gles3/storage/material_storage.h" #include "drivers/gles3/storage/mesh_storage.h" #include "drivers/gles3/storage/particles_storage.h" +#include "drivers/gles3/storage/render_scene_buffers_gles3.h" #include "drivers/gles3/storage/texture_storage.h" #include "servers/camera/camera_feed.h" #include "servers/camera/camera_server.h" diff --git a/drivers/gles3/rasterizer_scene_gles3.h b/drivers/gles3/rasterizer_scene_gles3.h index 90d58b7f07..06daba39ac 100644 --- a/drivers/gles3/rasterizer_scene_gles3.h +++ b/drivers/gles3/rasterizer_scene_gles3.h @@ -36,19 +36,12 @@ #include "core/templates/paged_allocator.h" #include "core/templates/rid_owner.h" #include "core/templates/self_list.h" -#include "drivers/gles3/shader_gles3.h" -#include "drivers/gles3/shaders/effects/cubemap_filter.glsl.gen.h" -#include "drivers/gles3/shaders/sky.glsl.gen.h" #include "drivers/gles3/storage/light_storage.h" #include "drivers/gles3/storage/material_storage.h" -#include "drivers/gles3/storage/render_scene_buffers_gles3.h" -#include "drivers/gles3/storage/utilities.h" -#include "scene/resources/mesh.h" -#include "servers/rendering/renderer_compositor.h" #include "servers/rendering/renderer_scene_render.h" #include "servers/rendering/rendering_server.h" -#include "platform_gl.h" +class RenderSceneBuffersGLES3; enum RenderListType { RENDER_LIST_OPAQUE, //used for opaque objects diff --git a/drivers/gles3/shader_gles3.cpp b/drivers/gles3/shader_gles3.cpp index f43d0a0c87..c1b47bf45c 100644 --- a/drivers/gles3/shader_gles3.cpp +++ b/drivers/gles3/shader_gles3.cpp @@ -34,6 +34,7 @@ #include "core/io/dir_access.h" #include "core/io/file_access.h" +#include "core/string/string_builder.h" #include "drivers/gles3/rasterizer_gles3.h" #include "drivers/gles3/storage/config.h" diff --git a/drivers/gles3/shader_gles3.h b/drivers/gles3/shader_gles3.h index fac5ad8bcc..c0da89a841 100644 --- a/drivers/gles3/shader_gles3.h +++ b/drivers/gles3/shader_gles3.h @@ -32,9 +32,7 @@ #ifdef GLES3_ENABLED -#include "core/math/projection.h" -#include "core/os/mutex.h" -#include "core/string/string_builder.h" +#include "core/templates/a_hash_map.h" #include "core/templates/hash_map.h" #include "core/templates/local_vector.h" #include "core/templates/rid_owner.h" @@ -42,6 +40,8 @@ #include "platform_gl.h" +class StringBuilder; + class ShaderGLES3 { public: struct TextureUniformData { @@ -105,8 +105,6 @@ private: LocalVector> variants; }; - Mutex variant_set_mutex; - void _get_uniform_locations(Version::Specialization &spec, Version *p_version); void _compile_specialization(Version::Specialization &spec, uint32_t p_variant, Version *p_version, uint64_t p_specialization); diff --git a/drivers/gles3/storage/config.cpp b/drivers/gles3/storage/config.cpp index c893398fe1..328b954239 100644 --- a/drivers/gles3/storage/config.cpp +++ b/drivers/gles3/storage/config.cpp @@ -32,6 +32,8 @@ #ifdef GLES3_ENABLED +#include "core/config/project_settings.h" +#include "core/string/ustring.h" #include "drivers/gles3/rasterizer_gles3.h" #ifdef WEB_ENABLED diff --git a/drivers/gles3/storage/config.h b/drivers/gles3/storage/config.h index 4ddfba3c0e..e6bc906a74 100644 --- a/drivers/gles3/storage/config.h +++ b/drivers/gles3/storage/config.h @@ -32,10 +32,12 @@ #ifdef GLES3_ENABLED -#include "core/config/project_settings.h" -#include "core/string/ustring.h" #include "core/templates/hash_set.h" +// FIXME: platform_gl.h includes windows.h via egl.h, which defines ConnectFlags. +// This breaks include project_settings.h in config.cpp, so we include object.h first. +#include "core/object/object.h" + #include "platform_gl.h" #ifdef ANDROID_ENABLED @@ -46,6 +48,8 @@ typedef void (*PFNGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVRPROC)(GLenum, GLenu typedef void (*PFNEGLIMAGETARGETTEXTURE2DOESPROC)(GLenum, void *); #endif +class String; + namespace GLES3 { class Config { diff --git a/drivers/gles3/storage/light_storage.cpp b/drivers/gles3/storage/light_storage.cpp index 8c84bc6bef..8429423a49 100644 --- a/drivers/gles3/storage/light_storage.cpp +++ b/drivers/gles3/storage/light_storage.cpp @@ -36,7 +36,7 @@ #include "core/math/geometry_3d.h" #include "drivers/gles3/rasterizer_gles3.h" #include "drivers/gles3/rasterizer_scene_gles3.h" -#include "drivers/gles3/storage/texture_storage.h" +#include "drivers/gles3/storage/render_scene_buffers_gles3.h" using namespace GLES3; diff --git a/drivers/gles3/storage/light_storage.h b/drivers/gles3/storage/light_storage.h index 6ce652f746..b9dd5d6969 100644 --- a/drivers/gles3/storage/light_storage.h +++ b/drivers/gles3/storage/light_storage.h @@ -34,13 +34,14 @@ #include "core/templates/local_vector.h" #include "core/templates/rid_owner.h" -#include "drivers/gles3/storage/render_scene_buffers_gles3.h" #include "drivers/gles3/storage/texture_storage.h" #include "servers/rendering/storage/light_storage.h" #include "servers/rendering/storage/utilities.h" #include "platform_gl.h" +class RenderSceneBuffersGLES3; + namespace GLES3 { /* LIGHT */ diff --git a/drivers/gles3/storage/material_storage.cpp b/drivers/gles3/storage/material_storage.cpp index 4ba0a14dec..e5416d22b2 100644 --- a/drivers/gles3/storage/material_storage.cpp +++ b/drivers/gles3/storage/material_storage.cpp @@ -36,7 +36,6 @@ #include "drivers/gles3/rasterizer_canvas_gles3.h" #include "drivers/gles3/rasterizer_gles3.h" #include "drivers/gles3/storage/config.h" -#include "drivers/gles3/storage/particles_storage.h" #include "drivers/gles3/storage/texture_storage.h" #include "servers/rendering/storage/variant_converters.h" diff --git a/drivers/gles3/storage/texture_storage.h b/drivers/gles3/storage/texture_storage.h index f47f74778a..aaadc953e1 100644 --- a/drivers/gles3/storage/texture_storage.h +++ b/drivers/gles3/storage/texture_storage.h @@ -33,11 +33,10 @@ #ifdef GLES3_ENABLED #include "core/io/image.h" -#include "core/os/os.h" +#include "core/templates/rb_map.h" #include "core/templates/rid_owner.h" #include "drivers/gles3/shaders/canvas_sdf.glsl.gen.h" #include "drivers/gles3/storage/config.h" -#include "servers/rendering/renderer_compositor.h" #include "servers/rendering/storage/texture_storage.h" #include "platform_gl.h" From cd650f23363f410b1678198b9a08c34569d4a695 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Fri, 30 Jan 2026 15:46:20 +0100 Subject: [PATCH 3/3] GLES3: Move some static utils to new RasterizerUtilGLES3 This helps remove dependencies on RasterizerGLES3 in many files, which is useful as RasterizerGLES3 basically includes everything, so it brings a lot of transient includes. --- drivers/gles3/rasterizer_canvas_gles3.cpp | 7 +-- drivers/gles3/rasterizer_gles3.cpp | 29 +++---------- drivers/gles3/rasterizer_gles3.h | 11 ++--- drivers/gles3/rasterizer_scene_gles3.cpp | 27 ++++++------ drivers/gles3/rasterizer_util_gles3.cpp | 52 +++++++++++++++++++++++ drivers/gles3/rasterizer_util_gles3.h | 51 ++++++++++++++++++++++ drivers/gles3/shader_gles3.cpp | 12 +++--- drivers/gles3/storage/config.cpp | 5 ++- drivers/gles3/storage/light_storage.cpp | 14 +++--- drivers/gles3/storage/texture_storage.cpp | 17 ++++---- drivers/gles3/storage/utilities.cpp | 6 +-- 11 files changed, 159 insertions(+), 72 deletions(-) create mode 100644 drivers/gles3/rasterizer_util_gles3.cpp create mode 100644 drivers/gles3/rasterizer_util_gles3.h diff --git a/drivers/gles3/rasterizer_canvas_gles3.cpp b/drivers/gles3/rasterizer_canvas_gles3.cpp index 29e2fae7bb..344a1ec232 100644 --- a/drivers/gles3/rasterizer_canvas_gles3.cpp +++ b/drivers/gles3/rasterizer_canvas_gles3.cpp @@ -35,11 +35,12 @@ #include "core/config/project_settings.h" #include "core/math/geometry_2d.h" #include "core/math/transform_interpolator.h" -#include "drivers/gles3/rasterizer_gles3.h" +#include "drivers/gles3/rasterizer_util_gles3.h" #include "drivers/gles3/storage/config.h" #include "drivers/gles3/storage/mesh_storage.h" #include "drivers/gles3/storage/particles_storage.h" #include "drivers/gles3/storage/texture_storage.h" +#include "drivers/gles3/storage/utilities.h" #include "servers/rendering/rendering_server_default.h" #include "servers/rendering/rendering_server_globals.h" @@ -1660,7 +1661,7 @@ void RasterizerCanvasGLES3::light_update_shadow(RID p_rid, int p_shadow_index, c glEnable(GL_SCISSOR_TEST); glScissor(0, p_shadow_index * 2, state.shadow_texture_size, 2); glClearColor(p_far, p_far, p_far, 1.0); - RasterizerGLES3::clear_depth(1.0); + RasterizerUtilGLES3::clear_depth(1.0); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); @@ -1793,7 +1794,7 @@ void RasterizerCanvasGLES3::light_update_directional_shadow(RID p_rid, int p_sha glEnable(GL_SCISSOR_TEST); glScissor(0, p_shadow_index * 2, state.shadow_texture_size, 2); glClearColor(1.0, 1.0, 1.0, 1.0); - RasterizerGLES3::clear_depth(1.0); + RasterizerUtilGLES3::clear_depth(1.0); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); diff --git a/drivers/gles3/rasterizer_gles3.cpp b/drivers/gles3/rasterizer_gles3.cpp index 9b6338810d..4f5e9deb83 100644 --- a/drivers/gles3/rasterizer_gles3.cpp +++ b/drivers/gles3/rasterizer_gles3.cpp @@ -90,8 +90,6 @@ bool RasterizerGLES3::screen_flipped_y = false; #endif -bool RasterizerGLES3::gles_over_gl = true; - void RasterizerGLES3::begin_frame(double frame_step) { frame++; delta = frame_step; @@ -123,23 +121,6 @@ void RasterizerGLES3::gl_end_frame(bool p_swap_buffers) { } } -void RasterizerGLES3::clear_depth(float p_depth) { -#ifdef GL_API_ENABLED - if (is_gles_over_gl()) { - glClearDepth(p_depth); - } -#endif // GL_API_ENABLED -#ifdef GLES_API_ENABLED - if (!is_gles_over_gl()) { - glClearDepthf(p_depth); - } -#endif // GLES_API_ENABLED -} - -void RasterizerGLES3::clear_stencil(int32_t p_stencil) { - glClearStencil(p_stencil); -} - #ifdef CAN_DEBUG static void GLAPIENTRY _gl_debug_print(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *message, const GLvoid *userParam) { // These are ultimately annoying, so removing for now. @@ -253,7 +234,7 @@ RasterizerGLES3::RasterizerGLES3() { bool has_egl = (eglGetProcAddress != nullptr); #endif - if (gles_over_gl) { + if (RasterizerUtilGLES3::is_gles_over_gl()) { if (has_egl && !glad_loaded && gladLoadGL((GLADloadfunc)&_egl_load_function_wrapper)) { glad_loaded = true; } @@ -264,7 +245,7 @@ RasterizerGLES3::RasterizerGLES3() { } #endif // EGL_ENABLED - if (gles_over_gl) { + if (RasterizerUtilGLES3::is_gles_over_gl()) { if (!glad_loaded && gladLoaderLoadGL()) { glad_loaded = true; } @@ -279,7 +260,7 @@ RasterizerGLES3::RasterizerGLES3() { // or we need to actually test for this situation before constructing this. ERR_FAIL_COND_MSG(!glad_loaded, "Error initializing GLAD."); - if (gles_over_gl) { + if (RasterizerUtilGLES3::is_gles_over_gl()) { if (OS::get_singleton()->is_stdout_verbose()) { if (GLAD_GL_ARB_debug_output) { glEnable(_EXT_DEBUG_OUTPUT_SYNCHRONOUS_ARB); @@ -295,7 +276,7 @@ RasterizerGLES3::RasterizerGLES3() { // For debugging #ifdef CAN_DEBUG #ifdef GL_API_ENABLED - if (gles_over_gl) { + if (RasterizerUtilGLES3::is_gles_over_gl()) { if (OS::get_singleton()->is_stdout_verbose() && GLAD_GL_ARB_debug_output) { glDebugMessageControlARB(_EXT_DEBUG_SOURCE_API_ARB, _EXT_DEBUG_TYPE_ERROR_ARB, _EXT_DEBUG_SEVERITY_HIGH_ARB, 0, nullptr, GL_TRUE); glDebugMessageControlARB(_EXT_DEBUG_SOURCE_API_ARB, _EXT_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB, _EXT_DEBUG_SEVERITY_HIGH_ARB, 0, nullptr, GL_TRUE); @@ -307,7 +288,7 @@ RasterizerGLES3::RasterizerGLES3() { } #endif // GL_API_ENABLED #ifdef GLES_API_ENABLED - if (!gles_over_gl) { + if (!RasterizerUtilGLES3::is_gles_over_gl()) { if (OS::get_singleton()->is_stdout_verbose()) { DebugMessageCallbackARB callback = (DebugMessageCallbackARB)eglGetProcAddress("glDebugMessageCallback"); if (!callback) { diff --git a/drivers/gles3/rasterizer_gles3.h b/drivers/gles3/rasterizer_gles3.h index 034961326e..c7339c1f6a 100644 --- a/drivers/gles3/rasterizer_gles3.h +++ b/drivers/gles3/rasterizer_gles3.h @@ -41,6 +41,7 @@ #include "drivers/gles3/environment/gi.h" #include "drivers/gles3/rasterizer_canvas_gles3.h" #include "drivers/gles3/rasterizer_scene_gles3.h" +#include "drivers/gles3/rasterizer_util_gles3.h" #include "drivers/gles3/storage/config.h" #include "drivers/gles3/storage/light_storage.h" #include "drivers/gles3/storage/material_storage.h" @@ -61,8 +62,6 @@ private: static bool screen_flipped_y; #endif - static bool gles_over_gl; - protected: GLES3::Config *config = nullptr; GLES3::Utilities *utilities = nullptr; @@ -113,13 +112,9 @@ public: return memnew(RasterizerGLES3); } - static bool is_gles_over_gl() { return gles_over_gl; } - static void clear_depth(float p_depth); - static void clear_stencil(int32_t p_stencil); - static void make_current(bool p_gles_over_gl) { - gles_over_gl = p_gles_over_gl; - OS::get_singleton()->set_gles_over_gl(gles_over_gl); + RasterizerUtilGLES3::set_gles_over_gl(p_gles_over_gl); + OS::get_singleton()->set_gles_over_gl(p_gles_over_gl); _create_func = _create_current; low_end = true; } diff --git a/drivers/gles3/rasterizer_scene_gles3.cpp b/drivers/gles3/rasterizer_scene_gles3.cpp index ada0af8897..94b8a1c002 100644 --- a/drivers/gles3/rasterizer_scene_gles3.cpp +++ b/drivers/gles3/rasterizer_scene_gles3.cpp @@ -35,13 +35,16 @@ #include "core/config/project_settings.h" #include "core/templates/sort_array.h" #include "drivers/gles3/effects/copy_effects.h" +#include "drivers/gles3/effects/cubemap_filter.h" #include "drivers/gles3/effects/feed_effects.h" -#include "drivers/gles3/rasterizer_gles3.h" +#include "drivers/gles3/effects/post_effects.h" +#include "drivers/gles3/rasterizer_util_gles3.h" #include "drivers/gles3/storage/config.h" #include "drivers/gles3/storage/mesh_storage.h" #include "drivers/gles3/storage/particles_storage.h" #include "drivers/gles3/storage/render_scene_buffers_gles3.h" #include "drivers/gles3/storage/texture_storage.h" +#include "drivers/gles3/storage/utilities.h" #include "servers/camera/camera_feed.h" #include "servers/camera/camera_server.h" #include "servers/rendering/rendering_server_default.h" @@ -587,7 +590,7 @@ GLuint _init_radiance_texture(int p_size, int p_mipmaps, String p_name) { glGenTextures(1, &radiance_id); glBindTexture(GL_TEXTURE_CUBE_MAP, radiance_id); #ifdef GL_API_ENABLED - if (RasterizerGLES3::is_gles_over_gl()) { + if (RasterizerUtilGLES3::is_gles_over_gl()) { //TODO, on low-end compare this to allocating each face of each mip individually // see: https://www.khronos.org/registry/OpenGL-Refpages/es3.0/html/glTexStorage2D.xhtml for (int i = 0; i < 6; i++) { @@ -598,7 +601,7 @@ GLuint _init_radiance_texture(int p_size, int p_mipmaps, String p_name) { } #endif // GL_API_ENABLED #ifdef GLES_API_ENABLED - if (!RasterizerGLES3::is_gles_over_gl()) { + if (!RasterizerUtilGLES3::is_gles_over_gl()) { glTexStorage2D(GL_TEXTURE_CUBE_MAP, p_mipmaps, GL_RGB10_A2, p_size, p_size); } #endif // GLES_API_ENABLED @@ -2234,7 +2237,7 @@ void RasterizerSceneGLES3::_render_shadow_pass(RID p_light, RID p_shadow_atlas, glColorMask(0, 0, 0, 0); glDrawBuffers(0, nullptr); - RasterizerGLES3::clear_depth(0.0); + RasterizerUtilGLES3::clear_depth(0.0); if (needs_clear) { glClear(GL_DEPTH_BUFFER_BIT); } @@ -2559,7 +2562,7 @@ void RasterizerSceneGLES3::render_scene(const Ref &p_render_ scene_state.enable_gl_scissor_test(false); glColorMask(1, 1, 1, 1); - RasterizerGLES3::clear_depth(0.0); + RasterizerUtilGLES3::clear_depth(0.0); glClearColor(0.0, 0.0, 0.0, 0.0); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); GLuint db = GL_COLOR_ATTACHMENT0; @@ -2619,8 +2622,8 @@ void RasterizerSceneGLES3::render_scene(const Ref &p_render_ scene_state.enable_gl_stencil_test(false); glColorMask(0, 0, 0, 0); - RasterizerGLES3::clear_depth(0.0); - RasterizerGLES3::clear_stencil(0); + RasterizerUtilGLES3::clear_depth(0.0); + RasterizerUtilGLES3::clear_stencil(0); glClear(GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); // Some desktop GL implementations fall apart when using Multiview with GL_NONE. GLuint db = p_camera_data->view_count > 1 ? GL_COLOR_ATTACHMENT0 : GL_NONE; @@ -2664,8 +2667,8 @@ void RasterizerSceneGLES3::render_scene(const Ref &p_render_ scene_state.enable_gl_stencil_test(false); if (!fb_cleared) { - RasterizerGLES3::clear_depth(0.0); - RasterizerGLES3::clear_stencil(0); + RasterizerUtilGLES3::clear_depth(0.0); + RasterizerUtilGLES3::clear_stencil(0); glClear(GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); } @@ -3929,7 +3932,7 @@ void RasterizerSceneGLES3::render_particle_collider_heightfield(RID p_collider, glDrawBuffers(0, nullptr); glColorMask(0, 0, 0, 0); - RasterizerGLES3::clear_depth(0.0); + RasterizerUtilGLES3::clear_depth(0.0); glClear(GL_DEPTH_BUFFER_BIT); @@ -3981,7 +3984,7 @@ void RasterizerSceneGLES3::_render_uv2(const PagedArray + +// This class is meant to hold static utility methods with minimal dependencies. + +class RasterizerUtilGLES3 { +private: + static bool gles_over_gl; + +public: + static void set_gles_over_gl(bool p_gles_over_gl) { + gles_over_gl = p_gles_over_gl; + } + static bool is_gles_over_gl() { + return gles_over_gl; + } + + static void clear_depth(float p_depth); + static void clear_stencil(int32_t p_stencil); +}; diff --git a/drivers/gles3/shader_gles3.cpp b/drivers/gles3/shader_gles3.cpp index c1b47bf45c..c8f57c3df6 100644 --- a/drivers/gles3/shader_gles3.cpp +++ b/drivers/gles3/shader_gles3.cpp @@ -35,7 +35,7 @@ #include "core/io/dir_access.h" #include "core/io/file_access.h" #include "core/string/string_builder.h" -#include "drivers/gles3/rasterizer_gles3.h" +#include "drivers/gles3/rasterizer_util_gles3.h" #include "drivers/gles3/storage/config.h" static String _mkid(const String &p_id) { @@ -154,7 +154,7 @@ RID ShaderGLES3::version_create() { } void ShaderGLES3::_build_variant_code(StringBuilder &builder, uint32_t p_variant, const Version *p_version, StageType p_stage_type, uint64_t p_specialization) { - if (RasterizerGLES3::is_gles_over_gl()) { + if (RasterizerUtilGLES3::is_gles_over_gl()) { builder.append("#version 330\n"); builder.append("#define USE_GLES_OVER_GL\n"); } else { @@ -215,7 +215,7 @@ void ShaderGLES3::_build_variant_code(StringBuilder &builder, uint32_t p_variant // Default to highp precision unless specified otherwise. builder.append("precision highp float;\n"); builder.append("precision highp int;\n"); - if (!RasterizerGLES3::is_gles_over_gl()) { + if (!RasterizerUtilGLES3::is_gles_over_gl()) { builder.append("precision highp sampler2D;\n"); builder.append("precision highp samplerCube;\n"); builder.append("precision highp sampler2DArray;\n"); @@ -527,7 +527,7 @@ String ShaderGLES3::_version_get_sha1(Version *p_version) const { hash_build.append("[custom_defines:" + itos(i) + "]"); hash_build.append(p_version->custom_defines[i].get_data()); } - if (RasterizerGLES3::is_gles_over_gl()) { + if (RasterizerUtilGLES3::is_gles_over_gl()) { hash_build.append("[gl]"); } else { hash_build.append("[gles]"); @@ -546,7 +546,7 @@ bool ShaderGLES3::_load_from_cache(Version *p_version) { return false; #else #if !defined(ANDROID_ENABLED) && !defined(IOS_ENABLED) - if (RasterizerGLES3::is_gles_over_gl() && (glProgramBinary == nullptr)) { // ARB_get_program_binary extension not available. + if (RasterizerUtilGLES3::is_gles_over_gl() && (glProgramBinary == nullptr)) { // ARB_get_program_binary extension not available. return false; } #endif @@ -633,7 +633,7 @@ void ShaderGLES3::_save_to_cache(Version *p_version) { #else ERR_FAIL_COND(!shader_cache_dir_valid); #if !defined(ANDROID_ENABLED) && !defined(IOS_ENABLED) - if (RasterizerGLES3::is_gles_over_gl() && (glGetProgramBinary == nullptr)) { // ARB_get_program_binary extension not available. + if (RasterizerUtilGLES3::is_gles_over_gl() && (glGetProgramBinary == nullptr)) { // ARB_get_program_binary extension not available. return; } #endif diff --git a/drivers/gles3/storage/config.cpp b/drivers/gles3/storage/config.cpp index 328b954239..5a0373c788 100644 --- a/drivers/gles3/storage/config.cpp +++ b/drivers/gles3/storage/config.cpp @@ -33,8 +33,9 @@ #ifdef GLES3_ENABLED #include "core/config/project_settings.h" +#include "core/os/os.h" #include "core/string/ustring.h" -#include "drivers/gles3/rasterizer_gles3.h" +#include "drivers/gles3/rasterizer_util_gles3.h" #ifdef WEB_ENABLED #include @@ -85,7 +86,7 @@ Config::Config() { astc_layered_supported = astc_hdr_supported || extensions.has("GL_KHR_texture_compression_astc_sliced_3d"); astc_supported = astc_layered_supported || extensions.has("GL_KHR_texture_compression_astc_ldr") || extensions.has("WEBGL_compressed_texture_astc"); - if (RasterizerGLES3::is_gles_over_gl()) { + if (RasterizerUtilGLES3::is_gles_over_gl()) { float_texture_supported = true; float_texture_linear_supported = true; etc2_supported = false; diff --git a/drivers/gles3/storage/light_storage.cpp b/drivers/gles3/storage/light_storage.cpp index 8429423a49..6acbda053f 100644 --- a/drivers/gles3/storage/light_storage.cpp +++ b/drivers/gles3/storage/light_storage.cpp @@ -34,9 +34,11 @@ #include "core/config/project_settings.h" #include "core/math/geometry_3d.h" -#include "drivers/gles3/rasterizer_gles3.h" +#include "drivers/gles3/effects/cubemap_filter.h" #include "drivers/gles3/rasterizer_scene_gles3.h" +#include "drivers/gles3/rasterizer_util_gles3.h" #include "drivers/gles3/storage/render_scene_buffers_gles3.h" +#include "drivers/gles3/storage/utilities.h" using namespace GLES3; @@ -857,7 +859,7 @@ bool LightStorage::reflection_probe_instance_begin_render(RID p_instance, RID p_ atlas->reflections.write[i].color = color; #ifdef GL_API_ENABLED - if (RasterizerGLES3::is_gles_over_gl()) { + if (RasterizerUtilGLES3::is_gles_over_gl()) { for (int s = 0; s < 6; s++) { glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + s, 0, GL_RGB10_A2, atlas->size, atlas->size, 0, GL_RGBA, GL_UNSIGNED_INT_2_10_10_10_REV, nullptr); } @@ -865,7 +867,7 @@ bool LightStorage::reflection_probe_instance_begin_render(RID p_instance, RID p_ } #endif #ifdef GLES_API_ENABLED - if (!RasterizerGLES3::is_gles_over_gl()) { + if (!RasterizerUtilGLES3::is_gles_over_gl()) { glTexStorage2D(GL_TEXTURE_CUBE_MAP, atlas->mipmap_count, GL_RGB10_A2, atlas->size, atlas->size); } #endif // GLES_API_ENABLED @@ -895,7 +897,7 @@ bool LightStorage::reflection_probe_instance_begin_render(RID p_instance, RID p_ atlas->reflections.write[i].radiance = radiance; #ifdef GL_API_ENABLED - if (RasterizerGLES3::is_gles_over_gl()) { + if (RasterizerUtilGLES3::is_gles_over_gl()) { for (int s = 0; s < 6; s++) { glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + s, 0, GL_RGB10_A2, atlas->size, atlas->size, 0, GL_RGBA, GL_UNSIGNED_INT_2_10_10_10_REV, nullptr); } @@ -903,7 +905,7 @@ bool LightStorage::reflection_probe_instance_begin_render(RID p_instance, RID p_ } #endif #ifdef GLES_API_ENABLED - if (!RasterizerGLES3::is_gles_over_gl()) { + if (!RasterizerUtilGLES3::is_gles_over_gl()) { glTexStorage2D(GL_TEXTURE_CUBE_MAP, atlas->mipmap_count, GL_RGB10_A2, atlas->size, atlas->size); } #endif // GLES_API_ENABLED @@ -1668,7 +1670,7 @@ void LightStorage::update_directional_shadow_atlas() { glUseProgram(0); glDepthMask(GL_TRUE); glBindFramebuffer(GL_FRAMEBUFFER, directional_shadow.fbo); - RasterizerGLES3::clear_depth(0.0); + RasterizerUtilGLES3::clear_depth(0.0); glClear(GL_DEPTH_BUFFER_BIT); glBindTexture(GL_TEXTURE_2D, 0); diff --git a/drivers/gles3/storage/texture_storage.cpp b/drivers/gles3/storage/texture_storage.cpp index 33a711258b..0862c2a4ea 100644 --- a/drivers/gles3/storage/texture_storage.cpp +++ b/drivers/gles3/storage/texture_storage.cpp @@ -34,6 +34,7 @@ #include "drivers/gles3/effects/copy_effects.h" #include "drivers/gles3/rasterizer_gles3.h" +#include "drivers/gles3/rasterizer_util_gles3.h" #include "drivers/gles3/storage/material_storage.h" #include "drivers/gles3/storage/utilities.h" @@ -283,7 +284,7 @@ TextureStorage::TextureStorage() { } #ifdef GL_API_ENABLED - if (RasterizerGLES3::is_gles_over_gl()) { + if (RasterizerUtilGLES3::is_gles_over_gl()) { glEnable(GL_PROGRAM_POINT_SIZE); } #endif // GL_API_ENABLED @@ -453,7 +454,7 @@ static inline Error _get_gl_uncompressed_format(const Ref &p_image, Image switch (p_format) { case Image::FORMAT_L8: { - if (RasterizerGLES3::is_gles_over_gl()) { + if (RasterizerUtilGLES3::is_gles_over_gl()) { r_gl_internal_format = GL_R8; r_gl_format = GL_RED; r_gl_type = GL_UNSIGNED_BYTE; @@ -464,7 +465,7 @@ static inline Error _get_gl_uncompressed_format(const Ref &p_image, Image } } break; case Image::FORMAT_LA8: { - if (RasterizerGLES3::is_gles_over_gl()) { + if (RasterizerUtilGLES3::is_gles_over_gl()) { r_gl_internal_format = GL_RG8; r_gl_format = GL_RG; r_gl_type = GL_UNSIGNED_BYTE; @@ -1521,7 +1522,7 @@ Ref TextureStorage::texture_2d_get(RID p_texture) const { Ref image; #ifdef GL_API_ENABLED - if (RasterizerGLES3::is_gles_over_gl()) { + if (RasterizerUtilGLES3::is_gles_over_gl()) { // OpenGL 3.3 supports glGetTexImage which is faster and simpler than glReadPixels. // It also allows for reading compressed textures, mipmaps, and more formats. Vector data; @@ -1564,7 +1565,7 @@ Ref TextureStorage::texture_2d_get(RID p_texture) const { } #endif // GL_API_ENABLED #ifdef GLES_API_ENABLED - if (!RasterizerGLES3::is_gles_over_gl()) { + if (!RasterizerUtilGLES3::is_gles_over_gl()) { Vector data; // On web and mobile we always read an RGBA8 image with no mipmaps. @@ -2001,7 +2002,7 @@ void TextureStorage::_texture_set_data(RID p_texture, const Ref &p_image, bool needs_decompress = texture->resize_to_po2; // Support for RGTC-compressed Texture Arrays isn't mandated by GLES3/WebGL. - if (!RasterizerGLES3::is_gles_over_gl() && texture->target == GL_TEXTURE_2D_ARRAY) { + if (!RasterizerUtilGLES3::is_gles_over_gl() && texture->target == GL_TEXTURE_2D_ARRAY) { if (p_image->get_format() == Image::FORMAT_RGTC_R || p_image->get_format() == Image::FORMAT_RGTC_RG) { needs_decompress = true; } @@ -2173,7 +2174,7 @@ void TextureStorage::_texture_set_swizzle(GLES3::Texture *p_texture, Image::Form #ifndef WEB_ENABLED switch (p_texture->format) { case Image::FORMAT_L8: { - if (RasterizerGLES3::is_gles_over_gl()) { + if (RasterizerUtilGLES3::is_gles_over_gl()) { glTexParameteri(p_texture->target, GL_TEXTURE_SWIZZLE_R, GL_RED); glTexParameteri(p_texture->target, GL_TEXTURE_SWIZZLE_G, GL_RED); glTexParameteri(p_texture->target, GL_TEXTURE_SWIZZLE_B, GL_RED); @@ -2186,7 +2187,7 @@ void TextureStorage::_texture_set_swizzle(GLES3::Texture *p_texture, Image::Form } } break; case Image::FORMAT_LA8: { - if (RasterizerGLES3::is_gles_over_gl()) { + if (RasterizerUtilGLES3::is_gles_over_gl()) { glTexParameteri(p_texture->target, GL_TEXTURE_SWIZZLE_R, GL_RED); glTexParameteri(p_texture->target, GL_TEXTURE_SWIZZLE_G, GL_RED); glTexParameteri(p_texture->target, GL_TEXTURE_SWIZZLE_B, GL_RED); diff --git a/drivers/gles3/storage/utilities.cpp b/drivers/gles3/storage/utilities.cpp index 4943c00ddb..4da43004fb 100644 --- a/drivers/gles3/storage/utilities.cpp +++ b/drivers/gles3/storage/utilities.cpp @@ -32,7 +32,7 @@ #ifdef GLES3_ENABLED -#include "drivers/gles3/rasterizer_gles3.h" +#include "drivers/gles3/rasterizer_util_gles3.h" #include "drivers/gles3/storage/config.h" #include "drivers/gles3/storage/light_storage.h" #include "drivers/gles3/storage/material_storage.h" @@ -325,7 +325,7 @@ void Utilities::capture_timestamp(const String &p_name) { ERR_FAIL_COND(frames[frame].timestamp_count >= max_timestamp_query_elements); #ifdef GL_API_ENABLED - if (RasterizerGLES3::is_gles_over_gl()) { + if (RasterizerUtilGLES3::is_gles_over_gl()) { glQueryCounter(frames[frame].queries[frames[frame].timestamp_count], GL_TIMESTAMP); } #endif // GL_API_ENABLED @@ -339,7 +339,7 @@ void Utilities::_capture_timestamps_begin() { // frame is incremented at the end of the frame so this gives us the queries for frame - 2. By then they should be ready. if (frames[frame].timestamp_count) { #ifdef GL_API_ENABLED - if (RasterizerGLES3::is_gles_over_gl()) { + if (RasterizerUtilGLES3::is_gles_over_gl()) { for (uint32_t i = 0; i < frames[frame].timestamp_count; i++) { uint64_t temp = 0; glGetQueryObjectui64v(frames[frame].queries[i], GL_QUERY_RESULT, &temp);