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 (4 months, 3 weeks 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

# User Rev Content
1 greg 1.1 <html>
2 greg 1.39 <!-- RCSid $Id: ray.html,v 1.38 2023/12/13 23:26:16 greg Exp $ -->
3 greg 1.1 <head>
4     <title>
5 greg 1.33 The RADIANCE 6.0 Synthetic Imaging System
6 greg 1.1 </title>
7     </head>
8     <body>
9    
10     <p>
11    
12     <h1>
13 greg 1.33 The RADIANCE 6.0 Synthetic Imaging System
14 greg 1.1 </h1>
15    
16     <p>
17    
18 greg 1.4 Building Technologies Program<br>
19 greg 1.1 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 greg 1.30 <i>Rvu</i> is a variation of rpict that computes and displays images
87 greg 1.1 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 greg 1.6 Mirror is used for planar surfaces that produce virtual source reflections.
569 greg 1.1 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 greg 1.6 The prism1 material is for general light redirection from prismatic glazings, generating virtual light sources.
592 greg 1.1 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 greg 1.6 and the definitions must have the correct bidirectional properties to work properly with virtual light sources.
597 greg 1.1 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 greg 1.8 forward direction, as fit by the Henyey-Greenstein function:
664 greg 1.1
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 greg 1.23 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 greg 1.1
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 greg 1.23 <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 greg 1.31 Unlike other material types, total reflectance is the sum of
826     diffuse and specular colors, and should be adjusted accordingly.
827 greg 1.23 <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 greg 1.39 <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 greg 1.1 <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 greg 1.10 <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 greg 1.11 surfaces and the &quot;up&quot; orientation for the material.
1148 greg 1.10
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 greg 1.11 The first string argument is a &quot;thickness&quot; parameter that may be used
1161 greg 1.10 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 greg 1.12 The sign of the thickness is important, as it indicates
1177 greg 1.14 whether the proxied geometry is behind the BSDF
1178 greg 1.12 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 greg 1.10 <p>
1213    
1214     <dt>
1215 greg 1.26 <a NAME="aBSDF">
1216     <b>aBSDF</b>
1217 greg 1.25 </a>
1218    
1219     <dd>
1220 greg 1.26 The aBSDF material is identical to the BSDF type with two
1221 greg 1.25 important differences. First, proxy geometry is not
1222     supported, so there is no thickness parameter. Second, an
1223 greg 1.26 aBSDF is assumed to have some specular through component
1224     (the &rsquo;a&rsquo; stands for &quot;aperture&quot;),
1225 greg 1.25 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 greg 1.26 mod aBSDF id
1232 greg 1.25 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 greg 1.26 than to use aBSDF.
1244 greg 1.25 <p>
1245    
1246     <dt>
1247 greg 1.1 <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 greg 1.33 <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 greg 1.35 The first two real arguments indicate the extrema of the
1542 greg 1.33 spectral range in nanometers.
1543 greg 1.36 Subsequent real values correspond to multipliers at each wavelength.
1544 greg 1.34 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 greg 1.33 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 greg 1.37 2+ sfunc funcfile transform
1600 greg 1.33 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 greg 1.36 set in the evaluation context.
1608 greg 1.33 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 greg 1.38 <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 greg 1.1 </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 greg 1.22 Blended materials should not be light source types or virtual source types.
1678 greg 1.1 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 greg 1.9 of a straight variable name in a scene file.
1868     Functions (requiring parameters) must be given
1869 greg 1.1 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 greg 1.30 <a NAME="rvu" HREF="../man_html/rvu.1.html"><b>Rvu</b></a> is ray-tracing program for viewing a scene interactively.
2016 greg 1.3 When the user specifies a new perspective, rvu quickly displays a rough image on the terminal,
2017 greg 1.1 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 greg 1.30 <li> <a HREF="../man_html/ra_bmp.1.html"><b>Ra_bmp</b></a>
2052 greg 1.19 converts to and from BMP image format.
2053 greg 1.1 <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 greg 1.30 Copyright (c) 1990 - 2021 The Regents of the University of California,
2081 greg 1.1 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 greg 1.15 THIS SOFTWARE IS PROVIDED ``AS IS&quot; AND ANY EXPRESSED OR IMPLIED
2115 greg 1.1 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 greg 1.32 <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 greg 1.27 <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 greg 1.19 <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 greg 1.15 <li>Ward, G., R. Mistrick, E.S. Lee, A. McNeil, J. Jonsson,
2194 greg 1.17 &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 greg 1.18 <em>Leukos</em>, 7(4)
2199 greg 1.15 April 2011.
2200 greg 1.7 <li>Cater, Kirsten, Alan Chalmers, Greg Ward,
2201 greg 1.9 &quot;<a href="http://www.anyhere.com/gward/papers/egsr2003.pdf">Detail to Attention:
2202 greg 1.7 Exploiting Visual Tasks for Selective Rendering</a>,&quot;
2203     <em>Eurographics Symposium
2204     on Rendering 2003</em>, June 2003.
2205 greg 1.1 <li>Ward, Greg, Elena Eydelberg-Vileshin,
2206 greg 1.15 &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 greg 1.1 Thirteenth Eurographics Workshop on Rendering (2002),
2209     P. Debevec and S. Gibson (Editors), June 2002.
2210     <li>Ward, Gregory,
2211 greg 1.15 &quot;<a HREF="http://www.anyhere.com/gward/papers/cic01.pdf">High Dynamic Range Imaging</a>,&quot;
2212 greg 1.1 Proceedings of the Ninth Color Imaging Conference, November 2001.
2213     <li>Ward, Gregory and Maryann Simmons,
2214 greg 1.15 &quot;<a HREF="http://www.anyhere.com/gward/papers/tog99.pdf">
2215 greg 1.1 The Holodeck Ray Cache: An Interactive Rendering System for Global Illumination in Nondiffuse
2216 greg 1.15 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 greg 1.1 Eurographics Workshop on Parallel Graphics and Visualisation,
2220     September 1998.
2221     <li>Larson, G.W. and R.A. Shakespeare,
2222 greg 1.2 <a HREF="http://radsite.lbl.gov/radiance/book/index.html"><em>Rendering with Radiance:
2223 greg 1.1 the Art and Science of Lighting Visualization</em></a>,
2224     Morgan Kaufmann Publishers, 1998.
2225     <li>Larson, G.W., H. Rushmeier, C. Piatko,
2226 greg 1.15 &quot;<a HREF="http://radsite.lbl.gov/radiance/papers/lbnl39882/tonemap.pdf">A Visibility
2227 greg 1.1 Matching Tone Reproduction Operator for
2228 greg 1.15 High Dynamic Range Scenes</a>,&quot; LBNL Technical Report 39882,
2229 greg 1.1 January 1997.
2230 greg 1.15 <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 greg 1.1 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 greg 1.15 &quot;<a HREF="http://radsite.lbl.gov/mgf/compare.html">
2236 greg 1.1 Comparing Real and Synthetic Images: Some Ideas about
2237 greg 1.15 Metrics</a>,&quot; Sixth Eurographics Workshop on Rendering,
2238 greg 1.1 Springer-Verlag, Dublin, Ireland, June 1995.</li>
2239 greg 1.15 <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 greg 1.1 Graphics</em>, July 1994.</li>
2242 greg 1.15 <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 greg 1.1 Graphics</em>, July 1994.</li>
2245 greg 1.15 <li>Ward, G., &quot;A Contrast-Based Scalefactor for Luminance
2246     Display,&quot; <em>Graphics Gems IV</em>, Edited by Paul Heckbert,
2247 greg 1.1 Academic Press 1994.</li>
2248 greg 1.15 <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 greg 1.1 Graphics</em>, Vol. 26, No. 2, July 1992. </li>
2251 greg 1.15 <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 greg 1.1 Rendering, Springer-Verlag, May 1992. </li>
2254 greg 1.15 <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 greg 1.1 Computer Graphics, proceedings of 1991 Eurographics
2257     Rendering Workshop, edited by P. Brunet and F.W. Jansen,
2258     Springer-Verlag. </li>
2259 greg 1.15 <li>Ward, G., &quot;Visualization,&quot; <em>Lighting Design and
2260 greg 1.1 Application</em>, Vol. 20, No. 6, June 1990. </li>
2261 greg 1.15 <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 greg 1.1 Vol. 22, No. 4, August 1988. </li>
2264 greg 1.15 <li>Ward, G., F. Rubinstein, &quot;A New Technique for Computer
2265     Simulation of Illuminated Spaces,&quot; <em>Journal of the
2266 greg 1.1 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 greg 1.10 <a HREF="#BSDF">BSDF</a>
2304 greg 1.1 <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