Game Development Reference
In-Depth Information
Figure 1.9. Examples of a single viewable region through various stages of the LOD
transition. All of the morphing factors ( T L ,T T ,T R ,T B ,T C ), for this diagram, are set to
0.0 on the left and increase up to 1.0 on the right in increments of 0.2.
used with each viewable region when calculating the morphing factors for
Boundary Case 2, based on the relative quadrant code for the viewable
region.
The various morphing stages of a single visible region are shown in Figure 1.9.
As a result of how the morphing quadrilateral boundary points are calculated,
neighboring visible regions share adjacent boundary points. This results in no
cracks or seams when rendering, and smooth transitions when moving through
a scene. Figure 1.10 s hows examples of rendered viewable regions without (see
Figure 1.10(a) ) and with (see Figure 1.10(b) ) the LOD Transition Algorithm in
effect. Notice the T-junctions and visible transition boundaries that are prevalent
1.2.5
Procedural Height Generation Algorithm
Any number of methods can be used in conjunction with the subdivision algo-
rithm described in this paper. We chose to base ours on the “Ridged Multifractal
Terrain Model” algorithm described by F. Kenton Musgrave [Ebert et al. 98].
The use of this procedural algorithm for us resulted in highly detailed and
realistic terrain, as seen in our demo video below. The adaptive nature of the
algorithm effectively eliminated high-frequency noise or aliasing and fit quite
nicely with our LOD Transition Algorithm. We used a tileable noise texture
when the “Ridged Multifractal Terrain Model” algorithm called for a noise value,
with several optimizations to speed up the height and surface normal calculations.
The height is calculated at each of the visible region quadrilateral boundary
points, resulting in displaced geometry when rendering (see Figure 1.11(c) ) . We
calculate the surface normals on a per pixel basis to achieve even greater surface
detail (see Figure 1.11(d) ) .
This portion of the algorithm quickly became one of the bottlenecks that
reduced frame rates. The desire to attain higher levels of detail meant that we
needed to come up with some optimizations to facilitate faster rendering. We
were able to utilize three main optimizations that enabled us to greatly reduce
the cost involved in our use of this algorithm.