25 #ifndef OPENSUBDIV3_FAR_PATCH_TABLE_FACTORY_H 26 #define OPENSUBDIV3_FAR_PATCH_TABLE_FACTORY_H 28 #include "../version.h" 30 #include "../far/topologyRefiner.h" 31 #include "../far/patchTable.h" 34 namespace OPENSUBDIV_VERSION {
104 return adaptiveOptions;
209 template <>
inline void PatchTableFactory::Options::SetPatchPrecision<float>() {
212 template <>
inline void PatchTableFactory::Options::SetFVarPatchPrecision<float>() {
213 fvarPatchPrecisionDouble =
false;
216 template <>
inline void PatchTableFactory::Options::SetPatchPrecision<double>() {
217 patchPrecisionDouble =
true;
219 template <>
inline void PatchTableFactory::Options::SetFVarPatchPrecision<double>() {
220 fvarPatchPrecisionDouble =
true;
227 using namespace OPENSUBDIV_VERSION;
unsigned int generateFVarTables
Generate face-varying patch tables.
unsigned int useInfSharpPatch
std::vector< PatchFaceTag > PatchTagVector
void SetEndCapType(EndCapType e)
Set endcap basis type.
unsigned int useInfSharpPatch
Use infinitely-sharp patch.
unsigned int _boundaryCount
unsigned int includeBaseLevelIndices
Include base level in patch point indices (Uniform mode only)
EndCapType
Choice for approximating irregular patches (end-caps)
unsigned int triangulateQuads
Triangulate 'QUADS' primitives (Uniform mode only)
unsigned int maxIsolationLevel
Cap adaptive feature isolation to the given level (max. 10)
unsigned int _boundaryMask
use BSpline-like patches (same patch type as regular)
unsigned int useSingleCreasePatch
Use single crease patch.
unsigned int considerFVarChannels
Vtr::ConstIndexArray ConstIndexArray
unsigned int generateLegacySharpCornerPatches
Generate sharp regular patches at smooth corners (legacy)
Public options for the PatchTable factory.
Stores topology data for a specified set of refinement options.
unsigned int endCapType
EndCapType.
void SetPatchPrecision()
Set precision of vertex patches.
unsigned int _boundaryIndex
unsigned int shareEndCapPatchPoints
void assignBoundaryPropertiesFromVertexMask(int boundaryVertexMask)
void SetFVarPatchPrecision()
Set precision of face-varying patches.
Adaptive refinement options.
Factory for constructing a PatchTable from a TopologyRefiner.
unsigned int useSingleCreasePatch
unsigned int _isSingleCrease
unsigned int generateVaryingTables
Generate varying patch tables.
unsigned int patchPrecisionDouble
Generate double-precision stencils for vertex patches.
EndCapType GetEndCapType() const
Get endcap basis type.
unsigned int includeFVarBaseLevelIndices
Include base level in face-varying patch point indices (Uniform mode only)
unsigned int _transitionMask
Obsolete internal struct not intended for public use – due to be deprecated.
void assignTransitionPropertiesFromEdgeMask(int boundaryVertexMask)
use linear patches (simple quads or tris)
Container for arrays of parametric patches.
TopologyRefiner::AdaptiveOptions GetRefineAdaptiveOptions() const
Determine adaptive refinement options to match assigned patch options.
unsigned int fvarPatchPrecisionDouble
Generate double-precision stencils for face-varying patches.
int const * fvarChannelIndices
List containing the indices of the channels selected for the factory.
unsigned int generateFVarLegacyLinearPatches
Generate all linear face-varying patches (legacy)
unsigned int _hasBoundaryEdge
static PatchTable * Create(TopologyRefiner const &refiner, Options options=Options(), ConstIndexArray selectedFaces=ConstIndexArray())
Instantiates a PatchTable from a client-provided TopologyRefiner.
legacy option for 2.x style Gregory patches (Catmark only)
use Gregory patches (highest quality, recommended default)
Options(unsigned int maxIsolation=10)
unsigned int generateVaryingLocalPoints
Generate local points with varying patches.
void assignBoundaryPropertiesFromEdgeMask(int boundaryEdgeMask)
unsigned int generateAllLevels
Generate levels from 'firstLevel' to 'maxLevel' (Uniform mode only)
int numFVarChannels
Number of channel indices and interpolation modes passed.