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: V7_0_0_beta~288 X-Git-Url: http://git.dev.opencascade.org/gitweb/?a=commitdiff_plain;h=6e66a3fa155460c49977b5a9300c30ce1f78ca14;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 842ce3546f..bd3635bedf 100644 --- a/src/OpenGl/OpenGl_ShaderManager.cxx +++ b/src/OpenGl/OpenGl_ShaderManager.cxx @@ -1684,7 +1684,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" }" @@ -1707,7 +1707,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" }" @@ -1730,8 +1730,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;"