126 lines
4.4 KiB
HTML
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>
|
|
|
|
<a class="link" href="index.html#code">Code</a>
|
|
|
|
<a class="link" href="design.html">Design Document</a>
|
|
|
|
<a class="link" href="index.html#screenshots">Screenshots</a>
|
|
|
|
<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>
|