gvsu/cs658/html/report.html
josh 9adc5a2136 working on report
git-svn-id: svn://anubis/gvsu@404 45c1a28c-8058-47b2-ae61-ca45b979098e
2009-04-15 22:40:52 +00:00

126 lines
4.4 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>FART Final Report</title>
<style type="text/css">
body {
margin: 0.2em 2ex;
background-color: #DEF;
}
.link {
padding: 0.2em 0.5ex;
text-decoration: none;
border: solid 1px black;
background-color: #CCC;
color: #000;
font-weight: bold;
}
.link:hover {
background-color: #999;
}
hr { margin: 2em auto; }
img { border-style: none; }
</style>
</head>
<body>
<h1 style="text-align:center">FART Final Report</h1>
<div style="text-align:center">
<a class="link" href="index.html#description">Project Description</a>
&nbsp;
<a class="link" href="index.html#code">Code</a>
&nbsp;
<a class="link" href="design.html">Design Document</a>
&nbsp;
<a class="link" href="index.html#screenshots">Screenshots</a>
&nbsp;
<a class="link" href="report.html">Final Report</a>
</div>
<hr/>
<h2>FART Final Report</h2>
<h4>Table of Contents</h4>
<ol>
<li><a href="#problem">The Problem</a></li>
<li><a href="#model">Model</a></li>
<li><a href="#design">Design</a></li>
<li><a href="#implementation">Implementation</a></li>
<li><a href="#evaluation">Evaluation</a></li>
<li><a href="#futurework">Future Work</a></li>
</ol>
<a name="problem" />
<h4>The Problem</h4>
<p>
FART is my semester project for the Computer Science 658 class
at Grand Valley State University.
My goal is for FART to be a distributed, fault-tolerant,
object-oriented raytracer.
The name is a
<a href="http://en.wikipedia.org/wiki/Recursive_acronym">recursive acronym</a>
similar to GNU or LAME.
</p>
<p>
The input to the program will be a scene description file.
Scene description files are structured ASCII documents.
The format is a hierarchical layout of scene options and elements.
After the scene file is parsed, the scene will be raytraced
(rendered) according to the render options.
Some of these options can be specified on the command line and
others can be specified in the scene description file.
When a given option can be specified both places, the command-line
options will override what is in the scene file.
</p>
<p>
Rendering can be done using the built-in task distribution
infrastructure.
Command-line options will be utilized to specify a "hosts file"
which can contain a list of hosts to use while rendering the scene.
The algorithm is fault-tolerant so that if any of the worker
nodes goes down the tasks can be reorganized so other nodes
complete what the faulty nodes did not.
</p>
<a name="model" />
<h4>Model</h4>
<p>
I used an object-oriented model for the program.
Each displayable scene object is represented by a C++ object
which inherits from the <tt>Shape</tt> base-class, while light objects
inherit from a base <tt>Light</tt> class.
</p>
<p>
<tt>Shape</tt> objects implement an <tt>intersect()</tt> method.
Polymorphism is utilized so that when the scene attempts to
intersect a <tt>Ray</tt> with a shape object, it does not need
to know the actual type of shape object being intersected with.
</p>
<p>
The task distribution infrastructure is implemented in a class
called <tt>distrib</tt>.
This package contains methods to start up a server thread, launch
slave processes on the worker nodes, and connect back from the
slave processes to the master server.
</p>
<a name="design" />
<h4>Design</h4>
<p>
The design document for FART is available
<a href="design.html">here</a>.
</p>
<a name="implementation" />
<h4>Implementation</h4>
<a name="evaluation" />
<h4>Evaluation</h4>
<a name="futurework" />
<h4>Future Work</h4>
</body>
</html>