[Bf-blender-cvs] [4cbfaa6f3f] master: Revert "UI: Add missing menu item"

2017-01-24 Thread Aaron Carlisle
Commit: 4cbfaa6f3f3c90fc0548aaa4de0c3fc3aea310c9
Author: Aaron Carlisle
Date:   Wed Jan 25 01:33:10 2017 -0500
Branches: master
https://developer.blender.org/rB4cbfaa6f3f3c90fc0548aaa4de0c3fc3aea310c9

Revert "UI: Add missing menu item"

This reverts commit 1ad842d432ccacd1f822d7f2b8ff3c542d25e976.

===

M   release/datafiles/locale
M   release/scripts/addons
M   release/scripts/addons_contrib
M   source/tools

===

diff --git a/release/datafiles/locale b/release/datafiles/locale
index c93ed11a47..88158191df 16
--- a/release/datafiles/locale
+++ b/release/datafiles/locale
@@ -1 +1 @@
-Subproject commit c93ed11a47b3016cf59711ec16de2e2e94c30e99
+Subproject commit 88158191df4da2109bbfd9b0816d891bbc7fc78b
diff --git a/release/scripts/addons b/release/scripts/addons
index 0a9f786d72..a746a84f8a 16
--- a/release/scripts/addons
+++ b/release/scripts/addons
@@ -1 +1 @@
-Subproject commit 0a9f786d72cd10e145d5bcff541a44acbb5869c2
+Subproject commit a746a84f8aaf3a4843eb3f4ce3f5a0464872077a
diff --git a/release/scripts/addons_contrib b/release/scripts/addons_contrib
index a8515cfdfe..029103debc 16
--- a/release/scripts/addons_contrib
+++ b/release/scripts/addons_contrib
@@ -1 +1 @@
-Subproject commit a8515cfdfe9a98127b592f36fcbe51b7e23b969a
+Subproject commit 029103debce43110f93295d7633931ec100d3017
diff --git a/source/tools b/source/tools
index b11375e890..6bbb68073b 16
--- a/source/tools
+++ b/source/tools
@@ -1 +1 @@
-Subproject commit b11375e89061303401376f7aeae42ac2fd64692a
+Subproject commit 6bbb68073bfa11e94bb0b3623db38f847037add7

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [a3e32e2ab5] surface-deform-modifier: Review: Multithread deform code

2017-01-24 Thread Luca Rood
Commit: a3e32e2ab5d5a4ed226cd3ba0cdd2a47233b81e5
Author: Luca Rood
Date:   Wed Jan 25 03:59:20 2017 -0200
Branches: surface-deform-modifier
https://developer.blender.org/rBa3e32e2ab5d5a4ed226cd3ba0cdd2a47233b81e5

Review: Multithread deform code

===

M   source/blender/modifiers/intern/MOD_surfacedeform.c

===

diff --git a/source/blender/modifiers/intern/MOD_surfacedeform.c 
b/source/blender/modifiers/intern/MOD_surfacedeform.c
index bfbf093b7f..957b900e70 100644
--- a/source/blender/modifiers/intern/MOD_surfacedeform.c
+++ b/source/blender/modifiers/intern/MOD_surfacedeform.c
@@ -80,6 +80,12 @@ typedef struct SDefBindWeightData {
unsigned int numbinds;
 } SDefBindWeightData;
 
+typedef struct SDefDeformData {
+   const SDefVert * const bind_verts;
+   const MVert * const mvert;
+   float (* const vertexCos)[3];
+} SDefDeformData;
+
 /* Bind result values */
 enum {
MOD_SDEF_BIND_RESULT_SUCCESS = 1,
@@ -95,7 +101,7 @@ enum {
MOD_SDEF_INFINITE_WEIGHT_ANGULAR = 1 << 0,
MOD_SDEF_INFINITE_WEIGHT_DIST_PROJ = 1 << 1,
MOD_SDEF_INFINITE_WEIGHT_DIST = 1 << 2,
-}
+};
 
 static void initData(ModifierData *md)
 {
@@ -1023,15 +1029,66 @@ static bool surfacedeformBind(SurfaceDeformModifierData 
*smd, float (*vertexCos)
return data.success == 1;
 }
 
+static void deformVert(void *userdata, void *UNUSED(userdata_chunk), const int 
index, const int UNUSED(threadid))
+{
+   const SDefDeformData * const data = (SDefDeformData *)userdata;
+   const SDefBind *sdbind = data->bind_verts[index].binds;
+   const MVert * const mvert = data->mvert;
+   float * const vertexCos = data->vertexCos[index];
+   float norm[3], temp[3];
+
+   zero_v3(vertexCos);
+
+   for (int j = 0; j < data->bind_verts[index].numbinds; j++, sdbind++) {
+   /* Mode-generic operations (allocate poly coordinates) */
+   float (*coords)[3] = MEM_mallocN(sizeof(*coords) * 
sdbind->numverts, "SDefDoPolyCoords");
+
+   for (int k = 0; k < sdbind->numverts; k++) {
+   copy_v3_v3(coords[k], mvert[sdbind->vert_inds[k]].co);
+   }
+
+   normal_poly_v3(norm, coords, sdbind->numverts);
+   zero_v3(temp);
+
+   /* -- looptri mode -- */
+   if (sdbind->mode == MOD_SDEF_MODE_LOOPTRI) {
+   madd_v3_v3fl(temp, mvert[sdbind->vert_inds[0]].co, 
sdbind->vert_weights[0]);
+   madd_v3_v3fl(temp, mvert[sdbind->vert_inds[1]].co, 
sdbind->vert_weights[1]);
+   madd_v3_v3fl(temp, mvert[sdbind->vert_inds[2]].co, 
sdbind->vert_weights[2]);
+   }
+   else {
+   /* -- ngon mode -- */
+   if (sdbind->mode == MOD_SDEF_MODE_NGON) {
+   for (int k = 0; k < sdbind->numverts; k++) {
+   madd_v3_v3fl(temp, coords[k], 
sdbind->vert_weights[k]);
+   }
+   }
+
+   /* -- centroid mode -- */
+   else if (sdbind->mode == MOD_SDEF_MODE_CENTROID) {
+   float cent[3];
+   mid_v3_v3_array(cent, coords, sdbind->numverts);
+
+   madd_v3_v3fl(temp, 
mvert[sdbind->vert_inds[0]].co, sdbind->vert_weights[0]);
+   madd_v3_v3fl(temp, 
mvert[sdbind->vert_inds[1]].co, sdbind->vert_weights[1]);
+   madd_v3_v3fl(temp, cent, 
sdbind->vert_weights[2]);
+   }
+   }
+
+   MEM_freeN(coords);
+
+   /* Apply normal offset (generic for all modes) */
+   madd_v3_v3fl(temp, norm, sdbind->normal_dist);
+
+   madd_v3_v3fl(vertexCos, temp, sdbind->influence);
+   }
+}
+
 static void surfacedeformModifier_do(ModifierData *md, float (*vertexCos)[3], 
unsigned int numverts)
 {
SurfaceDeformModifierData *smd = (SurfaceDeformModifierData *)md;
DerivedMesh *tdm;
unsigned int tnumpoly;
-   SDefVert *sdvert;
-   SDefBind *sdbind;
-   const MVert *mvert;
-   float norm[3], temp[3];
 
/* Exit function if bind flag is not set (free bind data if any) */
if (!(smd->flags & MOD_SDEF_BIND)) {
@@ -1071,58 +1128,12 @@ static void surfacedeformModifier_do(ModifierData *md, 
float (*vertexCos)[3], un
}
 
/* Actual vertex location update starts here */
-   mvert = tdm->getVertArray(tdm);
-   sdvert = smd->verts;
-
-   for (int i = 0; i < numverts; i++, sdvert++) {
-   sdbind = sdvert->binds;
-
-   zero_v3(vertexCos[i]);
+   SDefDeformData data = {.bind_verts = 

[Bf-blender-cvs] [96d66c7e4d] surface-deform-modifier: Review: Optimize numpoly calculation

2017-01-24 Thread Luca Rood
Commit: 96d66c7e4dd996cf59936b6954b93aab3cbf3e81
Author: Luca Rood
Date:   Wed Jan 25 02:56:25 2017 -0200
Branches: surface-deform-modifier
https://developer.blender.org/rB96d66c7e4dd996cf59936b6954b93aab3cbf3e81

Review: Optimize numpoly calculation

===

M   source/blender/modifiers/intern/MOD_surfacedeform.c

===

diff --git a/source/blender/modifiers/intern/MOD_surfacedeform.c 
b/source/blender/modifiers/intern/MOD_surfacedeform.c
index dd062c0623..89a475 100644
--- a/source/blender/modifiers/intern/MOD_surfacedeform.c
+++ b/source/blender/modifiers/intern/MOD_surfacedeform.c
@@ -22,13 +22,18 @@ typedef struct SDefAdjacency {
unsigned int index;
 } SDefAdjacency;
 
+typedef struct SDefAdjacencyArray {
+   SDefAdjacency *first;
+   unsigned int num; /* Careful, this is twice the number of polygons 
(avoids an extra loop) */
+} SDefAdjacencyArray;
+
 typedef struct SDefEdgePolys {
unsigned int polys[2], num;
 } SDefEdgePolys;
 
 typedef struct SDefBindCalcData {
BVHTreeFromMesh * const treeData;
-   const SDefAdjacency ** const vert_edges;
+   const SDefAdjacencyArray * const vert_edges;
const SDefEdgePolys * const edge_polys;
SDefVert * const bind_verts;
const MLoopTri * const looptri;
@@ -177,7 +182,7 @@ static void updateDepsgraph(ModifierData *md,
}
 }
 
-static void freeAdjacencyMap(SDefAdjacency ** const vert_edges, SDefAdjacency 
* const adj_ref, SDefEdgePolys * const edge_polys)
+static void freeAdjacencyMap(SDefAdjacencyArray * const vert_edges, 
SDefAdjacency * const adj_ref, SDefEdgePolys * const edge_polys)
 {
MEM_freeN(edge_polys);
 
@@ -187,7 +192,7 @@ static void freeAdjacencyMap(SDefAdjacency ** const 
vert_edges, SDefAdjacency *
 }
 
 static int buildAdjacencyMap(const MPoly *poly, const MEdge *edge, const MLoop 
* const mloop, const unsigned int numpoly, const unsigned int numedges,
-  SDefAdjacency ** const vert_edges, SDefAdjacency 
*adj, SDefEdgePolys * const edge_polys)
+  SDefAdjacencyArray * const vert_edges, 
SDefAdjacency *adj, SDefEdgePolys * const edge_polys)
 {
const MLoop *loop;
 
@@ -213,14 +218,16 @@ static int buildAdjacencyMap(const MPoly *poly, const 
MEdge *edge, const MLoop *
 
/* Find edges adjacent to vertices */
for (int i = 0; i < numedges; i++, edge++) {
-   adj->next = vert_edges[edge->v1];
+   adj->next = vert_edges[edge->v1].first;
adj->index = i;
-   vert_edges[edge->v1] = adj;
+   vert_edges[edge->v1].first = adj;
+   vert_edges[edge->v1].num += edge_polys[i].num;
adj++;
 
-   adj->next = vert_edges[edge->v2];
+   adj->next = vert_edges[edge->v2].first;
adj->index = i;
-   vert_edges[edge->v2] = adj;
+   vert_edges[edge->v2].first = adj;
+   vert_edges[edge->v2].num += edge_polys[i].num;
adj++;
}
 
@@ -345,7 +352,7 @@ static void freeBindData(SDefBindWeightData * const bwdata)
 BLI_INLINE SDefBindWeightData *computeBindWeights(SDefBindCalcData * const 
data, const float point_co[3])
 {
const unsigned int nearest = nearestVert(data, point_co);
-   const SDefAdjacency * const vert_edges = data->vert_edges[nearest];
+   const SDefAdjacency * const vert_edges = 
data->vert_edges[nearest].first;
const SDefEdgePolys * const edge_polys = data->edge_polys;
 
const SDefAdjacency *vedge;
@@ -366,11 +373,7 @@ BLI_INLINE SDefBindWeightData 
*computeBindWeights(SDefBindCalcData * const data,
return NULL;
}
 
-   for (vedge = vert_edges; vedge; vedge = vedge->next) {
-   bwdata->numpoly += edge_polys[vedge->index].num;
-   }
-
-   bwdata->numpoly /= 2;
+   bwdata->numpoly = data->vert_edges[nearest].num / 2;
 
bpoly = MEM_callocN(sizeof(*bpoly) * bwdata->numpoly, "SDefBindPoly");
if (bpoly == NULL) {
@@ -910,7 +913,7 @@ static bool surfacedeformBind(SurfaceDeformModifierData 
*smd, float (*vertexCos)
unsigned int tnumedges = tdm->getNumEdges(tdm);
unsigned int tnumverts = tdm->getNumVerts(tdm);
int adj_result;
-   SDefAdjacency **vert_edges;
+   SDefAdjacencyArray *vert_edges;
SDefAdjacency *adj_array;
SDefEdgePolys *edge_polys;
 
@@ -966,7 +969,7 @@ static bool surfacedeformBind(SurfaceDeformModifierData 
*smd, float (*vertexCos)
smd->numpoly = tnumpoly;
 
SDefBindCalcData data = {.treeData = ,
-.vert_edges = (const SDefAdjacency 
**)vert_edges,
+.vert_edges = vert_edges,
 .edge_polys = edge_polys,
   

[Bf-blender-cvs] [c38e19ca67] surface-deform-modifier: Review: Move stuff to helper func and more cleanup

2017-01-24 Thread Luca Rood
Commit: c38e19ca67b4e49a3da1f4161593b014236af11d
Author: Luca Rood
Date:   Wed Jan 25 03:17:25 2017 -0200
Branches: surface-deform-modifier
https://developer.blender.org/rBc38e19ca67b4e49a3da1f4161593b014236af11d

Review: Move stuff to helper func and more cleanup

===

M   source/blender/modifiers/intern/MOD_surfacedeform.c

===

diff --git a/source/blender/modifiers/intern/MOD_surfacedeform.c 
b/source/blender/modifiers/intern/MOD_surfacedeform.c
index 89a475..34b6b99dba 100644
--- a/source/blender/modifiers/intern/MOD_surfacedeform.c
+++ b/source/blender/modifiers/intern/MOD_surfacedeform.c
@@ -349,6 +349,17 @@ static void freeBindData(SDefBindWeightData * const bwdata)
MEM_freeN(bwdata);
 }
 
+BLI_INLINE float computeAngularWeight(const float point_angle, const float 
edgemid_angle)
+{
+   float weight;
+
+   weight = point_angle;
+   weight /= edgemid_angle;
+   weight *= M_PI_2;
+
+   return sinf(weight);
+}
+
 BLI_INLINE SDefBindWeightData *computeBindWeights(SDefBindCalcData * const 
data, const float point_co[3])
 {
const unsigned int nearest = nearestVert(data, point_co);
@@ -536,7 +547,7 @@ BLI_INLINE SDefBindWeightData 
*computeBindWeights(SDefBindCalcData * const data,
for (vedge = vert_edges; vedge; vedge = vedge->next) {
SDefBindPoly *bpolys[2];
const SDefEdgePolys *epolys;
-   float tmp1, tmp2;
+   float ang_weights[2];
unsigned int edge_ind = vedge->index;
unsigned int edge_on_poly[2];
 
@@ -545,8 +556,7 @@ BLI_INLINE SDefBindWeightData 
*computeBindWeights(SDefBindCalcData * const data,
/* Find bind polys corresponding to the edge's adjacent 
polys */
bpoly = bwdata->bind_polys;
 
-   for (int i = 0, j = 0; (i < bwdata->numpoly) && (j < 
epolys->num); bpoly++, i++)
-   {
+   for (int i = 0, j = 0; (i < bwdata->numpoly) && (j < 
epolys->num); bpoly++, i++) {
if (ELEM(bpoly->index, epolys->polys[0], 
epolys->polys[1])) {
bpolys[j] = bpoly;
 
@@ -562,27 +572,16 @@ BLI_INLINE SDefBindWeightData 
*computeBindWeights(SDefBindCalcData * const data,
}
 
/* Compute angular weight component */
-   /* Attention! Same operations have to be done in both 
conditions below! */
if (epolys->num == 1) {
-   tmp1 = 
bpolys[0]->point_edgemid_angles[edge_on_poly[0]];
-   tmp1 /= bpolys[0]->edgemid_angle;
-   tmp1 *= M_PI_2;
-   tmp1 = sinf(tmp1);
-
-   bpolys[0]->weight_angular *= tmp1 * tmp1;
+   ang_weights[0] = 
computeAngularWeight(bpolys[0]->point_edgemid_angles[edge_on_poly[0]], 
bpolys[0]->edgemid_angle);
+   bpolys[0]->weight_angular *= ang_weights[0] * 
ang_weights[0];
}
else if (epolys->num == 2) {
-   tmp1 = 
bpolys[0]->point_edgemid_angles[edge_on_poly[0]];
-   tmp2 = 
bpolys[1]->point_edgemid_angles[edge_on_poly[1]];
-   tmp1 /= bpolys[0]->edgemid_angle;
-   tmp2 /= bpolys[1]->edgemid_angle;
-   tmp1 *= M_PI_2;
-   tmp2 *= M_PI_2;
-   tmp1 = sinf(tmp1);
-   tmp2 = sinf(tmp2);
-
-   bpolys[0]->weight_angular *= tmp1 * tmp2;
-   bpolys[1]->weight_angular *= tmp1 * tmp2;
+   ang_weights[0] = 
computeAngularWeight(bpolys[0]->point_edgemid_angles[edge_on_poly[0]], 
bpolys[0]->edgemid_angle);
+   ang_weights[1] = 
computeAngularWeight(bpolys[1]->point_edgemid_angles[edge_on_poly[1]], 
bpolys[1]->edgemid_angle);
+
+   bpolys[0]->weight_angular *= ang_weights[0] * 
ang_weights[1];
+   bpolys[1]->weight_angular *= ang_weights[0] * 
ang_weights[1];
}
}
}
@@ -595,24 +594,26 @@ BLI_INLINE SDefBindWeightData 
*computeBindWeights(SDefBindCalcData * const data,
bpoly = bwdata->bind_polys;
 
for (int i = 0; i < bwdata->numpoly; bpoly++, i++) {
-   float tmp1 = bpoly->point_edgemid_angles[0] / 
bpoly->corner_edgemid_angles[0];
-   float tmp2 = bpoly->point_edgemid_angles[1] / 

[Bf-blender-cvs] [96f6ec07fb] surface-deform-modifier: Review: Add infinite weight flags enum

2017-01-24 Thread Luca Rood
Commit: 96f6ec07fb1041dfbc6a90dba0b10cdfac14a86e
Author: Luca Rood
Date:   Wed Jan 25 03:24:51 2017 -0200
Branches: surface-deform-modifier
https://developer.blender.org/rB96f6ec07fb1041dfbc6a90dba0b10cdfac14a86e

Review: Add infinite weight flags enum

===

M   source/blender/modifiers/intern/MOD_surfacedeform.c

===

diff --git a/source/blender/modifiers/intern/MOD_surfacedeform.c 
b/source/blender/modifiers/intern/MOD_surfacedeform.c
index 34b6b99dba..877b888a0e 100644
--- a/source/blender/modifiers/intern/MOD_surfacedeform.c
+++ b/source/blender/modifiers/intern/MOD_surfacedeform.c
@@ -90,6 +90,13 @@ enum {
MOD_SDEF_BIND_RESULT_OVERLAP_ERR = -4,
 };
 
+/* Infinite weight flags */
+enum {
+   MOD_SDEF_INFINITE_WEIGHT_ANGULAR = 1 << 0,
+   MOD_SDEF_INFINITE_WEIGHT_DIST_PROJ = 1 << 1,
+   MOD_SDEF_INFINITE_WEIGHT_DIST = 1 << 2,
+}
+
 static void initData(ModifierData *md)
 {
SurfaceDeformModifierData *smd = (SurfaceDeformModifierData *)md;
@@ -520,11 +527,11 @@ BLI_INLINE SDefBindWeightData 
*computeBindWeights(SDefBindCalcData * const data,
 
/* Check for inifnite weights, and compute 
angular data otherwise */
if (bpoly->weight_dist < FLT_EPSILON) {
-   inf_weight_flags |= 1 << 1;
-   inf_weight_flags |= 1 << 2;
+   inf_weight_flags |= 
MOD_SDEF_INFINITE_WEIGHT_DIST_PROJ;
+   inf_weight_flags |= 
MOD_SDEF_INFINITE_WEIGHT_DIST;
}
else if (bpoly->weight_dist_proj < FLT_EPSILON) 
{
-   inf_weight_flags |= 1 << 1;
+   inf_weight_flags |= 
MOD_SDEF_INFINITE_WEIGHT_DIST_PROJ;
}
else {
float cent_point_vec[2];
@@ -641,18 +648,18 @@ BLI_INLINE SDefBindWeightData 
*computeBindWeights(SDefBindCalcData * const data,
 
/* Re-check for infinite weights, now that all scalings 
and interpolations are computed */
if (bpoly->weight_dist < FLT_EPSILON) {
-   inf_weight_flags |= 1 << 1;
-   inf_weight_flags |= 1 << 2;
+   inf_weight_flags |= 
MOD_SDEF_INFINITE_WEIGHT_DIST_PROJ;
+   inf_weight_flags |= 
MOD_SDEF_INFINITE_WEIGHT_DIST;
}
else if (bpoly->weight_dist_proj < FLT_EPSILON) {
-   inf_weight_flags |= 1 << 1;
+   inf_weight_flags |= 
MOD_SDEF_INFINITE_WEIGHT_DIST_PROJ;
}
else if (bpoly->weight_angular < FLT_EPSILON) {
-   inf_weight_flags |= 1 << 0;
+   inf_weight_flags |= 
MOD_SDEF_INFINITE_WEIGHT_ANGULAR;
}
}
}
-   else if (!(inf_weight_flags & (1 << 2))) {
+   else if (!(inf_weight_flags & MOD_SDEF_INFINITE_WEIGHT_DIST)) {
bpoly = bwdata->bind_polys;
 
for (int i = 0; i < bwdata->numpoly; bpoly++, i++) {
@@ -662,7 +669,7 @@ BLI_INLINE SDefBindWeightData 
*computeBindWeights(SDefBindCalcData * const data,
 
/* Re-check for infinite weights, now that all scalings 
and interpolations are computed */
if (bpoly->weight_dist < FLT_EPSILON) {
-   inf_weight_flags |= 1 << 2;
+   inf_weight_flags |= 
MOD_SDEF_INFINITE_WEIGHT_DIST;
}
}
}
@@ -672,14 +679,14 @@ BLI_INLINE SDefBindWeightData 
*computeBindWeights(SDefBindCalcData * const data,
 
for (int i = 0; i < bwdata->numpoly; bpoly++, i++) {
/* Weight computation from components */
-   if (inf_weight_flags & 1 << 2) {
+   if (inf_weight_flags & MOD_SDEF_INFINITE_WEIGHT_DIST) {
bpoly->weight = bpoly->weight_dist < FLT_EPSILON ? 1.0f 
: 0.0f;
}
-   else if (inf_weight_flags & 1 << 1) {
+   else if (inf_weight_flags & MOD_SDEF_INFINITE_WEIGHT_DIST_PROJ) 
{
bpoly->weight = bpoly->weight_dist_proj < FLT_EPSILON ?
1.0f / bpoly->weight_dist : 0.0f;
}
-   else if (inf_weight_flags & 1 << 0) {
+   else if (inf_weight_flags & MOD_SDEF_INFINITE_WEIGHT_ANGULAR) {
bpoly->weight = bpoly->weight_angular < FLT_EPSILON ?
   

[Bf-blender-cvs] [e843f42e66] surface-deform-modifier: Review: Cleanup

2017-01-24 Thread Luca Rood
Commit: e843f42e6615978af8450a55d582c3ae4db9f4d6
Author: Luca Rood
Date:   Wed Jan 25 03:27:07 2017 -0200
Branches: surface-deform-modifier
https://developer.blender.org/rBe843f42e6615978af8450a55d582c3ae4db9f4d6

Review: Cleanup

===

M   source/blender/modifiers/intern/MOD_surfacedeform.c

===

diff --git a/source/blender/modifiers/intern/MOD_surfacedeform.c 
b/source/blender/modifiers/intern/MOD_surfacedeform.c
index 877b888a0e..bfbf093b7f 100644
--- a/source/blender/modifiers/intern/MOD_surfacedeform.c
+++ b/source/blender/modifiers/intern/MOD_surfacedeform.c
@@ -987,7 +987,7 @@ static bool surfacedeformBind(SurfaceDeformModifierData 
*smd, float (*vertexCos)
 .bind_verts = smd->verts,
 .vertexCos = vertexCos,
 .falloff = smd->falloff,
-.success = 1};
+.success = MOD_SDEF_BIND_RESULT_SUCCESS};
 
BLI_task_parallel_range_ex(0, numverts, , NULL, 0, bindVert,
   numverts > 1, false);

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [46821f072d] surface-deform-modifier: Review: Join allocations and some bpoly refactor

2017-01-24 Thread Luca Rood
Commit: 46821f072d042a955acdf5e33619b946535b3392
Author: Luca Rood
Date:   Wed Jan 25 02:28:32 2017 -0200
Branches: surface-deform-modifier
https://developer.blender.org/rB46821f072d042a955acdf5e33619b946535b3392

Review: Join allocations and some bpoly refactor

===

M   source/blender/modifiers/intern/MOD_surfacedeform.c

===

diff --git a/source/blender/modifiers/intern/MOD_surfacedeform.c 
b/source/blender/modifiers/intern/MOD_surfacedeform.c
index 344b834df2..dd062c0623 100644
--- a/source/blender/modifiers/intern/MOD_surfacedeform.c
+++ b/source/blender/modifiers/intern/MOD_surfacedeform.c
@@ -42,7 +42,6 @@ typedef struct SDefBindCalcData {
 } SDefBindCalcData;
 
 typedef struct SDefBindPoly {
-   struct SDefBindPoly *next;
float (*coords)[3];
float (*coords_v2)[2];
float point_v2[2];
@@ -72,6 +71,7 @@ typedef struct SDefBindPoly {
 
 typedef struct SDefBindWeightData {
SDefBindPoly *bind_polys;
+   unsigned int numpoly;
unsigned int numbinds;
 } SDefBindWeightData;
 
@@ -328,15 +328,15 @@ BLI_INLINE int isPolyValid(const float coords[][2], const 
unsigned int nr)
 
 static void freeBindData(SDefBindWeightData * const bwdata)
 {
-   SDefBindPoly *bpoly;
-
-   for (bpoly = bwdata->bind_polys; bpoly; bpoly = bwdata->bind_polys) {
-   bwdata->bind_polys = bpoly->next;
+   SDefBindPoly *bpoly = bwdata->bind_polys;
 
-   MEM_SAFE_FREE(bpoly->coords);
-   MEM_SAFE_FREE(bpoly->coords_v2);
+   if (bwdata->bind_polys) {
+   for (int i = 0; i < bwdata->numpoly; bpoly++, i++) {
+   MEM_SAFE_FREE(bpoly->coords);
+   MEM_SAFE_FREE(bpoly->coords_v2);
+   }
 
-   MEM_freeN(bpoly);
+   MEM_freeN(bwdata->bind_polys);
}
 
MEM_freeN(bwdata);
@@ -359,7 +359,6 @@ BLI_INLINE SDefBindWeightData 
*computeBindWeights(SDefBindCalcData * const data,
float avg_point_dist = 0.0f;
float tot_weight = 0.0f;
int inf_weight_flags = 0;
-   unsigned int numpoly = 0;
 
bwdata = MEM_callocN(sizeof(*bwdata), "SDefBindWeightData");
if (bwdata == NULL) {
@@ -367,39 +366,47 @@ BLI_INLINE SDefBindWeightData 
*computeBindWeights(SDefBindCalcData * const data,
return NULL;
}
 
+   for (vedge = vert_edges; vedge; vedge = vedge->next) {
+   bwdata->numpoly += edge_polys[vedge->index].num;
+   }
+
+   bwdata->numpoly /= 2;
+
+   bpoly = MEM_callocN(sizeof(*bpoly) * bwdata->numpoly, "SDefBindPoly");
+   if (bpoly == NULL) {
+   freeBindData(bwdata);
+   data->success = MOD_SDEF_BIND_RESULT_MEM_ERR;
+   return NULL;
+   }
+
+   bwdata->bind_polys = bpoly;
+
/* Loop over all adjacent edges, and build the SDefBindPoly data for 
each poly adjacent to those */
for (vedge = vert_edges; vedge; vedge = vedge->next) {
unsigned int edge_ind = vedge->index;
 
for (int i = 0; i < edge_polys[edge_ind].num; i++) {
-   for (bpoly = bwdata->bind_polys; bpoly; bpoly = 
bpoly->next) {
-   if (bpoly->index == 
edge_polys[edge_ind].polys[i]) {
-   break;
+   {
+   bpoly = bwdata->bind_polys;
+
+   for (int j = 0; j < bwdata->numpoly; bpoly++, 
j++) {
+   /* If coords isn't allocated, we have 
reached the first uninitialized bpoly */
+   if ((bpoly->index == 
edge_polys[edge_ind].polys[i]) || (!bpoly->coords)) {
+   break;
+   }
}
}
 
/* Check if poly was already created by another edge or 
still has to be initialized */
-   if (!bpoly || bpoly->index != 
edge_polys[edge_ind].polys[i]) {
+   if (!bpoly->coords) {
float angle;
float axis[3];
float tmp_vec_v2[2];
int is_poly_valid;
 
-   /* SDefBindPoly initialization */
-   bpoly = MEM_mallocN(sizeof(*bpoly), 
"SDefBindPoly");
-   if (bpoly == NULL) {
-   freeBindData(bwdata);
-   data->success = 
MOD_SDEF_BIND_RESULT_MEM_ERR;
-   return NULL;
-   }
-
-   bpoly->next = bwdata->bind_polys;
 

[Bf-blender-cvs] [a300f80043] surface-deform-modifier: Review: Inline loop indices

2017-01-24 Thread Luca Rood
Commit: a300f8004387f8748d403be0e30eacd59dcf8e9d
Author: Luca Rood
Date:   Mon Jan 23 18:43:11 2017 -0200
Branches: surface-deform-modifier
https://developer.blender.org/rBa300f8004387f8748d403be0e30eacd59dcf8e9d

Review: Inline loop indices

Also fixed endian switch sign, and UI Python thingy...

===

M   release/scripts/startup/bl_ui/properties_data_modifier.py
M   source/blender/blenloader/intern/readfile.c
M   source/blender/blenloader/intern/writefile.c
M   source/blender/modifiers/intern/MOD_surfacedeform.c

===

diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py 
b/release/scripts/startup/bl_ui/properties_data_modifier.py
index 74227cedf4..68e1b3b210 100644
--- a/release/scripts/startup/bl_ui/properties_data_modifier.py
+++ b/release/scripts/startup/bl_ui/properties_data_modifier.py
@@ -957,7 +957,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
 layout.separator()
 
 col = layout.column()
-col.enabled = bool(md.target)
+col.active = md.target is not None
 
 if md.is_bound:
 col.operator("object.surfacedeform_bind", text="Unbind")
diff --git a/source/blender/blenloader/intern/readfile.c 
b/source/blender/blenloader/intern/readfile.c
index 5be3dcaa32..3bebb3f38a 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -5304,22 +5304,21 @@ static void direct_link_modifiers(FileData *fd, 
ListBase *lb)
}
else if (md->type == eModifierType_SurfaceDeform) {
SurfaceDeformModifierData *smd = 
(SurfaceDeformModifierData *)md;
-   int i, j;
 
smd->verts = newdataadr(fd, smd->verts);
 
if (smd->verts) {
-   for (i = 0; i < smd->numverts; i++) {
+   for (int i = 0; i < smd->numverts; i++) {
smd->verts[i].binds = newdataadr(fd, 
smd->verts[i].binds);
 
if (smd->verts[i].binds) {
-   for (j = 0; j < 
smd->verts[i].numbinds; j++) {
+   for (int j = 0; j < 
smd->verts[i].numbinds; j++) {

smd->verts[i].binds[j].vert_inds = newdataadr(fd, 
smd->verts[i].binds[j].vert_inds);

smd->verts[i].binds[j].vert_weights = newdataadr(fd, 
smd->verts[i].binds[j].vert_weights);
 
if (fd->flags & 
FD_FLAGS_SWITCH_ENDIAN) {
if 
(smd->verts[i].binds[j].vert_inds)
-   
BLI_endian_switch_int32_array(smd->verts[i].binds[j].vert_inds, 
smd->verts[i].binds[j].numverts);
+   
BLI_endian_switch_uint32_array(smd->verts[i].binds[j].vert_inds, 
smd->verts[i].binds[j].numverts);
 
if 
(smd->verts[i].binds[j].vert_weights) {
if 
(smd->verts[i].binds[j].mode == MOD_SDEF_MODE_CENTROID ||
diff --git a/source/blender/blenloader/intern/writefile.c 
b/source/blender/blenloader/intern/writefile.c
index 86a7a5a3f3..6066529951 100644
--- a/source/blender/blenloader/intern/writefile.c
+++ b/source/blender/blenloader/intern/writefile.c
@@ -1832,16 +1832,15 @@ static void write_modifiers(WriteData *wd, ListBase 
*modbase)
}
else if (md->type == eModifierType_SurfaceDeform) {
SurfaceDeformModifierData *smd = 
(SurfaceDeformModifierData *)md;
-   int i, j;
 
writestruct(wd, DATA, SDefVert, smd->numverts, 
smd->verts);
 
if (smd->verts) {
-   for (i = 0; i < smd->numverts; i++) {
+   for (int i = 0; i < smd->numverts; i++) {
writestruct(wd, DATA, SDefBind, 
smd->verts[i].numbinds, smd->verts[i].binds);
 
if (smd->verts[i].binds) {
-   for (j = 0; j < 
smd->verts[i].numbinds; j++) {
+   for (int j = 0; j < 
smd->verts[i].numbinds; j++) {
writedata(wd, DATA, 
sizeof(int) * smd->verts[i].binds[j].numverts, 
smd->verts[i].binds[j].vert_inds);
 
if 
(smd->verts[i].binds[j].mode == 

[Bf-blender-cvs] [8c220c57f9] surface-deform-modifier: Review: More cleanup...

2017-01-24 Thread Luca Rood
Commit: 8c220c57f97ff5bdd6801f7f60e057217d597326
Author: Luca Rood
Date:   Mon Jan 23 19:36:20 2017 -0200
Branches: surface-deform-modifier
https://developer.blender.org/rB8c220c57f97ff5bdd6801f7f60e057217d597326

Review: More cleanup...

===

M   source/blender/blenloader/intern/writefile.c
M   source/blender/modifiers/intern/MOD_surfacedeform.c

===

diff --git a/source/blender/blenloader/intern/writefile.c 
b/source/blender/blenloader/intern/writefile.c
index 6066529951..4ed878264f 100644
--- a/source/blender/blenloader/intern/writefile.c
+++ b/source/blender/blenloader/intern/writefile.c
@@ -1845,9 +1845,12 @@ static void write_modifiers(WriteData *wd, ListBase 
*modbase)
 
if 
(smd->verts[i].binds[j].mode == MOD_SDEF_MODE_CENTROID ||

smd->verts[i].binds[j].mode == MOD_SDEF_MODE_LOOPTRI)
+   {
writedata(wd, 
DATA, sizeof(float) * 3, smd->verts[i].binds[j].vert_weights);
-   else
+   }
+   else {
writedata(wd, 
DATA, sizeof(float) * smd->verts[i].binds[j].numverts, 
smd->verts[i].binds[j].vert_weights);
+   }
}
}
}
diff --git a/source/blender/modifiers/intern/MOD_surfacedeform.c 
b/source/blender/modifiers/intern/MOD_surfacedeform.c
index 487af7d944..9362499ba6 100644
--- a/source/blender/modifiers/intern/MOD_surfacedeform.c
+++ b/source/blender/modifiers/intern/MOD_surfacedeform.c
@@ -28,7 +28,7 @@ typedef struct SDefEdgePolys {
 
 typedef struct SDefBindCalcData {
BVHTreeFromMesh * const treeData;
-   const SDefAdjacency * const * const vert_edges;
+   const SDefAdjacency ** const vert_edges;
const SDefEdgePolys * const edge_polys;
SDefVert * const bind_verts;
const MLoopTri * const looptri;

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [cf660b2a02] surface-deform-modifier: Review: Fix depsgraph relation

2017-01-24 Thread Luca Rood
Commit: cf660b2a02ac0c9806a1cf1267d9141836114295
Author: Luca Rood
Date:   Mon Jan 23 21:12:12 2017 -0200
Branches: surface-deform-modifier
https://developer.blender.org/rBcf660b2a02ac0c9806a1cf1267d9141836114295

Review: Fix depsgraph relation

===

M   source/blender/modifiers/intern/MOD_surfacedeform.c

===

diff --git a/source/blender/modifiers/intern/MOD_surfacedeform.c 
b/source/blender/modifiers/intern/MOD_surfacedeform.c
index f9791f3361..6a23eea3b6 100644
--- a/source/blender/modifiers/intern/MOD_surfacedeform.c
+++ b/source/blender/modifiers/intern/MOD_surfacedeform.c
@@ -151,9 +151,7 @@ static void updateDepgraph(ModifierData *md, DagForest 
*forest,
if (smd->target) {
DagNode *curNode = dag_get_node(forest, smd->target);
 
-   dag_add_relation(forest, curNode, obNode,
-DAG_RL_DATA_DATA | DAG_RL_OB_DATA | 
DAG_RL_DATA_OB | DAG_RL_OB_OB,
-"Surface Deform Modifier");
+   dag_add_relation(forest, curNode, obNode, DAG_RL_DATA_DATA, 
"Surface Deform Modifier");
}
 }

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [f870343208] surface-deform-modifier: Review: Combine allocations and minor cleanup

2017-01-24 Thread Luca Rood
Commit: f870343208735d585b5a15a7fd457083212ed1b3
Author: Luca Rood
Date:   Tue Jan 24 18:47:38 2017 -0200
Branches: surface-deform-modifier
https://developer.blender.org/rBf870343208735d585b5a15a7fd457083212ed1b3

Review: Combine allocations and minor cleanup

===

M   source/blender/modifiers/intern/MOD_surfacedeform.c

===

diff --git a/source/blender/modifiers/intern/MOD_surfacedeform.c 
b/source/blender/modifiers/intern/MOD_surfacedeform.c
index 1fd2758c63..344b834df2 100644
--- a/source/blender/modifiers/intern/MOD_surfacedeform.c
+++ b/source/blender/modifiers/intern/MOD_surfacedeform.c
@@ -177,28 +177,19 @@ static void updateDepsgraph(ModifierData *md,
}
 }
 
-static void freeAdjacencyMap(SDefAdjacency ** const vert_edges, SDefEdgePolys 
* const edge_polys, const unsigned int numverts)
+static void freeAdjacencyMap(SDefAdjacency ** const vert_edges, SDefAdjacency 
* const adj_ref, SDefEdgePolys * const edge_polys)
 {
-   SDefAdjacency *adj;
-
MEM_freeN(edge_polys);
 
-   for (int i = 0; i < numverts; i++) {
-   for (adj = vert_edges[i]; adj; adj = vert_edges[i]) {
-   vert_edges[i] = adj->next;
-
-   MEM_freeN(adj);
-   }
-   }
+   MEM_freeN(adj_ref);
 
MEM_freeN(vert_edges);
 }
 
 static int buildAdjacencyMap(const MPoly *poly, const MEdge *edge, const MLoop 
* const mloop, const unsigned int numpoly, const unsigned int numedges,
-  SDefAdjacency ** const vert_edges, SDefEdgePolys 
* const edge_polys)
+  SDefAdjacency ** const vert_edges, SDefAdjacency 
*adj, SDefEdgePolys * const edge_polys)
 {
const MLoop *loop;
-   SDefAdjacency *adj;
 
/* Fing polygons adjacent to edges */
for (int i = 0; i < numpoly; i++, poly++) {
@@ -222,23 +213,15 @@ static int buildAdjacencyMap(const MPoly *poly, const 
MEdge *edge, const MLoop *
 
/* Find edges adjacent to vertices */
for (int i = 0; i < numedges; i++, edge++) {
-   adj = MEM_mallocN(sizeof(*adj), "SDefVertEdge");
-   if (adj == NULL) {
-   return MOD_SDEF_BIND_RESULT_MEM_ERR;
-   }
-
adj->next = vert_edges[edge->v1];
adj->index = i;
vert_edges[edge->v1] = adj;
-
-   adj = MEM_mallocN(sizeof(*adj), "SDefVertEdge");
-   if (adj == NULL) {
-   return MOD_SDEF_BIND_RESULT_MEM_ERR;
-   }
+   adj++;
 
adj->next = vert_edges[edge->v2];
adj->index = i;
vert_edges[edge->v2] = adj;
+   adj++;
}
 
return MOD_SDEF_BIND_RESULT_SUCCESS;
@@ -328,7 +311,7 @@ BLI_INLINE int isPolyValid(const float coords[][2], const 
unsigned int nr)
for (int i = 0; i < nr; i++) {
sub_v2_v2v2(curr_vec, coords[i], prev_co);
 
-   if (len_v2(curr_vec) < FLT_EPSILON) {
+   if (len_squared_v2(curr_vec) < FLT_EPSILON) {
return MOD_SDEF_BIND_RESULT_OVERLAP_ERR;
}
 
@@ -907,6 +890,7 @@ static bool surfacedeformBind(SurfaceDeformModifierData 
*smd, float (*vertexCos)
unsigned int tnumverts = tdm->getNumVerts(tdm);
int adj_result;
SDefAdjacency **vert_edges;
+   SDefAdjacency *adj_array;
SDefEdgePolys *edge_polys;
 
vert_edges = MEM_callocN(sizeof(*vert_edges) * tnumverts, 
"SDefVertEdgeMap");
@@ -915,45 +899,42 @@ static bool surfacedeformBind(SurfaceDeformModifierData 
*smd, float (*vertexCos)
return false;
}
 
+   adj_array = MEM_mallocN(sizeof(*adj_array) * tnumedges * 2, 
"SDefVertEdge");
+   if (adj_array == NULL) {
+   modifier_setError((ModifierData *)smd, "Out of memory");
+   MEM_freeN(vert_edges);
+   return false;
+   }
+
edge_polys = MEM_callocN(sizeof(*edge_polys) * tnumedges, 
"SDefEdgeFaceMap");
if (edge_polys == NULL) {
modifier_setError((ModifierData *)smd, "Out of memory");
MEM_freeN(vert_edges);
+   MEM_freeN(adj_array);
return false;
}
 
smd->verts = MEM_mallocN(sizeof(*smd->verts) * numverts, 
"SDefBindVerts");
if (smd->verts == NULL) {
modifier_setError((ModifierData *)smd, "Out of memory");
-   MEM_freeN(vert_edges);
-   MEM_freeN(edge_polys);
+   freeAdjacencyMap(vert_edges, adj_array, edge_polys);
return false;
}
 
bvhtree_from_mesh_looptri(, tdm, 0.0, 2, 6);
if (treeData.tree == NULL) {
modifier_setError((ModifierData *)smd, "Out of memory");
-   MEM_freeN(vert_edges);
-   

[Bf-blender-cvs] [cf1a7e3944] surface-deform-modifier: Review: Report errors in UI and some more cleanup

2017-01-24 Thread Luca Rood
Commit: cf1a7e39441b9c5cdf730a138746360d88b3c7ea
Author: Luca Rood
Date:   Tue Jan 24 17:58:54 2017 -0200
Branches: surface-deform-modifier
https://developer.blender.org/rBcf1a7e39441b9c5cdf730a138746360d88b3c7ea

Review: Report errors in UI and some more cleanup

===

M   source/blender/makesdna/DNA_modifier_types.h
M   source/blender/modifiers/intern/MOD_surfacedeform.c

===

diff --git a/source/blender/makesdna/DNA_modifier_types.h 
b/source/blender/makesdna/DNA_modifier_types.h
index df052926d1..0c17909db2 100644
--- a/source/blender/makesdna/DNA_modifier_types.h
+++ b/source/blender/makesdna/DNA_modifier_types.h
@@ -1606,8 +1606,8 @@ enum {
 /* Surface Deform vertex bind modes */
 enum {
MOD_SDEF_MODE_LOOPTRI = 0,
-   MOD_SDEF_MODE_NGON= 1,
-   MOD_SDEF_MODE_CENTROID  = 2,
+   MOD_SDEF_MODE_NGON = 1,
+   MOD_SDEF_MODE_CENTROID = 2,
 };
 
 #define MOD_MESHSEQ_READ_ALL \
diff --git a/source/blender/modifiers/intern/MOD_surfacedeform.c 
b/source/blender/modifiers/intern/MOD_surfacedeform.c
index 6a23eea3b6..1fd2758c63 100644
--- a/source/blender/modifiers/intern/MOD_surfacedeform.c
+++ b/source/blender/modifiers/intern/MOD_surfacedeform.c
@@ -75,9 +75,19 @@ typedef struct SDefBindWeightData {
unsigned int numbinds;
 } SDefBindWeightData;
 
+/* Bind result values */
+enum {
+   MOD_SDEF_BIND_RESULT_SUCCESS = 1,
+   MOD_SDEF_BIND_RESULT_GENERIC_ERR = 0,
+   MOD_SDEF_BIND_RESULT_MEM_ERR = -1,
+   MOD_SDEF_BIND_RESULT_NONMANY_ERR = -2,
+   MOD_SDEF_BIND_RESULT_CONCAVE_ERR = -3,
+   MOD_SDEF_BIND_RESULT_OVERLAP_ERR = -4,
+};
+
 static void initData(ModifierData *md)
 {
-   SurfaceDeformModifierData *smd = (SurfaceDeformModifierData *) md;
+   SurfaceDeformModifierData *smd = (SurfaceDeformModifierData *)md;
smd->target = NULL;
smd->verts = NULL;
smd->flags = 0;
@@ -86,7 +96,7 @@ static void initData(ModifierData *md)
 
 static void freeData(ModifierData *md)
 {
-   SurfaceDeformModifierData *smd = (SurfaceDeformModifierData *) md;
+   SurfaceDeformModifierData *smd = (SurfaceDeformModifierData *)md;
 
if (smd->verts) {
for (int i = 0; i < smd->numverts; i++) {
@@ -107,8 +117,8 @@ static void freeData(ModifierData *md)
 
 static void copyData(ModifierData *md, ModifierData *target)
 {
-   SurfaceDeformModifierData *smd = (SurfaceDeformModifierData *) md;
-   SurfaceDeformModifierData *tsmd = (SurfaceDeformModifierData *) target;
+   SurfaceDeformModifierData *smd = (SurfaceDeformModifierData *)md;
+   SurfaceDeformModifierData *tsmd = (SurfaceDeformModifierData *)target;
 
*tsmd = *smd;
 
@@ -135,7 +145,7 @@ static void copyData(ModifierData *md, ModifierData *target)
 
 static void foreachObjectLink(ModifierData *md, Object *ob, ObjectWalkFunc 
walk, void *userData)
 {
-   SurfaceDeformModifierData *smd = (SurfaceDeformModifierData *) md;
+   SurfaceDeformModifierData *smd = (SurfaceDeformModifierData *)md;
 
walk(userData, ob, >target, IDWALK_NOP);
 }
@@ -146,7 +156,7 @@ static void updateDepgraph(ModifierData *md, DagForest 
*forest,
Object *UNUSED(ob),
DagNode *obNode)
 {
-   SurfaceDeformModifierData *smd = (SurfaceDeformModifierData *) md;
+   SurfaceDeformModifierData *smd = (SurfaceDeformModifierData *)md;
 
if (smd->target) {
DagNode *curNode = dag_get_node(forest, smd->target);
@@ -205,8 +215,7 @@ static int buildAdjacencyMap(const MPoly *poly, const MEdge 
*edge, const MLoop *
edge_polys[loop->e].num++;
}
else {
-   printf("Surface Deform: Target has edges with 
more than two polys\n");
-   return -1;
+   return MOD_SDEF_BIND_RESULT_NONMANY_ERR;
}
}
}
@@ -215,7 +224,7 @@ static int buildAdjacencyMap(const MPoly *poly, const MEdge 
*edge, const MLoop *
for (int i = 0; i < numedges; i++, edge++) {
adj = MEM_mallocN(sizeof(*adj), "SDefVertEdge");
if (adj == NULL) {
-   return 0;
+   return MOD_SDEF_BIND_RESULT_MEM_ERR;
}
 
adj->next = vert_edges[edge->v1];
@@ -224,7 +233,7 @@ static int buildAdjacencyMap(const MPoly *poly, const MEdge 
*edge, const MLoop *
 
adj = MEM_mallocN(sizeof(*adj), "SDefVertEdge");
if (adj == NULL) {
-   return 0;
+   return MOD_SDEF_BIND_RESULT_MEM_ERR;
}
 
adj->next = vert_edges[edge->v2];
@@ -232,7 +241,7 @@ static int buildAdjacencyMap(const MPoly *poly, const MEdge 

[Bf-blender-cvs] [7608f366c7] surface-deform-modifier: Review: Replace weight_components with individual variables

2017-01-24 Thread Luca Rood
Commit: 7608f366c77ce31096c689f5a10470db87969d2c
Author: Luca Rood
Date:   Mon Jan 23 19:46:39 2017 -0200
Branches: surface-deform-modifier
https://developer.blender.org/rB7608f366c77ce31096c689f5a10470db87969d2c

Review: Replace weight_components with individual variables

===

M   source/blender/modifiers/intern/MOD_surfacedeform.c

===

diff --git a/source/blender/modifiers/intern/MOD_surfacedeform.c 
b/source/blender/modifiers/intern/MOD_surfacedeform.c
index 9362499ba6..b20c21d97a 100644
--- a/source/blender/modifiers/intern/MOD_surfacedeform.c
+++ b/source/blender/modifiers/intern/MOD_surfacedeform.c
@@ -47,6 +47,9 @@ typedef struct SDefBindPoly {
float (*coords_v2)[2];
float point_v2[2];
float weight_components[3]; /* indices: 0 = angular weight; 1 = 
projected point weight; 2 = actual point weights; */
+   float weight_angular;
+   float weight_dist_proj;
+   float weight_dist;
float weight;
float scales[2];
float centroid[3];
@@ -483,11 +486,11 @@ BLI_INLINE SDefBindWeightData 
*computeBindWeights(SDefBindCalcData * const data,
bpoly->inside = 
isect_point_poly_v2(bpoly->point_v2, bpoly->coords_v2, poly->totloop, false);
 
/* Initialize weight components */
-   bpoly->weight_components[0] = 1.0f;
-   bpoly->weight_components[1] = 
len_v2v2(bpoly->centroid_v2, bpoly->point_v2);
-   bpoly->weight_components[2] = 
len_v3v3(bpoly->centroid, point_co);
+   bpoly->weight_angular = 1.0f;
+   bpoly->weight_dist_proj = 
len_v2v2(bpoly->centroid_v2, bpoly->point_v2);
+   bpoly->weight_dist = len_v3v3(bpoly->centroid, 
point_co);
 
-   avg_point_dist += bpoly->weight_components[2];
+   avg_point_dist += bpoly->weight_dist;
 
/* Compute centroid to mid-edge vectors */
mid_v2_v2v2(bpoly->cent_edgemid_vecs_v2[0],
@@ -515,11 +518,11 @@ BLI_INLINE SDefBindWeightData 
*computeBindWeights(SDefBindCalcData * const data,
bpoly->corner_edgemid_angles[1] = 
angle_normalized_v2v2(tmp_vec_v2, bpoly->cent_edgemid_vecs_v2[1]);
 
/* Check for inifnite weights, and compute 
angular data otherwise */
-   if (bpoly->weight_components[2] < FLT_EPSILON) {
+   if (bpoly->weight_dist < FLT_EPSILON) {
inf_weight_flags |= 1 << 1;
inf_weight_flags |= 1 << 2;
}
-   else if (bpoly->weight_components[1] < 
FLT_EPSILON) {
+   else if (bpoly->weight_dist_proj < FLT_EPSILON) 
{
inf_weight_flags |= 1 << 1;
}
else {
@@ -575,7 +578,7 @@ BLI_INLINE SDefBindWeightData 
*computeBindWeights(SDefBindCalcData * const data,
tmp1 *= M_PI_2;
tmp1 = sinf(tmp1);
 
-   bpolys[0]->weight_components[0] *= tmp1 * tmp1;
+   bpolys[0]->weight_angular *= tmp1 * tmp1;
}
else if (epolys->num == 2) {
tmp1 = 
bpolys[0]->point_edgemid_angles[edge_on_poly[0]];
@@ -587,8 +590,8 @@ BLI_INLINE SDefBindWeightData 
*computeBindWeights(SDefBindCalcData * const data,
tmp1 = sinf(tmp1);
tmp2 = sinf(tmp2);
 
-   bpolys[0]->weight_components[0] *= tmp1 * tmp2;
-   bpolys[1]->weight_components[0] *= tmp1 * tmp2;
+   bpolys[0]->weight_angular *= tmp1 * tmp2;
+   bpolys[1]->weight_angular *= tmp1 * tmp2;
}
}
}
@@ -641,21 +644,21 @@ BLI_INLINE SDefBindWeightData 
*computeBindWeights(SDefBindCalcData * const data,
   bpoly->scales[!bpoly->dominant_edge] 
* scale_weight;
 
/* Scale the point distance weights, and introduce 
falloff */
-   bpoly->weight_components[1] /= bpoly->scales[0];
-   bpoly->weight_components[1] = 
powf(bpoly->weight_components[1], data->falloff);
+   bpoly->weight_dist_proj /= bpoly->scales[0];
+   bpoly->weight_dist_proj = powf(bpoly->weight_dist_proj, 
data->falloff);
 
-  

[Bf-blender-cvs] [6f3957770d] surface-deform-modifier: Review: Fix indentations and use MEM_SAFE_FREE

2017-01-24 Thread Luca Rood
Commit: 6f3957770d2e427967ae65d0a438d58a1c840e1c
Author: Luca Rood
Date:   Mon Jan 23 20:56:19 2017 -0200
Branches: surface-deform-modifier
https://developer.blender.org/rB6f3957770d2e427967ae65d0a438d58a1c840e1c

Review: Fix indentations and use MEM_SAFE_FREE

===

M   source/blender/modifiers/intern/MOD_surfacedeform.c

===

diff --git a/source/blender/modifiers/intern/MOD_surfacedeform.c 
b/source/blender/modifiers/intern/MOD_surfacedeform.c
index b20c21d97a..f9791f3361 100644
--- a/source/blender/modifiers/intern/MOD_surfacedeform.c
+++ b/source/blender/modifiers/intern/MOD_surfacedeform.c
@@ -78,9 +78,9 @@ typedef struct SDefBindWeightData {
 static void initData(ModifierData *md)
 {
SurfaceDeformModifierData *smd = (SurfaceDeformModifierData *) md;
-   smd->target  = NULL;
-   smd->verts   = NULL;
-   smd->flags   = 0;
+   smd->target = NULL;
+   smd->verts = NULL;
+   smd->flags = 0;
smd->falloff = 4.0f;
 }
 
@@ -92,13 +92,8 @@ static void freeData(ModifierData *md)
for (int i = 0; i < smd->numverts; i++) {
if (smd->verts[i].binds) {
for (int j = 0; j < smd->verts[i].numbinds; 
j++) {
-   if (smd->verts[i].binds[j].vert_inds) {
-   
MEM_freeN(smd->verts[i].binds[j].vert_inds);
-   }
-
-   if 
(smd->verts[i].binds[j].vert_weights) {
-   
MEM_freeN(smd->verts[i].binds[j].vert_weights);
-   }
+   
MEM_SAFE_FREE(smd->verts[i].binds[j].vert_inds);
+   
MEM_SAFE_FREE(smd->verts[i].binds[j].vert_weights);
}
 
MEM_freeN(smd->verts[i].binds);
@@ -351,13 +346,8 @@ static void freeBindData(SDefBindWeightData * const bwdata)
for (bpoly = bwdata->bind_polys; bpoly; bpoly = bwdata->bind_polys) {
bwdata->bind_polys = bpoly->next;
 
-   if (bpoly->coords) {
-   MEM_freeN(bpoly->coords);
-   }
-
-   if (bpoly->coords_v2) {
-   MEM_freeN(bpoly->coords_v2);
-   }
+   MEM_SAFE_FREE(bpoly->coords);
+   MEM_SAFE_FREE(bpoly->coords_v2);
 
MEM_freeN(bpoly);
}

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [1ad842d432] master: UI: Add missing menu item

2017-01-24 Thread Aaron Carlisle
Commit: 1ad842d432ccacd1f822d7f2b8ff3c542d25e976
Author: Aaron Carlisle
Date:   Wed Jan 25 00:59:10 2017 -0500
Branches: master
https://developer.blender.org/rB1ad842d432ccacd1f822d7f2b8ff3c542d25e976

UI: Add missing menu item

===

M   release/datafiles/locale
M   release/scripts/addons
M   release/scripts/addons_contrib
M   release/scripts/startup/bl_ui/space_outliner.py
M   source/tools

===

diff --git a/release/datafiles/locale b/release/datafiles/locale
index 88158191df..c93ed11a47 16
--- a/release/datafiles/locale
+++ b/release/datafiles/locale
@@ -1 +1 @@
-Subproject commit 88158191df4da2109bbfd9b0816d891bbc7fc78b
+Subproject commit c93ed11a47b3016cf59711ec16de2e2e94c30e99
diff --git a/release/scripts/addons b/release/scripts/addons
index a746a84f8a..0a9f786d72 16
--- a/release/scripts/addons
+++ b/release/scripts/addons
@@ -1 +1 @@
-Subproject commit a746a84f8aaf3a4843eb3f4ce3f5a0464872077a
+Subproject commit 0a9f786d72cd10e145d5bcff541a44acbb5869c2
diff --git a/release/scripts/addons_contrib b/release/scripts/addons_contrib
index 029103debc..a8515cfdfe 16
--- a/release/scripts/addons_contrib
+++ b/release/scripts/addons_contrib
@@ -1 +1 @@
-Subproject commit 029103debce43110f93295d7633931ec100d3017
+Subproject commit a8515cfdfe9a98127b592f36fcbe51b7e23b969a
diff --git a/release/scripts/startup/bl_ui/space_outliner.py 
b/release/scripts/startup/bl_ui/space_outliner.py
index 708db2eec8..6f7c535fe2 100644
--- a/release/scripts/startup/bl_ui/space_outliner.py
+++ b/release/scripts/startup/bl_ui/space_outliner.py
@@ -93,7 +93,8 @@ class OUTLINER_MT_view(Menu):
 layout.separator()
 layout.operator("outliner.show_active")
 
-layout.operator("outliner.show_one_level")
+layout.operator("outliner.show_one_level", text="Show One Level")
+layout.operator("outliner.show_one_level", text="Hide One Level").open 
= False
 layout.operator("outliner.show_hierarchy")
 
 layout.separator()
diff --git a/source/tools b/source/tools
index 6bbb68073b..b11375e890 16
--- a/source/tools
+++ b/source/tools
@@ -1 +1 @@
-Subproject commit 6bbb68073bfa11e94bb0b3623db38f847037add7
+Subproject commit b11375e89061303401376f7aeae42ac2fd64692a

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [a7d5cabd4e] master: Fix T49405: Crash when baking with adaptive subdivision

2017-01-24 Thread Mai Lavelle
Commit: a7d5cabd4e86b7b750fadbd087b97f99fb09
Author: Mai Lavelle
Date:   Wed Jan 25 00:35:20 2017 -0500
Branches: master
https://developer.blender.org/rBa7d5cabd4e86b7b750fadbd087b97f99fb09

Fix T49405: Crash when baking with adaptive subdivision

Blenders baking system currently doesn't support the topology used by
adaptive subdivision and primitive ids will be wrong or out of range
leading to crashes. Updating the baking system to support other
topologies would be a bit involved, so for now we simply disable
subdivision while baking to avoid crashes.

===

M   intern/cycles/blender/blender_mesh.cpp

===

diff --git a/intern/cycles/blender/blender_mesh.cpp 
b/intern/cycles/blender/blender_mesh.cpp
index 66893d4d66..85117cfff7 100644
--- a/intern/cycles/blender/blender_mesh.cpp
+++ b/intern/cycles/blender/blender_mesh.cpp
@@ -927,6 +927,13 @@ Mesh *BlenderSync::sync_mesh(BL::Object& b_ob,
 
mesh->subdivision_type = object_subdivision_type(b_ob, preview, 
experimental);
 
+   /* Disable adaptive subdivision while baking as the baking 
system
+* currently doesnt support the topology and will crash.
+*/
+   if(scene->bake_manager->get_baking()) {
+   mesh->subdivision_type = Mesh::SUBDIVISION_NONE;
+   }
+
BL::Mesh b_mesh = object_to_mesh(b_data,
 b_ob,
 b_scene,

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [57f937ad5a] master: Remove commented code

2017-01-24 Thread Aaron
Commit: 57f937ad5a263195d241ceb67bf9ca2d04b80fd7
Author: Aaron
Date:   Tue Jan 24 15:58:52 2017 -0500
Branches: master
https://developer.blender.org/rB57f937ad5a263195d241ceb67bf9ca2d04b80fd7

Remove commented code

===

M   release/scripts/startup/bl_ui/space_sequencer.py

===

diff --git a/release/scripts/startup/bl_ui/space_sequencer.py 
b/release/scripts/startup/bl_ui/space_sequencer.py
index 0648db3746..6bb516cf92 100644
--- a/release/scripts/startup/bl_ui/space_sequencer.py
+++ b/release/scripts/startup/bl_ui/space_sequencer.py
@@ -435,15 +435,9 @@ class SEQUENCER_MT_strip(Menu):
 layout.operator("sequencer.crossfade_sounds")
 
 layout.separator()
-
 layout.operator("sequencer.meta_make")
 layout.operator("sequencer.meta_separate")
 
-#if (ed && (ed->metastack.first || (ed->act_seq && ed->act_seq->type 
== SEQ_META))) {
-#  uiItemS(layout);
-#  uiItemO(layout, NULL, 0, "sequencer.meta_toggle");
-#}
-
 layout.separator()
 layout.operator("sequencer.reload", text="Reload Strips")
 layout.operator("sequencer.reload", text="Reload Strips and Adjust 
Length").adjust_length = True

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [8a6c689f30] master: Fix T50386: Crash when spawning pie menus

2017-01-24 Thread Julian Eisel
Commit: 8a6c689f30359d1b86deee6a4ed34747fe314d23
Author: Julian Eisel
Date:   Tue Jan 24 21:35:38 2017 +0100
Branches: master
https://developer.blender.org/rB8a6c689f30359d1b86deee6a4ed34747fe314d23

Fix T50386: Crash when spawning pie menus

D2455 by @raa, thanks!

===

M   source/blender/editors/interface/interface_layout.c

===

diff --git a/source/blender/editors/interface/interface_layout.c 
b/source/blender/editors/interface/interface_layout.c
index b02a909d00..7262b453e0 100644
--- a/source/blender/editors/interface/interface_layout.c
+++ b/source/blender/editors/interface/interface_layout.c
@@ -581,6 +581,9 @@ static void ui_item_enum_expand(
UI_block_layout_set_current(block, layout_radial);
}
else {
+   if (layout->item.type == ITEM_LAYOUT_RADIAL) {
+   layout_radial = layout;
+   }
UI_block_layout_set_current(block, layout);
}
}
@@ -593,8 +596,9 @@ static void ui_item_enum_expand(
 
for (item = item_array; item->identifier; item++) {
if (!item->identifier[0]) {
-   if (radial)
+   if (radial && layout_radial) {
uiItemS(layout_radial);
+   }
continue;
}

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [605695de61] master: Depsgraph: Fix duplicated operation node when two objects are sharing same armature

2017-01-24 Thread Sergey Sharybin
Commit: 605695de611823e9ce086d224613858ec584b605
Author: Sergey Sharybin
Date:   Tue Jan 24 17:15:39 2017 +0100
Branches: master
https://developer.blender.org/rB605695de611823e9ce086d224613858ec584b605

Depsgraph: Fix duplicated operation node when two objects are sharing same 
armature

===

M   source/blender/depsgraph/intern/builder/deg_builder_nodes_rig.cc

===

diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes_rig.cc 
b/source/blender/depsgraph/intern/builder/deg_builder_nodes_rig.cc
index 4a5f3dc866..f2437ce1fa 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes_rig.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes_rig.cc
@@ -119,7 +119,17 @@ void DepsgraphNodeBuilder::build_rig(Scene *scene, Object 
*ob)
 *   Eventually, we need some type of proxy/isolation mechanism 
in-between here
 *   to ensure that we can use same rig multiple times in same 
scene...
 */
-   build_animdata(>id);
+   if ((arm->id.tag & LIB_TAG_DOIT) == 0) {
+   build_animdata(>id);
+
+   /* Make sure pose is up-to-date with armature updates. */
+   add_operation_node(>id,
+  DEPSNODE_TYPE_PARAMETERS,
+  DEPSOP_TYPE_EXEC,
+  NULL,
+  DEG_OPCODE_PLACEHOLDER,
+  "Armature Eval");
+   }
 
/* Rebuild pose if not up to date. */
if (ob->pose == NULL || (ob->pose->flag & POSE_RECALC)) {
@@ -141,14 +151,6 @@ void DepsgraphNodeBuilder::build_rig(Scene *scene, Object 
*ob)
}
}
 
-   /* Make sure pose is up-to-date with armature updates. */
-   add_operation_node(>id,
-  DEPSNODE_TYPE_PARAMETERS,
-  DEPSOP_TYPE_EXEC,
-  NULL,
-  DEG_OPCODE_PLACEHOLDER,
-  "Armature Eval");
-
/**
 * Pose Rig Graph
 * ==

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [d84df351d0] master: Cycles: Don't rely on indirectly included algorithm

2017-01-24 Thread Sergey Sharybin
Commit: d84df351d0535ff17ee6a46a85de4f404c1d08ef
Author: Sergey Sharybin
Date:   Tue Jan 24 16:39:16 2017 +0100
Branches: master
https://developer.blender.org/rBd84df351d0535ff17ee6a46a85de4f404c1d08ef

Cycles: Don't rely on indirectly included algorithm

===

M   intern/cycles/bvh/bvh_build.cpp

===

diff --git a/intern/cycles/bvh/bvh_build.cpp b/intern/cycles/bvh/bvh_build.cpp
index 1ce3a75446..a2f8b33cb0 100644
--- a/intern/cycles/bvh/bvh_build.cpp
+++ b/intern/cycles/bvh/bvh_build.cpp
@@ -26,6 +26,7 @@
 #include "scene.h"
 #include "curves.h"
 
+#include "util_algorithm.h"
 #include "util_debug.h"
 #include "util_foreach.h"
 #include "util_logging.h"

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [b6ccba9241] master: Fix typo in comment

2017-01-24 Thread Sergey Sharybin
Commit: b6ccba9241ab099e456ef3789dd28d106607ef18
Author: Sergey Sharybin
Date:   Tue Jan 24 14:56:35 2017 +0100
Branches: master
https://developer.blender.org/rBb6ccba9241ab099e456ef3789dd28d106607ef18

Fix typo in comment

===

M   source/blender/blenkernel/BKE_modifier.h

===

diff --git a/source/blender/blenkernel/BKE_modifier.h 
b/source/blender/blenkernel/BKE_modifier.h
index f6c08909d2..531be9e6e3 100644
--- a/source/blender/blenkernel/BKE_modifier.h
+++ b/source/blender/blenkernel/BKE_modifier.h
@@ -273,7 +273,7 @@ typedef struct ModifierTypeInfo {
 *
 * This function is optional.
 */
-   /* TODO(sergey): Remove once we finalyl switched to the new depsgraph. 
*/
+   /* TODO(sergey): Remove once we finally switched to the new depsgraph. 
*/
void (*updateDepsgraph)(struct ModifierData *md,
struct Main *bmain,
struct Scene *scene,

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [f286e7e017] blender2.8: Depsgraph: Make it more clear and explicit compile fail when required features are not found

2017-01-24 Thread Sergey Sharybin
Commit: f286e7e017ffd665db86b2f47a5c72c416914834
Author: Sergey Sharybin
Date:   Tue Jan 24 12:57:33 2017 +0100
Branches: blender2.8
https://developer.blender.org/rBf286e7e017ffd665db86b2f47a5c72c416914834

Depsgraph: Make it more clear and explicit compile fail when required features 
are not found

===

M   source/blender/depsgraph/util/deg_util_foreach.h
M   source/blender/depsgraph/util/deg_util_function.h

===

diff --git a/source/blender/depsgraph/util/deg_util_foreach.h 
b/source/blender/depsgraph/util/deg_util_foreach.h
index 531e67968c..8c234eae7d 100644
--- a/source/blender/depsgraph/util/deg_util_foreach.h
+++ b/source/blender/depsgraph/util/deg_util_foreach.h
@@ -36,13 +36,7 @@
 #  include 
 #  define foreach BOOST_FOREACH
 #else
-#pragma message("No available foreach() implementation. Using stub instead, 
disabling new depsgraph")
-
-#error "Unable to build new depsgraph and legacy one is disabled."
-
-#define DISABLE_NEW_DEPSGRAPH
-
-#  define foreach(x, y) for (x; false; (void)y)
+#  error "Depsgraph requires either Boost or C++11 for range-based loops."
 #endif
 
 #define GHASH_FOREACH_BEGIN(type, var, what) \
diff --git a/source/blender/depsgraph/util/deg_util_function.h 
b/source/blender/depsgraph/util/deg_util_function.h
index 13c714bd63..da31bb037f 100644
--- a/source/blender/depsgraph/util/deg_util_function.h
+++ b/source/blender/depsgraph/util/deg_util_function.h
@@ -47,62 +47,5 @@ using boost::function;
 #define function_bind boost::bind
 
 #else
-
-#pragma message("No available function binding implementation. Using stub 
instead, disabling new depsgraph")
-
-#error "Unable to build new depsgraph and legacy one is disabled."
-
-#define DISABLE_NEW_DEPSGRAPH
-
-#include "BLI_utildefines.h"
-#include 
-
-template
-class function {
-public:
-   function() {};
-   function(void *) {}
-   operator bool() const { return false; }
-   bool operator== (void *) { return false; }
-
-   template
-   void operator() (T1) {
-   BLI_assert(!"Should not be used");
-   }
-};
-
-class Wrap {
-public:
-   Wrap() {}
-   template 
-   Wrap(T /*arg*/) {}
-};
-
-template 
-void *function_bind(T func,
-Wrap arg1 = Wrap(),
-Wrap arg2 = Wrap(),
-Wrap arg3 = Wrap(),
-Wrap arg4 = Wrap(),
-Wrap arg5 = Wrap(),
-Wrap arg6 = Wrap(),
-Wrap arg7 = Wrap())
-{
-   BLI_assert(!"Should not be used");
-   (void)func;
-   (void)arg1;
-   (void)arg2;
-   (void)arg3;
-   (void)arg4;
-   (void)arg5;
-   (void)arg6;
-   (void)arg7;
-   return NULL;
-}
-
-#define _1 Wrap()
-#define _2 Wrap()
-#define _3 Wrap()
-#define _4 Wrap()
-
+#  error "Depsgraph requires either Boost or C++11 for function bindings."
 #endif

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [f20b8ae5aa] blender2.8: Depsgraph: Remove legacy calls from scene update routines

2017-01-24 Thread Sergey Sharybin
Commit: f20b8ae5aa4736b3d3ca976e2dadc85db70f367b
Author: Sergey Sharybin
Date:   Tue Jan 24 12:42:56 2017 +0100
Branches: blender2.8
https://developer.blender.org/rBf20b8ae5aa4736b3d3ca976e2dadc85db70f367b

Depsgraph: Remove legacy calls from scene update routines

===

M   source/blender/blenkernel/intern/scene.c

===

diff --git a/source/blender/blenkernel/intern/scene.c 
b/source/blender/blenkernel/intern/scene.c
index 69d3b4db54..f73ee53e46 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -1248,109 +1248,6 @@ void BKE_scene_frame_set(struct Scene *scene, double 
cfra)
scene->r.cfra = (int)intpart;
 }
 
-#ifdef WITH_LEGACY_DEPSGRAPH
-/* drivers support/hacks 
- *  - this method is called from scene_update_tagged_recursive(), so gets 
included in viewport + render
- * - these are always run since the depsgraph can't handle non-object data
- * - these happen after objects are all done so that we can read in their 
final transform values,
- *   though this means that objects can't refer to scene info for 
guidance...
- */
-static void scene_update_drivers(Main *UNUSED(bmain), Scene *scene)
-{
-   SceneRenderLayer *srl;
-   float ctime = BKE_scene_frame_get(scene);
-   
-   /* scene itself */
-   if (scene->adt && scene->adt->drivers.first) {
-   BKE_animsys_evaluate_animdata(scene, >id, scene->adt, 
ctime, ADT_RECALC_DRIVERS);
-   }
-
-   /* world */
-   /* TODO: what about world textures? but then those have nodes too... */
-   if (scene->world) {
-   ID *wid = (ID *)scene->world;
-   AnimData *adt = BKE_animdata_from_id(wid);
-   
-   if (adt && adt->drivers.first)
-   BKE_animsys_evaluate_animdata(scene, wid, adt, ctime, 
ADT_RECALC_DRIVERS);
-   }
-   
-   /* nodes */
-   if (scene->nodetree) {
-   ID *nid = (ID *)scene->nodetree;
-   AnimData *adt = BKE_animdata_from_id(nid);
-   
-   if (adt && adt->drivers.first)
-   BKE_animsys_evaluate_animdata(scene, nid, adt, ctime, 
ADT_RECALC_DRIVERS);
-   }
-
-   /* world nodes */
-   if (scene->world && scene->world->nodetree) {
-   ID *nid = (ID *)scene->world->nodetree;
-   AnimData *adt = BKE_animdata_from_id(nid);
-   
-   if (adt && adt->drivers.first)
-   BKE_animsys_evaluate_animdata(scene, nid, adt, ctime, 
ADT_RECALC_DRIVERS);
-   }
-
-   /* freestyle */
-   for (srl = scene->r.layers.first; srl; srl = srl->next) {
-   FreestyleConfig *config = >freestyleConfig;
-   FreestyleLineSet *lineset;
-
-   for (lineset = config->linesets.first; lineset; lineset = 
lineset->next) {
-   if (lineset->linestyle) {
-   ID *lid = >linestyle->id;
-   AnimData *adt = BKE_animdata_from_id(lid);
-
-   if (adt && adt->drivers.first)
-   BKE_animsys_evaluate_animdata(scene, 
lid, adt, ctime, ADT_RECALC_DRIVERS);
-   }
-   }
-   }
-}
-
-/* deps hack - do extra recalcs at end */
-static void scene_depsgraph_hack(EvaluationContext *eval_ctx, Scene *scene, 
Scene *scene_parent)
-{
-   Base *base;
-   
-   scene->customdata_mask = scene_parent->customdata_mask;
-   
-   /* sets first, we allow per definition current scene to have
-* dependencies on sets, but not the other way around. */
-   if (scene->set)
-   scene_depsgraph_hack(eval_ctx, scene->set, scene_parent);
-   
-   for (base = scene->base.first; base; base = base->next) {
-   Object *ob = base->object;
-   
-   if (ob->depsflag) {
-   int recalc = 0;
-   // printf("depshack %s\n", ob->id.name + 2);
-   
-   if (ob->depsflag & OB_DEPS_EXTRA_OB_RECALC)
-   recalc |= OB_RECALC_OB;
-   if (ob->depsflag & OB_DEPS_EXTRA_DATA_RECALC)
-   recalc |= OB_RECALC_DATA;
-   
-   ob->recalc |= recalc;
-   BKE_object_handle_update(eval_ctx, scene_parent, ob);
-   
-   if (ob->dup_group && (ob->transflag & OB_DUPLIGROUP)) {
-   GroupObject *go;
-   
-   for (go = ob->dup_group->gobject.first; go; go 
= go->next) {
-   if (go->ob)
-   

[Bf-blender-cvs] [991bda6959] blender2.8: Depsgraph: Remove legacy depsgraph code from transform

2017-01-24 Thread Sergey Sharybin
Commit: 991bda6959305cea58b9ce6a31224eea1889a4c5
Author: Sergey Sharybin
Date:   Tue Jan 24 12:23:57 2017 +0100
Branches: blender2.8
https://developer.blender.org/rB991bda6959305cea58b9ce6a31224eea1889a4c5

Depsgraph: Remove legacy depsgraph code from transform

===

M   source/blender/editors/transform/CMakeLists.txt
M   source/blender/editors/transform/transform_conversions.c

===

diff --git a/source/blender/editors/transform/CMakeLists.txt 
b/source/blender/editors/transform/CMakeLists.txt
index b7de49d815..1a41d9ac95 100644
--- a/source/blender/editors/transform/CMakeLists.txt
+++ b/source/blender/editors/transform/CMakeLists.txt
@@ -58,10 +58,6 @@ if(WITH_INTERNATIONAL)
add_definitions(-DWITH_INTERNATIONAL)
 endif()
 
-if(WITH_LEGACY_DEPSGRAPH)
-   add_definitions(-DWITH_LEGACY_DEPSGRAPH)
-endif()
-
 add_definitions(${GL_DEFINITIONS})
 
 blender_add_lib(bf_editor_transform "${SRC}" "${INC}" "${INC_SYS}")
diff --git a/source/blender/editors/transform/transform_conversions.c 
b/source/blender/editors/transform/transform_conversions.c
index ce3d903b8f..3e355deef3 100644
--- a/source/blender/editors/transform/transform_conversions.c
+++ b/source/blender/editors/transform/transform_conversions.c
@@ -828,7 +828,6 @@ static void pose_grab_with_ik_clear(Object *ob)
bKinematicConstraint *data;
bPoseChannel *pchan;
bConstraint *con, *next;
-   bool need_dependency_update = false;
 
for (pchan = ob->pose->chanbase.first; pchan; pchan = pchan->next) {
/* clear all temporary lock flags */
@@ -843,7 +842,6 @@ static void pose_grab_with_ik_clear(Object *ob)
data = con->data;
if (data->flag & CONSTRAINT_IK_TEMP) {
/* iTaSC needs clear for removed 
constraints */
-   need_dependency_update = true;
BIK_clear_data(ob->pose);
 
BLI_remlink(>constraints, con);
@@ -858,13 +856,8 @@ static void pose_grab_with_ik_clear(Object *ob)
}
}
 
-#ifdef WITH_LEGACY_DEPSGRAPH
-   if (!DEG_depsgraph_use_legacy() && need_dependency_update)
-#endif
-   {
-   /* TODO(sergey): Consider doing partial update only. */
-   DAG_relations_tag_update(G.main);
-   }
+   /* TODO(sergey): Consider doing partial update only. */
+   DAG_relations_tag_update(G.main);
 }
 
 /* adds the IK to pchan - returns if added */
@@ -1017,13 +1010,8 @@ static short pose_grab_with_ik(Object *ob)
/* iTaSC needs clear for new IK constraints */
if (tot_ik) {
BIK_clear_data(ob->pose);
-#ifdef WITH_LEGACY_DEPSGRAPH
-   if (!DEG_depsgraph_use_legacy())
-#endif
-   {
-   /* TODO(sergey): Consuder doing partial update only. */
-   DAG_relations_tag_update(G.main);
-   }
+   /* TODO(sergey): Consuder doing partial update only. */
+   DAG_relations_tag_update(G.main);
}
 
return (tot_ik) ? 1 : 0;
@@ -5421,11 +5409,6 @@ static void set_trans_object_base_flags(TransInfo *t)
}
}
 
-   /* all recalc flags get flushed to all layers, so a layer flip later on 
works fine */
-#ifdef WITH_LEGACY_DEPSGRAPH
-   DAG_scene_flush_update(G.main, t->scene, -1, 0);
-#endif
-
/* and we store them temporal in base (only used for transform code) */
/* this because after doing updates, the object->recalc is cleared */
for (base = scene->base.first; base; base = base->next) {
@@ -5503,9 +5486,6 @@ static int count_proportional_objects(TransInfo *t)
 
/* all recalc flags get flushed to all layers, so a layer flip later on 
works fine */
DAG_scene_relations_update(G.main, t->scene);
-#ifdef WITH_LEGACY_DEPSGRAPH
-   DAG_scene_flush_update(G.main, t->scene, -1, 0);
-#endif
 
/* and we store them temporal in base (only used for transform code) */
/* this because after doing updates, the object->recalc is cleared */

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [9e40027110] blender2.8: Depsgraph: Remove special version of pose builder

2017-01-24 Thread Sergey Sharybin
Commit: 9e400271102a1434e6ba5724965119391b5548c5
Author: Sergey Sharybin
Date:   Tue Jan 24 12:29:46 2017 +0100
Branches: blender2.8
https://developer.blender.org/rB9e400271102a1434e6ba5724965119391b5548c5

Depsgraph: Remove special version of pose builder

===

M   source/blender/blenkernel/BKE_armature.h
M   source/blender/blenkernel/intern/armature.c
M   source/blender/depsgraph/intern/builder/deg_builder_nodes_rig.cc

===

diff --git a/source/blender/blenkernel/BKE_armature.h 
b/source/blender/blenkernel/BKE_armature.h
index 78d6f6c7cb..c232310020 100644
--- a/source/blender/blenkernel/BKE_armature.h
+++ b/source/blender/blenkernel/BKE_armature.h
@@ -97,7 +97,6 @@ void BKE_armature_where_is(struct bArmature *arm);
 void BKE_armature_where_is_bone(struct Bone *bone, struct Bone *prevbone, 
const bool use_recursion);
 void BKE_pose_clear_pointers(struct bPose *pose);
 void BKE_pose_rebuild(struct Object *ob, struct bArmature *arm);
-void BKE_pose_rebuild_ex(struct Object *ob, struct bArmature *arm, const bool 
sort_bones);
 void BKE_pose_where_is(struct Scene *scene, struct Object *ob);
 void BKE_pose_where_is_bone(struct Scene *scene, struct Object *ob, struct 
bPoseChannel *pchan, float ctime, bool do_extra);
 void BKE_pose_where_is_bone_tail(struct bPoseChannel *pchan);
diff --git a/source/blender/blenkernel/intern/armature.c 
b/source/blender/blenkernel/intern/armature.c
index 0287d6ae9c..89e93a6384 100644
--- a/source/blender/blenkernel/intern/armature.c
+++ b/source/blender/blenkernel/intern/armature.c
@@ -1918,7 +1918,7 @@ void BKE_pose_clear_pointers(bPose *pose)
 
 /* only after leave editmode, duplicating, validating older files, library 
syncing */
 /* NOTE: pose->flag is set for it */
-void BKE_pose_rebuild_ex(Object *ob, bArmature *arm, const bool sort_bones)
+void BKE_pose_rebuild(Object *ob, bArmature *arm)
 {
Bone *bone;
bPose *pose;
@@ -1962,25 +1962,12 @@ void BKE_pose_rebuild_ex(Object *ob, bArmature *arm, 
const bool sort_bones)
 
BKE_pose_update_constraint_flags(ob->pose); /* for IK detection for 
example */
 
-#ifdef WITH_LEGACY_DEPSGRAPH
-   /* the sorting */
-   /* Sorting for new dependnecy graph is done on the scene graph level. */
-   if (counter > 1 && sort_bones) {
-   DAG_pose_sort(ob);
-   }
-#endif
-
ob->pose->flag &= ~POSE_RECALC;
ob->pose->flag |= POSE_WAS_REBUILT;
 
BKE_pose_channels_hash_make(ob->pose);
 }
 
-void BKE_pose_rebuild(Object *ob, bArmature *arm)
-{
-   BKE_pose_rebuild_ex(ob, arm, true);
-}
-
 /* ** THE POSE SOLVER *** */
 
 /* loc/rot/size to given mat4 */
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes_rig.cc 
b/source/blender/depsgraph/intern/builder/deg_builder_nodes_rig.cc
index 4a5f3dc866..c1d51c1ace 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes_rig.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes_rig.cc
@@ -123,7 +123,7 @@ void DepsgraphNodeBuilder::build_rig(Scene *scene, Object 
*ob)
 
/* Rebuild pose if not up to date. */
if (ob->pose == NULL || (ob->pose->flag & POSE_RECALC)) {
-   BKE_pose_rebuild_ex(ob, arm, false);
+   BKE_pose_rebuild(ob, arm);
/* XXX: Without this animation gets lost in certain 
circumstances
 * after loading file. Need to investigate further since it does
 * not happen with simple scenes..

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [23122ca889] blender2.8: Depsgraph: Remove legacy depsgraph code from viewport

2017-01-24 Thread Sergey Sharybin
Commit: 23122ca88938a333d3eb94728c8e0ff1e971334f
Author: Sergey Sharybin
Date:   Tue Jan 24 12:25:58 2017 +0100
Branches: blender2.8
https://developer.blender.org/rB23122ca88938a333d3eb94728c8e0ff1e971334f

Depsgraph: Remove legacy depsgraph code from viewport

===

M   source/blender/editors/space_view3d/CMakeLists.txt
M   source/blender/editors/space_view3d/space_view3d.c

===

diff --git a/source/blender/editors/space_view3d/CMakeLists.txt 
b/source/blender/editors/space_view3d/CMakeLists.txt
index 8fca2ed564..f6d5cf6e5d 100644
--- a/source/blender/editors/space_view3d/CMakeLists.txt
+++ b/source/blender/editors/space_view3d/CMakeLists.txt
@@ -95,8 +95,4 @@ if(WITH_MOD_SMOKE)
add_definitions(-DWITH_SMOKE)
 endif()
 
-if(WITH_LEGACY_DEPSGRAPH)
-   add_definitions(-DWITH_LEGACY_DEPSGRAPH)
-endif()
-
 blender_add_lib(bf_editor_space_view3d "${SRC}" "${INC}" "${INC_SYS}")
diff --git a/source/blender/editors/space_view3d/space_view3d.c 
b/source/blender/editors/space_view3d/space_view3d.c
index 90fa54c7a1..6408e792d5 100644
--- a/source/blender/editors/space_view3d/space_view3d.c
+++ b/source/blender/editors/space_view3d/space_view3d.c
@@ -937,21 +937,13 @@ static void view3d_main_region_listener(bScreen *sc, 
ScrArea *sa, ARegion *ar, w
switch (wmn->data) {
case ND_SHADING:
case ND_NODES:
-   {
-#ifdef WITH_LEGACY_DEPSGRAPH
-   Object *ob = OBACT;
-   if ((v3d->drawtype == OB_MATERIAL) ||
-   (ob && (ob->mode == 
OB_MODE_TEXTURE_PAINT)) ||
-   (v3d->drawtype == OB_TEXTURE &&
-(scene->gm.matmode == 
GAME_MAT_GLSL ||
- 
BKE_scene_use_new_shading_nodes(scene))) ||
-   !DEG_depsgraph_use_legacy())
-#endif
-   {
-   ED_region_tag_redraw(ar);
-   }
+   /* TODO(sergey) This is a bit too much 
updates, but needed to
+* have proper material drivers update 
in the viewport.
+*
+* How to solve?
+*/
+   ED_region_tag_redraw(ar);
break;
-   }
case ND_SHADING_DRAW:
case ND_SHADING_LINKS:
ED_region_tag_redraw(ar);

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [55e6d5428d] blender2.8: Depsgraph: Remove legacy implementation of depsgraph

2017-01-24 Thread Sergey Sharybin
Commit: 55e6d5428d377844ce9f958ae364c5d0b9aefa93
Author: Sergey Sharybin
Date:   Tue Jan 24 12:46:56 2017 +0100
Branches: blender2.8
https://developer.blender.org/rB55e6d5428d377844ce9f958ae364c5d0b9aefa93

Depsgraph: Remove legacy implementation of depsgraph

===

M   source/blender/blenkernel/CMakeLists.txt
M   source/blender/blenkernel/intern/depsgraph.c

===

diff --git a/source/blender/blenkernel/CMakeLists.txt 
b/source/blender/blenkernel/CMakeLists.txt
index 157c4408d6..2ccbed58b0 100644
--- a/source/blender/blenkernel/CMakeLists.txt
+++ b/source/blender/blenkernel/CMakeLists.txt
@@ -535,8 +535,4 @@ endif()
 #  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /WX")
 #endif()
 
-if(WITH_LEGACY_DEPSGRAPH)
-   add_definitions(-DWITH_LEGACY_DEPSGRAPH)
-endif()
-
 blender_add_lib(bf_blenkernel "${SRC}" "${INC}" "${INC_SYS}")
diff --git a/source/blender/blenkernel/intern/depsgraph.c 
b/source/blender/blenkernel/intern/depsgraph.c
index a834193969..c5b8a18fd6 100644
--- a/source/blender/blenkernel/intern/depsgraph.c
+++ b/source/blender/blenkernel/intern/depsgraph.c
@@ -40,3367 +40,19 @@
 #endif
 
 #include "BLI_utildefines.h"
-#include "BLI_listbase.h"
-#include "BLI_ghash.h"
-#include "BLI_threads.h"
 
-#include "DNA_anim_types.h"
-#include "DNA_camera_types.h"
-#include "DNA_cachefile_types.h"
-#include "DNA_group_types.h"
-#include "DNA_lamp_types.h"
-#include "DNA_lattice_types.h"
-#include "DNA_key_types.h"
-#include "DNA_material_types.h"
-#include "DNA_mesh_types.h"
-#include "DNA_node_types.h"
+#include "DNA_object_types.h"
 #include "DNA_scene_types.h"
-#include "DNA_screen_types.h"
-#include "DNA_windowmanager_types.h"
-#include "DNA_movieclip_types.h"
-#include "DNA_mask_types.h"
-#include "DNA_modifier_types.h"
-#include "DNA_rigidbody_types.h"
 
-#include "BKE_anim.h"
-#include "BKE_animsys.h"
-#include "BKE_action.h"
-#include "BKE_DerivedMesh.h"
-#include "BKE_collision.h"
-#include "BKE_effect.h"
-#include "BKE_fcurve.h"
 #include "BKE_global.h"
-#include "BKE_idcode.h"
-#include "BKE_image.h"
-#include "BKE_key.h"
-#include "BKE_library.h"
 #include "BKE_main.h"
-#include "BKE_node.h"
-#include "BKE_material.h"
-#include "BKE_mball.h"
-#include "BKE_modifier.h"
-#include "BKE_object.h"
-#include "BKE_paint.h"
-#include "BKE_particle.h"
-#include "BKE_pointcache.h"
-#include "BKE_scene.h"
-#include "BKE_screen.h"
-#include "BKE_tracking.h"
 
-#include "GPU_buffers.h"
-
-#include "atomic_ops.h"
-
-#include "depsgraph_private.h"
-
-#include "DEG_depsgraph.h"
-#include "DEG_depsgraph_build.h"
-#include "DEG_depsgraph_debug.h"
-#include "DEG_depsgraph_query.h"
-
-#ifdef WITH_LEGACY_DEPSGRAPH
-
-static SpinLock threaded_update_lock;
-
-void DAG_init(void)
-{
-   BLI_spin_init(_update_lock);
-   DEG_register_node_types();
-}
-
-void DAG_exit(void)
-{
-   BLI_spin_end(_update_lock);
-   DEG_free_node_types();
-}
-
-/* Queue and stack operations for dag traversal 
- *
- * the queue store a list of freenodes to avoid successive alloc/dealloc
- */
-
-DagNodeQueue *queue_create(int slots)
-{
-   DagNodeQueue *queue;
-   DagNodeQueueElem *elem;
-   int i;
-   
-   queue = MEM_mallocN(sizeof(DagNodeQueue), "DAG queue");
-   queue->freenodes = MEM_mallocN(sizeof(DagNodeQueue), "DAG queue");
-   queue->count = 0;
-   queue->maxlevel = 0;
-   queue->first = queue->last = NULL;
-   elem = MEM_mallocN(sizeof(DagNodeQueueElem), "DAG queue elem3");
-   elem->node = NULL;
-   elem->next = NULL;
-   queue->freenodes->first = queue->freenodes->last = elem;
-   
-   for (i = 1; i < slots; i++) {
-   elem = MEM_mallocN(sizeof(DagNodeQueueElem), "DAG queue elem4");
-   elem->node = NULL;
-   elem->next = NULL;
-   queue->freenodes->last->next = elem;
-   queue->freenodes->last = elem;
-   }
-   queue->freenodes->count = slots;
-   return queue;
-}
-
-void queue_raz(DagNodeQueue *queue)
-{
-   DagNodeQueueElem *elem;
-   
-   elem = queue->first;
-   if (queue->freenodes->last)
-   queue->freenodes->last->next = elem;
-   else
-   queue->freenodes->first = queue->freenodes->last = elem;
-   
-   elem->node = NULL;
-   queue->freenodes->count++;
-   while (elem->next) {
-   elem = elem->next;
-   elem->node = NULL;
-   queue->freenodes->count++;
-   }
-   queue->freenodes->last = elem;
-   queue->count = 0;
-}
-
-void queue_delete(DagNodeQueue *queue)
-{
-   DagNodeQueueElem *elem;
-   DagNodeQueueElem *temp;
-   
-   elem = queue->first;
-   while (elem) {
-   temp = elem;
-   elem = elem->next;
-   MEM_freeN(temp);
-   }
-   
-   elem = queue->freenodes->first;
-  

[Bf-blender-cvs] [769d189ff1] blender2.8: Depsgraph: Remove legacy code from new depsgraph

2017-01-24 Thread Sergey Sharybin
Commit: 769d189ff16b216c6198603fb68ec041d4b7e7da
Author: Sergey Sharybin
Date:   Tue Jan 24 12:55:08 2017 +0100
Branches: blender2.8
https://developer.blender.org/rB769d189ff16b216c6198603fb68ec041d4b7e7da

Depsgraph: Remove legacy code from new depsgraph

Now we have no remaining WITH_LEGACY_DEPSGRAPH in the code.

===

M   source/blender/depsgraph/CMakeLists.txt
M   source/blender/depsgraph/intern/depsgraph_eval.cc
M   source/blender/depsgraph/util/deg_util_foreach.h
M   source/blender/depsgraph/util/deg_util_function.h

===

diff --git a/source/blender/depsgraph/CMakeLists.txt 
b/source/blender/depsgraph/CMakeLists.txt
index e635256cda..2d32e85bf6 100644
--- a/source/blender/depsgraph/CMakeLists.txt
+++ b/source/blender/depsgraph/CMakeLists.txt
@@ -113,10 +113,6 @@ else()
endif()
 endif()
 
-if(WITH_LEGACY_DEPSGRAPH)
-   add_definitions(-DWITH_LEGACY_DEPSGRAPH)
-endif()
-
 if(WITH_BOOST)
list(APPEND INC_SYS
${BOOST_INCLUDE_DIR}
diff --git a/source/blender/depsgraph/intern/depsgraph_eval.cc 
b/source/blender/depsgraph/intern/depsgraph_eval.cc
index c41f28b07e..ebaf008983 100644
--- a/source/blender/depsgraph/intern/depsgraph_eval.cc
+++ b/source/blender/depsgraph/intern/depsgraph_eval.cc
@@ -52,43 +52,9 @@ extern "C" {
 
 #include "intern/depsgraph.h"
 
-#ifdef WITH_LEGACY_DEPSGRAPH
-static bool use_legacy_depsgraph = true;
-#endif
-
 /* Unfinished and unused, and takes quite some pre-processing time. */
 #undef USE_EVAL_PRIORITY
 
-bool DEG_depsgraph_use_legacy(void)
-{
-#ifdef DISABLE_NEW_DEPSGRAPH
-   return true;
-#elif defined(WITH_LEGACY_DEPSGRAPH)
-   return use_legacy_depsgraph;
-#else
-   BLI_assert(!"Should not be used with new depsgraph");
-   return false;
-#endif
-}
-
-void DEG_depsgraph_switch_to_legacy(void)
-{
-#ifdef WITH_LEGACY_DEPSGRAPH
-   use_legacy_depsgraph = true;
-#else
-   BLI_assert(!"Should not be used with new depsgraph");
-#endif
-}
-
-void DEG_depsgraph_switch_to_new(void)
-{
-#ifdef WITH_LEGACY_DEPSGRAPH
-   use_legacy_depsgraph = false;
-#else
-   BLI_assert(!"Should not be used with new depsgraph");
-#endif
-}
-
 /* ** */
 /* Evaluation Context */
 
diff --git a/source/blender/depsgraph/util/deg_util_foreach.h 
b/source/blender/depsgraph/util/deg_util_foreach.h
index 87d37168d5..531e67968c 100644
--- a/source/blender/depsgraph/util/deg_util_foreach.h
+++ b/source/blender/depsgraph/util/deg_util_foreach.h
@@ -38,9 +38,7 @@
 #else
 #pragma message("No available foreach() implementation. Using stub instead, 
disabling new depsgraph")
 
-#ifndef WITH_LEGACY_DEPSGRAPH
-#  error "Unable to build new depsgraph and legacy one is disabled."
-#endif
+#error "Unable to build new depsgraph and legacy one is disabled."
 
 #define DISABLE_NEW_DEPSGRAPH
 
diff --git a/source/blender/depsgraph/util/deg_util_function.h 
b/source/blender/depsgraph/util/deg_util_function.h
index 1e34ae04d9..13c714bd63 100644
--- a/source/blender/depsgraph/util/deg_util_function.h
+++ b/source/blender/depsgraph/util/deg_util_function.h
@@ -50,9 +50,7 @@ using boost::function;
 
 #pragma message("No available function binding implementation. Using stub 
instead, disabling new depsgraph")
 
-#ifndef WITH_LEGACY_DEPSGRAPH
-#  error "Unable to build new depsgraph and legacy one is disabled."
-#endif
+#error "Unable to build new depsgraph and legacy one is disabled."
 
 #define DISABLE_NEW_DEPSGRAPH

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [610af632a9] blender2.8: Depsgraph: Remove command line argument to use new depsgraph

2017-01-24 Thread Sergey Sharybin
Commit: 610af632a98bfcb0c7e4111052cc581d95d45330
Author: Sergey Sharybin
Date:   Tue Jan 24 12:54:21 2017 +0100
Branches: blender2.8
https://developer.blender.org/rB610af632a98bfcb0c7e4111052cc581d95d45330

Depsgraph: Remove command line argument to use new depsgraph

===

M   source/creator/creator_args.c

===

diff --git a/source/creator/creator_args.c b/source/creator/creator_args.c
index 06119b35e3..438c577d06 100644
--- a/source/creator/creator_args.c
+++ b/source/creator/creator_args.c
@@ -55,8 +55,6 @@
 #include "BKE_sound.h"
 #include "BKE_image.h"
 
-#include "DEG_depsgraph.h"
-
 #ifdef WITH_FFMPEG
 #include "IMB_imbuf.h"
 #endif
@@ -587,7 +585,6 @@ static int arg_handle_print_help(int UNUSED(argc), const 
char **UNUSED(argv), vo
 
printf("\n");
printf("Experimental Features:\n");
-   BLI_argsPrintArgDoc(ba, "--enable-new-depsgraph");
BLI_argsPrintArgDoc(ba, "--enable-new-basic-shader-glsl");
 
/* Other options _must_ be last (anything not handled will show here) */
@@ -1185,16 +1182,6 @@ static int arg_handle_threads_set(int argc, const char 
**argv, void *UNUSED(data
}
 }
 
-static const char arg_handle_depsgraph_use_new_doc[] =
-"\n\tUse new dependency graph"
-;
-static int arg_handle_depsgraph_use_new(int UNUSED(argc), const char 
**UNUSED(argv), void *UNUSED(data))
-{
-   printf("Using new dependency graph.\n");
-   DEG_depsgraph_switch_to_new();
-   return 0;
-}
-
 static const char arg_handle_basic_shader_use_legacy_doc[] =
 "\n\tUse legacy (non-GLSL) basic shader"
 ;
@@ -1840,7 +1827,6 @@ void main_args_setup(bContext *C, bArgs *ba, 
SYS_SystemHandle *syshandle)
BLI_argsAdd(ba, 1, NULL, "--debug-gpumem",
CB_EX(arg_handle_debug_mode_generic_set, gpumem), (void 
*)G_DEBUG_GPU_MEM);
 
-   BLI_argsAdd(ba, 1, NULL, "--enable-new-depsgraph", 
CB(arg_handle_depsgraph_use_new), NULL);
BLI_argsAdd(ba, 1, NULL, "--enable-legacy-basic-shader", 
CB(arg_handle_basic_shader_use_legacy), NULL);
 
BLI_argsAdd(ba, 1, NULL, "--verbose", CB(arg_handle_verbosity_set), 
NULL);

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [a2d609331b] blender2.8: Depsgraph: Remove more legacy code from viewport

2017-01-24 Thread Sergey Sharybin
Commit: a2d609331bcb9276a06c731a79b27fe2651ed92a
Author: Sergey Sharybin
Date:   Tue Jan 24 12:52:05 2017 +0100
Branches: blender2.8
https://developer.blender.org/rBa2d609331bcb9276a06c731a79b27fe2651ed92a

Depsgraph: Remove more legacy code from viewport

===

M   source/blender/editors/space_view3d/space_view3d.c

===

diff --git a/source/blender/editors/space_view3d/space_view3d.c 
b/source/blender/editors/space_view3d/space_view3d.c
index 6408e792d5..81122f3b66 100644
--- a/source/blender/editors/space_view3d/space_view3d.c
+++ b/source/blender/editors/space_view3d/space_view3d.c
@@ -960,12 +960,10 @@ static void view3d_main_region_listener(bScreen *sc, 
ScrArea *sa, ARegion *ar, w
case NC_LAMP:
switch (wmn->data) {
case ND_LIGHTING:
-   if ((v3d->drawtype == OB_MATERIAL) ||
-   (v3d->drawtype == OB_TEXTURE && 
(scene->gm.matmode == GAME_MAT_GLSL)) ||
-   !DEG_depsgraph_use_legacy())
-   {
-   ED_region_tag_redraw(ar);
-   }
+   /* TODO(sergey): This is a bit too 
much, but needed to
+* handle updates from new depsgraph.
+*/
+   ED_region_tag_redraw(ar);
break;
case ND_LIGHTING_DRAW:
ED_region_tag_redraw(ar);

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [218b06eb83] blender2.8: Depsgraph: Remove legacy updateDepgraph callbacks from modifiers

2017-01-24 Thread Sergey Sharybin
Commit: 218b06eb83a0107bfd23546c135fd492609d7b8b
Author: Sergey Sharybin
Date:   Tue Jan 24 12:49:23 2017 +0100
Branches: blender2.8
https://developer.blender.org/rB218b06eb83a0107bfd23546c135fd492609d7b8b

Depsgraph: Remove legacy updateDepgraph callbacks from modifiers

===

M   source/blender/blenkernel/BKE_modifier.h
M   source/blender/modifiers/CMakeLists.txt
M   source/blender/modifiers/intern/MOD_armature.c
M   source/blender/modifiers/intern/MOD_array.c
M   source/blender/modifiers/intern/MOD_bevel.c
M   source/blender/modifiers/intern/MOD_boolean.c
M   source/blender/modifiers/intern/MOD_build.c
M   source/blender/modifiers/intern/MOD_cast.c
M   source/blender/modifiers/intern/MOD_cloth.c
M   source/blender/modifiers/intern/MOD_collision.c
M   source/blender/modifiers/intern/MOD_correctivesmooth.c
M   source/blender/modifiers/intern/MOD_curve.c
M   source/blender/modifiers/intern/MOD_datatransfer.c
M   source/blender/modifiers/intern/MOD_decimate.c
M   source/blender/modifiers/intern/MOD_displace.c
M   source/blender/modifiers/intern/MOD_dynamicpaint.c
M   source/blender/modifiers/intern/MOD_edgesplit.c
M   source/blender/modifiers/intern/MOD_explode.c
M   source/blender/modifiers/intern/MOD_fluidsim.c
M   source/blender/modifiers/intern/MOD_hook.c
M   source/blender/modifiers/intern/MOD_laplaciandeform.c
M   source/blender/modifiers/intern/MOD_laplaciansmooth.c
M   source/blender/modifiers/intern/MOD_lattice.c
M   source/blender/modifiers/intern/MOD_mask.c
M   source/blender/modifiers/intern/MOD_meshcache.c
M   source/blender/modifiers/intern/MOD_meshdeform.c
M   source/blender/modifiers/intern/MOD_meshsequencecache.c
M   source/blender/modifiers/intern/MOD_mirror.c
M   source/blender/modifiers/intern/MOD_multires.c
M   source/blender/modifiers/intern/MOD_none.c
M   source/blender/modifiers/intern/MOD_normal_edit.c
M   source/blender/modifiers/intern/MOD_ocean.c
M   source/blender/modifiers/intern/MOD_particleinstance.c
M   source/blender/modifiers/intern/MOD_particlesystem.c
M   source/blender/modifiers/intern/MOD_remesh.c
M   source/blender/modifiers/intern/MOD_screw.c
M   source/blender/modifiers/intern/MOD_shapekey.c
M   source/blender/modifiers/intern/MOD_shrinkwrap.c
M   source/blender/modifiers/intern/MOD_simpledeform.c
M   source/blender/modifiers/intern/MOD_skin.c
M   source/blender/modifiers/intern/MOD_smoke.c
M   source/blender/modifiers/intern/MOD_smooth.c
M   source/blender/modifiers/intern/MOD_softbody.c
M   source/blender/modifiers/intern/MOD_solidify.c
M   source/blender/modifiers/intern/MOD_subsurf.c
M   source/blender/modifiers/intern/MOD_surface.c
M   source/blender/modifiers/intern/MOD_triangulate.c
M   source/blender/modifiers/intern/MOD_uvproject.c
M   source/blender/modifiers/intern/MOD_uvwarp.c
M   source/blender/modifiers/intern/MOD_warp.c
M   source/blender/modifiers/intern/MOD_wave.c
M   source/blender/modifiers/intern/MOD_weightvgedit.c
M   source/blender/modifiers/intern/MOD_weightvgmix.c
M   source/blender/modifiers/intern/MOD_weightvgproximity.c
M   source/blender/modifiers/intern/MOD_wireframe.c

===

diff --git a/source/blender/blenkernel/BKE_modifier.h 
b/source/blender/blenkernel/BKE_modifier.h
index f6c08909d2..06321700dc 100644
--- a/source/blender/blenkernel/BKE_modifier.h
+++ b/source/blender/blenkernel/BKE_modifier.h
@@ -260,15 +260,6 @@ typedef struct ModifierTypeInfo {
 */
bool (*isDisabled)(struct ModifierData *md, int userRenderParams);
 
-   /* Add the appropriate relations to the DEP graph depending on the
-* modifier data. 
-*
-* This function is optional.
-*/
-   void (*updateDepgraph)(struct ModifierData *md, struct DagForest 
*forest,
-  struct Main *bmain, struct Scene *scene,
-  struct Object *ob, struct DagNode *obNode);
-
/* Add the appropriate relations to the dependency graph.
 *
 * This function is optional.
diff --git a/source/blender/modifiers/CMakeLists.txt 
b/source/blender/modifiers/CMakeLists.txt
index bacfc17743..b8ebb375a4 100644
--- a/source/blender/modifiers/CMakeLists.txt
+++ b/source/blender/modifiers/CMakeLists.txt
@@ -113,10 +113,6 @@ set(SRC
intern/MOD_weightvg_util.h
 )
 
-if(WITH_LEGACY_DEPSGRAPH)
-   add_definitions(-DWITH_LEGACY_DEPSGRAPH)
-endif()
-
 if(WITH_ALEMBIC)
add_definitions(-DWITH_ALEMBIC)
list(APPEND INC
diff --git a/source/blender/modifiers/intern/MOD_armature.c 
b/source/blender/modifiers/intern/MOD_armature.c
index 567505ea45..8efa4d6367 100644
--- a/source/blender/modifiers/intern/MOD_armature.c
+++ 

[Bf-blender-cvs] [46d6992907] blender2.8: Depsgraph: Remove special exception in update logging

2017-01-24 Thread Sergey Sharybin
Commit: 46d6992907b5b84c7d2a6aaeb54c3ea45c72a086
Author: Sergey Sharybin
Date:   Tue Jan 24 12:33:05 2017 +0100
Branches: blender2.8
https://developer.blender.org/rB46d6992907b5b84c7d2a6aaeb54c3ea45c72a086

Depsgraph: Remove special exception in update logging

===

M   source/blender/blenkernel/intern/armature_update.c
M   source/blender/blenkernel/intern/object_update.c

===

diff --git a/source/blender/blenkernel/intern/armature_update.c 
b/source/blender/blenkernel/intern/armature_update.c
index 3bc81a69c8..a8ab1e9357 100644
--- a/source/blender/blenkernel/intern/armature_update.c
+++ b/source/blender/blenkernel/intern/armature_update.c
@@ -53,11 +53,7 @@
 
 #include "DEG_depsgraph.h"
 
-#ifdef WITH_LEGACY_DEPSGRAPH
-#  define DEBUG_PRINT if (!DEG_depsgraph_use_legacy() && G.debug & 
G_DEBUG_DEPSGRAPH) printf
-#else
-#  define DEBUG_PRINT if (G.debug & G_DEBUG_DEPSGRAPH) printf
-#endif
+#define DEBUG_PRINT if (G.debug & G_DEBUG_DEPSGRAPH) printf
 
 /* ** SPLINE IK SOLVER *** */
 
diff --git a/source/blender/blenkernel/intern/object_update.c 
b/source/blender/blenkernel/intern/object_update.c
index 5cb704e473..047de18d5b 100644
--- a/source/blender/blenkernel/intern/object_update.c
+++ b/source/blender/blenkernel/intern/object_update.c
@@ -60,11 +60,7 @@
 
 #include "DEG_depsgraph.h"
 
-#ifdef WITH_LEGACY_DEPSGRAPH
-#  define DEBUG_PRINT if (!DEG_depsgraph_use_legacy() && G.debug & 
G_DEBUG_DEPSGRAPH) printf
-#else
-#  define DEBUG_PRINT if (G.debug & G_DEBUG_DEPSGRAPH) printf
-#endif
+#define DEBUG_PRINT if (G.debug & G_DEBUG_DEPSGRAPH) printf
 
 static ThreadMutex material_lock = BLI_MUTEX_INITIALIZER;

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [3687383751] cycles_split_kernel: Cycles: Silence warning about redefined macro

2017-01-24 Thread Mai Lavelle
Commit: 36873837519ea991c955c67b109cb503292bd4b1
Author: Mai Lavelle
Date:   Tue Jan 24 05:48:49 2017 -0500
Branches: cycles_split_kernel
https://developer.blender.org/rB36873837519ea991c955c67b109cb503292bd4b1

Cycles: Silence warning about redefined macro

===

M   intern/cycles/kernel/kernel_types.h

===

diff --git a/intern/cycles/kernel/kernel_types.h 
b/intern/cycles/kernel/kernel_types.h
index b49c602823..e3806f207f 100644
--- a/intern/cycles/kernel/kernel_types.h
+++ b/intern/cycles/kernel/kernel_types.h
@@ -32,7 +32,7 @@
 #  define ccl_addr_space
 #endif
 
-#ifdef __SPLIT_KERNEL__
+#if defined(__SPLIT_KERNEL__) && !defined(__COMPUTE_DEVICE_GPU__)
 /* TODO(mai): need to investigate how this effects the kernel, as cpu kernel 
crashes without this right now */
 #define __COMPUTE_DEVICE_GPU__
 #endif

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [ad4bb312d7] cycles_split_kernel: Cycles: Set device ideal global work size for split kernel

2017-01-24 Thread Mai Lavelle
Commit: ad4bb312d78b45fe0e1fdb5c8e91e8fa44712144
Author: Mai Lavelle
Date:   Tue Jan 24 06:58:51 2017 -0500
Branches: cycles_split_kernel
https://developer.blender.org/rBad4bb312d78b45fe0e1fdb5c8e91e8fa44712144

Cycles: Set device ideal global work size for split kernel

With this the split kernel is running quite a bit faster on some
devices. Other devices will still need more testing.

===

M   intern/cycles/device/device_split_kernel.cpp

===

diff --git a/intern/cycles/device/device_split_kernel.cpp 
b/intern/cycles/device/device_split_kernel.cpp
index 9429c901c8..e47b65b459 100644
--- a/intern/cycles/device/device_split_kernel.cpp
+++ b/intern/cycles/device/device_split_kernel.cpp
@@ -118,16 +118,21 @@ bool DeviceSplitKernel::path_trace(DeviceTask *task,
local_size[1] = lsize[1];
}
 
-   /* Make sure that set render feasible tile size is a multiple of local
-* work size dimensions.
-*/
-   size_t global_size[2];
-   global_size[0] = round_up(task->requested_tile_size.x, local_size[0]);
-   global_size[1] = round_up(task->requested_tile_size.y, local_size[1]);
-
/* Calculate per_thread_output_buffer_size. */
size_t per_thread_output_buffer_size = task->passes_size;
 
+   /* Set gloabl size */
+   size_t global_size[2];
+   {
+   int2 gsize = device->split_kernel_global_size(task, *this);
+
+   /* Make sure that set work size is a multiple of local
+* work size dimensions.
+*/
+   global_size[0] = round_up(gsize[0], local_size[0]);
+   global_size[1] = round_up(gsize[1], local_size[1]);
+   }
+
/* Number of elements in the global state buffer */
int num_global_elements = global_size[0] * global_size[1];

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [df8a964232] cycles_split_kernel: Cycles: Remove everything parallel samples from the split kernel

2017-01-24 Thread Mai Lavelle
Commit: df8a964232b64eadca03600935965d0b1c7ea668
Author: Mai Lavelle
Date:   Tue Jan 24 04:55:40 2017 -0500
Branches: cycles_split_kernel
https://developer.blender.org/rBdf8a964232b64eadca03600935965d0b1c7ea668

Cycles: Remove everything parallel samples from the split kernel

Parallel samples never actually worked, was producing incorrect results
or crashes, and wasn't any faster than work stealing, so removing it.

===

M   intern/cycles/device/device.h
M   intern/cycles/device/device_cpu.cpp
M   intern/cycles/device/device_cuda.cpp
M   intern/cycles/device/device_split_kernel.cpp
M   intern/cycles/device/opencl/opencl_split.cpp
M   intern/cycles/kernel/kernel_passes.h
M   intern/cycles/kernel/kernel_types.h
M   intern/cycles/kernel/kernel_work_stealing.h
M   intern/cycles/kernel/kernels/cpu/kernel_cpu.h
M   intern/cycles/kernel/kernels/cuda/kernel_split.cu
M   intern/cycles/kernel/kernels/opencl/kernel_data_init.cl
M   intern/cycles/kernel/split/kernel_background_buffer_update.h
M   intern/cycles/kernel/split/kernel_data_init.h
M   
intern/cycles/kernel/split/kernel_holdout_emission_blurring_pathtermination_ao.h
M   intern/cycles/kernel/split/kernel_lamp_emission.h
M   intern/cycles/kernel/split/kernel_scene_intersect.h
M   intern/cycles/kernel/split/kernel_split_data.h
M   intern/cycles/kernel/split/kernel_sum_all_radiance.h

===

diff --git a/intern/cycles/device/device.h b/intern/cycles/device/device.h
index 1564d9f3d8..13b7c08f50 100644
--- a/intern/cycles/device/device.h
+++ b/intern/cycles/device/device.h
@@ -296,7 +296,6 @@ private:
virtual bool enqueue_split_kernel_data_init(const KernelDimensions& 
/*dim*/,
RenderTile& /*rtile*/,
int /*num_global_elements*/,
-   int 
/*num_parallel_samples*/,
device_memory& 
/*kernel_globals*/,
device_memory& 
/*kernel_data*/,
device_memory& 
/*split_data*/,
diff --git a/intern/cycles/device/device_cpu.cpp 
b/intern/cycles/device/device_cpu.cpp
index 3811e43ab9..c131bea521 100644
--- a/intern/cycles/device/device_cpu.cpp
+++ b/intern/cycles/device/device_cpu.cpp
@@ -700,7 +700,6 @@ protected:
virtual bool enqueue_split_kernel_data_init(const KernelDimensions& dim,
RenderTile& rtile,
int num_global_elements,
-   int num_parallel_samples,
device_memory& 
kernel_globals,
device_memory& data,
device_memory& split_data,
@@ -724,11 +723,8 @@ protected:
ccl_global int *Queue_index,
int queuesize,
ccl_global char *use_queues_flag,
-#ifdef __WORK_STEALING__
ccl_global unsigned int *work_pool_wgs,
unsigned int num_samples,
-#endif
-   int parallel_samples,
int buffer_offset_x,
int buffer_offset_y,
int buffer_stride,
@@ -797,11 +793,8 @@ protected:
  
(int*)queue_index.device_pointer,
  dim.global_size[0] * 
dim.global_size[1],
  
(char*)use_queues_flags.device_pointer,
-#ifdef __WORK_STEALING__
  
(uint*)work_pool_wgs.device_pointer,
  rtile.num_samples,
-#endif
- num_parallel_samples,
  rtile.buffer_offset_x,
  rtile.buffer_offset_y,
  rtile.buffer_rng_state_stride,
diff --git a/intern/cycles/device/device_cuda.cpp 
b/intern/cycles/device/device_cuda.cpp
index 1b8b09bb07..5aaed093f3 100644
--- a/intern/cycles/device/device_cuda.cpp
+++ b/intern/cycles/device/device_cuda.cpp
@@ -1419,7 +1419,6 @@ public:
bool enqueue_split_kernel_data_init(const KernelDimensions& dim,
RenderTile& rtile,
int num_global_elements,
-   

[Bf-blender-cvs] [c5c42964f8] cycles_split_kernel: Cycles: Expose passes size to device tasks

2017-01-24 Thread Mai Lavelle
Commit: c5c42964f8582e24b0cc5a703d41c3c7d05eab84
Author: Mai Lavelle
Date:   Fri Jan 20 03:05:32 2017 -0500
Branches: cycles_split_kernel
https://developer.blender.org/rBc5c42964f8582e24b0cc5a703d41c3c7d05eab84

Cycles: Expose passes size to device tasks

This is needed so devices can know the size of a tile buffer before any
tiles are acquired.

===

M   intern/cycles/device/device_split_kernel.cpp
M   intern/cycles/device/device_task.h
M   intern/cycles/render/session.cpp

===

diff --git a/intern/cycles/device/device_split_kernel.cpp 
b/intern/cycles/device/device_split_kernel.cpp
index 0670a10a5c..9429c901c8 100644
--- a/intern/cycles/device/device_split_kernel.cpp
+++ b/intern/cycles/device/device_split_kernel.cpp
@@ -126,28 +126,7 @@ bool DeviceSplitKernel::path_trace(DeviceTask *task,
global_size[1] = round_up(task->requested_tile_size.y, local_size[1]);
 
/* Calculate per_thread_output_buffer_size. */
-   size_t per_thread_output_buffer_size;
-   {
-   size_t output_buffer_size = tile.buffers->buffer.device_size;
-
-#if 0
-   /* This value is different when running on AMD and NV. */
-   if(device->background) {
-   /* In offline render the number of buffer elements
-* associated with tile.buffer is the current tile size.
-*/
-   per_thread_output_buffer_size = output_buffer_size / 
(tile.w * tile.h);
-   }
-   else
-#endif
-   {
-   /* interactive rendering, unlike offline render, the 
number of buffer elements
-* associated with tile.buffer is the entire viewport 
size.
-*/
-   per_thread_output_buffer_size = output_buffer_size /
-   (tile.buffers->params.width * 
tile.buffers->params.height);
-   }
-   }
+   size_t per_thread_output_buffer_size = task->passes_size;
 
/* Number of elements in the global state buffer */
int num_global_elements = global_size[0] * global_size[1];
diff --git a/intern/cycles/device/device_task.h 
b/intern/cycles/device/device_task.h
index 8bd54c3d2b..f31092fd9d 100644
--- a/intern/cycles/device/device_task.h
+++ b/intern/cycles/device/device_task.h
@@ -51,6 +51,8 @@ public:
int shader_filter;
int shader_x, shader_w;
 
+   int passes_size;
+
explicit DeviceTask(Type type = PATH_TRACE);
 
int get_subtask_count(int num, int max_size = 0);
diff --git a/intern/cycles/render/session.cpp b/intern/cycles/render/session.cpp
index 17ea13b130..f70b8a9add 100644
--- a/intern/cycles/render/session.cpp
+++ b/intern/cycles/render/session.cpp
@@ -888,6 +888,7 @@ void Session::path_trace()
task.need_finish_queue = params.progressive_refine;
task.integrator_branched = scene->integrator->method == 
Integrator::BRANCHED_PATH;
task.requested_tile_size = params.tile_size;
+   task.passes_size = delayed_reset.params.get_passes_size();
 
device->task_add(task);
 }

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [8e49b9b06e] cycles_split_kernel: Cycles: Add split_kernel_global_size function

2017-01-24 Thread Mai Lavelle
Commit: 8e49b9b06e3bf739850f700af476b735351e3fad
Author: Mai Lavelle
Date:   Tue Jan 24 06:56:02 2017 -0500
Branches: cycles_split_kernel
https://developer.blender.org/rB8e49b9b06e3bf739850f700af476b735351e3fad

Cycles: Add split_kernel_global_size function

This is to allow devices to suggest a good global work size. Only
implemented for OpenCL devices right now.

===

M   intern/cycles/device/device.h
M   intern/cycles/device/opencl/opencl_split.cpp

===

diff --git a/intern/cycles/device/device.h b/intern/cycles/device/device.h
index 13b7c08f50..dd176c7577 100644
--- a/intern/cycles/device/device.h
+++ b/intern/cycles/device/device.h
@@ -33,6 +33,7 @@ CCL_NAMESPACE_BEGIN
 
 class Progress;
 class RenderTile;
+class DeviceSplitKernel;
 
 /* Device Types */
 
@@ -330,6 +331,12 @@ private:
return make_int2(0, 0);
}
 
+   virtual int2 split_kernel_global_size(DeviceTask */*task*/, 
DeviceSplitKernel& /*split_kernel*/)
+   {
+   assert(!"not implemented for this device");
+   return make_int2(64, 64);
+   }
+
friend class DeviceSplitKernel;
 
 public:
diff --git a/intern/cycles/device/opencl/opencl_split.cpp 
b/intern/cycles/device/opencl/opencl_split.cpp
index 8d3e2598c5..cd2c3f25b5 100644
--- a/intern/cycles/device/opencl/opencl_split.cpp
+++ b/intern/cycles/device/opencl/opencl_split.cpp
@@ -259,6 +259,16 @@ public:
return make_int2(64, 1);
}
 
+   virtual int2 split_kernel_global_size(DeviceTask *task, 
DeviceSplitKernel& split_kernel)
+   {
+   size_t max_buffer_size;
+   clGetDeviceInfo(cdDevice, CL_DEVICE_MAX_MEM_ALLOC_SIZE, 
sizeof(size_t), _buffer_size, NULL);
+
+   size_t num_elements = 
split_kernel.max_elements_for_max_buffer_size(max_buffer_size / 2, 
task->passes_size);
+
+   return make_int2(round_up((int)sqrt(num_elements), 64), 
(int)sqrt(num_elements));
+   }
+
void thread_run(DeviceTask *task)
{
if(task->type == DeviceTask::FILM_CONVERT) {

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [d8c7cec415] cycles_split_kernel: Cycles: Rework work stealing

2017-01-24 Thread Mai Lavelle
Commit: d8c7cec415da34bc9e1687527263dae92414270f
Author: Mai Lavelle
Date:   Tue Jan 24 05:51:26 2017 -0500
Branches: cycles_split_kernel
https://developer.blender.org/rBd8c7cec415da34bc9e1687527263dae92414270f

Cycles: Rework work stealing

Previous implementation of work stealing didn't do what it claimed to do
and made some odd assumptions. This new implementation is cleaner,
organizes work in a slightly more optimal way, and most importantly
decouples work from tile size, which will allow for greater speed ups.

===

M   intern/cycles/device/device_split_kernel.cpp
M   intern/cycles/kernel/kernel_types.h
M   intern/cycles/kernel/kernel_work_stealing.h
M   intern/cycles/kernel/split/kernel_background_buffer_update.h
M   intern/cycles/kernel/split/kernel_data_init.h
M   
intern/cycles/kernel/split/kernel_holdout_emission_blurring_pathtermination_ao.h
M   intern/cycles/kernel/split/kernel_lamp_emission.h
M   intern/cycles/kernel/split/kernel_scene_intersect.h
M   intern/cycles/kernel/split/kernel_split_data.h
M   intern/cycles/kernel/split/kernel_sum_all_radiance.h

===

diff --git a/intern/cycles/device/device_split_kernel.cpp 
b/intern/cycles/device/device_split_kernel.cpp
index 484416d297..1954c3ccaa 100644
--- a/intern/cycles/device/device_split_kernel.cpp
+++ b/intern/cycles/device/device_split_kernel.cpp
@@ -115,9 +115,9 @@ bool DeviceSplitKernel::path_trace(DeviceTask *task,
/* Make sure that set render feasible tile size is a multiple of local
 * work size dimensions.
 */
-   int2 max_render_feasible_tile_size;
-   max_render_feasible_tile_size.x = round_up(task->requested_tile_size.x, 
local_size[0]);
-   max_render_feasible_tile_size.y = round_up(task->requested_tile_size.y, 
local_size[1]);
+   size_t global_size[2];
+   global_size[0] = round_up(task->requested_tile_size.x, local_size[0]);
+   global_size[1] = round_up(task->requested_tile_size.y, local_size[1]);
 
/* Calculate per_thread_output_buffer_size. */
size_t per_thread_output_buffer_size;
@@ -143,12 +143,8 @@ bool DeviceSplitKernel::path_trace(DeviceTask *task,
}
}
 
-   /* set global_size */
-   size_t global_size[2] = {round_up(tile.w, local_size[0]), 
round_up(tile.h, local_size[1])};
-   assert(global_size[0] * global_size[1] <= 
max_render_feasible_tile_size.x * max_render_feasible_tile_size.y);
-
/* Number of elements in the global state buffer */
-   int num_global_elements = max_render_feasible_tile_size.x * 
max_render_feasible_tile_size.y;
+   int num_global_elements = global_size[0] * global_size[1];
 
/* Allocate all required global memory once. */
if(first_tile) {
@@ -157,8 +153,7 @@ bool DeviceSplitKernel::path_trace(DeviceTask *task,
/* Calculate max groups */
 
/* Denotes the maximum work groups possible w.r.t. current 
requested tile size. */
-   unsigned int max_work_groups = (max_render_feasible_tile_size.x 
* max_render_feasible_tile_size.y) /
- (local_size[0] * local_size[1]);
+   unsigned int max_work_groups = num_global_elements / 
WORK_POOL_SIZE + 1;
 
/* Allocate work_pool_wgs memory. */
work_pool_wgs.resize(max_work_groups * sizeof(unsigned int));
diff --git a/intern/cycles/kernel/kernel_types.h 
b/intern/cycles/kernel/kernel_types.h
index e3806f207f..d442de0b56 100644
--- a/intern/cycles/kernel/kernel_types.h
+++ b/intern/cycles/kernel/kernel_types.h
@@ -61,6 +61,8 @@ CCL_NAMESPACE_BEGIN
 
 #define VOLUME_STACK_SIZE  16
 
+#define WORK_POOL_SIZE 64
+
 /* device capabilities */
 #ifdef __KERNEL_CPU__
 #  ifdef __KERNEL_SSE2__
diff --git a/intern/cycles/kernel/kernel_work_stealing.h 
b/intern/cycles/kernel/kernel_work_stealing.h
index 8065d2dd91..28fc5ce1c3 100644
--- a/intern/cycles/kernel/kernel_work_stealing.h
+++ b/intern/cycles/kernel/kernel_work_stealing.h
@@ -27,160 +27,90 @@ CCL_NAMESPACE_BEGIN
 #  pragma OPENCL EXTENSION cl_khr_global_int32_base_atomics : enable
 #endif
 
-ccl_device uint get_group_id_with_ray_index(uint ray_index,
- uint tile_dim_x,
- uint tile_dim_y,
- int dim)
+ccl_device_inline uint kernel_total_work_size(KernelGlobals *kg)
 {
-   if(dim == 0) {
-   uint x_span = ray_index % tile_dim_x;
-   return x_span / ccl_local_size(0);
+   return kernel_split_params.w * kernel_split_params.h * 
kernel_split_params.num_samples;
+}
+
+ccl_device_inline uint kernel_num_work_pools(KernelGlobals *kg)
+{
+   return ccl_global_size(0) * ccl_global_size(1) / WORK_POOL_SIZE;
+}
+
+ccl_device_inline uint work_pool_from_ray_index(KernelGlobals 

[Bf-blender-cvs] [facaf17429] cycles_split_kernel: Cycles: Add DeviceSplitKernel::max_elements_for_max_buffer_size

2017-01-24 Thread Mai Lavelle
Commit: facaf174294d67556152e997f3467b66e61583b5
Author: Mai Lavelle
Date:   Fri Jan 20 03:04:12 2017 -0500
Branches: cycles_split_kernel
https://developer.blender.org/rBfacaf174294d67556152e997f3467b66e61583b5

Cycles: Add DeviceSplitKernel::max_elements_for_max_buffer_size

Will be used for deciding on a good work size.

===

M   intern/cycles/device/device_split_kernel.cpp
M   intern/cycles/device/device_split_kernel.h

===

diff --git a/intern/cycles/device/device_split_kernel.cpp 
b/intern/cycles/device/device_split_kernel.cpp
index 1954c3ccaa..0670a10a5c 100644
--- a/intern/cycles/device/device_split_kernel.cpp
+++ b/intern/cycles/device/device_split_kernel.cpp
@@ -80,6 +80,12 @@ bool DeviceSplitKernel::load_kernels(const 
DeviceRequestedFeatures& requested_fe
return true;
 }
 
+size_t DeviceSplitKernel::max_elements_for_max_buffer_size(size_t 
max_buffer_size, size_t passes_size)
+{
+   size_t size_per_element = split_data_buffer_size(1024, 
current_max_closure, passes_size) / 1024;
+   return max_buffer_size / size_per_element;
+}
+
 bool DeviceSplitKernel::path_trace(DeviceTask *task,
RenderTile& tile,
device_memory& kernel_data)
diff --git a/intern/cycles/device/device_split_kernel.h 
b/intern/cycles/device/device_split_kernel.h
index e4567b32d4..92dfb7f099 100644
--- a/intern/cycles/device/device_split_kernel.h
+++ b/intern/cycles/device/device_split_kernel.h
@@ -77,6 +77,8 @@ public:
bool path_trace(DeviceTask *task,
RenderTile& rtile,
device_memory& kernel_data);
+
+   size_t max_elements_for_max_buffer_size(size_t max_buffer_size, size_t 
passes_size);
 };
 
 CCL_NAMESPACE_END

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [44ffbcd254] blender-v2.78b-release: Fix T49857: Blender crashes after adding texture node to compositing tree

2017-01-24 Thread Sergey Sharybin
Commit: 44ffbcd254009fcff2575eb99e0dafe9cbf2ae51
Author: Sergey Sharybin
Date:   Thu Nov 3 10:25:31 2016 +0100
Branches: blender-v2.78b-release
https://developer.blender.org/rB44ffbcd254009fcff2575eb99e0dafe9cbf2ae51

Fix T49857: Blender crashes after adding texture node to compositing tree

===

M   source/blender/compositor/operations/COM_TextureOperation.cpp

===

diff --git a/source/blender/compositor/operations/COM_TextureOperation.cpp 
b/source/blender/compositor/operations/COM_TextureOperation.cpp
index bba5c8702b..6bfd8ae388 100644
--- a/source/blender/compositor/operations/COM_TextureOperation.cpp
+++ b/source/blender/compositor/operations/COM_TextureOperation.cpp
@@ -118,7 +118,7 @@ void TextureBaseOperation::executePixelSampled(float 
output[4], float x, float y
 * interpolaiton and (b) in such configuration multitex() sinply 
floor's the value
 * which often produces artifacts.
 */
-   if ((m_texture->imaflag & TEX_INTERPOL) == 0) {
+   if (m_texture != NULL && (m_texture->imaflag & TEX_INTERPOL) == 0) {
u += 0.5f / cx;
v += 0.5f / cy;
}

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [feb2f0ae30] blender-v2.78b-release: FIX T49899: Add EIGEN_MAKE_ALIGNED_OPERATOR_NEW to classes that use eigen's data types , to force aligned on 16 byte boundaries.

2017-01-24 Thread lazydodo
Commit: feb2f0ae3041d27cba9a8aaadaf31bfcbab67ff2
Author: lazydodo
Date:   Tue Nov 15 13:21:01 2016 -0700
Branches: blender-v2.78b-release
https://developer.blender.org/rBfeb2f0ae3041d27cba9a8aaadaf31bfcbab67ff2

FIX T49899: Add EIGEN_MAKE_ALIGNED_OPERATOR_NEW to classes that use eigen's 
data types , to force aligned on 16 byte boundaries.

===

M   intern/iksolver/intern/IK_QSegment.h
M   intern/iksolver/intern/IK_Solver.cpp

===

diff --git a/intern/iksolver/intern/IK_QSegment.h 
b/intern/iksolver/intern/IK_QSegment.h
index 74f157aa76..247807dc5e 100644
--- a/intern/iksolver/intern/IK_QSegment.h
+++ b/intern/iksolver/intern/IK_QSegment.h
@@ -60,6 +60,7 @@
 class IK_QSegment
 {
 public:
+   EIGEN_MAKE_ALIGNED_OPERATOR_NEW
virtual ~IK_QSegment();
 
// start: a user defined translation
diff --git a/intern/iksolver/intern/IK_Solver.cpp 
b/intern/iksolver/intern/IK_Solver.cpp
index cefb8c7ed7..a00db4fa2f 100644
--- a/intern/iksolver/intern/IK_Solver.cpp
+++ b/intern/iksolver/intern/IK_Solver.cpp
@@ -42,6 +42,7 @@ using namespace std;
 
 class IK_QSolver {
 public:
+   EIGEN_MAKE_ALIGNED_OPERATOR_NEW
IK_QSolver() : root(NULL) {
}

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [d4c5e366ea] master: Install deps: Bump OpenSubdiv version to 3.1.1

2017-01-24 Thread Sergey Sharybin
Commit: d4c5e366ea11f77876c304f5557889d7f5e032f7
Author: Sergey Sharybin
Date:   Tue Jan 24 11:49:45 2017 +0100
Branches: master
https://developer.blender.org/rBd4c5e366ea11f77876c304f5557889d7f5e032f7

Install deps: Bump OpenSubdiv version to 3.1.1

Required to have some crash fixes.

===

M   build_files/build_environment/install_deps.sh

===

diff --git a/build_files/build_environment/install_deps.sh 
b/build_files/build_environment/install_deps.sh
index ecb1cf8751..c4d6b284c4 100755
--- a/build_files/build_environment/install_deps.sh
+++ b/build_files/build_environment/install_deps.sh
@@ -344,7 +344,7 @@ OSL_FORCE_REBUILD=false
 OSL_SKIP=false
 
 # OpenSubdiv needs to be compiled for now
-OSD_VERSION="3.1.0"
+OSD_VERSION="3.1.1"
 OSD_VERSION_MIN=$OSD_VERSION
 OSD_FORCE_BUILD=false
 OSD_FORCE_REBUILD=false

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [379ba346b0] cycles_disney_brdf: Renamed the Disney BSDF to Principled BSDF.

2017-01-24 Thread Pascal Schoen
Commit: 379ba346b0acd1ea779365b940fcd01f5ba1165f
Author: Pascal Schoen
Date:   Tue Jan 24 09:28:56 2017 +0100
Branches: cycles_disney_brdf
https://developer.blender.org/rB379ba346b0acd1ea779365b940fcd01f5ba1165f

Renamed the Disney BSDF to Principled BSDF.

===

M   intern/cycles/blender/blender_shader.cpp
M   intern/cycles/kernel/CMakeLists.txt
M   intern/cycles/kernel/closure/bsdf.h
M   intern/cycles/kernel/closure/bsdf_microfacet.h
R070intern/cycles/kernel/closure/bsdf_disney_diffuse.h  
intern/cycles/kernel/closure/bsdf_principled_diffuse.h
R068intern/cycles/kernel/closure/bsdf_disney_sheen.h
intern/cycles/kernel/closure/bsdf_principled_sheen.h
M   intern/cycles/kernel/closure/bssrdf.h
M   intern/cycles/kernel/kernel_subsurface.h
M   intern/cycles/kernel/osl/osl_bssrdf.cpp
M   intern/cycles/kernel/osl/osl_closures.cpp
M   intern/cycles/kernel/osl/osl_closures.h
M   intern/cycles/kernel/shaders/CMakeLists.txt
R091intern/cycles/kernel/shaders/node_disney_bsdf.osl   
intern/cycles/kernel/shaders/node_principled_bsdf.osl
M   intern/cycles/kernel/shaders/stdosl.h
M   intern/cycles/kernel/svm/svm_closure.h
M   intern/cycles/kernel/svm/svm_types.h
M   intern/cycles/render/graph.cpp
M   intern/cycles/render/nodes.cpp
M   intern/cycles/render/nodes.h
M   release/scripts/startup/nodeitems_builtins.py
M   source/blender/blenkernel/BKE_node.h
M   source/blender/blenkernel/intern/node.c
M   source/blender/editors/space_node/drawnode.c
M   source/blender/gpu/shaders/gpu_shader_material.glsl
M   source/blender/makesrna/intern/rna_nodetree.c
M   source/blender/nodes/CMakeLists.txt
M   source/blender/nodes/NOD_shader.h
M   source/blender/nodes/NOD_static_types.h
R080source/blender/nodes/shader/nodes/node_shader_bsdf_disney.c 
source/blender/nodes/shader/nodes/node_shader_bsdf_principled.c

===

diff --git a/intern/cycles/blender/blender_shader.cpp 
b/intern/cycles/blender/blender_shader.cpp
index cb50b74156..a82efb018f 100644
--- a/intern/cycles/blender/blender_shader.cpp
+++ b/intern/cycles/blender/blender_shader.cpp
@@ -517,18 +517,18 @@ static ShaderNode *add_node(Scene *scene,
}
node = hair;
}
-   else if(b_node.is_a(_ShaderNodeBsdfDisney)) {
-   BL::ShaderNodeBsdfDisney b_disney_node(b_node);
-   DisneyBsdfNode *disney = new DisneyBsdfNode();
-   switch (b_disney_node.distribution()) {
-   case BL::ShaderNodeBsdfDisney::distribution_GGX:
-   disney->distribution = 
CLOSURE_BSDF_MICROFACET_GGX_GLASS_ID;
+   else if(b_node.is_a(_ShaderNodeBsdfPrincipled)) {
+   BL::ShaderNodeBsdfPrincipled b_principled_node(b_node);
+   PrincipledBsdfNode *principled = new PrincipledBsdfNode();
+   switch (b_principled_node.distribution()) {
+   case BL::ShaderNodeBsdfPrincipled::distribution_GGX:
+   principled->distribution = 
CLOSURE_BSDF_MICROFACET_GGX_GLASS_ID;
break;
-   case BL::ShaderNodeBsdfDisney::distribution_MULTI_GGX:
-   disney->distribution = 
CLOSURE_BSDF_MICROFACET_MULTI_GGX_GLASS_ID;
+   case 
BL::ShaderNodeBsdfPrincipled::distribution_MULTI_GGX:
+   principled->distribution = 
CLOSURE_BSDF_MICROFACET_MULTI_GGX_GLASS_ID;
break;
}
-   node = disney;
+   node = principled;
}
else if(b_node.is_a(_ShaderNodeBsdfTranslucent)) {
node = new TranslucentBsdfNode();
diff --git a/intern/cycles/kernel/CMakeLists.txt 
b/intern/cycles/kernel/CMakeLists.txt
index 73485ca651..7f566a660e 100644
--- a/intern/cycles/kernel/CMakeLists.txt
+++ b/intern/cycles/kernel/CMakeLists.txt
@@ -108,8 +108,8 @@ set(SRC_CLOSURE_HEADERS
closure/bssrdf.h
closure/emissive.h
closure/volume.h
-   closure/bsdf_disney_diffuse.h
-   closure/bsdf_disney_sheen.h
+   closure/bsdf_principled_diffuse.h
+   closure/bsdf_principled_sheen.h
 )
 
 set(SRC_SVM_HEADERS
diff --git a/intern/cycles/kernel/closure/bsdf.h 
b/intern/cycles/kernel/closure/bsdf.h
index b46f6a7f1c..04f9e711c7 100644
--- a/intern/cycles/kernel/closure/bsdf.h
+++ b/intern/cycles/kernel/closure/bsdf.h
@@ -27,8 +27,8 @@
 #include "../closure/bsdf_ashikhmin_shirley.h"
 #include "../closure/bsdf_toon.h"
 #include "../closure/bsdf_hair.h"
-#include "../closure/bsdf_disney_diffuse.h"
-#include "../closure/bsdf_disney_sheen.h"
+#include "../closure/bsdf_principled_diffuse.h"
+#include "../closure/bsdf_principled_sheen.h"
 #ifdef __SUBSURFACE__
 #  include 

[Bf-blender-cvs] [17724e9d2d] cycles_disney_brdf: Merge branch 'master' into cycles_disney_brdf

2017-01-24 Thread Pascal Schoen
Commit: 17724e9d2dbffb1aaa61401224ecbf2349c1dac3
Author: Pascal Schoen
Date:   Tue Jan 24 09:59:58 2017 +0100
Branches: cycles_disney_brdf
https://developer.blender.org/rB17724e9d2dbffb1aaa61401224ecbf2349c1dac3

Merge branch 'master' into cycles_disney_brdf

===



===

diff --cc intern/cycles/kernel/closure/bsdf_microfacet.h
index 9f5a8d03bd,4a1316fd2a..b74e8ab97c
--- a/intern/cycles/kernel/closure/bsdf_microfacet.h
+++ b/intern/cycles/kernel/closure/bsdf_microfacet.h
@@@ -585,16 -489,7 +587,18 @@@ ccl_device int bsdf_microfacet_ggx_samp
/* some high number for MIS */
*pdf = 1e6f;
*eval = make_float3(1e6f, 1e6f, 
1e6f);
 +
 +  bool use_fresnel = (bsdf->type 
== CLOSURE_BSDF_MICROFACET_GGX_FRESNEL_ID
 + || 
bsdf->type == CLOSURE_BSDF_MICROFACET_GGX_CLEARCOAT_ID
 + || 
bsdf->type == CLOSURE_BSDF_MICROFACET_GGX_ANISO_FRESNEL_ID);
 +
 +  /* if fresnel is used, 
calculate the color with reflection_color(...) */
 +  if(use_fresnel) {
 +  *pdf = 1.0f;
 +  *eval = 
reflection_color(bsdf, *omega_in, m);
 +  }
++
+   label = LABEL_REFLECT | 
LABEL_SINGULAR;
}
else {
/* microfacet normal is visible 
to this ray */

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [520afa2962] master: GPencil: Fix unreported animation data missing when change palette name

2017-01-24 Thread Antonio Vazquez
Commit: 520afa2962f1fc97a04f81a5f6a423dd71cf30f3
Author: Antonio Vazquez
Date:   Tue Jan 24 09:15:41 2017 +0100
Branches: master
https://developer.blender.org/rB520afa2962f1fc97a04f81a5f6a423dd71cf30f3

GPencil: Fix unreported animation data missing when change palette name

When a palette was renamed, the animation data was not changed.

This fix is related to commit 196520fe7d81

===

M   source/blender/makesrna/intern/rna_gpencil.c

===

diff --git a/source/blender/makesrna/intern/rna_gpencil.c 
b/source/blender/makesrna/intern/rna_gpencil.c
index 25cd7265c3..6e0d6ad2bc 100644
--- a/source/blender/makesrna/intern/rna_gpencil.c
+++ b/source/blender/makesrna/intern/rna_gpencil.c
@@ -784,11 +784,16 @@ static void rna_GPencilPalette_info_set(PointerRNA *ptr, 
const char *value)
bGPdata *gpd = ptr->id.data;
bGPDpalette *palette = ptr->data;
 
+   char oldname[64] = "";
+   BLI_strncpy(oldname, palette->info, sizeof(oldname));
+
/* copy the new name into the name slot */
BLI_strncpy_utf8(palette->info, value, sizeof(palette->info));
 
BLI_uniquename(>palettes, palette, DATA_("GP_Palette"), '.', 
offsetof(bGPDpalette, info),
   sizeof(palette->info));
+   /* now fix animation paths */
+   BKE_animdata_fix_paths_rename_all(>id, "palettes", oldname, 
palette->info);
 }
 
 static char *rna_GPencilPalette_path(PointerRNA *ptr)

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs