ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/doc/ray.1
Revision: 1.3
Committed: Fri Mar 14 21:27:45 2003 UTC (21 years, 7 months ago) by greg
Branch: MAIN
Changes since 1.2: +3 -0 lines
Log Message:
Added -a option to obj2mesh to incorporate materials in mesh

File Contents

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