CS 497 JCH, Fall 2002
Prof. John C. Hart

Procedural Shading and
Modeling in Computer Graphics

 Call # 01822
3:30 - 4:45 p.m., Tu/Th
106B8 Engineering Hall

Especially with the recent programmable features of graphics hardware, procedural graphics has become quite popular. Unlike stored graphics, procedural models and textures can provide effectively infinite resolution and detail and can extend infinitely long in all dimensions, limited only by numerical precision and magnitude. Because procedural models and textures are generated, their algorithms are very compact, requiring the storage of a short machine-code program or even just a sequence of parameters, resulting in an effectively limitless number of different textures and models available to a given scene.

A wide variety of tools exist (or did at one time) to support procedural modeling and texturing, including Renderman , Exluna/BMRT (RIP), Mojoworld , OpenGL 2.0 , Cg , RenderMonkey, RTSL , and others. Unfortunately while each of these has benefits, they also have drawbacks. The Renderman Shading Language is currently the industry standard, but renderers are no longer freely available and it isn't the best choice for the real-time graphics used for games and environments. A large number of SDK's and languages have been developed for programming graphics accelerators, but these too have limitations, including the necessity of understanding the difference between a vertex shader and a pixel shader.

For the past ten years I have been creating a scene description language called Procedural Geometric Instancing. PGI is based on the scene graph found in most graphics libraries like VRML, Direct 3D and the ill-fated Farenheit, but has procedural extensions that allow it to generate some of the same models as L-systems. Over ten years of development has left our existing PGI renderer in a heap of kludges and spaghetti code. The new Texturing and Modeling book will have a chapter on PGI so we are using that book and this course as an opportunity to rewrite an updated version of PGI. The class projects will all be different components of the PGI renderer. Because we will all be working on different components of the same project, this will foster student collaboration instead of student competition. The result will also be something each student can point to, and each student will receive credit for their contribution to the PGI renderer.

Course Goals

Prerequisites

Projects

Outline

(The titles in bold are have restricted access. They can be accessed from PC's in the uiuc.edu domain, or through the library's proxy server.)


Books