Browse Source

GLES2: Ensure extension checks for texture2DLod

In canvas.glsl and scene.glsl, we were using texel2DFetch from stdlib.glsl,
which uses texture2DLod. In both cases, the stdlib.glsl include came before
the define of texture2DLod.

Might fix issues for drivers that don't support GL_EXT_shader_texture_lod.
Rémi Verschelde 6 years ago
parent
commit
f5f565e3e4

+ 0 - 23
drivers/gles2/shaders/canvas.glsl

@@ -220,29 +220,6 @@ VERTEX_SHADER_CODE
 /* clang-format off */
 /* clang-format off */
 [fragment]
 [fragment]
 
 
-#ifndef USE_GLES_OVER_GL
-
-#ifdef GL_EXT_shader_texture_lod
-#extension GL_EXT_shader_texture_lod : enable
-#define texture2DLod(img, coord, lod) texture2DLodEXT(img, coord, lod)
-#define textureCubeLod(img, coord, lod) textureCubeLodEXT(img, coord, lod)
-#endif
-
-#endif
-
-#ifdef GL_ARB_shader_texture_lod
-#extension GL_ARB_shader_texture_lod : enable
-#endif
-
-
-#if !defined(GL_EXT_shader_texture_lod) && !defined(GL_ARB_shader_texture_lod)
-#define texture2DLod(img, coord, lod) texture2D(img, coord, lod)
-#define textureCubeLod(img, coord, lod) textureCube(img, coord, lod)
-#endif
-
-
-
-
 #ifdef USE_GLES_OVER_GL
 #ifdef USE_GLES_OVER_GL
 #define lowp
 #define lowp
 #define mediump
 #define mediump

+ 2 - 7
drivers/gles2/shaders/cubemap_filter.glsl

@@ -26,14 +26,12 @@ void main() {
 [fragment]
 [fragment]
 
 
 #ifndef USE_GLES_OVER_GL
 #ifndef USE_GLES_OVER_GL
-
 #ifdef GL_EXT_shader_texture_lod
 #ifdef GL_EXT_shader_texture_lod
 #extension GL_EXT_shader_texture_lod : enable
 #extension GL_EXT_shader_texture_lod : enable
 #define texture2DLod(img, coord, lod) texture2DLodEXT(img, coord, lod)
 #define texture2DLod(img, coord, lod) texture2DLodEXT(img, coord, lod)
 #define textureCubeLod(img, coord, lod) textureCubeLodEXT(img, coord, lod)
 #define textureCubeLod(img, coord, lod) textureCubeLodEXT(img, coord, lod)
 #endif
 #endif
-
-#endif
+#endif // !USE_GLES_OVER_GL
 
 
 #ifdef GL_ARB_shader_texture_lod
 #ifdef GL_ARB_shader_texture_lod
 #extension GL_ARB_shader_texture_lod : enable
 #extension GL_ARB_shader_texture_lod : enable
@@ -44,8 +42,6 @@ void main() {
 #define textureCubeLod(img, coord, lod) textureCube(img, coord, lod)
 #define textureCubeLod(img, coord, lod) textureCube(img, coord, lod)
 #endif
 #endif
 
 
-
-
 #ifdef USE_GLES_OVER_GL
 #ifdef USE_GLES_OVER_GL
 #define lowp
 #define lowp
 #define mediump
 #define mediump
@@ -58,8 +54,7 @@ precision highp int;
 precision mediump float;
 precision mediump float;
 precision mediump int;
 precision mediump int;
 #endif
 #endif
-
-#endif
+#endif // USE_GLES_OVER_GL
 
 
 #ifdef USE_SOURCE_PANORAMA
 #ifdef USE_SOURCE_PANORAMA
 uniform sampler2D source_panorama; //texunit:0
 uniform sampler2D source_panorama; //texunit:0

+ 2 - 8
drivers/gles2/shaders/scene.glsl

@@ -16,7 +16,6 @@ precision highp int;
 
 
 #define M_PI 3.14159265359
 #define M_PI 3.14159265359
 
 
-
 //
 //
 // attributes
 // attributes
 //
 //
@@ -676,14 +675,12 @@ VERTEX_SHADER_CODE
 [fragment]
 [fragment]
 
 
 #ifndef USE_GLES_OVER_GL
 #ifndef USE_GLES_OVER_GL
-
 #ifdef GL_EXT_shader_texture_lod
 #ifdef GL_EXT_shader_texture_lod
 #extension GL_EXT_shader_texture_lod : enable
 #extension GL_EXT_shader_texture_lod : enable
 #define texture2DLod(img, coord, lod) texture2DLodEXT(img, coord, lod)
 #define texture2DLod(img, coord, lod) texture2DLodEXT(img, coord, lod)
 #define textureCubeLod(img, coord, lod) textureCubeLodEXT(img, coord, lod)
 #define textureCubeLod(img, coord, lod) textureCubeLodEXT(img, coord, lod)
 #endif
 #endif
-
-#endif
+#endif // !USE_GLES_OVER_GL
 
 
 #ifdef GL_ARB_shader_texture_lod
 #ifdef GL_ARB_shader_texture_lod
 #extension GL_ARB_shader_texture_lod : enable
 #extension GL_ARB_shader_texture_lod : enable
@@ -694,9 +691,6 @@ VERTEX_SHADER_CODE
 #define textureCubeLod(img, coord, lod) textureCube(img, coord, lod)
 #define textureCubeLod(img, coord, lod) textureCube(img, coord, lod)
 #endif
 #endif
 
 
-
-
-
 #ifdef USE_GLES_OVER_GL
 #ifdef USE_GLES_OVER_GL
 #define lowp
 #define lowp
 #define mediump
 #define mediump
@@ -709,7 +703,7 @@ precision highp int;
 precision mediump float;
 precision mediump float;
 precision mediump int;
 precision mediump int;
 #endif
 #endif
-#endif
+#endif // USE_GLES_OVER_GL
 
 
 #include "stdlib.glsl"
 #include "stdlib.glsl"
 
 

+ 16 - 0
drivers/gles2/shaders/stdlib.glsl

@@ -1,3 +1,19 @@
+#ifndef USE_GLES_OVER_GL
+#ifdef GL_EXT_shader_texture_lod
+#extension GL_EXT_shader_texture_lod : enable
+#define texture2DLod(img, coord, lod) texture2DLodEXT(img, coord, lod)
+#define textureCubeLod(img, coord, lod) textureCubeLodEXT(img, coord, lod)
+#endif
+#endif // !USE_GLES_OVER_GL
+
+#ifdef GL_ARB_shader_texture_lod
+#extension GL_ARB_shader_texture_lod : enable
+#endif
+
+#if !defined(GL_EXT_shader_texture_lod) && !defined(GL_ARB_shader_texture_lod)
+#define texture2DLod(img, coord, lod) texture2D(img, coord, lod)
+#define textureCubeLod(img, coord, lod) textureCube(img, coord, lod)
+#endif
 
 
 vec2 select2(vec2 a, vec2 b, bvec2 c) {
 vec2 select2(vec2 a, vec2 b, bvec2 c) {
 	vec2 ret;
 	vec2 ret;