Commit Graph

54 Commits

Author SHA1 Message Date
manuelk
f7ed90e898 Minor optimization for Far::PatchTables cubic spline tensor computation 2014-12-04 16:46:02 -08:00
manuelk
b27b55e4a8 Refactor Far::PatchTables
- split Far::PatchDescriptor into its own class (mirrors Far::PatchParam)
- hide PatchArray as a private internal structure
- add public accessors patterned after Far::TopologyRefiner (returning Vtr::Arrays)
- propagate new API to all dependent code

note: some direct table accessors have not been removed *yet* - see code for details
2014-11-25 12:41:19 -08:00
manuelk
49848139f4 Fix build warning in Far::PatchTables::Interpolate<>() method 2014-11-18 11:10:13 -08:00
manuelk
6a2b966f6e WIP on end-cap topology generation
- adding functionality to Far::PatchTablesFactory to generate topology indices
  for Gregory basis end-caps (identify and index vertices along basis shared
  edges)
- code is currently #ifdef'ed out until further work can be done to bring the
  feature along all the way through to Osd::Draw
2014-11-18 10:48:37 -08:00
manuelk
2fbdb976e3 Fix doxygen documentatino for Far::PatchTables 2014-11-13 10:28:31 -08:00
manuelk
e8210886a8 Extend stencil-driven Gregory basis code support to Osd::EvalLimit (cpu) 2014-11-11 17:35:52 -08:00
manuelk
abae4459e6 Adding support for gregory patches limit interpolation to Far::PatchTables
note: limit interpolation requires stencil-driven Gregory basis CVs
2014-11-11 11:27:25 -08:00
manuelk
f145f70fd2 Refactor Far::StencilTablesFactory
- 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...
2014-10-21 16:36:26 -07:00
Takahito Tejima
c0907c7bc1 Introduces 'single-crease patch' : implements "Efficient Evaluation of Semi-Smooth Creases in
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.
2014-10-13 08:52:09 -07:00
manuelk
a79832b3a1 Far::PatchTables re-factor & clean-up
- remove Descriptor iterators
- switch 'unsigned int' indices to typed Far::Index

We aren't done yet... but its a step in the right direction
2014-10-09 14:48:50 -07:00
manuelk
43493bb9ae Add support for bilinear stencils to the FarLimitStencilsFactory
- also update glSencilViewer code example to visualize the new stencil type
2014-10-02 16:09:17 -07:00
manuelk
19ed202965 Pass control vertices by reference to Far::PatchTables::Limit<>() function
This will allow overriding the [] operator and possibly help refactor the far stencil factory code
2014-09-24 15:15:22 -07:00
manuelk
788880aeba Minor code cleanup / typo fixes in Far::PatchTables 2014-09-22 13:51:59 -07:00
manuelk
f7b21b941c Add far_tutorial_6 showing how to interpolate primvar data on the surface
limit at arbitrary locations.
2014-09-22 13:51:59 -07:00
manuelk
d02bfc48d2 WIP on LimitStencilTablesFactory
- added an option to Far::StencilTablesFactory to generate stencils for
  coarse control vertices
- refactored interpolation code out into Far::PatchTables
- corrected tangent interpolation
- code cleanup & comments
2014-09-18 17:48:34 -07:00
manuelk
c399655dcc Landing 3.0.0.alpha
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.
2014-09-05 15:07:46 -07:00
manuelk
b74f45f68d Decrease compiler warning thresholds and fix outstanding warnings (continued)
- turn off some of icc's remarks (mostly because of tbb)
- fix many of icc -w3 remarks (more to fix once i can work around icc 14.0 linker barfing)
2014-05-15 18:03:44 -07:00
manuelk
99c34d2aec Adding functionality to store uniform face-varying data across multiple levels of subdivision
- switch FVarDataTable to a class
- add offsets to keep track of level
- modify dependent code
- rename 'totalFVarWidth' to 'fvarWidth'

fixes #271
2014-04-04 19:10:34 -07:00
Takahito Tejima
84bc05ac9f more refactoring on FarMesh and move FarMultiMeshFactory to OsdUtil. 2014-03-24 19:13:40 -07:00
Takahito Tejima
d2fc86ba5e Move table splicing functions of FarMultiMeshFactory into factories,
in preparation for relocating MultiMesh to OsdUtil.
2014-03-20 14:52:42 -07:00
Takahito Tejima
40dbbfd294 Fix another multi mesh splicing bug of face varying data.
Change FarPatchTables::Descriptor::begin() to take starting patch type so that we can use a desc iterator for uniform quads/tris as well.
2014-03-19 09:10:49 -07:00
manuelk
d0c3ed9f38 Refactoring FarPatchTables and FarPatchTablesFactory
minor code cleanups:
- change Descriptor::iterator to use a static vector instead of overly complicated logic
- change the private factory PatchType struct for better readability
- variable name changes
2014-02-24 17:12:39 -08:00
manuelk
3ae50d1c50 Amending Apache license language & file headers.
New text:

     Copyright 2013 Pixar

     Licensed under the Apache License, Version 2.0 (the "Apache License")
     with the following modification; you may not use this file except in
     compliance with the Apache License and the following modification to it:
     Section 6. Trademarks. is deleted and replaced with:

     6. Trademarks. This License does not grant permission to use the trade
        names, trademarks, service marks, or product names of the Licensor
        and its affiliates, except as required to comply with Section 4(c) of
        the License and to reproduce the content of the NOTICE file.

     You may obtain a copy of the Apache License at

         http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the Apache License with the above modification is
     distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
     KIND, either express or implied. See the Apache License for the specific
     language governing permissions and limitations under the Apache License.
2013-09-26 12:04:57 -07:00
manuelk
20ca6c9b52 Adding some comments for FarPatchTables::GetFaceVertices and GetNumFaces
fixes #195
2013-07-26 10:38:49 -07:00
Takahito Tejima
51a45b598d Updating EULA 2013-07-18 14:19:50 -07:00
manuelk
12d67bfbcb - fixing comments in Far for better Doxygen readability
(first pass - more work needs to be done)
2013-07-10 18:51:43 -07:00
manuelk
aababd42a6 fix build warnigns (oddly, gcc shows nothing, despite having -Wall...)
fixes #184
2013-06-27 10:11:47 -07:00
manuelk
dc81d98246 fix FarPatchTables class nesting for LLVM-based compilers (Clang / ICC).
fixes #172
2013-06-24 16:59:49 -07:00
manuelk
dae55d68e2 fix FarPatchTables::GetNumFaces() and FarPatchTables::GetFaceVertices() :
These functions are exclusive to uniformly subdivided topology. With the recent refactoring
of PatchTables and the generalization of topology, uniform meshes only retain the topology
of the highest level of subdivision by default. These functions are now fixed to reflect the
change.
2013-06-19 16:31:06 -07:00
manuelk
54bef92aab switch cpuEvalLimitController to use a quad-tree based patch access map :
- remove PatchMap from FarPatchTables

- add a new FarPatchMap quad-tree class (constructed from FarPatchTables)

- refactor the EvalLimitController to use the quad-tree search instead of a
  serial loop access

fixes #174
2013-06-13 14:01:23 -07:00
manuelk
fab0527f91 minor FarPatchTables::PatchMap code refactor :
- replace use of std::multimap with an std::sort
- refactor some methods into PatchParam
2013-06-11 15:59:43 -07:00
manuelk
7cb2463dc7 fix FarPatchTables::IsFeatureAdaptive() :
- trivial return if Gregory specific patch data is set
- or iterate through the patch-arrays until an adaptive patch is found (REGULAR,...,GREGORY_BOUNDARY)

fixes #173
2013-06-10 14:36:25 -07:00
manuelk
2a298442f4 minor refactor : move PatchMap and PatchHandles into FarPatchTables where they belong (instead of OsdLimitEval) 2013-05-17 15:46:29 -07:00
manuelk
5dd23e8e27 more doxy comment fixes 2013-05-17 14:39:07 -07:00
manuelk
5ed3488493 more doxy / comment fixes 2013-05-17 14:07:53 -07:00
Takahito Tejima
aa76d9c645 Add constructor to FarPatchTables. Add enums to FarPatchTables::Type. 2013-05-17 12:49:57 -07:00
manuelk
3869be18b7 Renaming PtexCoord as PatchParam and general cleanup of the ptex name where it
doesn't belong
2013-05-17 09:47:44 -07:00
manuelk
c2cec239cd removing osd/patch.h (and cleaning up attending dependencies) 2013-05-17 09:06:40 -07:00
manuelk
ad3bacbbbb remove topology data from FarMesh and refactor uniform / adaptive
code paths using FarPatchTables for all serialized topological data.
2013-05-15 17:53:40 -07:00
Takahito Tejima
d8734690b7 msvc build fixes 2013-05-13 18:43:05 -07:00
manuelk
f4c448c52f doxy doc 2013-05-10 10:44:03 -07:00
Takahito Tejima
3eaf0362bd split patch descriptor into two parts, far intrinsic properties and osd's.
more OsdGLDrawContext clean up.
2013-05-09 13:14:02 -07:00
Takahito Tejima
31f7a215d0 reorder less than comparison to match with descriptor iterator 2013-05-09 10:53:22 -07:00
Takahito Tejima
a2bbed2a8b Merge branch 'dev' of https://github.com/manuelk/OpenSubdiv into dev
Conflicts:
	opensubdiv/far/patchTables.h
	opensubdiv/far/patchTablesFactory.h
2013-05-09 09:34:58 -07:00
Takahito Tejima
f592e90067 fix OsdGLDrawContext to follow far patchtables refactoring. 2013-05-09 09:23:01 -07:00
manuelk
20641e3b2c code cleanup / comments 2013-05-08 18:47:36 -07:00
manuelk
4230e12d95 first pass at refactoring FarPatchTables 2013-05-08 17:06:59 -07:00
manuelk
d82ce253eb minor fix for a doxygen typo : its @param (singular, not plural)
fixes #138
2013-04-22 18:17:30 -07:00
manuelk
7e63b20c58 Small refactoring of the DrawContext code to remove duplication of vertex / patch counting code.
fixes #153
2013-04-18 17:54:12 -07:00
manuelk
4bab37310d minor clean up of the patch parametric bitfields API
note : this is not using traditional bit-fields as we cannot guarantee that the CPU-side
compiler will match the bit-packing of the compilers used on the GPU-side.
2013-04-11 14:26:03 -07:00