Ray-Identification Renderer (Render)

Introduction

NASA's deep space imaging and Earth observation satellites have obtained multi-spectral data of Mars and Venus, as well as earth. Combining satellite imagery with terrain elevation data can produce intuitive, three-dimensional perspective views of the planetary surfaces. By generating these views in real-time, it is possible to conduct a "virtual flyby" of the planetary surface where scientists can interactively examine false color terrains from a variety of positions and orientations, supporting rapid exploration of large data sets. A parallel ray-identification algorithm distributes terrain data among processing nodes, decomposing via the natural data parallelism, and exploiting positional derivatives to vary rendering resolution. Together these techniques achieve several frames per second on gigabyte data sets, approaching the ten frames per second needed for real-time animation.

Platforms

This application was specifically written for a hypercube architecture, and has been adapted to the Intel Paragon mesh.

Source Code

RENDER consists of approximately 5,000 lines of C code including utilities such as the tiling program, and libraries. The RENDER code is a hybrid control and data parallel implementation of the ray identification rendering algorithm. A single gateway node manages a group of parallel rendering processes and begins by reading the initial data set. The initial read is followed by a read-render-write cycle for each of the subsequent view perspectives (frames). In this loop, the gateway inputs view perspective requests, directs rendering tasks to produce the view, collects rendered views from the group of rendering tasks, and outputs frames to either secondary storage or a HiPPi frame buffer. Thus, RENDER's input/output activity consists of a compulsory read of the initial data set, a series of reads of view coordinates, and corresponding writes of the rendered frames.

Libraries

A number of application-specific libraries are required by this application. The HMX library is necessary if output is to be routed over HiPPI connections for graphics output. A messager library is required for interactive mode.

Acknowledgements

This application was provided by Peggy Li at the Jet Propulsion Laboratory. It was developed by the Center for Space Microelectronics Technology, Jet Propulsion Laboratory, California Institute of Technology, and was jointly sponsored by the NASA High Performance Computing and Communication Program Earth and Space Science Project and the NASA Information Systems Office.

This research is supported in part by the  National Science Foundation.

back