Blender V4.3
BKE_brush.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
5#pragma once
6
12
13#include "BLI_span.hh"
14
15#include "DNA_brush_enums.h"
16#include "DNA_color_types.h"
17#include "DNA_object_enums.h"
18
19enum class PaintMode : int8_t;
20struct Brush;
21struct ImBuf;
22struct ImagePool;
23struct Main;
24struct MTex;
25struct Paint;
26struct Scene;
28
29// enum eCurveMappingPreset;
30
31/* Globals for brush execution. */
32
35
36/* Data-block functions. */
37
42Brush *BKE_brush_add(Main *bmain, const char *name, eObjectMode ob_mode);
46bool BKE_brush_delete(Main *bmain, Brush *brush);
51
53
66
68
69void BKE_brush_jitter_pos(const Scene &scene,
70 const Brush &brush,
71 const float pos[2],
72 float jitterpos[2]);
74
75/* Brush curve. */
76
81
86 const CurveMapping *cumap,
87 blender::Span<float> distances,
88 float brush_radius,
93float BKE_brush_curve_strength_clamped(const Brush *br, float p, float len);
98 const CurveMapping *cumap,
99 float distance,
100 float brush_radius);
101float BKE_brush_curve_strength(const Brush *br, float p, float len);
102
103/* Sampling. */
104
112float BKE_brush_sample_tex_3d(const Scene *scene,
113 const Brush *br,
114 const MTex *mtex,
115 const float point[3],
116 float rgba[4],
117 int thread,
118 ImagePool *pool);
120 const Scene *scene, Brush *br, const float point[2], int thread, ImagePool *pool);
121
128const MTex *BKE_brush_mask_texture_get(const Brush *brush, const eObjectMode object_mode);
129
136const MTex *BKE_brush_color_texture_get(const Brush *brush, const eObjectMode object_mode);
137
141ImBuf *BKE_brush_gen_radial_control_imbuf(Brush *br, bool secondary, bool display_gradient);
142
143/* Unified strength size and color. */
144
145const float *BKE_brush_color_get(const Scene *scene, const Paint *paint, const Brush *brush);
146const float *BKE_brush_secondary_color_get(const Scene *scene,
147 const Paint *paint,
148 const Brush *brush);
149void BKE_brush_color_set(Scene *scene, const Paint *paint, Brush *brush, const float color[3]);
150
151int BKE_brush_size_get(const Scene *scene, const Brush *brush);
152void BKE_brush_size_set(Scene *scene, Brush *brush, int size);
153
154float BKE_brush_unprojected_radius_get(const Scene *scene, const Brush *brush);
156
157float BKE_brush_alpha_get(const Scene *scene, const Brush *brush);
158void BKE_brush_alpha_set(Scene *scene, Brush *brush, float alpha);
159float BKE_brush_weight_get(const Scene *scene, const Brush *brush);
160void BKE_brush_weight_set(const Scene *scene, Brush *brush, float value);
161
162int BKE_brush_input_samples_get(const Scene *scene, const Brush *brush);
163void BKE_brush_input_samples_set(const Scene *scene, Brush *brush, int value);
164
165bool BKE_brush_use_locked_size(const Scene *scene, const Brush *brush);
166bool BKE_brush_use_alpha_pressure(const Brush *brush);
167bool BKE_brush_use_size_pressure(const Brush *brush);
168
170
175 int new_brush_size,
176 int old_brush_size);
177
181void BKE_brush_scale_size(int *r_brush_size,
182 float new_unprojected_radius,
183 float old_unprojected_radius);
184
185/* Returns true if a brush requires a cube
186 * (often presented to the user as a square) tip inside a specific paint mode.
187 */
188bool BKE_brush_has_cube_tip(const Brush *brush, PaintMode paint_mode);
189
190/* debugging only */
void BKE_brush_jitter_pos(const Scene &scene, const Brush &brush, const float pos[2], float jitterpos[2])
Definition brush.cc:1224
void BKE_brush_weight_set(const Scene *scene, Brush *brush, float value)
Definition brush.cc:1167
const MTex * BKE_brush_mask_texture_get(const Brush *brush, const eObjectMode object_mode)
Definition brush.cc:762
bool BKE_brush_use_alpha_pressure(const Brush *brush)
Definition brush.cc:1096
void BKE_brush_randomize_texture_coords(UnifiedPaintSettings *ups, bool mask)
Definition brush.cc:1251
float BKE_brush_weight_get(const Scene *scene, const Brush *brush)
Definition brush.cc:1160
Brush * BKE_brush_add(Main *bmain, const char *name, eObjectMode ob_mode)
Definition brush.cc:542
float BKE_brush_unprojected_radius_get(const Scene *scene, const Brush *brush)
Definition brush.cc:1133
int BKE_brush_size_get(const Scene *scene, const Brush *brush)
Definition brush.cc:1075
float BKE_brush_curve_strength(eBrushCurvePreset preset, const CurveMapping *cumap, float distance, float brush_radius)
Definition brush.cc:1388
void BKE_brush_curve_preset(Brush *b, enum eCurveMappingPreset preset)
Definition brush.cc:744
const MTex * BKE_brush_color_texture_get(const Brush *brush, const eObjectMode object_mode)
Definition brush.cc:770
void BKE_brush_unprojected_radius_set(Scene *scene, Brush *brush, float unprojected_radius)
Definition brush.cc:1120
void BKE_brush_size_set(Scene *scene, Brush *brush, int size)
Definition brush.cc:1059
float BKE_brush_sample_tex_3d(const Scene *scene, const Brush *br, const MTex *mtex, const float point[3], float rgba[4], int thread, ImagePool *pool)
Definition brush.cc:778
const float * BKE_brush_secondary_color_get(const Scene *scene, const Paint *paint, const Brush *brush)
Definition brush.cc:1037
void BKE_brush_alpha_set(Scene *scene, Brush *brush, float alpha)
Definition brush.cc:1140
bool BKE_brush_use_size_pressure(const Brush *brush)
Definition brush.cc:1091
void BKE_brush_input_samples_set(const Scene *scene, Brush *brush, int value)
Definition brush.cc:1187
bool BKE_brush_has_cube_tip(const Brush *brush, PaintMode paint_mode)
Definition brush.cc:1514
void BKE_brush_init_curves_sculpt_settings(Brush *brush)
Definition brush.cc:605
void BKE_brush_system_init()
Definition brush.cc:470
ImBuf * BKE_brush_gen_radial_control_imbuf(Brush *br, bool secondary, bool display_gradient)
Definition brush.cc:1484
void BKE_brush_color_set(Scene *scene, const Paint *paint, Brush *brush, const float color[3])
Definition brush.cc:1047
bool BKE_brush_sculpt_has_secondary_color(const Brush *brush)
Definition brush.cc:1101
void BKE_brush_init_gpencil_settings(Brush *brush)
Definition brush.cc:563
void BKE_brush_scale_size(int *r_brush_size, float new_unprojected_radius, float old_unprojected_radius)
Definition brush.cc:1212
float BKE_brush_alpha_get(const Scene *scene, const Brush *brush)
Definition brush.cc:1153
const float * BKE_brush_color_get(const Scene *scene, const Paint *paint, const Brush *brush)
Definition brush.cc:1029
void BKE_brush_debug_print_state(Brush *br)
Definition brush.cc:638
bool BKE_brush_delete(Main *bmain, Brush *brush)
Definition brush.cc:589
bool BKE_brush_use_locked_size(const Scene *scene, const Brush *brush)
Definition brush.cc:1083
void BKE_brush_scale_unprojected_radius(float *unprojected_radius, int new_brush_size, int old_brush_size)
Definition brush.cc:1200
void BKE_brush_tag_unsaved_changes(Brush *brush)
Definition brush.cc:621
float BKE_brush_curve_strength_clamped(const Brush *br, float p, float len)
Definition brush.cc:1444
float BKE_brush_sample_masktex(const Scene *scene, Brush *br, const float point[2], int thread, ImagePool *pool)
Definition brush.cc:901
void BKE_brush_calc_curve_factors(eBrushCurvePreset preset, const CurveMapping *cumap, blender::Span< float > distances, float brush_radius, blender::MutableSpan< float > factors)
Definition brush.cc:1265
void BKE_brush_system_exit()
Definition brush.cc:476
int BKE_brush_input_samples_get(const Scene *scene, const Brush *brush)
Definition brush.cc:1180
Brush * BKE_brush_first_search(Main *bmain, eObjectMode ob_mode)
Definition brush.cc:628
PaintMode
Definition BKE_paint.hh:99
eBrushCurvePreset
eCurveMappingPreset
eObjectMode
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
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Gabor Generate Gabor noise Gradient Generate interpolated color and intensity values based on the input vector Magic Generate a psychedelic color texture Voronoi Generate Worley noise based on the distance to random points Typically used to generate textures such as or biological cells Brick Generate a procedural texture producing bricks Texture Retrieve multiple types of texture coordinates nTypically used as inputs for texture nodes Vector Convert a point
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
Definition btDbvt.cpp:52
local_group_size(16, 16) .push_constant(Type b
int len
ccl_device_inline float4 mask(const int4 mask, const float4 a)
float distance(float a, float b)
signed char int8_t
Definition stdint.h:75