The computation to adjust patch evaluation weights
for box spline triangle patches to account for boundaries
has been updated to use simple conditional logic instead
of index indirection tables. This results in better register
resource usage for some shader compiler implementations.
Previously, these methods could fail to compile on some
systems.
- changed Far::PatchDescriptor size for GREGORY_TRIANGLE to 18
- modified Far::LoopPatchBuilder to construct full quartic Gregory patch
- fixed Far::LoopPatchBuilder bug related to face points near boundaries
- updated Far patch basis evaluation for Gregory and Bezier triangles
- updated Osd patch basis evaluation to match Far
- updated Osd GLSL patch size for Gregory triangle to 18
- modified Osd GLSL Gregory triangle eval and tess settings for quartic
- stripped StencilTableHandler down to simpler StencilTablePtr wrapper
- replaced old convenience methods with direct conditions in PatchTable
- created new private template methods to simplify PatchTableBuilder
- corrected stencil estimates according to the interpolation mode
- removed the added error checking for the tables provided
- use uniform vertex patches when varying interpolation specified
- 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