Blender V5.0
kernel/tables.h
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
2 *
3 * SPDX-License-Identifier: Apache-2.0 */
4
5/* clang-format off */
6
7#pragma once
8
9#include "util/defines.h"
10
12 {1.61919106e+03f, -2.05010916e-03f, 5.02995757e+00f},
13 {2.48845471e+03f, -1.11330907e-03f, 3.22621544e+00f},
14 {3.34143193e+03f, -4.86551192e-04f, 1.76486769e+00f},
15 {4.09461742e+03f, -1.27446582e-04f, 7.25731635e-01f},
16 {4.67028036e+03f, 2.91258199e-05f, 1.26703442e-01f},
17 {4.59509185e+03f, 2.87495649e-05f, 1.50345020e-01f},
18 {3.78717450e+03f, 9.35907826e-06f, 3.99075871e-01f}
19};
20
22 {-4.88999748e+02f, 6.04330754e-04f, -7.55807526e-02f},
23 {-7.55994277e+02f, 3.16730098e-04f, 4.78306139e-01f},
24 {-1.02363977e+03f, 1.20223470e-04f, 9.36662319e-01f},
25 {-1.26571316e+03f, 4.87340896e-06f, 1.27054498e+00f},
26 {-1.42529332e+03f, -4.01150431e-05f, 1.43972784e+00f},
27 {-1.17554822e+03f, -2.16378048e-05f, 1.30408023e+00f},
28 {-5.00799571e+02f, -4.59832026e-06f, 1.09098763e+00f}
29};
30
32 {5.96945309e-11f, -4.85742887e-08f, -9.70622247e-05f, -4.07936148e-03f},
33 {2.40430366e-11f, 5.55021075e-08f, -1.98503712e-04f, 2.89312858e-02f},
34 {-1.40949732e-11f, 1.89878968e-07f, -3.56632824e-04f, 9.10767778e-02f},
35 {-3.61460868e-11f, 2.84822009e-07f, -4.93211319e-04f, 1.56723440e-01f},
36 {-1.97075738e-11f, 1.75359352e-07f, -2.50542825e-04f, -2.22783266e-02f},
37 {-1.61997957e-13f, -1.64216008e-08f, 3.86216271e-04f, -7.38077418e-01f},
38 {6.72650283e-13f, -2.73078809e-08f, 4.24098264e-04f, -7.52335691e-01f}
39};
40
42 {0.0014f, 0.0000f, 0.0065f}, {0.0022f, 0.0001f, 0.0105f}, {0.0042f, 0.0001f, 0.0201f},
43 {0.0076f, 0.0002f, 0.0362f}, {0.0143f, 0.0004f, 0.0679f}, {0.0232f, 0.0006f, 0.1102f},
44 {0.0435f, 0.0012f, 0.2074f}, {0.0776f, 0.0022f, 0.3713f}, {0.1344f, 0.0040f, 0.6456f},
45 {0.2148f, 0.0073f, 1.0391f}, {0.2839f, 0.0116f, 1.3856f}, {0.3285f, 0.0168f, 1.6230f},
46 {0.3483f, 0.0230f, 1.7471f}, {0.3481f, 0.0298f, 1.7826f}, {0.3362f, 0.0380f, 1.7721f},
47 {0.3187f, 0.0480f, 1.7441f}, {0.2908f, 0.0600f, 1.6692f}, {0.2511f, 0.0739f, 1.5281f},
48 {0.1954f, 0.0910f, 1.2876f}, {0.1421f, 0.1126f, 1.0419f}, {0.0956f, 0.1390f, 0.8130f},
49 {0.0580f, 0.1693f, 0.6162f}, {0.0320f, 0.2080f, 0.4652f}, {0.0147f, 0.2586f, 0.3533f},
50 {0.0049f, 0.3230f, 0.2720f}, {0.0024f, 0.4073f, 0.2123f}, {0.0093f, 0.5030f, 0.1582f},
51 {0.0291f, 0.6082f, 0.1117f}, {0.0633f, 0.7100f, 0.0782f}, {0.1096f, 0.7932f, 0.0573f},
52 {0.1655f, 0.8620f, 0.0422f}, {0.2257f, 0.9149f, 0.0298f}, {0.2904f, 0.9540f, 0.0203f},
53 {0.3597f, 0.9803f, 0.0134f}, {0.4334f, 0.9950f, 0.0087f}, {0.5121f, 1.0000f, 0.0057f},
54 {0.5945f, 0.9950f, 0.0039f}, {0.6784f, 0.9786f, 0.0027f}, {0.7621f, 0.9520f, 0.0021f},
55 {0.8425f, 0.9154f, 0.0018f}, {0.9163f, 0.8700f, 0.0017f}, {0.9786f, 0.8163f, 0.0014f},
56 {1.0263f, 0.7570f, 0.0011f}, {1.0567f, 0.6949f, 0.0010f}, {1.0622f, 0.6310f, 0.0008f},
57 {1.0456f, 0.5668f, 0.0006f}, {1.0026f, 0.5030f, 0.0003f}, {0.9384f, 0.4412f, 0.0002f},
58 {0.8544f, 0.3810f, 0.0002f}, {0.7514f, 0.3210f, 0.0001f}, {0.6424f, 0.2650f, 0.0000f},
59 {0.5419f, 0.2170f, 0.0000f}, {0.4479f, 0.1750f, 0.0000f}, {0.3608f, 0.1382f, 0.0000f},
60 {0.2835f, 0.1070f, 0.0000f}, {0.2187f, 0.0816f, 0.0000f}, {0.1649f, 0.0610f, 0.0000f},
61 {0.1212f, 0.0446f, 0.0000f}, {0.0874f, 0.0320f, 0.0000f}, {0.0636f, 0.0232f, 0.0000f},
62 {0.0468f, 0.0170f, 0.0000f}, {0.0329f, 0.0119f, 0.0000f}, {0.0227f, 0.0082f, 0.0000f},
63 {0.0158f, 0.0057f, 0.0000f}, {0.0114f, 0.0041f, 0.0000f}, {0.0081f, 0.0029f, 0.0000f},
64 {0.0058f, 0.0021f, 0.0000f}, {0.0041f, 0.0015f, 0.0000f}, {0.0029f, 0.0010f, 0.0000f},
65 {0.0020f, 0.0007f, 0.0000f}, {0.0014f, 0.0005f, 0.0000f}, {0.0010f, 0.0004f, 0.0000f},
66 {0.0007f, 0.0002f, 0.0000f}, {0.0005f, 0.0002f, 0.0000f}, {0.0003f, 0.0001f, 0.0000f},
67 {0.0002f, 0.0001f, 0.0000f}, {0.0002f, 0.0001f, 0.0000f}, {0.0001f, 0.0000f, 0.0000f},
68 {0.0001f, 0.0000f, 0.0000f}, {0.0001f, 0.0000f, 0.0000f}, {0.0000f, 0.0000f, 0.0000f}
69};
70
71/*
72 * The direction vectors for the first four dimensions of the Sobol
73 * sequence, stored with reversed-order bits.
74 *
75 * This is used in the Sobol-Burley sampler implementation. We don't
76 * need more than four dimensions because we achieve higher dimensions
77 * with padding. They're stored with reversed bits because we need
78 * them reversed for the fast hash-based Owen scrambling anyway, and
79 * this avoids doing that at run time.
80 */
82 {
83 0x00000001, 0x00000002, 0x00000004, 0x00000008,
84 0x00000010, 0x00000020, 0x00000040, 0x00000080,
85 0x00000100, 0x00000200, 0x00000400, 0x00000800,
86 0x00001000, 0x00002000, 0x00004000, 0x00008000,
87 0x00010000, 0x00020000, 0x00040000, 0x00080000,
88 0x00100000, 0x00200000, 0x00400000, 0x00800000,
89 0x01000000, 0x02000000, 0x04000000, 0x08000000,
90 0x10000000, 0x20000000, 0x40000000, 0x80000000,
91 },
92 {
93 0x00000001, 0x00000003, 0x00000005, 0x0000000f,
94 0x00000011, 0x00000033, 0x00000055, 0x000000ff,
95 0x00000101, 0x00000303, 0x00000505, 0x00000f0f,
96 0x00001111, 0x00003333, 0x00005555, 0x0000ffff,
97 0x00010001, 0x00030003, 0x00050005, 0x000f000f,
98 0x00110011, 0x00330033, 0x00550055, 0x00ff00ff,
99 0x01010101, 0x03030303, 0x05050505, 0x0f0f0f0f,
100 0x11111111, 0x33333333, 0x55555555, 0xffffffff,
101 },
102 {
103 0x00000001, 0x00000003, 0x00000006, 0x00000009,
104 0x00000017, 0x0000003a, 0x00000071, 0x000000a3,
105 0x00000116, 0x00000339, 0x00000677, 0x000009aa,
106 0x00001601, 0x00003903, 0x00007706, 0x0000aa09,
107 0x00010117, 0x0003033a, 0x00060671, 0x000909a3,
108 0x00171616, 0x003a3939, 0x00717777, 0x00a3aaaa,
109 0x01170001, 0x033a0003, 0x06710006, 0x09a30009,
110 0x16160017, 0x3939003a, 0x77770071, 0xaaaa00a3,
111 },
112 {
113 0x00000001, 0x00000003, 0x00000004, 0x0000000a,
114 0x0000001f, 0x0000002e, 0x00000045, 0x000000c9,
115 0x0000011b, 0x000002a4, 0x0000079a, 0x00000b67,
116 0x0000101e, 0x0000302d, 0x00004041, 0x0000a0c3,
117 0x0001f104, 0x0002e28a, 0x000457df, 0x000c9bae,
118 0x0011a105, 0x002a7289, 0x0079e7db, 0x00b6dba4,
119 0x0100011a, 0x030002a7, 0x0400079e, 0x0a000b6d,
120 0x1f001001, 0x2e003003, 0x45004004, 0xc900a00a,
121 },
122};
123
124/* clang-format on */
static const float blackbody_table_r[7][3]
static float cie_color_match[81][3]
static const float blackbody_table_g[7][3]
static const float blackbody_table_b[7][4]
#define ccl_inline_constant
ccl_inline_constant unsigned int sobol_burley_table[4][32]