Blender V5.0
blender::ed::sculpt_paint::mask Namespace Reference

Classes

struct  MaskOperation
struct  FilterLocalData
struct  LocalData

Enumerations

enum class  FilterType {
  Smooth = 0 , Sharpen = 1 , Grow = 2 , Shrink = 3 ,
  ContrastIncrease = 5 , ContrastDecrease = 6
}
enum class  InitMode { Random , FaceSet , Island }

Functions

void write_mask_mesh (const Depsgraph &depsgraph, Object &object, const IndexMask &node_mask, FunctionRef< void(MutableSpan< float >, Span< int >)> write_fn)
static BLI_NOINLINE void copy_old_hidden_mask_mesh (const Span< int > verts, const Span< bool > hide_vert, const Span< float > mask, const MutableSpan< float > new_mask)
static BLI_NOINLINE void multiply_add (const Span< float > src, const float factor, const float offset, const MutableSpan< float > dst)
static BLI_NOINLINE void mask_increase_contrast (const Span< float > src, const MutableSpan< float > dst)
static BLI_NOINLINE void mask_decrease_contrast (const Span< float > src, const MutableSpan< float > dst)
static BLI_NOINLINE void sharpen_masks (const Span< float > old_masks, const MutableSpan< float > new_mask)
static void apply_new_mask_mesh (const Depsgraph &depsgraph, Object &object, const IndexMask &node_mask, const OffsetIndices< int > node_verts, const Span< float > new_mask, MutableSpan< float > mask)
static void smooth_mask_mesh (const OffsetIndices< int > faces, const Span< int > corner_verts, const GroupedSpan< int > vert_to_face, const Span< bool > hide_poly, const Span< bool > hide_vert, const Span< float > mask, const bke::pbvh::MeshNode &node, FilterLocalData &tls, MutableSpan< float > new_mask)
static void sharpen_mask_mesh (const OffsetIndices< int > faces, const Span< int > corner_verts, const GroupedSpan< int > vert_to_face, const Span< bool > hide_poly, const Span< bool > hide_vert, const Span< float > mask, const bke::pbvh::MeshNode &node, FilterLocalData &tls, MutableSpan< float > new_mask)
static void grow_mask_mesh (const OffsetIndices< int > faces, const Span< int > corner_verts, const GroupedSpan< int > vert_to_face, const Span< bool > hide_poly, const Span< bool > hide_vert, const Span< float > mask, const bke::pbvh::MeshNode &node, FilterLocalData &tls, MutableSpan< float > new_mask)
static void shrink_mask_mesh (const OffsetIndices< int > faces, const Span< int > corner_verts, const GroupedSpan< int > vert_to_face, const Span< bool > hide_poly, const Span< bool > hide_vert, const Span< float > mask, const bke::pbvh::MeshNode &node, FilterLocalData &tls, MutableSpan< float > new_mask)
static bool increase_contrast_mask_mesh (const Depsgraph &depsgraph, const Object &object, const Span< bool > hide_vert, bke::pbvh::MeshNode &node, FilterLocalData &tls, MutableSpan< float > mask)
static bool decrease_contrast_mask_mesh (const Depsgraph &depsgraph, const Object &object, const Span< bool > hide_vert, bke::pbvh::MeshNode &node, FilterLocalData &tls, MutableSpan< float > mask)
static BLI_NOINLINE void copy_old_hidden_mask_grids (const SubdivCCG &subdiv_ccg, const Span< int > grids, const MutableSpan< float > new_mask)
static void apply_new_mask_grids (const Depsgraph &depsgraph, Object &object, const IndexMask &node_mask, const OffsetIndices< int > node_verts, const Span< float > new_mask)
static void smooth_mask_grids (const SubdivCCG &subdiv_ccg, const bke::pbvh::GridsNode &node, FilterLocalData &tls, MutableSpan< float > new_mask)
static void sharpen_mask_grids (const SubdivCCG &subdiv_ccg, const bke::pbvh::GridsNode &node, FilterLocalData &tls, MutableSpan< float > new_mask)
static void grow_mask_grids (const SubdivCCG &subdiv_ccg, const bke::pbvh::GridsNode &node, MutableSpan< float > new_mask)
static void shrink_mask_grids (const SubdivCCG &subdiv_ccg, const bke::pbvh::GridsNode &node, MutableSpan< float > new_mask)
static bool increase_contrast_mask_grids (const Depsgraph &depsgraph, const Object &object, bke::pbvh::GridsNode &node, FilterLocalData &tls)
static bool decrease_contrast_mask_grids (const Depsgraph &depsgraph, const Object &object, bke::pbvh::GridsNode &node, FilterLocalData &tls)
static BLI_NOINLINE void copy_old_hidden_mask_bmesh (const int mask_offset, const Set< BMVert *, 0 > &verts, const MutableSpan< float > new_mask)
static void apply_new_mask_bmesh (const Depsgraph &depsgraph, Object &object, const int mask_offset, const IndexMask &node_mask, const OffsetIndices< int > node_verts, const Span< float > new_mask)
static void smooth_mask_bmesh (const BMesh &bm, const int mask_offset, bke::pbvh::BMeshNode &node, FilterLocalData &tls, MutableSpan< float > new_mask)
static void sharpen_mask_bmesh (const BMesh &bm, const int mask_offset, bke::pbvh::BMeshNode &node, FilterLocalData &tls, MutableSpan< float > new_mask)
static void grow_mask_bmesh (const int mask_offset, bke::pbvh::BMeshNode &node, MutableSpan< float > new_mask)
static void shrink_mask_bmesh (const int mask_offset, bke::pbvh::BMeshNode &node, MutableSpan< float > new_mask)
static bool increase_contrast_mask_bmesh (const Depsgraph &depsgraph, Object &object, const int mask_offset, bke::pbvh::BMeshNode &node, FilterLocalData &tls)
static bool decrease_contrast_mask_bmesh (const Depsgraph &depsgraph, Object &object, const int mask_offset, bke::pbvh::BMeshNode &node, FilterLocalData &tls)
static wmOperatorStatus sculpt_mask_filter_exec (bContext *C, wmOperator *op)
void SCULPT_OT_mask_filter (wmOperatorType *ot)
void SCULPT_OT_mask_init (wmOperatorType *ot)
static void init_mask_grids (Main &bmain, Scene &scene, Depsgraph &depsgraph, Object &object, const IndexMask &node_mask, FunctionRef< void(const BitGroupVector<> &, int, MutableSpan< float >)> write_fn)
static wmOperatorStatus sculpt_mask_init_exec (bContext *C, wmOperator *op)
Public API
Array< floatduplicate_mask (const Object &object)
void mix_new_masks (const Span< float > new_masks, const float factor, const MutableSpan< float > masks)
void mix_new_masks (const Span< float > new_masks, const Span< float > factors, const MutableSpan< float > masks)
void clamp_mask (const MutableSpan< float > masks)
void invert_mask (const MutableSpan< float > masks)
void gather_mask_bmesh (const BMesh &bm, const Set< BMVert *, 0 > &verts, const MutableSpan< float > r_mask)
void gather_mask_grids (const SubdivCCG &subdiv_ccg, const Span< int > grids, const MutableSpan< float > r_mask)
void scatter_mask_grids (const Span< float > mask, SubdivCCG &subdiv_ccg, const Span< int > grids)
void scatter_mask_bmesh (const Span< float > mask, const BMesh &bm, const Set< BMVert *, 0 > &verts)
static float average_masks (const int mask_offset, const Span< const BMVert * > verts)
void average_neighbor_mask_bmesh (const int mask_offset, const Set< BMVert *, 0 > &verts, const MutableSpan< float > new_masks)
void update_mask_mesh (const Depsgraph &depsgraph, Object &object, const IndexMask &node_mask, FunctionRef< void(MutableSpan< float >, Span< int >)> update_fn)
bool mask_equals_array_grids (const Span< float > masks, const CCGKey &key, const Span< int > grids, const Span< float > values)
bool mask_equals_array_bmesh (const int mask_offset, const Set< BMVert *, 0 > &verts, const Span< float > values)
Gesture-based Mask Operators

Operators that act upon a user-selected area.

static void gesture_begin (bContext &C, wmOperator &op, gesture::GestureData &gesture_data)
static float mask_gesture_get_new_value (const float elem, FloodFillMode mode, float value)
static void gesture_apply_for_symmetry_pass (bContext &, gesture::GestureData &gesture_data)
static void gesture_end (bContext &C, gesture::GestureData &gesture_data)
static void init_operation (bContext &C, gesture::GestureData &gesture_data, wmOperator &op)
static void gesture_operator_properties (wmOperatorType *ot)
static wmOperatorStatus gesture_box_exec (bContext *C, wmOperator *op)
static wmOperatorStatus gesture_lasso_exec (bContext *C, wmOperator *op)
static wmOperatorStatus gesture_line_exec (bContext *C, wmOperator *op)
static wmOperatorStatus gesture_polyline_exec (bContext *C, wmOperator *op)
void PAINT_OT_mask_lasso_gesture (wmOperatorType *ot)
void PAINT_OT_mask_box_gesture (wmOperatorType *ot)
void PAINT_OT_mask_line_gesture (wmOperatorType *ot)
void PAINT_OT_mask_polyline_gesture (wmOperatorType *ot)
Mask By Color
static float color_delta_get (const float3 &color_a, const float3 &color_b, const float threshold, const bool invert)
static float final_mask_get (const float current_mask, const float new_mask, const bool invert, const bool preserve_mask)
static void mask_by_color_contiguous_mesh (const Depsgraph &depsgraph, Object &object, const int vert, const float threshold, const bool invert, const bool preserve_mask)
static void mask_by_color_full_mesh (const Depsgraph &depsgraph, Object &object, const int vert, const float threshold, const bool invert, const bool preserve_mask)
static wmOperatorStatus mask_by_color (bContext *C, wmOperator *op, const float2 region_location)
static wmOperatorStatus mask_by_color_exec (bContext *C, wmOperator *op)
static wmOperatorStatus mask_by_color_invoke (bContext *C, wmOperator *op, const wmEvent *event)
static void SCULPT_OT_mask_by_color (wmOperatorType *ot)

Global Mask Operators

Operators that act upon the entirety of a given object's mesh.

enum class  FloodFillMode { Value = SEL_OP_SUB , InverseValue = SEL_OP_ADD , InverseMeshValue = SEL_OP_XOR }
static const EnumPropertyItem mode_items []
static Span< int > get_hidden_verts (const bke::pbvh::MeshNode &node, const Span< bool > hide_vert, Vector< int > &indices)
static bool try_remove_mask_mesh (const Depsgraph &depsgraph, Object &object, const IndexMask &node_mask)
static void fill_mask_mesh (const Depsgraph &depsgraph, Object &object, const float value, const IndexMask &node_mask)
static void fill_mask_grids (Main &bmain, const Scene &scene, Depsgraph &depsgraph, Object &object, const float value, const IndexMask &node_mask)
static void fill_mask_bmesh (const Depsgraph &depsgraph, Object &object, const float value, const IndexMask &node_mask)
static void fill_mask (Main &bmain, const Scene &scene, Depsgraph &depsgraph, Object &object, const float value)
static void invert_mask_grids (Main &bmain, const Scene &scene, Depsgraph &depsgraph, Object &object, const IndexMask &node_mask)
static void invert_mask_bmesh (const Depsgraph &depsgraph, Object &object, const IndexMask &node_mask)
static void invert_mask (Main &bmain, const Scene &scene, Depsgraph &depsgraph, Object &object)
static wmOperatorStatus mask_flood_fill_exec (bContext *C, wmOperator *op)
void PAINT_OT_mask_flood_fill (wmOperatorType *ot)

Mask from Cavity

enum class  ApplyMaskMode : int8_t {
  Mix , Multiply , Divide , Add ,
  Subtract
}
enum class  MaskSettingsSource : int8_t { Operator , Scene , Brush }
enum class  MaskBoundaryMode : int8_t { Mesh , FaceSets }
static EnumPropertyItem mix_modes []
static EnumPropertyItem settings_sources []
static void calc_new_masks (const ApplyMaskMode mode, const Span< float > node_mask, const MutableSpan< float > new_mask)
static void apply_mask_mesh (const Depsgraph &depsgraph, const Object &object, const Span< bool > hide_vert, const auto_mask::Cache &automasking, const ApplyMaskMode mode, const float factor, const bool invert_automask, const bke::pbvh::MeshNode &node, LocalData &tls, const MutableSpan< float > mask)
static void apply_mask_grids (const Depsgraph &depsgraph, Object &object, const auto_mask::Cache &automasking, const ApplyMaskMode mode, const float factor, const bool invert_automask, const bke::pbvh::GridsNode &node, LocalData &tls)
static void apply_mask_bmesh (const Depsgraph &depsgraph, Object &object, const auto_mask::Cache &automasking, const ApplyMaskMode mode, const float factor, const float invert_automask, bke::pbvh::BMeshNode &node, LocalData &tls)
static void apply_mask_from_settings (const Depsgraph &depsgraph, Object &object, bke::pbvh::Tree &pbvh, const IndexMask &node_mask, const auto_mask::Cache &automasking, const ApplyMaskMode mode, const float factor, const bool invert_automask)
static wmOperatorStatus mask_from_cavity_exec (bContext *C, wmOperator *op)
static void mask_from_cavity_ui (bContext *C, wmOperator *op)
static void SCULPT_OT_mask_from_cavity (wmOperatorType *ot)
static wmOperatorStatus mask_from_boundary_exec (bContext *C, wmOperator *op)
static void mask_from_boundary_ui (bContext *C, wmOperator *op)
static void SCULPT_OT_mask_from_boundary (wmOperatorType *ot)

Enumeration Type Documentation

◆ ApplyMaskMode

Enumerator
Mix 
Multiply 
Divide 
Add 
Subtract 

Definition at line 925 of file sculpt_ops.cc.

◆ FilterType

Enumerator
Smooth 
Sharpen 
Grow 
Shrink 
ContrastIncrease 
ContrastDecrease 

Definition at line 39 of file sculpt_filter_mask.cc.

◆ FloodFillMode

Enumerator
Value 
InverseValue 
InverseMeshValue 

Definition at line 287 of file paint_mask.cc.

◆ InitMode

Enumerator
Random 
FaceSet 
Island 

Definition at line 42 of file sculpt_mask_init.cc.

◆ MaskBoundaryMode

Enumerator
Mesh 
FaceSets 

Definition at line 1366 of file sculpt_ops.cc.

◆ MaskSettingsSource

Enumerator
Operator 
Scene 
Brush 

Definition at line 942 of file sculpt_ops.cc.

Function Documentation

◆ apply_mask_bmesh()

◆ apply_mask_from_settings()

◆ apply_mask_grids()

◆ apply_mask_mesh()

◆ apply_new_mask_bmesh()

◆ apply_new_mask_grids()

◆ apply_new_mask_mesh()

◆ average_masks()

float blender::ed::sculpt_paint::mask::average_masks ( const int mask_offset,
const Span< const BMVert * > verts )
static

Definition at line 175 of file paint_mask.cc.

References BM_ELEM_CD_GET_FLOAT, float, sum(), and verts.

Referenced by average_neighbor_mask_bmesh().

◆ average_neighbor_mask_bmesh()

void blender::ed::sculpt_paint::mask::average_neighbor_mask_bmesh ( const int mask_offset,
const Set< BMVert *, 0 > & verts,
const MutableSpan< float > new_masks )

◆ calc_new_masks()

void blender::ed::sculpt_paint::mask::calc_new_masks ( const ApplyMaskMode mode,
const Span< float > node_mask,
const MutableSpan< float > new_mask )
static

◆ clamp_mask()

◆ color_delta_get()

float blender::ed::sculpt_paint::mask::color_delta_get ( const float3 & color_a,
const float3 & color_b,
const float threshold,
const bool invert )
static

◆ copy_old_hidden_mask_bmesh()

BLI_NOINLINE void blender::ed::sculpt_paint::mask::copy_old_hidden_mask_bmesh ( const int mask_offset,
const Set< BMVert *, 0 > & verts,
const MutableSpan< float > new_mask )
static

◆ copy_old_hidden_mask_grids()

◆ copy_old_hidden_mask_mesh()

BLI_NOINLINE void blender::ed::sculpt_paint::mask::copy_old_hidden_mask_mesh ( const Span< int > verts,
const Span< bool > hide_vert,
const Span< float > mask,
const MutableSpan< float > new_mask )
static

◆ decrease_contrast_mask_bmesh()

◆ decrease_contrast_mask_grids()

◆ decrease_contrast_mask_mesh()

◆ duplicate_mask()

◆ fill_mask()

void blender::ed::sculpt_paint::mask::fill_mask ( Main & bmain,
const Scene & scene,
Depsgraph & depsgraph,
Object & object,
const float value )
static

◆ fill_mask_bmesh()

◆ fill_mask_grids()

◆ fill_mask_mesh()

◆ final_mask_get()

float blender::ed::sculpt_paint::mask::final_mask_get ( const float current_mask,
const float new_mask,
const bool invert,
const bool preserve_mask )
static

Definition at line 716 of file sculpt_ops.cc.

References invert().

Referenced by mask_by_color_contiguous_mesh(), and mask_by_color_full_mesh().

◆ gather_mask_bmesh()

void blender::ed::sculpt_paint::mask::gather_mask_bmesh ( const BMesh & bm,
const Set< BMVert *, 0 > & verts,
const MutableSpan< float > r_mask )

◆ gather_mask_grids()

void blender::ed::sculpt_paint::mask::gather_mask_grids ( const SubdivCCG & subdiv_ccg,
const Span< int > grids,
const MutableSpan< float > r_mask )

◆ gesture_apply_for_symmetry_pass()

void blender::ed::sculpt_paint::mask::gesture_apply_for_symmetry_pass ( bContext & ,
gesture::GestureData & gesture_data )
static

Definition at line 754 of file paint_mask.cc.

References BKE_pbvh_bmesh_node_unique_verts(), BKE_subdiv_ccg_foreach_visible_grid_vert(), BKE_subdiv_ccg_key_top_level(), bm, SculptSession::bm, BM_ELEM_CD_GET_FLOAT, BM_ELEM_CD_SET_FLOAT, blender::bke::pbvh::BMesh, CD_PROP_FLOAT, CustomData_get_offset_named(), depsgraph, ViewContext::depsgraph, blender::index_mask::IndexMask::foreach_index(), blender::IndexMask::from_bools(), gesture_apply_for_symmetry_pass(), CCGKey::grid_area, blender::bke::pbvh::Grids, blender::bke::pbvh::GridsNode::grids(), i, blender::ed::sculpt_paint::gesture::is_affected(), blender::ed::sculpt_paint::undo::Mask, mask_gesture_get_new_value(), blender::bke::pbvh::Mesh, blender::index_mask::IndexMask::min_array_size(), blender::ed::sculpt_paint::mask::MaskOperation::mode, blender::ed::sculpt_paint::gesture::GestureData::node_mask, blender::bke::pbvh::node_update_mask_bmesh(), blender::bke::pbvh::node_update_mask_grids(), blender::bke::pbvh::Tree::nodes(), normals, ViewContext::obact, blender::ed::sculpt_paint::gesture::GestureData::operation, blender::bke::object::pbvh_get(), blender::ed::sculpt_paint::undo::push_node(), blender::ed::sculpt_paint::gesture::GestureData::ss, SculptSession::subdiv_ccg, blender::bke::pbvh::Tree::tag_masks_changed(), update_mask_mesh(), blender::ed::sculpt_paint::mask::MaskOperation::value, blender::ed::sculpt_paint::gesture::GestureData::vc, blender::bke::pbvh::vert_normals_eval(), blender::bke::pbvh::vert_positions_eval(), and verts.

Referenced by gesture_apply_for_symmetry_pass(), and init_operation().

◆ gesture_begin()

◆ gesture_box_exec()

◆ gesture_end()

◆ gesture_lasso_exec()

◆ gesture_line_exec()

◆ gesture_operator_properties()

void blender::ed::sculpt_paint::mask::gesture_operator_properties ( wmOperatorType * ot)
static

◆ gesture_polyline_exec()

◆ get_hidden_verts()

Span< int > blender::ed::sculpt_paint::mask::get_hidden_verts ( const bke::pbvh::MeshNode & node,
const Span< bool > hide_vert,
Vector< int > & indices )
static

◆ grow_mask_bmesh()

void blender::ed::sculpt_paint::mask::grow_mask_bmesh ( const int mask_offset,
bke::pbvh::BMeshNode & node,
MutableSpan< float > new_mask )
static

◆ grow_mask_grids()

◆ grow_mask_mesh()

void blender::ed::sculpt_paint::mask::grow_mask_mesh ( const OffsetIndices< int > faces,
const Span< int > corner_verts,
const GroupedSpan< int > vert_to_face,
const Span< bool > hide_poly,
const Span< bool > hide_vert,
const Span< float > mask,
const bke::pbvh::MeshNode & node,
FilterLocalData & tls,
MutableSpan< float > new_mask )
static

◆ increase_contrast_mask_bmesh()

◆ increase_contrast_mask_grids()

◆ increase_contrast_mask_mesh()

◆ init_mask_grids()

◆ init_operation()

◆ invert_mask() [1/2]

void blender::ed::sculpt_paint::mask::invert_mask ( const MutableSpan< float > masks)

◆ invert_mask() [2/2]

void blender::ed::sculpt_paint::mask::invert_mask ( Main & bmain,
const Scene & scene,
Depsgraph & depsgraph,
Object & object )
static

◆ invert_mask_bmesh()

◆ invert_mask_grids()

◆ mask_by_color()

◆ mask_by_color_contiguous_mesh()

◆ mask_by_color_exec()

wmOperatorStatus blender::ed::sculpt_paint::mask::mask_by_color_exec ( bContext * C,
wmOperator * op )
static

Definition at line 860 of file sculpt_ops.cc.

References C, mask_by_color(), wmOperator::ptr, and RNA_int_get_array().

Referenced by SCULPT_OT_mask_by_color().

◆ mask_by_color_full_mesh()

void blender::ed::sculpt_paint::mask::mask_by_color_full_mesh ( const Depsgraph & depsgraph,
Object & object,
const int vert,
const float threshold,
const bool invert,
const bool preserve_mask )
static

◆ mask_by_color_invoke()

wmOperatorStatus blender::ed::sculpt_paint::mask::mask_by_color_invoke ( bContext * C,
wmOperator * op,
const wmEvent * event )
static

Definition at line 867 of file sculpt_ops.cc.

References C, mask_by_color(), wmEvent::mval, wmOperator::ptr, and RNA_int_set_array().

Referenced by SCULPT_OT_mask_by_color().

◆ mask_decrease_contrast()

BLI_NOINLINE void blender::ed::sculpt_paint::mask::mask_decrease_contrast ( const Span< float > src,
const MutableSpan< float > dst )
static

◆ mask_equals_array_bmesh()

bool blender::ed::sculpt_paint::mask::mask_equals_array_bmesh ( const int mask_offset,
const Set< BMVert *, 0 > & verts,
const Span< float > values )

Definition at line 257 of file paint_mask.cc.

References BLI_assert, BM_ELEM_CD_GET_FLOAT, i, blender::Span< T >::size(), and verts.

Referenced by apply_new_mask_bmesh().

◆ mask_equals_array_grids()

bool blender::ed::sculpt_paint::mask::mask_equals_array_grids ( Span< float > masks,
const CCGKey & key,
Span< int > grids,
Span< float > values )

Check whether array data is the same as the stored mask for the referenced geometry.

Definition at line 242 of file paint_mask.cc.

References blender::IndexRange::begin(), BLI_assert, blender::IndexRange::end(), CCGKey::grid_area, i, blender::Span< T >::index_range(), and blender::Span< T >::size().

Referenced by apply_new_mask_grids().

◆ mask_flood_fill_exec()

◆ mask_from_boundary_exec()

wmOperatorStatus blender::ed::sculpt_paint::mask::mask_from_boundary_exec ( bContext * C,
wmOperator * op )
static

◆ mask_from_boundary_ui()

◆ mask_from_cavity_exec()

wmOperatorStatus blender::ed::sculpt_paint::mask::mask_from_cavity_exec ( bContext * C,
wmOperator * op )
static

Definition at line 1167 of file sculpt_ops.cc.

References blender::bke::pbvh::all_leaf_nodes(), apply_mask_from_settings(), Brush::automasking_boundary_edges_propagation_steps, Brush::automasking_cavity_blur_steps, Sculpt::automasking_cavity_blur_steps, Brush::automasking_cavity_curve, Sculpt::automasking_cavity_curve, Sculpt::automasking_cavity_curve_op, Brush::automasking_cavity_factor, Sculpt::automasking_cavity_factor, Brush::automasking_flags, Sculpt::automasking_flags, BKE_base_is_visible(), BKE_paint_brush_for_read(), BKE_report(), BKE_sculpt_mask_layers_ensure(), BKE_sculpt_multires_active(), BKE_sculpt_update_object_for_edit(), Brush, BRUSH_AUTOMASKING_CAVITY_ALL, BRUSH_AUTOMASKING_CAVITY_INVERTED, BRUSH_AUTOMASKING_CAVITY_NORMAL, BRUSH_AUTOMASKING_CAVITY_USE_CURVE, C, blender::ed::sculpt_paint::auto_mask::cache_init(), CTX_data_active_base(), CTX_data_active_object(), CTX_data_depsgraph_pointer(), CTX_data_main(), CTX_data_scene(), CTX_data_tool_settings(), CTX_wm_view3d(), depsgraph, blender::ed::sculpt_paint::flush_update_done(), blender::ed::sculpt_paint::undo::Mask, blender::ed::sculpt_paint::Mask, Operator, OPERATOR_CANCELLED, OPERATOR_FINISHED, Sculpt::paint, blender::bke::object::pbvh_get(), wmOperator::ptr, blender::ed::sculpt_paint::undo::push_begin(), blender::ed::sculpt_paint::undo::push_end(), blender::ed::sculpt_paint::undo::push_nodes(), wmOperator::reports, RNA_boolean_get(), RNA_enum_get(), RNA_float_get(), RNA_int_get(), RPT_WARNING, Scene, ToolSettings::sculpt, Brush::sculpt_brush_type, SCULPT_BRUSH_TYPE_SMOOTH, SCULPT_tag_update_overlays(), blender::bke::pbvh::Tree::tag_masks_changed(), and blender::ed::sculpt_paint::vert_random_access_ensure().

Referenced by SCULPT_OT_mask_from_cavity().

◆ mask_from_cavity_ui()

◆ mask_gesture_get_new_value()

float blender::ed::sculpt_paint::mask::mask_gesture_get_new_value ( const float elem,
FloodFillMode mode,
float value )
static

◆ mask_increase_contrast()

BLI_NOINLINE void blender::ed::sculpt_paint::mask::mask_increase_contrast ( const Span< float > src,
const MutableSpan< float > dst )
static

◆ mix_new_masks() [1/2]

void blender::ed::sculpt_paint::mask::mix_new_masks ( const Span< float > new_masks,
const float factor,
const MutableSpan< float > masks )

◆ mix_new_masks() [2/2]

void blender::ed::sculpt_paint::mask::mix_new_masks ( const Span< float > new_masks,
const Span< float > factors,
const MutableSpan< float > masks )

◆ multiply_add()

BLI_NOINLINE void blender::ed::sculpt_paint::mask::multiply_add ( const Span< float > src,
const float factor,
const float offset,
const MutableSpan< float > dst )
static

◆ PAINT_OT_mask_box_gesture()

◆ PAINT_OT_mask_flood_fill()

void blender::ed::sculpt_paint::mask::PAINT_OT_mask_flood_fill ( wmOperatorType * ot)

◆ PAINT_OT_mask_lasso_gesture()

◆ PAINT_OT_mask_line_gesture()

◆ PAINT_OT_mask_polyline_gesture()

◆ scatter_mask_bmesh()

void blender::ed::sculpt_paint::mask::scatter_mask_bmesh ( const Span< float > mask,
const BMesh & bm,
const Set< BMVert *, 0 > & verts )

◆ scatter_mask_grids()

void blender::ed::sculpt_paint::mask::scatter_mask_grids ( const Span< float > mask,
SubdivCCG & subdiv_ccg,
const Span< int > grids )

◆ sculpt_mask_filter_exec()

wmOperatorStatus blender::ed::sculpt_paint::mask::sculpt_mask_filter_exec ( bContext * C,
wmOperator * op )
static

Definition at line 731 of file sculpt_filter_mask.cc.

References blender::bke::pbvh::all_leaf_nodes(), apply_new_mask_bmesh(), apply_new_mask_grids(), apply_new_mask_mesh(), blender::Array< T, InlineBufferCapacity, Allocator >::as_mutable_span(), BKE_base_is_visible(), BKE_sculpt_mask_layers_ensure(), BKE_sculpt_multires_active(), BKE_sculpt_update_object_for_edit(), BKE_subdiv_ccg_key_top_level(), bm, SculptSession::bm, blender::bke::pbvh::BMesh, C, CD_PROP_FLOAT, ContrastDecrease, ContrastIncrease, blender::ed::sculpt_paint::create_node_vert_offsets(), blender::ed::sculpt_paint::create_node_vert_offsets_bmesh(), CTX_data_active_base(), CTX_data_active_object(), CTX_data_depsgraph_pointer(), CTX_data_main(), CTX_data_scene(), CTX_wm_view3d(), CustomData_get_offset_named(), Object::data, decrease_contrast_mask_bmesh(), decrease_contrast_mask_grids(), decrease_contrast_mask_mesh(), depsgraph, blender::bke::Face, faces, blender::ed::sculpt_paint::flush_update_done(), blender::ed::sculpt_paint::flush_update_step(), blender::index_mask::IndexMask::foreach_index(), blender::IndexMask::from_bools(), blender::bke::pbvh::Grids, Grow, grow_mask_bmesh(), grow_mask_grids(), grow_mask_mesh(), i, increase_contrast_mask_bmesh(), increase_contrast_mask_grids(), increase_contrast_mask_mesh(), blender::threading::EnumerableThreadSpecific< T >::local(), blender::bke::AttributeAccessor::lookup(), blender::bke::MutableAttributeAccessor::lookup_for_write_span(), blender::ed::sculpt_paint::Mask, blender::bke::pbvh::Mesh, blender::index_mask::IndexMask::min_array_size(), blender::bke::pbvh::Tree::nodes(), OPERATOR_CANCELLED, OPERATOR_FINISHED, blender::bke::object::pbvh_get(), blender::bke::Point, pos, wmOperator::ptr, blender::ed::sculpt_paint::undo::push_begin(), blender::ed::sculpt_paint::undo::push_end(), RNA_boolean_get(), RNA_enum_get(), RNA_int_get(), Object::sculpt, SCULPT_tag_update_overlays(), SCULPT_vertex_count_get(), Sharpen, sharpen_mask_bmesh(), sharpen_mask_grids(), sharpen_mask_mesh(), Shrink, shrink_mask_bmesh(), shrink_mask_grids(), shrink_mask_mesh(), Smooth, smooth_mask_bmesh(), smooth_mask_grids(), smooth_mask_mesh(), SculptSession::subdiv_ccg, blender::bke::pbvh::Tree::tag_masks_changed(), blender::offset_indices::OffsetIndices< T >::total_size(), blender::bke::pbvh::Tree::type(), and blender::ed::sculpt_paint::vert_random_access_ensure().

Referenced by SCULPT_OT_mask_filter().

◆ sculpt_mask_init_exec()

wmOperatorStatus blender::ed::sculpt_paint::mask::sculpt_mask_init_exec ( bContext * C,
wmOperator * op )
static

Definition at line 107 of file sculpt_mask_init.cc.

References blender::bke::pbvh::all_leaf_nodes(), BKE_base_is_visible(), BKE_pbvh_bmesh_node_unique_verts(), BKE_sculpt_update_object_for_edit(), BKE_subdiv_ccg_foreach_visible_grid_vert(), BKE_subdiv_ccg_key_top_level(), BLI_hash_int_01(), BLI_time_now_seconds(), SculptSession::bm, BM_ELEM_CD_SET_FLOAT, BM_elem_flag_test, BM_ELEM_HIDDEN, BM_elem_index_get, blender::bke::pbvh::BMesh, C, CD_PROP_FLOAT, CTX_data_active_base(), CTX_data_active_object(), CTX_data_ensure_evaluated_depsgraph(), CTX_data_main(), CTX_data_scene(), CTX_wm_view3d(), CustomData_get_offset_named(), Object::data, depsgraph, blender::ed::sculpt_paint::islands::ensure_cache(), blender::bke::Face, FaceSet, blender::index_mask::IndexMask::foreach_index(), CCGKey::grid_area, SubdivCCG::grid_to_face_map, blender::bke::pbvh::Grids, i, init_mask_grids(), blender::index_mask::IndexMask::is_empty(), Island, blender::bke::AttributeAccessor::lookup_or_default(), blender::ed::sculpt_paint::undo::Mask, blender::bke::pbvh::Mesh, blender::bke::pbvh::node_update_mask_bmesh(), blender::bke::pbvh::Tree::nodes(), OPERATOR_CANCELLED, OPERATOR_FINISHED, blender::bke::object::pbvh_get(), wmOperator::ptr, blender::ed::sculpt_paint::undo::push_begin(), blender::ed::sculpt_paint::undo::push_end(), blender::ed::sculpt_paint::undo::push_nodes(), Random, RNA_enum_get(), Object::sculpt, SCULPT_tag_update_overlays(), seed, SculptSession::subdiv_ccg, blender::bke::pbvh::Tree::tag_masks_changed(), blender::bke::pbvh::Tree::type(), BMesh::vdata, blender::ed::sculpt_paint::face_set::vert_face_set_get(), blender::ed::sculpt_paint::islands::vert_id_get(), verts, and write_mask_mesh().

Referenced by SCULPT_OT_mask_init().

◆ SCULPT_OT_mask_by_color()

◆ SCULPT_OT_mask_filter()

◆ SCULPT_OT_mask_from_boundary()

◆ SCULPT_OT_mask_from_cavity()

◆ SCULPT_OT_mask_init()

void blender::ed::sculpt_paint::mask::SCULPT_OT_mask_init ( wmOperatorType * ot)

◆ sharpen_mask_bmesh()

◆ sharpen_mask_grids()

◆ sharpen_mask_mesh()

◆ sharpen_masks()

BLI_NOINLINE void blender::ed::sculpt_paint::mask::sharpen_masks ( const Span< float > old_masks,
const MutableSpan< float > new_mask )
static

◆ shrink_mask_bmesh()

void blender::ed::sculpt_paint::mask::shrink_mask_bmesh ( const int mask_offset,
bke::pbvh::BMeshNode & node,
MutableSpan< float > new_mask )
static

◆ shrink_mask_grids()

◆ shrink_mask_mesh()

void blender::ed::sculpt_paint::mask::shrink_mask_mesh ( const OffsetIndices< int > faces,
const Span< int > corner_verts,
const GroupedSpan< int > vert_to_face,
const Span< bool > hide_poly,
const Span< bool > hide_vert,
const Span< float > mask,
const bke::pbvh::MeshNode & node,
FilterLocalData & tls,
MutableSpan< float > new_mask )
static

◆ smooth_mask_bmesh()

◆ smooth_mask_grids()

◆ smooth_mask_mesh()

◆ try_remove_mask_mesh()

◆ update_mask_mesh()

void blender::ed::sculpt_paint::mask::update_mask_mesh ( const Depsgraph & depsgraph,
Object & object,
const IndexMask & node_mask,
FunctionRef< void(MutableSpan< float >, Span< int >)> update_fn )

◆ write_mask_mesh()

Variable Documentation

◆ mix_modes

EnumPropertyItem blender::ed::sculpt_paint::mask::mix_modes[]
static
Initial value:
= {
{int(ApplyMaskMode::Mix), "MIX", ICON_NONE, "Mix", ""},
{int(ApplyMaskMode::Multiply), "MULTIPLY", ICON_NONE, "Multiply", ""},
{int(ApplyMaskMode::Divide), "DIVIDE", ICON_NONE, "Divide", ""},
{int(ApplyMaskMode::Add), "ADD", ICON_NONE, "Add", ""},
{int(ApplyMaskMode::Subtract), "SUBTRACT", ICON_NONE, "Subtract", ""},
{0, nullptr, 0, nullptr, nullptr},
}

Definition at line 933 of file sculpt_ops.cc.

Referenced by SCULPT_OT_mask_from_boundary(), and SCULPT_OT_mask_from_cavity().

◆ mode_items

const EnumPropertyItem blender::ed::sculpt_paint::mask::mode_items[]
static
Initial value:
= {
"VALUE",
0,
"Value",
"Set mask to the level specified by the 'value' property"},
"VALUE_INVERSE",
0,
"Value Inverted",
"Set mask to the level specified by the inverted 'value' property"},
{int(FloodFillMode::InverseMeshValue), "INVERT", 0, "Invert", "Invert the mask"},
{0}}

Definition at line 293 of file paint_mask.cc.

Referenced by gesture_operator_properties(), and PAINT_OT_mask_flood_fill().

◆ settings_sources

EnumPropertyItem blender::ed::sculpt_paint::mask::settings_sources[]
static
Initial value:
= {
"OPERATOR",
ICON_NONE,
"Operator",
"Use settings from operator properties"},
{int(MaskSettingsSource::Brush), "BRUSH", ICON_NONE, "Brush", "Use settings from brush"},
{int(MaskSettingsSource::Scene), "SCENE", ICON_NONE, "Scene", "Use settings from scene"},
{0, nullptr, 0, nullptr, nullptr}}

Definition at line 944 of file sculpt_ops.cc.

Referenced by SCULPT_OT_mask_from_boundary(), and SCULPT_OT_mask_from_cavity().