Blender V5.0
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;
68enum class PaintMode : int8_t;
70struct Palette;
71struct PaletteColor;
72struct RegionView3D;
73struct Scene;
74struct Sculpt;
75struct SculptSession;
76struct SubdivCCG;
77struct Tex;
78struct ToolSettings;
80struct View3D;
81struct ViewLayer;
82struct bContext;
83struct bToolRef;
84struct tPaletteColorHSV;
85
86/* overlay invalidation */
96
97#define PAINT_OVERRIDE_MASK \
98 (PAINT_OVERLAY_OVERRIDE_SECONDARY | PAINT_OVERLAY_OVERRIDE_PRIMARY | \
99 PAINT_OVERLAY_OVERRIDE_CURSOR)
100
106#define PAINT_SYMM_AREA_DEFAULT 0
107
114
115#define PAINT_SYMM_AREAS 8
116
117void BKE_paint_invalidate_overlay_tex(Scene *scene, ViewLayer *view_layer, const Tex *tex);
118void BKE_paint_invalidate_cursor_overlay(Scene *scene, ViewLayer *view_layer, CurveMapping *curve);
123
124/* Palettes. */
125
126Palette *BKE_palette_add(Main *bmain, const char *name);
128bool BKE_palette_is_empty(const Palette *palette);
132void BKE_palette_color_remove(Palette *palette, PaletteColor *color);
133void BKE_palette_clear(Palette *palette);
134
135void BKE_palette_color_set(PaletteColor *color, const float rgb[3]);
137
138void BKE_palette_sort_hsv(tPaletteColorHSV *color_array, int totcol);
139void BKE_palette_sort_svh(tPaletteColorHSV *color_array, int totcol);
140void BKE_palette_sort_vhs(tPaletteColorHSV *color_array, int totcol);
141void BKE_palette_sort_luminance(tPaletteColorHSV *color_array, int totcol);
142bool BKE_palette_from_hash(Main *bmain, GHash *color_table, const char *name);
143
144/* Paint curves. */
145
146PaintCurve *BKE_paint_curve_add(Main *bmain, const char *name);
147
151bool BKE_paint_ensure(ToolSettings *ts, Paint **r_paint);
155void BKE_paint_init(Main *bmain, Scene *sce, PaintMode mode, bool ensure_brushes = true);
156void BKE_paint_free(Paint *paint);
162void BKE_paint_copy(const Paint *src, Paint *dst, int flag);
163
168 blender::FunctionRef<void(Paint *paint)> fn);
169
170void BKE_paint_cavity_curve_preset(Paint *paint, int preset);
171
177std::optional<int> BKE_paint_get_brush_type_from_obmode(const Brush *brush, eObjectMode ob_mode);
178std::optional<int> BKE_paint_get_brush_type_from_paintmode(const Brush *brush, PaintMode mode);
179Paint *BKE_paint_get_active(Scene *sce, ViewLayer *view_layer);
183bool BKE_paint_use_unified_color(const Paint *paint);
184
185/* Paint brush retrieval and assignment. */
186
188const Brush *BKE_paint_brush_for_read(const Paint *paint);
189Brush *BKE_paint_brush_from_essentials(Main *bmain, PaintMode paint_mode, const char *name);
190
195bool BKE_paint_can_use_brush(const Paint *paint, const Brush *brush);
196
210bool BKE_paint_brush_set(Paint *paint, Brush *brush);
217bool BKE_paint_brush_set(Main *bmain,
218 Paint *paint,
219 const AssetWeakReference &brush_asset_reference);
220bool BKE_paint_brush_set_default(Main *bmain, Paint *paint);
221bool BKE_paint_brush_set_essentials(Main *bmain, Paint *paint, const char *name);
223 AssetWeakReference &&asset_weak_reference);
225
226std::optional<AssetWeakReference> BKE_paint_brush_type_default_reference(
227 PaintMode paint_mode, std::optional<int> brush_type);
239void BKE_paint_brushes_ensure(Main *bmain, Paint *paint);
240void BKE_paint_brushes_validate(Main *bmain, Paint *paint);
241
242/* Secondary eraser brush. */
243
245const Brush *BKE_paint_eraser_brush_for_read(const Paint *paint);
246
247bool BKE_paint_eraser_brush_set(Paint *paint, Brush *brush);
248Brush *BKE_paint_eraser_brush_from_essentials(Main *bmain, PaintMode paint_mode, const char *name);
250bool BKE_paint_eraser_brush_set_essentials(Main *bmain, Paint *paint, const char *name);
251
252/* Paint palette. */
253
255void BKE_paint_palette_set(Paint *paint, Palette *palette);
257
261bool BKE_paint_select_face_test(const Object *ob);
265bool BKE_paint_select_vert_test(const Object *ob);
274bool BKE_paint_select_elem_test(const Object *ob);
279bool BKE_paint_always_hide_test(const Object *ob);
280
281/* Partial visibility. */
282
286bool paint_is_grid_face_hidden(blender::BoundedBitSpan grid_hidden, int gridsize, int x, int y);
291
292/* Paint masks. */
293
294float paint_grid_paint_mask(const GridPaintMask *gpm, uint level, uint x, uint y);
295
296void BKE_paint_face_set_overlay_color_get(int face_set, int seed, uchar r_color[4]);
297
298/* Stroke related. */
299
300/* Random values are generated on each new stroke so each stroke
301 * gets a different starting point in the perlin noise. */
303
305 const Brush &brush,
306 const float mouse_pos[2],
307 PaintMode paint_mode,
308 bool stroke_has_started);
309void paint_update_brush_rake_rotation(Paint &paint, const Brush &brush, float rotation);
310
311void BKE_paint_stroke_get_average(const Paint *paint, const Object *ob, float stroke[3]);
312
314 const blender::float3 &initial_hsv_jitter,
315 const float distance,
316 const float pressure,
317 const blender::float3 &color);
318
319/* .blend I/O */
320
321void BKE_paint_blend_write(BlendWriter *writer, Paint *paint);
322void BKE_paint_blend_read_data(BlendDataReader *reader, const Scene *scene, Paint *paint);
323
324#define SCULPT_FACE_SET_NONE 0
325
326/* Data used for displaying extra visuals while using the Pose brush */
331
333 /* Indexed by base mesh vertex index, stores if that vertex is a boundary. */
335};
336
337/* Data used for displaying extra visuals while using the Boundary brush. */
343
345 /* Max distance used to calculate neighborhood information. */
347
348 /* Indexed by vertex, stores the vertex index of its fake neighbor if available. */
350};
351
359
360using ActiveVert = std::variant<std::monostate, int, BMVert *>;
361
362/* Helper return struct for associated data. */
368
370 /* Mesh data (not copied) can come either directly from a Mesh, or from a MultiresDM */
371 struct { /* Special handling for multires meshes */
372 bool active = false;
374 int level = 0;
375 } multires = {};
376
378
379 /* Edges to adjacent faces. */
383
384 /* Vertices to adjacent edges. */
388
389 /* BMesh for dynamic topology sculpting */
390 BMesh *bm = nullptr;
391 /* Undo/redo log for dynamic topology sculpting */
392 BMLog *bm_log = nullptr;
393
394 /* Limit surface/grids. */
396
397 /* BVH tree acceleration structure */
398 std::unique_ptr<blender::bke::pbvh::Tree> pbvh;
399
400 /* Object is deformed with some modifiers. */
402 /* Coords of deformed mesh but without stroke displacement. */
404 /* Crazy-space deformation matrices. */
406
413
414 /* Pool for texture evaluations. */
415 ImagePool *tex_pool = nullptr;
416
420
421 /* Cursor data and active vertex for tools */
422 std::optional<int> active_face_index;
423 std::optional<int> active_grid_index;
424
425 /* When active, the cursor draws with faded colors, indicating that there is an action
426 * enabled.
427 */
428 bool draw_faded_cursor = false;
429 float cursor_radius = 0.0f;
432 std::optional<blender::float3> cursor_sampled_normal;
434
435 /* TODO(jbakker): Replace rv3d and v3d with ViewContext */
436 RegionView3D *rv3d = nullptr;
437 View3D *v3d = nullptr;
438
439 /* Dynamic mesh preview */
441
442 /* Pose Brush Preview */
443 std::unique_ptr<SculptPoseIKChainPreview> pose_ik_chain_preview;
444
445 /* Boundary Brush Preview */
446 std::unique_ptr<SculptBoundaryPreview> boundary_preview;
447
448 /* "Persistent" positions and normals for multires. (For mesh the
449 * ".sculpt_persistent_co" attribute is used, etc.). */
450 struct {
454
455 /* The stored state for the SubdivCCG at the time of attribute population, used to roughly
456 * determine if the topology when accessed at a current point in time is equivalent to when
457 * it was originally stored. */
458 int grids_num = -1;
459 int grid_size = -1;
461
464
465 /* Transform operator */
469
473
477
478 struct {
479 struct {
480 /* Keep track of how much each vertex has been painted (non-airbrush only). */
482
483 /* Needed to continuously re-apply over the same weights (#BRUSH_ACCUMULATE disabled).
484 * Lazy initialize as needed (flag is set to 1 to tag it as uninitialized). */
487
488 /* TODO: identify sculpt-only fields */
489 // struct { ... } sculpt;
490 } mode = {};
492
493 /* This flag prevents bke::pbvh::Tree from being freed when creating the vp_handle for
494 * texture paint. */
495 bool building_vp_handle = false;
496
501 bool needs_flush_to_id = false;
502
510
514 char *last_paint_canvas_key = nullptr;
516
517 std::unique_ptr<SculptTopologyIslandCache> topology_island_cache;
518
519 private:
520 /* In general, this value is expected to be valid (non-empty) as long as the cursor is over the
521 * mesh. Changing the underlying mesh type (e.g. enabling dyntopo, changing multires levels)
522 * should invalidate this value.
523 */
524 ActiveVert active_vert_ = {};
525
526 /* This value should always exist except when the cursor has never been over the mesh, or when
527 * the underlying mesh type has changed and the last `active_vert_` value no longer corresponds
528 * to a value that can be correctly interpreted */
529 ActiveVert last_active_vert_ = {};
530
531 public:
534
535 ActiveVert active_vert() const;
536
538
548 int active_vert_index() const;
549 int last_active_vert_index() const;
550
560 blender::float3 active_vert_position(const Depsgraph &depsgraph, const Object &object) const;
561
562 void set_active_vert(ActiveVert vert);
563 void clear_active_elements(bool persist_last_active);
564
572 std::optional<PersistentMultiresData> persistent_multires_data();
573};
574
581
587
591void BKE_sculpt_update_object_for_edit(Depsgraph *depsgraph, Object *ob_orig, bool is_paint_tool);
593void BKE_sculpt_update_object_after_eval(Depsgraph *depsgraph, Object *ob_eval);
594
600
610 Main *bmain,
611 Object *ob,
614
615void BKE_sculpt_sync_face_visibility_to_grids(const Mesh &mesh, SubdivCCG &subdiv_ccg);
616
621bool BKE_sculptsession_use_pbvh_draw(const Object *ob, const RegionView3D *rv3d);
622
624
625pbvh::Tree &pbvh_ensure(Depsgraph &depsgraph, Object &object);
626
633pbvh::Tree *pbvh_get(Object &object);
634const pbvh::Tree *pbvh_get(const Object &object);
635
636} // namespace blender::bke::object
637bool BKE_object_sculpt_use_dyntopo(const Object *object);
638
639/* paint_canvas.cc */
640
646
648 Object *ob,
649 Image **r_image,
650 ImageUser **r_image_user);
void BKE_sculpt_update_object_after_eval(Depsgraph *depsgraph, Object *ob_eval)
Definition paint.cc:2764
PaletteColor * BKE_palette_color_add(Palette *palette)
Definition paint.cc:1433
bool BKE_paint_eraser_brush_set_default(Main *bmain, Paint *paint)
Definition paint.cc:1221
bool BKE_paint_select_grease_pencil_test(const Object *ob)
Definition paint.cc:1654
void BKE_paint_cavity_curve_preset(Paint *paint, int preset)
Definition paint.cc:1677
void BKE_paint_stroke_get_average(const Paint *paint, const Object *ob, float stroke[3])
Definition paint.cc:1952
Brush * BKE_paint_eraser_brush(Paint *paint)
Definition paint.cc:1172
void BKE_paint_invalidate_cursor_overlay(Scene *scene, ViewLayer *view_layer, CurveMapping *curve)
Definition paint.cc:279
void BKE_palette_sort_hsv(tPaletteColorHSV *color_array, int totcol)
Definition paint.cc:1477
float paint_grid_paint_mask(const GridPaintMask *gpm, uint level, uint x, uint y)
Definition paint.cc:2155
bool paint_calculate_rake_rotation(Paint &paint, const Brush &brush, const float mouse_pos[2], PaintMode paint_mode, bool stroke_has_started)
Definition paint.cc:2193
bool BKE_paint_brush_set_essentials(Main *bmain, Paint *paint, const char *name)
Definition paint.cc:1105
std::variant< std::monostate, int, BMVert * > ActiveVert
Definition BKE_paint.hh:360
void BKE_sculpt_sync_face_visibility_to_grids(const Mesh &mesh, SubdivCCG &subdiv_ccg)
Definition paint.cc:2953
void BKE_paint_invalidate_overlay_tex(Scene *scene, ViewLayer *view_layer, const Tex *tex)
Definition paint.cc:259
void BKE_paint_set_overlay_override(eOverlayFlags flag)
Definition paint.cc:303
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:1964
void paint_update_brush_rake_rotation(Paint &paint, const Brush &brush, float rotation)
Definition paint.cc:2169
std::optional< AssetWeakReference > BKE_paint_brush_type_default_reference(PaintMode paint_mode, std::optional< int > brush_type)
Definition paint.cc:1033
bool BKE_paint_brush_set(Paint *paint, Brush *brush)
Definition paint.cc:710
bool BKE_paint_always_hide_test(const Object *ob)
Definition paint.cc:1671
PaintCurve * BKE_paint_curve_add(Main *bmain, const char *name)
Definition paint.cc:1369
void BKE_sculptsession_bm_to_me(Object *ob)
Definition paint.cc:2275
bool BKE_sculptsession_use_pbvh_draw(const Object *ob, const RegionView3D *rv3d)
Definition paint.cc:3068
void BKE_paint_brushes_ensure(Main *bmain, Paint *paint)
Definition paint.cc:1823
void BKE_sculptsession_free(Object *ob)
Definition paint.cc:2332
void BKE_palette_sort_svh(tPaletteColorHSV *color_array, int totcol)
Definition paint.cc:1514
void BKE_paint_settings_foreach_mode(ToolSettings *ts, blender::FunctionRef< void(Paint *paint)> fn)
Definition paint.cc:1923
ePaintSymmetryAreas
Definition BKE_paint.hh:108
@ PAINT_SYMM_AREA_Z
Definition BKE_paint.hh:111
@ PAINT_SYMM_AREA_X
Definition BKE_paint.hh:109
@ PAINT_SYMM_AREA_Y
Definition BKE_paint.hh:110
void BKE_sculptsession_free_deformMats(SculptSession *ss)
Definition paint.cc:2239
bool BKE_paint_select_elem_test(const Object *ob)
Definition paint.cc:1665
Paint * BKE_paint_get_active(Scene *sce, ViewLayer *view_layer)
Definition paint.cc:437
ePaintOverlayControlFlags BKE_paint_get_overlay_flags()
Definition paint.cc:298
bool BKE_paint_select_vert_test(const Object *ob)
Definition paint.cc:1647
eObjectMode BKE_paint_object_mode_from_paintmode(PaintMode mode)
Definition paint.cc:1694
void BKE_palette_color_remove(Palette *palette, PaletteColor *color)
Definition paint.cc:1394
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:3092
void BKE_sculptsession_free_vwpaint_data(SculptSession *ss)
Definition paint.cc:2247
void BKE_paint_previous_asset_reference_set(Paint *paint, AssetWeakReference &&asset_weak_reference)
Definition paint.cc:1111
void BKE_palette_sort_vhs(tPaletteColorHSV *color_array, int totcol)
Definition paint.cc:1551
const Brush * BKE_paint_eraser_brush_for_read(const Paint *paint)
Definition paint.cc:1177
void BKE_sculpt_update_object_before_eval(Object *ob_eval)
Definition paint.cc:2705
ePaintOverlayControlFlags
Definition BKE_paint.hh:87
@ PAINT_OVERLAY_INVALID_CURVE
Definition BKE_paint.hh:90
@ PAINT_OVERLAY_INVALID_TEXTURE_SECONDARY
Definition BKE_paint.hh:89
@ PAINT_OVERLAY_OVERRIDE_CURSOR
Definition BKE_paint.hh:91
@ PAINT_OVERLAY_INVALID_TEXTURE_PRIMARY
Definition BKE_paint.hh:88
@ PAINT_OVERLAY_OVERRIDE_SECONDARY
Definition BKE_paint.hh:93
@ PAINT_OVERLAY_OVERRIDE_PRIMARY
Definition BKE_paint.hh:92
void BKE_paint_reset_overlay_invalid(ePaintOverlayControlFlags flag)
Definition paint.cc:321
void BKE_paint_free(Paint *paint)
Definition paint.cc:1855
CurveMapping * BKE_sculpt_default_cavity_curve()
Definition scene.cc:131
const Brush * BKE_paint_brush_for_read(const Paint *paint)
Definition paint.cc:650
void BKE_paint_copy(const Paint *src, Paint *dst, int flag)
Definition paint.cc:1877
bool BKE_paint_eraser_brush_set(Paint *paint, Brush *brush)
Definition paint.cc:1182
CurveMapping * BKE_paint_default_curve()
Definition scene.cc:146
void BKE_paint_init(Main *bmain, Scene *sce, PaintMode mode, bool ensure_brushes=true)
Definition paint.cc:1840
Paint * BKE_paint_get_active_from_paintmode(Scene *sce, PaintMode mode)
Definition paint.cc:374
const EnumPropertyItem * BKE_paint_get_tool_enum_from_paintmode(PaintMode mode)
Definition paint.cc:409
void BKE_paint_previous_asset_reference_clear(Paint *paint)
Definition paint.cc:1120
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)
Definition paint.cc:601
MultiresModifierData * BKE_sculpt_multires_active(const Scene *scene, Object *ob)
Definition paint.cc:2513
std::optional< int > BKE_paint_get_brush_type_from_obmode(const Brush *brush, eObjectMode ob_mode)
Definition paint.cc:1312
void BKE_sculpt_update_object_for_edit(Depsgraph *depsgraph, Object *ob_orig, bool is_paint_tool)
Definition paint.cc:2797
void BKE_paint_curve_clamp_endpoint_add_index(PaintCurve *pc, int add_index)
Definition paint.cc:1389
void BKE_sculpt_color_layer_create_if_needed(Object *object)
Definition paint.cc:2773
void BKE_palette_clear(Palette *palette)
Definition paint.cc:1410
Paint * BKE_paint_get_active_from_context(const bContext *C)
Definition paint.cc:476
bool paint_is_bmesh_face_hidden(const BMFace *f)
Definition paint.cc:2140
void BKE_sculptsession_bm_to_me_for_render(Object *object)
Definition paint.cc:2310
bool BKE_paint_ensure(ToolSettings *ts, Paint **r_paint)
Definition paint.cc:1738
Brush * BKE_paint_brush_from_essentials(Main *bmain, PaintMode paint_mode, const char *name)
Definition paint.cc:791
bool BKE_paint_brush_set_default(Main *bmain, Paint *paint)
Definition paint.cc:1099
Palette * BKE_palette_add(Main *bmain, const char *name)
Definition paint.cc:1427
bool BKE_palette_from_hash(Main *bmain, GHash *color_table, const char *name)
Definition paint.cc:1580
bool BKE_paint_eraser_brush_set_essentials(Main *bmain, Paint *paint, const char *name)
Definition paint.cc:1227
bool BKE_paint_can_use_brush(const Paint *paint, const Brush *brush)
Definition paint.cc:655
uint BKE_paint_get_brush_type_offset_from_paintmode(PaintMode mode)
Definition paint.cc:1284
void BKE_palette_sort_luminance(tPaletteColorHSV *color_array, int totcol)
Definition paint.cc:1574
void BKE_sculptsession_free_pbvh(Object &object)
Definition paint.cc:2286
void BKE_paint_blend_read_data(BlendDataReader *reader, const Scene *scene, Paint *paint)
Definition paint.cc:2064
int BKE_paint_canvas_uvmap_layer_index_get(const PaintModeSettings *settings, Object *ob)
Brush * BKE_paint_brush(Paint *paint)
Definition paint.cc:645
void BKE_sculpt_toolsettings_data_ensure(Main *bmain, Scene *scene)
Definition paint.cc:2884
void BKE_palette_color_set(PaletteColor *color, const float rgb[3])
Definition paint.cc:1416
Palette * BKE_paint_palette(Paint *paint)
Definition paint.cc:1375
void BKE_paint_palette_set(Paint *paint, Palette *palette)
Definition paint.cc:1380
Brush * BKE_paint_eraser_brush_from_essentials(Main *bmain, PaintMode paint_mode, const char *name)
Definition paint.cc:1207
bool BKE_palette_is_empty(const Palette *palette)
Definition paint.cc:1440
PaintMode BKE_paintmode_get_active_from_context(const bContext *C)
Definition paint.cc:505
void BKE_sculpt_mask_layers_ensure(Depsgraph *depsgraph, Main *bmain, Object *ob, MultiresModifierData *mmd)
Definition paint.cc:2806
bool paint_is_grid_face_hidden(blender::BoundedBitSpan grid_hidden, int gridsize, int x, int y)
Definition paint.cc:2129
bool BKE_object_sculpt_use_dyntopo(const Object *object)
Definition paint.cc:3063
void BKE_paint_brushes_set_default_references(ToolSettings *ts)
Definition paint.cc:1070
void BKE_palette_color_sync_legacy(PaletteColor *color)
Definition paint.cc:1422
char * BKE_paint_canvas_key_get(PaintModeSettings *settings, Object *ob)
bool BKE_paint_select_face_test(const Object *ob)
Definition paint.cc:1640
PaintMode BKE_paintmode_get_from_tool(const bToolRef *tref)
Definition paint.cc:561
std::optional< int > BKE_paint_get_brush_type_from_paintmode(const Brush *brush, PaintMode mode)
Definition paint.cc:1340
void BKE_paint_brushes_validate(Main *bmain, Paint *paint)
Definition paint.cc:1125
void BKE_paint_invalidate_overlay_all()
Definition paint.cc:292
void BKE_paint_blend_write(BlendWriter *writer, Paint *paint)
Definition paint.cc:2020
void BKE_sculpt_cavity_curves_ensure(Sculpt *sd)
Definition paint.cc:2873
bool BKE_paint_ensure_from_paintmode(Scene *sce, PaintMode mode)
Definition paint.cc:326
PaintMode
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
float distance(VecOp< float, D >, VecOp< float, D >) RET
pbvh::Tree & pbvh_ensure(Depsgraph &depsgraph, Object &object)
Definition paint.cc:3017
pbvh::Tree * pbvh_get(Object &object)
Definition paint.cc:3052
VecBase< float, 4 > float4
VecBase< float, 3 > float3
const char * name
blender::MutableSpan< float > displacements
Definition BKE_paint.hh:366
blender::Span< blender::float3 > normals
Definition BKE_paint.hh:365
blender::Span< blender::float3 > positions
Definition BKE_paint.hh:364
blender::Vector< std::pair< blender::float3, blender::float3 > > edges
Definition BKE_paint.hh:339
blender::float3 pivot_position
Definition BKE_paint.hh:340
blender::float3 initial_vert_position
Definition BKE_paint.hh:341
blender::Array< int > fake_neighbor_index
Definition BKE_paint.hh:349
blender::Array< blender::float3 > initial_orig_coords
Definition BKE_paint.hh:328
blender::Array< blender::float3 > initial_head_coords
Definition BKE_paint.hh:329
bool needs_flush_to_id
Definition BKE_paint.hh:501
blender::float4 prev_pivot_rot
Definition BKE_paint.hh:475
blender::float3 last_normal
Definition BKE_paint.hh:515
blender::ed::sculpt_paint::StrokeCache * cache
Definition BKE_paint.hh:417
BMLog * bm_log
Definition BKE_paint.hh:392
struct SculptSession::@345375365225333342236070250113232025260070150165 persistent
blender::Array< blender::float3 > sculpt_persistent_co
Definition BKE_paint.hh:451
std::optional< int > active_grid_index
Definition BKE_paint.hh:423
RegionView3D * rv3d
Definition BKE_paint.hh:436
blender::ed::sculpt_paint::filter::Cache * filter_cache
Definition BKE_paint.hh:418
std::optional< int > active_face_index
Definition BKE_paint.hh:422
KeyBlock * shapekey_active
Definition BKE_paint.hh:377
blender::float3 cursor_normal
Definition BKE_paint.hh:431
blender::float3 prev_pivot_pos
Definition BKE_paint.hh:474
blender::Array< int > vert_to_edge_indices
Definition BKE_paint.hh:386
blender::float4 pivot_rot
Definition BKE_paint.hh:467
SculptVertexInfo vertex_info
Definition BKE_paint.hh:462
blender::SharedCache< blender::Vector< blender::float3 > > face_normals_deform
Definition BKE_paint.hh:412
blender::GroupedSpan< int > vert_to_edge_map
Definition BKE_paint.hh:387
SubdivCCG * subdiv_ccg
Definition BKE_paint.hh:395
std::unique_ptr< SculptBoundaryPreview > boundary_preview
Definition BKE_paint.hh:446
blender::float3 cursor_view_normal
Definition BKE_paint.hh:433
blender::Array< MDeformVert > dvert_prev
Definition BKE_paint.hh:485
bool draw_faded_cursor
Definition BKE_paint.hh:428
blender::Array< blender::float3 > sculpt_persistent_no
Definition BKE_paint.hh:452
float cursor_radius
Definition BKE_paint.hh:429
blender::Array< int > preview_verts
Definition BKE_paint.hh:440
ActiveVert active_vert() const
Definition paint.cc:2367
blender::Array< int > edge_to_face_offsets
Definition BKE_paint.hh:380
blender::Array< blender::float3, 0 > deform_cos
Definition BKE_paint.hh:403
blender::float3 cursor_location
Definition BKE_paint.hh:430
blender::float3 active_vert_position(const Depsgraph &depsgraph, const Object &object) const
Definition paint.cc:2403
blender::float3 pivot_pos
Definition BKE_paint.hh:466
int last_active_vert_index() const
Definition paint.cc:2390
std::unique_ptr< SculptPoseIKChainPreview > pose_ik_chain_preview
Definition BKE_paint.hh:443
blender::float3 pivot_scale
Definition BKE_paint.hh:468
blender::float3 init_pivot_pos
Definition BKE_paint.hh:470
float * alpha_weight
Definition BKE_paint.hh:481
ImagePool * tex_pool
Definition BKE_paint.hh:415
struct SculptSession::@300305335361021334214041350300054316061376210174 multires
blender::float4 init_pivot_rot
Definition BKE_paint.hh:471
std::unique_ptr< blender::bke::pbvh::Tree > pbvh
Definition BKE_paint.hh:398
std::unique_ptr< SculptTopologyIslandCache > topology_island_cache
Definition BKE_paint.hh:517
View3D * v3d
Definition BKE_paint.hh:437
std::optional< blender::float3 > cursor_sampled_normal
Definition BKE_paint.hh:432
blender::Array< float > sculpt_persistent_disp
Definition BKE_paint.hh:453
char * last_paint_canvas_key
Definition BKE_paint.hh:514
blender::float3 prev_pivot_scale
Definition BKE_paint.hh:476
blender::float3 init_pivot_scale
Definition BKE_paint.hh:472
blender::Array< int > vert_to_edge_offsets
Definition BKE_paint.hh:385
blender::GroupedSpan< int > edge_to_face_map
Definition BKE_paint.hh:382
blender::SharedCache< blender::Vector< blender::float3 > > vert_normals_deform
Definition BKE_paint.hh:411
struct SculptSession::@362240011116215270333121305340144315201335267314::@377352350121204263020240366015362210376116055117 wpaint
blender::ed::sculpt_paint::expand::Cache * expand_cache
Definition BKE_paint.hh:419
bool sticky_shading_color
Definition BKE_paint.hh:509
int active_vert_index() const
Definition paint.cc:2377
eObjectMode mode_type
Definition BKE_paint.hh:491
ActiveVert last_active_vert() const
Definition paint.cc:2372
std::optional< PersistentMultiresData > persistent_multires_data()
Definition paint.cc:2442
blender::Array< int > edge_to_face_indices
Definition BKE_paint.hh:381
blender::Array< blender::float3x3, 0 > deform_imats
Definition BKE_paint.hh:405
MultiresModifierData * modifier
Definition BKE_paint.hh:373
SculptFakeNeighbors fake_neighbors
Definition BKE_paint.hh:463
struct SculptSession::@362240011116215270333121305340144315201335267314 mode
bool building_vp_handle
Definition BKE_paint.hh:495
bool deform_modifiers_active
Definition BKE_paint.hh:401
void set_active_vert(ActiveVert vert)
Definition paint.cc:2437
void clear_active_elements(bool persist_last_active)
Definition paint.cc:2422
blender::Array< uint8_t > vert_island_ids
Definition BKE_paint.hh:357
blender::BitVector boundary
Definition BKE_paint.hh:334
uint8_t flag
Definition wm_window.cc:145