From 3ff9e52dca8ce9e5900eb89fd06842f41b817b3d Mon Sep 17 00:00:00 2001 From: Antony Riakiotakis Date: Tue, 3 Feb 2015 15:08:28 +0100 Subject: Fix T43380 modulo operation in GLSL does not return negatives. Make it so by checking operand sign. --- source/blender/gpu/shaders/gpu_shader_material.glsl | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'source/blender') diff --git a/source/blender/gpu/shaders/gpu_shader_material.glsl b/source/blender/gpu/shaders/gpu_shader_material.glsl index 229abd7c5a6..17f0c20fad8 100644 --- a/source/blender/gpu/shaders/gpu_shader_material.glsl +++ b/source/blender/gpu/shaders/gpu_shader_material.glsl @@ -297,6 +297,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 = (val1 > 0) ? outval : -outval; } void math_abs(float val1, out float outval) -- cgit v1.2.3