20 return t * t * t * (t * (t * 6.0f - 15.0f) + 10.0f);
25 return (condition) ? -val : val;
30 const int h =
hash & 15;
31 const float g = 1 + (h & 7);
39 const float u =
fade(fx);
49#if !defined(__KERNEL_SSE__)
65 const float v0,
const float v1,
const float v2,
const float v3,
const float x,
float y)
68 return (1.0f -
y) * (v0 * x1 + v1 *
x) +
y * (
v2 * x1 + v3 *
x);
104 return z1 * (y1 * (v0 * x1 + v1 *
x) +
y * (
v2 * x1 + v3 *
x)) +
105 z * (y1 * (v4 * x1 + v5 *
x) +
y * (v6 * x1 + v7 *
x));
129 return mix(
tri_mix(v0, v1,
v2, v3, v4, v5, v6, v7,
x,
y,
z),
130 tri_mix(v8, v9, v10, v11, v12, v13, v14, v15,
x,
y,
z),
137 float u = h < 4 ?
x :
y;
138 float v = 2.0f * (h < 4 ?
y :
x);
145 float u = h < 8 ?
x :
y;
146 float vt = ((h == 12) || (h == 14)) ?
x :
z;
147 float v = h < 4 ?
y : vt;
154 float u = h < 24 ?
x :
y;
155 float v = h < 16 ?
y :
z;
156 float s = h < 8 ?
z :
w;
281 const float4 g =
mix(p, shuffle<2, 3, 2, 3>(p), shuffle<0>(f));
282 return mix(g, shuffle<1>(g), shuffle<1>(f));
289 return (t * t) * (t *
b);
293# define negate_if_nth_bit(val, h, n) ((val) ^ cast(((h) & (1 << (n))) << (31 - (n))))
300 return negate_if_nth_bit(u, h, 0) + negate_if_nth_bit(
v, h, 1);
322 const int4 X = shuffle<0, 0, 0, 0>(
XY, XY1);
323 const int4 Y = shuffle<0, 2, 0, 2>(shuffle<1, 1, 1, 1>(
XY, XY1));
325 const int4 h = hash_int4_2(
X,
Y);
328 const float4 fx = shuffle<0, 0, 0, 0>(fxy, fxy1);
329 const float4 fy = shuffle<0, 2, 0, 2>(shuffle<1, 1, 1, 1>(fxy, fxy1));
371 const float4 s =
mix(p, q, shuffle<0>(f));
372 const float4 g =
mix(s, shuffle<2, 3, 2, 3>(s), shuffle<1>(f));
373 return mix(g, shuffle<1>(g), shuffle<2>(f));
381# if !defined(__KERNEL_AVX2__)
389 return negate_if_nth_bit(u, h, 0) + negate_if_nth_bit(
v, h, 1);
399 return negate_if_nth_bit(u, h, 0) + negate_if_nth_bit(
v, h, 1) + negate_if_nth_bit(s, h, 2);
440 const int4 Y = shuffle<1, 1, 1, 1>(XYZ, XYZ1);
441 const int4 Z = shuffle<0, 2, 0, 2>(shuffle<2, 2, 2, 2>(XYZ, XYZ1));
443 const int4 h1 = hash_int4_3(shuffle<0>(XYZ),
Y,
Z);
444 const int4 h2 = hash_int4_3(shuffle<0>(XYZ1),
Y,
Z);
447 const float4 fy = shuffle<1, 1, 1, 1>(fxyz, fxyz1);
448 const float4 fz = shuffle<0, 2, 0, 2>(shuffle<2, 2, 2, 2>(fxyz, fxyz1));
450 const float4 g1 =
grad(h1, shuffle<0>(fxyz), fy, fz);
451 const float4 g2 =
grad(h2, shuffle<0>(fxyz1), fy, fz);
494 const int4 Y = shuffle<1, 1, 1, 1>(XYZW, XYZW1);
495 const int4 Z = shuffle<0, 2, 0, 2>(shuffle<2, 2, 2, 2>(XYZW, XYZW1));
497 const int4 h1 = hash_int4_4(shuffle<0>(XYZW),
Y,
Z, shuffle<3>(XYZW));
498 const int4 h2 = hash_int4_4(shuffle<0>(XYZW1),
Y,
Z, shuffle<3>(XYZW));
500 const int4 h3 = hash_int4_4(shuffle<0>(XYZW),
Y,
Z, shuffle<3>(XYZW1));
501 const int4 h4 = hash_int4_4(shuffle<0>(XYZW1),
Y,
Z, shuffle<3>(XYZW1));
504 const float4 fy = shuffle<1, 1, 1, 1>(fxyzw, fxyzw1);
505 const float4 fz = shuffle<0, 2, 0, 2>(shuffle<2, 2, 2, 2>(fxyzw, fxyzw1));
507 const float4 g1 =
grad(h1, shuffle<0>(fxyzw), fy, fz, shuffle<3>(fxyzw));
508 const float4 g2 =
grad(h2, shuffle<0>(fxyzw1), fy, fz, shuffle<3>(fxyzw));
510 const float4 g3 =
grad(h3, shuffle<0>(fxyzw), fy, fz, shuffle<3>(fxyzw1));
511 const float4 g4 =
grad(h4, shuffle<0>(fxyzw1), fy, fz, shuffle<3>(fxyzw1));
524 vfloat8 vt =
select((h == 12) | (h == 14),
x,
z);
526 return negate_if_nth_bit(u, h, 0) + negate_if_nth_bit(
v, h, 1);
530grad(
const vint8
hash,
const vfloat8
x,
const vfloat8
y,
const vfloat8
z,
const vfloat8
w)
536 return negate_if_nth_bit(u, h, 0) + negate_if_nth_bit(
v, h, 1) + negate_if_nth_bit(s, h, 2);
550 float4 fv = shuffle<3>(f);
552 return tri_mix(low(s), high(s), f);
578 int4 X = shuffle<0>(XYZ);
579 int4 X1 = shuffle<0>(XYZ1);
580 int4 Y = shuffle<1, 1, 1, 1>(XYZ, XYZ1);
581 int4 Z = shuffle<0, 2, 0, 2>(shuffle<2, 2, 2, 2>(XYZ, XYZ1));
586 float4 fx = shuffle<0>(fxyz);
587 float4 fx1 = shuffle<0>(fxyz1);
588 float4 fy = shuffle<1, 1, 1, 1>(fxyz, fxyz1);
589 float4 fz = shuffle<0, 2, 0, 2>(shuffle<2, 2, 2, 2>(fxyz, fxyz1));
630 int4 X = shuffle<0>(XYZW);
631 int4 X1 = shuffle<0>(XYZW1);
632 int4 Y = shuffle<1, 1, 1, 1>(XYZW, XYZW1);
633 int4 Z = shuffle<0, 2, 0, 2>(shuffle<2, 2, 2, 2>(XYZW, XYZW1));
634 int4 W = shuffle<3>(XYZW);
635 int4 W1 = shuffle<3>(XYZW1);
638 vint8 h2 = hash_int8_4(
642 float4 fx = shuffle<0>(fxyzw);
643 float4 fx1 = shuffle<0>(fxyzw1);
644 float4 fy = shuffle<1, 1, 1, 1>(fxyzw, fxyzw1);
645 float4 fz = shuffle<0, 2, 0, 2>(shuffle<2, 2, 2, 2>(fxyzw, fxyzw1));
646 float4 fw = shuffle<3>(fxyzw);
647 float4 fw1 = shuffle<3>(fxyzw1);
651 vfloat8 g2 =
grad(h2,
661# undef negate_if_nth_bit
693 const float precision_correction = 0.5f *
float(
fabsf(p) >= 1000000.0f);
697 p =
fmodf(p, 100000.0f) + precision_correction;
709 const float2 precision_correction = 0.5f *
715 p =
fmod(p, 100000.0f) + precision_correction;
727 const float3 precision_correction = 0.5f *
733 p =
fmod(p, 100000.0f) + precision_correction;
745 const float4 precision_correction = 0.5f *
751 p =
fmod(p, 100000.0f) + precision_correction;
__forceinline float extract(const int4 &b)
ATTR_WARN_UNUSED_RESULT const BMVert * v2
ATTR_WARN_UNUSED_RESULT const BMVert * v
SIMD_FORCE_INLINE const btScalar & z() const
Return the z value.
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
#define ccl_device_noinline_cpu
#define ccl_device_inline
#define CCL_NAMESPACE_END
ccl_device_inline uint hash_uint4(const uint kx, const uint ky, const uint kz, const uint kw)
ccl_device_inline uint hash_uint2(const uint kx, const uint ky)
ccl_device_inline uint hash_uint(const uint kx)
ccl_device_inline uint hash_uint3(const uint kx, const uint ky, const uint kz)
ccl_device_inline float floorfrac(const float x, ccl_private int *i)
CCL_NAMESPACE_BEGIN ccl_device_inline float madd(const float a, const float b, const float c)
ccl_device_inline float2 fmod(const float2 a, const float b)
ccl_device_inline float2 one_float2()
ccl_device_inline float2 fabs(const float2 a)
ccl_device_inline float2 mask(const MaskType mask, const float2 a)
ccl_device_inline float3 one_float3()
ccl_device_inline float4 one_float4()
ccl_device_inline float snoise_1d(float p)
ccl_device float bi_mix(const float v0, const float v1, const float v2, const float v3, const float x, float y)
ccl_device float grad3(const int hash, const float x, float y, const float z)
ccl_device_noinline_cpu float perlin_2d(const float x, const float y)
ccl_device_noinline_cpu float perlin_3d(const float x, const float y, float z)
ccl_device_inline float noise_3d(const float3 p)
ccl_device_inline float snoise_2d(float2 p)
ccl_device float quad_mix(const float v0, float v1, float v2, float v3, float v4, float v5, float v6, float v7, float v8, float v9, float v10, float v11, float v12, float v13, float v14, float v15, const float x, const float y, const float z, const float w)
CCL_NAMESPACE_BEGIN ccl_device float fade(const float t)
ccl_device_inline float snoise_3d(float3 p)
ccl_device_inline float negate_if(const float val, const int condition)
ccl_device float grad1(const int hash, const float x)
ccl_device_inline float snoise_4d(float4 p)
ccl_device_inline float noise_4d(const float4 p)
ccl_device_inline float noise_scale2(const float result)
ccl_device_inline float noise_scale3(const float result)
ccl_device_noinline_cpu float perlin_1d(const float x)
ccl_device_inline float noise_scale1(const float result)
ccl_device_noinline_cpu float perlin_4d(const float x, const float y, float z, const float w)
ccl_device float tri_mix(const float v0, float v1, float v2, float v3, float v4, float v5, float v6, float v7, const float x, const float y, const float z)
ccl_device_inline float noise_scale4(const float result)
ccl_device float grad2(const int hash, const float x, float y)
ccl_device_inline float noise_2d(const float2 p)
ccl_device_inline float noise_1d(const float p)
ccl_device float grad4(const int hash, const float x, float y, const float z, float w)
BLI_INLINE float grad(int hash_val, float x, float y, float z)
ccl_device_inline vfloat8 make_vfloat8(const float f)
ccl_device_inline vint8 make_vint8(const vfloat8 f)