|
|
Real-time Simulation and Stylized Rendering of Smoke
A series of papers describing methods for adding plausible,
interactive real-time smoke to video games. These include methods for
extending Selle, Mohr, and Chenny's cartoon smoke algorithm to
real-time performance; rendering with two-tone shading and
self-shadowing styles; and a simple method for animating smoke using a
rigid-body simulator.
The most sigificant contribution of this work may be extending shadow
volumes to work with bump maps to produce detailed shadow silhouettes
from low-polygon meshes, and idea not limited to smoke rendering.
|
|
|
Abstract Shade Trees
Conventional shade trees allow data flow programming of graphical effects. They are similar to wiring schematics. Abstract shade trees use a new "semantic type system" to power an easier-to-use programming model by abstracting most of the wires, leaving only simple connections. This enables non-programmers to create new 3D effects, which we demonstrate running on graphics hardware with comparable efficiency to hand-written code. |
|
|
The SuperShader
SuperShader renders surfaces with many of the effects used in next-generation game engines, and allows arbitrary combinations of those effects to be applied simultaneously. It uses run-time code generation to produce optimized shaders for each surface and a cache to re-use shaders from similar surfaces. |
|
|
A Heightfield on an Isometric Grid
The isometric heightfield is built on a hexagonal (isometric) grid instead of a traditional rectangular grid. This gives more accurate surface and smoother shading, normals, and curvature. We describe an implementation appropriate for real-time rendering of large and dynamic heightfields on programmable hardware. We derive algorithms for: sampling elevations between vertices, creating triangle strips, subsampled LOD, paging and texturing of square tiles, fast shadow volumes, fast computation of vertex normals. |
|
|
Steep Parallax Mapping
We propose a new bump mapping scheme that
can produce parallax, self-occlusion, and self-shadowing for
arbitrary bump maps yet is efficient enough for games when
implemented in a pixel shader and uses existing data formats.
The key idea is replacing the offset computation from Parallax Mapping
with a small, highly optimized ray-tracer. For the special (and
important!) case of bump maps, this ray tracer fits in three lines of
fragment shader code and uses fast tex2DLOD instructions instead of
regular texture reads.
|
|
|
Real-time Collision Deformations
We present a method for effiently generating plausible dents and scratches due to collisions using bump maps instead of mesh deformation. We use a rigid body simulator based on that of Guendelman et al. [2003], with collisions detected by interpenetration using the OPCODE and G3D libraries. When a collision occurs, we make multiple rendering passes to compute the bump map deformation on the GPU. Our method is limited by the dynamic range of the bump maps and will eventually saturate. |
|
|
Observations on Silhouette Sizes
There are many algorithms for discovering and rendering silhouettes (contours). This paper gives theoretical and practical bounds on the number of contour edges as a function of the number of faces in a model: as a rule of thumb, s appears to be generally proportional to f 0.8. The lower, upper, expected, and practical bounds are useful to theoretical analysis and constant tuning of contour-based algorithms (e.g. fur, NPR, and shadows). |
|
|
Hybrid Billboard Clouds for Model Simplication
Level of detail schemes decrease the cost of rendering a model, measured in vertex and fill (pixel) rate, while increasing the resulting image error. Billboard Clouds were introduced at SIGGRAPH 2003 for trading extreme vertex rate savings against moderate image error, but substantially increased fill rate cost. We extend billboard clouds to a hybrid model that combines regular polygons with alpha-matted billboards to simultaneously reduce vertex and fill rate, and produce less image error than billboards alone. |
|
|
Hardware Determined Edge Features
We introduce the edge mesh, a data structure that packs adjacency information into the attributes of a vertex buffer. Using the edge mesh, we compute silhouettes, contours, creases, valleys, and boundaries entirely on the vertex processor. We create stylized NPR renderings by applying stroke textures to thick quad-lines with mitered joins. The edge mesh can also be used for hardware-only shadow volumes and fur rendering. |
|
|
Effective Shadow Volume Rendering
Thoroughly covers the popular stencil shadow volume technique for rendering real-time shadowsq. Stencil shadow volumes, although often simple to implement initially, are notoriously difficult to make robust and fast. This chapter focuses on getting the corner cases right, and reducing the geometry and fillrate costs of the technique. This is an implementation-oriented description of the "Fast, Practical, and Robust Shadows" method described below. |
|
|
Using Graphics Hardware to Accelerate Progressive Refinement Radiosity
This report describes a method for implementing the "shooting" step of progresive refiement radiosity on programmable hardware. The method uses one rendering pass per hemicube face.
|
|
|
Fast, Practical, and Robust Shadows
We present a set of algorithms for rendering shadows using the stencil buffer and shadow volume geometry. It can achieve greater performance than previous methods by applying a series of techniques for culling, clipping, and simplifying shadow volume geometry. The performance of many 3D games is currently limited by pixel fill rate and can be accelerated using clipping and culling techniques. Scientific and engineering 3D applications can instead be performance limited by the hardware vertex processing rate and can be accelerated using the simplification methods.
|
|
|
Brown Mesh Set Project
The Brown Mesh Set is a library of 1,139 3D models downloaded from the internet. It is useful for testing the robustness of graphics algorithms and making generalizations about the models used in practice. The models are raw meshes with no animation or texture data that are stored in an easy-to-use indexed face set format (IFS).
|
|
|
The G3D Graphics Engine
We maintain the G3D C++
library as our research code base. It provides the common code for 3D
applications: window creation, 3D geometry, rendering, I/O, network
discovery and messaging. G3D is lower level than a game engine but
provides more flexibility.
G3D provides access to cutting edge graphics features like Vertex and
Pixel shaders and AGP Vertex Buffer Objects within an easy-to-use
framework. It runs on Windows, Linux, and OS X on any graphics card
and is used regularly by researchers, students, and game developers.
|
|
|
Rendering Quake 3 Maps
In order to accurately test new algorithms we work with data from
actual games. Many commercial games are built on the the Quake 3
engine and geometry in that format is readily available on the
internet, making a convenient test set.
This document describes how to render the basic geometry of a Quake 3
map using OpenGL. It describes how to texture and lightmap this
geometry, but does not describe how to render shaders, effects,
characters, or movers (elevators and doors).
|
We have written a number of articles related to games and games research:
You may also be interested in the Immune Attack and Borealis Game projects at Brown.Morgan McGuire, A Game Developer's Review of SIGGRAPH 2004. gamasutra, August 2004, http://www.gamasutra.com/features/20040830/mcguire_01.shtml
Morgan McGuire. Guide to Cg 1.1. graphics3d.com, Sept 10, 2003. http://graphics3d.com/guides/cg_1_1/index.html
Morgan McGuire. A Game Developer's Review of SIGGRAPH 2003. flipcode, July 2003, http://www.flipcode.com/misc/siggraph2003.shtml
Morgan McGuire. Rendering Quake 3 Maps. July 2003, http://www.cs.brown.edu/research/graphics/games/quake/quake3.html
Ben Landon. Pixel Shader 2.0 Example. flipcode, January 7, 2003, http://www.flipcode.com/articles/article_ps20tut.shtml
Morgan McGuire. A Game Developer's Review of SIGGRAPH 2002: San Antonio. flipcode, July 2002, http://www.flipcode.com/misc/siggraph2002.shtml
Morgan McGuire. A Game Developer's Perspective of SIGGRAPH 2001. flipcode, July 2001, http://www.flipcode.com/misc/siggraph2001.shtml
Morgan McGuire. A Game Developer's Review of SIGGRAPH 2000: New Orleans. flipcode, July 2000, http://www.flipcode.com/misc/siggraph2000.shtml
Morgan McGuire. Guide to Cg Runtime 1.0. graphics3d.com, June 21, 2002. http://graphics3d.com/guides/cg/index.html
Other games research groups:
Handy Open Source libraries for building games:
Game related data formats:
People
At Brown:
John F. Hughes
External:
Kevin Egan, RPI
Resources
Appropriate venues for games research:
Contact Us
For more information, please contact Morgan McGuire <morgan@cs.brown.edu>