[comp.sys.amiga] RAY TRACER V1.0 AVAILABLE

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