Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/sculpt_paint/sculpt_filter_mask.c
| Show First 20 Lines • Show All 240 Lines • ▼ Show 20 Lines | for (int i = 0; i < iterations; i++) { | ||||
| SculptThreadedTaskData data = { | SculptThreadedTaskData data = { | ||||
| .sd = sd, | .sd = sd, | ||||
| .ob = ob, | .ob = ob, | ||||
| .nodes = nodes, | .nodes = nodes, | ||||
| .filter_type = filter_type, | .filter_type = filter_type, | ||||
| .prev_mask = prev_mask, | .prev_mask = prev_mask, | ||||
| }; | }; | ||||
| PBVHParallelSettings settings; | TaskParallelSettings settings; | ||||
| BKE_pbvh_parallel_range_settings(&settings, (sd->flags & SCULPT_USE_OPENMP), totnode); | BKE_pbvh_parallel_range_settings(&settings, (sd->flags & SCULPT_USE_OPENMP), totnode); | ||||
| BKE_pbvh_parallel_range(0, totnode, &data, mask_filter_task_cb, &settings); | BLI_task_parallel_range(0, totnode, &data, mask_filter_task_cb, &settings); | ||||
| if (ELEM(filter_type, MASK_FILTER_GROW, MASK_FILTER_SHRINK)) { | if (ELEM(filter_type, MASK_FILTER_GROW, MASK_FILTER_SHRINK)) { | ||||
| MEM_freeN(prev_mask); | MEM_freeN(prev_mask); | ||||
| } | } | ||||
| } | } | ||||
| MEM_SAFE_FREE(nodes); | MEM_SAFE_FREE(nodes); | ||||
| Show All 10 Lines | void SCULPT_mask_filter_smooth_apply( | ||||
| SculptThreadedTaskData data = { | SculptThreadedTaskData data = { | ||||
| .sd = sd, | .sd = sd, | ||||
| .ob = ob, | .ob = ob, | ||||
| .nodes = nodes, | .nodes = nodes, | ||||
| .filter_type = MASK_FILTER_SMOOTH, | .filter_type = MASK_FILTER_SMOOTH, | ||||
| }; | }; | ||||
| for (int i = 0; i < smooth_iterations; i++) { | for (int i = 0; i < smooth_iterations; i++) { | ||||
| PBVHParallelSettings settings; | TaskParallelSettings settings; | ||||
| BKE_pbvh_parallel_range_settings(&settings, (sd->flags & SCULPT_USE_OPENMP), totnode); | BKE_pbvh_parallel_range_settings(&settings, (sd->flags & SCULPT_USE_OPENMP), totnode); | ||||
| BKE_pbvh_parallel_range(0, totnode, &data, mask_filter_task_cb, &settings); | BLI_task_parallel_range(0, totnode, &data, mask_filter_task_cb, &settings); | ||||
| } | } | ||||
| } | } | ||||
| void SCULPT_OT_mask_filter(struct wmOperatorType *ot) | void SCULPT_OT_mask_filter(struct wmOperatorType *ot) | ||||
| { | { | ||||
| /* Identifiers. */ | /* Identifiers. */ | ||||
| ot->name = "Mask Filter"; | ot->name = "Mask Filter"; | ||||
| ot->idname = "SCULPT_OT_mask_filter"; | ot->idname = "SCULPT_OT_mask_filter"; | ||||
| ▲ Show 20 Lines • Show All 164 Lines • ▼ Show 20 Lines | SculptThreadedTaskData data = { | ||||
| .nodes = nodes, | .nodes = nodes, | ||||
| .dirty_mask_dirty_only = RNA_boolean_get(op->ptr, "dirty_only"), | .dirty_mask_dirty_only = RNA_boolean_get(op->ptr, "dirty_only"), | ||||
| }; | }; | ||||
| DirtyMaskRangeData range = { | DirtyMaskRangeData range = { | ||||
| .min = FLT_MAX, | .min = FLT_MAX, | ||||
| .max = -FLT_MAX, | .max = -FLT_MAX, | ||||
| }; | }; | ||||
| PBVHParallelSettings settings; | TaskParallelSettings settings; | ||||
| BKE_pbvh_parallel_range_settings(&settings, (sd->flags & SCULPT_USE_OPENMP), totnode); | BKE_pbvh_parallel_range_settings(&settings, (sd->flags & SCULPT_USE_OPENMP), totnode); | ||||
| settings.func_reduce = dirty_mask_compute_range_reduce; | settings.func_reduce = dirty_mask_compute_range_reduce; | ||||
| settings.userdata_chunk = ⦥ | settings.userdata_chunk = ⦥ | ||||
| settings.userdata_chunk_size = sizeof(DirtyMaskRangeData); | settings.userdata_chunk_size = sizeof(DirtyMaskRangeData); | ||||
| BKE_pbvh_parallel_range(0, totnode, &data, dirty_mask_compute_range_task_cb, &settings); | BLI_task_parallel_range(0, totnode, &data, dirty_mask_compute_range_task_cb, &settings); | ||||
| data.dirty_mask_min = range.min; | data.dirty_mask_min = range.min; | ||||
| data.dirty_mask_max = range.max; | data.dirty_mask_max = range.max; | ||||
| BKE_pbvh_parallel_range(0, totnode, &data, dirty_mask_apply_task_cb, &settings); | BLI_task_parallel_range(0, totnode, &data, dirty_mask_apply_task_cb, &settings); | ||||
| MEM_SAFE_FREE(nodes); | MEM_SAFE_FREE(nodes); | ||||
| BKE_pbvh_update_vertex_data(pbvh, PBVH_UpdateMask); | BKE_pbvh_update_vertex_data(pbvh, PBVH_UpdateMask); | ||||
| SCULPT_undo_push_end(); | SCULPT_undo_push_end(); | ||||
| ED_region_tag_redraw(region); | ED_region_tag_redraw(region); | ||||
| Show All 23 Lines | |||||