[Bf-blender-cvs] [d7384800d65] soc-2016-pbvh-painting: Move SculptBrushTest initialization out of loop
Campbell Barton
noreply at git.blender.org
Wed Apr 12 16:58:45 CEST 2017
Commit: d7384800d65f41941e7d4ea805151de338fe7d7f
Author: Campbell Barton
Date: Thu Apr 13 00:58:41 2017 +1000
Branches: soc-2016-pbvh-painting
https://developer.blender.org/rBd7384800d65f41941e7d4ea805151de338fe7d7f
Move SculptBrushTest initialization out of loop
There is no need to run this every iteration.
===================================================================
M source/blender/editors/sculpt_paint/paint_vertex.c
===================================================================
diff --git a/source/blender/editors/sculpt_paint/paint_vertex.c b/source/blender/editors/sculpt_paint/paint_vertex.c
index 099f2d1e173..531c4e4c6c7 100644
--- a/source/blender/editors/sculpt_paint/paint_vertex.c
+++ b/source/blender/editors/sculpt_paint/paint_vertex.c
@@ -2222,15 +2222,14 @@ static void calc_area_normal_and_center_task_cb(void *userdata, const int n)
float(*area_nos)[3] = data->area_nos;
float(*area_cos)[3] = data->area_cos;
- PBVHVertexIter vd;
- SculptBrushTest test;
-
float private_co[2][3] = {{0.0f}};
float private_no[2][3] = {{0.0f}};
int private_count[2] = {0};
+ SculptBrushTest test;
sculpt_brush_test_init(ss, &test);
+ PBVHVertexIter vd;
BKE_pbvh_vertex_iter_begin(ss->pbvh, data->nodes[n], vd, PBVH_ITER_UNIQUE)
{
const float *co;
@@ -2384,14 +2383,14 @@ static void do_wpaint_brush_blur_task_cb_ex(
const bool use_face_sel = (data->me->editflag & ME_EDIT_PAINT_FACE_SEL) != 0;
const bool use_vert_sel = (data->me->editflag & ME_EDIT_PAINT_VERT_SEL) != 0;
+ SculptBrushTest test;
+ sculpt_brush_test_init(ss, &test);
+
/* For each vertex */
PBVHVertexIter vd;
BKE_pbvh_vertex_iter_begin(ss->pbvh, data->nodes[n], vd, PBVH_ITER_UNIQUE)
{
/* Test to see if the vertex coordinates are within the spherical brush region. */
- SculptBrushTest test;
- sculpt_brush_test_init(ss, &test);
-
if (sculpt_brush_test_sq(&test, vd.co)) {
/* For grid based pbvh, take the vert whose loop coopresponds to the current grid.
* Otherwise, take the current vert. */
@@ -2457,14 +2456,15 @@ static void do_wpaint_brush_smudge_task_cb_ex(
sub_v3_v3v3(brush_dir, cache->location, cache->last_location);
if (normalize_v3(brush_dir) != 0.0f) {
+
+ SculptBrushTest test;
+ sculpt_brush_test_init(ss, &test);
+
/* For each vertex */
PBVHVertexIter vd;
BKE_pbvh_vertex_iter_begin(ss->pbvh, data->nodes[n], vd, PBVH_ITER_UNIQUE)
{
/* Test to see if the vertex coordinates are within the spherical brush region. */
- SculptBrushTest test;
- sculpt_brush_test_init(ss, &test);
-
if (sculpt_brush_test_fast(&test, vd.co)) {
const float view_dot = (vd.no) ? dot_vf3vs3(cache->sculpt_normal_symm, vd.no) : 1.0;
if (view_dot > 0.0f) {
@@ -2546,13 +2546,14 @@ static void do_wpaint_brush_draw_task_cb_ex(
const bool use_face_sel = (data->me->editflag & ME_EDIT_PAINT_FACE_SEL) != 0;
const bool use_vert_sel = (data->me->editflag & ME_EDIT_PAINT_VERT_SEL) != 0;
+ SculptBrushTest test;
+ sculpt_brush_test_init(ss, &test);
+
/* For each vertex */
PBVHVertexIter vd;
BKE_pbvh_vertex_iter_begin(ss->pbvh, data->nodes[n], vd, PBVH_ITER_UNIQUE)
{
/* Test to see if the vertex coordinates are within the spherical brush region. */
- SculptBrushTest test;
- sculpt_brush_test_init(ss, &test);
if (sculpt_brush_test_sq(&test, vd.co)) {
/* Note: grids are 1:1 with corners (aka loops).
* For multires, take the vert whose loop cooresponds to the current grid.
@@ -2620,12 +2621,13 @@ static void do_wpaint_brush_calc_ave_weight_cb_ex(
const bool use_face_sel = (data->me->editflag & ME_EDIT_PAINT_FACE_SEL) != 0;
const bool use_vert_sel = (data->me->editflag & ME_EDIT_PAINT_VERT_SEL) != 0;
+ SculptBrushTest test;
+ sculpt_brush_test_init(ss, &test);
+
/* For each vertex */
PBVHVertexIter vd;
BKE_pbvh_vertex_iter_begin(ss->pbvh, data->nodes[n], vd, PBVH_ITER_UNIQUE)
{
- SculptBrushTest test;
- sculpt_brush_test_init(ss, &test);
/* Test to see if the vertex coordinates are within the spherical brush region. */
if (sculpt_brush_test_sq(&test, vd.co)) {
const float view_dot = (vd.no) ? dot_vf3vs3(cache->sculpt_normal_symm, vd.no) : 1.0;
@@ -3257,11 +3259,11 @@ static void do_vpaint_brush_calc_ave_color_cb_ex(
data->ob->sculpt->modes.vwpaint.tot_loops_hit[n] = 0;
const bool use_face_sel = (data->me->editflag & ME_EDIT_PAINT_FACE_SEL) != 0;
- PBVHVertexIter vd;
SculptBrushTest test;
sculpt_brush_test_init(ss, &test);
/* For each vertex */
+ PBVHVertexIter vd;
BKE_pbvh_vertex_iter_begin(ss->pbvh, data->nodes[n], vd, PBVH_ITER_UNIQUE)
{
/* Test to see if the vertex coordinates are within the spherical brush region. */
@@ -3327,14 +3329,14 @@ static void do_vpaint_brush_draw_task_cb_ex(
get_brush_alpha_data(scene, ss, brush, &brush_size_pressure, &brush_alpha_value, &brush_alpha_pressure);
const bool use_face_sel = (data->me->editflag & ME_EDIT_PAINT_FACE_SEL) != 0;
+ SculptBrushTest test;
+ sculpt_brush_test_init(ss, &test);
+
/* For each vertex*/
PBVHVertexIter vd;
BKE_pbvh_vertex_iter_begin(ss->pbvh, data->nodes[n], vd, PBVH_ITER_UNIQUE)
{
/* Test to see if the vertex coordinates are within the spherical brush region. */
- SculptBrushTest test;
- sculpt_brush_test_init(ss, &test);
-
if (sculpt_brush_test(&test, vd.co)) {
/* Note: Grids are 1:1 with corners (aka loops).
* For grid based pbvh, take the vert whose loop cooresponds to the current grid.
@@ -3403,14 +3405,14 @@ static void do_vpaint_brush_blur_task_cb_ex(
get_brush_alpha_data(scene, ss, brush, &brush_size_pressure, &brush_alpha_value, &brush_alpha_pressure);
const bool use_face_sel = (data->me->editflag & ME_EDIT_PAINT_FACE_SEL) != 0;
+ SculptBrushTest test;
+ sculpt_brush_test_init(ss, &test);
+
/* For each vertex */
PBVHVertexIter vd;
BKE_pbvh_vertex_iter_begin(ss->pbvh, data->nodes[n], vd, PBVH_ITER_UNIQUE)
{
/* Test to see if the vertex coordinates are within the spherical brush region. */
- SculptBrushTest test;
- sculpt_brush_test_init(ss, &test);
-
if (sculpt_brush_test(&test, vd.co)) {
/* For grid based pbvh, take the vert whose loop cooresponds to the current grid.
Otherwise, take the current vert. */
@@ -3501,14 +3503,15 @@ static void do_vpaint_brush_smudge_task_cb_ex(
sub_v3_v3v3(brush_dir, cache->location, cache->last_location);
if (normalize_v3(brush_dir) != 0.0f) {
+
+ SculptBrushTest test;
+ sculpt_brush_test_init(ss, &test);
+
/* For each vertex */
PBVHVertexIter vd;
BKE_pbvh_vertex_iter_begin(ss->pbvh, data->nodes[n], vd, PBVH_ITER_UNIQUE)
{
/* Test to see if the vertex coordinates are within the spherical brush region. */
- SculptBrushTest test;
- sculpt_brush_test_init(ss, &test);
-
if (sculpt_brush_test(&test, vd.co)) {
/* For grid based pbvh, take the vert whose loop cooresponds to the current grid.
Otherwise, take the current vert. */
More information about the Bf-blender-cvs
mailing list