Commit Graph

291 Commits

Author SHA1 Message Date
David G Yu
010a31efc4 Checkpoint changes to unify adaptive patch drawing. 2015-04-17 07:42:53 -07:00
Takahito Tejima
0232ff5543 Fixes limit stencil evaluation on gregory basis patch. 2015-04-10 17:45:00 -07:00
barfowl
6ba910cd95 Added more functionality missing from stubs for Sdc limit masks:
- modified main LimitMask queries to include subdivision Rule
    - split internal mask assignments into corner, crease and smooth cases
    - adapted all three schemes to the new structure
    - completed limit tangents for Loop
    - update TopologyRefiner Limit methods to pass newly required Rule
2015-04-10 12:29:23 -07:00
Takahito Tejima
214e62e67a add a constructor to FarStencilTables to initialze members. 2015-04-10 11:08:41 -07:00
Takahito Tejima
8da827336d Removes FarKernelBatch.
This is the first step to tease off Osd compute controller/contexts
from Far API.
Currently FarStencilTable only creates a kernelbatch for the entire range,
so we can use [0, numStencils) for all cases instead of KernelBatch.
This might not be true if we apply non-factorized level-wise stencils,
then we'll add another modular utility to serve those cases.
2015-04-10 11:08:24 -07:00
David G Yu
ecb824af10 Fixed topologyRefiner.cpp to include error.h 2015-04-10 09:19:08 -07:00
barfowl
bb3552c441 Added error messages to Far::TopologyRefiners main refinment methods 2015-04-09 21:08:26 -07:00
takahito-tejima
f52915227f Fix windows build 2015-04-08 21:10:00 -07:00
Takahito Tejima
24f9dc154b Enable GregoryBasis patch.
PatchTablesFactory fills 20 indices topology into patchtable, and use it for eval and draw.

note: currently screen-space adaptive tessellation of gregory basis patches is
broken and cracks appear around them.
2015-04-08 17:07:10 -07:00
barfowl
36c86b0b68 Correction to previous commit regarding Far vertex ordering options. 2015-04-01 21:00:29 -07:00
barfowl
898d68ae79 Minor additions and revisions to TopologyRefiner interface:
- new Options for Refine() methods for base face and vertex ordering
    - removed ignored/unused "full topology" choice from AdaptiveOptions
    - added base face and vertex ordering logic to Refinement
    - addition of TopologyRefiner members for component counts and max valence
    - refactoring of Level additions to update all new member totals
    - addition of GetMaxValence() to TopologyRefiner
    - updated PatchTablesFactory to user new GetMaxValence() method
    - renaming of "Hole" methods for TopologyRefiner and Vtr::Level
2015-04-01 20:44:33 -07:00
barfowl
72e2f8eb2b Added support for patches around non-manifold features:
- 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
2015-03-26 10:42:32 -07:00
barfowl
e583b80271 Completed support for non-manifold topology (degenerate, reversed edges, etc.):
- 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
2015-03-15 20:22:00 -07:00
jcowles
9529bf45bf Remove internal URL from topologyRefiner header 2015-03-13 23:46:22 -07:00
barfowl
9a41cf59c4 Minor revisions to recent promotion regarding smooth UV's in Far:
- 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
2015-03-05 13:09:27 -08:00
manuelk
9e25b193ff Fix Win build 2015-02-27 15:52:12 -08:00
manuelk
d0a624f373 Add "smooth UVs" to Far
- 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
2015-02-26 13:57:47 -08:00
barfowl
4ced1b1461 Revised Level::VTags for semi-sharpness and added corner tag:
- 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
2015-02-25 20:02:10 -08:00
barfowl
6cb77507ec Fixed isolation bug with FVar data -- avoid false match with a regular patch. 2015-02-25 17:35:48 -08:00
barfowl
2213d86a59 Fixed bug retrieving and merging tags for FVar values:
- 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
2015-02-25 11:02:53 -08:00
barfowl
7152b1b1bf More support for feature-adaptive consideration of face-varying topology:
- 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
2015-02-11 20:51:00 -08:00
manuelk
b1933194aa Fix data race on static global variable in Far::PatchDescriptor
- statically initialize valid patch descriptor tables
- return a Vtr::Array instead of std::vector
- fix dependencies in Far::PatchTables

fixes #394
2015-02-11 14:25:44 -08:00
barfowl
5d868200db Introduction of face-varying channels influencing feature adaptive refinement:
- 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
2015-02-09 17:41:19 -08:00
manuelk
da0fab69fc Fix windows build
- in topologyrefiner.cpp : 'uint' needs to be 'unsigned int'
2015-02-09 14:18:58 -08:00
barfowl
86522417d5 Improved feature-adaptive selection tests preceding face-varying considieration. 2015-02-08 15:20:46 -08:00
Jeremy Cowles
fc5ac542cc Fix typo in doc string 2015-02-04 22:33:32 -08:00
Jeremy Cowles
606bd15075 True-up accessor names in topologyRefiner 2015-02-04 22:28:11 -08:00
barfowl
2f69c34c88 Extended Vtr patch gathering methods to access face-varying values:
- renamed and extended gathering methods with fvar channel index
    - renamed usage of gathering methods in far/patchTablesFactory
2015-01-29 21:06:47 -08:00
manuelk
446aa492b7 Add protected accessor to return patch index in Far::PatchTables 2015-01-28 15:50:23 -08:00
manuelk
c646ac2e3c Refactor & cleanup patch interpolation
- 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
2015-01-27 15:38:30 -08:00
manuelk
e637f7d1c8 Fix Far::TopologyrRefinerFactory dropping corner creases on vert index 0
fixes #381
2015-01-16 18:06:16 -08:00
barfowl
4dc96b2520 Minor improvements to Far::TopologyRefinerFactory:
- all Factory<MESH> methods to specialize now return bool
    - added topology validation of base level as indicated by option
    - added populateBaseLevel() back to simplify premature failure
2015-01-07 21:33:48 -08:00
barfowl
9bb98a94fd Renaming of a few Sdc types and constants:
- renamed Sdc::Type to SchemeType and TypeTraits to SchemeTypeTraits
    - renamed TYPE_ prefix to SCHEME_
    - updated all usage within core library
    - updated all usage in examples, tutorials, etc.
2015-01-06 17:40:11 -08:00
barfowl
6115eb9c4d Moved <sdc/type.h> to <sdc/types.h> 2015-01-06 14:26:20 -08:00
manuelk
e1b6434968 Fix build warnings (icc -w3) 2015-01-06 10:56:29 -08:00
barfowl
865fe5591f Modified Far::TopologyRefinerFactory<>::Create() take new Options as argument
- update examples, tutorials, regressions, etc. accordingly
2015-01-06 00:03:21 -08:00
barfowl
513dc96405 Removed unused (and unusable) Clear() method from Far::TopologyRefiner. 2015-01-05 19:41:41 -08:00
barfowl
f9a7e08d44 Cleaned up internal Factory construction of TopologyRefiner. 2015-01-05 19:34:47 -08:00
barfowl
6b71744a26 Minor changes to address warnings and remarks issues by ICC. 2015-01-05 18:56:24 -08:00
manuelk
36b7551a63 Fix Windows build 2015-01-05 12:44:29 -08:00
barfowl
127152a511 Cleaned up protected access to TopologyRefiner from its Factories:
- 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
2015-01-04 16:33:18 -08:00
barfowl
5c9b373e44 Fixed Bezier-related typo in internal PatchTables methods. 2015-01-03 16:33:53 -08:00
barfowl
877b09d668 Minor internal cleanup of Far::TopologyRefinerFactory 2015-01-03 12:26:02 -08:00
barfowl
be7c8fdfd1 Sdc::TypeTraits now parameterized by Sdc::Scheme at runtime:
- changed template parameter to runtime method parameter
    - added traits as static methods of all schemes
    - constructed internal table of traits from all schemes
2015-01-02 14:57:04 -08:00
barfowl
881ff6c1e9 Added public methods for setting non-manifold tags in TopologyRefinerFactory 2015-01-02 14:22:03 -08:00
manuelk
bfbd868fe2 Modify Far::TopologyRefiner refinement options
- 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.
2014-12-30 14:07:24 -08:00
manuelk
7954fbab37 Fix tangents in Osd::EvalLimitController
- don't rotate (s,t) coordinates but rotate the patch instead !

- refactor osd/cpuEvalLimitKernels to share Far::PatchTables cubic spline
  interpolation functions : this replaces tensor product formulation with
  weight matrices, which does not really impact performance here, but would
  have to be replaced when implementing regular gridding functions.

- fix OsdCpuEvalLimitController to not rotate coordinates and pass the rotation bitfields

- expose Far::PatchTables spline interpolation API (protected -> public)

- fix glEvalLimit tangent buffers (remove empty padding - see below)

- change policy for tangent buffers : the output buffer descriptor is
  **NO LONGER APPLIED** to tangent output buffers. Tangent primvar data
  buffers are no longer applying the offset and stride from the descriptor
  (because it doesn't make sense to share it). If more flexiblity is
  required, we will consider adding independent descriptors for the tangent
  buffers. This change will impact existing code that generates tangents
  with the EvalLimit controller.

fixes #370
2014-12-25 13:22:27 -08:00
manuelk
5944ada0f9 Add Options structs to Far::TopologyRefiner refinement methods
- fix all splash damage to tutorials / examples...
2014-12-23 10:07:24 -08:00
manuelk
d02fce995b Remove obsolete code path in Far::TopologyRefiner (_VTR_COMPUTE_MASK_WEIGHTS_ENABLED) 2014-12-22 10:34:51 -08:00
manuelk
d70fc5a72c Fix doxy comments in Far::TopologyRefiner 2014-12-22 09:40:14 -08:00