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 {
271 LocationArrayVec
const & locationArrays,
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;
362 LocationArrayVec
const & locationArrays,
365 Options options = Options()) {
371 static_cast<BaseTable const *>(cvStencils),
380 using namespace OPENSUBDIV_VERSION;
384 #endif // OPENSUBDIV3_FAR_STENCILTABLE_FACTORY_H
unsigned int generateControlVerts
generate stencils for control-vertices
unsigned int generateOffsets
populate optional "_offsets" field
Table of limit subdivision stencils.
static StencilTable const * AppendLocalPointStencilTableFaceVarying(TopologyRefiner const &refiner, StencilTable const *baseStencilTable, StencilTable const *localPointStencilTable, int channel=0, bool factorize=true)
Stencil table factory class wrapping the template for compatibility.
unsigned int interpolationMode
interpolation mode
std::vector< LocationArray > LocationArrayVec
static StencilTable const * Create(TopologyRefiner const &refiner, Options options=Options())
int numLocations
number of (u,v) coordinates in the array
A specialized factory for StencilTable.
Stencil table class wrapping the template for compatibility.
A specialized factory for LimitStencilTable.
Container for arrays of parametric patches.
Limit stencil table class wrapping the template for compatibility.
static StencilTable const * AppendLocalPointStencilTable(TopologyRefiner const &refiner, StencilTable const *baseStencilTable, StencilTable const *localPointStencilTable, bool factorize=true)
unsigned int generate2ndDerivatives
Generate weights for 2nd derivatives.
REAL const * s
array of u coordinates
static LimitStencilTable const * Create(TopologyRefiner const &refiner, LocationArrayVec const &locationArrays, StencilTable const *cvStencils=0, PatchTable const *patchTable=0, Options options=Options())
REAL const * t
array of v coordinates
Stores topology data for a specified set of refinement options.
Stencil table factory class wrapping the template for compatibility.
Vertex stencil descriptor.
Descriptor for limit surface locations.
static StencilTable const * Create(int numTables, StencilTable const **tables)
face-varying primvar stencils
unsigned int interpolationMode
interpolation mode
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 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.
unsigned int generateIntermediateLevels
vertices at all levels or highest only
static StencilTableReal< REAL > const * Create(TopologyRefiner const &refiner, Options options=Options())
Instantiates StencilTable from TopologyRefiner that have been refined uniformly or adaptively...
face-varying primvar stencils
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.
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.
unsigned int factorizeIntermediateLevels
unsigned int maxLevel
generate stencils up to 'maxLevel'
Vertex stencil class wrapping the template for compatibility.
unsigned int fvarChannel
face-varying channel to use
static StencilTable const * AppendLocalPointStencilTableVarying(TopologyRefiner const &refiner, StencilTable const *baseStencilTable, StencilTable const *localPointStencilTable, bool factorize=true)
Table of subdivision stencils.
int ptexIdx
ptex face index
unsigned int generate1stDerivatives
Generate weights for 1st derivatives.