16 return t * t * t * (t * (t * 6.0f - 15.0f) + 10.0f);
21 return (condition) ? -val : val;
27 float g = 1 + (h & 7);
45#if !defined(__KERNEL_SSE__)
63 return (1.0f - y) * (v0 * x1 + v1 *
x) + y * (
v2 * x1 + v3 * x);
99 return z1 * (y1 * (v0 * x1 + v1 *
x) + y * (
v2 * x1 + v3 * x)) +
100 z * (y1 * (v4 * x1 + v5 * x) + y * (v6 * x1 + v7 *
x));
124 return mix(
tri_mix(v0, v1,
v2, v3, v4, v5, v6, v7, x, y,
z),
125 tri_mix(v8, v9, v10, v11, v12, v13, v14, v15, x, y,
z),
132 float u = h < 4 ?
x :
y;
133 float v = 2.0f * (h < 4 ?
y :
x);
140 float u = h < 8 ?
x :
y;
141 float vt = ((h == 12) || (h == 14)) ? x :
z;
142 float v = h < 4 ?
y : vt;
149 float u = h < 24 ?
x :
y;
150 float v = h < 16 ?
y :
z;
151 float s = h < 8 ?
z :
w;
237 grad4(
hash_uint4(
X + 1,
Y + 1, Z + 1,
W + 1), fx - 1.0f, fy - 1.0f, fz - 1.0f, fw - 1.0f),
276 float4 g =
mix(p, shuffle<2, 3, 2, 3>(p), shuffle<0>(f));
277 return mix(g, shuffle<1>(g), shuffle<1>(f));
284 return (t * t) * (t *
b);
288# define negate_if_nth_bit(val, h, n) ((val) ^ cast(((h) & (1 << (n))) << (31 - (n))))
295 return negate_if_nth_bit(u, h, 0) + negate_if_nth_bit(
v, h, 1);
317 int4 X = shuffle<0, 0, 0, 0>(XY, XY1);
318 int4 Y = shuffle<0, 2, 0, 2>(shuffle<1, 1, 1, 1>(XY, XY1));
320 int4 h = hash_int4_2(
X,
Y);
323 float4 fx = shuffle<0, 0, 0, 0>(fxy, fxy1);
324 float4 fy = shuffle<0, 2, 0, 2>(shuffle<1, 1, 1, 1>(fxy, fxy1));
367 float4 g =
mix(s, shuffle<2, 3, 2, 3>(s), shuffle<1>(f));
368 return mix(g, shuffle<1>(g), shuffle<2>(f));
376# if !defined(__KERNEL_AVX2__)
384 return negate_if_nth_bit(u, h, 0) + negate_if_nth_bit(
v, h, 1);
388grad(
const int4 hash,
const float4 x,
const float4 y,
const float4
z,
const float4
w)
394 return negate_if_nth_bit(u, h, 0) + negate_if_nth_bit(
v, h, 1) + negate_if_nth_bit(s, h, 2);
434 int4 Y = shuffle<1, 1, 1, 1>(XYZ, XYZ1);
435 int4 Z = shuffle<0, 2, 0, 2>(shuffle<2, 2, 2, 2>(XYZ, XYZ1));
437 int4 h1 = hash_int4_3(shuffle<0>(XYZ),
Y, Z);
438 int4 h2 = hash_int4_3(shuffle<0>(XYZ1),
Y, Z);
441 float4 fy = shuffle<1, 1, 1, 1>(fxyz, fxyz1);
442 float4 fz = shuffle<0, 2, 0, 2>(shuffle<2, 2, 2, 2>(fxyz, fxyz1));
444 float4 g1 =
grad(h1, shuffle<0>(fxyz), fy, fz);
445 float4 g2 =
grad(h2, shuffle<0>(fxyz1), fy, fz);
488 int4 Y = shuffle<1, 1, 1, 1>(XYZW, XYZW1);
489 int4 Z = shuffle<0, 2, 0, 2>(shuffle<2, 2, 2, 2>(XYZW, XYZW1));
491 int4 h1 = hash_int4_4(shuffle<0>(XYZW),
Y, Z, shuffle<3>(XYZW));
492 int4 h2 = hash_int4_4(shuffle<0>(XYZW1),
Y, Z, shuffle<3>(XYZW));
494 int4 h3 = hash_int4_4(shuffle<0>(XYZW),
Y, Z, shuffle<3>(XYZW1));
495 int4 h4 = hash_int4_4(shuffle<0>(XYZW1),
Y, Z, shuffle<3>(XYZW1));
498 float4 fy = shuffle<1, 1, 1, 1>(fxyzw, fxyzw1);
499 float4 fz = shuffle<0, 2, 0, 2>(shuffle<2, 2, 2, 2>(fxyzw, fxyzw1));
501 float4 g1 =
grad(h1, shuffle<0>(fxyzw), fy, fz, shuffle<3>(fxyzw));
502 float4 g2 =
grad(h2, shuffle<0>(fxyzw1), fy, fz, shuffle<3>(fxyzw));
504 float4 g3 =
grad(h3, shuffle<0>(fxyzw), fy, fz, shuffle<3>(fxyzw1));
505 float4 g4 =
grad(h4, shuffle<0>(fxyzw1), fy, fz, shuffle<3>(fxyzw1));
517 vfloat8 u =
select(h < 8, x, y);
518 vfloat8 vt =
select((h == 12) | (h == 14), x,
z);
519 vfloat8
v =
select(h < 4, y, vt);
520 return negate_if_nth_bit(u, h, 0) + negate_if_nth_bit(
v, h, 1);
524grad(
const vint8
hash,
const vfloat8 x,
const vfloat8 y,
const vfloat8
z,
const vfloat8
w)
527 vfloat8 u =
select(h < 24, x, y);
530 return negate_if_nth_bit(u, h, 0) + negate_if_nth_bit(
v, h, 1) + negate_if_nth_bit(s, h, 2);
544 float4 fv = shuffle<3>(f);
546 return tri_mix(low(s), high(s), f);
572 int4 X = shuffle<0>(XYZ);
573 int4 X1 = shuffle<0>(XYZ1);
574 int4 Y = shuffle<1, 1, 1, 1>(XYZ, XYZ1);
575 int4 Z = shuffle<0, 2, 0, 2>(shuffle<2, 2, 2, 2>(XYZ, XYZ1));
580 float4 fx = shuffle<0>(fxyz);
581 float4 fx1 = shuffle<0>(fxyz1);
582 float4 fy = shuffle<1, 1, 1, 1>(fxyz, fxyz1);
583 float4 fz = shuffle<0, 2, 0, 2>(shuffle<2, 2, 2, 2>(fxyz, fxyz1));
624 int4 X = shuffle<0>(XYZW);
625 int4 X1 = shuffle<0>(XYZW1);
626 int4 Y = shuffle<1, 1, 1, 1>(XYZW, XYZW1);
627 int4 Z = shuffle<0, 2, 0, 2>(shuffle<2, 2, 2, 2>(XYZW, XYZW1));
628 int4 W = shuffle<3>(XYZW);
629 int4 W1 = shuffle<3>(XYZW1);
632 vint8 h2 = hash_int8_4(
636 float4 fx = shuffle<0>(fxyzw);
637 float4 fx1 = shuffle<0>(fxyzw1);
638 float4 fy = shuffle<1, 1, 1, 1>(fxyzw, fxyzw1);
639 float4 fz = shuffle<0, 2, 0, 2>(shuffle<2, 2, 2, 2>(fxyzw, fxyzw1));
640 float4 fw = shuffle<3>(fxyzw);
641 float4 fw1 = shuffle<3>(fxyzw1);
645 vfloat8 g2 =
grad(h2,
655# undef negate_if_nth_bit
687 float precision_correction = 0.5f *
float(
fabsf(p) >= 1000000.0f);
691 p =
fmodf(p, 100000.0f) + precision_correction;
704 float(
fabsf(p.
y) >= 1000000.0f));
708 p =
fmod(p, 100000.0f) + precision_correction;
721 float(
fabsf(p.
y) >= 1000000.0f),
722 float(
fabsf(p.
z) >= 1000000.0f));
726 p =
fmod(p, 100000.0f) + precision_correction;
738 float4 precision_correction = 0.5f *
make_float4(
float(
fabsf(p.x) >= 1000000.0f),
739 float(
fabsf(p.y) >= 1000000.0f),
740 float(
fabsf(p.z) >= 1000000.0f),
741 float(
fabsf(p.w) >= 1000000.0f));
745 p =
fmod(p, 100000.0f) + precision_correction;
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Gabor Generate Gabor noise Gradient Generate interpolated color and intensity values based on the input vector Magic Generate a psychedelic color texture Voronoi Generate Worley noise based on the distance to random points Typically used to generate textures such as or biological cells Brick Generate a procedural texture producing bricks Texture Retrieve multiple types of texture coordinates nTypically used as inputs for texture nodes Vector Convert a or normal between and object coordinate space Combine Create a color from its and value channels Color Retrieve a color or the default fallback if none is specified Separate XYZ
__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.
local_group_size(16, 16) .push_constant(Type b
#define ccl_device_noinline_cpu
#define ccl_device_inline
#define CCL_NAMESPACE_END
draw_view in_light_buf[] float
ccl_device_inline uint hash_uint2(uint kx, uint ky)
ccl_device_inline uint hash_uint3(uint kx, uint ky, uint kz)
ccl_device_inline uint hash_uint4(uint kx, uint ky, uint kz, uint kw)
ccl_device_inline uint hash_uint(uint kx)
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 float4 select(const int4 mask, const float4 a, const float4 b)
VecBase< float, 4 > float4
BLI_INLINE float grad(int hash_val, float x, float y, float z)
ccl_device float grad4(int hash, float x, float y, float z, float w)
ccl_device float quad_mix(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, float x, float y, float z, float w)
ccl_device_inline float snoise_1d(float p)
ccl_device float grad3(int hash, float x, float y, float z)
ccl_device_noinline_cpu float perlin_2d(float x, float y)
ccl_device_inline float noise_scale4(float result)
ccl_device float bi_mix(float v0, float v1, float v2, float v3, float x, float y)
ccl_device_inline float noise_2d(float2 p)
ccl_device_inline float snoise_2d(float2 p)
ccl_device float tri_mix(float v0, float v1, float v2, float v3, float v4, float v5, float v6, float v7, float x, float y, float z)
ccl_device_inline float snoise_3d(float3 p)
ccl_device_inline float snoise_4d(float4 p)
ccl_device_inline float noise_3d(float3 p)
ccl_device_inline float noise_4d(float4 p)
ccl_device_inline float noise_scale3(float result)
ccl_device_inline float noise_scale2(float result)
CCL_NAMESPACE_BEGIN ccl_device float fade(float t)
ccl_device float grad2(int hash, float x, float y)
ccl_device_inline float noise_1d(float p)
ccl_device_inline float negate_if(float val, int condition)
ccl_device_noinline_cpu float perlin_4d(float x, float y, float z, float w)
ccl_device float grad1(int hash, float x)
ccl_device_inline float noise_scale1(float result)
ccl_device_noinline_cpu float perlin_1d(float x)
ccl_device_noinline_cpu float perlin_3d(float x, float y, float z)
ccl_device_inline vfloat8 make_vfloat8(float f)
ccl_device_inline vint8 make_vint8(int a, int b, int c, int d, int e, int f, int g, int h)
ccl_device_inline float floorfrac(float x, ccl_private int *i)