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