Fix T101562: GPU: Update fmod to match Cycles/OSL behavior
Implementation from: https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/blob/main/src/include/OSL/dual.h#L1283 https://github.com/OpenImageIO/oiio/blob/master/src/include/OpenImageIO/fmath.h#L1605 Reviewed By: fclem Maniphest Tasks: T101562 Differential Revision: https://developer.blender.org/D16497
This commit is contained in:
parent
a968f1b9b3
commit
21eeedfc60
Notes:
blender-bot
2023-02-14 06:17:14 +01:00
Referenced by issue #101562, 7 mod 7 in Eevee Math Node return an incorrect value
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue