RAYversion 2.0
Distributed Ray Tracing
CS 542
Washington State University
Jason Jerald
Added Features
-
distributed ray tracing
-
anti-aliasing
-
reflection/refraction blurring
-
area lights (soft shadows)
-
motion blur
-
approximation to Poisson sampling
-
minor features
-
adaptive recursion
-
noise bug in reflections solved
-
pixel size
Comments
-
The image
-
the pixel size is set to 2 to allow perception of "jaggies" being antialiased.
-
the mirror shows reflection blurring, the red ball shows motion blur, the
blue ball emphasizes soft shadows, and the large checkered polygon emphasizes
anti-aliasing.
-
anti-aliasing is set to 9 rays per bundle with each sample in a range of
tan(0.0015)
-
the single area light consists of 25 samples with each sample in the range
of tan(0.35). These are the default value for all lights.
-
TIMESAMPLES has been set to 15 to blur the red sphere. The random time
parameter is evidently not uniform, thus resulting in discrete spheres.
A Poisson sampling should have been used as in the other ray bundles.
-
The code
-
Currently antialiasing is set to the same value for all objects as well
as the eye. This causes reflection blurring to be set to a constant which
is equal to the antialiasing of the eye. The correct angle between the
distributed rays can be difficult to find for the checkerboard perspective
problem.
-
The noise bug in the reflections was due to round off error. When the collision
of the ray and the nearest object was calculated any parametric value above
0 was considered an intersection. Unfortunately 0 was sometimes rounded
to be just above 0 thus causing an intersection with itself. This was not
happening in the shadow detection because objects are not checked against
itself
-
The user defined pixel size greatly improved the speed as well as the study
of anti-aliasing effects.
-
The adaptive recursion greatly speeded up rendering by only calculating
reflecting or refracting rays when the color would have a defined level
of impact.
-
All bundles allow for user defined size of samples and number of samples
which are n to the 2nd power where n is the number of rays in one row or
column. (i.e. 1, 4, 9, 16, etc.)
Previous Features
-
recursive ray tracing
-
procedural checkerboard texture maps
-
ambient, diffuse, and specular lighting
-
fog
-
Perspective viewpoint
-
multiple point lights
-
supports spheres, planes, and polygons of any number of vertices
-
reflections
-
transparency with the option of refraction
-
Windows95 compatiable
-
Windows code seperated to allow easy portability
Files
(set tab stop to 4 in order to view these files correctly)
-
Ray.exe Ray.exeThe executable file.
-
RayMath.hRayMath.cpp
These files contain the Vector and Matrix classes
-
RayGraphics.hRayGraphics.cpp
These files contain the classes Light, Color, and Eye
-
RayObjects.hRayObjects.cpp
These files contain the all geometric objects used in Ray
-
setup.hSetup.cpp These file
contains various constants to be used in Ray. Some commonly used function
prototypes are used in this file. Some externed variables are also included
so all files can access them.
-
World.cpp This file creates the lights and all
objects along with their parameters.
-
TraceRay.cpp contains code to determine the
coloring of a specified pixel.
-
rayView.cpp This is the main function which calls
all other functions. The windows code is also within this file. The windows
code has been seperated from the C++ Ray code as much as possible.
-
ray.rc windows resources to be used for the windows
graphical interface. Data includes Ray about (under help) as well as personalized
bitmaps used for the cursor and other icons.
-
miscellaneous windows files. Contact the arthor if you need these files
in order to compile the project (Some of these files are large).
Previous version
Ray Version 1.1