142 .struct_size =
sizeof(
Palette),
144 .name_plural =
"palettes",
153 .foreach_cache =
NULL,
158 .blend_read_lib =
NULL,
159 .blend_read_expand =
NULL,
163 .lib_override_apply_post =
NULL,
209 .name =
"PaintCurve",
210 .name_plural =
"paint_curves",
219 .foreach_cache =
NULL,
224 .blend_read_lib =
NULL,
225 .blend_read_expand =
NULL,
227 .blend_read_undo_preserve =
NULL,
229 .lib_override_apply_post =
NULL,
327 paint_ptr = &paint_tmp;
421 return "sculpt_tool";
423 return "vertex_tool";
425 return "weight_tool";
430 return "uv_sculpt_tool";
432 return "gpencil_tool";
434 return "gpencil_vertex_tool";
436 return "gpencil_sculpt_tool";
438 return "gpencil_weight_tool";
449 if (sce && view_layer) {
490 if (sce && view_layer) {
525 if (sce && view_layer) {
546 switch (obact->
mode) {
573 switch (tref->
mode) {
593 switch (tref->
mode) {
668 return offsetof(
Brush, imagepaint_tool);
670 return offsetof(
Brush, sculpt_tool);
672 return offsetof(
Brush, vertexpaint_tool);
674 return offsetof(
Brush, weightpaint_tool);
676 return offsetof(
Brush, uv_sculpt_tool);
678 return offsetof(
Brush, gpencil_tool);
680 return offsetof(
Brush, gpencil_vertex_tool);
682 return offsetof(
Brush, gpencil_sculpt_tool);
684 return offsetof(
Brush, gpencil_weight_tool);
775 if (ps1->
h > ps2->h) {
778 if (ps1->
h < ps2->h) {
783 if (ps1->
s > ps2->s) {
786 if (ps1->
s < ps2->s) {
791 if (1.0f - ps1->
v > 1.0f - ps2->v) {
794 if (1.0f - ps1->
v < 1.0f - ps2->v) {
807 if (ps1->
s > ps2->s) {
810 if (ps1->
s < ps2->s) {
815 if (1.0f - ps1->
v > 1.0f - ps2->v) {
818 if (1.0f - ps1->
v < 1.0f - ps2->v) {
823 if (ps1->
h > ps2->h) {
826 if (ps1->
h < ps2->h) {
838 if (1.0f - ps1->
v > 1.0f - ps2->v) {
841 if (1.0f - ps1->
v < 1.0f - ps2->v) {
846 if (ps1->
h > ps2->h) {
849 if (ps1->
h < ps2->h) {
854 if (ps1->
s > ps2->s) {
857 if (ps1->
s < ps2->s) {
868 float lumi1 = (ps1->
rgb[0] + ps1->
rgb[1] + ps1->
rgb[2]) / 3.0f;
869 float lumi2 = (ps2->rgb[0] + ps2->rgb[1] + ps2->rgb[2]) / 3.0f;
925 col_elm = &color_array[
t];
943 for (
int i = 0; i < totpal; i++) {
944 col_elm = &color_array[i];
1038 if ((*r_paint)->runtime.tool_offset == 0) {
1057 struct Paint paint_test = **r_paint;
1070 paint = &
data->paint;
1074 paint = &
data->paint;
1084 paint = &
data->paint;
1088 paint = &
data->paint;
1092 paint = &
data->paint;
1096 paint = &
data->paint;
1100 paint = &
data->paint;
1267 }
while ((l_iter = l_iter->
next) != l_first);
1277 return gpm->
data[(
y * factor) * gridsize + (
x * factor)];
1281 #define RAKE_THRESHHOLD 20
1302 const float mouse_pos[2])
1314 rotation =
atan2f(dpos[0], dpos[1]);
1392 .calc_object_remap = false,
1446 if (
object && object->
sculpt) {
1587 for (; md; md = md->
next) {
1621 bool UNUSED(need_colors))
1682 if (use_face_sets) {
1742 if (!pbvh_deformed) {
1780 for (n = 0; n < totnode; n++) {
1803 if (!
U.experimental.use_sculpt_vertex_colors) {
1831 const float *paint_mask;
1843 int gridarea = gridsize * gridsize;
1848 for (i = 0; i < me->
totloop; i++) {
1852 gpm->
data =
MEM_callocN(
sizeof(
float) * gridarea,
"GridPaintMask.data");
1857 for (i = 0; i < me->
totpoly; i++) {
1862 for (j = 0; j < p->
totloop; j++) {
1864 avg += paint_mask[
l->
v];
1869 for (j = 0; j < p->
totloop; j++) {
1876 gpm->
data[1] = (paint_mask[
l->
v] + paint_mask[
next->v]) * 0.5f;
1877 gpm->
data[2] = (paint_mask[
l->
v] + paint_mask[prev->
v]) * 0.5f;
1878 gpm->
data[3] = paint_mask[
l->
v];
1924 bool deformed =
false;
1930 deformed |=
object->sculpt->deform_modifiers_active;
1932 if (for_construction) {
1933 deformed |=
object->sculpt->shapekey_active !=
NULL;
1940 deformed |=
object->sculpt->shapekey_active && (
object->shapeflag &
OB_SHAPE_LOCK) == 0;
1952 const int face_sets_default_visible_id = 1;
1953 const int face_sets_default_hidden_id = -(face_sets_default_visible_id + 1);
1955 bool initialize_new_face_sets =
false;
1961 current_face_sets[i] =
abs(current_face_sets[i]);
1965 initialize_new_face_sets =
true;
1972 new_face_sets[i] = face_sets_default_visible_id;
1984 if (initialize_new_face_sets) {
1989 face_sets[i] = face_sets_default_hidden_id;
1993 face_sets[i] = -
abs(face_sets[i]);
2006 const bool is_face_set_visible = face_sets[i] >= 0;
2028 const bool is_hidden = (face_sets[face_index] < 0);
2139 if (is_deformed && me_eval_deform !=
NULL) {
2177 bool respect_hide =
true;
2180 respect_hide =
false;
2190 Mesh *mesh_eval = object_eval->
data;
2192 if (subdiv_ccg !=
NULL) {
2205 Mesh *mesh_eval = object_eval->
data;
2248 #define GOLDEN_RATIO_CONJUGATE 0.618033988749895f
2253 random_mod_hue = random_mod_hue -
floorf(random_mod_hue);
2257 0.6f + (random_mod_sat * 0.25f),
2258 1.0f - (random_mod_val * 0.35f),
typedef float(TangentPoint)[2]
struct Brush * BKE_brush_add(struct Main *bmain, const char *name, const eObjectMode ob_mode)
struct Brush * BKE_brush_first_search(struct Main *bmain, const eObjectMode ob_mode)
struct Scene * CTX_data_scene(const bContext *C)
@ CTX_MODE_WEIGHT_GPENCIL
@ CTX_MODE_VERTEX_GPENCIL
@ CTX_MODE_SCULPT_GPENCIL
struct ViewLayer * CTX_data_view_layer(const bContext *C)
struct SpaceImage * CTX_wm_space_image(const bContext *C)
void BKE_crazyspace_build_sculpt(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, float(**deformmats)[3][3], float(**deformcos)[3])
bool CustomData_has_layer(const struct CustomData *data, int type)
void * CustomData_get_layer(const struct CustomData *data, int type)
void * CustomData_add_layer(struct CustomData *data, int type, eCDAllocType alloctype, void *layer, int totelem)
@ IDTYPE_FLAGS_NO_ANIMDATA
void BKE_image_pool_free(struct ImagePool *pool)
float(* BKE_keyblock_convert_to_vertcos(struct Object *ob, struct KeyBlock *kb))[3]
struct KeyBlock * BKE_keyblock_from_object(struct Object *ob)
void id_us_min(struct ID *id)
void id_fake_user_set(struct ID *id)
@ LIB_ID_CREATE_NO_USER_REFCOUNT
void id_us_plus(struct ID *id)
void BKE_id_blend_write(struct BlendWriter *writer, struct ID *id)
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)
void BKE_mesh_tessface_clear(struct Mesh *mesh)
struct Mesh * BKE_mesh_from_object(struct Object *ob)
void BKE_mesh_recalc_looptri(const struct MLoop *mloop, const struct MPoly *mpoly, const struct MVert *mvert, int totloop, int totpoly, struct MLoopTri *mlooptri)
void BKE_mesh_update_customdata_pointers(struct Mesh *me, const bool do_ensure_tess_cd)
float(* BKE_mesh_vert_coords_alloc(const struct Mesh *mesh, int *r_vert_len))[3]
void BKE_mesh_flush_hidden_from_polys(struct Mesh *me)
void BKE_mesh_vert_poly_map_create(MeshElemMap **r_map, int **r_mem, const struct MPoly *mpoly, const struct MLoop *mloop, int totvert, int totpoly, int totloop)
const ModifierTypeInfo * BKE_modifier_get_info(ModifierType type)
bool BKE_modifier_is_enabled(const struct Scene *scene, struct ModifierData *md, int required_mode)
struct ModifierData * BKE_modifiers_get_virtual_modifierlist(const struct Object *ob, struct VirtualModifierData *data)
@ eModifierTypeType_OnlyDeform
General operations, lookup, etc. for blender objects.
struct Mesh * BKE_object_get_original_mesh(struct Object *object)
struct Mesh * BKE_object_get_evaluated_mesh(struct Object *object)
void BKE_object_free_derived_caches(struct Object *ob)
#define PAINT_MODE_HAS_BRUSH(mode)
void BKE_paint_toolslots_brush_update(struct Paint *paint)
ePaintOverlayControlFlags
@ PAINT_OVERLAY_INVALID_CURVE
@ PAINT_OVERLAY_INVALID_TEXTURE_SECONDARY
@ PAINT_OVERLAY_OVERRIDE_CURSOR
@ PAINT_OVERLAY_INVALID_TEXTURE_PRIMARY
@ PAINT_OVERLAY_OVERRIDE_SECONDARY
@ PAINT_OVERLAY_OVERRIDE_PRIMARY
#define PAINT_OVERRIDE_MASK
@ PAINT_MODE_VERTEX_GPENCIL
@ PAINT_MODE_WEIGHT_GPENCIL
@ PAINT_MODE_SCULPT_GPENCIL
@ SCULPT_MASK_LAYER_CALC_VERT
@ SCULPT_MASK_LAYER_CALC_LOOP
A BVH for high poly meshes.
void BKE_pbvh_build_grids(PBVH *pbvh, struct CCGElem **grids, int totgrid, struct CCGKey *key, void **gridfaces, struct DMFlagMat *flagmats, unsigned int **grid_hidden)
void BKE_pbvh_node_mark_update(PBVHNode *node)
void pbvh_show_mask_set(PBVH *pbvh, bool show_mask)
void BKE_pbvh_free(PBVH *pbvh)
bool BKE_pbvh_is_deformed(struct PBVH *pbvh)
PBVHType BKE_pbvh_type(const PBVH *pbvh)
void pbvh_show_face_sets_set(PBVH *pbvh, bool show_face_sets)
void BKE_pbvh_subdiv_cgg_set(PBVH *pbvh, struct SubdivCCG *subdiv_ccg)
void BKE_pbvh_face_sets_color_set(PBVH *pbvh, int seed, int color_default)
void BKE_pbvh_build_mesh(PBVH *pbvh, const struct Mesh *mesh, const struct MPoly *mpoly, const struct MLoop *mloop, struct MVert *verts, int totvert, struct CustomData *vdata, struct CustomData *ldata, struct CustomData *pdata, const struct MLoopTri *looptri, int looptri_num)
void BKE_pbvh_build_bmesh(PBVH *pbvh, struct BMesh *bm, bool smooth_shading, struct BMLog *log, const int cd_vert_node_offset, const int cd_face_node_offset)
PBVH * BKE_pbvh_new(void)
void BKE_pbvh_respect_hide_set(PBVH *pbvh, bool respect_hide)
void BKE_pbvh_vert_coords_apply(struct PBVH *pbvh, const float(*vertCos)[3], const int totvert)
void BKE_pbvh_grids_update(PBVH *pbvh, struct CCGElem **grids, void **gridfaces, struct DMFlagMat *flagmats, unsigned int **grid_hidden)
void BKE_pbvh_face_sets_set(PBVH *pbvh, int *face_sets)
void BKE_pbvh_search_gather(PBVH *pbvh, BKE_pbvh_SearchCallback scb, void *search_data, PBVHNode ***array, int *tot)
void BKE_subdiv_ccg_key_top_level(struct CCGKey *key, const SubdivCCG *subdiv_ccg)
void BKE_subdiv_ccg_grid_hidden_ensure(SubdivCCG *subdiv_ccg, int grid_index)
int BKE_subdiv_ccg_grid_to_face_index(const SubdivCCG *subdiv_ccg, const int grid_index)
int BKE_ccg_gridsize(int level)
int BKE_ccg_factor(int low_level, int high_level)
#define BLI_assert_unreachable()
#define BLI_BITMAP_TEST(_bitmap, _index)
void BLI_bitmap_set_all(BLI_bitmap *bitmap, bool set, size_t bits)
BLI_INLINE void * BLI_ghashIterator_getValue(GHashIterator *ghi) ATTR_WARN_UNUSED_RESULT
#define GHASH_ITER(gh_iter_, ghash_)
unsigned int BLI_ghash_len(GHash *gh) ATTR_WARN_UNUSED_RESULT
BLI_INLINE float BLI_hash_int_01(unsigned int k)
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
void void void void void BLI_duplicatelist(struct ListBase *dst, const struct ListBase *src) ATTR_NONNULL(1
int BLI_listbase_count_at_most(const struct ListBase *listbase, const int count_max) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void void BLI_freelistN(struct ListBase *listbase) ATTR_NONNULL(1)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_remlink(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
MINLINE int max_ii(int a, int b)
void rgb_to_hsv(float r, float g, float b, float *r_h, float *r_s, float *r_v)
void hsv_to_rgb(float h, float s, float v, float *r_r, float *r_g, float *r_b)
void rgba_float_to_uchar(unsigned char r_col[4], const float col_f[4])
MINLINE void linearrgb_to_srgb_v3_v3(float srgb[3], const float linear[3])
void cpack_to_rgb(unsigned int col, float *r_r, float *r_g, float *r_b)
MINLINE int poly_to_tri_count(const int poly_count, const int corner_count)
bool invert_m3(float R[3][3])
MINLINE float len_squared_v2(const float v[2]) ATTR_WARN_UNUSED_RESULT
MINLINE void copy_v2_v2(float r[2], const float a[2])
MINLINE void copy_v3_v3(float r[3], const float a[3])
MINLINE void sub_v2_v2v2(float r[2], const float a[2], const float b[2])
MINLINE void zero_v3(float r[3])
MINLINE void mul_v3_v3fl(float r[3], const float a[3], float f)
#define UNUSED_VARS_NDEBUG(...)
#define SET_FLAG_FROM_TEST(value, test, flag)
#define POINTER_AS_INT(i)
#define MEMCMP_STRUCT_AFTER_IS_ZERO(struct_var, member)
#define BLO_read_data_address(reader, ptr_p)
#define BLO_write_id_struct(writer, struct_name, id_address, id)
#define BLO_write_struct(writer, struct_name, data_ptr)
void BLO_read_list(BlendDataReader *reader, struct ListBase *list)
#define BLO_read_id_address(reader, lib, id_ptr_p)
#define BLO_write_struct_array(writer, struct_name, array_size, data_ptr)
bool BLO_write_is_undo(BlendWriter *writer)
#define BLT_I18NCONTEXT_ID_PALETTE
#define BLT_I18NCONTEXT_ID_PAINTCURVE
struct Depsgraph Depsgraph
void DEG_id_tag_update(struct ID *id, int flag)
struct Scene * DEG_get_input_scene(const Depsgraph *graph)
struct Object * DEG_get_original_object(struct Object *object)
struct Object * DEG_get_evaluated_object(const struct Depsgraph *depsgraph, struct Object *object)
@ BRUSH_OVERLAY_SECONDARY_OVERRIDE_ON_STROKE
@ BRUSH_OVERLAY_PRIMARY_OVERRIDE_ON_STROKE
@ BRUSH_OVERLAY_CURSOR_OVERRIDE_ON_STROKE
#define BRUSH_OVERLAY_OVERRIDE_MASK
struct PaintCurve PaintCurve
@ CUMA_EXTEND_EXTRAPOLATE
#define ME_POLY_LOOP_PREV(mloop, mp, i)
#define ME_POLY_LOOP_NEXT(mloop, mp, i)
@ eMultiresModifierFlag_UseSculptBaseMesh
Object is a sort of wrapper for general info.
@ SCULPT_DYNTOPO_SUBDIVIDE
@ SCULPT_DYNTOPO_COLLAPSE
struct PaintToolSlot PaintToolSlot
_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 GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble y2 _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat y2 _GL_VOID_RET _GL_VOID GLint GLint GLint y2 _GL_VOID_RET _GL_VOID GLshort GLshort GLshort y2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLuint *buffer _GL_VOID_RET _GL_VOID GLdouble t _GL_VOID_RET _GL_VOID GLfloat t _GL_VOID_RET _GL_VOID GLint t _GL_VOID_RET _GL_VOID GLshort t _GL_VOID_RET _GL_VOID GLdouble GLdouble r _GL_VOID_RET _GL_VOID GLfloat GLfloat r _GL_VOID_RET _GL_VOID GLint GLint r _GL_VOID_RET _GL_VOID GLshort GLshort r _GL_VOID_RET _GL_VOID GLdouble GLdouble r
_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
_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 GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble y2 _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat y2 _GL_VOID_RET _GL_VOID GLint GLint GLint y2 _GL_VOID_RET _GL_VOID GLshort GLshort GLshort y2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLuint *buffer _GL_VOID_RET _GL_VOID GLdouble t _GL_VOID_RET _GL_VOID GLfloat t _GL_VOID_RET _GL_VOID GLint t _GL_VOID_RET _GL_VOID GLshort t _GL_VOID_RET _GL_VOID GLdouble t
Read Guarded memory(de)allocation.
static void init_data(ModifierData *md)
#define BM_FACE_FIRST_LOOP(p)
#define BM_elem_flag_set(ele, hflag, val)
#define BM_elem_flag_test(ele, hflag)
#define BM_ITER_MESH(ele, iter, bm, itype)
void BM_log_free(BMLog *log)
void BM_log_mesh_elems_reorder(BMesh *bm, BMLog *log)
void BM_mesh_free(BMesh *bm)
BMesh Free Mesh.
void BM_mesh_bm_to_me(Main *bmain, BMesh *bm, Mesh *me, const struct BMeshToMeshParams *params)
ATTR_WARN_UNUSED_RESULT const BMLoop * l
ATTR_WARN_UNUSED_RESULT const BMVert * v
static unsigned long seed
const Depsgraph * depsgraph
void *(* MEM_malloc_arrayN)(size_t len, size_t size, const char *str)
void(* MEM_freeN)(void *vmemh)
void *(* MEM_dupallocN)(const void *vmemh)
void *(* MEM_calloc_arrayN)(size_t len, size_t size, const char *str)
size_t(* MEM_allocN_len)(const void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void BKE_palette_sort_vhs(tPaletteColorHSV *color_array, const int totcol)
void BKE_sculpt_update_object_after_eval(Depsgraph *depsgraph, Object *ob_eval)
void BKE_paint_runtime_init(const ToolSettings *ts, Paint *paint)
void BKE_sculptsession_free_vwpaint_data(struct SculptSession *ss)
void BKE_paint_set_overlay_override(eOverlayFlags flags)
eObjectMode BKE_paint_object_mode_from_paintmode(ePaintMode mode)
void BKE_sculpt_bvh_update_from_ccg(PBVH *pbvh, SubdivCCG *subdiv_ccg)
void BKE_sculpt_sync_face_sets_visibility_to_base_mesh(Mesh *mesh)
bool BKE_paint_select_vert_test(Object *ob)
static bool sculpt_modifiers_active(Scene *scene, Sculpt *sd, Object *ob)
void BKE_paint_invalidate_cursor_overlay(Scene *scene, ViewLayer *view_layer, CurveMapping *curve)
static PBVH * build_pbvh_from_ccg(Object *ob, SubdivCCG *subdiv_ccg, bool respect_hide)
float paint_grid_paint_mask(const GridPaintMask *gpm, uint level, uint x, uint y)
Paint * BKE_paint_get_active_from_paintmode(Scene *sce, ePaintMode mode)
void BKE_paint_curve_set(Brush *br, PaintCurve *pc)
void BKE_sculpt_sync_face_set_visibility(struct Mesh *mesh, struct SubdivCCG *subdiv_ccg)
static void palette_copy_data(Main *UNUSED(bmain), ID *id_dst, const ID *id_src, const int UNUSED(flag))
void BKE_paint_invalidate_overlay_tex(Scene *scene, ViewLayer *view_layer, const Tex *tex)
static void sculptsession_bm_to_me_update_data_only(Object *ob, bool reorder)
void BKE_paint_copy(Paint *src, Paint *tar, const int flag)
void BKE_paint_blend_write(BlendWriter *writer, Paint *p)
void BKE_sculpt_sync_face_sets_visibility_to_grids(Mesh *mesh, SubdivCCG *subdiv_ccg)
void BKE_sculptsession_bm_to_me(Object *ob, bool reorder)
void BKE_sculpt_ensure_orig_mesh_data(Scene *scene, Object *object)
void BKE_sculpt_toolsettings_data_ensure(struct Scene *scene)
static PBVH * build_pbvh_from_regular_mesh(Object *ob, Mesh *me_eval_deform, bool respect_hide)
static bool check_sculpt_object_deformed(Object *object, const bool for_construction)
bool BKE_palette_from_hash(Main *bmain, GHash *color_table, const char *name, const bool linear)
static void palette_undo_preserve(BlendLibReader *UNUSED(reader), ID *id_new, ID *id_old)
static void paint_curve_copy_data(Main *UNUSED(bmain), ID *id_dst, const ID *id_src, const int UNUSED(flag))
void BKE_sculpt_face_sets_ensure_from_base_mesh_visibility(Mesh *mesh)
void BKE_paint_stroke_get_average(Scene *scene, Object *ob, float stroke[3])
static int palettecolor_compare_luminance(const void *a1, const void *a2)
void BKE_sculptsession_free(Object *ob)
void BKE_paint_blend_read_lib(BlendLibReader *reader, Scene *sce, Paint *p)
const char PAINT_CURSOR_VERTEX_PAINT[3]
Palette * BKE_palette_add(Main *bmain, const char *name)
ePaintMode BKE_paintmode_get_active_from_context(const bContext *C)
Paint * BKE_paint_get_active_from_context(const bContext *C)
void BKE_sculptsession_free_deformMats(SculptSession *ss)
const char PAINT_CURSOR_SCULPT[3]
uint BKE_paint_get_brush_tool_offset_from_paintmode(const ePaintMode mode)
PaintCurve * BKE_paint_curve_add(Main *bmain, const char *name)
void BKE_palette_color_remove(Palette *palette, PaletteColor *color)
bool BKE_paint_ensure_from_paintmode(Scene *sce, ePaintMode mode)
Brush * BKE_paint_brush(Paint *p)
void BKE_palette_sort_hsv(tPaletteColorHSV *color_array, const int totcol)
void BKE_paint_blend_read_data(BlendDataReader *reader, const Scene *scene, Paint *p)
static int palettecolor_compare_svh(const void *a1, const void *a2)
void BKE_paint_reset_overlay_invalid(ePaintOverlayControlFlags flag)
bool BKE_sculptsession_use_pbvh_draw(const Object *ob, const View3D *v3d)
bool paint_is_grid_face_hidden(const uint *grid_hidden, int gridsize, int x, int y)
void BKE_palette_sort_svh(tPaletteColorHSV *color_array, const int totcol)
void BKE_paint_brush_set(Paint *p, Brush *br)
static PBVH * build_pbvh_for_dynamic_topology(Object *ob)
const EnumPropertyItem * BKE_paint_get_tool_enum_from_paintmode(ePaintMode mode)
bool paint_is_face_hidden(const MLoopTri *lt, const MVert *mvert, const MLoop *mloop)
void BKE_paint_free(Paint *paint)
int BKE_sculpt_mask_layers_ensure(Object *ob, MultiresModifierData *mmd)
void BKE_palette_sort_luminance(tPaletteColorHSV *color_array, const int totcol)
static void palette_free_data(ID *id)
bool BKE_paint_select_elem_test(Object *ob)
static void paint_curve_blend_write(BlendWriter *writer, ID *id, const void *id_address)
void paint_update_brush_rake_rotation(UnifiedPaintSettings *ups, Brush *brush, float rotation)
const char PAINT_CURSOR_WEIGHT_PAINT[3]
MultiresModifierData * BKE_sculpt_multires_active(Scene *scene, Object *ob)
bool BKE_paint_select_face_test(Object *ob)
static void paint_curve_free_data(ID *id)
const char PAINT_CURSOR_TEXTURE_PAINT[3]
void BKE_paint_init(Main *bmain, Scene *sce, ePaintMode mode, const char col[3])
#define GOLDEN_RATIO_CONJUGATE
void BKE_palette_clear(Palette *palette)
void BKE_sculptsession_bm_to_me_for_render(Object *object)
bool BKE_paint_ensure(ToolSettings *ts, struct Paint **r_paint)
static void sculptsession_free_pbvh(Object *object)
bool paint_calculate_rake_rotation(UnifiedPaintSettings *ups, Brush *brush, const float mouse_pos[2])
static ePaintOverlayControlFlags overlay_flags
bool paint_is_bmesh_face_hidden(BMFace *f)
void BKE_paint_invalidate_overlay_all(void)
static void palette_blend_write(BlendWriter *writer, ID *id, const void *id_address)
static void paint_curve_blend_read_data(BlendDataReader *reader, ID *id)
PBVH * BKE_sculpt_object_pbvh_ensure(Depsgraph *depsgraph, Object *ob)
static int palettecolor_compare_vhs(const void *a1, const void *a2)
void BKE_paint_palette_set(Paint *p, Palette *palette)
static void palette_init_data(ID *id)
static int palettecolor_compare_hsv(const void *a1, const void *a2)
const char * BKE_paint_get_tool_prop_id_from_paintmode(ePaintMode mode)
void BKE_paint_face_set_overlay_color_get(const int face_set, const int seed, uchar r_color[4])
PaletteColor * BKE_palette_color_add(Palette *palette)
void BKE_paint_curve_clamp_endpoint_add_index(PaintCurve *pc, const int add_index)
void BKE_sculpt_update_object_for_edit(Depsgraph *depsgraph, Object *ob_orig, bool need_pmap, bool need_mask, bool need_colors)
Palette * BKE_paint_palette(Paint *p)
ePaintOverlayControlFlags BKE_paint_get_overlay_flags(void)
static void palette_blend_read_data(BlendDataReader *reader, ID *id)
void BKE_sculpt_color_layer_create_if_needed(struct Object *object)
static void sculpt_update_object(Depsgraph *depsgraph, Object *ob, Mesh *me_eval, bool need_pmap, bool need_mask, bool UNUSED(need_colors))
void BKE_paint_cavity_curve_preset(Paint *p, int preset)
void BKE_sculpt_update_object_before_eval(Object *ob)
ePaintMode BKE_paintmode_get_from_tool(const struct bToolRef *tref)
Paint * BKE_paint_get_active(Scene *sce, ViewLayer *view_layer)
bool BKE_palette_is_empty(const struct Palette *palette)
const EnumPropertyItem rna_enum_brush_image_tool_items[]
const EnumPropertyItem rna_enum_brush_weight_tool_items[]
const EnumPropertyItem rna_enum_brush_gpencil_sculpt_types_items[]
const EnumPropertyItem rna_enum_brush_sculpt_tool_items[]
const EnumPropertyItem rna_enum_brush_vertex_tool_items[]
const EnumPropertyItem rna_enum_brush_uv_sculpt_tool_items[]
const EnumPropertyItem rna_enum_brush_gpencil_vertex_types_items[]
const EnumPropertyItem rna_enum_brush_gpencil_weight_types_items[]
const EnumPropertyItem rna_enum_brush_gpencil_types_items[]
struct CurveMapping * curve
struct PaintCurve * paint_curve
struct SubdivCCG * subdiv_ccg
struct CustomData pdata ldata
int face_sets_color_default
struct ModifierData * next
struct Mesh * mesh_deform_eval
struct SculptSession * sculpt
struct Paint_Runtime runtime
struct PaintToolSlot * tool_slots
unsigned char paint_cursor_col[4]
struct CurveMapping * cavity_curve
struct PaletteColor * next
struct ToolSettings * toolsettings
struct SculptBoundaryEditInfo * edit_info
SculptBoundaryPreviewEdge * edges
int * fake_neighbor_index
SculptPoseIKChainSegment * segments
struct SubdivCCG * subdiv_ccg
struct ImagePool * tex_pool
SculptPoseIKChain * pose_ik_chain_preview
struct MeshElemMap * epmap
int preview_vert_index_count
struct Depsgraph * depsgraph
SculptVertexInfo vertex_info
struct KeyBlock * shapekey_active
struct SculptSession::@54::@55 vpaint
union SculptSession::@54 mode
int * preview_vert_index_list
SculptBoundary * boundary_preview
struct MeshElemMap * vemap
struct MeshElemMap * pmap
struct MultiresModifierData * modifier
float(* deform_imats)[3][3]
struct StrokeCache * cache
struct SculptSession::@53 multires
struct ExpandCache * expand_cache
struct SculptSession::@54::@56 wpaint
SculptFakeNeighbors fake_neighbors
SculptPersistentBase * persistent_base
struct FilterCache * filter_cache
bool deform_modifiers_active
int * connected_component
struct MeshElemMap * vert_to_loop
struct MeshElemMap * vert_to_poly
SubdivCCGFace ** grid_faces
BLI_bitmap ** grid_hidden
struct DMFlagMat * grid_flag_mats
float average_stroke_accum[3]
int average_stroke_counter
__forceinline const avxi abs(const avxi &a)