0032110: Visualization, TKOpenGl - allow incomplete PBR on OpenGL ES 2.0 without...
authorkgv <kgv@opencascade.com>
Tue, 2 Feb 2021 11:33:57 +0000 (14:33 +0300)
committerbugmaster <bugmaster@opencascade.com>
Wed, 3 Feb 2021 15:38:50 +0000 (18:38 +0300)
textureCube() is now used as fallback when textureCubeLod() is unavailable.

src/OpenGl/OpenGl_Context.cxx
src/OpenGl/OpenGl_ShaderManager.cxx
src/Shaders/Declarations.glsl
src/Shaders/Shaders_Declarations_glsl.pxx

index 7d8713a..6147eaf 100644 (file)
@@ -3442,7 +3442,7 @@ void OpenGl_Context::init (const Standard_Boolean theIsCoreProfile)
           && arbTexFloat
           && (IsGlGreaterEqual (3, 0)
         #if defined(GL_ES_VERSION_2_0)
-          || CheckExtension ("GL_EXT_shader_texture_lod")
+          || true // || CheckExtension ("GL_EXT_shader_texture_lod") fallback is used when extension is unavailable
         #else
           || (IsGlGreaterEqual (2, 1) && CheckExtension ("GL_EXT_gpu_shader4"))
         #endif
index 6843f06..6a36531 100644 (file)
@@ -3206,6 +3206,11 @@ Standard_Boolean OpenGl_ShaderManager::preparePBREnvBakingProgram (Standard_Inte
     aProgramSrc->SetHeader ("#extension GL_EXT_shader_texture_lod : enable\n"
                             "#define textureCubeLod textureCubeLodEXT");
   }
+  else
+  {
+    myContext->PushMessage (GL_DEBUG_SOURCE_APPLICATION, GL_DEBUG_TYPE_PORTABILITY, 0, GL_DEBUG_SEVERITY_MEDIUM,
+                            "Warning: incomplete PBR lighting implementation due to missing OpenGL ES 3.0 or GL_EXT_shader_texture_lod support.");
+  }
 #else
   aProgramSrc->SetHeader ("#version 120");
 #endif
index 8b7fe60..333e117 100644 (file)
   #define occTexture2D   texture2D
   #define occTexture3D   texture3D
   #define occTextureCube textureCube
-  #define occTextureCubeLod textureCubeLod
+  #if !defined(GL_ES) || defined(textureCubeLod)
+    #define occTextureCubeLod textureCubeLod
+  #else // fallback
+    #define occTextureCubeLod(theSampl,theCoord,theLod) textureCube(theSampl,theCoord)
+  #endif
 #endif
 
 #ifdef GL_ES
index bd3be98..8c1adec 100644 (file)
@@ -35,7 +35,11 @@ static const char Shaders_Declarations_glsl[] =
   "  #define occTexture2D   texture2D\n"
   "  #define occTexture3D   texture3D\n"
   "  #define occTextureCube textureCube\n"
-  "  #define occTextureCubeLod textureCubeLod\n"
+  "  #if !defined(GL_ES) || defined(textureCubeLod)\n"
+  "    #define occTextureCubeLod textureCubeLod\n"
+  "  #else // fallback\n"
+  "    #define occTextureCubeLod(theSampl,theCoord,theLod) textureCube(theSampl,theCoord)\n"
+  "  #endif\n"
   "#endif\n"
   "\n"
   "#ifdef GL_ES\n"