|
|
|
Game Programming Gems 4
Edited by Andrew Kirmse, published 2004.
|
Poster Quality Screenshots
Abstract: In the promotion of any game, there will come a time when you need screenshots for advertisements, box covers, previews, strategy guides, magazine covers, and full-size posters. Unfortunately, raw screenshots are often inferior for many of these purposes. This article details a method by which screenshots can be improved in two main ways: by increasing the resolution and by increasing the pixel quality (anti-aliasing). This technique has been successfully used to generate shots as large as 19,200 x 14,400 at 100 samples per pixel on Nintendo GameCube hardware. However the technique is extremely general and applicable to any platform.
GPU Shadow Volume Construction for Nonclosed Meshes |  |
Abstract: This article presents a method of rendering shadow volumes without requiring a two-manifold, closed mesh.
Perspective Shadow Maps |  |
Abstract: Perspective shadow maps are very similar to standard shadow maps, but are distorted such that regions close to the camera have higher resolution than distant regions. This article describes the details of perspective shadow maps, demonstrates how they are generated, and discusses how typical pitfalls can be avoided.
Combined Depth and ID-Based Shadow Buffers |  |
Abstract: This article describes a hybrid approach that combines the techniques of both depth and ID-based shadow buffers, exploiting the advantages of both methods. This approach allows for self-shadowing and supports up to 42,875 unique IDs.
Carving Static Shadows into Geometry
Abstract: This article describes a method of carving hard shadows directly into static geometry to create crisp, hard scene shadows that are consistent with the look of the stencil shadows typically used for characters. After the carving process, each resulting polygon is marked as either "in light" or "in shadow" for later rendering. This saves the overhead of rendering full shadow volumes for every detail in a scene, resulting in significant fill-rate savings. Additionally, we will briefly discuss how to dynamically cast shadows on moving objects using low-resolution proxy shadow volumes.
Adjusting Real-Time Lighting for Shadow Volumes and Optimized Meshes
Abstract: Lighting an entire mesh is well understood and presents no real, unexpected artifacts. However, when more complex rendering systems optimize the number of polygons being rendered, like backface-culling from the light's point of view, lighting artifacts are introduced. When culling is done based on face normals and lighting is done based on vertex normals, some adjustments are required. The same applies to self-shadowing meshes that use stencil shadow volumes, since the shadow volumes are extruded based on face normals. Additionally, bump mapping needs even further adjustment, because the normal has nothing to do with the geometric shape of the mesh. This article explores these problems and presents a solution that is accomplished entirely in the pixel shader.
Real-Time Halftoning: Fast and Simple Stylized Shading |  |
Abstract: This article introduces halftoning as a way of implementing nonphotorealistic rendering styles for computer games. The technique uses only the conventional multitexturing pipeline on common hardware. We show how to create halftone screens for images that resemble pen-and-ink drawing styles, and how to implement fast halftone rendering with modest pixel shading hardware.
Techniques to Apply Team Colors to 3D Models |  |
Abstract: Applying visually appealing team color to 3D models is an important technique in any game with multiple players, whether AI or human controlled. This article explores several techniques for applying team color to arbitrary 3D models. The implementation of each technique is carefully explained, and the benefits and drawbacks of each method are discussed. The techniques include Unique Textures, Polygon Tinting, Texture Masks via Multitexturing, Texture Masks via Multipass, and Advanced Texture Masks via Pixel Shaders.
Fast Sepia Tone Conversion
Abstract: Sepia tone is a color space that is used to give images an aged or antique feel. Color conversion from RGB to sepia has usually been performed by mapping an RGB color into a lookup table. Although this technique is simple and effective, we have found a simpler and faster way to perform the same conversion with just a few pixel shader instructions and no table lookup.
Dynamic Gamma Using Sampled Scene Luminance |  |
Abstract: The human eye constantly samples the brightness of available light and dialates the pupil in response. This variable sensitivity allows it to operate under a much wider range of lighting conditions from dark to bright. By sampling the frame buffer and adjusting the output gamma based on analysis of the data, the technique outlined in this article is able to simulate this type of variable sensitivity and make much better use of video's limited dynamic range. The same technique also allows the simulation of a number of visual phenomena that occur as the eye responds to changing, high dynamic range lighting.
Heat and Haze Post-Processing Effects
Abstract: This article focuses on reproducing the visual phenomenon of gaseous convection by approximating an image such that it looks visually convincing. This post-processing effect can be easily included at the end of just about any rendering pipeline, and can significantly enhance the final output by creating stunning visual effects with relatively little effort on the part of the programmer.
Hardware Skinning with Quaternions
Abstract: This article describes a technique for spherical joint blending with quaternions. This fast, accurate, and compact skinning solution keeps joints from collapsing, which is a common artifact with skinning techniques such as vertex blending.
Motion Capture Data Compression
Abstract: This article demonstrates a lossy compression system that was developed to improve memory usage for motion capture data. While the system has some features that take advantage of bone hierarchies, a more general solution can be used on any keyframed animation, such as prerecorded camera movements and hand-animated physics objects.
Fast Collision Detection for 3D Bones-Based Articulated Characters
Abstract: This article aims to give a practical, efficient implementation for collision detection with a bones-based character. Our implementation offers several advantages over techniques common in today's engines and leverages current infrastructure that is already needed for character animation.
Terrain Occlusion Culling with Horizons |  |
Abstract: This article describes an occlusion culling technique for outdoor scenes based on heightfield terrain geometry. Unlike other terrain occlusion culling techniques, it does not require expensive offline preprocessing, so it is able to adapt on the fly to dynamically changing terrain.
 |
|
|
 
|