29 #include "scene/sobol.tables"
40 for (
uint i = 0; i <
L; i++)
43 for (
int dim = 1; dim < dimensions; dim++) {
44 const SobolDirectionNumbers *numbers = &SOBOL_NUMBERS[dim - 1];
45 const uint s = numbers->s;
46 const uint a = numbers->a;
47 const uint *m = numbers->m;
52 for (
uint i = 0; i <
L; i++)
53 v[i] = m[i] << (31 - i);
56 for (
uint i = 0; i < s; i++)
57 v[i] = m[i] << (31 - i);
59 for (
uint i = s; i <
L; i++) {
60 v[i] =
v[i - s] ^ (
v[i - s] >> s);
62 for (
uint k = 1; k < s; k++)
63 v[i] ^= (((
a >> (s - 1 - k)) & 1) *
v[i - k]);
ATTR_WARN_UNUSED_RESULT const BMVert * v
#define CCL_NAMESPACE_END
CCL_NAMESPACE_BEGIN void sobol_generate_direction_vectors(uint vectors[][SOBOL_BITS], int dimensions)
#define SOBOL_MAX_DIMENSIONS