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+.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.