ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/doc/ray.html
Revision: 1.42
Committed: Fri May 30 16:35:52 2025 UTC (6 days, 19 hours ago) by greg
Content type: text/html
Branch: MAIN
CVS Tags: HEAD
Changes since 1.41: +19 -17 lines
Log Message:
docs: Improved wording on new mirror material behavior

File Contents

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