3D Engine Design for Virtual Globes (ISBN: 9781568817118) is a 520-page programming book about rendering algorithms utilized by virtual globes softwares like Google Earth or Microsoft Bing Maps 3D. The huge amount of data required by virtual globes softwares (according to this paper –page 10, Google Earth and Google Maps used in 2006 approximately 70 terabytes of data) involves facing serveral challenges like managing massive datasets, multi-threading or precision and accuracy.
If you’re an OpenGL developer, you gonna love this book. The engine design presented in this book is based on OpenGL. Actually, all the code is based on OpenGL 3.3 with core profile.
This book is really pragmatic and provides many tips, notes or try-this like this one:
All concepts and algorithms are clearly explained and a lot of code snippets (in C# and GLSL), most of time fully functional, are available:
This book is focused on virtual globes problems, but if you’re interested by general 3D engine design (for gaming or other kind of applications), this book is also very good resource. Chapters like Renderer Design (p.41 to p.120) or the one about exploiting the parallelism of modern CPUs and GPUs (p.275 to p.304) present enough general notions and ideas that can be used to update your existing 3D gaming engine or help you to design a new versatile engine.
Here is the detailed table of contents:
The rear side of the book:
Patrick Cozzi and Kevin Ring, the authors of this nice book, have done a very good job and from now, I keep it on my desk, with my other OpenGL books. A great resource!
Cool! I have always wanted to know how Google Earth works…
I wonder if id Software’s Rage uses similar technology to render the high resolution virtual textures in the game.
The book is really great!
This is the first book of that kind. It covers all important aspects of large terrain rendering and presents excellent foundation for further research.
The full source code is also available for download.
But I don’t understand why did you have to take photos of the pages when TOC and some of the chapters can be downloaded from the site:
http://www.virtualglobebook.com/index.html
? 🙂
Leith, id’s MegaTextures are similar to what is used for high resolution imagery in virtual globes, except MegaTextures are much more general and work with arbitrary surfaces AFAIK. In virtual globes, we usually have a really big image that we want to wrap around an ellipsoid (or sphere) with displacements for terrain. The image is recursively divided into four, quad-tree style and streamed using out-of-core rendering. id also has some interesting work where they minimize seek times for streaming from hard drives and DVDs. I’m not sure if any virtual globes are doing this, but virtual globes usually rely on beefy back-end technology to meet the bandwidth requirements.
Patrick
Well, you won’t learn how Google Earth works exactly. The book gives an overview of some state-of-the-art algorithms, but the implementation of Google Earth is still (and probably will be) a proprietary. If I remember correctly, Rage uses some kind of ray-casting for terrain rendering…
This article, How Google Earth [Really] Works may be interesting to some.
Thanks Patrick!
This link is (also) available from your blog-site. 🙂
That article was posted on July 3rd, 2007, and even then avi said that:
“Big Caveat: the Google Earth code base has probably been rewritten several times since I was involved with Keyhole and perhaps even after these patents were submitted. Suffice it to say, the latest implementations may have changed significantly. And even my explanations are going to be so broad (and potentially out-dated) that no one should use this article as the basis for anything except intellectual curiosity and understanding.”
Please, don’t misunderstand what I wrote. I just wanted to say that the book is not about Google Earth, but gives very comprehensive overview of techniques used to implement virtual globes.
Yeap, exactly Aleksandar.
I am seriously considering purchasing this book (or putting in a request for our university library to order it).
There are some really cool public domain high resolution DEMs and aerial photography for parts of New Zealand that I have always wanted to convert into a cool demo.
Also my current project on modelling cell phone networks would look really cool overlaid onto a 3D map…
Also quick question: is there any use of OpenGL 4 tessellation to accelerate the DEM mesh rendering?
Leith, we did not use any OpenGL 4 features. I started the engine in late 2009. I was using OpenGL 3.1 at the time. Later, I upgraded the engine to GL 3.3 to use separate sampler objects. GL 4 and tessellation shaders came out while we were mid-stride so we weren’t able to include them.
Off the top of my head, I think tessellation shaders have limited use for rendering real terrain datasets. However, they are great for synthesizing detail after your highest resolution terrain, or perhaps while you wait for the next highest resolution terrain to page in.
You may be interested in our example code (http://www.virtualglobebook.com/code.html) which includes a terrain engine using geometry clipmapping.
Or another piece of example code would be Celestia. It really has found a good approach to the range thing.
Celestia is Open Source.