Game Development Reference
Figure 3.2. (a) Cracking between adjacent tiles with different geometric LODs (exagger-
ated for clarity). (b) An alpha mask that is white where tiles are rendered. (c) Cracks
are detected using the alpha mask, and filled using a Gaussian blur.
techniques involve matching vertices in adjacent tiles by marking triangles that
overlap a boundary as restricted during decimation [Erikson et al. 01].
Instead of filling cracks geometrically, we fill them in screen space. Cracks need
to be filled with something plausible, but not necessarily extra geometry. To shade
a fragment in a crack, we use a Gaussian blur that only includes samples from
surrounding fragments not in the crack. The result is visually plausible, simple
to implement, and well-suited to WebGL since it requires no extra geometry and
is light on the CPU.
In the first rendering pass, each tile's color is rendered, and the alpha channel
is set to 1 . 0. As shown in Figure 3.2(b), the alpha mask is 1 . 0 where tiles were
rendered, and 0 . 0incracksandthesky.
To fill the cracks, a bounding sphere encompassing the ellipsoid is projected
into screen space, and the bounding rectangle is found to reduce fragment work-