CS 180H Proposal
Spring 2014

Name: Aaron Jensen
Advisor: Dr. Pollett

Introduction:
    I would like to create a radiosity engine that utilizes CUDA programming for lighting calculations.
    The front end of the engine will accept text file descriptions of geometry and lighting from a text file. The output of the engine will be images, in either PNG or JPEG format. There are two secondary applications that will be developed: a simulator that will allow a user to freely walk through the created environment; and an optional simple overhead editor that will produce descriptions of geometry and lighting in text files for input into the engine.

Description:
    The first phase of the project will be building a working CPU-based radiosity engine that reads geometry and lighting descriptions from a text file. Geometry will be restricted to quadrilaterals. The file will contain two sections: LIGHTS {} and WALLS {}. Within each section will be a series of KEY : VALUE; pairs terminated by semicolons. Each KEY will be a unique name describing an object. Light and wall VALUES will be four xyz coordinates in counter clockwise order of the format (x0,y0,z0), (x1,y1,z1), (x2,y2,z2), (x3,y3,z3) followed by a fifth triplet defining its color in the format [r,g,b]. No transparency will be supported. These coordinates describe the bounds of a quadrilateral and it's normal. Initial output will be hard coded directly radiosity calculations complete and will be capable of displaying a scene from several fixed camera positions. While this phase is in progress, I will be learning the basics of CUDA programming.
    The second phase of the project will be a modification of the first phase. The radiosity engine will now save the output of the radiosity calculations in either PNG or JPEG format. The hard-coded viewer will be removed and replaced by a separate application that will load images to geometry defined by text the input file. This application will allow the user to walk through the scene. As with the first stage, I will be continuing to learn CUDA programming.
    The third phase of the project will be rewriting the radiosity engine in CUDA. Functionality should remain the same, but a performance increase should be seen.
    The fourth and final stage of the project includes stretch goals. The first is a simple overhead editor that can be used to generate text files for input to the radiosity engine. One proposed function is a random maze generator with random light and wall color placement. Collision detection in the simulator is another stretch goal. Others will be defined as time permits.

Expected Problems and Limitations:
    My primary concern is time management. However, school is and has been my first priority. I have been holding two jobs while going through college. For the past seven years I have been employed as a Worship Leader at a church, managing and running the contemporary music program. For the past three years, I have been working as an Android/Linux developer for a startup company developing a complete signage solution and supplement. While holding these jobs, I have been able to maintain a cumulative GPA of 3.822 and am scheduled to graduate May 2014 with a Bachelors in Computer Science and two minors: Mathematics and Electronics. I hope to overcome any issues that arise with time management through communication with Dr. Pollett on a weekly basis.