25 #ifndef OPENSUBDIV3_FAR_STENCILTABLE_FACTORY_H 26 #define OPENSUBDIV3_FAR_STENCILTABLE_FACTORY_H 28 #include "../version.h" 30 #include "../far/patchTable.h" 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());
296 return static_cast<StencilTable const *>(
303 return static_cast<StencilTable const *>(
305 reinterpret_cast<BaseTable const **>(tables)));
312 bool factorize =
true) {
314 return static_cast<StencilTable const *>(
316 static_cast<BaseTable const *>(baseStencilTable),
317 static_cast<BaseTable const *>(localPointStencilTable),
325 bool factorize =
true) {
327 return static_cast<StencilTable const *>(
329 static_cast<BaseTable const *>(baseStencilTable),
330 static_cast<BaseTable const *>(localPointStencilTable),
339 bool factorize =
true) {
341 return static_cast<StencilTable const *>(
343 static_cast<BaseTable const *>(baseStencilTable),
344 static_cast<BaseTable const *>(localPointStencilTable),
345 channel, factorize));
350 class LimitStencilTable;
365 Options options = Options()) {
367 return static_cast<LimitStencilTable const *>(
371 static_cast<BaseTable const *>(cvStencils),
380 using namespace OPENSUBDIV_VERSION;
384 #endif // OPENSUBDIV3_FAR_STENCILTABLE_FACTORY_H static LimitStencilTable const * Create(TopologyRefiner const &refiner, LocationArrayVec const &locationArrays, StencilTable const *cvStencils=0, PatchTable const *patchTable=0, Options options=Options())
Descriptor for limit surface locations.
Container for arrays of parametric patches.
Limit stencil table class wrapping the template for compatibility.
REAL const * s
array of u coordinates
static StencilTable const * Create(TopologyRefiner const &refiner, Options options=Options())
unsigned int generate1stDerivatives
Generate weights for 1st derivatives.
static StencilTable const * AppendLocalPointStencilTableVarying(TopologyRefiner const &refiner, StencilTable const *baseStencilTable, StencilTable const *localPointStencilTable, bool factorize=true)
Stencil table factory class wrapping the template for compatibility.
unsigned int interpolationMode
interpolation mode
unsigned int generateOffsets
populate optional "_offsets" field
unsigned int generate2ndDerivatives
Generate weights for 2nd derivatives.
static StencilTable const * AppendLocalPointStencilTableFaceVarying(TopologyRefiner const &refiner, StencilTable const *baseStencilTable, StencilTable const *localPointStencilTable, int channel=0, bool factorize=true)
std::vector< LocationArray > LocationArrayVec
unsigned int generateControlVerts
generate stencils for control-vertices
face-varying primvar stencils
unsigned int generateIntermediateLevels
vertices at all levels or highest only
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.
A specialized factory for LimitStencilTable.
REAL const * t
array of v coordinates
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.
int numLocations
number of (u,v) coordinates in the array
unsigned int maxLevel
generate stencils up to 'maxLevel'
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)
Vertex stencil class wrapping the template for compatibility.
unsigned int interpolationMode
interpolation mode
A specialized factory for StencilTable.
unsigned int factorizeIntermediateLevels
Stores topology data for a specified set of refinement options.
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.
unsigned int fvarChannel
face-varying channel to use
Table of limit subdivision stencils.
Stencil table class wrapping the template for compatibility.
face-varying primvar stencils
Vertex stencil descriptor.
int ptexIdx
ptex face index
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.
Table of subdivision stencils.