[Bf-blender-cvs] [8d945bf] master: OpenSubdiv: More proper loop for UV map evaluation on CPU
Sergey Sharybin
noreply at git.blender.org
Mon Aug 3 14:57:58 CEST 2015
Commit: 8d945bf3cbf0daf8d77ca47d111cc707d41c315a
Author: Sergey Sharybin
Date: Mon Aug 3 14:50:31 2015 +0200
Branches: master
https://developer.blender.org/rB8d945bf3cbf0daf8d77ca47d111cc707d41c315a
OpenSubdiv: More proper loop for UV map evaluation on CPU
This is just updating code from our side, actual evaluation is still
disabled because it doesn't support face farying data evaluation.
===================================================================
M source/blender/blenkernel/intern/subsurf_ccg.c
===================================================================
diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c b/source/blender/blenkernel/intern/subsurf_ccg.c
index 32cded7..71e14eb 100644
--- a/source/blender/blenkernel/intern/subsurf_ccg.c
+++ b/source/blender/blenkernel/intern/subsurf_ccg.c
@@ -461,27 +461,35 @@ static void set_subsurf_ccg_uv(CCGSubSurf *ss,
for (S = 0; S < numVerts; S++) {
for (y = 0; y < gridFaces; y++) {
for (x = 0; x < gridFaces; x++) {
- float grid_u = ((float)(x)) / (gridSize - 1),
- grid_v = ((float)(y)) / (gridSize - 1);
- float uv[2];
- /* TODO(sergey): Evaluator all 4 corners. */
- ccgSubSurf_evaluatorFVarUV(ss,
- index,
- S,
- grid_u, grid_v,
- uv);
+ const int delta[4][2] = {{0, 0},
+ {0, 1},
+ {1, 1},
+ {1, 0}};
+ float uv[4][2];
+ int i;
+ for (i = 0; i < 4; i++) {
+ const int dx = delta[i][0],
+ dy = delta[i][1];
+ const float grid_u = ((float)(x + dx)) / (gridSize - 1),
+ grid_v = ((float)(y + dy)) / (gridSize - 1);
+ ccgSubSurf_evaluatorFVarUV(ss,
+ index,
+ S,
+ grid_u, grid_v,
+ uv[i]);
+ }
if (tf) {
- copy_v2_v2(tf->uv[0], uv);
- copy_v2_v2(tf->uv[1], uv);
- copy_v2_v2(tf->uv[2], uv);
- copy_v2_v2(tf->uv[3], uv);
+ copy_v2_v2(tf->uv[0], uv[0]);
+ copy_v2_v2(tf->uv[1], uv[1]);
+ copy_v2_v2(tf->uv[2], uv[2]);
+ copy_v2_v2(tf->uv[3], uv[3]);
tf++;
}
if (mluv) {
- copy_v2_v2(mluv[0].uv, uv);
- copy_v2_v2(mluv[1].uv, uv);
- copy_v2_v2(mluv[2].uv, uv);
- copy_v2_v2(mluv[3].uv, uv);
+ copy_v2_v2(mluv[0].uv, uv[0]);
+ copy_v2_v2(mluv[1].uv, uv[1]);
+ copy_v2_v2(mluv[2].uv, uv[2]);
+ copy_v2_v2(mluv[3].uv, uv[3]);
mluv += 4;
}
}
More information about the Bf-blender-cvs
mailing list