97#define PAINT_OVERRIDE_MASK \
98 (PAINT_OVERLAY_OVERRIDE_SECONDARY | PAINT_OVERLAY_OVERRIDE_PRIMARY | \
99 PAINT_OVERLAY_OVERRIDE_CURSOR)
106#define PAINT_SYMM_AREA_DEFAULT 0
115#define PAINT_SYMM_AREAS 8
227 PaintMode paint_mode, std::optional<int> brush_type);
306 const float mouse_pos[2],
308 bool stroke_has_started);
316 const float pressure,
324#define SCULPT_FACE_SET_NONE 0
360using ActiveVert = std::variant<std::monostate, int, BMVert *>;
398 std::unique_ptr<blender::bke::pbvh::Tree>
pbvh;
void BKE_sculpt_update_object_after_eval(Depsgraph *depsgraph, Object *ob_eval)
PaletteColor * BKE_palette_color_add(Palette *palette)
bool BKE_paint_eraser_brush_set_default(Main *bmain, Paint *paint)
bool BKE_paint_select_grease_pencil_test(const Object *ob)
void BKE_paint_cavity_curve_preset(Paint *paint, int preset)
void BKE_paint_stroke_get_average(const Paint *paint, const Object *ob, float stroke[3])
Brush * BKE_paint_eraser_brush(Paint *paint)
void BKE_paint_invalidate_cursor_overlay(Scene *scene, ViewLayer *view_layer, CurveMapping *curve)
void BKE_palette_sort_hsv(tPaletteColorHSV *color_array, int totcol)
float paint_grid_paint_mask(const GridPaintMask *gpm, uint level, uint x, uint y)
bool paint_calculate_rake_rotation(Paint &paint, const Brush &brush, const float mouse_pos[2], PaintMode paint_mode, bool stroke_has_started)
bool BKE_paint_brush_set_essentials(Main *bmain, Paint *paint, const char *name)
std::variant< std::monostate, int, BMVert * > ActiveVert
void BKE_sculpt_sync_face_visibility_to_grids(const Mesh &mesh, SubdivCCG &subdiv_ccg)
void BKE_paint_invalidate_overlay_tex(Scene *scene, ViewLayer *view_layer, const Tex *tex)
void BKE_paint_set_overlay_override(eOverlayFlags flag)
blender::float3 BKE_paint_randomize_color(const BrushColorJitterSettings &color_jitter, const blender::float3 &initial_hsv_jitter, const float distance, const float pressure, const blender::float3 &color)
void paint_update_brush_rake_rotation(Paint &paint, const Brush &brush, float rotation)
std::optional< AssetWeakReference > BKE_paint_brush_type_default_reference(PaintMode paint_mode, std::optional< int > brush_type)
bool BKE_paint_brush_set(Paint *paint, Brush *brush)
bool BKE_paint_always_hide_test(const Object *ob)
PaintCurve * BKE_paint_curve_add(Main *bmain, const char *name)
void BKE_sculptsession_bm_to_me(Object *ob)
bool BKE_sculptsession_use_pbvh_draw(const Object *ob, const RegionView3D *rv3d)
void BKE_paint_brushes_ensure(Main *bmain, Paint *paint)
void BKE_sculptsession_free(Object *ob)
void BKE_palette_sort_svh(tPaletteColorHSV *color_array, int totcol)
void BKE_paint_settings_foreach_mode(ToolSettings *ts, blender::FunctionRef< void(Paint *paint)> fn)
void BKE_sculptsession_free_deformMats(SculptSession *ss)
bool BKE_paint_select_elem_test(const Object *ob)
Paint * BKE_paint_get_active(Scene *sce, ViewLayer *view_layer)
ePaintOverlayControlFlags BKE_paint_get_overlay_flags()
bool BKE_paint_select_vert_test(const Object *ob)
eObjectMode BKE_paint_object_mode_from_paintmode(PaintMode mode)
void BKE_palette_color_remove(Palette *palette, PaletteColor *color)
blender::float3 seed_hsv_jitter()
void BKE_paint_face_set_overlay_color_get(int face_set, int seed, uchar r_color[4])
void BKE_sculptsession_free_vwpaint_data(SculptSession *ss)
void BKE_paint_previous_asset_reference_set(Paint *paint, AssetWeakReference &&asset_weak_reference)
void BKE_palette_sort_vhs(tPaletteColorHSV *color_array, int totcol)
const Brush * BKE_paint_eraser_brush_for_read(const Paint *paint)
void BKE_sculpt_update_object_before_eval(Object *ob_eval)
ePaintOverlayControlFlags
@ PAINT_OVERLAY_INVALID_CURVE
@ PAINT_OVERLAY_INVALID_TEXTURE_SECONDARY
@ PAINT_OVERLAY_OVERRIDE_CURSOR
@ PAINT_OVERLAY_INVALID_TEXTURE_PRIMARY
@ PAINT_OVERLAY_OVERRIDE_SECONDARY
@ PAINT_OVERLAY_OVERRIDE_PRIMARY
void BKE_paint_reset_overlay_invalid(ePaintOverlayControlFlags flag)
void BKE_paint_free(Paint *paint)
CurveMapping * BKE_sculpt_default_cavity_curve()
const Brush * BKE_paint_brush_for_read(const Paint *paint)
void BKE_paint_copy(const Paint *src, Paint *dst, int flag)
bool BKE_paint_eraser_brush_set(Paint *paint, Brush *brush)
CurveMapping * BKE_paint_default_curve()
void BKE_paint_init(Main *bmain, Scene *sce, PaintMode mode, bool ensure_brushes=true)
Paint * BKE_paint_get_active_from_paintmode(Scene *sce, PaintMode mode)
const EnumPropertyItem * BKE_paint_get_tool_enum_from_paintmode(PaintMode mode)
void BKE_paint_previous_asset_reference_clear(Paint *paint)
bool BKE_paint_canvas_image_get(PaintModeSettings *settings, Object *ob, Image **r_image, ImageUser **r_image_user)
bool BKE_paint_use_unified_color(const Paint *paint)
MultiresModifierData * BKE_sculpt_multires_active(const Scene *scene, Object *ob)
std::optional< int > BKE_paint_get_brush_type_from_obmode(const Brush *brush, eObjectMode ob_mode)
void BKE_sculpt_update_object_for_edit(Depsgraph *depsgraph, Object *ob_orig, bool is_paint_tool)
void BKE_paint_curve_clamp_endpoint_add_index(PaintCurve *pc, int add_index)
void BKE_sculpt_color_layer_create_if_needed(Object *object)
void BKE_palette_clear(Palette *palette)
Paint * BKE_paint_get_active_from_context(const bContext *C)
bool paint_is_bmesh_face_hidden(const BMFace *f)
void BKE_sculptsession_bm_to_me_for_render(Object *object)
bool BKE_paint_ensure(ToolSettings *ts, Paint **r_paint)
Brush * BKE_paint_brush_from_essentials(Main *bmain, PaintMode paint_mode, const char *name)
bool BKE_paint_brush_set_default(Main *bmain, Paint *paint)
Palette * BKE_palette_add(Main *bmain, const char *name)
bool BKE_palette_from_hash(Main *bmain, GHash *color_table, const char *name)
bool BKE_paint_eraser_brush_set_essentials(Main *bmain, Paint *paint, const char *name)
bool BKE_paint_can_use_brush(const Paint *paint, const Brush *brush)
uint BKE_paint_get_brush_type_offset_from_paintmode(PaintMode mode)
void BKE_palette_sort_luminance(tPaletteColorHSV *color_array, int totcol)
void BKE_sculptsession_free_pbvh(Object &object)
void BKE_paint_blend_read_data(BlendDataReader *reader, const Scene *scene, Paint *paint)
int BKE_paint_canvas_uvmap_layer_index_get(const PaintModeSettings *settings, Object *ob)
Brush * BKE_paint_brush(Paint *paint)
void BKE_sculpt_toolsettings_data_ensure(Main *bmain, Scene *scene)
void BKE_palette_color_set(PaletteColor *color, const float rgb[3])
Palette * BKE_paint_palette(Paint *paint)
void BKE_paint_palette_set(Paint *paint, Palette *palette)
Brush * BKE_paint_eraser_brush_from_essentials(Main *bmain, PaintMode paint_mode, const char *name)
bool BKE_palette_is_empty(const Palette *palette)
PaintMode BKE_paintmode_get_active_from_context(const bContext *C)
void BKE_sculpt_mask_layers_ensure(Depsgraph *depsgraph, Main *bmain, Object *ob, MultiresModifierData *mmd)
bool paint_is_grid_face_hidden(blender::BoundedBitSpan grid_hidden, int gridsize, int x, int y)
bool BKE_object_sculpt_use_dyntopo(const Object *object)
void BKE_paint_brushes_set_default_references(ToolSettings *ts)
void BKE_palette_color_sync_legacy(PaletteColor *color)
char * BKE_paint_canvas_key_get(PaintModeSettings *settings, Object *ob)
bool BKE_paint_select_face_test(const Object *ob)
PaintMode BKE_paintmode_get_from_tool(const bToolRef *tref)
std::optional< int > BKE_paint_get_brush_type_from_paintmode(const Brush *brush, PaintMode mode)
void BKE_paint_brushes_validate(Main *bmain, Paint *paint)
void BKE_paint_invalidate_overlay_all()
void BKE_paint_blend_write(BlendWriter *writer, Paint *paint)
void BKE_sculpt_cavity_curves_ensure(Sculpt *sd)
bool BKE_paint_ensure_from_paintmode(Scene *sce, PaintMode mode)
#define ENUM_OPERATORS(_type, _max)
BPy_StructRNA * depsgraph
static unsigned long seed
float distance(VecOp< float, D >, VecOp< float, D >) RET
pbvh::Tree & pbvh_ensure(Depsgraph &depsgraph, Object &object)
pbvh::Tree * pbvh_get(Object &object)
VecBase< float, 4 > float4
VecBase< float, 3 > float3
blender::MutableSpan< float > displacements
blender::Span< blender::float3 > normals
blender::Span< blender::float3 > positions
blender::Vector< std::pair< blender::float3, blender::float3 > > edges
blender::float3 pivot_position
blender::float3 initial_vert_position
blender::Array< int > fake_neighbor_index
float current_max_distance
blender::Array< blender::float3 > initial_orig_coords
blender::Array< blender::float3 > initial_head_coords
blender::float4 prev_pivot_rot
blender::float3 last_normal
blender::ed::sculpt_paint::StrokeCache * cache
struct SculptSession::@345375365225333342236070250113232025260070150165 persistent
blender::Array< blender::float3 > sculpt_persistent_co
std::optional< int > active_grid_index
blender::ed::sculpt_paint::filter::Cache * filter_cache
std::optional< int > active_face_index
KeyBlock * shapekey_active
blender::float3 cursor_normal
blender::float3 prev_pivot_pos
blender::Array< int > vert_to_edge_indices
blender::float4 pivot_rot
SculptVertexInfo vertex_info
blender::SharedCache< blender::Vector< blender::float3 > > face_normals_deform
blender::GroupedSpan< int > vert_to_edge_map
std::unique_ptr< SculptBoundaryPreview > boundary_preview
blender::float3 cursor_view_normal
blender::Array< MDeformVert > dvert_prev
blender::Array< blender::float3 > sculpt_persistent_no
blender::Array< int > preview_verts
ActiveVert active_vert() const
blender::Array< int > edge_to_face_offsets
blender::Array< blender::float3, 0 > deform_cos
blender::float3 cursor_location
blender::float3 active_vert_position(const Depsgraph &depsgraph, const Object &object) const
blender::float3 pivot_pos
int last_active_vert_index() const
std::unique_ptr< SculptPoseIKChainPreview > pose_ik_chain_preview
blender::float3 pivot_scale
blender::float3 init_pivot_pos
struct SculptSession::@300305335361021334214041350300054316061376210174 multires
blender::float4 init_pivot_rot
std::unique_ptr< blender::bke::pbvh::Tree > pbvh
std::unique_ptr< SculptTopologyIslandCache > topology_island_cache
std::optional< blender::float3 > cursor_sampled_normal
blender::Array< float > sculpt_persistent_disp
char * last_paint_canvas_key
blender::float3 prev_pivot_scale
blender::float3 init_pivot_scale
blender::Array< int > vert_to_edge_offsets
blender::GroupedSpan< int > edge_to_face_map
blender::SharedCache< blender::Vector< blender::float3 > > vert_normals_deform
struct SculptSession::@362240011116215270333121305340144315201335267314::@377352350121204263020240366015362210376116055117 wpaint
blender::ed::sculpt_paint::expand::Cache * expand_cache
bool sticky_shading_color
int active_vert_index() const
ActiveVert last_active_vert() const
std::optional< PersistentMultiresData > persistent_multires_data()
blender::Array< int > edge_to_face_indices
blender::Array< blender::float3x3, 0 > deform_imats
MultiresModifierData * modifier
SculptFakeNeighbors fake_neighbors
struct SculptSession::@362240011116215270333121305340144315201335267314 mode
bool deform_modifiers_active
void set_active_vert(ActiveVert vert)
void clear_active_elements(bool persist_last_active)
blender::Array< uint8_t > vert_island_ids
blender::BitVector boundary