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"
41namespace OPENSUBDIV_VERSION {
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;
114using namespace OPENSUBDIV_VERSION;
unsigned short LocalIndex