FART Final Report

Project Description   Code   Design Document   Screenshots   Final Report

FART Final Report

Table of Contents

  1. The Problem
  2. Model
  3. Design
  4. Implementation
  5. Evaluation
  6. Future Work

The Problem

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 recursive acronym similar to GNU or LAME.

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.

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.

Model

I used an object-oriented model for the program. Each displayable scene object is represented by a C++ object which inherits from the Shape base-class, while light objects inherit from a base Light class.

Shape objects implement an intersect() method. Polymorphism is utilized so that when the scene attempts to intersect a Ray with a shape object, it does not need to know the actual type of shape object being intersected with.

The task distribution infrastructure is implemented in a class called distrib. 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.

Design

The design document for FART is available here.

Implementation

Evaluation

Future Work