- Home /
Displacement/Tessellation Tearing/Cracks
Hey, Can anyone advise on how to stop the tessellation made in shader forge from tearing/producing cracks? The way I understand it, generating the new vertices through tessellation are not "welding" themselves together due to the non-uniform tessellation of each quad. The original vertices in question DO share the same normal in the original mesh.
Any ideas? Screenshot of error attached along with my shader set up. Thanks in advance.
Answer by Acegikmo · Dec 25, 2014 at 01:17 PM
Hey!
For Shader Forge users: This is a bug in Shader Forge, so it's not your fault! That being said, I have now fixed it in version 1.01 - update and see if it works :)
For shader coders: This issue appears when using a naive implementation of non-uniform tessellation factors. You have to make sure the tessellation factor is calculated for each vertex in every triangle, and then you average each pair to get the tessellation factor for each edge, and then average all three to get the center factor.
This is my solution:
// Your per-vertex tessellation factor here
float Tessellation(TessVertex v){
return (64.0/distance(_WorldSpaceCameraPos,mul(_Object2World, v.vertex).rgb));
}
// Calc factors for all three edges + center
float4 Tessellation(TessVertex v, TessVertex v1, TessVertex v2){
float tv = Tessellation(v);
float tv1 = Tessellation(v1);
float tv2 = Tessellation(v2);
return float4( tv1+tv2, tv2+tv, tv+tv1, tv+tv1+tv2 ) / float4(2,2,2,3);
}
Hope it helps, and happy holidays :)
// Joachim
Answer by daniel-griffiths · Oct 18, 2017 at 08:06 AM
@Acegikmo I still seem to have this issue with 1.38v . Is there any particular setting i should be aware of?
Thanks