Hi! I was thinking about this yesterday. Now with real time tesselation available, we can use displacement maps in our materials. Floating geometry is not a problem for normal maps since the normals don't change if some floating high poly geometry is above(not too much of course) the base high poly geometry.
Now that displacement maps contain info about height differences, will it be necessary to model those small bits and bolts into our base high poly meshes or can we still use floating geometry within certain limits?
I'm asking this out of pure wonder, I don't have even a dx 11 graphics card but it would be nice to know
Thanks for any information.
Replies
IMO, i dont see tessellation being all that advantageous to hard surface things like weapons or mechanical props, atleast not as much as characters and other things that will require more rounded silhouettes. So you may not have to worry about that too much.
Hell, in most cases i would probably rather just have a thousand or two extra tris to play with manually, than the messiness of automatic tessellation, but i really do not know how efficient it is in terms of rendering speed.
Traditional 8bit grayscale is only 256 levels of height, so you get banding. You want to use a higher bit depth, like 16bpp, but that kills your video memory. DXT compression really sucks too, can't use that for displacement, the errors are much more pronounced with displaced geom.
Displacement maps are also harder to edit than normal maps. The margin for error is much greater, since tiny differences in value create bigger visual errors. Can't easily overlay details either.
Not sure that would work in DXT though, the 4x4 block artifacting is pretty bad. And it would be even worse since you would be storing a totally different grayscale range in each channel... at least the way NVIDIA compresses them, it's built to minimize errors working on photograph-like source, where the 3 channels are fairly similar.
if the hightmaps were added as a normals alpha, could you read every block of 4x4 or 8x8 pixels as one to get a higher value range...