Blender V4.3
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
11#include <variant>
12
13#include "BLI_array.hh"
14#include "BLI_bit_vector.hh"
15#include "BLI_map.hh"
18#include "BLI_offset_indices.hh"
19#include "BLI_ordered_edge.hh"
20#include "BLI_set.hh"
21#include "BLI_shared_cache.hh"
22#include "BLI_utility_mixins.hh"
23
24#include "DNA_brush_enums.h"
26#include "DNA_meshdata_types.h"
27#include "DNA_object_enums.h"
28
29#include "BKE_pbvh.hh"
30#include "BKE_subdiv_ccg.hh"
31
33struct BMFace;
34struct BMLog;
35struct BMVert;
36struct BMesh;
37struct BlendDataReader;
38struct BlendWriter;
39struct Brush;
40struct CustomDataLayer;
41struct CurveMapping;
42struct Depsgraph;
43struct EnumPropertyItem;
44namespace blender {
45namespace bke {
46enum class AttrDomain : int8_t;
47namespace pbvh {
48class Tree;
49}
50} // namespace bke
51namespace ed::sculpt_paint {
52namespace expand {
53struct Cache;
54}
55namespace filter {
56struct Cache;
57}
58struct StrokeCache;
59} // namespace ed::sculpt_paint
60} // namespace blender
61struct GHash;
62struct GridPaintMask;
63struct Image;
64struct ImagePool;
65struct ImageUser;
66struct KeyBlock;
67struct Main;
68struct Mesh;
69struct MDeformVert;
71struct Object;
72struct Paint;
73struct PaintCurve;
75struct Palette;
76struct PaletteColor;
77struct RegionView3D;
78struct Scene;
79struct Sculpt;
80struct SculptSession;
81struct SubdivCCG;
82struct Tex;
83struct ToolSettings;
85struct View3D;
86struct ViewLayer;
87struct bContext;
88struct bToolRef;
89struct tPaletteColorHSV;
90
91extern const uchar PAINT_CURSOR_SCULPT[3];
92extern const uchar PAINT_CURSOR_VERTEX_PAINT[3];
93extern const uchar PAINT_CURSOR_WEIGHT_PAINT[3];
94extern const uchar PAINT_CURSOR_TEXTURE_PAINT[3];
95extern const uchar PAINT_CURSOR_SCULPT_CURVES[3];
98
99enum class PaintMode : int8_t {
100 Sculpt = 0,
102 Vertex = 1,
103 Weight = 2,
105 Texture3D = 3,
107 Texture2D = 4,
108 GPencil = 6,
109 /* Grease Pencil Vertex Paint */
110 VertexGPencil = 7,
111 SculptGPencil = 8,
112 WeightGPencil = 9,
114 SculptCurves = 10,
117
119 Invalid = 12,
120};
121
122/* overlay invalidation */
132
133#define PAINT_OVERRIDE_MASK \
134 (PAINT_OVERLAY_OVERRIDE_SECONDARY | PAINT_OVERLAY_OVERRIDE_PRIMARY | \
135 PAINT_OVERLAY_OVERRIDE_CURSOR)
136
142#define PAINT_SYMM_AREA_DEFAULT 0
143
150
151#define PAINT_SYMM_AREAS 8
152
153void BKE_paint_invalidate_overlay_tex(Scene *scene, ViewLayer *view_layer, const Tex *tex);
154void BKE_paint_invalidate_cursor_overlay(Scene *scene, ViewLayer *view_layer, CurveMapping *curve);
159
160/* Palettes. */
161
162Palette *BKE_palette_add(Main *bmain, const char *name);
164bool BKE_palette_is_empty(const Palette *palette);
168void BKE_palette_color_remove(Palette *palette, PaletteColor *color);
169void BKE_palette_clear(Palette *palette);
170
171void BKE_palette_sort_hsv(tPaletteColorHSV *color_array, int totcol);
172void BKE_palette_sort_svh(tPaletteColorHSV *color_array, int totcol);
173void BKE_palette_sort_vhs(tPaletteColorHSV *color_array, int totcol);
174void BKE_palette_sort_luminance(tPaletteColorHSV *color_array, int totcol);
175bool BKE_palette_from_hash(Main *bmain, GHash *color_table, const char *name, bool linear);
176
177/* Paint curves. */
178
179PaintCurve *BKE_paint_curve_add(Main *bmain, const char *name);
180
184bool BKE_paint_ensure(ToolSettings *ts, Paint **r_paint);
188void BKE_paint_init(
189 Main *bmain, Scene *sce, PaintMode mode, const uchar col[3], bool ensure_brushes = true);
190void BKE_paint_free(Paint *paint);
196void BKE_paint_copy(const Paint *src, Paint *dst, int flag);
197
198void BKE_paint_cavity_curve_preset(Paint *paint, int preset);
199
205std::optional<int> BKE_paint_get_brush_type_from_obmode(const Brush *brush,
206 const eObjectMode ob_mode);
207std::optional<int> BKE_paint_get_brush_type_from_paintmode(const Brush *brush,
208 const PaintMode mode);
209Paint *BKE_paint_get_active(Scene *sce, ViewLayer *view_layer);
213bool BKE_paint_use_unified_color(const ToolSettings *tool_settings, const Paint *paint);
214
215/* Paint brush retrieval and assignment. */
216
218const Brush *BKE_paint_brush_for_read(const Paint *paint);
219Brush *BKE_paint_brush_from_essentials(Main *bmain, eObjectMode obmode, const char *name);
220
225bool BKE_paint_brush_poll(const Paint *paint, const Brush *brush);
226
240bool BKE_paint_brush_set(Paint *paint, Brush *brush);
245bool BKE_paint_brush_set(Main *bmain,
246 Paint *paint,
247 const AssetWeakReference *brush_asset_reference);
248bool BKE_paint_brush_set_default(Main *bmain, Paint *paint);
249bool BKE_paint_brush_set_essentials(Main *bmain, Paint *paint, const char *name);
250
251std::optional<AssetWeakReference> BKE_paint_brush_type_default_reference(
252 eObjectMode ob_mode, std::optional<int> brush_type);
264void BKE_paint_brushes_ensure(Main *bmain, Paint *paint);
265void BKE_paint_brushes_validate(Main *bmain, Paint *paint);
266
267/* Secondary eraser brush. */
268
270const Brush *BKE_paint_eraser_brush_for_read(const Paint *paint);
271
272bool BKE_paint_eraser_brush_set(Paint *paint, Brush *brush);
273Brush *BKE_paint_eraser_brush_from_essentials(Main *bmain, eObjectMode ob_mode, const char *name);
275bool BKE_paint_eraser_brush_set_essentials(Main *bmain, Paint *paint, const char *name);
276
277/* Paint palette. */
278
280void BKE_paint_palette_set(Paint *paint, Palette *palette);
282
286bool BKE_paint_select_face_test(const Object *ob);
290bool BKE_paint_select_vert_test(const Object *ob);
299bool BKE_paint_select_elem_test(const Object *ob);
304bool BKE_paint_always_hide_test(const Object *ob);
305
306/* Partial visibility. */
307
311bool paint_is_grid_face_hidden(blender::BoundedBitSpan grid_hidden, int gridsize, int x, int y);
316
317/* Paint masks. */
318
319float paint_grid_paint_mask(const GridPaintMask *gpm, uint level, uint x, uint y);
320
321void BKE_paint_face_set_overlay_color_get(int face_set, int seed, uchar r_color[4]);
322
323/* Stroke related. */
324
326 const Brush &brush,
327 const float mouse_pos[2],
328 PaintMode paint_mode,
329 bool stroke_has_started);
331 const Brush &brush,
332 float rotation);
333
334void BKE_paint_stroke_get_average(const Scene *scene, const Object *ob, float stroke[3]);
335
336/* .blend I/O */
337
338void BKE_paint_blend_write(BlendWriter *writer, Paint *paint);
339void BKE_paint_blend_read_data(BlendDataReader *reader, const Scene *scene, Paint *paint);
340
341#define SCULPT_FACE_SET_NONE 0
342
343/* Data used for displaying extra visuals while using the Pose brush */
348
350 /* Indexed by base mesh vertex index, stores if that vertex is a boundary. */
352};
353
354/* Data used for displaying extra visuals while using the Boundary brush. */
360
362 /* Max distance used to calculate neighborhood information. */
364
365 /* Indexed by vertex, stores the vertex index of its fake neighbor if available. */
367};
368
376
377using ActiveVert = std::variant<std::monostate, int, SubdivCCGCoord, BMVert *>;
378
380 /* Mesh data (not copied) can come either directly from a Mesh, or from a MultiresDM */
381 struct { /* Special handling for multires meshes */
382 bool active = false;
383 MultiresModifierData *modifier = nullptr;
384 int level = 0;
385 } multires = {};
386
388
389 /* Edges to adjacent faces. */
393
394 /* Vertices to adjacent edges. */
398
399 /* BMesh for dynamic topology sculpting */
400 BMesh *bm = nullptr;
401 /* Undo/redo log for dynamic topology sculpting */
402 BMLog *bm_log = nullptr;
403
404 /* Limit surface/grids. */
406
407 /* BVH tree acceleration structure */
408 std::unique_ptr<blender::bke::pbvh::Tree> pbvh;
409
410 /* Object is deformed with some modifiers. */
412 /* Coords of deformed mesh but without stroke displacement. */
414 /* Crazy-space deformation matrices. */
416
423
424 /* Pool for texture evaluations. */
425 ImagePool *tex_pool = nullptr;
426
430
431 /* Cursor data and active vertex for tools */
432 std::optional<int> active_face_index;
433 std::optional<int> active_grid_index;
434
435 /* When active, the cursor draws with faded colors, indicating that there is an action
436 * enabled.
437 */
438 bool draw_faded_cursor = false;
439 float cursor_radius = 0.0f;
444
445 /* TODO(jbakker): Replace rv3d and v3d with ViewContext */
446 RegionView3D *rv3d = nullptr;
447 View3D *v3d = nullptr;
448
449 /* Dynamic mesh preview */
451
452 /* Pose Brush Preview */
453 std::unique_ptr<SculptPoseIKChainPreview> pose_ik_chain_preview;
454
455 /* Boundary Brush Preview */
456 std::unique_ptr<SculptBoundaryPreview> boundary_preview;
457
460
461 /* Transform operator */
465
469
473
474 struct {
475 struct {
476 /* Keep track of how much each vertex has been painted (non-airbrush only). */
478
479 /* Needed to continuously re-apply over the same weights (BRUSH_ACCUMULATE disabled).
480 * Lazy initialize as needed (flag is set to 1 to tag it as uninitialized). */
483
484 /* TODO: identify sculpt-only fields */
485 // struct { ... } sculpt;
486 } mode = {};
488
489 /* This flag prevents bke::pbvh::Tree from being freed when creating the vp_handle for
490 * texture paint. */
491 bool building_vp_handle = false;
492
497 char needs_flush_to_id = false;
498
506
510 char *last_paint_canvas_key = nullptr;
512
513 std::unique_ptr<SculptTopologyIslandCache> topology_island_cache;
514
515 private:
516 /* In general, this value is expected to be valid (non-empty) as long as the cursor is over the
517 * mesh. Changing the underlying mesh type (e.g. enabling dyntopo, changing multires levels)
518 * should invalidate this value.
519 */
520 ActiveVert active_vert_ = {};
521
522 /* This value should always exist except when the cursor has never been over the mesh, or when
523 * the underlying mesh type has changed and the last `active_vert_` value no longer corresponds
524 * to a value that can be correctly interpreted */
525 ActiveVert last_active_vert_ = {};
526
527 public:
530
531 ActiveVert active_vert() const;
532
534
544 int active_vert_index() const;
545 int last_active_vert_index() const;
546
556 blender::float3 active_vert_position(const Depsgraph &depsgraph, const Object &object) const;
557
558 void set_active_vert(ActiveVert vert);
559 void clear_active_vert(bool persist_last_active);
560};
561
566void BKE_sculptsession_bm_to_me(Object *ob, bool reorder);
568
574
578void BKE_sculpt_update_object_for_edit(Depsgraph *depsgraph, Object *ob_orig, bool is_paint_tool);
580void BKE_sculpt_update_object_after_eval(Depsgraph *depsgraph, Object *ob_eval);
581
587
597 Main *bmain,
598 Object *ob,
601
602void BKE_sculpt_sync_face_visibility_to_grids(const Mesh &mesh, SubdivCCG &subdiv_ccg);
603
608bool BKE_sculptsession_use_pbvh_draw(const Object *ob, const RegionView3D *rv3d);
609
611
612pbvh::Tree &pbvh_ensure(Depsgraph &depsgraph, Object &object);
613
620pbvh::Tree *pbvh_get(Object &object);
621const pbvh::Tree *pbvh_get(const Object &object);
622
623} // namespace blender::bke::object
624bool BKE_object_sculpt_use_dyntopo(const Object *object);
625
626/* paint_canvas.cc */
627
633
635 Object *ob,
636 Image **r_image,
637 ImageUser **r_image_user);
void BKE_sculpt_update_object_after_eval(Depsgraph *depsgraph, Object *ob_eval)
Definition paint.cc:2568
PaletteColor * BKE_palette_color_add(Palette *palette)
Definition paint.cc:1392
bool BKE_paint_eraser_brush_set_default(Main *bmain, Paint *paint)
Definition paint.cc:1202
bool BKE_paint_select_grease_pencil_test(const Object *ob)
Definition paint.cc:1621
void BKE_paint_cavity_curve_preset(Paint *paint, int preset)
Definition paint.cc:1644
Brush * BKE_paint_eraser_brush(Paint *paint)
Definition paint.cc:1155
const uchar PAINT_CURSOR_SCULPT_GREASE_PENCIL[3]
Definition paint.cc:249
void BKE_paint_invalidate_cursor_overlay(Scene *scene, ViewLayer *view_layer, CurveMapping *curve)
Definition paint.cc:273
void BKE_palette_sort_hsv(tPaletteColorHSV *color_array, int totcol)
Definition paint.cc:1520
float paint_grid_paint_mask(const GridPaintMask *gpm, uint level, uint x, uint y)
Definition paint.cc:1966
bool BKE_palette_from_hash(Main *bmain, GHash *color_table, const char *name, bool linear)
Definition paint.cc:1544
bool BKE_paint_brush_set_essentials(Main *bmain, Paint *paint, const char *name)
Definition paint.cc:1102
void BKE_sculpt_sync_face_visibility_to_grids(const Mesh &mesh, SubdivCCG &subdiv_ccg)
Definition paint.cc:2747
void BKE_paint_invalidate_overlay_tex(Scene *scene, ViewLayer *view_layer, const Tex *tex)
Definition paint.cc:253
PaintMode
Definition BKE_paint.hh:99
@ SculptGreasePencil
void BKE_sculptsession_bm_to_me(Object *ob, bool reorder)
Definition paint.cc:2088
bool BKE_paint_brush_set(Paint *paint, Brush *brush)
Definition paint.cc:714
bool BKE_paint_always_hide_test(const Object *ob)
Definition paint.cc:1638
PaintCurve * BKE_paint_curve_add(Main *bmain, const char *name)
Definition paint.cc:1339
std::optional< int > BKE_paint_get_brush_type_from_obmode(const Brush *brush, const eObjectMode ob_mode)
Definition paint.cc:1280
bool BKE_sculptsession_use_pbvh_draw(const Object *ob, const RegionView3D *rv3d)
Definition paint.cc:2862
void BKE_paint_brushes_ensure(Main *bmain, Paint *paint)
Definition paint.cc:1762
const uchar PAINT_CURSOR_PAINT_GREASE_PENCIL[3]
Definition paint.cc:248
void BKE_sculptsession_free(Object *ob)
Definition paint.cc:2145
void BKE_palette_sort_svh(tPaletteColorHSV *color_array, int totcol)
Definition paint.cc:1526
std::variant< std::monostate, int, SubdivCCGCoord, BMVert * > ActiveVert
Definition BKE_paint.hh:377
bool BKE_paint_use_unified_color(const ToolSettings *tool_settings, const Paint *paint)
Definition paint.cc:605
ePaintSymmetryAreas
Definition BKE_paint.hh:144
@ PAINT_SYMM_AREA_Z
Definition BKE_paint.hh:147
@ PAINT_SYMM_AREA_X
Definition BKE_paint.hh:145
@ PAINT_SYMM_AREA_Y
Definition BKE_paint.hh:146
const uchar PAINT_CURSOR_WEIGHT_PAINT[3]
Definition paint.cc:245
void BKE_sculptsession_free_deformMats(SculptSession *ss)
Definition paint.cc:2049
bool BKE_paint_select_elem_test(const Object *ob)
Definition paint.cc:1632
Paint * BKE_paint_get_active(Scene *sce, ViewLayer *view_layer)
Definition paint.cc:438
ePaintOverlayControlFlags BKE_paint_get_overlay_flags()
Definition paint.cc:292
bool BKE_paint_select_vert_test(const Object *ob)
Definition paint.cc:1614
eObjectMode BKE_paint_object_mode_from_paintmode(PaintMode mode)
Definition paint.cc:1661
void BKE_palette_color_remove(Palette *palette, PaletteColor *color)
Definition paint.cc:1364
void BKE_paint_face_set_overlay_color_get(int face_set, int seed, uchar r_color[4])
Definition paint.cc:2886
void BKE_sculptsession_free_vwpaint_data(SculptSession *ss)
Definition paint.cc:2057
void BKE_palette_sort_vhs(tPaletteColorHSV *color_array, int totcol)
Definition paint.cc:1532
void BKE_paint_stroke_get_average(const Scene *scene, const Object *ob, float stroke[3])
Definition paint.cc:1850
const Brush * BKE_paint_eraser_brush_for_read(const Paint *paint)
Definition paint.cc:1160
void BKE_sculpt_update_object_before_eval(Object *ob_eval)
Definition paint.cc:2509
void BKE_paint_set_overlay_override(enum eOverlayFlags flag)
Definition paint.cc:297
ePaintOverlayControlFlags
Definition BKE_paint.hh:123
@ PAINT_OVERLAY_INVALID_CURVE
Definition BKE_paint.hh:126
@ PAINT_OVERLAY_INVALID_TEXTURE_SECONDARY
Definition BKE_paint.hh:125
@ PAINT_OVERLAY_OVERRIDE_CURSOR
Definition BKE_paint.hh:127
@ PAINT_OVERLAY_INVALID_TEXTURE_PRIMARY
Definition BKE_paint.hh:124
@ PAINT_OVERLAY_OVERRIDE_SECONDARY
Definition BKE_paint.hh:129
@ PAINT_OVERLAY_OVERRIDE_PRIMARY
Definition BKE_paint.hh:128
void BKE_paint_reset_overlay_invalid(ePaintOverlayControlFlags flag)
Definition paint.cc:315
void BKE_paint_free(Paint *paint)
Definition paint.cc:1801
CurveMapping * BKE_sculpt_default_cavity_curve()
Definition scene.cc:120
void paint_update_brush_rake_rotation(UnifiedPaintSettings &ups, const Brush &brush, float rotation)
Definition paint.cc:1980
const Brush * BKE_paint_brush_for_read(const Paint *paint)
Definition paint.cc:654
void BKE_paint_copy(const Paint *src, Paint *dst, int flag)
Definition paint.cc:1818
bool BKE_paint_eraser_brush_set(Paint *paint, Brush *brush)
Definition paint.cc:1165
Paint * BKE_paint_get_active_from_paintmode(Scene *sce, PaintMode mode)
Definition paint.cc:371
void BKE_paint_init(Main *bmain, Scene *sce, PaintMode mode, const uchar col[3], bool ensure_brushes=true)
Definition paint.cc:1779
const EnumPropertyItem * BKE_paint_get_tool_enum_from_paintmode(PaintMode mode)
Definition paint.cc:408
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:2316
void BKE_sculpt_check_cavity_curves(Sculpt *sd)
Definition scene.cc:135
Brush * BKE_paint_eraser_brush_from_essentials(Main *bmain, eObjectMode ob_mode, const char *name)
Definition paint.cc:1190
void BKE_sculpt_update_object_for_edit(Depsgraph *depsgraph, Object *ob_orig, bool is_paint_tool)
Definition paint.cc:2601
void BKE_paint_curve_clamp_endpoint_add_index(PaintCurve *pc, int add_index)
Definition paint.cc:1359
void BKE_sculpt_color_layer_create_if_needed(Object *object)
Definition paint.cc:2577
void BKE_palette_clear(Palette *palette)
Definition paint.cc:1380
Paint * BKE_paint_get_active_from_context(const bContext *C)
Definition paint.cc:477
bool paint_is_bmesh_face_hidden(const BMFace *f)
Definition paint.cc:1951
void BKE_sculptsession_bm_to_me_for_render(Object *object)
Definition paint.cc:2123
bool BKE_paint_ensure(ToolSettings *ts, Paint **r_paint)
Definition paint.cc:1685
std::optional< AssetWeakReference > BKE_paint_brush_type_default_reference(eObjectMode ob_mode, std::optional< int > brush_type)
Definition paint.cc:1030
bool BKE_paint_brush_set_default(Main *bmain, Paint *paint)
Definition paint.cc:1096
Palette * BKE_palette_add(Main *bmain, const char *name)
Definition paint.cc:1386
const uchar PAINT_CURSOR_SCULPT[3]
Definition paint.cc:243
bool BKE_paint_eraser_brush_set_essentials(Main *bmain, Paint *paint, const char *name)
Definition paint.cc:1208
uint BKE_paint_get_brush_type_offset_from_paintmode(PaintMode mode)
Definition paint.cc:1250
const uchar PAINT_CURSOR_TEXTURE_PAINT[3]
Definition paint.cc:246
void BKE_palette_sort_luminance(tPaletteColorHSV *color_array, int totcol)
Definition paint.cc:1538
void BKE_sculptsession_free_pbvh(Object &object)
Definition paint.cc:2099
void BKE_paint_blend_read_data(BlendDataReader *reader, const Scene *scene, Paint *paint)
Definition paint.cc:1894
std::optional< int > BKE_paint_get_brush_type_from_paintmode(const Brush *brush, const PaintMode mode)
Definition paint.cc:1308
int BKE_paint_canvas_uvmap_layer_index_get(const PaintModeSettings *settings, Object *ob)
Brush * BKE_paint_brush(Paint *paint)
Definition paint.cc:649
void BKE_sculpt_toolsettings_data_ensure(Main *bmain, Scene *scene)
Definition paint.cc:2678
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:2005
Palette * BKE_paint_palette(Paint *paint)
Definition paint.cc:1345
void BKE_paint_palette_set(Paint *paint, Palette *palette)
Definition paint.cc:1350
const uchar PAINT_CURSOR_SCULPT_CURVES[3]
Definition paint.cc:247
bool BKE_palette_is_empty(const Palette *palette)
Definition paint.cc:1399
PaintMode BKE_paintmode_get_active_from_context(const bContext *C)
Definition paint.cc:506
const uchar PAINT_CURSOR_VERTEX_PAINT[3]
Definition paint.cc:244
void BKE_sculpt_mask_layers_ensure(Depsgraph *depsgraph, Main *bmain, Object *ob, MultiresModifierData *mmd)
Definition paint.cc:2610
bool BKE_paint_brush_poll(const Paint *paint, const Brush *brush)
Definition paint.cc:659
Brush * BKE_paint_brush_from_essentials(Main *bmain, eObjectMode obmode, const char *name)
Definition paint.cc:789
bool paint_is_grid_face_hidden(blender::BoundedBitSpan grid_hidden, int gridsize, int x, int y)
Definition paint.cc:1940
bool BKE_object_sculpt_use_dyntopo(const Object *object)
Definition paint.cc:2857
void BKE_paint_brushes_set_default_references(ToolSettings *ts)
Definition paint.cc:1067
char * BKE_paint_canvas_key_get(PaintModeSettings *settings, Object *ob)
bool BKE_paint_select_face_test(const Object *ob)
Definition paint.cc:1607
PaintMode BKE_paintmode_get_from_tool(const bToolRef *tref)
Definition paint.cc:565
void BKE_paint_brushes_validate(Main *bmain, Paint *paint)
Definition paint.cc:1108
void BKE_paint_invalidate_overlay_all()
Definition paint.cc:286
void BKE_paint_blend_write(BlendWriter *writer, Paint *paint)
Definition paint.cc:1862
bool BKE_paint_ensure_from_paintmode(Scene *sce, PaintMode mode)
Definition paint.cc:320
unsigned char uchar
unsigned int uint
#define ENUM_OPERATORS(_type, _max)
eOverlayFlags
eObjectMode
static unsigned long seed
Definition btSoftBody.h:39
const Depsgraph * depsgraph
uint col
pbvh::Tree & pbvh_ensure(Depsgraph &depsgraph, Object &object)
Definition paint.cc:2811
pbvh::Tree * pbvh_get(Object &object)
Definition paint.cc:2846
signed char int8_t
Definition stdint.h:75
blender::Vector< std::pair< blender::float3, blender::float3 > > edges
Definition BKE_paint.hh:356
blender::float3 pivot_position
Definition BKE_paint.hh:357
blender::float3 initial_vert_position
Definition BKE_paint.hh:358
blender::Array< int > fake_neighbor_index
Definition BKE_paint.hh:366
blender::Array< blender::float3 > initial_orig_coords
Definition BKE_paint.hh:345
blender::Array< blender::float3 > initial_head_coords
Definition BKE_paint.hh:346
blender::float4 prev_pivot_rot
Definition BKE_paint.hh:471
blender::float3 last_normal
Definition BKE_paint.hh:511
blender::ed::sculpt_paint::StrokeCache * cache
Definition BKE_paint.hh:427
BMLog * bm_log
Definition BKE_paint.hh:402
std::optional< int > active_grid_index
Definition BKE_paint.hh:433
RegionView3D * rv3d
Definition BKE_paint.hh:446
void clear_active_vert(bool persist_last_active)
Definition paint.cc:2245
blender::ed::sculpt_paint::filter::Cache * filter_cache
Definition BKE_paint.hh:428
std::optional< int > active_face_index
Definition BKE_paint.hh:432
KeyBlock * shapekey_active
Definition BKE_paint.hh:387
blender::float3 cursor_normal
Definition BKE_paint.hh:441
blender::float3 prev_pivot_pos
Definition BKE_paint.hh:470
blender::Array< int > vert_to_edge_indices
Definition BKE_paint.hh:396
blender::float4 pivot_rot
Definition BKE_paint.hh:463
SculptVertexInfo vertex_info
Definition BKE_paint.hh:458
blender::SharedCache< blender::Vector< blender::float3 > > face_normals_deform
Definition BKE_paint.hh:422
blender::GroupedSpan< int > vert_to_edge_map
Definition BKE_paint.hh:397
SubdivCCG * subdiv_ccg
Definition BKE_paint.hh:405
std::unique_ptr< SculptBoundaryPreview > boundary_preview
Definition BKE_paint.hh:456
blender::float3 cursor_view_normal
Definition BKE_paint.hh:443
blender::Array< MDeformVert > dvert_prev
Definition BKE_paint.hh:481
bool draw_faded_cursor
Definition BKE_paint.hh:438
float cursor_radius
Definition BKE_paint.hh:439
blender::Array< int > preview_verts
Definition BKE_paint.hh:450
ActiveVert active_vert() const
Definition paint.cc:2180
blender::Array< int > edge_to_face_offsets
Definition BKE_paint.hh:390
blender::Array< blender::float3, 0 > deform_cos
Definition BKE_paint.hh:413
blender::float3 cursor_location
Definition BKE_paint.hh:440
blender::float3 active_vert_position(const Depsgraph &depsgraph, const Object &object) const
Definition paint.cc:2224
blender::float3 pivot_pos
Definition BKE_paint.hh:462
int last_active_vert_index() const
Definition paint.cc:2207
std::unique_ptr< SculptPoseIKChainPreview > pose_ik_chain_preview
Definition BKE_paint.hh:453
blender::float3 pivot_scale
Definition BKE_paint.hh:464
blender::float3 init_pivot_pos
Definition BKE_paint.hh:466
float * alpha_weight
Definition BKE_paint.hh:477
ImagePool * tex_pool
Definition BKE_paint.hh:425
blender::float4 init_pivot_rot
Definition BKE_paint.hh:467
std::unique_ptr< blender::bke::pbvh::Tree > pbvh
Definition BKE_paint.hh:408
std::unique_ptr< SculptTopologyIslandCache > topology_island_cache
Definition BKE_paint.hh:513
View3D * v3d
Definition BKE_paint.hh:447
char * last_paint_canvas_key
Definition BKE_paint.hh:510
blender::float3 prev_pivot_scale
Definition BKE_paint.hh:472
blender::float3 init_pivot_scale
Definition BKE_paint.hh:468
blender::Array< int > vert_to_edge_offsets
Definition BKE_paint.hh:395
blender::GroupedSpan< int > edge_to_face_map
Definition BKE_paint.hh:392
blender::SharedCache< blender::Vector< blender::float3 > > vert_normals_deform
Definition BKE_paint.hh:421
blender::ed::sculpt_paint::expand::Cache * expand_cache
Definition BKE_paint.hh:429
bool sticky_shading_color
Definition BKE_paint.hh:505
int active_vert_index() const
Definition paint.cc:2190
char needs_flush_to_id
Definition BKE_paint.hh:497
eObjectMode mode_type
Definition BKE_paint.hh:487
struct SculptSession::@49::@50 wpaint
ActiveVert last_active_vert() const
Definition paint.cc:2185
blender::Array< int > edge_to_face_indices
Definition BKE_paint.hh:391
blender::Array< blender::float3x3, 0 > deform_imats
Definition BKE_paint.hh:415
struct SculptSession::@48 multires
blender::float3 cursor_sampled_normal
Definition BKE_paint.hh:442
SculptFakeNeighbors fake_neighbors
Definition BKE_paint.hh:459
bool building_vp_handle
Definition BKE_paint.hh:491
bool deform_modifiers_active
Definition BKE_paint.hh:411
void set_active_vert(ActiveVert vert)
Definition paint.cc:2258
blender::Array< uint8_t > vert_island_ids
Definition BKE_paint.hh:374
blender::BitVector boundary
Definition BKE_paint.hh:351
uint8_t flag
Definition wm_window.cc:138