- added array accessors to properties of vertex values in vtr::FVarLevel
- updated construction of base level face-varying topology
- simplified population of face-varying properties in vtr::FVarRefinement
- updated Far::TopologyRefiner::Interpolate/LimitFaceVarying() accordingly
- added ValueTag indicating sharpness dependency on another value
- updated base level tagging to identify dependent semi-sharp values
- updated refinement to consider dependency when reassessing semi-sharpness
- updated interpolation to use dependent fractional weight when necessary
- adaptive mode: remove faces tagged as holes from the selection of faces to isolate
- uniform mode: faces tagged as holes are still included in the refinement process,
however they are removed from patch tables
- future improvements: add a 'selective refinement' code path separate from 'uniform refinement'
to handle this case without un-necessary subdivision work.
- re-implement the pool allocator
- use templates to remove code redundancy between regular & limit stencils
- leverage [] operator overloading to simplify stencil factorization
- add the ability to treat subdivision levels independently (see below)
- refactor Far::TopologyRefiner::Interpolate<>() methods to pass buffers by reference
(allows overloading of [] operator)
- rename some of the stencil factory options
- propagate changes to Osd / examples / tutorials...
Cause: std::vector.resize() function invalidates Vtr::Level pointers held by FVarLevel
Fix: switch std::vector<Vtr::Level> to std::vector<Vtr::Level *> and cycle through
the vector with appropriate new/delete.
Catmull-Clark Subdivision Surfaces", Niessner et al, Eurographics 2012.
This change includes;
-topology identification for single-crease patch during adaptive refinement.
-patch array population (similar to boundary)
-sharpness buffer generation
-glsl shader
Eval stuffs will be coming.
- added semi-sharp tag to FVar ValueTags and applied in base FVarLevel
- re-assess status of tagged semi-sharp values in each FVarRefinement
- detect and apply fractional weighting in InterpolateFaceVarying()
- "propagate corners" added as new enumeration to Sdc::Options
- topology tags within FVar channel initialized and propagated
- face-varying Interpolate() method updated to deal with creases
- removed old alternative to Catmark feature adaptive selection
- removed unused methods from Vtr::SparseSelector
- made use of Level::VTag's new "incomplete" member in both
Sync'ing the 'dev' branch with the 'feature_3.0dev' branch at commit 68c6d11fc36761ae1a5e6cdc3457be16f2e9704a
The branch 'feature_3.0dev' is now locked and preserved for historical purposes.