ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/doc/ray.html
Revision: 1.14
Committed: Wed Jun 22 00:12:43 2011 UTC (12 years, 10 months ago) by greg
Content type: text/html
Branch: MAIN
Changes since 1.13: +1 -1 lines
Log Message:
Removed emphasis tag (duh-oh)

File Contents

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