Jump to content

  • Log In with Google      Sign In   
  • Create Account


Chunked LOD vs Tesselated Terrain


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
6 replies to this topic

#1 BenS1   Members   -  Reputation: 321

Like
0Likes
Like

Posted 31 October 2011 - 04:48 PM

I've written a basic DX11 terrain engine using the new tessellation stages, but it currently uses fixed sized patches. Given that my game allows the player to zoom right in or out I need to use a quad tree or similar to vary the size of the patches based on viewing distance...

Most Terrain articles that talk about quadtrees assume that you're using Chunked LOD and not Tessellation. As I looked into it more I started to realise that Chunked LOD (With morphing between the levels) is very simple and gives excellent results with zero popping.

So, what is the advantage of using tessellation over normal Chunked LOD (Including morphing)?

Making the terrain watertight with different sized patches is a pain with tessellation. Chunked LOD simply uses skirts, which whilst doesn't appear to be an elegant solution, its much simpler and gives perfect results.

I believe the main difference between the 2 techniques is the way the terrain morphs between levels. With Chunked LOD every other vertex morphs vertically at the same time as you move between levels. With Tessellation the new verticies emerge from existing veritices and then move horizontally to the final position.

Personally I would have thought that the vertical morphing of Chunked LOD would look less strange than the horizontal mophing you get from tessellation.

Thanks
Ben

Sponsor:

#2 L. Spiro   Crossbones+   -  Reputation: 13318

Like
1Likes
Like

Posted 31 October 2011 - 10:01 PM

Chunked LOD terrain is a bit outdated.
Today's version is GeoMipMapping. I believe GeoClipMapping to be even more efficient, but GeoMipMapping is close enough for the simplicity in implementation given that you already have a chunk system.

Also, LOD is not determined by distance, but by how much space the object occupies on the screen. If you went by distance alone and the player uses a sniper rifle, hilarity will ensue.


L. Spiro
It is amazing how often people try to be unique, and yet they are always trying to make others be like them. - L. Spiro 2011
I spent most of my life learning the courage it takes to go out and get what I want. Now that I have it, I am not sure exactly what it is that I want. - L. Spiro 2013
I went to my local Subway once to find some guy yelling at the staff. When someone finally came to take my order and asked, “May I help you?”, I replied, “Yeah, I’ll have one asshole to go.”
L. Spiro Engine: http://lspiroengine.com
L. Spiro Engine Forums: http://lspiroengine.com/forums

#3 Ingenu   Members   -  Reputation: 862

Like
0Likes
Like

Posted 01 November 2011 - 03:44 AM

You can either use heightmap based Chunked LoD, which is simple and fast, with some metric for LoD, or tessellate & displace your terrain on GPU given a heightmap.
And alternative is to use vector maps instead of height maps to allow for overhang and such, check Halo Reach presentation about that.

In Shogun 2, I chose Chunked LoD to replace geomipmapping.
Keep in mind you might pick up a different solution given your requirements...
-* So many things to do, so little time to spend. *-

#4 BenS1   Members   -  Reputation: 321

Like
0Likes
Like

Posted 01 November 2011 - 08:13 AM

Sure I'm aware of GeoMipMapping and ClipMapping but I fail to see how they are in any way better than Chunked LOD. Chunked LOD is both simple and gives perfect transitions between detail levels.

Thanks
Ben

PS. Apologies if my response seems a bit 'short', I've only got a minute between meetings.

#5 mrbastard   Members   -  Reputation: 1573

Like
0Likes
Like

Posted 01 November 2011 - 08:39 AM

Chunked LOD terrain is a bit outdated.
Today's version is GeoMipMapping


Has hardware changed in some way that made GMM worthwhile again? I haven't really kept up with this stuff since ChunkedLOD took over from GMM as the method du jour.

That is:

GMM - 2000
ChunkedLOD - 2002
GeoClipMaps - 2004

IIRC the error metric used in the GMM paper is much rougher than that in ChunkedLOD. The LOD models GMM (and I'm guessing GeoClipMaps) generates are nowhere near as good as ChunkedLOD - this is because of the arbitrary sampling used to select vertices at each LOD, whereas ChunkedLOD actually uses the potential screen space error per vertex and selects the most important vertices, IIRC.

But there's no reason not to mix and match. How about ChunkedLOD with adaptive tessellation to refine silhouette edges?


#6 Quat   Members   -  Reputation: 403

Like
0Likes
Like

Posted 01 November 2011 - 12:00 PM

Making the terrain watertight with different sized patches is a pain with tessellation.


I do not understand the problem? Can't you make a grid of quad patches. Tessellate each patch based on some metric (distance/screenspace coverage). Also be sure to tessellate each edge based only on edge properties so it is watertight.
-----Quat

#7 BenS1   Members   -  Reputation: 321

Like
0Likes
Like

Posted 02 November 2011 - 07:58 AM


Making the terrain watertight with different sized patches is a pain with tessellation.


I do not understand the problem? Can't you make a grid of quad patches. Tessellate each patch based on some metric (distance/screenspace coverage). Also be sure to tessellate each edge based only on edge properties so it is watertight.


There are 2 problems:
1. If you have an edge A -> B and tessellate it with a factor such as 4.3 and then on the neighbouring tile that edge becomes B -> A (Due to winding order) and tesselate that with a factor or 4.3 then its no longer watertight. You have to either stick with integer tesselation factors at the edges (In which case you will get popping when you change values), or you have to do tricks to the winding order to ensure the edges are always tesellated in the same order.

2. The other problem is how do you know what your neighbouring tiles size is? A single tile of size 64x64 could have, on a single side, multiple neighbours of different sized tiles, e.g. four tiles of sizes 32, 16, 8, 8.

Thanks
Ben

Edit: Although I guess you could just use Skirts, just like with Chunked LOD.




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS