Hi,
while browsing the source code for catmark vertex subdivision, I found that it is significantly different from what is described in Section 3.1 of the "Feature Adaptive GPU Rendering of Catmull-Clark Subdivision Surfaces" paper. If my understanding is correct, Hbr detects transitions between vertex subdivision rules applied at one level and at the next. If so, it computes a weight and performs a linear blend between the results of the two rules.
The GPU paper considers the number of sharp incident edges and the average of all incident edge sharpnesses at the current level. It models only transitions corner -> smooth and crease -> smooth leaving potential transitions corner -> crease aside.
Therefore, it looks this change is related to a greater accuracy of the subdivision process. Is it correct ?
Also, in <halfedge.h>, I have a doubt on the implementation of IsSharp
// Returns whether the edge is sharp at the current level of
// subdivision (next = false) or at the next level of subdivision
// (next = true).
bool IsSharp(bool next) const { return (next ? (sharpness > 0.0f) : (sharpness >= 1.0f)); }
Shouldn't the sharpness at the next level depend on the Chaikin rule (when this option is selected) ?
Regards