reves home
accueil group research publications collaborations events gallery
 

Filtered Tilemaps (in Shader X6)

Charles River Media, page (to appear) - 2008

Tilings have several applications in Computer Graphics. They are used to progressively load large textures, only loading those tiles that are used by the current viewpoint. They are also used to generate large, non repeating textures from a small set of precomputed square tiles.

Unfortunately, tilings present difficulties when it comes to filtering (bi-linear interpolation and MIP-mapping). The discontinuities at tile boundaries hinder direct filtering by the graphics hardware. Often, proper filtering implies to re-implement tri-linear filtering in the fragment program. This results in long shaders and possibly rendering artefacts. Moreover this hinders the use of anisotropic filtering which is crucial for terrain rendering.

In this article, we will start by explaining the difficulties associated with rendering tilings. After a brief overview of existing methods, we will present a simple yet generic approach to display properly filtered tilings. Our approach exploits the recently introduced DirectX 10 texture arrays (or their OpenGL equivalent). It is as simple as summing four natively filtered lookups. In the far distance - where multiple entries of the tile-map project into a same pixel - a coarse texture is used to filter the tile-map itself. Our approach supports anisotropic filtering.

Images and movies

 

See also

Download demo and source code here.

BibTex references

@InBook{Lef08,
  author       = "Lefebvre, Sylvain",
  title        = "Filtered Tilemaps (in Shader X6)",
  chapter      = ".",
  series       = "Shader X6",
  pages        = "(to appear)",
  year         = "2008",
  publisher    = "Charles River Media",
  url          = "http://www-sop.inria.fr/reves/Basilic/2008/Lef08"
}

Other publications in the database