[Bf-blender-cvs] [3e27dd5b553] master: Fix T67623 Eevee: Modulo node making unexpected/inconsistent behaviour

Clément Foucault noreply at git.blender.org
Wed Aug 7 13:09:27 CEST 2019


Commit: 3e27dd5b553e83c9d6358f5a93597c86a2bf3cb1
Author: Clément Foucault
Date:   Wed Aug 7 13:08:28 2019 +0200
Branches: master
https://developer.blender.org/rB3e27dd5b553e83c9d6358f5a93597c86a2bf3cb1

Fix T67623 Eevee: Modulo node making unexpected/inconsistent behaviour

This was a precision error. Using a more robust approach

===================================================================

M	source/blender/gpu/shaders/gpu_shader_material.glsl

===================================================================

diff --git a/source/blender/gpu/shaders/gpu_shader_material.glsl b/source/blender/gpu/shaders/gpu_shader_material.glsl
index 6149409774a..00b8ce54eb3 100644
--- a/source/blender/gpu/shaders/gpu_shader_material.glsl
+++ b/source/blender/gpu/shaders/gpu_shader_material.glsl
@@ -383,12 +383,10 @@ void math_modulo(float val1, float val2, out float outval)
     outval = 0.0;
   }
   else {
-    outval = mod(val1, val2);
+    /* change sign to match C convention, mod in GLSL will take absolute for negative numbers,
+     * see https://www.opengl.org/sdk/docs/man/html/mod.xhtml */
+    outval = sign(val1) * mod(abs(val1), val2);
   }
-
-  /* change sign to match C convention, mod in GLSL will take absolute for negative numbers,
-   * see https://www.opengl.org/sdk/docs/man/html/mod.xhtml */
-  outval = (val1 > 0.0) ? outval : outval - val2;
 }
 
 void math_abs(float val1, out float outval)



More information about the Bf-blender-cvs mailing list