• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

Doc/H03-May-2022-2,4322,048

Examples/H10-Feb-1992-974896

etc/H10-Feb-1992-1,3121,121

libray/H03-May-2022-15,2008,796

libshade/H03-May-2022-4,8893,454

raypaint/H03-May-2022-1,4681,028

rayshade/H10-Feb-1992-794509

rayview/H10-Feb-1992-1,5941,068

ConfigureH A D03-May-202248.1 KiB2,2252,093

MANIFESTH A D10-Feb-199212.1 KiB236235

MakefileH A D10-Feb-1992529 3417

READMEH A D10-Feb-19927.8 KiB173135

ReconfigureH A D10-Feb-19921.4 KiB6643

blurb.urtH A D10-Feb-19926.9 KiB158134

config.HH A D10-Feb-19925.9 KiB19026

config.h.SHH A D10-Feb-19926.3 KiB205152

patchlevel.hH A D10-Feb-199221 21

README

1This is version 4.0 of rayshade, a ray tracing program.
2Rayshade reads a multi-line ASCII file describing a scene to be rendered
3and produces a Utah Raster Toolkit "RLE" format file containing the
4ray traced image.
5
6Rayshade features:
7
8	Eleven primitives (blob, box, cone, cylinder, height field,
9	plane, polygon, sphere, torus, flat- and Phong-shaded triangle)
10
11	Aggregate objects
12
13	Constructive solid geometry
14
15	Point, directional, extended, spot, and quadrilateral light sources
16
17	Solid procedural texturing, bump mapping, and
18		2D "image" texture mapping
19
20	Antialiasing through variable-rate "jittered" sampling
21
22	Arbitrary linear transformations on objects and texture/bump maps.
23
24	Use of uniform spatial subdivision or hierarchy of bounding
25		volumes to speed rendering
26
27	Options to facilitate rendering of stereo pairs
28
29	Rudimentary animation support
30
31
32There are many differences between rayshade versions 3.0 and 4.0.  In
33particular, the input syntax has changed.  Input files created for
34version 3.0 must be converted to version 4.0 syntax using the provided
35conversion utility, rsconvert.  See Doc/Changes for a list of some of
36the more important changes.
37
38Rayshade v4.0 has been tested on many different UNIX-based computers,
39including: SGI 4D, IBM RS6000, Sun Sparcstation 1, Sun 3, DECstation,
40Apollo DN10000, NeXT.  If your machine has a C compiler, enough memory
41(at least 2Mb), and runs something resembling UNIX, rayshade should be fairly
42easy to port.  Be warned that rayshade uses yacc and lex to process input
43files.  If you do not have lex and yacc, try to get flex and bison from
44the Free Software Foundation folks (ftp to prep.ai.mit.edu).  Attempts
45to port rayshade to 16-bit machines will likely lead to nothing but
46a profound sense of frustration.
47
48Rayshade uses a Configure script in order to determine how it should
49be compiled.  This means that if you're not runing under UNIX, you'll
50probably have to create a config.h and edit the Makefiles by hand.
51If you create a config.h file and/or Makefiles for use in an non-UNIX
52environment, send them to us and we will make it available for use by
53others.  The prototype config.H file may be of some help.
54
55Normally, rayshade makes use of the Utah Raster toolkit.  You are
56strongly encouraged to get a copy of the toolkit, as it provides a
57host of useful tools for image manipulation and a library for reading/writing
58the toolkit's "RLE" format image files.  "blurb.urt" is the "blurb" file from
59the latest distribution of the toolkit.  Also of interest is the
60"fbm" library, available from nl.cs.cmu.edu:/usr/mlm/ftp/fbm.tar.Z, which
61provides additional tools for converting Utah Raster format images
62to/from other formats.
63
64If you do not want to or cannot use the Utah Raster toolkit, rayshade
65can be configured to create image files using a generic format
66identical to that used by Mark VandeWettering's "mtv" ray tracer.
67
68The rayshade distribution consists of two libraries (libray, libshade) and
69several applications (rayshade proper, rayview, raypaint) that are
70linked against these libraries.  To compile, run the Configure script to
71generate config.h and the Makefiles, then run "make depend"
72followed by "make".  If the Configuration script fails, or if
73it can't determine a way to generate dependencies, you'll probably
74have to edit the Makefiles or extract them from the Makefile.SH scripts
75by hand.  Don't be overly alarmed if there are a few non-fatal error
76messages while running "make depend"
77
78The Doc directory contains a User's Guide in the Guide subdirectory,
79as well as a quick-reference sheet and some information that might
80be useful in porting or modifying rayshade.  To create a formatted
81version of the User's Guide, you'll need LaTeX.  If you don't have
82LaTeX, a postscript version of the Guide is available via anonymous
83ftp from weedeater.math.yale.edu (see below).
84
85The etc directory contains miscellaneous goodies, including the source
86to a filter to convert rayshade v3.0 input to rayshade 4.0.
87The Example directory contains example input files, which may be
88used to test rayshade and to familiarize yourself with rayshade's input
89syntax.  You can also run any one of Eric Haines'
90Standard Procedural Databases through awk using the etc/nff2shade.awk
91script, and then feed the results to rayshade.  Note that for several
92of the databases, you will need to tweak the data a bit to achieve
93optimal runtimes.  See nff2shade.awk for details.
94
95Rayshade was not designed to be, nor is it, the be-all and end-all of
96ray tracers.  It was meant to be reasonably fast, portable, and easy to
97modify.  It has some nice features which allow you to produce
98pretty pictures, but there are countless extensions, modifications,
99and improvements which could be made.  There are many routines which may be
100optimized and many features which could be added.  For a list of suggested
101improvements and projects see "TODO".  You are strongly encouraged to modify
102the source code left and right.
103
104While there is currently no documentation for the libraries, it
105should be easy for you to add your own primitives, textures, aggregates,
106and light sources by looking at the code and sending mail if you get
107stuck.
108
109Additional rayshade goodies are available via anonymous ftp from
110weedeater.math.yale.edu (130.132.23.17) in pub/rayshade.4.0.
111If you have contributions of new objects, textures, input files,
112configuration files, or images to make, feel free to send us email or
113to drop off a copy via ftp in the "incoming" directory on weedeater.
114
115The first version of rayshade was written by Craig Kolb, David P. Dobkin,
116and David C. Hoffman during 1987-1988, and was heavily based on an
117"introductory" public domain ray tracer written by Roman Kuchkuda.
118Rayshade v3.0 was written by Craig Kolb and released in the Fall of 1989.
119Rayshade v4.0 was written by Craig Kolb and Rod Bogart during 1990-1991.
120
121Rayshade was made possible by many people who have made suggestions,
122fixed bugs, and who have been all-around good sports about the whole thing.
123
124Thanks to Gavin Bell, David Dobkin, Eric Haines, Lefteris Koutsofios,
125Ken Musgrave, Przemek Prusinkiewicz, and Allan Snider for their
126encouragement, comments, and willingness to be on the Front Lines.
127
128Thanks to Roman Kuchkuda for providing such a solid base upon which
129to build.
130
131Special thanks to Robert Skinner for providing the Noise(), DNoise(),
132and other texturing functions and allowing them to be redistributed.
133
134Pat Hanrahan's OOGL provided the spirit (if not the letter) of the
135modularity of rayshade v4.0.  Thanks to Pat and to Mark VandeWettering
136for the 'net tracer' conversations and for the inspiration to do something
137to clean up rayshade.
138
139Thanks to Marc Andreessen, Tony Apodaca, Ray Bellis, Dominique Boisvert,
140William Bouma, Allen Braunsdorf, Jeff Butterworth, Nick Carriero,
141Nancy Everson, Tom Friedel, Robert Funchess, David Gelernter, Mike Gigante,
142Ed Herderick, John Knuston, Raphael Manfredi, Lee Moore, Dietmar Saupe,
143Iain Sinclair, Brian Wyvill, and everybody else for their bugfixes,
144suggestions, input files, encouragement, and other feedback.
145
146Thanks also to Mark Podlipec for providing the blob and torus objects.
147
148Thanks to Jochen Schwarze for the cubic and quartic root-finding functions.
149His code, and a host of other useful routines, can be found in
150"Graphics Gems", edited by Andrew Glassner.
151
152Thanks to Benoit Mandelbrot for the support he provided this project.
153
154If you find any bugs, make any useful extensions, have a nice input file,
155port rayshade to a new environment, or need assistance understanding a
156particularly braindamaged section of code, please let us know.  We can be
157most easily reached by email.
158
159Once you start using rayshade, and you'd like to be kept abreast of
160changes and extensions, send a message to rayshade-request@cs.princeton.edu,
161and we'll add you to the rayshade mailing list.
162
163Craig Kolb
164Rod Bogart
16510 January 1992
166rayshade-request@cs.yale.edu
167
168Craig Kolb
169Computer Science Department
170Princeton University
17135 Olden St.
172Princeton, NJ 08544
173