Tuesday, 8 March 2011

Geo-Mipmapping

Geo-Mipmapping is a GPU friendly technique to render huge landscapes in real time. The method is mainly used in games (CryEngine 2) and Google Earth seems to use a variant of the algorithm. It was introduced by W.H. de Boer in his article “Fast Terrain Rendering Using Geometrical MipMapping”. My implementation supports parallel generation of LOD patches and quad tree based frustum culling.
The demo program was written in the Go language. Go is a minimalistic programming language developed by some prominent Google employees (Ken Thomson, Rob Pike, ...). It has some unusual properties compared to other system programming languages like C, C++ or D:
  • Implicit interface inheritance: Go completely decouples interface definitions from their implementation. The Go inventors call it static duck typing.
  • Structural type system: Go doesn’t have classical type hierarchies. Types are just composed.
  • Built-in concurrency: The language uses goroutines and channels for concurrency (borrowed from T. Hoare’s CSP).
Go has still some rough edges but I think it fills a niche somewhere between high-level and low-level programming. In practise it feels like a hybrid of C and Python ;-)