51namespace ed::sculpt_paint {
133#define PAINT_OVERRIDE_MASK \
134 (PAINT_OVERLAY_OVERRIDE_SECONDARY | PAINT_OVERLAY_OVERRIDE_PRIMARY | \
135 PAINT_OVERLAY_OVERRIDE_CURSOR)
142#define PAINT_SYMM_AREA_DEFAULT 0
151#define PAINT_SYMM_AREAS 8
252 eObjectMode ob_mode, std::optional<int> brush_type);
327 const float mouse_pos[2],
329 bool stroke_has_started);
341#define SCULPT_FACE_SET_NONE 0
377using ActiveVert = std::variant<std::monostate, int, SubdivCCGCoord, BMVert *>;
408 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)
Brush * BKE_paint_eraser_brush(Paint *paint)
const uchar PAINT_CURSOR_SCULPT_GREASE_PENCIL[3]
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 BKE_palette_from_hash(Main *bmain, GHash *color_table, const char *name, bool linear)
bool BKE_paint_brush_set_essentials(Main *bmain, Paint *paint, const char *name)
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_sculptsession_bm_to_me(Object *ob, bool reorder)
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)
std::optional< int > BKE_paint_get_brush_type_from_obmode(const Brush *brush, const eObjectMode ob_mode)
bool BKE_sculptsession_use_pbvh_draw(const Object *ob, const RegionView3D *rv3d)
void BKE_paint_brushes_ensure(Main *bmain, Paint *paint)
const uchar PAINT_CURSOR_PAINT_GREASE_PENCIL[3]
void BKE_sculptsession_free(Object *ob)
void BKE_palette_sort_svh(tPaletteColorHSV *color_array, int totcol)
std::variant< std::monostate, int, SubdivCCGCoord, BMVert * > ActiveVert
bool BKE_paint_use_unified_color(const ToolSettings *tool_settings, const Paint *paint)
const uchar PAINT_CURSOR_WEIGHT_PAINT[3]
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)
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_palette_sort_vhs(tPaletteColorHSV *color_array, int totcol)
void BKE_paint_stroke_get_average(const Scene *scene, const Object *ob, float stroke[3])
const Brush * BKE_paint_eraser_brush_for_read(const Paint *paint)
void BKE_sculpt_update_object_before_eval(Object *ob_eval)
void BKE_paint_set_overlay_override(enum eOverlayFlags flag)
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()
void paint_update_brush_rake_rotation(UnifiedPaintSettings &ups, const Brush &brush, float rotation)
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)
Paint * BKE_paint_get_active_from_paintmode(Scene *sce, PaintMode mode)
void BKE_paint_init(Main *bmain, Scene *sce, PaintMode mode, const uchar col[3], bool ensure_brushes=true)
const EnumPropertyItem * BKE_paint_get_tool_enum_from_paintmode(PaintMode mode)
bool BKE_paint_canvas_image_get(PaintModeSettings *settings, Object *ob, Image **r_image, ImageUser **r_image_user)
MultiresModifierData * BKE_sculpt_multires_active(const Scene *scene, Object *ob)
void BKE_sculpt_check_cavity_curves(Sculpt *sd)
Brush * BKE_paint_eraser_brush_from_essentials(Main *bmain, eObjectMode ob_mode, const char *name)
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)
std::optional< AssetWeakReference > BKE_paint_brush_type_default_reference(eObjectMode ob_mode, std::optional< int > brush_type)
bool BKE_paint_brush_set_default(Main *bmain, Paint *paint)
Palette * BKE_palette_add(Main *bmain, const char *name)
const uchar PAINT_CURSOR_SCULPT[3]
bool BKE_paint_eraser_brush_set_essentials(Main *bmain, Paint *paint, const char *name)
uint BKE_paint_get_brush_type_offset_from_paintmode(PaintMode mode)
const uchar PAINT_CURSOR_TEXTURE_PAINT[3]
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)
std::optional< int > BKE_paint_get_brush_type_from_paintmode(const Brush *brush, const PaintMode mode)
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)
bool paint_calculate_rake_rotation(UnifiedPaintSettings &ups, const Brush &brush, const float mouse_pos[2], PaintMode paint_mode, bool stroke_has_started)
Palette * BKE_paint_palette(Paint *paint)
void BKE_paint_palette_set(Paint *paint, Palette *palette)
const uchar PAINT_CURSOR_SCULPT_CURVES[3]
bool BKE_palette_is_empty(const Palette *palette)
PaintMode BKE_paintmode_get_active_from_context(const bContext *C)
const uchar PAINT_CURSOR_VERTEX_PAINT[3]
void BKE_sculpt_mask_layers_ensure(Depsgraph *depsgraph, Main *bmain, Object *ob, MultiresModifierData *mmd)
bool BKE_paint_brush_poll(const Paint *paint, const Brush *brush)
Brush * BKE_paint_brush_from_essentials(Main *bmain, eObjectMode obmode, const char *name)
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)
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)
void BKE_paint_brushes_validate(Main *bmain, Paint *paint)
void BKE_paint_invalidate_overlay_all()
void BKE_paint_blend_write(BlendWriter *writer, Paint *paint)
bool BKE_paint_ensure_from_paintmode(Scene *sce, PaintMode mode)
#define ENUM_OPERATORS(_type, _max)
static unsigned long seed
const Depsgraph * depsgraph
pbvh::Tree & pbvh_ensure(Depsgraph &depsgraph, Object &object)
pbvh::Tree * pbvh_get(Object &object)
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
std::optional< int > active_grid_index
void clear_active_vert(bool persist_last_active)
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< 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
blender::float4 init_pivot_rot
std::unique_ptr< blender::bke::pbvh::Tree > pbvh
std::unique_ptr< SculptTopologyIslandCache > topology_island_cache
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
blender::ed::sculpt_paint::expand::Cache * expand_cache
bool sticky_shading_color
int active_vert_index() const
struct SculptSession::@49::@50 wpaint
ActiveVert last_active_vert() const
blender::Array< int > edge_to_face_indices
blender::Array< blender::float3x3, 0 > deform_imats
struct SculptSession::@48 multires
blender::float3 cursor_sampled_normal
SculptFakeNeighbors fake_neighbors
bool deform_modifiers_active
void set_active_vert(ActiveVert vert)
blender::Array< uint8_t > vert_island_ids
blender::BitVector boundary