RD View

The RD (rendering description) system is a framework for creating and comparing rendering engines.

Motivation

A common exercise in many introductory computer graphics classes (at least in computer science departments) is the creation of a software renderer. This gives students an opportunity to put into practice the algorithms that they are learning. The development of the renderer usually continues through the entire length of the course.

Another common exercise is to use the renderer to create unique images which are shared with the rest of the class.

There are usually two unintended side-effects of this approach:

  1. Subtle implementation errors are usually not caught until the professor says "This doesn't look quite right." The student counters, "I spent hours on this. It works. Of course it's right." Since the scenes are unique, nothing short of a complete code review will reveal the truth.
  2. Scenes are usually hard-wired into the renderer or described using a data format of the student's design. This inhibts the sharing of real cool scenes and makes it difficult for a professor to provide standardized test cases as a debugging aid during development.

The RD system combats these problems by providing a standardized scene description language and an object oriented framework for parsing the language and creating a viewer.

Language

The RD scene description language draws heavily on Pixar's RenderMan for inspiration with a few elements of OpenGL thrown in. There is no shading language associated with RD. (Yet!) The language allows basic camera description, graphical object placement, surface material description, light placement, stored/instanced objects, and multiple images (animation).

A detailed description of the language is available.

Source

C++ source code is available for the RD parser and rendering framework. The parser is integrated into a program called rd_view which reads an RD scene description file and creates an image from it.

Using the source code requires access to the X window libraries. X is used solely to handle the vagaries of screen devices. X is not used to do any rendering. Backends for other windowing systems are under development. The source code also requires the use of the C++ STL, which is not usually a problem these days.

The code was designed for Linux systems, but is known to compile using Cygwin in a Windows environment.


Last modified: Fri Feb 21 14:13:41 CST 2014