Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'intern/cycles/kernel/tables.h')
-rw-r--r--intern/cycles/kernel/tables.h53
1 files changed, 53 insertions, 0 deletions
diff --git a/intern/cycles/kernel/tables.h b/intern/cycles/kernel/tables.h
index c1fdbba3fa7..399eea1e2b1 100644
--- a/intern/cycles/kernel/tables.h
+++ b/intern/cycles/kernel/tables.h
@@ -63,4 +63,57 @@ ccl_inline_constant float cie_colour_match[][3] = {
{0.0001f, 0.0000f, 0.0000f}, {0.0001f, 0.0000f, 0.0000f}, {0.0000f, 0.0000f, 0.0000f}
};
+/*
+ * The direction vectors for the first four dimensions of the Sobol
+ * sequence, stored with reversed-order bits.
+ *
+ * This is used in the Sobol-Burley sampler implementation. We don't
+ * need more than four dimensions because we achieve higher dimensions
+ * with padding. They're stored with reversed bits because we need
+ * them reversed for the fast hash-based Owen scrambling anyway, and
+ * this avoids doing that at run time.
+ */
+ccl_inline_constant unsigned int sobol_burley_table[4][32] = {
+ {
+ 0x00000001, 0x00000002, 0x00000004, 0x00000008,
+ 0x00000010, 0x00000020, 0x00000040, 0x00000080,
+ 0x00000100, 0x00000200, 0x00000400, 0x00000800,
+ 0x00001000, 0x00002000, 0x00004000, 0x00008000,
+ 0x00010000, 0x00020000, 0x00040000, 0x00080000,
+ 0x00100000, 0x00200000, 0x00400000, 0x00800000,
+ 0x01000000, 0x02000000, 0x04000000, 0x08000000,
+ 0x10000000, 0x20000000, 0x40000000, 0x80000000,
+ },
+ {
+ 0x00000001, 0x00000003, 0x00000005, 0x0000000f,
+ 0x00000011, 0x00000033, 0x00000055, 0x000000ff,
+ 0x00000101, 0x00000303, 0x00000505, 0x00000f0f,
+ 0x00001111, 0x00003333, 0x00005555, 0x0000ffff,
+ 0x00010001, 0x00030003, 0x00050005, 0x000f000f,
+ 0x00110011, 0x00330033, 0x00550055, 0x00ff00ff,
+ 0x01010101, 0x03030303, 0x05050505, 0x0f0f0f0f,
+ 0x11111111, 0x33333333, 0x55555555, 0xffffffff,
+ },
+ {
+ 0x00000001, 0x00000003, 0x00000006, 0x00000009,
+ 0x00000017, 0x0000003a, 0x00000071, 0x000000a3,
+ 0x00000116, 0x00000339, 0x00000677, 0x000009aa,
+ 0x00001601, 0x00003903, 0x00007706, 0x0000aa09,
+ 0x00010117, 0x0003033a, 0x00060671, 0x000909a3,
+ 0x00171616, 0x003a3939, 0x00717777, 0x00a3aaaa,
+ 0x01170001, 0x033a0003, 0x06710006, 0x09a30009,
+ 0x16160017, 0x3939003a, 0x77770071, 0xaaaa00a3,
+ },
+ {
+ 0x00000001, 0x00000003, 0x00000004, 0x0000000a,
+ 0x0000001f, 0x0000002e, 0x00000045, 0x000000c9,
+ 0x0000011b, 0x000002a4, 0x0000079a, 0x00000b67,
+ 0x0000101e, 0x0000302d, 0x00004041, 0x0000a0c3,
+ 0x0001f104, 0x0002e28a, 0x000457df, 0x000c9bae,
+ 0x0011a105, 0x002a7289, 0x0079e7db, 0x00b6dba4,
+ 0x0100011a, 0x030002a7, 0x0400079e, 0x0a000b6d,
+ 0x1f001001, 0x2e003003, 0x45004004, 0xc900a00a,
+ },
+};
+
/* clang-format on */