Here is my current hull shader:
PatchConstants PatchHS(InputPatch<VertexOutput,10> cp, uint patchID : SV_PrimitiveID)
{
PatchConstants pt;
pt.EdgeTess[0] = 6;
pt.EdgeTess[1] = 6;
pt.EdgeTess[2] = 6;
pt.InsideTess = 6;
return pt;
}
How do I know which cp's are associated with pt.EdgeTess[0]? I have to make sure that shared edges are tessellated the same way. My shader pipeline currently supports two forms of triangle input sets, one pointing up and the other pointing down. After translating them with my matrices, they could be oriented any old way. If one of my edges on my triangle is short on the screen, how do I know which element in the EdgeTess array to decrease?
It actually doesn't matter (I know - that isn't intuitive...). As long as neighboring patches share the same control points, and the control point to tessellation factor algorithm will produce the same output for the given input control points, then the order doesn't make any difference.
But for the same reason you are having trouble to understand it, it would be impossible to have a standard notation to say which control point goes where since it depends on the primitive topology, the number of control points, and so on. I believe there is a way to identify where a control point is located within a control patch, but I don't think there is one for the oriented control patches.