| 1 | greg | 1.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.  (Someone correct me on this | 
| 30 |  |  | if I am mistaken, but that's what I understood.) | 
| 31 |  |  |  | 
| 32 |  |  | The situation is a bit simpler in the case of reflection, since one | 
| 33 |  |  | cannot construct the front reflection matrix from the rear or vice | 
| 34 |  |  | versa.  If one of the reflectance matrices is missing during | 
| 35 |  |  | rendering, then the surface gets no reflected contributions from | 
| 36 |  |  | that side.  The 3-phase method does not make use of reflectance, | 
| 37 |  |  | so it has no bearing on dctimestep or rmtxop. |