[Bf-blender-cvs] [809501289d7] temp-T96710-pbvh-pixels: Remove vertex based brush testing.
Jeroen Bakker
noreply at git.blender.org
Tue Apr 12 15:28:26 CEST 2022
Commit: 809501289d721147b18d12671a7734aa3599e7f4
Author: Jeroen Bakker
Date: Tue Apr 12 15:25:59 2022 +0200
Branches: temp-T96710-pbvh-pixels
https://developer.blender.org/rB809501289d721147b18d12671a7734aa3599e7f4
Remove vertex based brush testing.
===================================================================
M source/blender/editors/sculpt_paint/sculpt_paint_image.cc
===================================================================
diff --git a/source/blender/editors/sculpt_paint/sculpt_paint_image.cc b/source/blender/editors/sculpt_paint/sculpt_paint_image.cc
index d537ed9d8d3..13cfad1c9ae 100644
--- a/source/blender/editors/sculpt_paint/sculpt_paint_image.cc
+++ b/source/blender/editors/sculpt_paint/sculpt_paint_image.cc
@@ -57,7 +57,6 @@ struct TexturePaintingUserData {
Brush *brush;
PBVHNode **nodes;
ImageData image_data;
- std::vector<bool> vertex_brush_tests;
};
/** Reading and writing to image buffer with 4 float channels. */
@@ -257,29 +256,6 @@ template<typename ImageBuffer> class PaintingKernel {
}
};
-/* Test which vertices pass the brush test and store them in the vertex_brush_tests array. */
-static void do_vertex_brush_test(void *__restrict userdata,
- const int n,
- const TaskParallelTLS *__restrict UNUSED(tls))
-{
- TexturePaintingUserData *data = static_cast<TexturePaintingUserData *>(userdata);
- const Object *ob = data->ob;
- SculptSession *ss = ob->sculpt;
- const Brush *brush = data->brush;
- SculptBrushTest test;
- SculptBrushTestFn sculpt_brush_test_sq_fn = SCULPT_brush_test_init_with_falloff_shape(
- ss, &test, brush->falloff_shape);
- PBVHNode *node = data->nodes[n];
-
- PBVHVertexIter vd;
- BKE_pbvh_vertex_iter_begin (ss->pbvh, node, vd, PBVH_ITER_UNIQUE) {
- if (sculpt_brush_test_sq_fn(&test, vd.co)) {
- data->vertex_brush_tests[vd.index] = true;
- }
- }
- BKE_pbvh_vertex_iter_end;
-}
-
static void do_paint_pixels(void *__restrict userdata,
const int n,
const TaskParallelTLS *__restrict tls)
@@ -292,20 +268,6 @@ static void do_paint_pixels(void *__restrict userdata,
NodeData &node_data = BKE_pbvh_pixels_node_data_get(*node);
- /* Propagate vertex brush test to triangle. This should be extended with brush overlapping edges
- * and faces only. */
- /* TODO(jbakker) move to user data. to reduce reallocation. */
- std::vector<bool> triangle_brush_test_results(node_data.triangles.size());
-
- for (int triangle_index = 0; triangle_index < node_data.triangles.size(); triangle_index++) {
- TrianglePaintInput &triangle = node_data.triangles.get_paint_input(triangle_index);
- int3 &vert_indices = triangle.vert_indices;
- for (int i = 0; i < 3; i++) {
- triangle_brush_test_results[triangle_index] = triangle_brush_test_results[triangle_index] ||
- data->vertex_brush_tests[vert_indices[i]];
- }
- }
-
const int thread_id = BLI_task_parallel_thread_id(tls);
MVert *mvert = SCULPT_mesh_deformed_mverts_get(ss);
PaintingKernel<ImageBufferFloat4> kernel_float4(ss, brush, thread_id, mvert);
@@ -332,9 +294,6 @@ static void do_paint_pixels(void *__restrict userdata,
}
for (const PackedPixelRow &pixel_row : tile_data.pixel_rows) {
- if (!triangle_brush_test_results[pixel_row.triangle_index]) {
- continue;
- }
bool pixels_painted = false;
if (image_buffer->rect_float != nullptr) {
pixels_painted = kernel_float4.paint(node_data.triangles, pixel_row, image_buffer);
@@ -408,13 +367,10 @@ void SCULPT_do_paint_brush_image(
{
Brush *brush = BKE_paint_brush(&sd->paint);
- Mesh *mesh = (Mesh *)ob->data;
-
TexturePaintingUserData data = {nullptr};
data.ob = ob;
data.brush = brush;
data.nodes = nodes;
- data.vertex_brush_tests = std::vector<bool>(mesh->totvert);
if (!ImageData::init_active_image(ob, &data.image_data, paint_mode_settings)) {
return;
@@ -422,7 +378,6 @@ void SCULPT_do_paint_brush_image(
TaskParallelSettings settings;
BKE_pbvh_parallel_range_settings(&settings, true, totnode);
- BLI_task_parallel_range(0, totnode, &data, do_vertex_brush_test, &settings);
BLI_task_parallel_range(0, totnode, &data, do_paint_pixels, &settings);
TaskParallelSettings settings_flush;
More information about the Bf-blender-cvs
mailing list