Primer: Scene Graphs Explained
Extensibility
Even the most thorough design will fail to deliver all features needed for all applications. When that condition arises, a good scene graph system should be extensible by the developer. Developers should be able to easily add their own "draw code" to support a specialized primitive that is not part of the scene graph system. Having access to the source code for the broader scene graph system is of enormous benefit to the developer that wishes to extend the base system with custom code. Extensions may also include access to platform-dependent features.
Meets Applications Needs
This is where the duct tape test becomes crucial, as developers stretch and bend the system in ways not anticipated by the design. We'll focus on one conceptually simple but powerful feature, multipass rendering. Multipass rendering refers to the process of having the scene graph system make multiple passes through the scene graph, rendering the same or different portions of the scene graph using different rendering parameters.
A good use for multipass rendering is for creating images of scenes that contain both transparent and opaque objects. In the first rendering pass, all the opaque objects are drawn using the usual z-buffer depth test. Then, in the second rendering pass, only transparent objects are rendered. During rasterization of transparent objects, a pixel is drawn if its z-value is less than the value of the depth buffer. Instead of writing the pixel's color into the framebuffer, the color is instead blended with the existing color in the framebuffer. The transparent objects must first be sorted in back-to-front order so that the blending is correct, since the blending operation does not commute.
Scenes consisting of arbitrary 2D and 3D components are likewise well-suited for deployment in a scene graph that supports configurable multipass rendering. A heads-up display, or instrument panel, can be inexpensively drawn as 2D objects on top of a 3D scene. Stereoscopic rendering consists of a left-eye and right-eye channel, and a stereo camera should be part of all scene graph systems.
A slightly different use of multipass rendering is to have the results of rendering used as input for some other rendering. Shadow algorithms render the scene from the position of the light, then use the depth buffer from that image as a luminance map in a subsequent rendering operation. Rendering of extremely complex 3D scenes in which only a small portion of the scene changes between frames can be accelerated by saving the depth and color buffers from a rendering that does not include the part that changes, then reusing them in later frames, drawing only the part of the scene that changes. Some scene graph systems allow applications to specify a background depth and framebuffer image to load prior to rendering, thereby providing a framework for implementing inter-frame, as well as intra-frame, multipass rendering.
- Second Hand Smoke - Gizmo Fever
- Leadtek WinFast GeForce 256 DDR Review
- Tom's Blurb: Thoughts to the Turn of the Millennium
- AMD's Super Bypass - AMD Improves their 750 Chipset
- Micron's Upcoming Samurai DDR Chipset - First Looks
- The RDRAM Avenger - Intel's i840 Chipset
- Second Hand Smoke - Paper 3D
- Bottlenecks inside and outside of the box
- Intel's New CC820 Motherboard Review
- COMDEX Fall 1999: Wow! The Comdex winner for me
- Widescreen Laserdiscs and 16X9 HDTVs
- RSTX-60 Toshiba NEtworking
- Flash memory in Hybrid hard drives *save* power
- Is ReplayTV's ethernet ability 2 way?
- Sales tax via online?
- Help needed for networking
- $134 For New Power Supply!
- Greenhill Cable Test Primer
- Surround Sound - an Indepth Primer and technical reference
- Primer for high impedence systems ?