level before we do any further population from the parent as that may
further modify the child's _maxEdgeFaces. When _maxEdgeFaces is incorrect
we may end up with stack corruption problems when
Far::TopologyRefiner::interpolateChildVertsFromEdges() goes to use this data
to allocate some stack space.
- CPU, CPUGL backends both updated
- CL backend still needs work
- Loop subdivision tests disabled because they don't work
- Hedit tests disbaled because they don't work
- regular patches now generated for faces with non-manifold vertices
- non-manifold features treated as boundary edges and vertices
- other minor cleanup/improvement in patch identification method
- commented on approx of smooth x-ordinary corner with regular sharp patch
- added edge-face local-indices to Vtr::Level members
- added internal and public access to edge-face local-indices
- updated refinement methods to use and populate edge-face local-indices
- updated refinement methods to be sensitive to degenerate edges
- added Vtr::VALENCE_LIMIT constant for internal use
- updated Vtr::Level topology completion to fail on valence overflow
- simplfied non-manifold edge handling in Vtr::Level topology completion
- updated warnings for all topology construction failures
- added detection and warning when passing non-triangles for Loop
- changed return type of Vtr array empty() to bool
- renamed and adjusted arguments to Vtr gather methods for consistency
- removed lone Vtr gather method that took an explicit offset
- updated usage of revised Vtr gather methods in Far
- fixed warnings redeclaring names of local variables already in use
- extend Far::PatchTables data structures & interfaces to store requisite
information for channels of face-varying bi-cubic patches
- implement gather function in Far::PatchTablesFactory to populate face-varying
channels with adaptive patches
- extend accessor interface in Vtr::Level
- propagate code fall-out throughout OpenSubdiv code base, examples & tutorials
- extend vtrViewer code to visualize tessellated bi-cubic face-varying patches
- added new tag for sharp corner, now used in isolation
- split single semi-sharp tag in two for vertex and edge sharpness
- updated tag propagation and all tests of previous semi-sharp tag
- added clear() methods for all tags and simplified initialization
- added Vtr::FVarLevel method to resolve correct index in level 0 case
- updated tag retrieval methods that used face-value array as input
- changed signatures to accept face-verts when needed and updated usage
- added methods to FVarLevel to combine FVar tags with vertex tags
- use composite of combined tag to find FVar features needing isolation
- added more tagging related to the "linear borders" interpolation case
- added FVar channel consideration to TopologyRefiner's feature selection
- added more simple access methods to FVarLevel
- added _xordinary tag to FVarLevel::ValueTag; initialize and refine
- added composite tag method for FVarLevel::ValueTag similar to Level::VTag
- parameterize FVar topology initialization with regular valence
- recent MSVC versions attempt to compile files with hlsl
extensions when passed on the command-line. This breaks
the build because these files are not meant to be compiled
directly by MSVC. I removed the dependency from the
CMakeList to prevent this from happening.
- move patch interpolation code out of Far::PatchTables into far/interpolate
- add bilinear quad interpolation function with derivatives
- switch OsdCpuEvalLimitController to far/interpolate
- add support for bilinear quad interpolation & clean varying interpolation
- add simple parsing function to the Shape class
- only a small portion of the MTL format is supported (no textures)
- the feature is disabled by default
- this work is incomplete : we still need to add piping to the GPU