Blender V4.5
BKE_paint.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2009 by Nicholas Bishop. All rights reserved.
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
5#pragma once
6
10
11#include <variant>
12
13#include "BLI_array.hh"
14#include "BLI_bit_vector.hh"
17#include "BLI_offset_indices.hh"
18#include "BLI_shared_cache.hh"
19#include "BLI_utility_mixins.hh"
20#include "BLI_vector.hh"
21
22#include "DNA_brush_enums.h"
23#include "DNA_meshdata_types.h"
24#include "DNA_object_enums.h"
25
27struct BMFace;
28struct BMLog;
29struct BMVert;
30struct BMesh;
31struct BlendDataReader;
32struct BlendWriter;
33struct Brush;
35struct CurveMapping;
36struct Depsgraph;
37struct EnumPropertyItem;
38namespace blender {
39namespace bke {
40enum class AttrDomain : int8_t;
41namespace pbvh {
42class Tree;
43}
44} // namespace bke
46namespace expand {
47struct Cache;
48}
49namespace filter {
50struct Cache;
51}
52struct StrokeCache;
53} // namespace ed::sculpt_paint
54} // namespace blender
55struct GHash;
56struct GridPaintMask;
57struct Image;
58struct ImagePool;
59struct ImageUser;
60struct KeyBlock;
61struct Main;
62struct Mesh;
63struct MDeformVert;
65struct Object;
66struct Paint;
67struct PaintCurve;
69struct Palette;
70struct PaletteColor;
71struct RegionView3D;
72struct Scene;
73struct Sculpt;
74struct SculptSession;
75struct SubdivCCG;
76struct Tex;
77struct ToolSettings;
79struct View3D;
80struct ViewLayer;
81struct bContext;
82struct bToolRef;
83struct tPaletteColorHSV;
84
85extern const uchar PAINT_CURSOR_SCULPT[3];
86extern const uchar PAINT_CURSOR_VERTEX_PAINT[3];
87extern const uchar PAINT_CURSOR_WEIGHT_PAINT[3];
88extern const uchar PAINT_CURSOR_TEXTURE_PAINT[3];
89extern const uchar PAINT_CURSOR_SCULPT_CURVES[3];
92
93enum class PaintMode : int8_t {
94 Sculpt = 0,
96 Vertex = 1,
97 Weight = 2,
103 /* Grease Pencil Vertex Paint */
109
112};
113
114/* overlay invalidation */
124
125#define PAINT_OVERRIDE_MASK \
126 (PAINT_OVERLAY_OVERRIDE_SECONDARY | PAINT_OVERLAY_OVERRIDE_PRIMARY | \
127 PAINT_OVERLAY_OVERRIDE_CURSOR)
128
134#define PAINT_SYMM_AREA_DEFAULT 0
135
142
143#define PAINT_SYMM_AREAS 8
144
145void BKE_paint_invalidate_overlay_tex(Scene *scene, ViewLayer *view_layer, const Tex *tex);
146void BKE_paint_invalidate_cursor_overlay(Scene *scene, ViewLayer *view_layer, CurveMapping *curve);
151
152/* Palettes. */
153
154Palette *BKE_palette_add(Main *bmain, const char *name);
156bool BKE_palette_is_empty(const Palette *palette);
160void BKE_palette_color_remove(Palette *palette, PaletteColor *color);
161void BKE_palette_clear(Palette *palette);
162
163void BKE_palette_sort_hsv(tPaletteColorHSV *color_array, int totcol);
164void BKE_palette_sort_svh(tPaletteColorHSV *color_array, int totcol);
165void BKE_palette_sort_vhs(tPaletteColorHSV *color_array, int totcol);
166void BKE_palette_sort_luminance(tPaletteColorHSV *color_array, int totcol);
167bool BKE_palette_from_hash(Main *bmain, GHash *color_table, const char *name, bool linear);
168
169/* Paint curves. */
170
171PaintCurve *BKE_paint_curve_add(Main *bmain, const char *name);
172
176bool BKE_paint_ensure(ToolSettings *ts, Paint **r_paint);
180void BKE_paint_init(
181 Main *bmain, Scene *sce, PaintMode mode, const uchar col[3], bool ensure_brushes = true);
182void BKE_paint_free(Paint *paint);
188void BKE_paint_copy(const Paint *src, Paint *dst, int flag);
189
190void BKE_paint_cavity_curve_preset(Paint *paint, int preset);
191
197std::optional<int> BKE_paint_get_brush_type_from_obmode(const Brush *brush, eObjectMode ob_mode);
198std::optional<int> BKE_paint_get_brush_type_from_paintmode(const Brush *brush, PaintMode mode);
199Paint *BKE_paint_get_active(Scene *sce, ViewLayer *view_layer);
203bool BKE_paint_use_unified_color(const ToolSettings *tool_settings, const Paint *paint);
204
205/* Paint brush retrieval and assignment. */
206
208const Brush *BKE_paint_brush_for_read(const Paint *paint);
209Brush *BKE_paint_brush_from_essentials(Main *bmain, eObjectMode ob_mode, const char *name);
210
215bool BKE_paint_brush_poll(const Paint *paint, const Brush *brush);
216
230bool BKE_paint_brush_set(Paint *paint, Brush *brush);
235bool BKE_paint_brush_set(Main *bmain,
236 Paint *paint,
237 const AssetWeakReference *brush_asset_reference);
238bool BKE_paint_brush_set_default(Main *bmain, Paint *paint);
239bool BKE_paint_brush_set_essentials(Main *bmain, Paint *paint, const char *name);
241 AssetWeakReference &&asset_weak_reference);
243
244std::optional<AssetWeakReference> BKE_paint_brush_type_default_reference(
245 eObjectMode ob_mode, std::optional<int> brush_type);
257void BKE_paint_brushes_ensure(Main *bmain, Paint *paint);
258void BKE_paint_brushes_validate(Main *bmain, Paint *paint);
259
260/* Secondary eraser brush. */
261
263const Brush *BKE_paint_eraser_brush_for_read(const Paint *paint);
264
265bool BKE_paint_eraser_brush_set(Paint *paint, Brush *brush);
266Brush *BKE_paint_eraser_brush_from_essentials(Main *bmain, eObjectMode ob_mode, const char *name);
268bool BKE_paint_eraser_brush_set_essentials(Main *bmain, Paint *paint, const char *name);
269
270/* Paint palette. */
271
273void BKE_paint_palette_set(Paint *paint, Palette *palette);
275
279bool BKE_paint_select_face_test(const Object *ob);
283bool BKE_paint_select_vert_test(const Object *ob);
292bool BKE_paint_select_elem_test(const Object *ob);
297bool BKE_paint_always_hide_test(const Object *ob);
298
299/* Partial visibility. */
300
304bool paint_is_grid_face_hidden(blender::BoundedBitSpan grid_hidden, int gridsize, int x, int y);
309
310/* Paint masks. */
311
312float paint_grid_paint_mask(const GridPaintMask *gpm, uint level, uint x, uint y);
313
314void BKE_paint_face_set_overlay_color_get(int face_set, int seed, uchar r_color[4]);
315
316/* Stroke related. */
317
318/* Random values are generated on each new stroke so each stroke
319 * gets a different starting point in the perlin noise. */
321
323 const Brush &brush,
324 const float mouse_pos[2],
325 PaintMode paint_mode,
326 bool stroke_has_started);
328 const Brush &brush,
329 float rotation);
330
331void BKE_paint_stroke_get_average(const Scene *scene, const Object *ob, float stroke[3]);
332
334 const blender::float3 &initial_hsv_jitter,
335 const float distance,
336 const float pressure,
337 const blender::float3 &color);
338
339/* .blend I/O */
340
341void BKE_paint_blend_write(BlendWriter *writer, Paint *paint);
342void BKE_paint_blend_read_data(BlendDataReader *reader, const Scene *scene, Paint *paint);
343
344#define SCULPT_FACE_SET_NONE 0
345
346/* Data used for displaying extra visuals while using the Pose brush */
351
353 /* Indexed by base mesh vertex index, stores if that vertex is a boundary. */
355};
356
357/* Data used for displaying extra visuals while using the Boundary brush. */
363
365 /* Max distance used to calculate neighborhood information. */
367
368 /* Indexed by vertex, stores the vertex index of its fake neighbor if available. */
370};
371
379
380using ActiveVert = std::variant<std::monostate, int, BMVert *>;
381
382/* Helper return struct for associated data. */
388
390 /* Mesh data (not copied) can come either directly from a Mesh, or from a MultiresDM */
391 struct { /* Special handling for multires meshes */
392 bool active = false;
394 int level = 0;
395 } multires = {};
396
398
399 /* Edges to adjacent faces. */
403
404 /* Vertices to adjacent edges. */
408
409 /* BMesh for dynamic topology sculpting */
410 BMesh *bm = nullptr;
411 /* Undo/redo log for dynamic topology sculpting */
412 BMLog *bm_log = nullptr;
413
414 /* Limit surface/grids. */
416
417 /* BVH tree acceleration structure */
418 std::unique_ptr<blender::bke::pbvh::Tree> pbvh;
419
420 /* Object is deformed with some modifiers. */
422 /* Coords of deformed mesh but without stroke displacement. */
424 /* Crazy-space deformation matrices. */
426
433
434 /* Pool for texture evaluations. */
435 ImagePool *tex_pool = nullptr;
436
440
441 /* Cursor data and active vertex for tools */
442 std::optional<int> active_face_index;
443 std::optional<int> active_grid_index;
444
445 /* When active, the cursor draws with faded colors, indicating that there is an action
446 * enabled.
447 */
448 bool draw_faded_cursor = false;
449 float cursor_radius = 0.0f;
452 std::optional<blender::float3> cursor_sampled_normal;
454
455 /* TODO(jbakker): Replace rv3d and v3d with ViewContext */
456 RegionView3D *rv3d = nullptr;
457 View3D *v3d = nullptr;
458
459 /* Dynamic mesh preview */
461
462 /* Pose Brush Preview */
463 std::unique_ptr<SculptPoseIKChainPreview> pose_ik_chain_preview;
464
465 /* Boundary Brush Preview */
466 std::unique_ptr<SculptBoundaryPreview> boundary_preview;
467
468 /* "Persistent" positions and normals for multires. (For mesh the
469 * ".sculpt_persistent_co" attribute is used, etc.). */
470 struct {
474
475 /* The stored state for the SubdivCCG at the time of attribute population, used to roughly
476 * determine if the topology when accessed at a current point in time is equivalent to when
477 * it was originally stored. */
478 int grids_num = -1;
479 int grid_size = -1;
481
484
485 /* Transform operator */
489
493
497
498 struct {
499 struct {
500 /* Keep track of how much each vertex has been painted (non-airbrush only). */
502
503 /* Needed to continuously re-apply over the same weights (#BRUSH_ACCUMULATE disabled).
504 * Lazy initialize as needed (flag is set to 1 to tag it as uninitialized). */
507
508 /* TODO: identify sculpt-only fields */
509 // struct { ... } sculpt;
510 } mode = {};
512
513 /* This flag prevents bke::pbvh::Tree from being freed when creating the vp_handle for
514 * texture paint. */
515 bool building_vp_handle = false;
516
521 bool needs_flush_to_id = false;
522
530
534 char *last_paint_canvas_key = nullptr;
536
537 std::unique_ptr<SculptTopologyIslandCache> topology_island_cache;
538
539 private:
540 /* In general, this value is expected to be valid (non-empty) as long as the cursor is over the
541 * mesh. Changing the underlying mesh type (e.g. enabling dyntopo, changing multires levels)
542 * should invalidate this value.
543 */
544 ActiveVert active_vert_ = {};
545
546 /* This value should always exist except when the cursor has never been over the mesh, or when
547 * the underlying mesh type has changed and the last `active_vert_` value no longer corresponds
548 * to a value that can be correctly interpreted */
549 ActiveVert last_active_vert_ = {};
550
551 public:
554
555 ActiveVert active_vert() const;
556
558
568 int active_vert_index() const;
569 int last_active_vert_index() const;
570
580 blender::float3 active_vert_position(const Depsgraph &depsgraph, const Object &object) const;
581
582 void set_active_vert(ActiveVert vert);
583 void clear_active_elements(bool persist_last_active);
584
592 std::optional<PersistentMultiresData> persistent_multires_data();
593};
594
599void BKE_sculptsession_bm_to_me(Object *ob, bool reorder);
601
607
611void BKE_sculpt_update_object_for_edit(Depsgraph *depsgraph, Object *ob_orig, bool is_paint_tool);
613void BKE_sculpt_update_object_after_eval(Depsgraph *depsgraph, Object *ob_eval);
614
620
630 Main *bmain,
631 Object *ob,
634
635void BKE_sculpt_sync_face_visibility_to_grids(const Mesh &mesh, SubdivCCG &subdiv_ccg);
636
641bool BKE_sculptsession_use_pbvh_draw(const Object *ob, const RegionView3D *rv3d);
642
644
645pbvh::Tree &pbvh_ensure(Depsgraph &depsgraph, Object &object);
646
653pbvh::Tree *pbvh_get(Object &object);
654const pbvh::Tree *pbvh_get(const Object &object);
655
656} // namespace blender::bke::object
657bool BKE_object_sculpt_use_dyntopo(const Object *object);
658
659/* paint_canvas.cc */
660
666
668 Object *ob,
669 Image **r_image,
670 ImageUser **r_image_user);
void BKE_sculpt_update_object_after_eval(Depsgraph *depsgraph, Object *ob_eval)
Definition paint.cc:2624
PaletteColor * BKE_palette_color_add(Palette *palette)
Definition paint.cc:1390
bool BKE_paint_eraser_brush_set_default(Main *bmain, Paint *paint)
Definition paint.cc:1203
bool BKE_paint_select_grease_pencil_test(const Object *ob)
Definition paint.cc:1613
void BKE_paint_cavity_curve_preset(Paint *paint, int preset)
Definition paint.cc:1636
Brush * BKE_paint_eraser_brush(Paint *paint)
Definition paint.cc:1156
const uchar PAINT_CURSOR_SCULPT_GREASE_PENCIL[3]
Definition paint.cc:246
void BKE_paint_invalidate_cursor_overlay(Scene *scene, ViewLayer *view_layer, CurveMapping *curve)
Definition paint.cc:270
void BKE_palette_sort_hsv(tPaletteColorHSV *color_array, int totcol)
Definition paint.cc:1434
float paint_grid_paint_mask(const GridPaintMask *gpm, uint level, uint x, uint y)
Definition paint.cc:2013
bool BKE_palette_from_hash(Main *bmain, GHash *color_table, const char *name, bool linear)
Definition paint.cc:1537
bool BKE_paint_brush_set_essentials(Main *bmain, Paint *paint, const char *name)
Definition paint.cc:1089
std::variant< std::monostate, int, BMVert * > ActiveVert
Definition BKE_paint.hh:380
void BKE_sculpt_sync_face_visibility_to_grids(const Mesh &mesh, SubdivCCG &subdiv_ccg)
Definition paint.cc:2813
void BKE_paint_invalidate_overlay_tex(Scene *scene, ViewLayer *view_layer, const Tex *tex)
Definition paint.cc:250
void BKE_paint_set_overlay_override(eOverlayFlags flag)
Definition paint.cc:294
PaintMode
Definition BKE_paint.hh:93
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)
Definition paint.cc:1853
void BKE_sculptsession_bm_to_me(Object *ob, bool reorder)
Definition paint.cc:2135
bool BKE_paint_brush_set(Paint *paint, Brush *brush)
Definition paint.cc:701
bool BKE_paint_always_hide_test(const Object *ob)
Definition paint.cc:1630
PaintCurve * BKE_paint_curve_add(Main *bmain, const char *name)
Definition paint.cc:1337
bool BKE_sculptsession_use_pbvh_draw(const Object *ob, const RegionView3D *rv3d)
Definition paint.cc:2928
void BKE_paint_brushes_ensure(Main *bmain, Paint *paint)
Definition paint.cc:1752
const uchar PAINT_CURSOR_PAINT_GREASE_PENCIL[3]
Definition paint.cc:245
void BKE_sculptsession_free(Object *ob)
Definition paint.cc:2192
void BKE_palette_sort_svh(tPaletteColorHSV *color_array, int totcol)
Definition paint.cc:1471
bool BKE_paint_use_unified_color(const ToolSettings *tool_settings, const Paint *paint)
Definition paint.cc:592
ePaintSymmetryAreas
Definition BKE_paint.hh:136
@ PAINT_SYMM_AREA_Z
Definition BKE_paint.hh:139
@ PAINT_SYMM_AREA_X
Definition BKE_paint.hh:137
@ PAINT_SYMM_AREA_Y
Definition BKE_paint.hh:138
const uchar PAINT_CURSOR_WEIGHT_PAINT[3]
Definition paint.cc:242
void BKE_sculptsession_free_deformMats(SculptSession *ss)
Definition paint.cc:2096
bool BKE_paint_select_elem_test(const Object *ob)
Definition paint.cc:1624
Paint * BKE_paint_get_active(Scene *sce, ViewLayer *view_layer)
Definition paint.cc:428
ePaintOverlayControlFlags BKE_paint_get_overlay_flags()
Definition paint.cc:289
bool BKE_paint_select_vert_test(const Object *ob)
Definition paint.cc:1606
eObjectMode BKE_paint_object_mode_from_paintmode(PaintMode mode)
Definition paint.cc:1653
void BKE_palette_color_remove(Palette *palette, PaletteColor *color)
Definition paint.cc:1362
blender::float3 seed_hsv_jitter()
void BKE_paint_face_set_overlay_color_get(int face_set, int seed, uchar r_color[4])
Definition paint.cc:2952
void BKE_sculptsession_free_vwpaint_data(SculptSession *ss)
Definition paint.cc:2104
void BKE_paint_previous_asset_reference_set(Paint *paint, AssetWeakReference &&asset_weak_reference)
Definition paint.cc:1095
void BKE_palette_sort_vhs(tPaletteColorHSV *color_array, int totcol)
Definition paint.cc:1508
void BKE_paint_stroke_get_average(const Scene *scene, const Object *ob, float stroke[3])
Definition paint.cc:1841
const Brush * BKE_paint_eraser_brush_for_read(const Paint *paint)
Definition paint.cc:1161
void BKE_sculpt_update_object_before_eval(Object *ob_eval)
Definition paint.cc:2565
ePaintOverlayControlFlags
Definition BKE_paint.hh:115
@ PAINT_OVERLAY_INVALID_CURVE
Definition BKE_paint.hh:118
@ PAINT_OVERLAY_INVALID_TEXTURE_SECONDARY
Definition BKE_paint.hh:117
@ PAINT_OVERLAY_OVERRIDE_CURSOR
Definition BKE_paint.hh:119
@ PAINT_OVERLAY_INVALID_TEXTURE_PRIMARY
Definition BKE_paint.hh:116
@ PAINT_OVERLAY_OVERRIDE_SECONDARY
Definition BKE_paint.hh:121
@ PAINT_OVERLAY_OVERRIDE_PRIMARY
Definition BKE_paint.hh:120
void BKE_paint_reset_overlay_invalid(ePaintOverlayControlFlags flag)
Definition paint.cc:312
void BKE_paint_free(Paint *paint)
Definition paint.cc:1791
CurveMapping * BKE_sculpt_default_cavity_curve()
Definition scene.cc:125
void paint_update_brush_rake_rotation(UnifiedPaintSettings &ups, const Brush &brush, float rotation)
Definition paint.cc:2027
const Brush * BKE_paint_brush_for_read(const Paint *paint)
Definition paint.cc:641
void BKE_paint_copy(const Paint *src, Paint *dst, int flag)
Definition paint.cc:1809
bool BKE_paint_eraser_brush_set(Paint *paint, Brush *brush)
Definition paint.cc:1166
CurveMapping * BKE_paint_default_curve()
Definition scene.cc:140
Paint * BKE_paint_get_active_from_paintmode(Scene *sce, PaintMode mode)
Definition paint.cc:365
void BKE_paint_init(Main *bmain, Scene *sce, PaintMode mode, const uchar col[3], bool ensure_brushes=true)
Definition paint.cc:1769
const EnumPropertyItem * BKE_paint_get_tool_enum_from_paintmode(PaintMode mode)
Definition paint.cc:400
void BKE_paint_previous_asset_reference_clear(Paint *paint)
Definition paint.cc:1104
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)
Definition paint.cc:2373
std::optional< int > BKE_paint_get_brush_type_from_obmode(const Brush *brush, eObjectMode ob_mode)
Definition paint.cc:1280
Brush * BKE_paint_eraser_brush_from_essentials(Main *bmain, eObjectMode ob_mode, const char *name)
Definition paint.cc:1191
void BKE_sculpt_update_object_for_edit(Depsgraph *depsgraph, Object *ob_orig, bool is_paint_tool)
Definition paint.cc:2657
void BKE_paint_curve_clamp_endpoint_add_index(PaintCurve *pc, int add_index)
Definition paint.cc:1357
void BKE_sculpt_color_layer_create_if_needed(Object *object)
Definition paint.cc:2633
void BKE_palette_clear(Palette *palette)
Definition paint.cc:1378
Paint * BKE_paint_get_active_from_context(const bContext *C)
Definition paint.cc:467
bool paint_is_bmesh_face_hidden(const BMFace *f)
Definition paint.cc:1998
void BKE_sculptsession_bm_to_me_for_render(Object *object)
Definition paint.cc:2170
bool BKE_paint_ensure(ToolSettings *ts, Paint **r_paint)
Definition paint.cc:1675
std::optional< AssetWeakReference > BKE_paint_brush_type_default_reference(eObjectMode ob_mode, std::optional< int > brush_type)
Definition paint.cc:1017
bool BKE_paint_brush_set_default(Main *bmain, Paint *paint)
Definition paint.cc:1083
Palette * BKE_palette_add(Main *bmain, const char *name)
Definition paint.cc:1384
const uchar PAINT_CURSOR_SCULPT[3]
Definition paint.cc:240
Brush * BKE_paint_brush_from_essentials(Main *bmain, eObjectMode ob_mode, const char *name)
Definition paint.cc:776
bool BKE_paint_eraser_brush_set_essentials(Main *bmain, Paint *paint, const char *name)
Definition paint.cc:1209
uint BKE_paint_get_brush_type_offset_from_paintmode(PaintMode mode)
Definition paint.cc:1252
const uchar PAINT_CURSOR_TEXTURE_PAINT[3]
Definition paint.cc:243
void BKE_palette_sort_luminance(tPaletteColorHSV *color_array, int totcol)
Definition paint.cc:1531
void BKE_sculptsession_free_pbvh(Object &object)
Definition paint.cc:2146
void BKE_paint_blend_read_data(BlendDataReader *reader, const Scene *scene, Paint *paint)
Definition paint.cc:1941
int BKE_paint_canvas_uvmap_layer_index_get(const PaintModeSettings *settings, Object *ob)
Brush * BKE_paint_brush(Paint *paint)
Definition paint.cc:636
void BKE_sculpt_toolsettings_data_ensure(Main *bmain, Scene *scene)
Definition paint.cc:2744
bool paint_calculate_rake_rotation(UnifiedPaintSettings &ups, const Brush &brush, const float mouse_pos[2], PaintMode paint_mode, bool stroke_has_started)
Definition paint.cc:2052
Palette * BKE_paint_palette(Paint *paint)
Definition paint.cc:1343
void BKE_paint_palette_set(Paint *paint, Palette *palette)
Definition paint.cc:1348
const uchar PAINT_CURSOR_SCULPT_CURVES[3]
Definition paint.cc:244
bool BKE_palette_is_empty(const Palette *palette)
Definition paint.cc:1397
PaintMode BKE_paintmode_get_active_from_context(const bContext *C)
Definition paint.cc:496
const uchar PAINT_CURSOR_VERTEX_PAINT[3]
Definition paint.cc:241
void BKE_sculpt_mask_layers_ensure(Depsgraph *depsgraph, Main *bmain, Object *ob, MultiresModifierData *mmd)
Definition paint.cc:2666
bool BKE_paint_brush_poll(const Paint *paint, const Brush *brush)
Definition paint.cc:646
bool paint_is_grid_face_hidden(blender::BoundedBitSpan grid_hidden, int gridsize, int x, int y)
Definition paint.cc:1987
bool BKE_object_sculpt_use_dyntopo(const Object *object)
Definition paint.cc:2923
void BKE_paint_brushes_set_default_references(ToolSettings *ts)
Definition paint.cc:1054
char * BKE_paint_canvas_key_get(PaintModeSettings *settings, Object *ob)
bool BKE_paint_select_face_test(const Object *ob)
Definition paint.cc:1599
PaintMode BKE_paintmode_get_from_tool(const bToolRef *tref)
Definition paint.cc:552
std::optional< int > BKE_paint_get_brush_type_from_paintmode(const Brush *brush, PaintMode mode)
Definition paint.cc:1308
void BKE_paint_brushes_validate(Main *bmain, Paint *paint)
Definition paint.cc:1109
void BKE_paint_invalidate_overlay_all()
Definition paint.cc:283
void BKE_paint_blend_write(BlendWriter *writer, Paint *paint)
Definition paint.cc:1909
void BKE_sculpt_cavity_curves_ensure(Sculpt *sd)
Definition paint.cc:2733
bool BKE_paint_ensure_from_paintmode(Scene *sce, PaintMode mode)
Definition paint.cc:317
unsigned char uchar
unsigned int uint
#define ENUM_OPERATORS(_type, _max)
eOverlayFlags
eObjectMode
#define C
Definition RandGen.cpp:29
BPy_StructRNA * depsgraph
static unsigned long seed
Definition btSoftBody.h:39
uint col
float distance(VecOp< float, D >, VecOp< float, D >) RET
pbvh::Tree & pbvh_ensure(Depsgraph &depsgraph, Object &object)
Definition paint.cc:2877
pbvh::Tree * pbvh_get(Object &object)
Definition paint.cc:2912
VecBase< float, 4 > float4
VecBase< float, 3 > float3
blender::MutableSpan< float > displacements
Definition BKE_paint.hh:386
blender::Span< blender::float3 > normals
Definition BKE_paint.hh:385
blender::Span< blender::float3 > positions
Definition BKE_paint.hh:384
blender::Vector< std::pair< blender::float3, blender::float3 > > edges
Definition BKE_paint.hh:359
blender::float3 pivot_position
Definition BKE_paint.hh:360
blender::float3 initial_vert_position
Definition BKE_paint.hh:361
blender::Array< int > fake_neighbor_index
Definition BKE_paint.hh:369
blender::Array< blender::float3 > initial_orig_coords
Definition BKE_paint.hh:348
blender::Array< blender::float3 > initial_head_coords
Definition BKE_paint.hh:349
bool needs_flush_to_id
Definition BKE_paint.hh:521
blender::float4 prev_pivot_rot
Definition BKE_paint.hh:495
blender::float3 last_normal
Definition BKE_paint.hh:535
blender::ed::sculpt_paint::StrokeCache * cache
Definition BKE_paint.hh:437
BMLog * bm_log
Definition BKE_paint.hh:412
blender::Array< blender::float3 > sculpt_persistent_co
Definition BKE_paint.hh:471
std::optional< int > active_grid_index
Definition BKE_paint.hh:443
RegionView3D * rv3d
Definition BKE_paint.hh:456
blender::ed::sculpt_paint::filter::Cache * filter_cache
Definition BKE_paint.hh:438
std::optional< int > active_face_index
Definition BKE_paint.hh:442
KeyBlock * shapekey_active
Definition BKE_paint.hh:397
blender::float3 cursor_normal
Definition BKE_paint.hh:451
blender::float3 prev_pivot_pos
Definition BKE_paint.hh:494
blender::Array< int > vert_to_edge_indices
Definition BKE_paint.hh:406
blender::float4 pivot_rot
Definition BKE_paint.hh:487
SculptVertexInfo vertex_info
Definition BKE_paint.hh:482
blender::SharedCache< blender::Vector< blender::float3 > > face_normals_deform
Definition BKE_paint.hh:432
blender::GroupedSpan< int > vert_to_edge_map
Definition BKE_paint.hh:407
SubdivCCG * subdiv_ccg
Definition BKE_paint.hh:415
std::unique_ptr< SculptBoundaryPreview > boundary_preview
Definition BKE_paint.hh:466
blender::float3 cursor_view_normal
Definition BKE_paint.hh:453
blender::Array< MDeformVert > dvert_prev
Definition BKE_paint.hh:505
bool draw_faded_cursor
Definition BKE_paint.hh:448
blender::Array< blender::float3 > sculpt_persistent_no
Definition BKE_paint.hh:472
float cursor_radius
Definition BKE_paint.hh:449
blender::Array< int > preview_verts
Definition BKE_paint.hh:460
struct SculptSession::@370306015203351072222037331336123026254172011056::@312313020143064270273330131075310027202022322222 wpaint
ActiveVert active_vert() const
Definition paint.cc:2227
blender::Array< int > edge_to_face_offsets
Definition BKE_paint.hh:400
blender::Array< blender::float3, 0 > deform_cos
Definition BKE_paint.hh:423
blender::float3 cursor_location
Definition BKE_paint.hh:450
blender::float3 active_vert_position(const Depsgraph &depsgraph, const Object &object) const
Definition paint.cc:2263
blender::float3 pivot_pos
Definition BKE_paint.hh:486
struct SculptSession::@323057044041335216000265171165256227034374206114 multires
int last_active_vert_index() const
Definition paint.cc:2250
std::unique_ptr< SculptPoseIKChainPreview > pose_ik_chain_preview
Definition BKE_paint.hh:463
blender::float3 pivot_scale
Definition BKE_paint.hh:488
blender::float3 init_pivot_pos
Definition BKE_paint.hh:490
float * alpha_weight
Definition BKE_paint.hh:501
ImagePool * tex_pool
Definition BKE_paint.hh:435
blender::float4 init_pivot_rot
Definition BKE_paint.hh:491
std::unique_ptr< blender::bke::pbvh::Tree > pbvh
Definition BKE_paint.hh:418
std::unique_ptr< SculptTopologyIslandCache > topology_island_cache
Definition BKE_paint.hh:537
View3D * v3d
Definition BKE_paint.hh:457
std::optional< blender::float3 > cursor_sampled_normal
Definition BKE_paint.hh:452
blender::Array< float > sculpt_persistent_disp
Definition BKE_paint.hh:473
char * last_paint_canvas_key
Definition BKE_paint.hh:534
blender::float3 prev_pivot_scale
Definition BKE_paint.hh:496
blender::float3 init_pivot_scale
Definition BKE_paint.hh:492
blender::Array< int > vert_to_edge_offsets
Definition BKE_paint.hh:405
blender::GroupedSpan< int > edge_to_face_map
Definition BKE_paint.hh:402
blender::SharedCache< blender::Vector< blender::float3 > > vert_normals_deform
Definition BKE_paint.hh:431
blender::ed::sculpt_paint::expand::Cache * expand_cache
Definition BKE_paint.hh:439
bool sticky_shading_color
Definition BKE_paint.hh:529
int active_vert_index() const
Definition paint.cc:2237
eObjectMode mode_type
Definition BKE_paint.hh:511
ActiveVert last_active_vert() const
Definition paint.cc:2232
std::optional< PersistentMultiresData > persistent_multires_data()
Definition paint.cc:2302
struct SculptSession::@233174042251160262373076100172217246021220163257 persistent
blender::Array< int > edge_to_face_indices
Definition BKE_paint.hh:401
blender::Array< blender::float3x3, 0 > deform_imats
Definition BKE_paint.hh:425
MultiresModifierData * modifier
Definition BKE_paint.hh:393
SculptFakeNeighbors fake_neighbors
Definition BKE_paint.hh:483
struct SculptSession::@370306015203351072222037331336123026254172011056 mode
bool building_vp_handle
Definition BKE_paint.hh:515
bool deform_modifiers_active
Definition BKE_paint.hh:421
void set_active_vert(ActiveVert vert)
Definition paint.cc:2297
void clear_active_elements(bool persist_last_active)
Definition paint.cc:2282
blender::Array< uint8_t > vert_island_ids
Definition BKE_paint.hh:377
blender::BitVector boundary
Definition BKE_paint.hh:354
uint8_t flag
Definition wm_window.cc:139