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
10
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
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 {
109 /* Grease Pencil Vertex Paint */
117
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);
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;
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
Definition BKE_paint.hh:116
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
struct Object Object
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Brightness Control the brightness and contrast of the input color Vector Map input vector components with curves Camera Retrieve information about the camera and how it relates to the current shading point s position Clamp a value between a minimum and a maximum Vector Perform vector math operation Invert Invert a color
#define C
Definition RandGen.cpp:29
BPy_StructRNA * depsgraph
static unsigned long seed
Definition btSoftBody.h:39
uint col
pbvh::Tree & pbvh_ensure(Depsgraph &depsgraph, Object &object)
Definition paint.cc:2811
pbvh::Tree * pbvh_get(Object &object)
Definition paint.cc:2846
VecBase< float, 4 > float4
VecBase< float, 3 > float3
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
struct SculptSession::@254261273135317060024017237233241042170104042124 mode
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
struct SculptSession::@251246223064352150223005211001050162321211037052 multires
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
ActiveVert last_active_vert() const
Definition paint.cc:2185
blender::Array< int > edge_to_face_indices
Definition BKE_paint.hh:391
struct SculptSession::@254261273135317060024017237233241042170104042124::@371103373316252122004227004340313020053342354301 wpaint
blender::Array< blender::float3x3, 0 > deform_imats
Definition BKE_paint.hh:415
MultiresModifierData * modifier
Definition BKE_paint.hh:383
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