PVR : The parallel volume rendering package

Project Overview

In order to achieve interactive volume rendering speeds we developed the PVR (Parallel Volume Rendering) system [4], which consists of a mix of modular C/Tcl/Tk code. With PVR it is possible to balance rendering efficiency, throughput, and latency over a large number of parallel machines configurations. It supports different rendering schemes and it can be easily augmented with others. PVR has unique capabilities: it can be used to build large and complex distributed visualization environments, and it lets the user control the rendering performance.

Specially important are the load balancing scheme and an efficient pipelined approach to compositing used in the PVR renderer [2]. It is based on a new model for measuring the amount of work one needs to perform in order to render a given volume, and use this model to obtain a better load balancing scheme for distributed memory machines. Both of these techniques were implemented and tested on the Intel iPSC/860 and the Intel Paragon and have been shown to be superior to current techniques.

PVR introduces a new level of interactivity to volume rendering. Larger DVEs (Distributed Visualization Environments) can be built on top of PVR, and yet be portable across several architectures. These DVEs that use PVR are given the opportunity to make effective use of available processing power (currently from a few to a few hundred processors), giving a range of cost/performance to end users. This is particularly important in the scientific research community, since most often the question is not “how fast, but how much”. PVR provides a strong foundation for building cost effective DVEs.

We are currently working on making the system stable enough for large scale availability. With that in mind we are currently working on creating a complete visualization tool (like VolVis [1]) on top of PVR. One of the challenges is how to integrate “resource allocation” and “admission control” in our DVE. Detailed documentation [3] of the complete system is currently under preparation.


PVR in a nutshell

PVR Status

Currently under development (25,000+ lines of code). Have demonstrated the ability to render a 500 million voxel data set on the Intel Paragon using about 350 nodes — once the data is loaded, a 120 frame animation can be computed in about 5 minutes.


Most of the PVR documentation is at least one and a half year old. A few papers are currently being written ([3], [5] and [6] below) and should be available soon. More papers are planned for the near future…

Source code availability

Currently access is limited. We expect to have a public release soon…

More Information