ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/doc/ray.1
Revision: 1.1
Committed: Tue Mar 11 19:20:20 2003 UTC (21 years ago) by greg
Branch: MAIN
Log Message:
Added documentation to repository

File Contents

# User Rev Content
1 greg 1.1 .\" RCSid "$Id"
2     .\" Print using the -ms macro package
3     .DA 1/20/99
4     .LP
5     .tl """Copyright \(co 1996 Regents, University of California
6     .sp 2
7     .TL
8     The
9     .so ../src/rt/VERSION
10     .br
11     Synthetic Imaging System
12     .AU
13     Greg Ward
14     .br
15     Lawrence Berkeley Laboratory
16     .br
17     1 Cyclotron Rd.
18     .br
19     Berkeley, CA 94720
20     .br
21     (510) 486-4757
22     .NH 1
23     Introduction
24     .PP
25     RADIANCE was developed as a research tool
26     for predicting the distribution of visible radiation in
27     illuminated spaces.
28     It takes as input a three-dimensional geometric model of
29     the physical environment, and produces a map of
30     spectral radiance values in a color image.
31     The technique of ray-tracing follows light backwards
32     from the image plane to the source(s).
33     Because it can produce realistic images from a simple description,
34     RADIANCE has a wide range of applications in graphic arts,
35     lighting design, computer-aided engineering and architecture.
36     .KF
37     .sp 25
38     .ce
39     .B "Figure 1."
40     .sp
41     .KE
42     .PP
43     The diagram in Figure 1 shows the flow between programs (boxes) and
44     data (ovals).
45     The central program is
46     .I rpict,
47     which produces a picture from a scene description.
48     .I Rview
49     is a variation of
50     .I rpict
51     that computes and displays images interactively.
52     .PP
53     A scene description file lists the surfaces and materials
54     that make up a specific environment.
55     The current surface types are spheres, polygons, cones,
56     and cylinders.
57     They can be made from materials such as plastic, metal,
58     and glass.
59     Light sources can be distant disks as well as local spheres, discs and
60     polygons.
61     .PP
62     From a three-dimensional scene description and a specified view,
63     .I rpict
64     produces a two-dimensional image.
65     A picture file is a compressed binary representation of the
66     pixels in the image.
67     This picture can be scaled in size and
68     brightness, anti-aliased, and sent to a graphics output device.
69     .PP
70     A header in each picture file lists the program(s) and
71     parameters that produced it.
72     This is useful for identifying a picture
73     without having to display it.
74     The information can be read by the program
75     .I getinfo.
76     .NH 1
77     Scene Description
78     .PP
79     A scene description file represents a
80     three-dimensional physical environment
81     in Cartesian (rectilinear) world coordinates.
82     It is stored as ASCII text, with the following basic format:
83     .DS
84     # comment
85    
86     modifier type identifier
87     n S1 S2 S3 .. Sn
88     0
89     m R1 R2 R3 .. Rm
90    
91     modifier alias identifier reference
92    
93     ! command
94    
95     ...
96     .DE
97     .PP
98     A comment line begins with a pound sign, `#'.
99     .PP
100     The scene description
101     .I primitives
102     all have the same general format, and can
103     be either surfaces or modifiers.
104     A primitive has a modifier, a type, and an identifier.
105     A modifier is either the identifier of a
106     .I "previously defined"
107     primitive, or "void"\(dg.
108     .FS
109     \(dgThe most recent definition of a modifier is the one used,
110     and later definitions do not cause relinking of loaded
111     primitives.
112     Thus, the same identifier may be used repeatedly, and each new
113     definition will apply to the primitives following it.
114     .FE
115     An identifier can be any string (i.e. sequence of non-blank
116     characters).
117     The
118     .I arguments
119     associated with a primitive can be strings or real numbers.
120     The first integer following the identifier is the number
121     of string arguments, and it is followed by the arguments themselves
122     (separated by white space).
123     The next integer is the number of integer arguments, and is followed
124     by the integer arguments.
125     (There are currently no primitives that use them, however.)
126     The next integer is the real argument count, and it is followed
127     by the real arguments.
128     .PP
129     An alias gets its type and arguments from a previously defined primitive.
130     This is useful when the same material is used with a different
131     modifier, or as a convenient naming mechanism.
132     Surfaces cannot be aliased.
133     .PP
134     A line beginning with an exclamation point, `!',
135     is interpreted as a command.
136     It is executed by the shell, and its output is read as input to
137     the program.
138     The command must not try to read from its standard input, or
139     confusion will result.
140     A command may be continued over multiple lines using a backslash, `\\',
141     to escape the newline.
142     .PP
143     Blank space is generally ignored, except as a separator.
144     The exception is the newline character after a command or comment.
145     Commands, comments and primitives may appear in any combination, so long
146     as they are not intermingled.
147     .NH 2
148     Primitive Types
149     .PP
150     Primitives can be surfaces, materials, textures or patterns.
151     Modifiers can be materials, textures or patterns.
152     Simple surfaces must have one material in their modifier list.
153     .NH 3
154     Surfaces
155     .PP
156     A scene description will consist mostly of surfaces.
157     The basic types are given below.
158     .LP
159     .UL Source
160     .PP
161     A source is not really a surface, but a solid angle.
162     It is used for specifying light sources that are very distant.
163     The direction to the center of the source and the number of degrees
164     subtended by its disk are given as follows:
165     .DS
166     mod source id
167     0
168     0
169     4 xdir ydir zdir angle
170     .DE
171     .LP
172     .UL Sphere
173     .PP
174     A sphere is given by its center and radius:
175     .DS
176     mod sphere id
177     0
178     0
179     4 xcent ycent zcent radius
180     .DE
181     .LP
182     .UL Bubble
183     .PP
184     A bubble is simply a sphere whose surface normal points inward.
185     .LP
186     .UL Polygon
187     .PP
188     A polygon is given by a list of three-dimensional vertices,
189     which are ordered counter-clockwise as viewed from
190     the front side (into the surface normal).
191     The last vertex is automatically connected to the first.
192     Holes are represented in polygons as interior vertices connected to
193     the outer perimeter by coincident edges (seams).
194     .DS
195     mod polygon id
196     0
197     0
198     3n
199     x1 y1 z1
200     x2 y2 z2
201     ...
202     xn yn zn
203     .DE
204     .LP
205     .UL Cone
206     .PP
207     A cone is a megaphone-shaped object.
208     It is truncated by two planes perpendicular to its axis,
209     and one of its ends may come to a point.
210     It is given as two axis endpoints, and the starting
211     and ending radii:
212     .DS
213     mod cone id
214     0
215     0
216     8
217     x0 y0 z0
218     x1 y1 z1
219     r0 r1
220     .DE
221     .LP
222     .UL Cup
223     .PP
224     A cup is an inverted cone (i.e. has an inward surface normal).
225     .LP
226     .UL Cylinder
227     .PP
228     A cylinder is like a cone, but its starting and ending radii are
229     equal.
230     .DS
231     mod cylinder id
232     0
233     0
234     7
235     x0 y0 z0
236     x1 y1 z1
237     rad
238     .DE
239     .LP
240     .UL Tube
241     .PP
242     A tube is an inverted cylinder.
243     .LP
244     .UL Ring
245     .PP
246     A ring is a circular disk given by its center, surface
247     normal, and inner and outer radii:
248     .DS
249     mod ring id
250     0
251     0
252     8
253     xcent ycent zcent
254     xdir ydir zdir
255     r0 r1
256     .DE
257     .LP
258     .UL Mesh
259     .PP
260     A mesh is a compound surface, made up of many triangles and
261     an octree data structure to accelerate ray intersection.
262     It is typically converted from a Wavefront .OBJ file using the
263     obj2mesh program.
264     .DS
265     mod mesh id
266     1+ meshfile transform
267     0
268     0
269     .DE
270     The transform moves the mesh to the desired location in the scene.
271     Multiple instances using the same meshfile take little extra memory,
272     and the compiled mesh itself takes much less space than individual
273     polygons would.
274     In the case of an unsmoothed mesh, using the mesh primitive reduces
275     memory requirements by a factor of 30 relative to individual triangles.
276     If a mesh has smoothed surfaces, we save a factor of 50 or more,
277     permitting very detailed geometries that would otherwise exhaust the
278     available memory.
279     In addition, the mesh primitive can have associated (u,v) coordinates
280     for pattern and texture mapping.
281     These are made available to function files via the Lu and Lu variables.
282     .LP
283     .UL Instance
284     .PP
285     An instance is a compound surface, given by the contents of an
286     octree file (created by oconv).
287     .DS
288     mod instance id
289     1+ octree transform
290     0
291     0
292     .DE
293     If the modifier is "void", then surfaces will use the modifiers given
294     in the original description.
295     Otherwise, the modifier specified is used in their place.
296     The transform moves the octree to the desired location in the scene.
297     Multiple instances using the same octree take little extra memory,
298     hence very complex descriptions can be rendered using this primitive.
299     .PP
300     There are a number of important limitations to be aware of when using
301     instances.
302     First, the scene description used to generate the octree must stand on
303     its own, without referring to modifiers in the parent description.
304     This is necessary for oconv to create the octree.
305     Second, light sources in the octree will not be incorporated correctly
306     in the calculation, and they are not recommended.
307     Finally, there is no advantage (other than convenience) to
308     using a single instance of an octree, or an octree containing only a
309     few surfaces.
310     An xform command on the subordinate description is prefered in such cases.
311     .NH 3
312     Materials
313     .PP
314     A material defines the way light interacts with a surface.
315     The basic types are given below.
316     .LP
317     .UL Light
318     .PP
319     Light is the basic material for self-luminous surfaces (i.e. light
320     sources).
321     In addition to the source surface type, spheres, discs (rings with zero
322     inner radius), cylinders (provided they are long enough), and
323     polygons can act as light sources.
324     Polygons work best when they are rectangular.
325     Cones cannot be used at this time.
326     A pattern may be used to specify a light output distribution.
327     Light is defined simply as a RGB radiance value (watts/steradian/m2):
328     .DS
329     mod light id
330     0
331     0
332     3 red green blue
333     .DE
334     .LP
335     .UL Illum
336     .PP
337     Illum is used for secondary light sources with broad distributions.
338     A secondary light source is treated like any other
339     light source, except when viewed directly.
340     It then acts like it is made of a different material (indicated by
341     the string argument), or becomes invisible (if no string argument is given,
342     or the argument is "void").
343     Secondary sources are useful when modeling windows or
344     brightly illuminated surfaces.
345     .DS
346     mod illum id
347     1 material
348     0
349     3 red green blue
350     .DE
351     .LP
352     .UL Glow
353     .PP
354     Glow is used for surfaces that are self-luminous, but limited
355     in their effect.
356     In addition to the radiance value, a maximum radius for
357     shadow testing is given:
358     .DS
359     mod glow id
360     0
361     0
362     4 red green blue maxrad
363     .DE
364     If maxrad is zero, then the surface will never be tested
365     for shadow, although it may participate in an interreflection calculation.
366     If maxrad is negative, then the surface will never contribute to scene
367     illumination.
368     Glow sources will never illuminate objects on the other side of an
369     illum surface.
370     This provides a convenient way to illuminate local light fixture
371     geometry without overlighting nearby objects.
372     .LP
373     .UL Spotlight
374     .PP
375     Spotlight is used for self-luminous surfaces having directed output.
376     As well as radiance, the full cone angle (in degrees)
377     and orientation (output direction) vector are given.
378     The length of the orientation vector is the distance
379     of the effective focus behind the source center (i.e. the focal length).
380     .DS
381     mod spotlight id
382     0
383     0
384     7 red green blue angle xdir ydir zdir
385     .DE
386     .LP
387     .UL Mirror
388     .PP
389     Mirror is used for planar surfaces that produce secondary
390     source reflections.
391     This material should be used sparingly, as it may cause the light
392     source calculation to blow up if it is applied to many small surfaces.
393     This material is only supported for flat surfaces such as polygons
394     and rings.
395     The arguments are simply the RGB reflectance values, which should be
396     between 0 and 1.
397     An optional string argument may be used like the illum type to specify a
398     different material to be used for shading non-source rays.
399     If this alternate material is given as "void", then the mirror surface
400     will be invisible.
401     This is only appropriate if the surface hides other (more detailed)
402     geometry with the same overall reflectance.
403     .DS
404     mod mirror id
405     1 material
406     0
407     3 red green blue
408     .DE
409     .LP
410     .UL Prism1
411     .PP
412     The prism1 material is for general light redirection from prismatic
413     glazings, generating secondary light sources.
414     It can only be used to modify a planar surface (i.e. a polygon or disk)
415     and should not result in either light concentration or scattering.
416     The new direction of the ray can be on either side of the material,
417     and the definitions must have the correct bidirectional properties
418     to work properly with secondary light sources.
419     The arguments give the coefficient for the redirected light
420     and its direction.
421     .DS
422     mod prism1 id
423     5+ coef dx dy dz funcfile transform
424     0
425     n A1 A2 .. An
426     .DE
427     The new direction variables
428     .I "dx, dy"
429     and
430     .I dz
431     need not produce a normalized vector.
432     For convenience, the variables
433     .I "DxA, DyA"
434     and
435     .I DzA
436     are defined as the normalized direction to the target light source.
437     See section 2.2.1 on function files for further information.
438     .LP
439     .UL Prism2
440     .PP
441     The material prism2 is identical to prism1 except that
442     it provides for two ray redirections rather than one.
443     .DS
444     mod prism2 id
445     9+ coef1 dx1 dy1 dz1 coef2 dx2 dy2 dz2 funcfile transform
446     0
447     n A1 A2 .. An
448     .DE
449     .LP
450     .UL Mist
451     .PP
452     Mist is a virtual material used to delineate a volume
453     of participating atmosphere.
454     A list of important light sources may be given, along with an
455     extinction coefficient, scattering albedo and scattering eccentricity
456     parameter.
457     The light sources named by the string argument list
458     will be tested for scattering within the volume.
459     Sources are identified by name, and virtual light sources may be indicated
460     by giving the relaying object followed by '>' followed by the source, i.e:
461     .DS
462     3 source1 mirror1>source10 mirror2>mirror1>source3
463     .DE
464     Normally, only one source is given per mist material, and there is an
465     upper limit of 32 to the total number of active scattering sources.
466     The extinction coefficient, if given, is added to the global
467     coefficient set on the command line.
468     Extinction is in units of 1/distance (distance based on the world coordinates),
469     and indicates the proportional loss of radiance over one unit distance.
470     The scattering albedo, if present, will override the global setting within
471     the volume.
472     An albedo of 0\00\00 means a perfectly absorbing medium, and an albedo of
473     1\01\01\0 means
474     a perfectly scattering medium (no absorption).
475     The scattering eccentricity parameter will likewise override the global
476     setting if it is present.
477     Scattering eccentricity indicates how much scattered light favors the
478     forward direction, as fit by the Heyney-Greenstein function:
479     .DS
480     P(theta) = (1 - g*g) / (1 + g*g - 2*g*cos(theta))^1.5
481     .DE
482     A perfectly isotropic scattering medium has a g parameter of 0, and
483     a highly directional material has a g parameter close to 1.
484     Fits to the g parameter may be found along with typical extinction
485     coefficients and scattering albedos for various atmospheres and
486     cloud types in USGS meteorological tables.
487     (A pattern will be applied to the extinction values.)\0
488     .DS
489     mod mist id
490     N src1 src2 .. srcN
491     0
492     0|3|6|7 [ rext gext bext [ ralb galb balb [ g ] ] ]
493     .DE
494     There are two usual uses of the mist type.
495     One is to surround a beam from a spotlight or laser so that it is
496     visible during rendering.
497     For this application, it is important to use a cone (or cylinder) that
498     is long enough and wide enough to contain the important visible portion.
499     Light source photometry and intervening objects will have the desired
500     effect, and crossing beams will result in additive scattering.
501     For this application, it is best to leave off the real arguments, and
502     use the global rendering parameters to control the atmosphere.
503     The second application is to model clouds or other localized media.
504     Complex boundary geometry may be used to give shape to a uniform medium,
505     so long as the boundary encloses a proper volume.
506     Alternatively, a pattern may be used to set the line integral value
507     through the cloud for a ray entering or exiting a point in a given
508     direction.
509     For this application, it is best if cloud volumes do not overlap each other,
510     and opaque objects contained within them may not be illuminated correctly
511     unless the line integrals consider enclosed geometry.
512     .LP
513     .UL Plastic
514     .PP
515     Plastic is a material with uncolored highlights.
516     It is given by its RGB reflectance, its fraction of specularity,
517     and its roughness value.
518     Roughness is specified as the rms slope of surface facets.
519     A value of 0 corresponds to a perfectly smooth surface, and
520     a value of 1 would be a very rough surface.
521     Specularity fractions greater than 0.1 and
522     roughness values greater than 0.2 are not very
523     realistic.
524     (A pattern modifying plastic will affect the material color.)
525     .DS
526     mod plastic id
527     0
528     0
529     5 red green blue spec rough
530     .DE
531     .LP
532     .UL Metal
533     .PP
534     Metal is similar to plastic, but specular highlights
535     are modified by the material color.
536     Specularity of metals is usually .9 or greater.
537     As for plastic, roughness values above .2 are uncommon.
538     .LP
539     .UL Trans
540     .PP
541     Trans is a translucent material, similar to plastic.
542     The transmissivity is the fraction of penetrating light that
543     travels all the way through the material.
544     The transmitted specular component is the fraction of transmitted
545     light that is not diffusely scattered.
546     Transmitted and diffusely reflected light is modified by the material color.
547     Translucent objects are infinitely thin.
548     .DS
549     mod trans id
550     0
551     0
552     7 red green blue spec rough trans tspec
553     .DE
554     .LP
555     .UL Plastic2
556     .PP
557     Plastic2 is similar to plastic, but with anisotropic
558     roughness.
559     This means that highlights in the surface will appear elliptical rather
560     than round.
561     The orientation of the anisotropy is determined by the unnormalized
562     direction vector
563     .I "ux uy uz".
564     These three expressions (separated by white space) are evaluated in
565     the context of the function file
566     .I funcfile.
567     If no function file is required (i.e. no special variables or
568     functions are required), a period (`.') may be given in its
569     place.
570     (See the discussion of Function Files in the Auxiliary Files section).
571     The
572     .I urough
573     value defines the roughness along the
574     .B u
575     vector given projected onto the surface.
576     The
577     .I vrough
578     value defines the roughness perpendicular to this vector.
579     Note that the highlight will be narrower in the direction of the
580     smaller roughness value.
581     Roughness values of zero are not allowed for efficiency reasons
582     since the behavior would be the same as regular plastic in that
583     case.
584     .DS
585     mod plastic2 id
586     4+ ux uy uz funcfile transform
587     0
588     6 red green blue spec urough vrough
589     .DE
590     .LP
591     .UL Metal2
592     .PP
593     Metal2 is the same as plastic2, except that the highlights are
594     modified by the material color.
595     .LP
596     .UL Trans2
597     .PP
598     Trans2 is the anisotropic version of trans.
599     The string arguments are the same as for plastic2, and the real
600     arguments are the same as for trans but with an additional roughness
601     value.
602     .DS
603     mod trans2 id
604     4+ ux uy uz funcfile transform
605     0
606     8 red green blue spec urough vrough trans tspec
607     .DE
608     .LP
609     .UL Dielectric
610     .PP
611     A dielectric material is transparent, and it refracts light
612     as well as reflecting it.
613     Its behavior is determined by the index of refraction and
614     transmission coefficient in each wavelength band per unit length.
615     Common glass has a index of refraction (n) around 1.5,
616     and a transmission coefficient of roughly 0.92 over an inch.
617     An additional number, the Hartmann constant, describes how
618     the index of refraction changes as a function of wavelength.
619     It is usually zero.
620     (A pattern modifies only the refracted value.)
621     .DS
622     mod dielectric id
623     0
624     0
625     5 rtn gtn btn n hc
626     .DE
627     .LP
628     .UL Interface
629     .PP
630     An interface is a boundary between two dielectrics.
631     The first transmission coefficient and refractive index are for the inside;
632     the second ones are for the outside.
633     Ordinary dielectrics are surrounded by a vacuum (1 1 1 1).
634     .DS
635     mod interface id
636     0
637     0
638     8 rtn1 gtn1 btn1 n1 rtn2 gtn2 btn2 n2
639     .DE
640     .LP
641     .UL Glass
642     .PP
643     Glass is similar to dielectric, but it is optimized for thin glass
644     surfaces (n = 1.52).
645     One transmitted ray and one reflected ray is produced.
646     By using a single surface is in place of two, internal reflections
647     are avoided.
648     The surface orientation is irrelevant, as it is for plastic,
649     metal, and trans.
650     The only specification required is the transmissivity at normal
651     incidence.
652     (Transmissivity is the amount of light not absorbed in one traversal
653     of the material.
654     Transmittance -- the value usually measured -- is the total light
655     transmitted through the pane including multiple reflections.)\0
656     To compute transmissivity (tn) from transmittance (Tn) use:
657     .DS
658     tn = (sqrt(.8402528435+.0072522239*Tn*Tn)-.9166530661)/.0036261119/Tn
659     .DE
660     Standard 88% transmittance glass has a transmissivity of 0.96.
661     (A pattern modifying glass will affect the transmissivity.)
662     If a fourth real argument is given, it is interpreted as the index of
663     refraction to use instead of 1.52.
664     .DS
665     mod glass id
666     0
667     0
668     3 rtn gtn btn
669     .DE
670     .LP
671     .UL Plasfunc
672     .PP
673     Plasfunc in used for the procedural definition of plastic-like
674     materials with arbitrary bidirectional reflectance distribution
675     functions (BRDF's).
676     The arguments to this material include the color and specularity,
677     as well as the function defining the specular distribution and the
678     auxiliary file where it may be found.
679     .DS
680     mod plasfunc id
681     2+ refl funcfile transform
682     0
683     4+ red green blue spec A5 ..
684     .DE
685     The function
686     .I refl
687     takes four arguments, the x, y and z
688     direction towards the incident light, and the solid angle
689     subtended by the source.
690     The solid angle is provided to facilitate averaging, and is usually
691     ignored.
692     The
693     .I refl
694     function should integrate to 1 over
695     the projected hemisphere to maintain energy balance.
696     At least four real arguments must be given, and these are made
697     available along with any additional values to the reflectance
698     function.
699     Currently, only the contribution from direct light sources is
700     considered in the specular calculation.
701     As in most material types, the surface normal is always
702     altered to face the incoming ray.
703     .LP
704     .UL Metfunc
705     .PP
706     Metfunc is identical to plasfunc and takes the same arguments, but
707     the specular component is multiplied also by the material color.
708     .LP
709     .UL Transfunc
710     .PP
711     Transfunc is similar to plasfunc but with an arbitrary bidirectional
712     transmittance distribution as well as a reflectance distribution.
713     Both reflectance and transmittance are specified with the same function.
714     .DS
715     mod transfunc id
716     2+ brtd funcfile transform
717     0
718     6+ red green blue rspec trans tspec A7 ..
719     .DE
720     Where
721     .I trans
722     is the total light transmitted and
723     .I tspec
724     is the non-Lambertian fraction of transmitted light.
725     The function
726     .I brtd
727     should integrate to 1 over each projected hemisphere.
728     .LP
729     .UL BRTDfunc
730     .PP
731     The material BRTDfunc gives the maximum flexibility over surface
732     reflectance and transmittance, providing for spectrally-dependent
733     specular rays and reflectance and transmittance distribution functions.
734     .DS
735     mod BRTDfunc id
736     10+ rrefl grefl brefl
737     rtrns gtrns btrns
738     rbrtd gbrtd bbrtd
739     funcfile transform
740     0
741     9+ rfdif gfdif bfdif
742     rbdif gbdif bbdif
743     rtdif gtdif btdif
744     A10 ..
745     .DE
746     The variables
747     .I "rrefl, grefl"
748     and
749     .I brefl
750     specify the color coefficients for
751     the ideal specular (mirror) reflection of the surface.
752     The variables
753     .I "rtrns, gtrns"
754     and
755     .I btrns
756     specify the color coefficients for the ideal specular transmission.
757     The functions
758     .I "rbrtd, gbrtd"
759     and
760     .I bbrtd
761     take the direction to the incident light (and its solid angle)
762     and compute the color coefficients for the directional diffuse part of
763     reflection and transmission.
764     As a special case, three identical values of '0' may be given in place of
765     these function names to indicate no directional diffuse component.
766     .PP
767     Unlike most other material types, the surface normal is not altered to
768     face the incoming ray.
769     Thus, functions and variables must pay attention to the orientation of
770     the surface and make adjustments appropriately.
771     However, the special variables for the perturbed dot product and surface
772     normal,
773     .I "RdotP, NxP, NyP"
774     and
775     .I NzP
776     are reoriented as if the ray hit the front surface for convenience.
777     .PP
778     A diffuse reflection component may be given for the front side with
779     .I "rfdif, gfdif"
780     and
781     .I bfdif
782     for the front side of the surface or
783     .I "rbdif, gbdif"
784     and
785     .I bbdif
786     for the back side.
787     The diffuse transmittance (must be the same for both sides by physical law)
788     is given by
789     .I "rtdif, gtdif"
790     and
791     .I btdif.
792     A pattern will modify these diffuse scattering values,
793     and will be available through the special variables
794     .I "CrP, CgP"
795     and
796     .I CbP.
797     .PP
798     Care must be taken when using this material type to produce a physically
799     valid reflection model.
800     The reflectance functions should be bidirectional, and under no circumstances
801     should the sum of reflected diffuse, transmitted diffuse, reflected specular,
802     transmitted specular and the integrated directional diffuse component be
803     greater than one.
804     .LP
805     .UL Plasdata
806     .PP
807     Plasdata is used for arbitrary BRDF's that are most conveniently
808     given as interpolated data.
809     The arguments to this material are the data file and coordinate index
810     functions, as well as a function to optionally modify the data
811     values.
812     .DS
813     mod plasdata id
814     3+n+
815     func datafile
816     funcfile x1 x2 .. xn transform
817     0
818     4+ red green blue spec A5 ..
819     .DE
820     The coordinate indices
821     .I "(x1, x2,"
822     etc.) are themselves functions of
823     the x, y and z direction to the incident light, plus the solid angle
824     subtended by the light source (usually ignored).
825     The data function
826     .I (func)
827     takes five variables, the
828     interpolated value from the n-dimensional data file, followed by the
829     x, y and z direction to the incident light and the solid angle of the source.
830     The light source direction and size may of course be ignored by the function.
831     .LP
832     .UL Metdata
833     .PP
834     As metfunc is to plasfunc, metdata is to plasdata.
835     Metdata takes the same arguments as plasdata, but the specular
836     component is modified by the given material color.
837     .LP
838     .UL Transdata
839     .PP
840     Transdata is like plasdata but the specification includes transmittance
841     as well as reflectance.
842     The parameters are as follows.
843     .DS
844     mod transdata id
845     3+n+
846     func datafile
847     funcfile x1 x2 .. xn transform
848     0
849     6+ red green blue rspec trans tspec A7 ..
850     .DE
851     .LP
852     .UL Antimatter
853     .PP
854     Antimatter is a material that can "subtract" volumes from other volumes.
855     A ray passing into an antimatter object becomes blind to all the specified
856     modifiers:
857     .DS
858     mod antimatter id
859     N mod1 mod2 .. modN
860     0
861     0
862     .DE
863     The first modifier will also be used to shade the area leaving the
864     antimatter volume and entering the regular volume.
865     If mod1 is void, the antimatter volume is completely invisible.
866     Antimatter does not work properly with the material type "trans",
867     and multiple antimatter surfaces should be disjoint.
868     The viewpoint must be outside all volumes concerned for a correct
869     rendering.
870     .NH 3
871     Textures
872     .PP
873     A texture is a perturbation of the surface normal, and
874     is given by either a function or data.
875     .LP
876     .UL Texfunc
877     .PP
878     A texfunc uses an auxiliary function file
879     to specify a procedural texture:
880     .DS
881     mod texfunc id
882     4+ xpert ypert zpert funcfile transform
883     0
884     n A1 A2 .. An
885     .DE
886     .LP
887     .UL Texdata
888     .PP
889     A texdata texture uses three data files to get the surface
890     normal perturbations.
891     The variables
892     .I xfunc,
893     .I yfunc
894     and
895     .I zfunc
896     take three arguments
897     each from the interpolated values in
898     .I xdfname,
899     .I ydfname
900     and
901     .I zdfname.
902     .DS
903     mod texdata id
904     8+ xfunc yfunc zfunc xdfname ydfname zdfname vfname x0 x1 .. xf
905     0
906     n A1 A2 .. An
907     .DE
908     .NH 3
909     Patterns
910     .PP
911     Patterns are used to modify the reflectance of materials.
912     The basic types are given below.
913     .LP
914     .UL Colorfunc
915     .PP
916     A colorfunc is a procedurally defined color pattern.
917     It is specified as follows:
918     .DS
919     mod colorfunc id
920     4+ red green blue funcfile transform
921     0
922     n A1 A2 .. An
923     .DE
924     .LP
925     .UL Brightfunc
926     .PP
927     A brightfunc is the same as a colorfunc, except it is monochromatic.
928     .DS
929     mod brightfunc id
930     2+ refl funcfile transform
931     0
932     n A1 A2 .. An
933     .DE
934     .LP
935     .UL Colordata
936     .PP
937     Colordata uses an interpolated data map to modify a material's color.
938     The map is n-dimensional, and is stored in three
939     auxiliary files, one for each color.
940     The coordinates used to look up and interpolate the data are
941     defined in another auxiliary file.
942     The interpolated data values are modified by functions of
943     one or three variables.
944     If the functions are of one variable, then they are passed the
945     corresponding color component (red or green or blue).
946     If the functions are of three variables, then they are passed the
947     original red, green, and blue values as parameters.
948     .DS
949     mod colordata id
950     7+n+
951     rfunc gfunc bfunc rdatafile gdatafile bdatafile
952     funcfile x1 x2 .. xn transform
953     0
954     m A1 A2 .. Am
955     .DE
956     .LP
957     .UL Brightdata
958     .PP
959     Brightdata is like colordata, except monochromatic.
960     .DS
961     mod brightdata id
962     3+n+
963     func datafile
964     funcfile x1 x2 .. xn transform
965     0
966     m A1 A2 .. Am
967     .DE
968     .LP
969     .UL Colorpict
970     .PP
971     Colorpict is a special case of colordata, where the pattern is
972     a two-dimensional image stored in the RADIANCE picture format.
973     The dimensions of the image data are determined by the picture
974     such that the smaller dimension is always 1, and the other
975     is the ratio between the larger and the smaller.
976     For example, a 500x338 picture would have coordinates (u,v)
977     in the rectangle between (0,0) and (1.48,1).
978     .DS
979     mod colorpict id
980     7+
981     rfunc gfunc bfunc pictfile
982     funcfile u v transform
983     0
984     m A1 A2 .. Am
985     .DE
986     .LP
987     .UL Colortext
988     .PP
989     Colortext is dichromatic writing in a polygonal font.
990     The font is defined in an auxiliary file, such as
991     .I helvet.fnt.
992     The text itself is also specified in a separate file, or
993     can be part of the material arguments.
994     The character size, orientation, aspect ratio and slant is
995     determined by right and down motion vectors.
996     The upper left origin for the text block as well as
997     the foreground and background colors
998     must also be given.
999     .DS
1000     mod colortext id
1001     2 fontfile textfile
1002     0
1003     15+
1004     Ox Oy Oz
1005     Rx Ry Rz
1006     Dx Dy Dz
1007     rfore gfore bfore
1008     rback gback bback
1009     [spacing]
1010     .DE
1011     or:
1012     .DS
1013     mod colortext id
1014     2+N fontfile . This is a line with N words ...
1015     0
1016     15+
1017     Ox Oy Oz
1018     Rx Ry Rz
1019     Dx Dy Dz
1020     rfore gfore bfore
1021     rback gback bback
1022     [spacing]
1023     .DE
1024     .LP
1025     .UL Brighttext
1026     .PP
1027     Brighttext is like colortext, but the writing is monochromatic.
1028     .DS
1029     mod brighttext id
1030     2 fontfile textfile
1031     0
1032     11+
1033     Ox Oy Oz
1034     Rx Ry Rz
1035     Dx Dy Dz
1036     foreground background
1037     [spacing]
1038     .DE
1039     or:
1040     .DS
1041     mod brighttext id
1042     2+N fontfile . This is a line with N words ...
1043     0
1044     11+
1045     Ox Oy Oz
1046     Rx Ry Rz
1047     Dx Dy Dz
1048     foreground background
1049     [spacing]
1050     .DE
1051     .LP
1052     By default, a uniform spacing algorithm is used that guarantees
1053     every character will appear in a precisely determined position.
1054     Unfortunately, such a scheme results in rather unattractive and difficult to
1055     read text with most fonts.
1056     The optional
1057     .I spacing
1058     value defines the distance between characters for proportional spacing.
1059     A positive value selects a spacing algorithm that preserves right margins and
1060     indentation, but does not provide the ultimate in proportionally spaced text.
1061     A negative value insures that characters are properly spaced, but the
1062     placement of words then varies unpredictably.
1063     The choice depends on the relative importance of spacing versus formatting.
1064     When presenting a section of formatted text, a positive spacing value is
1065     usually preferred.
1066     A single line of text will often be accompanied by a negative spacing value.
1067     A section of text meant to depict a picture, perhaps using a special purpose
1068     font such as hexbit4x1.fnt, calls for uniform spacing.
1069     Reasonable magnitudes for proportional spacing are
1070     between 0.1 (for tightly spaced characters) and 0.3 (for wide spacing).
1071     .NH 3
1072     Mixtures
1073     .PP
1074     A mixture is a blend of one or more materials or textures and patterns.
1075     The basic types are given below.
1076     .LP
1077     .UL Mixfunc
1078     .PP
1079     A mixfunc mixes two modifiers procedurally.
1080     It is specified as follows:
1081     .DS
1082     mod mixfunc id
1083     4+ foreground background vname funcfile transform
1084     0
1085     n A1 A2 .. An
1086     .DE
1087     Foreground and background are modifier names that must be
1088     defined earlier in the scene description.
1089     If one of these is a material, then
1090     the modifier of the mixfunc must be "void".
1091     (Either the foreground or background modifier may be "void",
1092     which serves as a form of opacity control when used with a material.)\0
1093     Vname is the coefficient defined in funcfile that determines the influence
1094     of foreground.
1095     The background coefficient is always (1-vname).
1096     Since the references are not resolved until runtime, the last
1097     definitions of the modifier id's will be used.
1098     This can result in modifier loops, which are detected by the
1099     renderer.
1100     .LP
1101     .UL Mixdata
1102     .PP
1103     Mixdata combines two modifiers using an auxiliary data file:
1104     .DS
1105     mod mixdata id
1106     5+n+
1107     foreground background func datafile
1108     funcfile x1 x2 .. xn transform
1109     0
1110     m A1 A2 .. Am
1111     .DE
1112     .LP
1113     .UL Mixpict
1114     .PP
1115     Mixpict combines two modifiers based on a picture:
1116     .DS
1117     mod mixpict id
1118     7+
1119     foreground background func pictfile
1120     funcfile u v transform
1121     0
1122     m A1 A2 .. Am
1123     .DE
1124     The mixing coefficient function "func" takes three
1125     arguments, the red, green and blue values
1126     corresponding to the pixel at (u,v).
1127     .LP
1128     .UL Mixtext
1129     .PP
1130     Mixtext uses one modifier for the text foreground, and one for the
1131     background:
1132     .DS
1133     mod mixtext id
1134     4 foreground background fontfile textfile
1135     0
1136     9+
1137     Ox Oy Oz
1138     Rx Ry Rz
1139     Dx Dy Dz
1140     [spacing]
1141     .DE
1142     or:
1143     .DS
1144     mod mixtext id
1145     4+N
1146     foreground background fontfile .
1147     This is a line with N words ...
1148     0
1149     9+
1150     Ox Oy Oz
1151     Rx Ry Rz
1152     Dx Dy Dz
1153     [spacing]
1154     .DE
1155     .NH 2
1156     Auxiliary Files
1157     .PP
1158     Auxiliary files used in textures and patterns
1159     are accessed by the programs during image generation.
1160     These files may be located in the working directory, or in
1161     a library directory.
1162     The environment variable
1163     .I RAYPATH
1164     can be assigned an alternate set of search directories.
1165     Following is a brief description of some common file types.
1166     .NH 3
1167     Function Files
1168     .PP
1169     A function file contains the definitions of variables, functions
1170     and constants used by a primitive.
1171     The transformation that accompanies the file name contains the necessary
1172     rotations, translations and scalings to bring the coordinates of
1173     the function file into agreement with the world coordinates.
1174     The transformation specification is the same as for the
1175     .I xform
1176     command.
1177     An example function file is given below:
1178     .DS
1179     {
1180     This is a comment, enclosed in curly braces.
1181     {Comments can be nested.}
1182     }
1183     { standard expressions use +,-,*,/,^,(,) }
1184     vname = Ny * func(A1) ;
1185     { constants are defined with a colon }
1186     const : sqrt(PI/2) ;
1187     { user-defined functions add to library }
1188     func(x) = 5 + A1*sin(x/3) ;
1189     { functions may be passed and recursive }
1190     rfunc(f,x) = if(x,f(x),f(-x)*rfunc(f,x+1)) ;
1191     { constant functions may also be defined }
1192     cfunc(x) : 10*x / sqrt(x) ;
1193     .DE
1194     Many variables and functions are already defined by the program,
1195     and they are listed in the file
1196     .I rayinit.cal.
1197     The following variables are particularly important:
1198     .DS
1199     Dx, Dy, Dz - incident ray direction
1200     Px, Py, Pz - intersection point
1201     Nx, Ny, Nz - surface normal at intersection point
1202     Rdot - cosine between ray and normal
1203     arg(0) - number of real arguments
1204     arg(i) - i'th real argument
1205     .DE
1206     For BRDF types, the following variables are defined as well:
1207     .DS
1208     NxP, NyP, NzP - perturbed surface normal
1209     RdotP - perturbed dot product
1210     CrP, CgP, CbP - perturbed material color
1211     .DE
1212     A unique context is set up for each file so that the same variable
1213     may appear in different function files without conflict.
1214     The variables listed above and any others defined in
1215     rayinit.cal are available globally.
1216     If no file is needed by a given primitive because all the required
1217     variables are global, a period (`.') can be given in
1218     place of the file name.
1219     It is also possible to give an expression instead of a straight
1220     variable name in a scene file, although such expressions should
1221     be kept simple as they cannot contain any white space.
1222     Also, functions (requiring parameters)
1223     must be given as names and not as expressions.
1224     .PP
1225     Constant expressions are used as an optimization in function
1226     files.
1227     They are replaced wherever they occur in an expression by their
1228     value.
1229     Constant expressions are evaluated only once, so they must not
1230     contain any variables or values that can change, such as the ray
1231     variables Px and Ny or the primitive argument function arg().
1232     All the math library functions such as sqrt() and cos() have the
1233     constant attribute, so they will be replaced by immediate values
1234     whenever they are given constant arguments.
1235     Thus, the subexpression cos(PI*sqrt(2)) is immediately replaced
1236     by its value, -.266255342, and does not cause any additional overhead
1237     in the calculation.
1238     .PP
1239     It is generally a good idea to define constants and variables before
1240     they are referred to in a function file.
1241     Although evaluation does not take place until later, the interpreter
1242     does variable scoping and constant subexpression evaluation based on
1243     what it has compiled already.
1244     For example, a variable that is defined globally in rayinit.cal then
1245     referenced in the local context of a function file cannot
1246     subsequently be redefined in the same file because the compiler
1247     has already determined the scope of the referenced variable as global.
1248     To avoid such conflicts, one can state the scope of a variable explicitly
1249     by preceding the variable name with a context mark (a back-quote) for
1250     a local variable, or following the name with a context mark for a global
1251     variable.
1252     .NH 3
1253     Data Files
1254     .PP
1255     Data files contain n-dimensional arrays of real numbers used
1256     for interpolation.
1257     Typically, definitions in a function file determine how
1258     to index and use interpolated data values.
1259     The basic data file format is as follows:
1260     .DS
1261     N
1262     beg1 end1 m1
1263     0 0 m2 x2.1 x2.2 x2.3 x2.4 .. x2.m2
1264     ...
1265     begN endN mN
1266     DATA, later dimensions changing faster.
1267     .DE
1268     N is the number of dimensions.
1269     For each dimension, the beginning and ending coordinate
1270     values and the dimension size is given.
1271     Alternatively, individual coordinate values can be given when
1272     the points are not evenly spaced.
1273     These values must either be increasing or decreasing monotonically.
1274     The data is m1*m2*...*mN real numbers in ASCII form.
1275     Comments may appear anywhere in the file, beginning with a pound
1276     sign ('#') and continuing to the end of line.
1277     .NH 3
1278     Font Files
1279     .PP
1280     A font file lists the polygons which make up a character set.
1281     Comments may appear anywhere in the file, beginning with a pound
1282     sign ('#') and continuing to the end of line.
1283     All numbers are decimal integers:
1284     .DS
1285     code n
1286     x0 y0
1287     x1 y1
1288     ...
1289     xn yn
1290     ...
1291     .DE
1292     The ASCII codes can appear in any order.
1293     N is the number of vertices, and the last is automatically
1294     connected to the first.
1295     Separate polygonal sections are joined by coincident sides.
1296     The character coordinate system is a square with lower left corner at
1297     (0,0), lower right at (255,0) and upper right at (255,255).
1298     .NH 2
1299     Generators
1300     .PP
1301     A generator is any program that produces a scene description
1302     as its output.
1303     They usually appear as commands in a scene description file.
1304     An example of a simple generator is
1305     .I genbox.
1306     .I Genbox
1307     takes the arguments of width, height and depth to produce
1308     a parallelepiped description.
1309     .I Genprism
1310     takes a list of 2-dimensional coordinates and extrudes them along a vector to
1311     produce a 3-dimensional prism.
1312     .I Genrev
1313     is a more sophisticated generator
1314     that produces an object of rotation from parametric functions
1315     for radius and axis position.
1316     .I Gensurf
1317     tessellates a surface defined by the
1318     parametric functions x(s,t), y(s,t), and z(s,t).
1319     .I Genworm
1320     links cylinders and spheres along a curve.
1321     .I Gensky
1322     produces a sun and sky distribution corresponding
1323     to a given time and date.
1324     .PP
1325     .I Xform
1326     is a program that transforms a scene description from one
1327     coordinate space to another.
1328     .I Xform
1329     does rotation, translation, scaling, and mirroring.
1330     .NH 1
1331     Image Generation
1332     .PP
1333     Once the scene has been described in three-dimensions, it
1334     is possible to generate a two-dimensional image from a
1335     given perspective.
1336     .PP
1337     The image generating programs use an
1338     .I octree
1339     to efficiently trace rays through the scene.
1340     An octree subdivides space into nested octants which
1341     contain sets of surfaces.
1342     In RADIANCE, an octree is created from a scene description by
1343     .I oconv.
1344     The details of this process are not important,
1345     but the octree will serve as input to the ray-tracing
1346     programs and directs the use of a scene description.
1347     .PP
1348     .I Rview
1349     is ray-tracing program for viewing a scene interactively.
1350     When the user specifies a new perspective,
1351     .I rview
1352     quickly displays a rough
1353     image on the terminal, then progressively
1354     increases the resolution as the user looks on.
1355     He can select a particular section of the image to improve,
1356     or move to a different view and start over.
1357     This mode of interaction is useful for debugging scenes
1358     as well as determining the best view for a final image.
1359     .PP
1360     .I Rpict
1361     produces a high-resolution picture of a scene from
1362     a particular perspective.
1363     This program features adaptive sampling, crash
1364     recovery and progress reporting, all of which are important
1365     for time-consuming images.
1366     .PP
1367     A number of filters are available for manipulating picture files.
1368     .I Pfilt
1369     sets the exposure and performs anti-aliasing.
1370     .I Pcompos
1371     composites (cuts and pastes) pictures.
1372     .I Pcond
1373     conditions a picture for a specific display device.
1374     .I Pcomb
1375     performs arbitrary math on one or more pictures.
1376     .I Protate
1377     rotates a picture 90 degrees clockwise.
1378     .I Pflip
1379     flips a picture horizontally, vertically, or both (180 degree rotation).
1380     .I Pvalue
1381     converts a picture to and from simpler formats.
1382     .PP
1383     Pictures may be displayed directly under X11 using the program
1384     .I ximage,
1385     or converted a standard image format.
1386     .I Ra_avs
1387     converts to and from AVS image format.
1388     .I Ra_pict
1389     converts to Macintosh 32-bit PICT2 format.
1390     .I Ra_ppm
1391     converts to and from Poskanzer Portable Pixmap formats.
1392     .I Ra_pr
1393     converts to and from Sun 8-bit rasterfile format.
1394     .I Ra_pr24
1395     converts to and from Sun 24-bit rasterfile format.
1396     .I Ra_ps
1397     converts to PostScript color and greyscale formats.
1398     .I Ra_rgbe
1399     converts to and from Radiance uncompressed picture format.
1400     .I Ra_t16
1401     converts to and from Targa 16 and 24-bit image formats.
1402     .I Ra_t8
1403     converts to and from Targa 8-bit image format.
1404     .I Ra_tiff
1405     converts to and from TIFF.
1406     .I Ra_xyze
1407     converts to and from Radiance CIE picture format.
1408     .NH 1
1409     License
1410     .PP
1411     Radiance is a registered copyright of The Regents of the University of
1412     California ("The Regents"). The Regents grant to you a nonexclusive,
1413     nontransferable license ("License") to use Radiance source code without fee.
1414     You may not sell or distribute Radiance to others without the prior express
1415     written permission of The Regents.
1416     You may compile and use this software on any machines to which you have
1417     personal access, and may share its use with others who have access to the
1418     same machines.
1419     .PP
1420     NEITHER THE UNITED STATES NOR THE UNITED STATES DEPARTMENT OF ENERGY, NOR ANY
1421     OF THEIR EMPLOYEES, MAKES ANY WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY
1422     LEGAL LIABILITY OR RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR
1423     USEFULNESS OF ANY INFORMATION, APPARATUS, PRODUCT, OR PROCESS DISCLOSED, OR
1424     REPRESENTS THAT ITS USE WOULD NOT INFRINGE PRIVATELY OWNED RIGHTS.
1425     By downloading, using or copying this software, you agree to abide by the
1426     intellectual property laws and all other applicable laws of the United
1427     States, and by the terms of this License Agreement. Ownership of the software
1428     shall remain solely in The Regents.
1429     The Regents shall have the right to terminate this License immediately by
1430     written notice upon your breach of, or noncompliance with, any of its terms.
1431     You shall be liable for any infringement or damages resulting from your
1432     failure to abide by the terms of this License Agreement.
1433     .PP
1434     NOTICE: The Government is granted for itself and others acting on its behalf
1435     a paid-up, nonexclusive irrevocable worldwide license in this data to
1436     reproduce, prepare derivative works, and perform publicly and display
1437     publicly. Beginning five (5) years after permission to assert copyright is
1438     granted, subject to two possible five year renewals, the Government is
1439     granted for itself and others acting on its behalf a paid-up, non-exclusive,
1440     irrevocable worldwide license in this data to reproduce, prepare derivative
1441     works, distribute copies to the public, perform publicly and display
1442     publicly, and to permit others to do so.
1443     .NH 1
1444     Acknowledgements
1445     .PP
1446     This work was supported by the Assistant Secretary of Conservation
1447     and Renewable Energy, Office of Building Energy Research and
1448     Development, Buildings Equipment Division of the U.S. Department of
1449     Energy under Contract No. DE-AC03-76SF00098.
1450     .PP
1451     Additional work was sponsored by the Swiss federal government
1452     under the Swiss LUMEN Project and was
1453     carried out in the Laboratoire d'Energie Solaire (LESO Group) at
1454     the Ecole Polytechnique Federale de Lausanne (EPFL University)
1455     in Lausanne, Switzerland.
1456     .NH 1
1457     References
1458     .LP
1459     Ward, G.,
1460     ``The Radiance Lighting Simulation and Rendering System,''
1461     .I "Computer Graphics",
1462     Orlando, July 1994.
1463     .LP
1464     Rushmeier, H., G. Ward,
1465     ``Energy-Preserving Non-Linear Filters,''
1466     .I "Computer Graphics",
1467     Orlando, July 1994.
1468     .LP
1469     Ward, G.,
1470     ``A Contrast-Based Scalefactor for Luminance Display,''
1471     .I "Graphics Gems IV",
1472     Edited by Paul Heckbert,
1473     Academic Press 1994.
1474     .LP
1475     Ward, G.,
1476     ``Measuring and Modeling Anisotropic Reflection,''
1477     .I "Computer Graphics",
1478     Chicago, July 1992.
1479     .LP
1480     Ward, G., P. Heckbert,
1481     ``Irradiance Gradients,''
1482     .I "Third Annual Eurographics Workshop on Rendering",
1483     to be published by Springer-Verlag, held in Bristol, UK, May 1992.
1484     .LP
1485     Ward, G.,
1486     ``Adaptive Shadow Testing for Ray Tracing,''
1487     .I "Second Annual Eurographics Workshop on Rendering",
1488     to be published by Springer-Verlag, held in Barcelona, SPAIN, May 1991.
1489     .LP
1490     Ward, G.,
1491     ``Visualization,''
1492     .I "Lighting Design and Application",
1493     Vol. 20, No. 6, June 1990.
1494     .LP
1495     Ward, G., F. Rubinstein, R. Clear,
1496     ``A Ray Tracing Solution for Diffuse Interreflection,''
1497     .I "Computer Graphics",
1498     Vol. 22, No. 4, August 1988.
1499     .LP
1500     Ward, G., F. Rubinstein,
1501     ``A New Technique for Computer Simulation of Illuminated Spaces,''
1502     .I "Journal of the Illuminating Engineering Society",
1503     Vol. 17, No. 1, Winter 1988.