15
\$\begingroup\$

I'm currently working on my master's thesis about LOD and mesh simplification, and I've been reading many academic papers and articles about the subject. However, I can't find enough information about how LOD is being used in modern games. I know many games use some sort of dynamic LOD for terrain, but what about elsewhere?

Level of Detail for 3D Graphics for example points out that discrete LOD (where artists prepare several models in advance) is widely used because of the performance overhead of continuous LOD. That book was published in 2002 however, and I'm wondering if things are different now. There has been some research in performing dynamic LOD using the geometry shader (this paper for example, with its implementation in ShaderX6), would that be used in a modern game?

To summarize, my question is about the state of LOD in modern video games, what algorithms are used and why? In particular, is view dependent continuous simplification used or does the runtime overhead make using discrete models with proper blending and impostors a more attractive solution? If discrete models are used, is an algorithm used (e.g. vertex clustering) to generate them offline, do artists manually create the models, or perhaps a combination of both methods is used?

\$\endgroup\$
3
  • \$\begingroup\$ I'd suggest adding a 'rendering' tag, as you are purely interested in graphics LOD, whereas LOD can also be applied to physics, AI and any other area where importance can be scaled down based on distance to something or performance. \$\endgroup\$
    – Kaj
    Aug 14, 2010 at 15:05
  • \$\begingroup\$ @Kaj: Good point. I'm talking about polygonal mesh simplification in particular. \$\endgroup\$ Aug 14, 2010 at 15:09
  • \$\begingroup\$ Oh, seems we edited at the same time (I forgot I could add tags, feel free to remove graphics-programming :o\ ). I'll try to come up with an answer later on - am in crunch today. \$\endgroup\$
    – Kaj
    Aug 14, 2010 at 15:11

6 Answers 6

9
\$\begingroup\$

For now it seems that discrete LOD is still preferred, but it remains to be seen if this will change with the next generation of console hardware.

For what it's worth Tom Forsyth has written a lot about continuous LOD, which he calls "progressive meshing". Game Programming Gems 2 purports to have one of these articles, but it appears to be mirrored here.

I believe one of Tom's games shipped using progressive meshing on last-gen console hardware. I don't think it's the computation overhead people are worried about with continuous LOD. I think it's more that discrete LOD is easier. Continuous LOD does heavier lifting in the tools pipeline and does not have enough clear advantages.

As for generation of discrete LODs, we use a combination of automatic tools and artist creation. The DirectX SDK comes with some stuff to auto-reduce geometry and I believe we use that as a first pass, if the quality is not good enough then artists generate the discrete LODs by hand or using additional tools in Maya.

\$\endgroup\$
2
  • 1
    \$\begingroup\$ I think Messiah used progressive meshing extensively, it seems aeons ago the world was abuzz about it. But I agree, static lod still seems to be prevalent where I look. It's hard to algorithmically decide what detail is critical to preserve, although many a SigGraph paper has been written about it as I'm sure OP knows. As an aside, a cute method I always remembered was the 'true imposter' chapter in one of the Game Programming gems I believe...where they use imposters with parralax occlusion mapping. I know I've seen more papers written along the same methodology (Fabio Policarpo perhaps?) \$\endgroup\$
    – Kaj
    Aug 15, 2010 at 1:59
  • 1
    \$\begingroup\$ Another strike against continuous LOD is the fixed amount of memory available in the console environment. Discrete objects let you throw out the hi-res models and all their dependent textures/shaders and swap in a much lower cost model with a simple shader and pre-combined smaller texture. In open world titles fighting over what data fills the limited available memory is often a bigger struggle than CPU/GPU cycles. \$\endgroup\$
    – wkerslake
    Aug 15, 2010 at 22:22
7
\$\begingroup\$
  • Supreme Commander (1&2) - this RTS prides itself in the fact that you can smoothly zoom out all the way to see a map of the battlefield, and then zoom all the way in on an area and manage it. It uses LOD very well as you zoom in and out to keep from overloading the graphics card, and at a certain zoom out level the meshes are replaced by 2D images of what type of unit they are, so that the map of the battlefield can clearly show where things are (since obviously a really low-detail 3D mesh at 20,000 ft would be indistinguishable). You can see the 2D replacement effect pretty clearly in the first few seconds of this video.
  • RollerCoaster Tycoon 3 - Similar to Supreme Commander, this game allows you to zoom in and out at will, viewing your entire theme park or managing a single coaster. It does not use 2D image replacement but due to LOD everything remains smooth; not only do the big meshes reduce in quality, but small details like the people walking around disappear when you zoom out far enough.
  • Legend of Zelda: Wind Waker - As you're sailing the open sea you can look around and see the closest islands to you; they are only silhouettes of the islands, however, and the actual 3D models don't load until you approach an island. Other features of the island load as well, such as enemies and typhoons in the nearby waters; unfortunately the player can see them "pop" into existence as he gets close, but overall it's a good technique that prevents from overloading the Nintendo GameCube hardware while giving the player a pretty accurate feeling of sailing the seas and being able to distinguish landmark islands in the distance.
  • Elder Scrolls IV: Oblivion - I haven't played this game in a long time but I know it does use either silhouetting or really low-detail models for distant landmark structures, such as the tall tower of one of the cities, and distant mountains.

LOD is not only used for terrain, but also for silhouettes of distant structures and for eagle's eye views of strategy/simulation games. I don't know the details of the algorithms, and I guess that's the main part of your question, but I wanted to give you some examples of the state of LOD in modern video games.

\$\endgroup\$
5
\$\begingroup\$

Here is an alternative suggestion, just to keep it interesting. Convex decomposition can create approximate geometries quite quickly, and is usually for collision meshes. These meshes work well as LOD and it is plausible as a real time decimation for speeding up a pipeline.

http://codesuppository.blogspot.com/2009/11/convex-decomposition-library-now.html

\$\endgroup\$
4
\$\begingroup\$

One modern approach to continuous LOD is hardware tessellation. Hardware tessellation was implemented in DirectX 11 and essentially provides programmable subdivision of surfaces. Because this is implemented on the GPU, it allows for much higher detail than provided by CPU-generated tessellation. By subdividing surfaces based on the view distance, for example, you can provide a form of continuous LOD.

Hardware tessellation is a very new feature of GPUs and there are not a lot of games that utilize it. I suspect that the games that do use it mostly as a drop-in for bump mapping - rather than bump map in the pixel shader, you can modify the actual geometry. There is probably a lot of room for further research into mesh simplification and improvement using hardware tessellation.

Some more resources:

\$\endgroup\$
1
  • \$\begingroup\$ As of yet I'd consider it more of a showcase technology than practical as you're really be excluding a huge lot of target audience. But yes, procedurals might be the way forward in some shape or form just not sure it's MS's current implementation. Time will tell. \$\endgroup\$
    – Kaj
    Aug 15, 2010 at 16:57
3
\$\begingroup\$

LOD is about trying to keep the amount of processing constant over time. Hierarchical level of detail is the only way of doing this for scenes of considerable detail. If you are near enough to an object, it decomposes into multiple objects. This recursive LOD provides not only a simple mechanism for handling the transition points for switching in new levels of detail but also allows the render call count to stay about the same no matter how far / near you get to your world objects.

It's all very well having great LODs for your meshes and textures, but in at least one game I shipped on the PS2, the way I saved time was just to clump together all the foliage in sectors into single draw calls. This larger draw call took nearly 90% less time than rendering all the low lod variants, even with carefully ordered material transitions and batch rendering each type of mesh. So, consider LOD with care. It's not just about individual objects. It's about the whole render phase.

\$\endgroup\$
1
\$\begingroup\$

Another subject to consider discussing in your paper (though an entire thesis could easily be written on just this subject alone) is procedural terrain generation.

Many modern projects are starting to use real-time procedural terrain generation to produce massive expanses of terrain (Outerra, Infinity (INovae), to name some of the most prominent). Discrete LOD is simply not an option, because of the procedural nature of the meshes.

These terrains often use heirarchical partitioning structures such as quadtrees to determine LOD, and generate a mesh of the appropriate resolution based upon the depth of the tree's node.

Without the use of continuos LOD, these awesome projects would simply be impossible.

\$\endgroup\$

Not the answer you're looking for? Browse other questions tagged .