24 #ifndef OPENSUBDIV3_SDC_BILINEAR_SCHEME_H
25 #define OPENSUBDIV3_SDC_BILINEAR_SCHEME_H
27 #include "../version.h"
29 #include "../sdc/scheme.h"
32 namespace OPENSUBDIV_VERSION {
60 template <
typename EDGE,
typename MASK>
65 assignCreaseMaskForEdge(edge, mask);
69 template <
typename VERTEX,
typename MASK>
74 assignCornerMaskForVertex(vertex, mask);
82 template <
typename VERTEX,
typename MASK>
86 posMask.SetNumVertexWeights(1);
87 posMask.SetNumEdgeWeights(0);
88 posMask.SetNumFaceWeights(0);
89 posMask.SetFaceWeightsForFaceCenters(
false);
91 posMask.VertexWeight(0) = 1.0f;
95 template <
typename VERTEX,
typename MASK>
98 int const [2])
const {
100 assignCornerLimitMask(vertex, posMask);
104 template <
typename VERTEX,
typename MASK>
108 assignCornerLimitMask(vertex, posMask);
116 template <
typename VERTEX,
typename MASK>
119 MASK& tan1Mask, MASK& tan2Mask)
const {
121 tan1Mask.SetNumVertexWeights(1);
122 tan1Mask.SetNumEdgeWeights(2);
123 tan1Mask.SetNumFaceWeights(0);
124 tan1Mask.SetFaceWeightsForFaceCenters(
false);
126 tan2Mask.SetNumVertexWeights(1);
127 tan2Mask.SetNumEdgeWeights(2);
128 tan2Mask.SetNumFaceWeights(0);
129 tan2Mask.SetFaceWeightsForFaceCenters(
false);
131 tan1Mask.VertexWeight(0) = -1.0f;
132 tan1Mask.EdgeWeight(0) = 1.0f;
133 tan1Mask.EdgeWeight(1) = 0.0f;
135 tan2Mask.VertexWeight(0) = -1.0f;
136 tan2Mask.EdgeWeight(0) = 0.0f;
137 tan2Mask.EdgeWeight(1) = 1.0f;
141 template <
typename VERTEX,
typename MASK>
144 MASK& tan1Mask, MASK& tan2Mask,
int const [2])
const {
146 assignCornerLimitTangentMasks(vertex, tan1Mask, tan2Mask);
150 template <
typename VERTEX,
typename MASK>
153 MASK& tan1Mask, MASK& tan2Mask)
const {
155 assignCornerLimitTangentMasks(vertex, tan1Mask, tan2Mask);
161 using namespace OPENSUBDIV_VERSION;