Approximating Subdivision Surfaces with Gregory Patches for Hardware Tessellation

I'm trying to implement the approach (http://research.microsoft.com/en-us/um/people/cloop/sga09.pdf). Unfortunately I'm not quite clear regarding the formulas in chapter 3, I am hoping to get some answers.

I am unclear on the following points, did you figure them out?

• what kind of value do I get, when I calculate T(u,v,w) (a point?) and what do I do with the result?
• do I recieve the values u,v,w from the domain shader SV_DomainLocation or are they calculated?
• are the corner points in chapter 3.2 barycentric too?
• does v get replaced by p0 in figure 5?
• In chapter 3.3 Edge Points there is a formula for e0+, but none for e0-? For which edge is e0+ in figure 5? and how can I calculate e0+ for the other edges? It seems for me (figure 5) there are 5 edges, but just one e0+ is calculated, shouldn't there be 5 e0+?
• Do you maybe have a diagram of the controlpoints in relation to the control mesh? I am having problems seeing the big picture...
• In chapter 3.4: face points, you mention different transversal vectors r, r0+ and r0- but there is only one formula for r0+. Are r = r0+ = r0-? If not, how do I calculate r and r0-?

I am hoping someone could point me in the right direction, thank you in advance!

By evaluating T(u,v,w) you will indeed get a point. The patches are designed and optimized for the tessellation stage in modern graphics hardware. In this stage of the pipeline you are supplied with parametric values [u,v,w] and these can be used to evaluate a patch. You do not need to calculate these values yourself.

I'm not quite sure what you mean about the corner points being barycentric. In general the corner points v are not replaced by p. The original mesh is used as a control mesh for which the control points of the parametric patch can be derived.

Indeed, there is only one formula for e0+ but the other e0- can be found by starting at a different edge mid-point and then going around the vertex's outgoing edges. You can look at the answer of this question for more information.

The transversal vector r0- is in the opposite direction from r0+. So, r0+ = -r0-. Thus the face point f0- can be calculated using the same formula but instead using a different sign for r0+.