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