ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/doc/ray.html
Revision: 1.39
Committed: Mon Dec 9 19:21:38 2024 UTC (5 months ago) by greg
Content type: text/html
Branch: MAIN
Changes since 1.38: +57 -1 lines
Log Message:
docs: Added description of new WGMDfunc material

File Contents

# Content
1 <html>
2 <!-- RCSid $Id: ray.html,v 1.38 2023/12/13 23:26:16 greg Exp $ -->
3 <head>
4 <title>
5 The RADIANCE 6.0 Synthetic Imaging System
6 </title>
7 </head>
8 <body>
9
10 <p>
11
12 <h1>
13 The RADIANCE 6.0 Synthetic Imaging System
14 </h1>
15
16 <p>
17
18 Building Technologies Program<br>
19 Lawrence Berkeley National Laboratory<br>
20 1 Cyclotron Rd., 90-3111<br>
21 Berkeley, CA 94720<br>
22 <a HREF="http://radsite.lbl.gov/radiance"</a>
23 http://radsite.lbl.gov/radiance<br>
24
25 <p>
26 <hr>
27
28 <h2>
29 <a NAME="Overview">Overview</a>
30 </h2>
31 <ol>
32 <li><a HREF="#Intro">Introduction</a><!P>
33 <li><a HREF="#Scene">Scene Description</a><!P>
34 <ol>
35 <li><a HREF="#Primitive"> Primitive Types</a>
36 <ol>
37 <li><a HREF="#Surfaces">Surfaces</a>
38 <li><a HREF="#Materials">Materials</a>
39 <li><a HREF="#Textures">Textures</a>
40 <li><a HREF="#Patterns">Patterns</a>
41 <li><a HREF="#Mixtures">Mixtures</a>
42 </ol><!P>
43 <li><a HREF="#Auxiliary">Auxiliary Files</a>
44 <ol>
45 <li><a HREF="#Function">Function Files</a>
46 <li><a HREF="#Data">Data Files</a>
47 <li><a HREF="#Font">Font Files</a>
48 </ol><!P>
49 <li><a HREF="#Generators">Generators</a>
50 </ol><!P>
51 <li><a HREF="#Image">Image Generation</a><!P>
52 <li><a HREF="#License">License</a><!P>
53 <li><a HREF="#Ack">Acknowledgements</a><!P>
54 <li><a HREF="#Ref">References</a><!P>
55 <li><a HREF="#Index">Types Index</a><!P>
56 </ol>
57
58 <p>
59 <hr>
60
61 <h2>
62 <a NAME="Intro">1. Introduction</a>
63 </h2>
64
65 RADIANCE was developed as a research tool for predicting
66 the distribution of visible radiation in illuminated spaces.
67 It takes as input a three-dimensional geometric model
68 of the physical environment, and produces a map of
69 spectral radiance values in a color image.
70 The technique of ray-tracing follows light backwards
71 from the image plane to the source(s).
72 Because it can produce realistic images from a
73 simple description, RADIANCE has a wide range of applications
74 in graphic arts, lighting design,
75 computer-aided engineering and architecture.
76
77 <p>
78 <img SRC="diagram1.gif">
79 <p>
80 Figure 1
81 <p>
82 The diagram in Figure 1 shows the flow between programs (boxes) and data
83 (ovals).
84 The central program is <i>rpict</i>, which produces a picture from a scene
85 description.
86 <i>Rvu</i> is a variation of rpict that computes and displays images
87 interactively, and rtrace computes single ray values.
88 Other programs (not shown) connect many of these elements together,
89 such as the executive programs
90 <i>rad</i>
91 and
92 <i>ranimate</i>,
93 the interactive rendering program
94 <i>rholo</i>,
95 and the animation program
96 <i>ranimove</i>.
97 The program
98 <i>obj2mesh</i>
99 acts as both a converter and scene compiler, converting a Wavefront .OBJ
100 file into a compiled mesh octree for efficient rendering.
101
102 <p>
103 A scene description file lists the surfaces and materials
104 that make up a specific environment.
105 The current surface types are spheres, polygons, cones, and cylinders.
106 There is also a composite surface type, called mesh, and a pseudosurface
107 type, called instance, which facilitates very complex geometries.
108 Surfaces can be made from materials such as plastic, metal, and glass.
109 Light sources can be distant disks as well as local spheres, disks
110 and polygons.
111
112 <p>
113 From a three-dimensional scene description and a specified view,
114 <i>rpict</i> produces a two-dimensional image.
115 A picture file is a compressed binary representation of the
116 pixels in the image.
117 This picture can be scaled in size and brightness,
118 anti-aliased, and sent to a graphics output device.
119
120 <p>
121 A header in each picture file lists the program(s)
122 and parameters that produced it.
123 This is useful for identifying a picture without having to display it.
124 The information can be read by the program <i>getinfo</i>.
125
126 <p>
127 <hr>
128
129 <h2>
130 <a name="Scene">2. Scene Description</a>
131 </h2>
132
133 A scene description file represents a three-dimensional physical environment in Cartesian (rectilinear) world coordinates.
134 It is stored as ASCII text, with the following basic format:
135
136 <pre>
137 # comment
138
139 modifier type identifier
140 n S1 S2 &quot;S 3&quot; .. Sn
141 0
142 m R1 R2 R3 .. Rm
143
144 modifier alias identifier reference
145
146 ! command
147
148 ...
149 </pre>
150
151 A comment line begins with a pound sign, `#'.
152
153 <p>
154 The <a NAME="scene_desc">scene description primitives</a>
155 all have the same general format, and can be either surfaces or modifiers.
156 A primitive has a modifier, a type, and an identifier.
157 <p>
158 A <a NAME="modifier"><b>modifier</b></a> is either the
159 identifier of a previously defined primitive, or &quot;void&quot;.
160 <br>
161 [ The most recent definition of a modifier is the
162 one used, and later definitions do not cause relinking
163 of loaded primitives.
164 Thus, the same identifier may be used repeatedly,
165 and each new definition will apply to the primitives following it. ]
166 <p>
167 An <a NAME="identifier"><b>identifier</b></a> can be any string
168 (i.e., any sequence of non-white characters).
169 <p>
170 The arguments associated with a primitive can be strings or real numbers.
171 <ul>
172 <li> The first integer following the identifier is the number of <b>string arguments</b>,
173 and it is followed by the arguments themselves (separated by white space or enclosed in quotes).
174 <li> The next integer is the number of integer arguments, and is followed by the <b>integer arguments</b>.
175 (There are currently no primitives that use them, however.)
176 <li> The next integer is the real argument count, and it is followed by the <b>real arguments</b>.
177 </ul>
178
179 <p>
180 An <a NAME="alias"><b>alias</b></a> gets its type and arguments from
181 a previously defined primitive.
182 This is useful when the same material is
183 used with a different modifier, or as a convenient naming mechanism.
184 The reserved modifier name &quot;inherit&quot; may be used to specificy that
185 an alias will inherit its modifier from the original.
186 Surfaces cannot be aliased.
187
188 <p>
189 A line beginning with an exclamation point, `!',
190 is interpreted as a command.
191 It is executed by the shell, and its output is read as input to the program.
192 The command must not try to read from its standard input, or confusion
193 will result.
194 A command may be continued over multiple lines using a
195 backslash, `\', to escape the newline.
196
197 <p>
198 White space is generally ignored, except as a separator.
199 The exception is the newline character after a command or comment.
200 Commands, comments and primitives may appear in any
201 combination, so long as they are not intermingled.
202
203 <p>
204 <hr>
205
206 <h3>
207 <a NAME="Primitive">2.1. Primitive Types</a>
208 </h3>
209
210 Primitives can be <a HREF="#Surfaces">surfaces</a>,
211 <a HREF="#Materials">materials</a>,
212 <a HREF="#Textures">textures</a> or
213 <a HREF="#Patterns">patterns</a>.
214 Modifiers can be <a HREF="#Materials">materials</a>,
215 <a HREF="#Mixtures">mixtures</a>,
216 <a HREF="#Textures">textures</a> or <a HREF="#Patterns">patterns</a>.
217 Simple surfaces must have one material in their modifier list.
218
219 <p>
220 <hr>
221
222 <h4>
223 <a NAME="Surfaces">2.1.1. Surfaces</a>
224 </h4>
225 <dl>
226
227 A scene description will consist mostly of surfaces.
228 The basic types are given below.
229
230 <p>
231
232 <dt>
233 <a NAME="Source">
234 <b>Source </b>
235 </a>
236 <dd>
237 A source is not really a surface, but a solid angle.
238 It is used for specifying light sources that are very distant.
239 The direction to the center of the source and the number of degrees subtended by its disk are given as follows:
240
241 <pre>
242 mod source id
243 0
244 0
245 4 xdir ydir zdir angle
246 </pre>
247
248 <p>
249
250 <dt>
251 <a NAME="Sphere">
252 <b>Sphere</b>
253 </a>
254 <dd>
255 A sphere is given by its center and radius:
256
257 <pre>
258 mod sphere id
259 0
260 0
261 4 xcent ycent zcent radius
262 </pre>
263
264 <p>
265
266 <dt>
267 <a NAME="Bubble">
268 <b>Bubble</b>
269 </a>
270
271 <dd>
272 A bubble is simply a sphere whose surface normal points inward.
273
274 <p>
275
276 <dt>
277 <a NAME="Polygon">
278 <b>Polygon</b>
279 </a>
280 <dd>
281 A polygon is given by a list of three-dimensional vertices,
282 which are ordered counter-clockwise as viewed from the
283 front side (into the surface normal).
284 The last vertex is automatically connected to the first.
285 Holes are represented in polygons as interior vertices
286 connected to the outer perimeter by coincident edges (seams).
287
288 <pre>
289 mod polygon id
290 0
291 0
292 3n
293 x1 y1 z1
294 x2 y2 z2
295 ...
296 xn yn zn
297 </pre>
298
299 <p>
300
301 <dt>
302 <a NAME="Cone">
303 <b>Cone</b>
304 </a>
305 <dd>
306 A cone is a megaphone-shaped object.
307 It is truncated by two planes perpendicular to its axis,
308 and one of its ends may come to a point.
309 It is given as two axis endpoints, and the starting and ending radii:
310
311 <pre>
312 mod cone id
313 0
314 0
315 8
316 x0 y0 z0
317 x1 y1 z1
318 r0 r1
319 </pre>
320
321 <p>
322
323 <dt>
324 <a NAME="Cup">
325 <b>Cup</b>
326 </a>
327 <dd>
328 A cup is an inverted <a HREF="#Cone">cone</a> (i.e., has an
329 inward surface normal).
330
331 <p>
332
333 <dt>
334 <a NAME="Cylinder">
335 <b>Cylinder</b>
336 </a>
337 <dd>
338 A cylinder is like a <a HREF="#Cone">cone</a>, but its
339 starting and ending radii are equal.
340
341 <pre>
342 mod cylinder id
343 0
344 0
345 7
346 x0 y0 z0
347 x1 y1 z1
348 rad
349 </pre>
350
351 <p>
352
353 <dt>
354 <a NAME="Tube">
355 <b>Tube</b>
356 </a>
357 <dd>
358 A tube is an inverted <a HREF="#Cylinder">cylinder</a>.
359
360 <p>
361
362 <dt>
363 <a NAME="Ring">
364 <b>Ring</b>
365 </a>
366 <dd>
367 A ring is a circular disk given by its center,
368 surface normal, and inner and outer radii:
369
370 <pre>
371 mod ring id
372 0
373 0
374 8
375 xcent ycent zcent
376 xdir ydir zdir
377 r0 r1
378 </pre>
379
380 <p>
381
382 <dt>
383 <a NAME="Instance">
384 <b>Instance</b>
385 </a>
386 <dd>
387 An instance is a compound surface, given
388 by the contents of an octree file (created by oconv).
389
390 <pre>
391 mod instance id
392 1+ octree transform
393 0
394 0
395 </pre>
396
397 If the modifier is &quot;void&quot;, then surfaces will
398 use the modifiers given in the original description.
399 Otherwise, the modifier specified is used in their place.
400 The transform moves the octree to the desired location in the scene.
401 Multiple instances using the same octree take
402 little extra memory, hence very complex
403 descriptions can be rendered using this primitive.
404
405 <p>
406 There are a number of important limitations to be aware of
407 when using instances.
408 First, the scene description used to generate the octree must
409 stand on its own, without referring to modifiers in the
410 parent description.
411 This is necessary for oconv to create the octree.
412 Second, light sources in the octree will not be
413 incorporated correctly in the calculation,
414 and they are not recommended.
415 Finally, there is no advantage (other than
416 convenience) to using a single instance of an octree,
417 or an octree containing only a few surfaces.
418 An <a HREF="../man_html/xform.1.html">xform</a> command
419 on the subordinate description is prefered in such cases.
420 </dl>
421
422 <p>
423
424 <dt>
425 <a NAME="Mesh">
426 <b>Mesh</b>
427 </a>
428 <dd>
429 A mesh is a compound surface, made up of many triangles and
430 an octree data structure to accelerate ray intersection.
431 It is typically converted from a Wavefront .OBJ file using the
432 <i>obj2mesh</i> program.
433
434 <pre>
435 mod mesh id
436 1+ meshfile transform
437 0
438 0
439 </pre>
440
441 If the modifier is &quot;void&quot;, then surfaces will
442 use the modifiers given in the original mesh description.
443 Otherwise, the modifier specified is used in their place.
444 The transform moves the mesh to the desired location in the scene.
445 Multiple instances using the same meshfile take little extra memory,
446 and the compiled mesh itself takes much less space than individual
447 polygons would.
448 In the case of an unsmoothed mesh, using the mesh primitive reduces
449 memory requirements by a factor of 30 relative to individual triangles.
450 If a mesh has smoothed surfaces, we save a factor of 50 or more,
451 permitting very detailed geometries that would otherwise exhaust the
452 available memory.
453 In addition, the mesh primitive can have associated (u,v) coordinates
454 for pattern and texture mapping.
455 These are made available to function files via the Lu and Lv variables.
456
457 </dl>
458
459 <p>
460 <hr>
461
462 <h4>
463 <a NAME="Materials">2.1.2. Materials</a>
464 </h4>
465
466 A material defines the way light interacts with a surface. The basic types are given below.
467
468 <p>
469
470 <dl>
471
472 <dt>
473 <a NAME="Light">
474 <b>Light</b>
475 </a>
476 <dd>
477 Light is the basic material for self-luminous surfaces (i.e.,
478 light sources).
479 In addition to the <a HREF="#Source">source</a> surface type,
480 <a HREF="#Sphere">spheres</a>,
481 discs (<a HREF="#Ring">rings</a> with zero inner radius),
482 <a HREF="#Cylinder">cylinders</a> (provided they are long enough), and <a HREF="#Polygon">polygons</a> can act as light sources.
483 Polygons work best when they are rectangular.
484 Cones cannot be used at this time.
485 A pattern may be used to specify a light output distribution.
486 Light is defined simply as a RGB radiance value (watts/steradian/m2):
487
488 <pre>
489 mod light id
490 0
491 0
492 3 red green blue
493 </pre>
494
495 <p>
496
497 <dt>
498 <a NAME="Illum">
499 <b>Illum</b>
500 </a>
501
502 <dd>
503 Illum is used for secondary light sources with broad distributions.
504 A secondary light source is treated like any other light source, except when viewed directly.
505 It then acts like it is made of a different material (indicated by
506 the string argument), or becomes invisible (if no string argument is given,
507 or the argument is &quot;void&quot;).
508 Secondary sources are useful when modeling windows or brightly illuminated surfaces.
509
510 <pre>
511 mod illum id
512 1 material
513 0
514 3 red green blue
515 </pre>
516
517 <p>
518
519 <dt>
520 <a NAME="Glow">
521 <b>Glow</b>
522 </a>
523
524 <dd>
525 Glow is used for surfaces that are self-luminous, but limited in their effect.
526 In addition to the radiance value, a maximum radius for shadow testing is given:
527
528 <pre>
529 mod glow id
530 0
531 0
532 4 red green blue maxrad
533 </pre>
534
535 If maxrad is zero, then the surface will never be tested for shadow, although it may participate in an interreflection calculation.
536 If maxrad is negative, then the surface will never contribute to scene illumination.
537 Glow sources will never illuminate objects on the other side of an illum surface.
538 This provides a convenient way to illuminate local light fixture geometry without overlighting nearby objects.
539
540 <p>
541
542 <dt>
543 <a NAME="Spotlight">
544 <b>Spotlight</b>
545 </a>
546
547 <dd>
548 Spotlight is used for self-luminous surfaces having directed output.
549 As well as radiance, the full cone angle (in degrees) and orientation (output direction) vector are given.
550 The length of the orientation vector is the distance of the effective
551 focus behind the source center (i.e., the focal length).
552
553 <pre>
554 mod spotlight id
555 0
556 0
557 7 red green blue angle xdir ydir zdir
558 </pre>
559
560 <p>
561
562 <dt>
563 <a NAME="Mirror">
564 <b>Mirror</b>
565 </a>
566
567 <dd>
568 Mirror is used for planar surfaces that produce virtual source reflections.
569 This material should be used sparingly, as it may cause the light source calculation to blow up if it is applied to many small surfaces.
570 This material is only supported for flat surfaces such as <a HREF="#Polygon">polygons</a> and <a HREF="#Ring">rings</a>.
571 The arguments are simply the RGB reflectance values, which should be between 0 and 1.
572 An optional string argument may be used like the illum type to specify a different material to be used for shading non-source rays.
573 If this alternate material is given as &quot;void&quot;, then the mirror surface will be invisible.
574 This is only appropriate if the surface hides other (more detailed) geometry with the same overall reflectance.
575
576 <pre>
577 mod mirror id
578 1 material
579 0
580 3 red green blue
581 </pre>
582
583 <p>
584
585 <dt>
586 <a NAME="Prism1">
587 <b>Prism1</b>
588 </a>
589
590 <dd>
591 The prism1 material is for general light redirection from prismatic glazings, generating virtual light sources.
592 It can only be used to modify a planar surface
593 (i.e., a <a HREF="#Polygon">polygon</a> or <a HREF="#Ring">disk</a>)
594 and should not result in either light concentration or scattering.
595 The new direction of the ray can be on either side of the material,
596 and the definitions must have the correct bidirectional properties to work properly with virtual light sources.
597 The arguments give the coefficient for the redirected light and its direction.
598
599 <pre>
600 mod prism1 id
601 5+ coef dx dy dz funcfile transform
602 0
603 n A1 A2 .. An
604 </pre>
605
606 The new direction variables dx, dy and dz need not produce a normalized vector.
607 For convenience, the variables DxA, DyA and DzA are defined as the normalized direction to the target light source.
608 See <a HREF="#Function">section 2.2.1</a> on function files for further information.
609
610 <p>
611
612 <dt>
613 <a NAME="Prism2">
614 <b>Prism2</b>
615 </a>
616
617 <dd>
618 The material prism2 is identical to <a HREF="#Prism1">prism1</a> except that it provides for two ray redirections rather than one.
619
620 <pre>
621 mod prism2 id
622 9+ coef1 dx1 dy1 dz1 coef2 dx2 dy2 dz2 funcfile transform
623 0
624 n A1 A2 .. An
625 </pre>
626
627 <p>
628
629 <dt>
630 <a NAME="Mist">
631 <b>Mist</b>
632 </a>
633
634 <dd>
635 Mist is a virtual material used to delineate a volume
636 of participating atmosphere.
637 A list of important light sources may be given, along with an
638 extinction coefficient, scattering albedo and scattering eccentricity
639 parameter.
640 The light sources named by the string argument list
641 will be tested for scattering within the volume.
642 Sources are identified by name, and virtual light sources may be indicated
643 by giving the relaying object followed by '&gt;' followed by the source, i.e:
644
645 <pre>
646 3 source1 mirror1&gt;source10 mirror2&gt;mirror1&gt;source3
647 </pre>
648
649 Normally, only one source is given per mist material, and there is an
650 upper limit of 32 to the total number of active scattering sources.
651 The extinction coefficient, if given, is added the the global
652 coefficient set on the command line.
653 Extinction is in units of 1/distance (distance based on the world coordinates),
654 and indicates the proportional loss of radiance over one unit distance.
655 The scattering albedo, if present, will override the global setting within
656 the volume.
657 An albedo of 0 0 0 means a perfectly absorbing medium, and an albedo of
658 1 1 1 means
659 a perfectly scattering medium (no absorption).
660 The scattering eccentricity parameter will likewise override the global
661 setting if it is present.
662 Scattering eccentricity indicates how much scattered light favors the
663 forward direction, as fit by the Henyey-Greenstein function:
664
665 <pre>
666 P(theta) = (1 - g*g) / (1 + g*g - 2*g*cos(theta))^1.5
667 </pre>
668
669 A perfectly isotropic scattering medium has a g parameter of 0, and
670 a highly directional material has a g parameter close to 1.
671 Fits to the g parameter may be found along with typical extinction
672 coefficients and scattering albedos for various atmospheres and
673 cloud types in USGS meteorological tables.
674 (A pattern will be applied to the extinction values.)
675
676 <pre>
677 mod mist id
678 N src1 src2 .. srcN
679 0
680 0|3|6|7 [ rext gext bext [ ralb galb balb [ g ] ] ]
681 </pre>
682
683 There are two usual uses of the mist type.
684 One is to surround a beam from a spotlight or laser so that it is
685 visible during rendering.
686 For this application, it is important to use a <a HREF="#Cone">cone</a>
687 (or <a HREF="#Cylinder">cylinder</a>) that
688 is long enough and wide enough to contain the important visible portion.
689 Light source photometry and intervening objects will have the desired
690 effect, and crossing beams will result in additive scattering.
691 For this application, it is best to leave off the real arguments, and
692 use the global rendering parameters to control the atmosphere.
693 The second application is to model clouds or other localized media.
694 Complex boundary geometry may be used to give shape to a uniform medium,
695 so long as the boundary encloses a proper volume.
696 Alternatively, a pattern may be used to set the line integral value
697 through the cloud for a ray entering or exiting a point in a given
698 direction.
699 For this application, it is best if cloud volumes do not overlap each other,
700 and opaque objects contained within them may not be illuminated correctly
701 unless the line integrals consider enclosed geometry.
702
703 <dt>
704 <a NAME="Plastic">
705 <b>Plastic</b>
706 </a>
707
708 <dd>
709 Plastic is a material with uncolored highlights.
710 It is given by its RGB reflectance, its fraction of specularity, and its roughness value.
711 Roughness is specified as the rms slope of surface facets.
712 A value of 0 corresponds to a perfectly smooth surface, and a value of 1 would be a very rough surface.
713 Specularity fractions greater than 0.1 and roughness values greater than 0.2 are not very realistic.
714 (A pattern modifying plastic will affect the material color.)
715
716 <pre>
717 mod plastic id
718 0
719 0
720 5 red green blue spec rough
721 </pre>
722
723 <p>
724
725 <dt>
726 <a NAME="Metal">
727 <b>Metal</b>
728 </a>
729
730 <dd>
731 Metal is similar to <a HREF="#Plastic">plastic</a>, but specular highlights are modified by the material color.
732 Specularity of metals is usually .9 or greater.
733 As for plastic, roughness values above .2 are uncommon.
734
735 <p>
736
737 <dt>
738 <a NAME="Trans">
739 <b>Trans</b>
740 </a>
741
742 <dd>
743 Trans is a translucent material, similar to <a HREF="#Plastic">plastic</a>.
744 The transmissivity is the fraction of penetrating light that travels all the way through the material.
745 The transmitted specular component is the fraction of transmitted light that is not diffusely scattered.
746 Transmitted and diffusely reflected light is modified by the material color.
747 Translucent objects are infinitely thin.
748
749 <pre>
750 mod trans id
751 0
752 0
753 7 red green blue spec rough trans tspec
754 </pre>
755
756 <p>
757
758 <dt>
759 <a NAME="Plastic2">
760 <b>Plastic2</b>
761 </a>
762
763 <dd>
764 Plastic2 is similar to <a HREF="#Plastic">plastic</a>, but with anisotropic roughness.
765 This means that highlights in the surface will appear elliptical rather than round.
766 The orientation of the anisotropy is determined by the unnormalized direction vector ux uy uz.
767 These three expressions (separated by white space) are evaluated in the context of the function file funcfile.
768 If no function file is required (i.e., no special variables or functions are required), a period (`.') may be given in its place.
769 (See the discussion of <a HREF="#Function">Function Files</a> in the Auxiliary Files section).
770 The urough value defines the roughness along the u vector given projected onto the surface.
771 The vrough value defines the roughness perpendicular to this vector.
772 Note that the highlight will be narrower in the direction of the smaller roughness value.
773 Roughness values of zero are not allowed for efficiency reasons since the behavior would be the same as regular plastic in that case.
774
775 <pre>
776 mod plastic2 id
777 4+ ux uy uz funcfile transform
778 0
779 6 red green blue spec urough vrough
780 </pre>
781
782 <p>
783
784 <dt>
785 <a NAME="Metal2">
786 <b>Metal2</b>
787 </a>
788
789 <dd>
790 Metal2 is the same as <a HREF="#Plastic2">plastic2</a>, except that the highlights are modified by the material color.
791
792 <p>
793
794 <dt>
795 <a NAME="Trans2">
796 <b>Trans2</b>
797 </a>
798
799 <dd>
800 Trans2 is the anisotropic version of <a HREF="#Trans">trans</a>.
801 The string arguments are the same as for <a HREF="#Plastic2">plastic2</a>,
802 and the real arguments are the same as for trans but with an additional roughness value.
803
804 <pre>
805 mod trans2 id
806 4+ ux uy uz funcfile transform
807 0
808 8 red green blue spec urough vrough trans tspec
809 </pre>
810
811 <p>
812
813 <dt>
814 <a NAME="Ashik2">
815 <b>Ashik2</b>
816 </a>
817
818 <dd>
819 Ashik2 is the anisotropic reflectance model by Ashikhmin & Shirley.
820 The string arguments are the same as for <a HREF="#Plastic2">plastic2</a>, but the real
821 arguments have additional flexibility to specify the specular color.
822 Also, rather than roughness, specular power is used, which has no
823 physical meaning other than larger numbers are equivalent to a smoother
824 surface.
825 Unlike other material types, total reflectance is the sum of
826 diffuse and specular colors, and should be adjusted accordingly.
827 <pre>
828 mod ashik2 id
829 4+ ux uy uz funcfile transform
830 0
831 8 dred dgrn dblu sred sgrn sblu u-power v-power
832 </pre>
833
834 <p>
835
836 <dt>
837 <a NAME="WGMDfunc">
838 <b>WGMDfunc</b>
839 </a>
840
841 <dd>
842 WGMDfunc is a more programmable version of <a HREF="#Trans2">trans2</a>,
843 with separate modifier paths and variables to control each component.
844 (WGMD stands for Ward-Geisler-Moroder-Duer, which is the basis for
845 this empirical model, similar to previous ones beside Ashik2.)
846 The specification of this material is given below.
847 <pre>
848 mod WGMDfunc id
849 13+ rs_mod rs rs_urough rs_vrough
850 ts_mod ts ts_urough ts_vrough
851 td_mod
852 ux uy uz funcfile transform
853 0
854 9+ rfdif gfdif bfdif
855 rbdif gbdif bbdif
856 rtdif gtdif btdif
857 A10 ..
858 </pre>
859
860 The sum of specular reflectance (<I>rs</I>), specular transmittance (<I>ts</I>),
861 diffuse reflectance (<I>rfdif gfdif bfdif</I> for front and <I>rbdif gbdif bbdif</I> for back)
862 and diffuse transmittance (<I>rtdif gtdif btdif</I>) should be less than 1 for each
863 channel.
864
865 <p>
866
867 Unique to this material, separate modifier channels are
868 provided for each component.
869 The main modifier is used on the diffuse reflectance, both
870 front and back.
871 The <I>rs_mod</I> modifier is used for specular reflectance.
872 If "void" is given for <I>rs_mod</I>,
873 then the specular reflection color will be white.
874 The special "inherit" keyword may also be given, in which case
875 specular reflectance will share the main modifier.
876 This behavior is replicated for the specular transmittance modifier
877 <I>ts_mod</I>, which also has its own independent roughness expressions.
878 Finally, the diffuse transmittance modifier is given as
879 <I>td_mod</I>, which may also be "void" or "inherit".
880 Note that any spectra or color for specular components must be
881 carried by the named modifier(s).
882
883 <p>
884
885 The main advantage to this material over
886 <a HREF="#BRTDfunc">BRTDfunc</a> and
887 other programmable types described below is that the specular sampling is
888 well-defined, so that all components are fully computed.
889
890 <p>
891
892 <dt>
893 <a NAME="Dielectric">
894 <b>Dielectric</b>
895 </a>
896
897 <dd>
898 A dielectric material is transparent, and it refracts light as well as reflecting it.
899 Its behavior is determined by the index of refraction and transmission coefficient in each wavelength band per unit length.
900 Common glass has a index of refraction (n) around 1.5, and a transmission coefficient of roughly 0.92 over an inch.
901 An additional number, the Hartmann constant, describes how the index of refraction changes as a function of wavelength.
902 It is usually zero. (A <a HREF="#Patterns">pattern</a> modifies only the refracted value.)
903
904 <pre>
905 mod dielectric id
906 0
907 0
908 5 rtn gtn btn n hc
909 </pre>
910
911 <p>
912
913 <dt>
914 <a NAME="Interface">
915 <b>Interface</b>
916 </a>
917
918 <dd>
919 An interface is a boundary between two dielectrics.
920 The first transmission coefficient and refractive index are for the inside; the second ones are for the outside.
921 Ordinary dielectrics are surrounded by a vacuum (1 1 1 1).
922
923 <pre>
924 mod interface id
925 0
926 0
927 8 rtn1 gtn1 btn1 n1 rtn2 gtn2 btn2 n2
928 </pre>
929
930 <p>
931
932 <dt>
933 <a NAME="Glass">
934 <b>Glass</b>
935 </a>
936
937 <dd>
938 Glass is similar to <a HREF="#Dielectric">dielectric</a>, but it is optimized for thin glass surfaces (n = 1.52).
939 One transmitted ray and one reflected ray is produced.
940 By using a single surface is in place of two, internal reflections are avoided.
941 The surface orientation is irrelevant, as it is for <a HREF="#Plastic">plastic</a>, <a HREF="#Metal">metal</a>, and <a HREF="#Trans">trans</a>.
942 The only specification required is the transmissivity at normal incidence.
943 (Transmissivity is the amount of light not absorbed in one traversal
944 of the material.
945 Transmittance -- the value usually measured -- is the total light
946 transmitted through the pane including multiple reflections.)
947 To compute transmissivity (tn) from transmittance (Tn) use:
948
949 <pre>
950 tn = (sqrt(.8402528435+.0072522239*Tn*Tn)-.9166530661)/.0036261119/Tn
951 </pre>
952
953 Standard 88% transmittance glass has a transmissivity of 0.96.
954 (A <a HREF="#Patterns">pattern</a> modifying glass will affect the transmissivity.)
955 If a fourth real argument is given, it is interpreted as the index of refraction to use instead of 1.52.
956
957 <pre>
958 mod glass id
959 0
960 0
961 3 rtn gtn btn
962 </pre>
963
964 <p>
965
966 <dt>
967 <a NAME="Plasfunc">
968 <b>Plasfunc</b>
969 </a>
970
971 <dd>
972 Plasfunc in used for the procedural definition of plastic-like materials
973 with arbitrary bidirectional reflectance distribution functions (BRDF's).
974 The arguments to this material include the color and specularity,
975 as well as the function defining the specular distribution and the auxiliary file where it may be found.
976
977 <pre>
978 mod plasfunc id
979 2+ refl funcfile transform
980 0
981 4+ red green blue spec A5 ..
982 </pre>
983
984 The function refl takes four arguments, the x, y and z
985 direction towards the incident light, and the solid angle
986 subtended by the source.
987 The solid angle is provided to facilitate averaging, and is usually
988 ignored.
989 The refl function should integrate to 1 over
990 the projected hemisphere to maintain energy balance.
991 At least four real arguments must be given, and these are made available along with any additional values to the reflectance function.
992 Currently, only the contribution from direct light sources is considered in the specular calculation.
993 As in most material types, the surface normal is always altered to face the incoming ray.
994
995 <p>
996
997 <dt>
998 <a NAME="Metfunc">
999 <b>Metfunc</b>
1000 </a>
1001
1002 <dd>
1003 Metfunc is identical to <a HREF="#Plasfunc">plasfunc</a> and takes the same arguments,
1004 but the specular component is multiplied also by the material color.
1005
1006 <p>
1007
1008 <dt>
1009 <a NAME="Transfunc">
1010 <b>Transfunc</b>
1011 </a>
1012
1013 <dd>
1014 Transfunc is similar to <a HREF="#Plasfunc">plasfunc</a> but with an arbitrary bidirectional transmittance distribution
1015 as well as a reflectance distribution.
1016 Both reflectance and transmittance are specified with the same function.
1017
1018 <pre>
1019 mod transfunc id
1020 2+ brtd funcfile transform
1021 0
1022 6+ red green blue rspec trans tspec A7 ..
1023 </pre>
1024
1025 Where trans is the total light transmitted and tspec is the non-Lambertian fraction of transmitted light.
1026 The function brtd should integrate to 1 over each projected hemisphere.
1027
1028 <p>
1029
1030 <dt>
1031 <a NAME="BRTDfunc">
1032 <b>BRTDfunc</b>
1033 </a>
1034
1035 <dd>
1036 The material BRTDfunc gives the maximum flexibility over surface reflectance and transmittance,
1037 providing for spectrally-dependent specular rays and reflectance and transmittance distribution functions.
1038
1039 <pre>
1040 mod BRTDfunc id
1041 10+ rrefl grefl brefl
1042 rtrns gtrns btrns
1043 rbrtd gbrtd bbrtd
1044 funcfile transform
1045 0
1046 9+ rfdif gfdif bfdif
1047 rbdif gbdif bbdif
1048 rtdif gtdif btdif
1049 A10 ..
1050 </pre>
1051
1052 The variables rrefl, grefl and brefl specify the color coefficients for the ideal specular (mirror) reflection of the surface.
1053 The variables rtrns, gtrns and btrns specify the color coefficients for the ideal specular transmission.
1054 The functions rbrtd, gbrtd and bbrtd take the direction to the incident light (and its solid angle) and
1055 compute the color coefficients for the directional diffuse part of reflection and transmission.
1056 As a special case, three identical values of '0' may be given in place of these function names to indicate no directional diffuse component.
1057
1058 <p>
1059 Unlike most other material types, the surface normal is not altered to face the incoming ray.
1060 Thus, functions and variables must pay attention to the orientation of the surface and make adjustments appropriately.
1061 However, the special variables for the perturbed dot product and surface normal, RdotP, NxP, NyP and NzP are reoriented
1062 as if the ray hit the front surface for convenience.
1063
1064 <p>
1065 A diffuse reflection component may be given for the front side with rfdif, gfdif and bfdif for the front side of the surface
1066 or rbdif, gbdif and bbdif for the back side.
1067 The diffuse transmittance (must be the same for both sides by physical law) is given by rtdif, gtdif and btdif.
1068 A pattern will modify these diffuse scattering values, and will be available through the special variables CrP, CgP and CbP.
1069
1070 <p>
1071 Care must be taken when using this material type to produce a physically valid reflection model.
1072 The reflectance functions should be bidirectional, and under no circumstances should the sum of reflected diffuse,
1073 transmitted diffuse, reflected specular, transmitted specular and the integrated directional diffuse component be greater than one.
1074
1075 <p>
1076
1077 <dt>
1078 <a NAME="Plasdata">
1079 <b>Plasdata</b>
1080 </a>
1081
1082 <dd>
1083 Plasdata is used for arbitrary BRDF's that are most conveniently given as interpolated data.
1084 The arguments to this material are the <a HREF="#Data">data file</a> and coordinate index functions,
1085 as well as a function to optionally modify the data values.
1086
1087 <pre>
1088 mod plasdata id
1089 3+n+
1090 func datafile
1091 funcfile x1 x2 .. xn transform
1092 0
1093 4+ red green blue spec A5 ..
1094 </pre>
1095
1096 The coordinate indices (x1, x2, etc.) are themselves functions of the x, y and z direction to the incident light, plus the solid angle
1097 subtended by the light source (usually ignored).
1098 The data function (func) takes five variables, the
1099 interpolated value from the n-dimensional data file, followed by the
1100 x, y and z direction to the incident light and the solid angle of the source.
1101 The light source direction and size may of course be ignored by the function.
1102
1103 <p>
1104
1105 <dt>
1106 <a NAME="Metdata">
1107 <b>Metdata</b>
1108 </a>
1109
1110 <dd>
1111 As metfunc is to plasfunc, metdata is to <a HREF="#Plasdata">plasdata</a>.
1112 Metdata takes the same arguments as plasdata, but the specular component is modified by the given material color.
1113
1114 <p>
1115
1116 <dt>
1117 <a NAME="Transdata">
1118 <b>Transdata</b>
1119 </a>
1120
1121 <dd>
1122 Transdata is like <a HREF="#Plasdata">plasdata</a> but the specification includes transmittance as well as reflectance.
1123 The parameters are as follows.
1124
1125 <pre>
1126 mod transdata id
1127 3+n+
1128 func datafile
1129 funcfile x1 x2 .. xn transform
1130 0
1131 6+ red green blue rspec trans tspec A7 ..
1132 </pre>
1133
1134 <p>
1135
1136 <dt>
1137 <a NAME="BSDF">
1138 <b>BSDF</b>
1139 </a>
1140
1141 <dd>
1142 The BSDF material type loads an XML (eXtensible Markup Language)
1143 file describing a bidirectional scattering distribution function.
1144 Real arguments to this material may define additional
1145 diffuse components that augment the BSDF data.
1146 String arguments are used to define thickness for proxied
1147 surfaces and the &quot;up&quot; orientation for the material.
1148
1149 <pre>
1150 mod BSDF id
1151 6+ thick BSDFfile ux uy uz funcfile transform
1152 0
1153 0|3|6|9
1154 rfdif gfdif bfdif
1155 rbdif gbdif bbdif
1156 rtdif gtdif btdif
1157 </pre>
1158
1159 <p>
1160 The first string argument is a &quot;thickness&quot; parameter that may be used
1161 to hide detail geometry being proxied by an aggregate BSDF material.
1162 If a view or shadow ray hits a BSDF proxy with non-zero thickness,
1163 it will pass directly through as if the surface were not there.
1164 Similar to the illum type, this permits direct viewing and
1165 shadow testing of complex geometry.
1166 The BSDF is used when a scattered (indirect) ray hits the surface,
1167 and any transmitted sample rays will be offset by the thickness amount
1168 to avoid the hidden geometry and gather samples from the other side.
1169 In this manner, BSDF surfaces can improve the results for indirect
1170 scattering from complex systems without sacrificing appearance or
1171 shadow accuracy.
1172 If the BSDF has transmission and back-side reflection data,
1173 a parallel BSDF surface may be
1174 placed slightly less than the given thickness away from the front surface
1175 to enclose the complex geometry on both sides.
1176 The sign of the thickness is important, as it indicates
1177 whether the proxied geometry is behind the BSDF
1178 surface (when thickness is positive) or in front (when
1179 thickness is negative).
1180 <p>
1181 The second string argument is the name of the BSDF file,
1182 which is found in the usual auxiliary locations. The
1183 following three string parameters name variables for an
1184 &quot;up&quot; vector, which together with the surface
1185 normal, define the local coordinate system that orients the
1186 BSDF. These variables, along with the thickness, are defined
1187 in a function file given as the next string argument. An
1188 optional transform is used to scale the thickness and
1189 reorient the up vector.
1190 <p>
1191 If no real arguments are given, the BSDF is used by itself
1192 to determine reflection and transmission. If there are at
1193 least 3 real arguments, the first triplet is an additional
1194 diffuse reflectance for the front side. At least 6 real
1195 arguments adds diffuse reflectance to the rear side of the
1196 surface. If there are 9 real arguments, the final triplet
1197 will be taken as an additional diffuse transmittance. All
1198 diffuse components as well as the non-diffuse transmission
1199 are modified by patterns applied to this material. The
1200 non-diffuse reflection from either side are unaffected.
1201 Textures perturb the effective surface normal in the usual
1202 way.
1203 <p>
1204 The surface normal of this type is not altered to face the
1205 incoming ray, so the front and back BSDF reflections may
1206 differ. (Transmission is identical front-to-back by physical
1207 law.) If back visibility is turned off during rendering and
1208 there is no transmission or back-side reflection, only then
1209 the surface will be invisible from behind. Unlike other
1210 data-driven material types, the BSDF type is fully supported
1211 and all parts of the distribution are properly sampled.
1212 <p>
1213
1214 <dt>
1215 <a NAME="aBSDF">
1216 <b>aBSDF</b>
1217 </a>
1218
1219 <dd>
1220 The aBSDF material is identical to the BSDF type with two
1221 important differences. First, proxy geometry is not
1222 supported, so there is no thickness parameter. Second, an
1223 aBSDF is assumed to have some specular through component
1224 (the &rsquo;a&rsquo; stands for &quot;aperture&quot;),
1225 which is treated specially during the direct calculation
1226 and when viewing the material. Based on the BSDF data, the
1227 coefficient of specular transmission is determined and used
1228 for modifying unscattered shadow and view rays.
1229
1230 <pre>
1231 mod aBSDF id
1232 5+ BSDFfile ux uy uz funcfile transform
1233 0
1234 0|3|6|9
1235 rfdif gfdif bfdif
1236 rbdif gbdif bbdif
1237 rtdif gtdif btdif
1238 </pre>
1239
1240 <p>
1241 If a material has no specular transmitted component, it is
1242 much better to use the BSDF type with a zero thickness
1243 than to use aBSDF.
1244 <p>
1245
1246 <dt>
1247 <a NAME="Antimatter">
1248 <b>Antimatter</b>
1249 </a>
1250
1251 <dd>
1252 Antimatter is a material that can &quot;subtract&quot; volumes from other volumes.
1253 A ray passing into an antimatter object becomes blind to all the specified modifiers:
1254
1255 <pre>
1256 mod antimatter id
1257 N mod1 mod2 .. modN
1258 0
1259 0
1260 </pre>
1261
1262 The first modifier will also be used to shade the area leaving the antimatter volume and entering the regular volume.
1263 If mod1 is void, the antimatter volume is completely invisible.
1264 Antimatter does not work properly with the material type <a HREF="#Trans">&quot;trans&quot;</a>,
1265 and multiple antimatter surfaces should be disjoint.
1266 The viewpoint must be outside all volumes concerned for a correct rendering.
1267
1268 </dl>
1269
1270 <p>
1271 <hr>
1272
1273 <h4>
1274 <a NAME="Textures">2.1.3. Textures</a>
1275 </h4>
1276
1277 A texture is a perturbation of the surface normal, and is given by either a function or data.
1278
1279 <p>
1280
1281 <dl>
1282
1283 <dt>
1284 <a NAME="Texfunc">
1285 <b>Texfunc</b>
1286 </a>
1287
1288 <dd>
1289 A texfunc uses an auxiliary function file to specify a procedural texture:
1290
1291 <pre>
1292 mod texfunc id
1293 4+ xpert ypert zpert funcfile transform
1294 0
1295 n A1 A2 .. An
1296 </pre>
1297
1298 <p>
1299
1300 <dt>
1301 <a NAME="Texdata">
1302 <b>Texdata</b>
1303 </a>
1304
1305 <dd>
1306 A texdata texture uses three data files to get the surface normal perturbations.
1307 The variables xfunc, yfunc and zfunc take three arguments each from the interpolated values in xdfname, ydfname and zdfname.
1308
1309 <pre>
1310 mod texdata id
1311 8+ xfunc yfunc zfunc xdfname ydfname zdfname vfname x0 x1 .. xf
1312 0
1313 n A1 A2 .. An
1314 </pre>
1315
1316 </dl>
1317
1318 <p>
1319 <hr>
1320
1321 <h4>
1322 <a NAME="Patterns">2.1.4. Patterns</a>
1323 </h4>
1324
1325 Patterns are used to modify the reflectance of materials. The basic types are given below.
1326
1327 <p>
1328
1329 <dl>
1330
1331 <dt>
1332 <a NAME="Colorfunc">
1333 <b>Colorfunc</b>
1334 </a>
1335
1336 <dd>
1337 A colorfunc is a procedurally defined color pattern. It is specified as follows:
1338
1339 <pre>
1340 mod colorfunc id
1341 4+ red green blue funcfile transform
1342 0
1343 n A1 A2 .. An
1344 </pre>
1345
1346 <p>
1347
1348 <dt>
1349 <a NAME="Brightfunc">
1350 <b>Brightfunc</b>
1351 </a>
1352
1353 <dd>
1354 A brightfunc is the same as a colorfunc, except it is monochromatic.
1355
1356 <pre>
1357 mod brightfunc id
1358 2+ refl funcfile transform
1359 0
1360 n A1 A2 .. An
1361 </pre>
1362
1363 <p>
1364
1365 <dt>
1366 <a NAME="Colordata">
1367 <b>Colordata</b>
1368 </a>
1369
1370 <dd>
1371 Colordata uses an interpolated data map to modify a material's color.
1372 The map is n-dimensional, and is stored in three auxiliary files, one for each color.
1373 The coordinates used to look up and interpolate the data are defined in another auxiliary file.
1374 The interpolated data values are modified by functions of one or three variables.
1375 If the functions are of one variable, then they are passed the corresponding color component (red or green or blue).
1376 If the functions are of three variables, then they are passed the original red, green, and blue values as parameters.
1377
1378 <pre>
1379 mod colordata id
1380 7+n+
1381 rfunc gfunc bfunc rdatafile gdatafile bdatafile
1382 funcfile x1 x2 .. xn transform
1383 0
1384 m A1 A2 .. Am
1385 </pre>
1386
1387 <p>
1388
1389 <dt>
1390 <a NAME="Brightdata">
1391 <b>Brightdata</b>
1392 </a>
1393
1394 <dd>
1395 Brightdata is like colordata, except monochromatic.
1396
1397 <pre>
1398 mod brightdata id
1399 3+n+
1400 func datafile
1401 funcfile x1 x2 .. xn transform
1402 0
1403 m A1 A2 .. Am
1404 </pre>
1405
1406 <p>
1407
1408 <dt>
1409 <a NAME="Colorpict">
1410 <b>Colorpict</b>
1411 </a>
1412
1413 <dd>
1414 Colorpict is a special case of colordata, where the pattern is a two-dimensional image stored in the RADIANCE picture format.
1415 The dimensions of the image data are determined by the picture such that the smaller dimension is always 1,
1416 and the other is the ratio between the larger and the smaller.
1417 For example, a 500x338 picture would have coordinates (u,v) in the rectangle between (0,0) and (1.48,1).
1418
1419 <pre>
1420 mod colorpict id
1421 7+
1422 rfunc gfunc bfunc pictfile
1423 funcfile u v transform
1424 0
1425 m A1 A2 .. Am
1426 </pre>
1427
1428 <p>
1429
1430 <dt>
1431 <a NAME="Colortext">
1432 <b>Colortext</b>
1433 </a>
1434
1435 <dd>
1436 Colortext is dichromatic writing in a polygonal font.
1437 The font is defined in an auxiliary file, such as helvet.fnt.
1438 The text itself is also specified in a separate file, or can be part of the material arguments.
1439 The character size, orientation, aspect ratio and slant is determined by right and down motion vectors.
1440 The upper left origin for the text block as well as the foreground and background colors must also be given.
1441
1442 <pre>
1443 mod colortext id
1444 2 fontfile textfile
1445 0
1446 15+
1447 Ox Oy Oz
1448 Rx Ry Rz
1449 Dx Dy Dz
1450 rfore gfore bfore
1451 rback gback bback
1452 [spacing]
1453 </pre>
1454
1455 or:
1456
1457 <pre>
1458 mod colortext id
1459 2+N fontfile . This is a line with N words ...
1460 0
1461 15+
1462 Ox Oy Oz
1463 Rx Ry Rz
1464 Dx Dy Dz
1465 rfore gfore bfore
1466 rback gback bback
1467 [spacing]
1468 </pre>
1469
1470 <p>
1471
1472 <dt>
1473 <a NAME="Brighttext">
1474 <b>Brighttext</b>
1475 </a>
1476
1477 <dd>
1478 Brighttext is like colortext, but the writing is monochromatic.
1479
1480 <pre>
1481 mod brighttext id
1482 2 fontfile textfile
1483 0
1484 11+
1485 Ox Oy Oz
1486 Rx Ry Rz
1487 Dx Dy Dz
1488 foreground background
1489 [spacing]
1490 </pre>
1491
1492 or:
1493
1494 <pre>
1495 mod brighttext id
1496 2+N fontfile . This is a line with N words ...
1497 0
1498 11+
1499 Ox Oy Oz
1500 Rx Ry Rz
1501 Dx Dy Dz
1502 foreground background
1503 [spacing]
1504 </pre>
1505
1506 <p>
1507
1508 By default, a uniform spacing algorithm is used that guarantees every character will appear in a precisely determined position.
1509 Unfortunately, such a scheme results in rather unattractive and difficult to read text with most fonts.
1510 The optional spacing value defines the distance between characters for proportional spacing.
1511 A positive value selects a spacing algorithm that preserves right margins and indentation,
1512 but does not provide the ultimate in proportionally spaced text.
1513 A negative value insures that characters are properly spaced, but the placement of words then varies unpredictably.
1514 The choice depends on the relative importance of spacing versus formatting.
1515 When presenting a section of formatted text, a positive spacing value is usually preferred.
1516 A single line of text will often be accompanied by a negative spacing value.
1517 A section of text meant to depict a picture, perhaps using a special purpose font such as hexbit4x1.fnt, calls for uniform spacing.
1518 Reasonable magnitudes for proportional spacing are between 0.1 (for tightly spaced characters) and 0.3 (for wide spacing).
1519
1520 <p>
1521
1522 <dt>
1523 <a NAME="Spectrum">
1524 <b>Spectrum</b>
1525 </a>
1526
1527 <dd>
1528 The spectrum primitive is the most basic type for introducing spectral
1529 color to a material.
1530 Since materials only provide RGB parameters, spectral patterns
1531 are the only way to superimpose wavelength-dependent behavior.
1532
1533 <pre>
1534 mod spectrum id
1535 0
1536 0
1537 5+ nmA nmB s1 s2 .. sN
1538 </pre>
1539
1540 <p>
1541 The first two real arguments indicate the extrema of the
1542 spectral range in nanometers.
1543 Subsequent real values correspond to multipliers at each wavelength.
1544 The nmA wavelength may be greater or less than nmB,
1545 but they may not be equal, and their ordering matches
1546 the order of the spectral values.
1547 A minimum of 3 values must be given, which would act
1548 more or less the same as a constant RGB multiplier.
1549 As with RGB values, spectral quantities normally range between 0
1550 and 1 at each wavelength, or average to 1.0 against a standard
1551 sensitivity functions such as V(lambda).
1552 The best results obtain when the spectral range and number
1553 of samples match rendering options, though resampling will handle
1554 any differences, zero-filling wavelenths outside the nmA to nmB
1555 range.
1556 A warning will be issued if the given wavelength range does not
1557 adequately cover the visible spectrum.
1558
1559 <p>
1560
1561 <dt>
1562 <a NAME="Specfile">
1563 <b>Specfile</b>
1564 </a>
1565
1566 <dd>
1567 The specfile primitive is equivalent to the spectrum type, but
1568 the wavelength range and values are contained in a 1-dimensional
1569 data file.
1570 This may be a more convenient way to specify a spectral color,
1571 especially one corresponding to a standard illuminant such as D65
1572 or a library of measured spectra.
1573
1574 <pre>
1575 mod specfile id
1576 1 datafile
1577 0
1578 0
1579 </pre>
1580
1581 <p>
1582 As with the spectrum type, rendering wavelengths outside the defined
1583 range will be zero-filled.
1584 Unlike the spectrum type, the file may contain non-uniform samples.
1585
1586 <p>
1587
1588 <dt>
1589 <a NAME="Specfunc">
1590 <b>Specfunc</b>
1591 </a>
1592
1593 <dd>
1594 The specfunc primitive offers dynamic control over a spectral
1595 pattern, similar to the colorfunc type.
1596
1597 <pre>
1598 mod specfunc id
1599 2+ sfunc funcfile transform
1600 0
1601 2+ nmA nmB A3 ..
1602 </pre>
1603
1604 <p>
1605 Like the spectrum primitive, the wavelength range is specified
1606 in the first two real arguments, and additional real values are
1607 set in the evaluation context.
1608 This function is fed a wavelenth sample
1609 between nmA and nmB as its only argument,
1610 and it returns the corresponding spectral intensity.
1611
1612 <dt>
1613 <a NAME="Specdata">
1614 <b>Specdata</b>
1615 </a>
1616
1617 <dd>
1618 Specdata is like brightdata and colordata, but with more
1619 than 3 specular samples.
1620
1621 <pre>
1622 mod specdata id
1623 3+n+
1624 func datafile
1625 funcfile x1 x2 .. xn transform
1626 0
1627 m A1 A2 .. Am
1628 </pre>
1629
1630 <p>
1631 The data file must have one more dimension than the coordinate
1632 variable count, as this final dimension corresponds to the covered
1633 spectrum.
1634 The starting and ending wavelengths are specified in "datafile"
1635 as well as the number of spectral samples.
1636 The function "func" will be called with two parameters, the
1637 interpolated spectral value for the current coordinate and the
1638 associated wavelength.
1639 If the spectrum is broken into 12 components, then 12 calls
1640 will be made to "func" for the relevant ray evaluation.
1641
1642 <dt>
1643 <a NAME="Specpict">
1644 <b>Specpict</b>
1645 </a>
1646
1647 <dd>
1648 Specpict is a special case of specdata, where the pattern is
1649 a hyperspectral image stored in the common-exponent file format.
1650 The dimensions of the image data are determined by the picture
1651 just as with the colorpict primitive.
1652
1653 <pre>
1654 mod specpict id
1655 5+
1656 func specfile
1657 funcfile u v transform
1658 0
1659 m A1 A2 .. Am
1660 </pre>
1661
1662 <p>
1663 The function "func" is called with the interpolated pixel value
1664 and the wavelength sample in nanometers, the same as specdata,
1665 with as many calls made as there are components in "specfile".
1666
1667 </dl>
1668
1669 <p>
1670 <hr>
1671
1672 <h4>
1673 <a NAME="Mixtures">2.1.5. Mixtures</a>
1674 </h4>
1675
1676 A mixture is a blend of one or more materials or textures and patterns.
1677 Blended materials should not be light source types or virtual source types.
1678 The basic types are given below.
1679
1680 <p>
1681
1682 <dl>
1683
1684 <dt>
1685 <a NAME="Mixfunc">
1686 <b>Mixfunc</b>
1687 </a>
1688
1689 <dd>
1690 A mixfunc mixes two modifiers procedurally. It is specified as follows:
1691
1692 <pre>
1693 mod mixfunc id
1694 4+ foreground background vname funcfile transform
1695 0
1696 n A1 A2 .. An
1697 </pre>
1698
1699 Foreground and background are modifier names that must be
1700 defined earlier in the scene description.
1701 If one of these is a material, then
1702 the modifier of the mixfunc must be &quot;void&quot;.
1703 (Either the foreground or background modifier may be &quot;void&quot;,
1704 which serves as a form of opacity control when used with a material.)
1705 Vname is the coefficient defined in funcfile that determines the influence of foreground.
1706 The background coefficient is always (1-vname).
1707
1708 <p>
1709
1710 <dt>
1711 <a NAME="Mixdata">
1712 <b>Mixdata</b>
1713 </a>
1714
1715 <dd>
1716 Mixdata combines two modifiers using an auxiliary data file:
1717
1718 <pre>
1719 mod mixdata id
1720 5+n+
1721 foreground background func datafile
1722 funcfile x1 x2 .. xn transform
1723 0
1724 m A1 A2 .. Am
1725 </pre>
1726
1727 <dt>
1728 <a NAME="Mixpict">
1729 <b>Mixpict</b>
1730 </a>
1731
1732 <dd>
1733 Mixpict combines two modifiers based on a picture:
1734
1735 <pre>
1736 mod mixpict id
1737 7+
1738 foreground background func pictfile
1739 funcfile u v transform
1740 0
1741 m A1 A2 .. Am
1742 </pre>
1743
1744 <p>
1745
1746 The mixing coefficient function &quot;func&quot; takes three
1747 arguments, the red, green and blue values
1748 corresponding to the pixel at (u,v).
1749
1750 <p>
1751
1752 <dt>
1753 <a NAME="Mixtext">
1754 <b>Mixtext</b>
1755 </a>
1756
1757 <dd>
1758 Mixtext uses one modifier for the text foreground, and one for the background:
1759
1760 <pre>
1761 mod mixtext id
1762 4 foreground background fontfile textfile
1763 0
1764 9+
1765 Ox Oy Oz
1766 Rx Ry Rz
1767 Dx Dy Dz
1768 [spacing]
1769 </pre>
1770
1771 or:
1772
1773 <pre>
1774 mod mixtext id
1775 4+N
1776 foreground background fontfile .
1777 This is a line with N words ...
1778 0
1779 9+
1780 Ox Oy Oz
1781 Rx Ry Rz
1782 Dx Dy Dz
1783 [spacing]
1784 </pre>
1785
1786 </dl>
1787
1788 <p>
1789 <hr>
1790
1791 <h3>
1792 <a NAME="Auxiliary">2.2. Auxiliary Files</a>
1793 </h3>
1794
1795 Auxiliary files used in <a HREF="#Textures">textures</a> and <a HREF="#Patterns">patterns</a>
1796 are accessed by the programs during image generation.
1797 These files may be located in the working directory, or in a library directory.
1798 The environment variable RAYPATH can be assigned an alternate set of search directories.
1799 Following is a brief description of some common file types.
1800
1801 <p>
1802
1803 <h4>
1804 <a NAME="Function">12.2.1. Function Files</a>
1805 </h4>
1806
1807 A function file contains the definitions of variables, functions and constants used by a primitive.
1808 The transformation that accompanies the file name contains the necessary rotations, translations and scalings
1809 to bring the coordinates of the function file into agreement with the world coordinates.
1810 The transformation specification is the same as for the <a HREF="#Generators">xform</a> command.
1811 An example function file is given below:
1812
1813 <pre>
1814 {
1815 This is a comment, enclosed in curly braces.
1816 {Comments can be nested.}
1817 }
1818 { standard expressions use +,-,*,/,^,(,) }
1819 vname = Ny * func(A1) ;
1820 { constants are defined with a colon }
1821 const : sqrt(PI/2) ;
1822 { user-defined functions add to library }
1823 func(x) = 5 + A1*sin(x/3) ;
1824 { functions may be passed and recursive }
1825 rfunc(f,x) = if(x,f(x),f(-x)*rfunc(f,x+1)) ;
1826 { constant functions may also be defined }
1827 cfunc(x) : 10*x / sqrt(x) ;
1828 </pre>
1829
1830 Many variables and functions are already defined by the program, and they are listed in the file rayinit.cal.
1831 The following variables are particularly important:
1832
1833 <pre>
1834 Dx, Dy, Dz - incident ray direction
1835 Nx, Ny, Nz - surface normal at intersection point
1836 Px, Py, Pz - intersection point
1837 T - distance from start
1838 Ts - single ray (shadow) distance
1839 Rdot - cosine between ray and normal
1840 arg(0) - number of real arguments
1841 arg(i) - i'th real argument
1842 </pre>
1843
1844 For mesh objects, the local surface coordinates are available:
1845
1846 <pre>
1847 Lu, Lv - local (u,v) coordinates
1848 </pre>
1849
1850 For BRDF types, the following variables are defined as well:
1851
1852 <pre>
1853 NxP, NyP, NzP - perturbed surface normal
1854 RdotP - perturbed dot product
1855 CrP, CgP, CbP - perturbed material color
1856 </pre>
1857
1858 A unique context is set up for each file so
1859 that the same variable may appear in different
1860 function files without conflict.
1861 The variables listed above and any others defined in
1862 rayinit.cal are available globally.
1863 If no file is needed by a given primitive because all
1864 the required variables are global,
1865 a period (`.') can be given in place of the file name.
1866 It is also possible to give an expression instead
1867 of a straight variable name in a scene file.
1868 Functions (requiring parameters) must be given
1869 as names and not as expressions.
1870
1871 <p>
1872 Constant expressions are used as an optimization in function files.
1873 They are replaced wherever they occur in an expression by their value.
1874 Constant expressions are evaluated only once, so they must not contain any variables or values that can change,
1875 such as the ray variables Px and Ny or the primitive argument function arg().
1876 All the math library functions such as sqrt() and cos() have the constant attribute,
1877 so they will be replaced by immediate values whenever they are given constant arguments.
1878 Thus, the subexpression cos(PI*sqrt(2)) is immediately replaced by its value, -.266255342,
1879 and does not cause any additional overhead in the calculation.
1880
1881 <p>
1882 It is generally a good idea to define constants and variables before they are referred to in a function file.
1883 Although evaluation does not take place until later, the interpreter does variable scoping and
1884 constant subexpression evaluation based on what it has compiled already.
1885 For example, a variable that is defined globally in rayinit.cal
1886 then referenced in the local context of a function file
1887 cannot subsequently be redefined in the same file
1888 because the compiler has already determined the scope of the referenced variable as global.
1889 To avoid such conflicts, one can state the scope of a variable explicitly by
1890 preceding the variable name with a context mark (a back-quote) for a local variable,
1891 or following the name with a context mark for a global variable.
1892
1893 <p>
1894
1895 <h4>
1896 <a NAME="Data">2.2.2. Data Files</a>
1897 </h4>
1898
1899 Data files contain n-dimensional arrays of real numbers used for interpolation.
1900 Typically, definitions in a function file determine how to index and use interpolated data values.
1901 The basic data file format is as follows:
1902
1903 <pre>
1904 N
1905 beg1 end1 m1
1906 0 0 m2 x2.1 x2.2 x2.3 x2.4 .. x2.m2
1907 ...
1908 begN endN mN
1909 DATA, later dimensions changing faster.
1910 </pre>
1911
1912 N is the number of dimensions.
1913 For each dimension, the beginning and ending coordinate values and the dimension size is given.
1914 Alternatively, individual coordinate values can be given when the points are not evenly spaced.
1915 These values must either be increasing or decreasing monotonically.
1916 The data is m1*m2*...*mN real numbers in ASCII form.
1917 Comments may appear anywhere in the file, beginning with a pound
1918 sign ('#') and continuing to the end of line.
1919
1920 <p>
1921
1922 <h4>
1923 <a NAME="Font">2.2.3. Font Files</a>
1924 </h4>
1925
1926 A font file lists the polygons which make up a character set.
1927 Comments may appear anywhere in the file, beginning with a pound
1928 sign ('#') and continuing to the end of line.
1929 All numbers are decimal integers:
1930
1931 <pre>
1932 code n
1933 x0 y0
1934 x1 y1
1935 ...
1936 xn yn
1937 ...
1938 </pre>
1939
1940 The ASCII codes can appear in any order. N is the number of vertices, and the last is automatically connected to the first.
1941 Separate polygonal sections are joined by coincident sides.
1942 The character coordinate system is a square with lower left corner at (0,0), lower right at (255,0) and upper right at (255,255).
1943
1944 <p>
1945
1946 <hr>
1947
1948 <h3>
1949 <a NAME="Generators">2.3. Generators</a>
1950 </h3>
1951
1952 A generator is any program that produces a scene description as its output.
1953 They usually appear as commands in a scene description file.
1954 An example of a simple generator is genbox.
1955
1956 <ul>
1957
1958 <li>
1959 <a NAME="Genbox" HREF="../man_html/genbox.1.html">
1960 <b>Genbox</b>
1961 </a>
1962 takes the arguments of width, height and depth to produce a parallelepiped description.
1963 <li>
1964 <a NAME="Genprism" HREF="../man_html/genprism.1.html">
1965 <b>Genprism</b>
1966 </a>
1967 takes a list of 2-dimensional coordinates and extrudes them along a vector to
1968 produce a 3-dimensional prism.
1969 <li>
1970 <a NAME="Genrev" HREF="../man_html/genrev.1.html">
1971 <b>Genrev</b>
1972 </a>
1973 is a more sophisticated generator that produces an object of rotation from parametric functions for radius and axis position.
1974 <li>
1975 <a NAME="Gensurf" HREF="../man_html/gensurf.1.html">
1976 <b>Gensurf</b>
1977 </a>
1978 tessellates a surface defined by the parametric functions x(s,t), y(s,t), and z(s,t).
1979 <li>
1980 <a NAME="Genworm" HREF="../man_html/genworm.1.html">
1981 <b>Genworm</b>
1982 </a>
1983 links cylinders and spheres along a curve.
1984 <li>
1985 <a NAME="Gensky" HREF="../man_html/gensky.1.html">
1986 <b>Gensky</b>
1987 </a>
1988 produces a sun and sky distribution corresponding to a given time and date.
1989 <li>
1990 <a NAME="Xform" HREF="../man_html/xform.1.html">
1991 <b>Xform</b>
1992 </a>
1993 is a program that transforms a scene description from one coordinate space to another.
1994 Xform does rotation, translation, scaling, and mirroring.
1995
1996 </ul>
1997
1998 <p>
1999 <hr>
2000
2001 <h2>
2002 <a NAME="Image">3. Image Generation</a>
2003 </h2>
2004
2005 Once the scene has been described in three-dimensions, it is possible to generate a two-dimensional image from a given perspective.
2006
2007 <p>
2008 The image generating programs use an <a NAME="octree"><b>octree</b></a> to efficiently trace rays through the scene.
2009 An octree subdivides space into nested octants which contain sets of surfaces.
2010 In RADIANCE, an octree is created from a scene description by <a NAME="oconv1" HREF="../man_html/oconv.1.html"><b>oconv</b></a>.
2011 The details of this process are not important, but the octree will serve as input to the ray-tracing programs and
2012 directs the use of a scene description.
2013 <ul>
2014 <li>
2015 <a NAME="rvu" HREF="../man_html/rvu.1.html"><b>Rvu</b></a> is ray-tracing program for viewing a scene interactively.
2016 When the user specifies a new perspective, rvu quickly displays a rough image on the terminal,
2017 then progressively increases the resolution as the user looks on.
2018 He can select a particular section of the image to improve, or move to a different view and start over.
2019 This mode of interaction is useful for debugging scenes as well as determining the best view for a final image.
2020
2021 <li>
2022 <a NAME="rpict" HREF="../man_html/rpict.1.html"><b>Rpict</b></a> produces a high-resolution picture of a scene from a particular perspective.
2023 This program features adaptive sampling, crash recovery and progress reporting, all of which are important for time-consuming images.
2024 </ul>
2025 <p>
2026 A number of <a NAME="filters"><b>filters</b></a> are available for manipulating picture files:
2027 <ul>
2028 <li> <a HREF="../man_html/pfilt.1.html"><b>Pfilt</b></a>
2029 sets the exposure and performs antialiasing.
2030 <li> <a HREF="../man_html/pcompos.1.html"><b>Pcompos</b></a>
2031 composites (cuts and pastes) pictures.
2032 <li> <a HREF="../man_html/pcomb.1.html"><b>Pcomb</b></a>
2033 performs arbitrary math on one or more pictures.
2034 <li> <a HREF="../man_html/pcond.1.html"><b>Pcond</b></a>
2035 conditions a picture for a specific display device.
2036 <li> <a HREF="../man_html/protate.1.html"><b>Protate</b></a>
2037 rotates a picture 90 degrees clockwise.
2038 <li> <a HREF="../man_html/pflip.1.html"><b>Pflip</b></a>
2039 flips a picture horizontally, vertically, or both
2040 (180 degree rotation).
2041 <li> <a HREF="../man_html/pvalue.1.html"><b>Pvalue</b></a>
2042 converts a picture to and from simpler formats.
2043 </ul>
2044
2045 <p>
2046 Pictures may be displayed directly under X11 using the program
2047 <a HREF="../man_html/ximage.1.html">ximage</a>,
2048 or converted a standard image format using one of the following
2049 <b>translators</b>:
2050 <ul>
2051 <li> <a HREF="../man_html/ra_bmp.1.html"><b>Ra_bmp</b></a>
2052 converts to and from BMP image format.
2053 <li> <a HREF="../man_html/ra_ppm.1.html"><b>Ra_ppm</b></a>
2054 converts to and from Poskanzer Portable Pixmap formats.
2055 <li> <a HREF="../man_html/ra_ps.1.html"><b>Ra_ps</b></a>
2056 converts to PostScript color and greyscale formats.
2057 <li> <a HREF="../man_html/ra_rgbe.1.html"><b>Ra_rgbe</b></a>
2058 converts to and from Radiance uncompressed picture format.
2059 <li> <a HREF="../man_html/ra_t16.1.html"><b>Ra_t16</b></a>
2060 converts to and from Targa 16 and 24-bit image formats.
2061 <li> <a HREF="../man_html/ra_t8.1.html"><b>Ra_t8</b></a>
2062 converts to and from Targa 8-bit image format.
2063 <li> <a HREF="../man_html/ra_tiff.1.html"><b>Ra_tiff</b></a>
2064 converts to and from TIFF.
2065 <li> <a HREF="../man_html/ra_xyze.1.html"><b>Ra_xyze</b></a>
2066 converts to and from Radiance CIE picture format.
2067 </ul>
2068
2069 <p>
2070
2071 <hr>
2072
2073 <h2>
2074 <a NAME="License">4. License</a>
2075 </h2>
2076
2077 <pre>
2078 The Radiance Software License, Version 1.0
2079
2080 Copyright (c) 1990 - 2021 The Regents of the University of California,
2081 through Lawrence Berkeley National Laboratory. All rights reserved.
2082
2083 Redistribution and use in source and binary forms, with or without
2084 modification, are permitted provided that the following conditions
2085 are met:
2086
2087 1. Redistributions of source code must retain the above copyright
2088 notice, this list of conditions and the following disclaimer.
2089
2090 2. Redistributions in binary form must reproduce the above copyright
2091 notice, this list of conditions and the following disclaimer in
2092 the documentation and/or other materials provided with the
2093 distribution.
2094
2095 3. The end-user documentation included with the redistribution,
2096 if any, must include the following acknowledgment:
2097 &quot;This product includes Radiance software
2098 (<a HREF="http://radsite.lbl.gov/">http://radsite.lbl.gov/</a>)
2099 developed by the Lawrence Berkeley National Laboratory
2100 (<a HREF="http://www.lbl.gov/">http://www.lbl.gov/</a>).&quot;
2101 Alternately, this acknowledgment may appear in the software itself,
2102 if and wherever such third-party acknowledgments normally appear.
2103
2104 4. The names &quot;Radiance,&quot; &quot;Lawrence Berkeley National Laboratory&quot;
2105 and &quot;The Regents of the University of California&quot; must
2106 not be used to endorse or promote products derived from this
2107 software without prior written permission. For written
2108 permission, please contact [email protected].
2109
2110 5. Products derived from this software may not be called &quot;Radiance&quot;,
2111 nor may &quot;Radiance&quot; appear in their name, without prior written
2112 permission of Lawrence Berkeley National Laboratory.
2113
2114 THIS SOFTWARE IS PROVIDED ``AS IS&quot; AND ANY EXPRESSED OR IMPLIED
2115 WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
2116 OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
2117 DISCLAIMED. IN NO EVENT SHALL Lawrence Berkeley National Laboratory OR
2118 ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
2119 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
2120 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
2121 USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
2122 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
2123 OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
2124 OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2125 SUCH DAMAGE.
2126 </pre>
2127
2128 <hr>
2129
2130 <h2>
2131 <a NAME="Ack">5. Acknowledgements</a>
2132 </h2>
2133
2134 This work was supported by the Assistant Secretary of Conservation and Renewable Energy,
2135 Office of Building Energy Research and Development,
2136 Buildings Equipment Division of the U.S. Department of Energy under Contract No. DE-AC03-76SF00098.
2137
2138 <p>
2139 Additional work was sponsored by the Swiss federal government
2140 under the Swiss LUMEN Project and was carried out in the
2141 Laboratoire d'Energie Solaire (LESO Group) at the
2142 Ecole Polytechnique Federale de Lausanne (EPFL University) in Lausanne, Switzerland.
2143
2144 <p>
2145
2146 <hr>
2147
2148 <h2>
2149 <a NAME="Ref">6.</a> References
2150 </h2>
2151 <p>
2152 <ul>
2153 <li>Ward, Gregory J., Bruno Bueno, David Geisler-Moroder,
2154 Lars O. Grobe, Jacob C. Jonsson, Eleanor
2155 S. Lee, Taoning Wang, Helen Rose Wilson,
2156 &quot;<a href="https://doi.org/10.1016/j.enbuild.2022.111890">Daylight
2157 Simulation Workflows Incorporating Measured Bidirectional
2158 Scattering Distribution Functions</a>&quot;
2159 <em>Energy &amp; Buildings</em>, Vol. 259, No. 11890, 2022.
2160 <li>Wang, Taoning, Gregory Ward, Eleanor Lee,
2161 &quot;<a href="https://authors.elsevier.com/a/1XQ0a1M7zGwT7v">Efficient
2162 modeling of optically-complex, non-coplanar exterior shading:
2163 Validation of matrix algebraic methods</a>&quot;
2164 <em>Energy & Buildings</em>, vol. 174, pp. 464-83, Sept. 2018.
2165 <li>Lee, Eleanor S., David Geisler-Moroder, Gregory Ward,
2166 &quot;<a href="https://eta.lbl.gov/sites/default/files/publications/solar_energy.pdf">Modeling
2167 the direct sun component in buildings using matrix
2168 algebraic approaches: Methods and
2169 validation</a>,&quot; <em>Solar Energy</em>,
2170 vol. 160, 15 January 2018, pp 380-395.
2171 <li>Narain, Rahul, Rachel A. Albert, Abdullah Bulbul,
2172 Gregory J. Ward, Marty Banks, James F. O'Brien,
2173 &quot;<a href="http://graphics.berkeley.edu/papers/Narain-OPI-2015-08/index.html">Optimal
2174 Presentation of Imagery with Focus
2175 Cues on Multi-Plane Displays</a>,&quot;
2176 <em>SIGGRAPH 2015</em>.
2177 <li>Ward, Greg, Murat Kurt, and Nicolas Bonneel,
2178 &quot;<a href="papers/WMAM14_Tensor_Tree_Representation.pdf">Reducing
2179 Anisotropic BSDF Measurement to Common Practice</a>,&quot;
2180 <em>Workshop on Material Appearance Modeling</em>, 2014.
2181 <li>Banks, Martin, Abdullah Bulbul, Rachel Albert, Rahul Narain,
2182 James F. O'Brien, Gregory Ward,
2183 &quot;<a href="http://graphics.berkeley.edu/papers/Banks-TPO-2014-05/index.html">The
2184 Perception of Surface Material from Disparity and Focus Cues</a>,&quot;
2185 <em>VSS 2014</em>.
2186 <li>McNeil, A., C.J. Jonsson, D. Appelfeld, G. Ward, E.S. Lee,
2187 &quot;<a href="http://gaia.lbl.gov/btech/papers/4414.pdf">
2188 A validation of a ray-tracing tool used to generate
2189 bi-directional scattering distribution functions for
2190 complex fenestration systems</a>,&quot;
2191 <em>Solar Energy</em>, 98, 404-14,
2192 November 2013.
2193 <li>Ward, G., R. Mistrick, E.S. Lee, A. McNeil, J. Jonsson,
2194 &quot;<a href="http://gaia.lbl.gov/btech/papers/4414.pdf">Simulating
2195 the Daylight Performance of Complex Fenestration Systems
2196 Using Bidirectional Scattering Distribution Functions within
2197 Radiance</a>,&quot;
2198 <em>Leukos</em>, 7(4)
2199 April 2011.
2200 <li>Cater, Kirsten, Alan Chalmers, Greg Ward,
2201 &quot;<a href="http://www.anyhere.com/gward/papers/egsr2003.pdf">Detail to Attention:
2202 Exploiting Visual Tasks for Selective Rendering</a>,&quot;
2203 <em>Eurographics Symposium
2204 on Rendering 2003</em>, June 2003.
2205 <li>Ward, Greg, Elena Eydelberg-Vileshin,
2206 &quot;<a HREF="http://www.anyhere.com/gward/papers/egwr02/index.html">Picture Perfect RGB
2207 Rendering Using Spectral Prefiltering and Sharp Color Primaries</a>,&quot;
2208 Thirteenth Eurographics Workshop on Rendering (2002),
2209 P. Debevec and S. Gibson (Editors), June 2002.
2210 <li>Ward, Gregory,
2211 &quot;<a HREF="http://www.anyhere.com/gward/papers/cic01.pdf">High Dynamic Range Imaging</a>,&quot;
2212 Proceedings of the Ninth Color Imaging Conference, November 2001.
2213 <li>Ward, Gregory and Maryann Simmons,
2214 &quot;<a HREF="http://www.anyhere.com/gward/papers/tog99.pdf">
2215 The Holodeck Ray Cache: An Interactive Rendering System for Global Illumination in Nondiffuse
2216 Environments</a>,&quot; ACM Transactions on Graphics, 18(4):361-98, October 1999.
2217 <li>Larson, G.W., &quot;<a HREF="http://www.anyhere.com/gward/papers/ewp98.pdf">The Holodeck: A Parallel
2218 Ray-caching Rendering System</a>,&quot; Proceedings of the Second
2219 Eurographics Workshop on Parallel Graphics and Visualisation,
2220 September 1998.
2221 <li>Larson, G.W. and R.A. Shakespeare,
2222 <a HREF="http://radsite.lbl.gov/radiance/book/index.html"><em>Rendering with Radiance:
2223 the Art and Science of Lighting Visualization</em></a>,
2224 Morgan Kaufmann Publishers, 1998.
2225 <li>Larson, G.W., H. Rushmeier, C. Piatko,
2226 &quot;<a HREF="http://radsite.lbl.gov/radiance/papers/lbnl39882/tonemap.pdf">A Visibility
2227 Matching Tone Reproduction Operator for
2228 High Dynamic Range Scenes</a>,&quot; LBNL Technical Report 39882,
2229 January 1997.
2230 <li>Ward, G., &quot;<a HREF="http://radsite.lbl.gov/radiance/papers/erw95.1/paper.html">Making
2231 Global Illumination User-Friendly</a>,&quot; Sixth
2232 Eurographics Workshop on Rendering, Springer-Verlag,
2233 Dublin, Ireland, June 1995.</li>
2234 <li>Rushmeier, H., G. Ward, C. Piatko, P. Sanders, B. Rust,
2235 &quot;<a HREF="http://radsite.lbl.gov/mgf/compare.html">
2236 Comparing Real and Synthetic Images: Some Ideas about
2237 Metrics</a>,&quot; Sixth Eurographics Workshop on Rendering,
2238 Springer-Verlag, Dublin, Ireland, June 1995.</li>
2239 <li>Ward, G., &quot;<a HREF="http://radsite.lbl.gov/radiance/papers/sg94.1/paper.html">The RADIANCE
2240 Lighting Simulation and Rendering System</a>,&quot; <em>Computer
2241 Graphics</em>, July 1994.</li>
2242 <li>Rushmeier, H., G. Ward, &quot;<a HREF="http://radsite.lbl.gov/radiance/papers/sg94.2/energy.html">Energy
2243 Preserving Non-Linear Filters</a>,&quot; <em>Computer
2244 Graphics</em>, July 1994.</li>
2245 <li>Ward, G., &quot;A Contrast-Based Scalefactor for Luminance
2246 Display,&quot; <em>Graphics Gems IV</em>, Edited by Paul Heckbert,
2247 Academic Press 1994.</li>
2248 <li>Ward, G., &quot;<a HREF="http://radsite.lbl.gov/radiance/papers/sg92/paper.html">Measuring and
2249 Modeling Anisotropic Reflection</a>,&quot; <em>Computer
2250 Graphics</em>, Vol. 26, No. 2, July 1992. </li>
2251 <li>Ward, G., P. Heckbert, &quot;<a HREF="http://radsite.lbl.gov/radiance/papers/erw92/paper.html">Irradiance
2252 Gradients</a>,&quot; Third Annual Eurographics Workshop on
2253 Rendering, Springer-Verlag, May 1992. </li>
2254 <li>Ward, G., &quot;<a HREF="http://radsite.lbl.gov/radiance/papers/erw91/erw91.html">Adaptive Shadow
2255 Testing for Ray Tracing</a>&quot; Photorealistic Rendering in
2256 Computer Graphics, proceedings of 1991 Eurographics
2257 Rendering Workshop, edited by P. Brunet and F.W. Jansen,
2258 Springer-Verlag. </li>
2259 <li>Ward, G., &quot;Visualization,&quot; <em>Lighting Design and
2260 Application</em>, Vol. 20, No. 6, June 1990. </li>
2261 <li>Ward, G., F. Rubinstein, R. Clear, &quot;<a HREF="http://radsite.lbl.gov/radiance/papers/sg88/paper.html">A Ray Tracing Solution for
2262 Diffuse Interreflection</a>,&quot; <em>Computer Graphics</em>,
2263 Vol. 22, No. 4, August 1988. </li>
2264 <li>Ward, G., F. Rubinstein, &quot;A New Technique for Computer
2265 Simulation of Illuminated Spaces,&quot; <em>Journal of the
2266 Illuminating Engineering Society</em>, Vol. 17, No. 1,
2267 Winter 1988. </li>
2268 </ul>
2269 <p>
2270 See the <a HREF="index.html">RADIANCE Reference Materials</a> page
2271 for additional information.
2272 <hr>
2273
2274 <a NAME="Index"><h2>7. Types Index</h2></a>
2275
2276 <pre>
2277 <h4>
2278 SURFACES MATERIALS TEXTURES PATTERNS MIXTURES</h4>
2279 <a HREF="#Source">Source</a> <a HREF="#Light">Light</a> <a HREF="#Texfunc">Texfunc</a> <a HREF="#Colorfunc">Colorfunc</a> <a HREF="#Mixfunc">Mixfunc</a>
2280 <a HREF="#Sphere">Sphere</a> <a HREF="#Illum">Illum</a> <a HREF="#Texdata">Texdata</a> <a HREF="#Brightfunc">Brightfunc</a> <a HREF="#Mixdata">Mixdata</a>
2281 <a HREF="#Bubble">Bubble</a> <a HREF="#Glow">Glow</a> <a HREF="#Colordata">Colordata</a> <a HREF="#Mixtext">Mixtext</a>
2282 <a HREF="#Polygon">Polygon</a> <a HREF="#Spotlight">Spotlight</a> <a HREF="#Brightdata">Brightdata</a>
2283 <a HREF="#Cone">Cone</a> <a HREF="#Mirror">Mirror</a> <a HREF="#Colorpict">Colorpict</a>
2284 <a HREF="#Cup">Cup</a> <a HREF="#Prism1">Prism1</a> <a HREF="#Colortext">Colortext</a>
2285 <a HREF="#Cylinder">Cylinder</a> <a HREF="#Prism2">Prism2</a> <a HREF="#Brighttext">Brighttext</a>
2286 <a HREF="#Tube">Tube</a> <a HREF="#Plastic">Plastic</a>
2287 <a HREF="#Ring">Ring</a> <a HREF="#Metal">Metal</a>
2288 <a HREF="#Instance">Instance</a> <a HREF="#Trans">Trans</a>
2289 <a HREF="#Mesh">Mesh</a> <a HREF="#Plastic2">Plastic2</a>
2290 <a HREF="#Metal2">Metal2</a>
2291 <a HREF="#Trans2">Trans2</a>
2292 <a HREF="#Mist">Mist</a>
2293 <a HREF="#Dielectric">Dielectric</a>
2294 <a HREF="#Interface">Interface</a>
2295 <a HREF="#Glass">Glass</a>
2296 <a HREF="#Plasfunc">Plasfunc</a>
2297 <a HREF="#Metfunc">Metfunc</a>
2298 <a HREF="#Transfunc">Transfunc</a>
2299 <a HREF="#BRTDfunc">BRTDfunc</a>
2300 <a HREF="#Plasdata">Plasdata</a>
2301 <a HREF="#Metdata">Metdata</a>
2302 <a HREF="#Transdata">Transdata</a>
2303 <a HREF="#BSDF">BSDF</a>
2304 <a HREF="#Antimatter">Antimatter</a>
2305
2306 </pre>
2307
2308 <p>
2309
2310
2311 <hr>
2312 <center>Last Update: October 22, 1997</center>
2313 </body>
2314 </html>
2315