Illuminating Micro Geometry based on Precomputed Visibility

Abstract

Many researchers have been arguing that geometry, bump maps, and BRDFs present a hierarchy of detail that should be exploited for efficient rendering purposes. In practice however, this is often not possible due to inconsistencies in the illumination for these different levels of detail. For example, while bump map rendering often only considers direct illumination and no shadows, geometry-based rendering and BRDFs will mostly also respect shadowing effects, and in many cases even indirect illumination caused by scattered light.
In this paper, we present an approach for overcoming these inconsistencies. We introduce an inexpensive method for consistently illuminating height fields and bump maps, as well as simulating BRDFs based on precomputed visibility information. With this information we can achieve a consistent illumination across the levels of detail.
The method we propose offers significant performance benefits over existing algorithms for computing the light scattering in height fields and for computing a sampled BRDF representation using a virtual gonioreflectometer. The performance can be further improved by utilizing graphics hardware, which then also allows for interactive display.
Finally, our method also approximates the changes in illumination when the height field, bump map, or BRDF is applied to a surface with a different curvature.

Note: All the following images/videos are gamma-corrected for SGI monitors and will probably appear too dark on a PC.

Motivation

The following two images show the same height field. On the left side only direct lighting and shadows were computed, whilst the right side also includes scattering. Notice how much impact the scattering has on the overall appearance.
Direct light and shadows Direct light, shadows and scattering



Precomputation of the Visibility Information

One of the key ideas of the paper is to precompute and store the visibility for a given data set.
We do this by casting rays from every point in the height field into a set of given sample directions and computing the intersections of these rays with the height field. All intersections for all points belonging to one of these sample directions are stored in one texture. As these intersection points are again points on the height fields, they can be characterized using the same parameterization as the height field itself.
Here's an example: given this height field
... a model of which might look like this...
.. we compute intersections for each point of the height field (each pixel in the first image) in a bunch of directions. All intersections for one direction are stored in a texture, an example of which is shown on the left.
As the intersection points are again points on the height field we can color code them using the two channels red and green. This image shows the color code we used to display the scattering texture above. Note that black points in the scattering texture mean that the given ray left the height field without intersecting it.
By chaining together the visibility information we can now generate a multitude of different light paths for computing indirect illumination in the height field. This way it is possible to implement variants of many existing Monte Carlo algorithms, using the precomputed data structures, instead of on-the-fly visibility computations. More detail on how to do this can be found in the paper.

Precomputation of the Visibility Information

Another important issue when computing the lighting in height fields is how to efficiently handle shadows. That means we would like to answer the following question:
Given a light direction is a certain point on the height field in shadow?
Let's take a look, though, at the information we already have in our scattering textures. For each point on the height field and a number of directions we know whether a given ray in this direction hits a part of the height field or not. If we project all the directions onto the tangent plane of the point in the height field we're currently looking at, we get points on the unit circle as shown in this image.

Blue points correspond to directions in which another part of the height field was hit, red ones correspond to misses. In other words: If the light direction were a blue point our given height field point would be in shadow, if it were a yellow point the height field point would be lit. If approximate the area of yellow points by an ellipse, similar to the one shown in the image, we can quickly perform a shadow essentially by computing an inside/outside test with an ellipse. This shadow test can be mapped quite easily onto current graphics hardware. More information can be found in the Tech Report LINK!!!
Using the scattering textures and shadows we can correctly illuminate a height field and compute BRDF samples in very short time (less than a second for one sample). The images below show a comparison of the illuminated height field geometry and the corresponding BRDF mapped onto the same base geometry. The geometry consists of a triangularly shaped height field in which half of the sides are red, the other half are white.
The two images at the top show the results for direct light only. Scattering is included in the two images at the bottom. The images are brighter and clearly show the color bleeding of the red faces onto the white ones.

Results of the Software Rendering

We implemented a shader which correctly accounts for self shadowing and internal scattering in height fields in a software renderer. Some of the result images are shown below.
Three spheres with a bump map consisting of half sphere shaped holes. The lower left sphere shows direct illumination and shadows computed by our ellipse approximation. The top sphere also includes scattering. The right sphere combines additionally looks up incoming light from an environment map.
A back yard scene in which nearly every surface is bumpmapped.



Change of Base Geometry

In the paper we also describe how to account for changes of the base geometry. This video displays the results. mpeg 

Hardware Rendering

Jan's project webpage on Shadow Bumpmaps is here
Last modified: Mon Feb 5 11:45:19 "MET 2001 by Katja Daubert