- added internal option to generate polygons vs patches when uniform
- updated PatchTableFactory to identify patches at a specified level
- renamed internal symbols to remove obsolete references to Adaptive
- updated Catmark builder to use edge-point boundary tags like Loop
- fixed Gregory face point reliance on boundary isolation assumptions
- added comments to PatchBuilder base class to clarify intention and usage
- identify the subrange of originating patch faces while assigning handles
- limit queries and memory allocation to the identified subrange of faces
- separate quadtree construction for quad and triangular patches
- added new PatchTable member to indicate uniform (linear) construction
- initialize new member in PatchTableFactory
- use new member to determine result of IsFeatureAdaptive() query
- added new TopologyRefiner member to detect presence of irregular faces
- added new Vtr::Level::VTag to indicate vertex incident an irregular face
- populated new VTag bit when irregular faces present
- updated refinement to clear new bit for refined faces
- branch adaptive refinement in linear cases to avoid testing features
- updated feature detection for irregular faces -- now a simple bit test
- updated PatchBuilder with now-trivial test for incident irregular faces
- individual basis functions now purely normalized with no PatchParam
- two new higher level functions deal with patch type and PatchParam
- updated Far::PatchTable and Osd evaluators that used old methods
- clarified handling of isolated/unisolated features in IsPatchRegular()
- simplified GetPatchBoundaryMask() to make use of bit masks
- removed private method supporting approx-smooth-corner-as-sharp option
- removed debugging tests verifying irregular patch points
- Far::PatchBuilder additions to identify spans around non-manifold corners
- re-organized patch regularity test to inspect individual corner features
- updated partial span gathering function to handle non-manifold cases
- ensure vertex tag xordinary bit remains unset when non-manifold
- added necessary options to struct LimitStencilTableFactory...::Options
- updated Create() to support creation of varying and face-varying stencils
- updated Create() to provide clarity and stricter compatibility checks for
the optional StencilTable and PatchTable arguments
- modified Doxygen comments for Create() to clarify requirements of the
optional table arguments
- added missing StencilTableFactory::AppendLocalPointStencilTableVarying()
- changed UpdateValues() use of *T to &T for consistency with PrimvarRefiner
- assigned unique types <T> and <U> to src and dst arguments for consistency
- kept the *T interfaces for backward compatibility
- extended patch construction in base PatchBuilder to support triangles
- added extraction of regular triangular patches to base PatchBuilder
- converted irregular patches to supported patch types in LoopPatchBuilder
- fixed missing PatchDescriptor functionality for Loop triangle
- add new PatchDescriptor::Type for Gregory triangle
- extended PatchParam boundary mask from 4 to 5 bits (!)
- added new PatchParam methods for parameterization of triangles
- extended PatchMap to support triangular patches
- added basis evaluation for triangular patch types
- extended Far::PatchTable's FVar channels with two descriptors and stride
- updated Far::PatchTableFactory to properly construct FVar patch arrays
- extended Osd::PatchArray with two descriptors and common stride
- updated Osd::CpuPatchTable and CpuEvaluator to use PatchArray extensions
- reverted original methods to operate in single precision instead of both
- removed overloads in favor of direct stencil table access and update
- updated precision related assertions with clearer condition
- updated far/tutorial_6 to use template stencil table access
- updated far/tutorial_9 to use conventional stencil table access
- replaced use of Append() with Assign(index) now that row size is clear
- added asserts for all row sizes to ensure assignment matches allocation
- simplified utility class for SparseMatrix point/row down to bare minimum
- overloaded PatchTableFactory::Create() to take subset of base faces
- overloaded TopologyRefiner::RefineAdaptive() to take subset of base faces
- added TopologyRefinerFactory::Create() to create new TopologyRefiner
that shares base level with another, allowing independent refinement
- overloaded PatchTable::ComputeLocalPointValues...() to accept split
buffers with separate base-level primvar values
- overloaded StencilTable::UpdateValues() to accept split buffers as above
- address indexing inconsistencies with Uniform PatchTables (#737)
- suppress generation of Varying patches and/or their local point stencils
- added suppression of Varying patches to far/tutorial_6
- converted classes for stencils, tables and factories to templates
- added backward compatible class wrappers around new templates
- extended PatchTable to support variable precision stencil tables
- extended PatchTableBuilder to manage PatchTable's new stencil tables
- templated PatchTableBuilder conversion from SparseMatrix to stencils
- extended public PatchTableFactory interface to specify precision
- converted PrimvarRefiner class to template and added wrapper class
Fixed the method signature of the internal limitFVar method to make
the dst argument a reference rather than a pointer to be more consistent
with earlier changes for other primvar classes. This also makes it
easier to use the public template LimitFaceVarying method to operate
on a wider range of primvar container types.