75 const Brush *brush_src = (
const Brush *)id_src;
147 bool is_local =
false, is_lib =
false;
165 if (lib_local || is_local) {
176 brush_new->
id.
us = 0;
394 .struct_size =
sizeof(
Brush),
396 .name_plural =
"brushes",
405 .foreach_cache =
NULL,
415 .lib_override_apply_post =
NULL,
440 #define FROM_DEFAULT(member) memcpy(&brush->member, &brush_def->member, sizeof(brush->member))
441 #define FROM_DEFAULT_PTR(member) memcpy(brush->member, brush_def->member, sizeof(brush->member))
483 #undef FROM_DEFAULT_PTR
610 cuma->
curve[1].
x = 0.75115f;
618 cuma->
curve[1].
x = 0.63448f;
619 cuma->
curve[1].
y = 0.375f;
671 #define SMOOTH_STROKE_RADIUS 40
672 #define SMOOTH_STROKE_FACTOR 0.9f
673 #define ACTIVE_SMOOTH 0.35f
679 PRESET_MATERIAL_NONE = 0,
680 PRESET_MATERIAL_DOT_STROKE,
681 } material_preset = PRESET_MATERIAL_NONE;
687 brush->
rgb[0] = 0.498f;
688 brush->
rgb[1] = 1.0f;
689 brush->
rgb[2] = 0.498f;
710 brush->
size = 300.0f;
728 material_preset = PRESET_MATERIAL_DOT_STROKE;
806 brush->
size = 150.0f;
843 brush->
size = 150.0f;
944 material_preset = PRESET_MATERIAL_DOT_STROKE;
1003 brush->
size = 30.0f;
1017 brush->
size = 30.0f;
1029 brush->
size = 30.0f;
1038 brush->
size = 30.0f;
1050 brush->
size = 25.0f;
1063 brush->
size = 25.0f;
1076 brush->
size = 25.0f;
1089 brush->
size = 25.0f;
1102 brush->
size = 25.0f;
1115 brush->
size = 25.0f;
1128 brush->
size = 25.0f;
1142 brush->
size = 25.0f;
1155 brush->
size = 25.0f;
1169 brush->
size = 25.0f;
1181 brush->
size = 25.0f;
1194 brush->
size = 50.0f;
1207 brush->
size = 50.0f;
1220 brush->
size = 25.0f;
1234 brush->
size = 25.0f;
1246 brush->
size = 25.0f;
1259 switch (material_preset) {
1260 case PRESET_MATERIAL_NONE:
1262 case PRESET_MATERIAL_DOT_STROKE: {
1266 const char *ma_id =
"Dots Stroke";
1295 if (brush ==
NULL) {
1314 Brush *brush, *deft_draw;
1317 if ((
reset) || (r_new)) {
1323 if ((
reset) || (r_new)) {
1329 if ((
reset) || (r_new)) {
1335 if ((
reset) || (r_new)) {
1341 if ((
reset) || (r_new)) {
1347 if ((
reset) || (r_new)) {
1353 if ((
reset) || (r_new)) {
1359 if ((
reset) || (r_new)) {
1366 if ((
reset) || (r_new)) {
1372 if ((
reset) || (r_new)) {
1378 if ((
reset) || (r_new)) {
1384 if ((
reset) || (r_new)) {
1390 if ((
reset) || (r_new)) {
1396 if ((
reset) || (r_new)) {
1405 if (brush_prev !=
NULL) {
1418 Brush *brush, *deft_vertex;
1421 if ((
reset) || (r_new)) {
1424 deft_vertex = brush;
1428 if ((
reset) || (r_new)) {
1433 if ((
reset) || (r_new)) {
1438 if ((
reset) || (r_new)) {
1443 if ((
reset) || (r_new)) {
1452 if (brush_prev !=
NULL) {
1465 Brush *brush, *deft_sculpt;
1469 if ((
reset) || (r_new)) {
1472 deft_sculpt = brush;
1476 if ((
reset) || (r_new)) {
1482 if ((
reset) || (r_new)) {
1488 if ((
reset) || (r_new)) {
1494 if ((
reset) || (r_new)) {
1500 if ((
reset) || (r_new)) {
1506 if ((
reset) || (r_new)) {
1512 if ((
reset) || (r_new)) {
1518 if ((
reset) || (r_new)) {
1527 if (brush_prev !=
NULL) {
1540 Brush *brush, *deft_weight;
1543 if ((
reset) || (r_new)) {
1546 deft_weight = brush;
1553 if (brush_prev !=
NULL) {
1577 #define BR_TEST(field, t) \
1578 if (br->field != def.field) { \
1579 printf("br->" #field " = %" #t ";\n", br->field); \
1583 #define BR_TEST_FLAG(_f) \
1584 if ((br->flag & _f) && !(def.flag & _f)) { \
1585 printf("br->flag |= " #_f ";\n"); \
1587 else if (!(br->flag & _f) && (def.flag & _f)) { \
1588 printf("br->flag &= ~" #_f ";\n"); \
1592 #define BR_TEST_FLAG_OVERLAY(_f) \
1593 if ((br->overlay_flags & _f) && !(def.overlay_flags & _f)) { \
1594 printf("br->overlay_flags |= " #_f ";\n"); \
1596 else if (!(br->overlay_flags & _f) && (def.overlay_flags & _f)) { \
1597 printf("br->overlay_flags &= ~" #_f ";\n"); \
1961 const float point[3],
1968 float intensity = 1.0;
1969 bool hasrgb =
false;
1981 const float point_2d[2] = {point[0], point[1]};
1988 if (rotation > 0.001f || rotation < -0.001f) {
1990 const float flen =
sqrtf(
x *
x +
y *
y);
2011 const float point_2d[2] = {point[0], point[1]};
2012 float x = 0.0f,
y = 0.0f;
2013 float invradius = 1.0f;
2051 if (rotation > 0.001f || rotation < -0.001f) {
2053 const float flen =
sqrtf(
x *
x +
y *
y);
2069 rgba[0] = intensity;
2070 rgba[1] = intensity;
2071 rgba[2] = intensity;
2087 float rgba[4], intensity;
2094 const float point_2d[2] = {point[0], point[1]};
2101 if (rotation > 0.001f || rotation < -0.001f) {
2103 const float flen =
sqrtf(
x *
x +
y *
y);
2124 const float point_2d[2] = {point[0], point[1]};
2125 float x = 0.0f,
y = 0.0f;
2126 float invradius = 1.0f;
2164 if (rotation > 0.001f || rotation < -0.001f) {
2166 const float flen =
sqrtf(
x *
x +
y *
y);
2179 CLAMP(intensity, 0.0f, 1.0f);
2356 float scale = new_brush_size;
2358 if (old_brush_size != 0) {
2359 scale /= (
float)old_brush_size;
2361 (*unprojected_radius) *= scale;
2366 float new_unprojected_radius,
2367 float old_unprojected_radius)
2369 float scale = new_unprojected_radius;
2371 if (old_unprojected_radius != 0) {
2372 scale /= new_unprojected_radius;
2374 (*r_brush_size) = (int)((
float)(*r_brush_size) * scale);
2397 jitterpos[0] =
pos[0] + 2 * rand_pos[0] * diameter * spread;
2398 jitterpos[1] =
pos[1] + 2 * rand_pos[1] * diameter * spread;
2418 float strength = 1.0f;
2435 strength = 3.0f * p * p - 2.0f * p * p * p;
2438 strength =
pow3f(p) * (p * (p * 6.0f - 15.0f) + 10.0f);
2441 strength =
sqrtf(p);
2450 strength =
sqrtf(2 * p - p * p);
2453 strength = p * p * p * p;
2456 strength = p * (2.0f - p);
2468 CLAMP(strength, 0.0f, 1.0f);
2476 unsigned int *texcache =
NULL;
2479 float rgba_dummy[4];
2481 int side = half_side * 2;
2484 float x,
y, step = 2.0 / side, co[3];
2486 texcache =
MEM_callocN(
sizeof(
int) * side * side,
"Brush texture cache");
2489 for (
y = -1.0, iy = 0; iy < side; iy++,
y += step) {
2490 for (
x = -1.0, ix = 0; ix < side; ix++,
x += step) {
2510 unsigned int *texcache;
2512 int half = side / 2;
2518 im->
x = im->
y = side;
2520 if (display_gradient || texcache) {
2521 for (i = 0; i < side; i++) {
2522 for (j = 0; j < side; j++) {
2531 for (i = 0; i < side; i++) {
2532 for (j = 0; j < side; j++) {
2533 const int col = texcache[i * side + j];
2535 ((
char *)&
col)[2]) /
typedef float(TangentPoint)[2]
void BKE_gpencil_brush_material_set(struct Brush *brush, struct Material *material)
void BKE_previewimg_free(struct PreviewImage **prv)
void BKE_previewimg_id_copy(struct ID *new_id, const struct ID *old_id)
@ IDTYPE_FLAGS_NO_ANIMDATA
struct ID * BKE_id_copy(struct Main *bmain, const struct ID *id)
void BKE_lib_id_expand_local(struct Main *bmain, struct ID *id)
void id_us_min(struct ID *id)
void id_fake_user_set(struct ID *id)
bool BKE_lib_id_make_local(struct Main *bmain, struct ID *id, const bool test, const int flags)
@ LIB_ID_MAKELOCAL_FULL_LIBRARY
void BKE_id_blend_write(struct BlendWriter *writer, struct ID *id)
void id_us_plus_no_lib(struct ID *id)
bool void BKE_lib_id_clear_library_data(struct Main *bmain, struct ID *id)
void BKE_id_delete(struct Main *bmain, void *idv) ATTR_NONNULL()
void * BKE_id_new(struct Main *bmain, const short type, const char *name)
void BKE_lib_id_swap(struct Main *bmain, struct ID *id_a, struct ID *id_b)
#define BKE_LIB_FOREACHID_PROCESS(_data, _id_super, _cb_flag)
void BKE_library_foreach_ID_link(struct Main *bmain, struct ID *id, LibraryIDLinkCallback callback, void *user_data, int flag)
bool BKE_library_ID_is_indirectly_used(struct Main *bmain, void *idv)
void BKE_library_ID_test_usages(struct Main *bmain, void *idv, bool *is_used_local, bool *is_used_linked)
void void BKE_libblock_remap(struct Main *bmain, void *old_idv, void *new_idv, const short remap_flags) ATTR_NONNULL(1
@ ID_REMAP_SKIP_INDIRECT_USAGE
General operations, lookup, etc. for materials.
struct Material * BKE_gpencil_material_add(struct Main *bmain, const char *name)
void BKE_paint_brush_set(struct Paint *paint, struct Brush *br)
void BKE_texture_mtex_foreach_id(struct LibraryForeachIDData *data, struct MTex *mtex)
void * BLI_findstring(const struct ListBase *listbase, const char *id, const int offset) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
MINLINE float pow2f(float x)
MINLINE float square_f(float a)
MINLINE float pow3f(float x)
MINLINE float len_squared_v2(const float v[2]) ATTR_WARN_UNUSED_RESULT
MINLINE void copy_v4_uchar(unsigned char r[4], const unsigned char a)
MINLINE void copy_v3_v3(float r[3], const float a[3])
MINLINE void zero_v4(float r[4])
MINLINE void zero_v3(float r[3])
MINLINE void copy_v2_fl(float r[2], float f)
void BLI_rng_srandom(struct RNG *rng, unsigned int seed) ATTR_NONNULL(1)
void BLI_rng_free(struct RNG *rng) ATTR_NONNULL(1)
struct RNG * BLI_rng_new(unsigned int seed)
float BLI_rng_get_float(struct RNG *rng) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
#define MEMCMP_STRUCT_AFTER_IS_ZERO(struct_var, member)
#define MEMCPY_STRUCT_AFTER(struct_dst, struct_src, member)
#define BLO_read_data_address(reader, ptr_p)
ID * BLO_read_get_new_id_address(BlendLibReader *reader, struct Library *lib, struct ID *id)
#define BLO_write_id_struct(writer, struct_name, id_address, id)
#define BLO_write_struct(writer, struct_name, data_ptr)
#define BLO_read_id_address(reader, lib, id_ptr_p)
#define BLO_expand(expander, id)
bool BLO_write_is_undo(BlendWriter *writer)
#define BLT_I18NCONTEXT_ID_BRUSH
#define ID_EXTRA_USERS(id)
#define ID_IS_LINKED(_id)
#define ID_REAL_USERS(id)
#define ID_NEW_SET(_id, _idn)
@ GP_SCULPT_FLAGMODE_APPLY_POSITION
@ GP_SCULPT_FLAGMODE_APPLY_THICKNESS
@ GP_BRUSH_DEFAULT_ERASER
@ GP_BRUSH_USE_STRENGTH_PRESSURE
@ GP_BRUSH_GROUP_SETTINGS
@ GP_BRUSH_MATERIAL_PINNED
@ GP_BRUSH_FILL_SHOW_EXTENDLINES
@ GP_BRUSH_USE_JITTER_PRESSURE
@ BRUSH_INVERSE_SMOOTH_PRESSURE
@ BRUSH_INVERT_TO_SCRAPE_FILL
@ BRUSH_CLOTH_DEFORM_DRAG
@ SCULPT_TOOL_DRAW_FACE_SETS
@ SCULPT_TOOL_DISPLACEMENT_ERASER
@ SCULPT_TOOL_SLIDE_RELAX
@ SCULPT_TOOL_DISPLACEMENT_SMEAR
@ SCULPT_TOOL_MULTIPLANE_SCRAPE
@ SCULPT_TOOL_ELASTIC_DEFORM
@ SCULPT_TOOL_CLAY_STRIPS
@ BRUSH_MASK_PRESSURE_RAMP
@ BRUSH_MASK_PRESSURE_CUTOFF
@ BRUSH_ELASTIC_DEFORM_GRAB_TRISCALE
@ GPSCULPT_TOOL_THICKNESS
@ GPSCULPT_TOOL_RANDOMIZE
@ BRUSH_OVERLAY_SECONDARY_OVERRIDE_ON_STROKE
@ BRUSH_OVERLAY_PRIMARY_OVERRIDE_ON_STROKE
@ BRUSH_OVERLAY_SECONDARY
@ BRUSH_OVERLAY_CURSOR_OVERRIDE_ON_STROKE
@ GP_BRUSH_ICON_ERASE_SOFT
@ GP_BRUSH_ICON_GPBRUSH_RANDOMIZE
@ GP_BRUSH_ICON_VERTEX_BLUR
@ GP_BRUSH_ICON_GPBRUSH_GRAB
@ GP_BRUSH_ICON_GPBRUSH_STRENGTH
@ GP_BRUSH_ICON_GPBRUSH_TWIST
@ GP_BRUSH_ICON_VERTEX_REPLACE
@ GP_BRUSH_ICON_VERTEX_DRAW
@ GP_BRUSH_ICON_GPBRUSH_WEIGHT
@ GP_BRUSH_ICON_GPBRUSH_PINCH
@ GP_BRUSH_ICON_VERTEX_SMEAR
@ GP_BRUSH_ICON_GPBRUSH_THICKNESS
@ GP_BRUSH_ICON_GPBRUSH_CLONE
@ GP_BRUSH_ICON_ERASE_STROKE
@ GP_BRUSH_ICON_ERASE_HARD
@ GP_BRUSH_ICON_GPBRUSH_SMOOTH
@ GP_BRUSH_ICON_GPBRUSH_PUSH
@ GP_BRUSH_ICON_VERTEX_AVERAGE
@ GP_BRUSH_PRESET_PENCIL_SOFT
@ GP_BRUSH_PRESET_TWIST_STROKE
@ GP_BRUSH_PRESET_PUSH_STROKE
@ GP_BRUSH_PRESET_MARKER_CHISEL
@ GP_BRUSH_PRESET_ERASER_HARD
@ GP_BRUSH_PRESET_VERTEX_AVERAGE
@ GP_BRUSH_PRESET_INK_PEN
@ GP_BRUSH_PRESET_INK_PEN_ROUGH
@ GP_BRUSH_PRESET_ERASER_STROKE
@ GP_BRUSH_PRESET_DRAW_WEIGHT
@ GP_BRUSH_PRESET_ERASER_POINT
@ GP_BRUSH_PRESET_VERTEX_BLUR
@ GP_BRUSH_PRESET_MARKER_BOLD
@ GP_BRUSH_PRESET_FILL_AREA
@ GP_BRUSH_PRESET_VERTEX_DRAW
@ GP_BRUSH_PRESET_VERTEX_REPLACE
@ GP_BRUSH_PRESET_SMOOTH_STROKE
@ GP_BRUSH_PRESET_GRAB_STROKE
@ GP_BRUSH_PRESET_AIRBRUSH
@ GP_BRUSH_PRESET_CLONE_STROKE
@ GP_BRUSH_PRESET_ERASER_SOFT
@ GP_BRUSH_PRESET_THICKNESS_STROKE
@ GP_BRUSH_PRESET_STRENGTH_STROKE
@ GP_BRUSH_PRESET_RANDOMIZE_STROKE
@ GP_BRUSH_PRESET_VERTEX_SMEAR
@ GP_BRUSH_PRESET_PINCH_STROKE
#define MAX_BRUSH_PIXEL_RADIUS
@ BRUSH_MULTIPLANE_SCRAPE_PLANES_PREVIEW
@ BRUSH_MULTIPLANE_SCRAPE_DYNAMIC
@ BRUSH_USE_CONNECTED_ONLY
@ BRUSH_SLIDE_DEFORM_DRAG
@ CUMA_EXTEND_EXTRAPOLATE
#define DNA_struct_default_get(struct_name)
Object is a sort of wrapper for general info.
@ UNIFIED_PAINT_BRUSH_LOCK_SIZE
#define MTEX_MAP_MODE_VIEW
#define MTEX_MAP_MODE_STENCIL
#define MTEX_MAP_MODE_TILED
#define MTEX_MAP_MODE_RANDOM
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint y
void IMB_colormanagement_colorspace_to_scene_linear_v3(float pixel[3], struct ColorSpace *colorspace)
struct ImBuf * IMB_dupImBuf(const struct ImBuf *ibuf1)
void IMB_freeImBuf(struct ImBuf *ibuf)
Contains defines and structs used throughout the imbuf module.
Read Guarded memory(de)allocation.
static void init_data(ModifierData *md)
Group RGB to Bright Vector Camera CLAMP
void BKE_brush_weight_set(const Scene *scene, Brush *brush, float value)
static void brush_defaults(Brush *brush)
bool BKE_brush_use_alpha_pressure(const Brush *brush)
void BKE_brush_randomize_texture_coords(UnifiedPaintSettings *ups, bool mask)
float BKE_brush_weight_get(const Scene *scene, const Brush *brush)
void BKE_brush_gpencil_sculpt_presets(Main *bmain, ToolSettings *ts, const bool reset)
float BKE_brush_unprojected_radius_get(const Scene *scene, const Brush *brush)
static void brush_blend_write(BlendWriter *writer, ID *id, const void *id_address)
#define BR_TEST(field, t)
int BKE_brush_size_get(const Scene *scene, const Brush *brush)
static void brush_free_data(ID *id)
static void brush_blend_read_expand(BlendExpander *expander, ID *id)
void BKE_brush_gpencil_weight_presets(Main *bmain, ToolSettings *ts, const bool reset)
void BKE_brush_unprojected_radius_set(Scene *scene, Brush *brush, float unprojected_radius)
void BKE_gpencil_brush_preset_set(Main *bmain, Brush *brush, const short type)
float BKE_brush_curve_strength_clamped(Brush *br, float p, const float len)
void BKE_brush_size_set(Scene *scene, Brush *brush, int size)
static void brush_foreach_id(ID *id, LibraryForeachIDData *data)
#define FROM_DEFAULT(member)
Brush * BKE_brush_add(Main *bmain, const char *name, const eObjectMode ob_mode)
#define BR_TEST_FLAG_OVERLAY(_f)
void BKE_brush_alpha_set(Scene *scene, Brush *brush, float alpha)
void BKE_brush_jitter_pos(const Scene *scene, Brush *brush, const float pos[2], float jitterpos[2])
bool BKE_brush_use_size_pressure(const Brush *brush)
@ GPCURVE_PRESET_CHISEL_SENSIVITY
@ GPCURVE_PRESET_CHISEL_STRENGTH
@ GPCURVE_PRESET_INKNOISE
void BKE_brush_system_exit(void)
float BKE_brush_curve_strength(const Brush *br, float p, const float len)
Brush * BKE_brush_add_gpencil(Main *bmain, ToolSettings *ts, const char *name, eObjectMode mode)
static void brush_init_data(ID *id)
static void brush_gpencil_curvemap_reset(CurveMap *cuma, int tot, int preset)
static void brush_undo_preserve(BlendLibReader *reader, ID *id_new, ID *id_old)
static void brush_make_local(Main *bmain, ID *id, const int flags)
void BKE_brush_gpencil_paint_presets(Main *bmain, ToolSettings *ts, const bool reset)
const float * BKE_brush_secondary_color_get(const struct Scene *scene, const struct Brush *brush)
float BKE_brush_sample_masktex(const Scene *scene, Brush *br, const float point[2], const int thread, struct ImagePool *pool)
#define FROM_DEFAULT_PTR(member)
void BKE_brush_sculpt_reset(Brush *br)
const float * BKE_brush_color_get(const struct Scene *scene, const struct Brush *brush)
void BKE_brush_curve_preset(Brush *b, eCurveMappingPreset preset)
static void brush_blend_read_data(BlendDataReader *reader, ID *id)
bool BKE_brush_sculpt_has_secondary_color(const Brush *brush)
void BKE_brush_system_init(void)
void BKE_brush_init_gpencil_settings(Brush *brush)
void BKE_brush_scale_size(int *r_brush_size, float new_unprojected_radius, float old_unprojected_radius)
float BKE_brush_alpha_get(const Scene *scene, const Brush *brush)
#define SMOOTH_STROKE_RADIUS
void BKE_brush_debug_print_state(Brush *br)
unsigned int * BKE_brush_gen_texture_cache(Brush *br, int half_side, bool use_secondary)
void BKE_brush_gpencil_vertex_presets(Main *bmain, ToolSettings *ts, const bool reset)
static void brush_blend_read_lib(BlendLibReader *reader, ID *id)
float BKE_brush_sample_tex_3d(const Scene *scene, const Brush *br, const float point[3], float rgba[4], const int thread, struct ImagePool *pool)
bool BKE_brush_delete(Main *bmain, Brush *brush)
bool BKE_brush_use_locked_size(const Scene *scene, const Brush *brush)
#define SMOOTH_STROKE_FACTOR
void BKE_brush_color_set(struct Scene *scene, struct Brush *brush, const float color[3])
void BKE_brush_scale_unprojected_radius(float *unprojected_radius, int new_brush_size, int old_brush_size)
static int brush_undo_preserve_cb(LibraryIDLinkCallbackData *cb_data)
static void brush_copy_data(Main *UNUSED(bmain), ID *id_dst, const ID *id_src, const int flag)
struct ImBuf * BKE_brush_gen_radial_control_imbuf(Brush *br, bool secondary, bool display_gradient)
static Brush * gpencil_brush_ensure(Main *bmain, ToolSettings *ts, const char *brush_name, eObjectMode mode, bool *r_new)
struct Brush * BKE_brush_first_search(struct Main *bmain, const eObjectMode ob_mode)
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
void reset()
clear internal cached data and reset random seed
SIMD_FORCE_INLINE btScalar angle(const btVector3 &v) const
Return the angle between this and another vector.
static CCL_NAMESPACE_BEGIN const double alpha
void(* MEM_freeN)(void *vmemh)
void *(* MEM_dupallocN)(const void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
static ePaintOverlayControlFlags overlay_flags
struct CurveMapping * curve_sensitivity
struct CurveMapping * curve_strength
struct CurveMapping * curve_jitter
struct CurveMapping * curve_rand_pressure
struct CurveMapping * curve_rand_strength
struct CurveMapping * curve_rand_saturation
struct CurveMapping * curve_rand_hue
float draw_random_strength
struct CurveMapping * curve_rand_uv
struct Material * material
struct CurveMapping * curve_rand_value
float multiplane_scrape_angle
float topology_rake_factor
struct ImBuf * icon_imbuf
struct ColorBand * gradient
float normal_radius_factor
int pose_smooth_iterations
int texture_overlay_alpha
float elastic_deform_volume_preservation
float smooth_stroke_factor
float stencil_dimension[2]
struct CurveMapping * curve
float texture_sample_bias
float mask_stencil_pos[2]
struct BrushGpencilSettings * gpencil_settings
struct Brush * toggle_brush
float crease_pinch_factor
float mask_stencil_dimension[2]
int surface_smooth_iterations
float surface_smooth_current_vertex
struct PaintCurve * paint_curve
float surface_smooth_shape_preservation
struct MaterialGPencilStyle * gp_style
struct ToolSettings * toolsettings
char do_linear_conversion
float size_pressure_value
struct ColorSpace * colorspace
bool RE_texture_evaluate(const MTex *mtex, const float vec[3], const int thread, struct ImagePool *pool, const bool skip_load_image, const bool texnode_preview, float *r_intensity, float r_rgba[4])
static int blend(const Tex *tex, const float texvec[3], TexResult *texres)
ccl_device_inline float4 mask(const int4 &mask, const float4 &a)