Ultima Underworld VR Remake

Playing with DX11 distance based tessellation for environment objects

avatar.png

Hi guys

I’ve been looking at how to make realistic looking environment materials and it seems that tessellation is a very powerful way of representing detail in geometry. Especially when you factor in the stereo effect of the Oculus Rift which makes the effect really realistic. So to figure out how to do I focused on one of my wall materials as a test. I found 3 of very useful tutorials online, that when combined gave me the results I wanted. The first tutorial I found was by a guy called RealDaveTheFreak. you can find his Youtube channel here and its worth checking as he has some great tutorials.

He has 2 tutorials on tessellation. One for basic tessellation and one for distance based tessellation. However his solution for distance based tessellation while great for small static meshes doesn’t work quit as well for larger objects. his tutorial uses the distance from the object with the material on it, to the camera. As I said works fine for smaller static meshes but not for larger meshes as it will tessellate the entire mesh when it may not be necessary as parts of the object could be far away.

The second tutorial is by Epic’s Wilard (Hope I spelt that right) and is about location based opacity. You can find it here and the second part is here. uses a cool feature called a sphere mask to make parts of meshes transparent.

The third tutorial is on vertex painting and it by MetalGameStudios. You can find some great tutorials by them in their Youtube channel here.

So using the Sphere mask with a center based on the camera location and using a falloff and radius to adjust I got the following effect.

The frame rate is quite low on the video capture but in editor and in game it runs silky smooth.

I have tessellation on the ceiling, floor and walls.

A problem I encountered was separation in some of the meshes in certain places where the floor meets the walls.

capture1.png

So using the info I got from the vertex painting tutorial I used vertex colors to mask out the height map for the problem areas.

capture2.png

here is the tessellation part of the material for you guys to try out.

The texture sample is the height map.

Hope helps anyone and thanks to the guys who made the tutorials that got me far.