25 #ifndef OPENSUBDIV3_FAR_PATCH_TABLE_FACTORY_H 26 #define OPENSUBDIV3_FAR_PATCH_TABLE_FACTORY_H 28 #include "../version.h" 30 #include "../far/patchTable.h" 33 namespace OPENSUBDIV_VERSION {
39 class TopologyRefiner;
90 generateAllLevels(false),
91 triangulateQuads(false),
92 useSingleCreasePatch(false),
93 maxIsolationLevel(maxIsolation),
94 endCapType(ENDCAP_GREGORY_BASIS),
95 shareEndCapPatchPoints(true),
96 generateFVarTables(false),
107 unsigned int generateAllLevels : 1,
108 triangulateQuads : 1,
109 useSingleCreasePatch : 1,
110 maxIsolationLevel : 4,
114 shareEndCapPatchPoints : 1,
118 generateFVarTables : 1;
138 struct AdaptiveContext;
153 static void identifyAdaptivePatches(AdaptiveContext & state);
155 static void populateAdaptivePatches(AdaptiveContext & state,
158 static void allocateVertexTables(
PatchTable * table,
int nlevels,
bool hasSharpness);
166 int boundaryMask,
int transitionMask,
PatchParam * coord);
168 static int gatherFVarData(AdaptiveContext & state,
169 int level,
Index faceIndex,
Index levelFaceOffset,
int rotation,
177 using namespace OPENSUBDIV_VERSION;
unsigned int _boundaryCount
Local patch parameterization descriptor.
unsigned int _boundaryIndex
Options(unsigned int maxIsolation=10)
static PatchTable * Create(TopologyRefiner const &refiner, Options options=Options())
Factory constructor for PatchTable.
int const * fvarChannelIndices
List containing the indices of the channels selected for the factory.
unsigned int _boundaryMask
void SetEndCapType(EndCapType e)
Set endcap patch type.
int numFVarChannels
Number of channel indices and interpolation modes passed.
unsigned int _transitionMask
EndCapType GetEndCapType() const
Get endcap patch type.
use bilinear quads (4 cp) as end-caps
unsigned int _isSingleCrease
Container for arrays of parametric patches.
unsigned int _hasBoundaryEdge
Stores topology data for a specified set of refinement options.
Object used to compute and query ptex face indices.
void assignBoundaryPropertiesFromVertexMask(int boundaryVertexMask)
use Gregory basis patches (20 cp) as end-caps
std::vector< PatchFaceTag > PatchTagVector
void assignTransitionPropertiesFromEdgeMask(int transitionMask)
void assignBoundaryPropertiesFromEdgeMask(int boundaryEdgeMask)
use BSpline basis patches (16 cp) as end-caps