1 |
A SHORT EXPLANATION OF BSDF MATRIX DIRECTIONS |
2 |
|
3 |
Radiance uses whichever transmission matrix is appropriate and |
4 |
available for the direction of ray travel. If you are rendering |
5 |
from the eye to the interior surface of a window, this typically |
6 |
corresponds to the "backwards" light direction, which uses the |
7 |
"Transmission Back" matrix from the XML file if present. This |
8 |
naming is due to the unfortunate precedent WINDOW 6 uses of considering |
9 |
the exterior of the window the "front" even though in Radiance |
10 |
models, it corresponds to the opposite side from the window surface |
11 |
normal. |
12 |
|
13 |
If there is no "Transmission Back" matrix but there is a "Transmission |
14 |
Front" (as might be generated by WINDOW or 'genBSDF +forward |
15 |
-backward'), Radiance will interrogate the "Front" matrix in the |
16 |
reverse direction, relying on reciprocity working properly. The |
17 |
reverse logic applies if the eye starts from outside (looking at |
18 |
the back side of the window surface), in which case the preference |
19 |
is for the "Transmission Front", using reciprocity on the "Back" |
20 |
matrix if it's not available. |
21 |
|
22 |
Something similar happens using dctimestep or rmtxop, except that |
23 |
in this case, the "Transmission Front" is *always* favored, and |
24 |
reciprocity is used on "Transmission Back" if it isn't available. |
25 |
The reason for this is two-fold. First, the "Transmission Front" |
26 |
matrix is the right way around for the 3-phase method already. |
27 |
Second, WINDOW 6 generally produces correct data for "Transmission |
28 |
Front," but in some cases just has dummy values as a placeholder |
29 |
for the "Transmission Back" matrix. |
30 |
|
31 |
For the tensor tree representation, reciprocity can be used to |
32 |
derive all needed information for 4-D distributions, so only one |
33 |
tree is stored to save file space and memory. However, isotropic |
34 |
(3-D) data does not use reciprocity for sampling, even though it |
35 |
can use it to answer BTDF queries, because it would require too |
36 |
much work to build up a 4-D structure then derive the 3-D information |
37 |
from it. So, this is a caveat, and genBSDF will create reverse-flow |
38 |
isotropic BTDF data if run with +forward and +backward in this case. |
39 |
|
40 |
The situation is a bit simpler in the case of reflection, since one |
41 |
cannot construct the front reflection data from the rear or vice |
42 |
versa. If one of the reflectance matrices is missing during |
43 |
rendering, then the surface gets no reflected contributions from |
44 |
that side. The 3-phase method does not make use of reflectance, |
45 |
so it has no bearing on dctimestep or rmtxop. |