- fixed naming consistency of protected methods used by Factory
- removed other unused and/or redundant protected methods
- update Far Factories to reflect changes to Refiner methods
- updated usage in tutorials and regression
- move level of refinement / isolation into the Options structs
- fix splash damage in rest of the code
note 1: this is less than ideal, because most compilers accept the previous
call to these functions with an incorrect parameter list (ie. passing
the level instead of the struct issues no warnings and compiles...)
caveat emptor...
note 2: the level parameter names may not be final for adaptive modes
as we will likely want independent controls over crease vs.
extraordinary vertex isolation.
Const' declared instances of Vtr::Array do not protect the pointer held
privately by the class properly. In order to force the compiler to
protect this pointer, we removed all non-const accessors from Vtr::Array
(now renamed Vtr::ConstArray) and moved them to a child class (Vtr::Array),
which requires const_cast<> operators internally to allow access.
The change & renaming is then propagated to all internal dependencies.
- added detection of sharp corners in generic scheme limit mask query
- tweaked Loop limit mask to simplify the regular case
- updated TopologyRefiner::Limit() methods to support all schemes
- added flag to Sdc MASK interface to interpret "face weights"
- updated Catmark and Bilinear schemes to be aware of new MASK flag
- added subdivision and limit masks for the Loop scheme
- subclassed Vtr::Refinement into QuadRefinement and TriRefinement
- updated tagging of components to be sensitive to applied scheme
- fixed some quad assumptions in FVar refinement to support N-sided
- internally generalized ::TopologyRefiner Interpolate() for <SCHEME>
- reorganized Refinement methods and pruned excessive comments
- removed and added assertions related to Catmark scheme
- added code to support alternate refined vertex ordering
- updated FVarRefinement to be more independent of vertex ordering
- updated Far::TopologyRefiner to fix face-varying ordering dependencies
- fixed a few miscellanous compiler warnings
- 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.