working on report

git-svn-id: svn://anubis/gvsu@404 45c1a28c-8058-47b2-ae61-ca45b979098e
This commit is contained in:
josh 2009-04-15 22:40:52 +00:00
parent 0081edb738
commit 9adc5a2136

View File

@ -21,15 +21,6 @@
background-color: #999; background-color: #999;
} }
hr { margin: 2em auto; } hr { margin: 2em auto; }
tt {
display: block;
margin: 0.4em 0px;
padding: 0.1em 0.8ex;
background-color: #FFF;
border-style: dashed;
border-width: 1px;
border-color: #900;
}
img { border-style: none; } img { border-style: none; }
</style> </style>
</head> </head>
@ -50,5 +41,85 @@
<hr/> <hr/>
<h2>FART Final Report</h2> <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> </body>
</html> </html>