OverView

The PlayStation 3 uses a new processor called the Cell Broadband Engine, developed by IBM. We are designing a software application to run on the PlayStation 3 that utilizes the computational performance-enhancing features of the Cell Broadband Engine for the purposes of ray tracing.

Our client, Dr. Joseph Zambreno, is interested in achieving a real-time Ray Tracing Graphics application on the PlayStation 3. Traditionally, Ray Tracing is a very computationally intensive process, often requiring highly parallelized supercomputers or clusters for real-time interactivity.

Implementing inter-active Ray Tracing on the Cell architecture used in the PS3 is an area of limited research so far, and it is believed there is room for more improvement in the detail and number of features implemented, the speed of interaction and frame rate of image generation, as well as the scalability of such applications through clustering.

There is also room for taking greater advantage of the parallelism inherent in the Cell's multiple SPE (Synergistic Processing Element) design, and SIMD (Single Instruction Multiple Data) vector handling.

Our client's goal is for us to implement a well-featured interactive Ray Tracer for Linux on the PS3. This includes producing a working end program, efficient source code for future development, and complete documentation. It is also desired to make it scalable to multiple PS3s, and potentially publish work in an academic journal.

We will be approaching the problem first through research, implementing a prototype, studying the Cell Architecture, and use the Cell SDK to produce modular code for a Ray Tracer. We will then iteratively add in complexity  for approximately one third of the available time, and at the end work through testing, optimization, documentation, and adding additional features.

System

The purpose of the program is to take a model file into the PPE and divide its ray tracings into each SPE for side-by-side runtime. The PPE and SPEs use real-time interactive ray tracing algorithms to generate output which is sent to the frame buffer for viewing. When a new model file is loaded, or the camera angle has changed, the algorithm must be run again with a new origin for the tracing rays. The generated image uses shadows, refraction, reflection, and illumination to simulate life-like scenes.