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