Game Development Reference
In-Depth Information
Color
Fill cracks
Fill poles
Depth
Figure 3.1. Our globe rendering pipeline.
tion. As we continue down the tree, tiles remain 256
256 but cover a smaller
longitude-latitude extent, thus increasing their resolution. The extent of one of
the root's child tiles is
×
180 to 0 longitude and 0 to 90 ,andtheextentof
one of its grandchild tiles is
90 longitude and 45 to 90 latitude.
A 2D map can easily request tiles for rendering based on the visible longitude-
latitude extent clipped to the viewport, and the zoom level. In 3D, when tiles
are mapped onto a WGS84 ellipsoid representing the globe, more general HLOD
algorithms are used to select geometry, i.e., tessellated patches of the ellipsoid
at different resolutions, and imagery tiles to render based on the view parame-
ters and a pixel error tolerance. HLOD algorithms produce a set of tiles, both
geometry and texture, to be rendered for a given frame.
Our pipeline renders these tiles in the four steps shown in Figure 3.1. First,
tiles are rendered to the color buffer only; the depth test is disabled. Next, to
fill cracks between adjacent tiles with different geometric LODs, a screen-space
Gaussian blur is performed. A fragment is only blurred if it is part of a crack;
therefore, most fragments are not changed.
Next, since most map servers do not provide tiles near the poles, two viewport-
aligned quads are rendered, and masked and ray-casted to fill the holes in the
poles.
Finally, a depth-only pass renders a plane perpendicular to the near plane
that slices the globe at the horizon. A ray is traced through each fragment and
discarded if it does not intersect the globe's ellipsoid. The remaining fragment's
depth values are written, allowing later passes to draw vector data on the globe
without z-fighting or tessellation differences between tiles and vector data ren-
dering later.
Let's look these steps in more detail.
180 to
3.3
Filling Cracks in Screen Space
Cracks like those in Figure 3.2 occur in HLOD algorithms when two adjacent
tiles have different geometric LODs. Since the tile's tessellations are at different
resolutions, together they do not form a watertight mesh, and gaps are noticeable.
There are a wide array of geometric techniques for filling cracks. A key ob-
servation is that cracking artifacts need to be removed, but adjacent tiles don't
necessarily need to line up vertex-to-vertex. For example, in terrain rendering,
it is common to drop flanges, ribbons, or skirts vertically or at a slight angle
to minimize noticeable artifacts [Ulrich 02]. This, of course, requires creating
extra geometry and determining its length and orientation.
Other geometric
 
Search Nedrilad ::




Custom Search