19 const uint sample_count =
kernel_data.integrator.tabulated_sobol_sequence_size;
28 const uint sample_mask = sample_count - 1;
31 sample = (
sample & ~sample_mask) | (sample_shuffled & sample_mask);
45 if (
kernel_data.integrator.scrambling_distance < 1.0f) {
54 if (
kernel_data.integrator.scrambling_distance < 1.0f) {
73 if (
kernel_data.integrator.scrambling_distance < 1.0f) {
83 if (
kernel_data.integrator.scrambling_distance < 1.0f) {
100 const uint dimension)
106 if (
kernel_data.integrator.scrambling_distance < 1.0f) {
117 if (
kernel_data.integrator.scrambling_distance < 1.0f) {
138 const uint dimension)
144 if (
kernel_data.integrator.scrambling_distance < 1.0f) {
156 if (
kernel_data.integrator.scrambling_distance < 1.0f) {
SIMD_FORCE_INLINE const btScalar & z() const
Return the z value.
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
static unsigned long seed
ccl_device_inline uint nested_uniform_scramble(const uint i, const uint seed)
#define kernel_data_fetch(name, index)
#define NUM_TAB_SOBOL_DIMENSIONS
const ThreadKernelGlobalsCPU * KernelGlobals
#define NUM_TAB_SOBOL_PATTERNS
#define CCL_NAMESPACE_END
ccl_device_inline uint hash_wang_seeded_uint(uint i, const uint seed)
ccl_device_inline uint hash_shuffle_uint(uint i, const uint length, const uint seed)
ccl_device_inline float hash_wang_seeded_float(const uint i, const uint seed)
CCL_NAMESPACE_BEGIN ccl_device uint tabulated_sobol_shuffled_sample_index(KernelGlobals kg, uint sample, const uint dimension, const uint seed)
ccl_device float2 tabulated_sobol_sample_2D(KernelGlobals kg, const uint sample, const uint rng_hash, const uint dimension)
ccl_device float4 tabulated_sobol_sample_4D(KernelGlobals kg, const uint sample, const uint rng_hash, const uint dimension)
ccl_device float3 tabulated_sobol_sample_3D(KernelGlobals kg, const uint sample, const uint rng_hash, const uint dimension)
ccl_device float tabulated_sobol_sample_1D(KernelGlobals kg, const uint sample, const uint rng_hash, const uint dimension)