24 #ifndef OPENSUBDIV3_VTR_FVAR_REFINEMENT_H 25 #define OPENSUBDIV3_VTR_FVAR_REFINEMENT_H 27 #include "../version.h" 29 #include "../sdc/types.h" 30 #include "../sdc/crease.h" 31 #include "../vtr/types.h" 32 #include "../vtr/refinement.h" 33 #include "../vtr/fvarLevel.h" 41 namespace OPENSUBDIV_VERSION {
59 class FVarRefinement {
61 FVarRefinement(Refinement
const& refinement, FVarLevel& parent, FVarLevel& child);
64 int getChildValueParentSource(
Index vIndex,
int sibling)
const {
65 return _childValueParentSource[_childFVar.getVertexValueOffset(vIndex, (
LocalIndex)sibling)];
73 void applyRefinement();
75 void estimateAndAllocateChildValues();
76 void populateChildValues();
77 void populateChildValuesFromFaceVertices();
78 void populateChildValuesFromEdgeVertices();
79 int populateChildValuesForEdgeVertex(
Index cVert,
Index pEdge);
80 void populateChildValuesFromVertexVertices();
81 int populateChildValuesForVertexVertex(
Index cVert,
Index pVert);
82 void trimAndFinalizeChildValues();
84 void propagateEdgeTags();
85 void propagateValueTags();
86 void propagateValueCreases();
87 void reclassifySemisharpValues();
94 Refinement
const & _refinement;
96 Level
const & _parentLevel;
97 FVarLevel
const & _parentFVar;
99 Level
const & _childLevel;
100 FVarLevel & _childFVar;
107 std::vector<LocalIndex> _childValueParentSource;
114 using namespace OPENSUBDIV_VERSION;
unsigned short LocalIndex