[Bf-blender-cvs] [8bff6f319a1] blender2.8: Merge branch 'master' into blender2.8
Bastien Montagne
noreply at git.blender.org
Thu Jan 11 20:19:31 CET 2018
Commit: 8bff6f319a1f562e6d3595468a9ddba7bfec931c
Author: Bastien Montagne
Date: Thu Jan 11 20:19:18 2018 +0100
Branches: blender2.8
https://developer.blender.org/rB8bff6f319a1f562e6d3595468a9ddba7bfec931c
Merge branch 'master' into blender2.8
Conflicts:
source/blender/blenkernel/intern/multires.c
===================================================================
===================================================================
diff --cc source/blender/blenkernel/intern/multires.c
index 7ef4b588dcd,3fc052414eb..b6e3d048f0b
--- a/source/blender/blenkernel/intern/multires.c
+++ b/source/blender/blenkernel/intern/multires.c
@@@ -2174,7 -2221,57 +2221,57 @@@ static void multires_sync_levels(Scene
}
}
+ static void multires_apply_smat_cb(
+ void *__restrict userdata,
+ const int pidx,
+ const ParallelRangeTLS *__restrict UNUSED(tls))
+ {
+ MultiresThreadedData *tdata = userdata;
+
+ CCGElem **gridData = tdata->gridData;
+ CCGElem **subGridData = tdata->subGridData;
+ CCGKey *dm_key = tdata->key;
+ CCGKey *subdm_key = tdata->sub_key;
+ MPoly *mpoly = tdata->mpoly;
+ MDisps *mdisps = tdata->mdisps;
+ int *gridOffset = tdata->gridOffset;
+ int gridSize = tdata->gridSize;
+ int dGridSize = tdata->dGridSize;
+ int dSkip = tdata->dSkip;
+ float (*smat)[3] = tdata->smat;
+
+ const int numVerts = mpoly[pidx].totloop;
+ MDisps *mdisp = &mdisps[mpoly[pidx].loopstart];
+ int S, x, y, gIndex = gridOffset[pidx];
+
+ for (S = 0; S < numVerts; ++S, ++gIndex, mdisp++) {
+ CCGElem *grid = gridData[gIndex];
+ CCGElem *subgrid = subGridData[gIndex];
+ float (*dispgrid)[3] = mdisp->disps;
+
+ for (y = 0; y < gridSize; y++) {
+ for (x = 0; x < gridSize; x++) {
+ float *co = CCG_grid_elem_co(dm_key, grid, x, y);
+ float *sco = CCG_grid_elem_co(subdm_key, subgrid, x, y);
+ float *data = dispgrid[dGridSize * y * dSkip + x * dSkip];
+ float mat[3][3], disp[3];
+
+ /* construct tangent space matrix */
+ grid_tangent_matrix(mat, dm_key, x, y, grid);
+
+ /* scale subgrid coord and calculate displacement */
+ mul_m3_v3(smat, sco);
+ sub_v3_v3v3(disp, sco, co);
+
+ /* convert difference to tangent space */
+ invert_m3(mat);
+ mul_v3_m3v3(data, mat, disp);
+ }
+ }
+ }
+ }
+
-static void multires_apply_smat(Scene *scene, Object *ob, float smat[3][3])
+static void multires_apply_smat(const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, float smat[3][3])
{
DerivedMesh *dm = NULL, *cddm = NULL, *subdm = NULL;
CCGElem **gridData, **subGridData;
More information about the Bf-blender-cvs
mailing list