1 |
|
.\" RCSid "$Id$" |
2 |
|
.\" Print using the -ms macro package |
3 |
< |
.DA 07/10/2016 |
3 |
> |
.DA 12/09/2024 |
4 |
|
.LP |
5 |
< |
.tl """Copyright \(co 2017 Regents, University of California |
5 |
> |
.tl """Copyright \(co 2024 Regents, University of California |
6 |
|
.sp 2 |
7 |
|
.TL |
8 |
|
The |
422 |
|
0 |
423 |
|
3 red green blue |
424 |
|
.DE |
425 |
+ |
While alternate materials that are reflective will appear as normal, |
426 |
+ |
indirect rays will use the mirror's reflectance rather than the |
427 |
+ |
alternate type. |
428 |
+ |
Transmitting materials are an exception, where both transmission and |
429 |
+ |
reflection will use the alternate type for all rays not specifically |
430 |
+ |
targeting virtual light sources. |
431 |
+ |
Therefore, transmitting alternate types should only have pure specular |
432 |
+ |
reflection if they reflect at all, to maintain a valid calculation. |
433 |
+ |
.PP |
434 |
+ |
The mirror material type reflects light sources only from the front side |
435 |
+ |
of a surface, regardless of any alternate material. |
436 |
+ |
If virtual source generation is desired on both sides, two coincident |
437 |
+ |
surfaces with opposite normal orientations may be employed to achieve |
438 |
+ |
this effect. |
439 |
+ |
The reflectance and alternate material type may be |
440 |
+ |
different for the overlapped surfaces, |
441 |
+ |
and the two sides will behave accordingly. |
442 |
|
.LP |
443 |
|
.UL Prism1 |
444 |
|
.PP |
647 |
|
Also, rather than roughness, specular power is used, which has no |
648 |
|
physical meaning other than larger numbers are equivalent to a smoother |
649 |
|
surface. |
650 |
+ |
Unlike other material types, total reflectance is the sum of |
651 |
+ |
diffuse and specular colors, and should be adjusted accordingly. |
652 |
|
.DS |
653 |
|
mod ashik2 id |
654 |
|
4+ ux uy uz funcfile transform |
656 |
|
8 dred dgrn dblu sred sgrn sblu u-power v-power |
657 |
|
.DE |
658 |
|
.LP |
659 |
+ |
.UL WGMDfunc |
660 |
+ |
.PP |
661 |
+ |
WGMDfunc is a more programmable version of trans2, |
662 |
+ |
with separate modifier paths and variables to control each component. |
663 |
+ |
(WGMD stands for Ward-Geisler-Moroder-Duer, which is the basis for |
664 |
+ |
this empirical model, similar to the previous ones beside Ashik2.)\0 |
665 |
+ |
The specification of this material is given below. |
666 |
+ |
.DS |
667 |
+ |
mod WGMDfunc id |
668 |
+ |
13+ rs_mod rs rs_urough rs_vrough |
669 |
+ |
ts_mod ts ts_urough ts_vrough |
670 |
+ |
td_mod |
671 |
+ |
ux uy uz funcfile transform |
672 |
+ |
0 |
673 |
+ |
9+ rfdif gfdif bfdif |
674 |
+ |
rbdif gbdif bbdif |
675 |
+ |
rtdif gtdif btdif |
676 |
+ |
A10 .. |
677 |
+ |
.DE |
678 |
+ |
The sum of specular reflectance ( |
679 |
+ |
.I rs |
680 |
+ |
), specular transmittance ( |
681 |
+ |
.I ts |
682 |
+ |
), diffuse reflectance ( |
683 |
+ |
.I "rfdif gfdif bfdif" |
684 |
+ |
for front and |
685 |
+ |
.I "rbdif gbdif bbdif" |
686 |
+ |
for back) |
687 |
+ |
and diffuse transmittance ( |
688 |
+ |
.I "rtdif gtdif btdif" |
689 |
+ |
) should be less than 1 for each |
690 |
+ |
channel. |
691 |
+ |
.PP |
692 |
+ |
Unique to this material, separate modifier channels are |
693 |
+ |
provided for each component. |
694 |
+ |
The main modifier is used on the diffuse reflectance, both |
695 |
+ |
front and back. |
696 |
+ |
The |
697 |
+ |
.I rs_mod |
698 |
+ |
modifier is used for specular reflectance. |
699 |
+ |
If "void" is given for |
700 |
+ |
.I rs_mod, |
701 |
+ |
then the specular reflection color will be white. |
702 |
+ |
The special "inherit" keyword may also be given, in which case |
703 |
+ |
specular reflectance will share the main modifier. |
704 |
+ |
This behavior is replicated for the specular transmittance modifier |
705 |
+ |
.I ts_mod, |
706 |
+ |
which has its own independent roughness expressions. |
707 |
+ |
Finally, the diffuse transmittance modifier is given as |
708 |
+ |
.I td_mod, |
709 |
+ |
which may also be "void" or "inherit". |
710 |
+ |
Note that any spectra or color for specular components must be |
711 |
+ |
carried by the named modifier(s). |
712 |
+ |
.PP |
713 |
+ |
The main advantage to this material over BRTDfunc and |
714 |
+ |
other programmable types described below is that the specular sampling is |
715 |
+ |
well-defined, so that all components are fully computed. |
716 |
+ |
.LP |
717 |
|
.UL Dielectric |
718 |
|
.PP |
719 |
|
A dielectric material is transparent, and it refracts light |
1269 |
|
font such as hexbit4x1.fnt, calls for uniform spacing. |
1270 |
|
Reasonable magnitudes for proportional spacing are |
1271 |
|
between 0.1 (for tightly spaced characters) and 0.3 (for wide spacing). |
1272 |
+ |
.LP |
1273 |
+ |
.UL Spectrum |
1274 |
+ |
.PP |
1275 |
+ |
The spectrum primitive is the most basic type for introducing spectral |
1276 |
+ |
color to a material. |
1277 |
+ |
Since materials only provide RGB parameters, spectral patterns |
1278 |
+ |
are the only way to superimpose wavelength-dependent behavior. |
1279 |
+ |
.DS |
1280 |
+ |
mod spectrum id |
1281 |
+ |
0 |
1282 |
+ |
0 |
1283 |
+ |
5+ nmA nmB s1 s2 .. sN |
1284 |
+ |
.DE |
1285 |
+ |
The first two real arguments indicate the extrema of the |
1286 |
+ |
spectral range in nanometers. |
1287 |
+ |
Subsequent real values correspond to multipliers at each wavelength. |
1288 |
+ |
The nmA wavelength may be greater or less than nmB, |
1289 |
+ |
but they may not be equal, and their ordering matches |
1290 |
+ |
the order of the spectral values. |
1291 |
+ |
A minimum of 3 values must be given, which would act |
1292 |
+ |
more or less the same as a constant RGB multiplier. |
1293 |
+ |
As with RGB values, spectral quantities normally range between 0 |
1294 |
+ |
and 1 at each wavelength, or average to 1.0 against a standard |
1295 |
+ |
sensitivity functions such as V(lambda). |
1296 |
+ |
The best results obtain when the spectral range and number |
1297 |
+ |
of samples match rendering options, though resampling will handle |
1298 |
+ |
any differences, zero-filling wavelenths outside the nmA to nmB |
1299 |
+ |
range. |
1300 |
+ |
A warning will be issued if the given wavelength range does not |
1301 |
+ |
adequately cover the visible spectrum. |
1302 |
+ |
.LP |
1303 |
+ |
.UL Specfile |
1304 |
+ |
.PP |
1305 |
+ |
The specfile primitive is equivalent to the spectrum type, but |
1306 |
+ |
the wavelength range and values are contained in a 1-dimensional |
1307 |
+ |
data file. |
1308 |
+ |
This may be a more convenient way to specify a spectral color, |
1309 |
+ |
especially one corresponding to a standard illuminant such as D65 |
1310 |
+ |
or a library of measured spectra. |
1311 |
+ |
.DS |
1312 |
+ |
mod specfile id |
1313 |
+ |
1 datafile |
1314 |
+ |
0 |
1315 |
+ |
0 |
1316 |
+ |
.DE |
1317 |
+ |
As with the spectrum type, rendering wavelengths outside the defined |
1318 |
+ |
range will be zero-filled. |
1319 |
+ |
Unlike the spectrum type, the file may contain non-uniform samples. |
1320 |
+ |
.LP |
1321 |
+ |
.UL Specfunc |
1322 |
+ |
.PP |
1323 |
+ |
The specfunc primitive offers dynamic control over a spectral |
1324 |
+ |
pattern, similar to the colorfunc type. |
1325 |
+ |
.DS |
1326 |
+ |
mod specfunc id |
1327 |
+ |
2+ sfunc funcfile transform |
1328 |
+ |
0 |
1329 |
+ |
2+ nmA nmB A3 .. |
1330 |
+ |
.DE |
1331 |
+ |
Like the spectrum primitive, the wavelength range is specified |
1332 |
+ |
in the first two real arguments, and additional real values are |
1333 |
+ |
set in the evaluation context. |
1334 |
+ |
This function is fed a wavelenth sample |
1335 |
+ |
between nmA and nmB as its only argument, |
1336 |
+ |
and it returns the corresponding spectral intensity. |
1337 |
+ |
.LP |
1338 |
+ |
.UL Specdata |
1339 |
+ |
.PP |
1340 |
+ |
Specdata is like brightdata and colordata, but with more |
1341 |
+ |
than 3 specular samples. |
1342 |
+ |
.DS |
1343 |
+ |
mod specdata id |
1344 |
+ |
3+n+ |
1345 |
+ |
func datafile |
1346 |
+ |
funcfile x1 x2 .. xn transform |
1347 |
+ |
0 |
1348 |
+ |
m A1 A2 .. Am |
1349 |
+ |
.DE |
1350 |
+ |
The data file must have one more dimension than the coordinate |
1351 |
+ |
variable count, as this final dimension corresponds to the covered |
1352 |
+ |
spectrum. |
1353 |
+ |
The starting and ending wavelengths are specified in "datafile" |
1354 |
+ |
as well as the number of spectral samples. |
1355 |
+ |
The function "func" will be called with two parameters, the |
1356 |
+ |
interpolated spectral value for the current coordinate and the |
1357 |
+ |
associated wavelength. |
1358 |
+ |
If the spectrum is broken into 12 components, then 12 calls |
1359 |
+ |
will be made to "func" for the relevant ray evaluation. |
1360 |
+ |
.LP |
1361 |
+ |
.UL Specpict |
1362 |
+ |
.PP |
1363 |
+ |
Specpict is a special case of specdata, where the pattern is |
1364 |
+ |
a hyperspectral image stored in the common-exponent file format. |
1365 |
+ |
The dimensions of the image data are determined by the picture |
1366 |
+ |
just as with the colorpict primitive. |
1367 |
+ |
.DS |
1368 |
+ |
mod specpict id |
1369 |
+ |
5+ |
1370 |
+ |
func specfile |
1371 |
+ |
funcfile u v transform |
1372 |
+ |
0 |
1373 |
+ |
m A1 A2 .. Am |
1374 |
+ |
.DE |
1375 |
+ |
The function "func" is called with the interpolated pixel value |
1376 |
+ |
and the wavelength sample in nanometers, the same as specdata, |
1377 |
+ |
with as many calls made as there are components in "specfile". |
1378 |
|
.NH 3 |
1379 |
|
Mixtures |
1380 |
|
.PP |
1776 |
|
in Lausanne, Switzerland. |
1777 |
|
.NH 1 |
1778 |
|
References |
1779 |
+ |
.LP |
1780 |
+ |
Ward, Gregory J., Bruno Bueno, David Geisler-Moroder, |
1781 |
+ |
Lars O. Grobe, Jacob C. Jonsson, Eleanor |
1782 |
+ |
S. Lee, Taoning Wang, Helen Rose Wilson, |
1783 |
+ |
``Daylight Simulation Workflows Incorporating |
1784 |
+ |
Measured Bidirectional Scattering Distribution Functions,'' |
1785 |
+ |
.I "Energy & Buildings", |
1786 |
+ |
Vol. 259, No. 111890, 2022. |
1787 |
+ |
.LP |
1788 |
+ |
Wang, Taoning, Gregory Ward, Eleanor Lee, |
1789 |
+ |
``Efficient modeling of optically-complex, non-coplanar |
1790 |
+ |
exterior shading: Validation of matrix algebraic methods,'' |
1791 |
+ |
.I "Energy & Buildings", |
1792 |
+ |
vol. 174, pp. 464-83, Sept. 2018. |
1793 |
|
.LP |
1794 |
|
Lee, Eleanor S., David Geisler-Moroder, Gregory Ward, |
1795 |
|
``Modeling the direct sun component in buildings using matrix |