wecker@cookie.dec.com.UUCP (01/25/87)
ANNOUNCEMENT ANNOUNCEMENT ANNOUNCEMENT ANNOUNCEMENT ANNOUNCEMENT ANNOUNCEMENT
ANNOUNCEMENT ANNOUNCEMENT
ANNOUNCEMENT DBW_RENDER ANNOUNCEMENT
ANNOUNCEMENT Ray Tracer for the Amiga ANNOUNCEMENT
ANNOUNCEMENT now available!!! ANNOUNCEMENT
ANNOUNCEMENT ANNOUNCEMENT
ANNOUNCEMENT ANNOUNCEMENT ANNOUNCEMENT ANNOUNCEMENT ANNOUNCEMENT ANNOUNCEMENT
If you liked the ray traced images previously distributed... you're
going to LOVE DBW_Render. This package is a FULL re-implementation of the Ray
Tracer that I've been using on VAXen to create all those images.
It will run on a standard Amiga (with 512k of memory (and can be configured
to run in 256k if necessary)). By adding AI-heuristics, elapsed time to
compute an image is within the same order of magnitude as a VAX-780 (even
though the Amiga doesn't have hardware floating point or virtual memory)!
For example "glass" computes in 50 hours on an Amiga without the heuristics.
With the heuristics, the image (at full resolution) can be computed in 11 hours.
The package includes:
~~~ ~~~~~~~ ~~~~~~~~~
RAY - ray tracing program
RAY2 - post processor to create IFF/ILBM format files
DISPLAY - general display program for RAY2's output
*.DAT - sample input files
*.TMP - sample RAY output files
*.ILBM - sample HAM encoded pictures (RAY2 output)
*.c - all MANX-Aztec C sources for the package
*.h - all MANX-Aztec C include files for the package
RAY.DOC - full documentation for the package
COPYING - General License Agreement
Please read the General License Agreement (included below) for information on
how to obtain the software.
Under Development
~~~~~ ~~~~~~~~~~~
Depending on the level of interest in this software, I will continue work on:
DBW_ED3D a full 3-dimensional graphics editor (so you don't have to
mathematically specify the input file to RAY you can just
draw it).
DBW_FILM which creates a film loop of HAM images (so you can create
your own "juggler" type demos).
---- a version of the software using increased memory and floating
point co-processor.
---- maintenance and enhancements to the current package.
Background Information
~~~~~~~~~~ ~~~~~~~~~~~
The DBW_Render package uses an algorithm called Distributed Ray Tracing.
In addition to neatly solving the hidden surface problem, ray tracing
(in general) affords the opportunity for doing excellent (that is,
highly realistic) shading and illumination calculations.
This package is written in MANX-Aztec C and runs on any AMIGA system. The
RAY program knows how to create images composed of four primitive
geometric objects: spheres, parallelograms, triangles, and flat circular
rings (disks with holes in them). Some of the features of the program
are:
Determination of correct shadows cast by arbitrarily shaped objects,
onto arbitrarily shaped objects, due to arbitrarily placed light
sources.
Diffuse and specular reflections (with arbitrary levels of gloss or
polish). Rudimentary modeling of object-to-object diffusely reflected
light is also implemented, that among other things accurately simulates
color bleed effects from adjacent contrasting colored objects.
Mirror reflections, including varying levels of mirror smoothness
or perfection.
Refraction and translucency (which is akin to variable microscopic
smoothness, like the surface of etched glass).
Two types of light sources: purely directional (parallel rays from
infinity) of constant intensity, and spherical sources (like light
bulbs, which cast penumbral shadows as a function of radius and
distance) where intensity is determined by the inverse square law.
Photographic depth-of-field. That is, the virtual camera may be
focused on a particular object in the scene, and the virtual
camera's aperture can be manipulated to affect the sharpness of
foreground and background objects.
Solid texturing. Normally, a particular object (say a sphere) is
considered to have constant properties (like color) over the entire
surface of the object, often resulting in fake looking objects.
Solid texturing is a way to algorithmically change the surface
properties of an object (thus the entire surface area is no longer of
constant nature) to try and model some real world material.
Currently the program has built in rules for modelling wood, marble,
bricks, snow covered scenes, water (with arbitrary wave sources),
plus more abstract things like color blend functions.
Fractals. The program implements what's known as recursive triangle
subdivision, which creates all manners of natural looking surface
shapes (like broken rock, mountains, etc.). The character of the
fractal surface (degree of detail, roughness, etc.) is controlled by
parameters fed to the program.
AI heuristics to complete computation of a scene within a user
specified length of time.
When the RAY program runs, it reads a sort of command file, that contains a
geometric description of the scene to be rendered, plus desired global lighting
conditions, camera parameters, etc. Then the program computes for a long
time, writing each scan line to disk as it computes it. The format of a
scanline (in the .TMP) file is:
<line number> - 2 bytes long
<red pixels> - 160 bytes long (4 bits per pixel)
<green pixels> - 160 bytes long
<blue pixels> - 160 bytes long
For an entire screen (400 scan lines) this file is 192,800 bytes. A second
program is run (RAY2) to obtain one of three possible output files:
4096 colors (HAM) encoded interlaced 320x400 resolution
32 colors interlaced 320x400 resolution
32 colors 320x200 resolution
All of the file formats are standard IFF/ILBM and may be displayed by the
supplied DISPLAY program. In addition, the last version (320x200) may be
edited by any standard graphic package (e.g., DPaint). Others may be
able to handle the more complex first two.
In all, the DBW_Render package represents about 4000 lines of C code.
It is largely based on original algorithms for the VAX by Tom Dahl and
Tone Engel at Digital Equipment Corporation. The AMIGA version has taken
several months to create.
General Public License
~~~~~~~ ~~~~~~ ~~~~~~~
DBW_RENDER GENERAL PUBLIC LICENSE
Copyright (C) 1987 David B. Wecker
Everyone is permitted to copy and distribute verbatim copies
of this license, but changing it is not allowed.
COPYING POLICIES
1. You may copy and distribute verbatim copies of DBW_Render source
code as you receive it, in any medium, provided that you conspicuously
and appropriately publish on each file a valid copyright notice such
as "Copyright (C) 1987 David B. Wecker", containing the year of last
change and name of copyright holder for the file in question; keep
intact the notices on all files that refer to this License Agreement
and to the absence of any warranty; and give any other recipients of
the DBW_Render program a copy of this License Agreement along with
the program.
2. You may modify your copy or copies of DBW_Render source code or any
portion of it, and copy and distribute such modifications under the
terms of Paragraph 1 above, provided that you also do the following:
a) cause the modified files to carry prominent notices stating
who last changed such files and the date of any change; and
b) cause the whole of any work that you distribute or publish,
that in whole or in part contains or is a derivative of DBW_Render
or any part thereof, to be freely distributed and licensed to all
third parties on terms identical to those contained in this License
Agreement (except that you may choose to grant more extensive warranty
protection to third parties, at your option).
c) cause modified programs when started running in the simplest and
usual way, to print an announcement including a valid copyright
notice ("Copyright (C)", the year of authorship, and all copyright
owners' names).
3. You may copy and distribute DBW_Render or any portion of it in
compiled, executable or object code form under the terms of Paragraphs
1 and 2 above provided that you do the following:
a) cause each such copy of DBW_Render to be accompanied by the
corresponding machine-readable source code; or
b) cause each such copy of DBW_Render to be accompanied by all
documentation along with a copy of this General Public License
(which should be referred to explicitly in the documentation).
4. You may not copy, sublicense, distribute or transfer DBW_Render
except as expressly provided under this License Agreement. Any attempt
otherwise to copy, sublicense, distribute or transfer DBW_Render is
void and your rights to use DBW_Render under this License agreement
shall be automatically terminated. However, parties who have received
computer software programs from you with this License Agreement will
not have their licenses terminated so long as such parties remain in
full compliance.
CONTRIBUITIONS
1. All contributions will be used for program maintenance, development
and distribution.
2. Any user who sends a contribution to David B. Wecker (hereafter
referred to as "the original author") will be added to a distribution
list of registered users. This distribution list will be used for
mailings of bug fixes, enhancements and announcements of future
software.
3. This package may be obtained from the original author for a
(suggested) contribution of $18.00 (in North America), please increase
accordingly for over-seas orders. This will register you as a user,
and will add you to the distribution list.
4. If copies are obtained from other than the original author, a
(suggested) contribution of $10.00 should be sent to the original
author to insure continued maintenance (and adding yourself to the
distribution list).
NO WARRANTY
BECAUSE DBW_RENDER IS LICENSED FREE OF CHARGE, WE PROVIDE ABSOLUTELY
NO WARRANTY, TO THE EXTENT PERMITTED BY APPLICABLE STATE LAW. EXCEPT
WHEN OTHERWISE STATED IN WRITING, DAVID B. WECKER AND/OR OTHER PARTIES
PROVIDE DBW_RENDER "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH
YOU. SHOULD THE DBW_RENDER PROGRAMS PROVE DEFECTIVE, YOU ASSUME THE COST
OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW WILL DAVID B. WECKER,
AND/OR ANY OTHER PARTY WHO MAY MODIFY AND REDISTRIBUTE DBW_RENDER AS
PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY LOST
PROFITS, LOST MONIES, OR OTHER SPECIAL, INCIDENTAL OR CONSEQUENTIAL
DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE (INCLUDING BUT NOT
LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES
SUSTAINED BY THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH
PROGRAMS NOT DISTRIBUTED BY DAVID B. WECKER.) THE PROGRAM,
EVEN IF YOU HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR FOR
ANY CLAIM BY ANY OTHER PARTY.
Your comments and suggestions about the licensing policies and the
software are welcome! Please contact:
Dave B. Wecker
115 Palm Springs Drive
Colorado Springs, CO 80908
ARPA: wecker%cookie.dec.com@decwrl.dec.com
USENET: decwrl.dec.com!cookie.dec.com!wecker