	BACKLIGHT Relativistic Raytracer v2.9
	COPYRIGHT (C) ANTONY SEARLE 1997-1999
        www.anu.edu.au/Physics/Searle
              <Win32 Release 1>

[ This documentation is not complete. Due to the currently
  small user base, interaction with the author is encouraged,
  so that a FAQ can be written, and relevant problems ironed
  out. Please send your questions using the e-mail address on 
  the BACKLIGHT website (see above)	]

- INTRODUCTION ------------------------------------------------

Thank you for downloading the BACKLIGHT Relativistic Raytracer.
This program will allow you to produce relativistically correct
images, demonstrating the effects of special relativity, using
a photorealistic raytracing algorithm.

- INSTRUCTIONS ------------------------------------------------

To run a scene file, change to the directory containing the
file "backlight.exe" and type

backlight scene.srs

where scene.srs is desired scene file. The rendering parameters
are contained within the .srs file. The output will be a 32 bit
TARGA format file, of the form name.tga or name####.tga 
where "name" is defined in the .srs file (it is usually the
name of the scene file). If more than one image is produced,
there will be a 4 digit number in the filename. Most viewers
will accept the .tga format; an excellent image editor is Paint
Shop Pro, shareware from www.jasc.com.

- OTHER OPERATING SYSTEMS -------------------------------------

As the source code is portable, BACKLIGHT should compile on
UNIX or any system supporting C++.

- WRITING SCENES ----------------------------------------------

In BACKLIGHT, a number of inertial frames are defined against
a fiducial reference frame. Each frame has a velocity defined
relative to the fiducial frame. In a frame may exist any
number of cameras, light_sources and primitives or CSG 
structures. To learn to write scenes, read the POV-Ray
documentation (see below), and consult the sample scene files 
(*.srs) included in the distribution. Check the web site for
more information as the user base grows.

Special Relativity Scene files (.srs) are simple text files, so
use your favorite editor.

- COMPARING WITH POV-RAY --------------------------------------

SIMILARITIES TO POV-RAY:
BACKLIGHT is similar to POV-Ray, the Persistence of Vision
raytracer (but is not a modified version of POV-Ray - see
Legal.txt). It uses a derivative of the POV-Ray Scene 
Description Language (SDL), and has been designed to "feel"
like earlier (command-line) versions of POV-Ray. POV-Ray is
a supurb and free non-relativistic raytracer, available at
www.povray.org. Consulting the POV-Ray documentation will help
you understand the scene language used by BACKLIGHT, and
POV-Ray provides an excellent testing ground for designing
onbjects to use in BACKLIGHT. Note that I am not in any way 
affiliated with the POV-ray team, and under no circumstances 
send anything but purely POV-ray questions to the POV-ray web 
site.

DIFFERENCES TO POV-RAY
Many of the more advanced features of POV-Ray, like procedural
texturing, and the more complex primitives are missing from
BACKLIGHT. Also, the clockk variable and functions are not
present. They are not necessary as for relativistic raytracing
the scene must be specified over time as well as space - it
cannot change in the progress of animations.

DIFFERENCES TO THE POV-RAY LANGUAGE
keywords.h contains a complete list of all the keywords and 
symbols that BACKLIGHT can or will repond to.

Statements like 

Width  = 320
Height = 240

are expected in the scene itself, not in an .inc file


All objects (cameras, lights, CSG, primitives) must lie inside 
this statement

frame {
	velocity < #, #, # >
	.
	.
	.
	}

Frames can be nested; in this case the velocity is relaive to
the parent frame.


Camera locations also have a time, so a simple camera is

	camera {
		location < 1, 2, 3 >, 0
		look_at < 0, 0, 0 >
		}

Cameras can alo have a velocity (which is defined RELATIVE to
the frame in which the camera is placed). Unlike POV-Ray,
multiple cameras are allowed in a scene, and a simple animation
can be produced by copy-pasting in many camera statements and
incrementing their times. As the scene must be defined over
all time (as well as all space like POV-Ray) there is no clock
variable


Textures have an additional drift keyword, which effectively
defines a phase drift with time, so that

	pigment {
		image_map {
			tga "texture.tga"
			map_type 0
			drift < 1, 0 >
			}
		}

creates an ordinary planar texture map that slides across a 
surface along the texture's u axis. Used cleverly, the drifts 
can be used to create digital clocks, flashing lights, rotating
light beams...
Textures can only be given in 32 bit .tga format. These can be
produced in Paint Shop Pro (www.jasc.com) by saving the desired
mask to an alpha channel of an uncompressed 24 bit tga file.


light_sources can contain the additional switch 

lens_flare #

to produce a lens flare. The form of the lens flare can be 
altered by changing LensFlare.tga

- KNOWN BUGS --------------------------------------------------

When taking differences or intersections of unions, internal
surfaces can be incorrectly visible. This can be worked around
by replacing the unions with merges.

The reflection system is currently untested, and the refraction
system not implemented.

smooth_triangles self-shadow (!)

---------------------------------------------------------------
		
Antony Searle 11/1/1999
Student at the
Department of Physics and Theoretical Physics
Faculty of Science
Australian National University
