From: kgv Date: Wed, 9 Sep 2015 11:24:21 +0000 (+0300) Subject: 0026672: Visualization, TKOpenGl - workaround mobile hardware with extremely low... X-Git-Tag: V6_9_1~34 X-Git-Url: http://git.dev.opencascade.org/gitweb/?a=commitdiff_plain;h=f2f478782fb78000820b08b201e8dafcaa614a20;p=occt-copy.git 0026672: Visualization, TKOpenGl - workaround mobile hardware with extremely low precision of mod() in GLSL --- diff --git a/src/OpenGl/OpenGl_ShaderManager.cxx b/src/OpenGl/OpenGl_ShaderManager.cxx index 2643f09e68..87117d4186 100644 --- a/src/OpenGl/OpenGl_ShaderManager.cxx +++ b/src/OpenGl/OpenGl_ShaderManager.cxx @@ -1638,7 +1638,7 @@ Standard_Boolean OpenGl_ShaderManager::prepareStdProgramStereo (Handle(OpenGl_Sh EOL"{" EOL" vec4 aColorL = occTexture2D (uLeftSampler, TexCoord);" EOL" vec4 aColorR = occTexture2D (uRightSampler, TexCoord);" - EOL" if (int (mod (gl_FragCoord.y + 1.5, 2.0)) == 1)" + EOL" if (int (mod (gl_FragCoord.y - 1023.5, 2.0)) != 1)" EOL" {" EOL" occFragColor = aColorL;" EOL" }" @@ -1661,7 +1661,7 @@ Standard_Boolean OpenGl_ShaderManager::prepareStdProgramStereo (Handle(OpenGl_Sh EOL"{" EOL" vec4 aColorL = occTexture2D (uLeftSampler, TexCoord);" EOL" vec4 aColorR = occTexture2D (uRightSampler, TexCoord);" - EOL" if (int (mod (gl_FragCoord.x + 1.5, 2.0)) != 1)" + EOL" if (int (mod (gl_FragCoord.x - 1023.5, 2.0)) == 1)" EOL" {" EOL" occFragColor = aColorL;" EOL" }" @@ -1684,8 +1684,8 @@ Standard_Boolean OpenGl_ShaderManager::prepareStdProgramStereo (Handle(OpenGl_Sh EOL"{" EOL" vec4 aColorL = occTexture2D (uLeftSampler, TexCoord);" EOL" vec4 aColorR = occTexture2D (uRightSampler, TexCoord);" - EOL" bool isEvenX = int(mod(floor(gl_FragCoord.x + 1.5), 2.0)) == 1;" - EOL" bool isEvenY = int(mod(floor(gl_FragCoord.y + 1.5), 2.0)) != 1;" + EOL" bool isEvenX = int(mod(floor(gl_FragCoord.x - 1023.5), 2.0)) != 1;" + EOL" bool isEvenY = int(mod(floor(gl_FragCoord.y - 1023.5), 2.0)) == 1;" EOL" if ((isEvenX && isEvenY) || (!isEvenX && !isEvenY))" EOL" {" EOL" occFragColor = aColorL;"