the most appropriate block size. More precisely an 
error metric is used on the recursive walk made on 
the quadtree to decide the most appropriate block 
size for each region of the terrain. Higher levels of 
the quadtree represent larger areas of the terrain with 
lower detail. Lower levels of the quadtree represent 
smaller areas of the terrain with greater detail. This 
works recursively from the root node of the quadtree 
to the leaf nodes where the underlying resolution of 
the terrain is matched. In this method the number of 
draw calls depends not only on the point of view but 
also on the error metric. Also, a block can have 
neighbours with different sizes, making any possible 
correlation between blocks difficult to achieve. 
4 UNIFYING THE APPROACHES 
Making a comparison between these two approaches 
will be surely flawed if they are seen as completely 
different. The common point here is the underlying 
spatial partitioning structure, the quadtree. With that 
in mind we can differentiate the two methods by 
assuming that each one represents a different way of 
making the recursive walk on the quadtree. With a 
block based simplification scheme the quadtree is 
used only to identify the visible blocks, i.e. blocks 
that are intersected or are contained in the frustum. 
No level of detail is calculated at this stage and all 
these blocks are at the same level in the quadtree as 
they have the same block size. Therefore one 
possible optimization is to stop the recursion sooner, 
when we reach a node that is completely contained 
in the frustum even if the resolution of that node 
does not match the desired block size. For example, 
if the first quadrant of the first level of the quadtree 
is completely contained in the frustum, we can stop 
the recursion for that branch adding all the blocks of 
the desired block size that are contained in this 
larger block. Finally for each one of these blocks we 
have to choose the most appropriate level of detail 
basing our decision on the error metric. With 
quadtree based simplification the main difference 
lies on the recursion which can stop sooner because 
the level of detail evaluation is done for each node 
of the quadtree so it is possible to choose larger 
blocks and render them. These larger blocks have 
the same number of vertices but the space between 
those vertices is greater.  
To unify this approaches even further we take 
advantage of a very useful property in a regular grid 
triangulation: every block can be described by a 
scale and a translation factor. To make this property 
useful we have to separate the elevation values from 
the geometric description of the block. This is 
achieved with two vertex streams. A vertex stream is 
essentially an array of vertex component data. For 
instance it is possible to assemble vertices from 
several vertex streams, where each stream consists 
of a component of the vertex (e.g., one stream 
contains position info, another contains colour info, 
another texture coordinate info, etc.). In our 
approach the first stream contains the position of the 
vertices and the second stream contains the elevation 
values. Since we use canonical values for the 
position of the vertices this vertex data is valid for 
all the blocks of the terrain. Later when rendering, 
we transform the canonical values in the vertex 
shader to obtain the correct position of the block. 
For that we only need a couple of uniform shader 
parameters, in this case, the scale and the translation 
associated with each block.  
The main advantage of a multi-stream approach 
is that it enables us to use vertex textures in 
machines that support shader model 3.0. In this case, 
the memory requirements are reduced since we only 
need one stream with the geometric description of 
the block because the elevation data is stored on a 
texture. Without vertex textures we need to send the 
elevation values in a second stream.  
To connect the vertices in a block we need a list 
of indices, however this list is different in each 
method. With quadtree based simplification we only 
need to describe a block since in this method the 
geometrical structure of the block does not change, 
only the area that it occupies. With block based 
simplification we need to represent all the possible 
levels of detail of a block. For example if we have a 
5x5 block, like the one used in the previous figures, 
we need to represent a 5x5, a 3x3 and 2x2 block. 
This is done with different sequences of indices each 
one representing one of the aforementioned levels of 
detail.  
5 ERROR METRIC 
The error metric has a very important role to fulfil in 
tiled block algorithms as it is used to decide when 
the transition to lower/higher detail levels happens. 
With block based simplification it is used to control 
the level of detail of the block, i.e., when a 
higher/lower detailed version of the block should be 
used to represent the associated region on the terrain. 
With quadtree based simplification it is used to 
decide the number of blocks that should represent a 
region of the terrain, more precisely when a block 
can be substituted by its four more detailed children 
 
BLOCK AND QUADTREE BASED SIMPLIFICATION IN TILED BLOCKS TERRAIN ALGORITHMS
207