]> OCCT Git - occt-copy.git/commitdiff
0029509: Visualization, TKOpenGl - Weighted OIT + MSAA shader compilation errors
authorkgv <kgv@opencascade.com>
Wed, 14 Feb 2018 19:58:34 +0000 (22:58 +0300)
committerkgv <kgv@opencascade.com>
Sat, 17 Mar 2018 12:30:09 +0000 (15:30 +0300)
Fix implicit cast ivec2->vec2 and specify GLSL version to "320 es" on appropriate devices.

src/OpenGl/OpenGl_ShaderManager.cxx

index f57e4a9b66ca2abfde99ae58daa65888cd59dacc..f8d5f481b1b754004543f1e97b474a925d1d7564 100644 (file)
@@ -1333,7 +1333,7 @@ Standard_Boolean OpenGl_ShaderManager::prepareStdProgramOitCompositing (const St
       EOL
       EOL"void main()"
       EOL"{"
-      EOL"  ivec2 aTexel  = ivec2 (textureSize (uAccumTexture) * TexCoord);"
+      EOL"  ivec2 aTexel  = ivec2 (vec2 (textureSize (uAccumTexture)) * TexCoord);"
       EOL"  vec4 aAccum   = texelFetch (uAccumTexture,  aTexel, gl_SampleID);"
       EOL"  float aWeight = texelFetch (uWeightTexture, aTexel, gl_SampleID).r;"
       EOL"  occSetFragColor (vec4 (aAccum.rgb / max (aWeight, 0.00001), aAccum.a));"
@@ -1344,9 +1344,13 @@ Standard_Boolean OpenGl_ShaderManager::prepareStdProgramOitCompositing (const St
       aProgramSrc->SetHeader ("#version 400");
     }
   #else
-    if (myContext->IsGlGreaterEqual (3, 0))
+    if (myContext->IsGlGreaterEqual (3, 2))
     {
-      aProgramSrc->SetHeader ("#version 300 es");
+      aProgramSrc->SetHeader ("#version 320 es");
+    }
+    else if (myContext->IsGlGreaterEqual (3, 0))
+    {
+      aProgramSrc->SetHeader ("#version 300 es"); // with GL_OES_sample_variables extension
     }
   #endif
   }