From f2f478782fb78000820b08b201e8dafcaa614a20 Mon Sep 17 00:00:00 2001 From: kgv Date: Wed, 9 Sep 2015 14:24:21 +0300 Subject: [PATCH] 0026672: Visualization, TKOpenGl - workaround mobile hardware with extremely low precision of mod() in GLSL --- src/OpenGl/OpenGl_ShaderManager.cxx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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;" -- 2.39.5