]> OCCT Git - occt-copy.git/commitdiff
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 7d8713a3034da50e25e37595e22b14bbf888b94b..6147eaf0e7297fd373db9a8b1cb664c03cd73967 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 6843f067f2e0be55c3e112faf054c64fff87a131..6a3653134ca6ef7771e76287cc16b11655a0f773 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 8b7fe60f4936552e987124018786e79ed94af9e2..333e1172c4f5ccb0416804695e0edd8fdcaf62c8 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 bd3be983670d238ca898a9fd9ac98b53e92925d6..8c1adec3f09c27aa8e57c80fe3526baee5ea05f2 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"