Displacement Mapping Tessellation

Started by
5 comments, last by wiselogi 12 years ago
I am using d3d11 tessellation. I have a tileable texture brick texture with normal and height map. If I map this texture onto each face of a cube and do displacement mapping tessellating, the displaced vertices do not meet on the edges of the cube. What is this problem called and how do you fix it?
-----Quat
Advertisement
This is usually called "Crack". You must have the same tessellation factor ( set it on the Hull Shader ) for each edge of a triangle that shares a cube edge, and also the displacement amount on the edges must match.
It's usually referred to as "cracks", and it's very common and difficult-to-solve problem. You can read this presentation for some more info, and potential solutions.

You must have the same tessellation factor ( set it on the Hull Shader ) for each edge of a triangle that shares a cube edge, and also the displacement amount on the edges must match.
[/quote]

The tessellation factors are the same. The problem is that each cube face has a different tangent space, so the vertices on an edge get displaced in different direction.

I can't really think of a way to solve this unless I make my cube have rounded corners such that there will not by any vertices with duplicated positions but different normals.
-----Quat
The tessellation factors are the same. The problem is that each cube face has a different tangent space, so the vertices on an edge get displaced in different direction.

I can't really think of a way to solve this unless I make my cube have rounded corners such that there will not by any vertices with duplicated positions but different normals.[/quote]
DId you try averaging the tangent space for the cube corners (so instead of facing directly up or directly left for instance, the edge ones will face 45 degrees up and 45 degrees left)? It should work then.

“If I understand the standard right it is legal and safe to do this but the resulting value could be anything.”


The tessellation factors are the same. The problem is that each cube face has a different tangent space, so the vertices on an edge get displaced in different direction.

I can't really think of a way to solve this unless I make my cube have rounded corners such that there will not by any vertices with duplicated positions but different normals.

DId you try averaging the tangent space for the cube corners (so instead of facing directly up or directly left for instance, the edge ones will face 45 degrees up and 45 degrees left)? It should work then.
[/quote]

Yeah, that's basically what I meant when I said "make my cube have rounded corners." I don't have to round the geometry, but if I average the tangent space, it will give a rounded look with the lighting.
-----Quat
Averaging is a solution, but instead of doing that, there is a potential solution in MJP link's. And also a easier one on this http://www.google.com/url?sa=t&rct=j&q=tessellation%20displacement%20mapping%20cracks&source=web&cd=1&ved=0CB8QFjAA&url=http%3A%2F%2Fdeveloper.amd.com%2Fgpu_assets%2FWileyAuthoringforTessellation.pdf&ei=ssSFT8PcNaiyiQKWv9j1BA&usg=AFQjCNGFsjyLTbkH11jBHvTgTmLuYJgRtQ&cad=rja

At page 45, they propose a filter at UV borders.

This topic is closed to new replies.

Advertisement