Skip to main content
GameDev.net gamedev.net
🔒 Locked

DX11 Tessellation and Terrains

Started by BenS1 Sep 21, 2010 at 5:07 AM 5 replies 3.9k views
Original Post
BenS1
BenS1
I've been looking at various LOD techniques for terrain engines, such as GeoMipMapping, GeoMorphing and ClipMapping.

I've also seen how DX11 tessellation can be used to take a low triangle count terrain and make it much smoother, but what I've not seen is anything that talks about combining one of the LOD techniques with tessellation.

For example, my landscape may be divided into segments, with the maximum segment detail being say 128x128 vertices. Further away segments may be rendered in lower levels of detail (64x64, 32x32 etc), but if a segment gets closer than a certain point then tessellation could be used to increase the triangle count.

Has this been done?

I guess there's no reason it wouldn't work.

Thanks
Ben

DieterVW
DieterVW
ATI has a demo and white paper out on using DX11 tessellation for terrain, it's probably worth a look.

I'd suggest reducing the patches to a minimum set of control points, perhaps just a quad patch of 4, or 16 if you need some curvature. With tessellation available it's worth considering whether or not the vertex data is useful. With respect to a 128x128 patch, that isn't useful as it just uses up tons of memory on vertex buffers that the card could generate on demand instead. The max tessellation amount per side is something like 64. So you can ramp up the tessellation amount on a simple 4 control point quad until reaching that peak at which point it'll be time to kick in patch LOD and swap the larger patch with several new smaller ones.

NVidia and ATI have white papers on using tessellations and making it water tight without the use of skirts. You can also read the original paper "Approximating Catmull-Clark Subdivision Surfaces
with Bicubic Patches" here.
BenS1
BenS1
Thanks for your reply.

To be honest, I'd prefer to keep as much real terrain data as possible as having too few vertices and relying on tessellation will result in a terrain that's too smooth and washed out.

My original data was in 512x512 patches, which I've reduced to 128x128 patches for tessellation.

I think I'll use GeoMorphing for all segments further than a certain distance, and Tessellation for all segments closer than that distance. i.e. GeoMorphing for reducing the detail and tessellation for increasing it.

Thanks for your help.
Ben

P.S. I've read those docs before but I'll have another look, thanks.
Martin
Martin
If you implemented tessellation with displacement mapping you wouldn't need geo-mipmapping.

e.g. you would only need to transmit your lowest LOD (2x2 ?), tessellate that and displace the vertices

I think if you're using DX11 there is no need to combine LOD with tessellation, let tessellation do all the heavy lifting on chip and use all the graphics cards bandwidth for textures etc.. instead of pulling in lots of vertices (not that that's really much of a bandwidth saving but it is some)
Cheers,MartinIf I've helped you, a rating++ would be appreciated
xnunes
xnunes
Maybe this is what you are looking for:


I've submitted a paper explaining this LOD technique with the dx11 tessellator which was accepted. It will be published next month. The video is short because the space for submitting media was quite low, we tried to make it as tiny as possible, but we still had a problem in the submission with the video format, so we had to stay only with photos.
BenS1
BenS1
Quote:
Original post by Martin
If you implemented tessellation with displacement mapping you wouldn't need geo-mipmapping.

e.g. you would only need to transmit your lowest LOD (2x2 ?), tessellate that and displace the vertices

I think if you're using DX11 there is no need to combine LOD with tessellation, let tessellation do all the heavy lifting on chip and use all the graphics cards bandwidth for textures etc.. instead of pulling in lots of vertices (not that that's really much of a bandwidth saving but it is some)


Thanks Martin

Ok so really what you're saying is to not really have any vertices at all, just have a single quad and a displacement map and then use tessellation to create the vertices with the displacement map providing the height info.

Sounds obvious now you say it. :)

Thanks
Ben
BenS1
BenS1
Quote:
Original post by xnunes
Maybe this is what you are looking for:


I've submitted a paper explaining this LOD technique with the dx11 tessellator which was accepted. It will be published next month. The video is short because the space for submitting media was quite low, we tried to make it as tiny as possible, but we still had a problem in the submission with the video format, so we had to stay only with photos.


Looks great, thanks.

Where will it be published? On GameDev?

I'll definitely read that article.

Thanks
Ben

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.