16 n = (n + 1013) & 0x7fffffff;
18 nn = (n * (n * n * 60493 + 19990303) + 1376312589) & 0x7fffffff;
19 return 0.5f * ((
float)nn / 1073741824.0f);
23 const float mortar_size,
24 const float mortar_smooth,
27 const float row_height,
28 const float offset_amount,
29 const int offset_frequency,
30 const float squash_amount,
31 const int squash_frequency)
41 if (offset_frequency && squash_frequency) {
42 brick_width *= (rownum % squash_frequency) ? 1.0f : squash_amount;
43 offset = (rownum % offset_frequency) ? 0.0f : (brick_width * offset_amount);
48 x = (p.
x + offset) - brick_width * bricknum;
49 y = p.
y - row_height * rownum;
52 float min_dist =
min(
min(
x,
y),
min(brick_width -
x, row_height -
y));
55 if (min_dist >= mortar_size) {
58 else if (mortar_smooth == 0.0f) {
62 min_dist = 1.0f - min_dist / mortar_size;
84 uint mortar_size_offset;
86 uint brick_width_offset;
87 uint row_height_offset;
90 uint mortar_smooth_offset;
93 uint offset_frequency;
94 uint squash_frequency;
98 node.
z, &scale_offset, &mortar_size_offset, &bias_offset, &brick_width_offset);
100 node.
w, &row_height_offset, &color_offset, &fac_offset, &mortar_smooth_offset);
130 const float tint = f2.
x;
131 const float f = f2.
y;
134 const float facm = 1.0f - tint;
135 color1 = facm * color1 + tint * color2;
ccl_device_noinline int svm_node_tex_brick(KernelGlobals kg, ccl_private float *stack, const uint4 node, int offset)
ccl_device_noinline_cpu float2 svm_brick(const float3 p, const float mortar_size, const float mortar_smooth, const float bias, float brick_width, const float row_height, const float offset_amount, const int offset_frequency, const float squash_amount, const int squash_frequency)
CCL_NAMESPACE_BEGIN ccl_device_inline float brick_noise(uint n)
ccl_device_inline void stack_store_float(ccl_private float *stack, const uint a, const float f)
ccl_device_inline uint4 read_node(KernelGlobals kg, ccl_private int *const offset)
ccl_device_inline void stack_store_float3(ccl_private float *stack, const uint a, const float3 f)
ccl_device_inline float stack_load_float_default(const ccl_private float *stack, const uint a, const uint value)
ccl_device_forceinline void svm_unpack_node_uchar2(const uint i, ccl_private uint *x, ccl_private uint *y)
ccl_device_forceinline void svm_unpack_node_uchar4(const uint i, ccl_private uint *x, ccl_private uint *y, ccl_private uint *z, ccl_private uint *w)
ccl_device_inline bool stack_valid(const uint a)
CCL_NAMESPACE_BEGIN ccl_device_inline float3 stack_load_float3(const ccl_private float *stack, const uint a)
#define ccl_device_noinline_cpu
const ThreadKernelGlobalsCPU * KernelGlobals
#define ccl_device_inline
#define ccl_device_noinline
#define CCL_NAMESPACE_END
ccl_device_inline float smoothstepf(const float f)
ccl_device_inline int floor_to_int(const float f)