Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2019-08-07 14:08:28 +0300
committerClément Foucault <foucault.clem@gmail.com>2019-08-07 14:08:48 +0300
commit3e27dd5b553e83c9d6358f5a93597c86a2bf3cb1 (patch)
tree74026f8221619bb544e784867a28a3a8d8ce2c8d /source/blender/gpu
parentbe4063dbbb64f241b4ccbbf007c58abc762a414e (diff)
Fix T67623 Eevee: Modulo node making unexpected/inconsistent behaviour
This was a precision error. Using a more robust approach
Diffstat (limited to 'source/blender/gpu')
-rw-r--r--source/blender/gpu/shaders/gpu_shader_material.glsl8
1 files changed, 3 insertions, 5 deletions
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)