25 #define CMJ_RANDOM_OFFSET_LIMIT 4096
29 return (i > 1) && ((i & (i - 1)) == 0);
133 return cmj_hash(i, p) * (1.0f / 4294967808.0f);
137 ccl_device float cmj_sample_1D(
int s,
int N,
int p)
144 float invN = 1.0f /
N;
145 return (
x + jx) * invN;
151 # if defined(__KERNEL_CUDA__)
153 # elif defined(__KERNEL_GPU__)
163 ccl_device void cmj_sample_2D(
int s,
int N,
int p,
float *fx,
float *fy)
167 int m = cmj_isqrt(
N);
168 int n = (
N - 1) / m + 1;
169 float invN = 1.0f /
N;
170 float invm = 1.0f / m;
171 float invn = 1.0f / n;
184 smodm = s - sdivm * m;
193 *fx = (sx + (sy + jx) * invn) * invm;
194 *fy = (s + jy) * invN;
202 const int p = rng_hash + dimension;
215 const int p = rng_hash + dimension;
ATTR_WARN_UNUSED_RESULT const BMLoop * l
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
#define kernel_assert(cond)
#define kernel_tex_fetch(tex, index)
#define ccl_device_inline
#define CCL_NAMESPACE_END
#define make_float2(x, y)
ccl_device_inline int cmj_fast_mod_pow2(int a, int b)
ccl_device_inline float cmj_randfloat(uint i, uint p)
ccl_device float2 pmj_sample_2D(KernelGlobals *kg, int sample, int rng_hash, int dimension)
ccl_device_inline bool cmj_is_pow2(int i)
ccl_device_inline uint cmj_permute(uint i, uint l, uint p)
ccl_device_inline uint cmj_hash(uint i, uint p)
ccl_device_inline int cmj_fast_div_pow2(int a, int b)
ccl_device_inline uint cmj_hash_simple(uint i, uint p)
ccl_device float pmj_sample_1D(KernelGlobals *kg, int sample, int rng_hash, int dimension)
ccl_device_inline uint cmj_w_mask(uint w)
static void sample(SocketReader *reader, int x, int y, float color[4])
ccl_device_inline float __uint_as_float(uint i)
ccl_device_inline int float_to_int(float f)
ccl_device_inline uint count_leading_zeros(uint x)
ccl_device_inline uint count_trailing_zeros(uint x)
ccl_device_inline float4 mask(const int4 &mask, const float4 &a)