From 5694feef61111e66ae97ef8dc4c43be668174ffa Mon Sep 17 00:00:00 2001 From: Emanuele Disco Date: Tue, 19 Mar 2024 13:30:09 +0900 Subject: [PATCH] feat: enable hardware clip planes and cull distances for mobile if the extension is present Also add the NO_CLIPDISTANCE_SUPPORT definition if RFL_NO_CLIP_PLANES is present --- src/common/rendering/gl/gl_shader.cpp | 2 ++ src/common/rendering/gl_load/gl_interface.cpp | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/common/rendering/gl/gl_shader.cpp b/src/common/rendering/gl/gl_shader.cpp index b8251856e3a..a1e813df671 100644 --- a/src/common/rendering/gl/gl_shader.cpp +++ b/src/common/rendering/gl/gl_shader.cpp @@ -408,6 +408,8 @@ bool FShader::Load(const char * name, const char * vert_prog_lump, const char * vp_comb << "#version 330 core\n"; #endif vp_comb << "#define SUPPORTS_SHADOWMAPS\n"; + if (gl.flags & RFL_NO_CLIP_PLANES) + vp_comb << "#define NO_CLIPDISTANCE_SUPPORT\n"; bool lightbuffertype = screen->mLights->GetBufferType(); if (!lightbuffertype) diff --git a/src/common/rendering/gl_load/gl_interface.cpp b/src/common/rendering/gl_load/gl_interface.cpp index 51f9ad4f64e..b43e3a6507f 100644 --- a/src/common/rendering/gl_load/gl_interface.cpp +++ b/src/common/rendering/gl_load/gl_interface.cpp @@ -140,9 +140,9 @@ void gl_LoadExtensions() #ifdef __MOBILE__ gl_version = 3.31; - gl.flags |= RFL_NO_CLIP_PLANES; gl.flags |= RFL_INVALIDATE_BUFFER; gl.flags |= RFL_SHADER_STORAGE_BUFFER; + if (!CheckExtension("GL_EXT_clip_cull_distance")) gl.flags |= RFL_NO_CLIP_PLANES; #endif // Don't even start if it's lower than 2.0 or no framebuffers are available (The framebuffer extension is needed for glGenerateMipmapsEXT!) if (gl_version < 3.3f)