diff --git a/source/blender/gpu/shaders/common/gpu_shader_common_math_utils.glsl b/source/blender/gpu/shaders/common/gpu_shader_common_math_utils.glsl index 47f8e26db0b..ca9c42f2027 100644 --- a/source/blender/gpu/shaders/common/gpu_shader_common_math_utils.glsl +++ b/source/blender/gpu/shaders/common/gpu_shader_common_math_utils.glsl @@ -5,11 +5,14 @@ float safe_divide(float a, float b) return (b != 0.0) ? a / b : 0.0; } -/* fmod function compatible with OSL using nvidia reference example. */ +/* fmod function compatible with OSL (copy from OSL/dual.h) */ float compatible_fmod(float a, float b) { - float c = (b != 0.0) ? fract(abs(a / b)) * abs(b) : 0.0; - return (a < 0.0) ? -c : c; + if (b != 0.0f) { + int N = int(a / b); + return a - N * b; + } + return 0.0f; } float compatible_pow(float x, float y)