25 #ifndef OPENSUBDIV3_FAR_STENCILTABLE_FACTORY_H 
   26 #define OPENSUBDIV3_FAR_STENCILTABLE_FACTORY_H 
   28 #include "../version.h" 
   30 #include "../far/patchTable.h" 
   34 namespace OpenSubdiv {
 
   35 namespace OPENSUBDIV_VERSION {
 
   39 class TopologyRefiner;
 
   41 template <
typename REAL> 
class StencilReal;
 
   42 template <
typename REAL> 
class StencilTableReal;
 
   44 template <
typename REAL> 
class LimitStencilReal;
 
   45 template <
typename REAL> 
class LimitStencilTableReal;
 
   50 template <
typename REAL>
 
   51 class StencilTableFactoryReal {
 
  132                 bool factorize = 
true);
 
  152                 bool factorize = 
true) {
 
  154                 refiner, baseStencilTable, localPointStencilTable, factorize);
 
  179                 bool factorize = 
true);
 
  184     static void generateControlVertStencils(
 
  208 template <
typename REAL>
 
  209 class LimitStencilTableFactoryReal {
 
  274                 Options options = Options());
 
  305                         reinterpret_cast<BaseTable const **>(tables)));
 
  312                 bool factorize = 
true) {
 
  316                         static_cast<BaseTable const *>(baseStencilTable),
 
  317                         static_cast<BaseTable const *>(localPointStencilTable),
 
  325                 bool factorize = 
true) {
 
  329                         static_cast<BaseTable const *>(baseStencilTable),
 
  330                         static_cast<BaseTable const *>(localPointStencilTable),
 
  339                 bool factorize = 
true) {
 
  343                         static_cast<BaseTable const *>(baseStencilTable),
 
  344                         static_cast<BaseTable const *>(localPointStencilTable),
 
  345                         channel, factorize));
 
  350 class LimitStencilTable;
 
  365                 Options options = Options()) {
 
  371                         static_cast<BaseTable const *>(cvStencils),
 
  380 using namespace OPENSUBDIV_VERSION;
 
  384 #endif // OPENSUBDIV3_FAR_STENCILTABLE_FACTORY_H 
static StencilTable const * AppendLocalPointStencilTable(TopologyRefiner const &refiner, StencilTable const *baseStencilTable, StencilTable const *localPointStencilTable, bool factorize=true)
Stencil table factory class wrapping the template for compatibility. 
Vertex stencil descriptor. 
int ptexIdx
ptex face index 
static StencilTableReal< REAL > const * AppendLocalPointStencilTable(TopologyRefiner const &refiner, StencilTableReal< REAL > const *baseStencilTable, StencilTableReal< REAL > const *localPointStencilTable, bool factorize=true)
Utility function for stencil splicing for local point stencils. 
static StencilTableReal< REAL > const * Create(TopologyRefiner const &refiner, Options options=Options())
Instantiates StencilTable from TopologyRefiner that have been refined uniformly or adaptively...
static LimitStencilTableReal< REAL > const * Create(TopologyRefiner const &refiner, LocationArrayVec const &locationArrays, StencilTableReal< REAL > const *cvStencils=0, PatchTable const *patchTable=0, Options options=Options())
Instantiates LimitStencilTable from a TopologyRefiner that has been refined either uniformly or adapt...
static StencilTable const * Create(int numTables, StencilTable const **tables)
Limit stencil table class wrapping the template for compatibility. 
static StencilTableReal< REAL > const * AppendLocalPointStencilTableVarying(TopologyRefiner const &refiner, StencilTableReal< REAL > const *baseStencilTable, StencilTableReal< REAL > const *localPointStencilTable, bool factorize=true)
Utility function for stencil splicing for local point varying stencils. 
std::vector< LocationArray > LocationArrayVec
Descriptor for limit surface locations. 
unsigned int fvarChannel
face-varying channel to use 
Stores topology data for a specified set of refinement options. 
static StencilTable const * AppendLocalPointStencilTableFaceVarying(TopologyRefiner const &refiner, StencilTable const *baseStencilTable, StencilTable const *localPointStencilTable, int channel=0, bool factorize=true)
Vertex stencil class wrapping the template for compatibility. 
static LimitStencilTable const * Create(TopologyRefiner const &refiner, LocationArrayVec const &locationArrays, StencilTable const *cvStencils=0, PatchTable const *patchTable=0, Options options=Options())
static StencilTable const * Create(TopologyRefiner const &refiner, Options options=Options())
face-varying primvar stencils 
static StencilTableReal< REAL > const * AppendLocalPointStencilTableFaceVarying(TopologyRefiner const &refiner, StencilTableReal< REAL > const *baseStencilTable, StencilTableReal< REAL > const *localPointStencilTable, int channel=0, bool factorize=true)
Utility function for stencil splicing for local point face-varying stencils. 
Table of subdivision stencils. 
unsigned int factorizeIntermediateLevels
face-varying primvar stencils 
unsigned int interpolationMode
interpolation mode 
Container for arrays of parametric patches. 
A specialized factory for LimitStencilTable. 
static StencilTable const * AppendLocalPointStencilTableVarying(TopologyRefiner const &refiner, StencilTable const *baseStencilTable, StencilTable const *localPointStencilTable, bool factorize=true)
REAL const * t
array of v coordinates 
unsigned int generate2ndDerivatives
Generate weights for 2nd derivatives. 
unsigned int maxLevel
generate stencils up to 'maxLevel' 
unsigned int generateIntermediateLevels
vertices at all levels or highest only 
int numLocations
number of (u,v) coordinates in the array 
unsigned int generate1stDerivatives
Generate weights for 1st derivatives. 
A specialized factory for StencilTable. 
Stencil table class wrapping the template for compatibility. 
Table of limit subdivision stencils. 
unsigned int generateControlVerts
generate stencils for control-vertices 
unsigned int generateOffsets
populate optional "_offsets" field 
Stencil table factory class wrapping the template for compatibility. 
REAL const * s
array of u coordinates 
unsigned int interpolationMode
interpolation mode