58 #define SCULPT_VERTEX_NEIGHBOR_FIXED_CAPACITY 256
201 #define SCULPT_RAKE_BRUSH_FACTOR 0.25f
391 #define SCULPT_CLAY_STABILIZER_LEN 10
663 #define EXPAND_SYMM_AREAS 8
851 const float mouse[2],
852 bool force_original);
859 const float mouse[2],
860 bool use_sampled_normal);
941 bool include_duplicates,
945 #define SCULPT_VERTEX_NEIGHBORS_ITER_BEGIN(ss, v_index, neighbor_iterator) \
946 SCULPT_vertex_neighbors_get(ss, v_index, false, &neighbor_iterator); \
947 for (neighbor_iterator.i = 0; neighbor_iterator.i < neighbor_iterator.size; \
948 neighbor_iterator.i++) { \
949 neighbor_iterator.index = neighbor_iterator.neighbors[neighbor_iterator.i];
953 #define SCULPT_VERTEX_DUPLICATES_AND_NEIGHBORS_ITER_BEGIN(ss, v_index, neighbor_iterator) \
954 SCULPT_vertex_neighbors_get(ss, v_index, true, &neighbor_iterator); \
955 for (neighbor_iterator.i = neighbor_iterator.size - 1; neighbor_iterator.i >= 0; \
956 neighbor_iterator.i--) { \
957 neighbor_iterator.index = neighbor_iterator.neighbors[neighbor_iterator.i]; \
958 neighbor_iterator.is_duplicate = (neighbor_iterator.i >= \
959 neighbor_iterator.size - neighbor_iterator.num_duplicates);
961 #define SCULPT_VERTEX_NEIGHBORS_ITER_END(neighbor_iterator) \
963 if (neighbor_iterator.neighbors != neighbor_iterator.neighbors_fixed) { \
964 MEM_freeN(neighbor_iterator.neighbors); \
978 #define FAKE_NEIGHBOR_NONE -1
1094 float r_area_co[3]);
1103 Sculpt *sd,
Object *ob,
PBVHNode **nodes,
int totnode,
float r_area_no[3],
float r_area_co[3]);
1115 const struct Brush *brush,
1116 const float val[3]);
1130 const float br_co[3],
1137 const float pivot[3]);
1141 const float pivot[3]);
1153 const float local[4][4],
1176 char falloff_shape);
1178 char falloff_shape);
1184 const struct Brush *br,
1185 const float point[3],
1198 float tilt_strength);
1228 bool (*func)(
SculptSession *ss,
int from_v,
int to_v,
bool is_duplicate,
void *userdata),
1293 int propagation_steps,
1294 float *automask_factor);
1308 struct GSet *initial_vertices,
1350 float cloth_damping,
1351 float cloth_softbody_strength,
1352 bool use_collisions,
1353 bool needs_deform_coords);
1375 float initial_location[3],
1382 const struct Brush *brush,
1383 const float location[3],
1387 const float outline_col[3],
1391 const float outline_col[3],
1392 float outline_alpha);
1438 float (*laplacian_disp)[3],
1440 const float origco[3],
1450 bool filter_boundary_face_sets,
1451 float *r_final_pos);
1463 float r_area_no[3]);
1624 float initial_location[3],
1627 float *r_pose_origin,
1628 float *r_pose_factor);
1637 const float initial_location[3],
1660 const float outline_col[3],
1661 float outline_alpha);
1670 const float outline_col[3],
1671 float outline_alpha);
1691 struct Image **r_image,
typedef float(TangentPoint)[2]
A BVH for high poly meshes.
#define ATTR_NONNULL(...)
pthread_mutex_t ThreadMutex
struct Depsgraph Depsgraph
@ BRUSH_DEFORM_TARGET_CLOTH_SIM
@ BRUSH_CLOTH_DEFORM_GRAB
@ BRUSH_CLOTH_DEFORM_SNAKE_HOOK
@ BRUSH_SNAKE_HOOK_DEFORM_ELASTIC
@ SCULPT_TOOL_ELASTIC_DEFORM
These structs are the foundation for all linked lists in the library system.
_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
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 Sky Generate a procedural sky texture Noise Generate fractal Perlin noise Wave Generate procedural bands or rings with noise 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
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 Bright Control the brightness and contrast of the input color Vector Map an input vectors to used to fine tune the interpolation of the input 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 a color
ATTR_WARN_UNUSED_RESULT BMesh * bm
ATTR_WARN_UNUSED_RESULT const BMVert * v
SIMD_FORCE_INLINE btScalar angle(const btVector3 &v) const
Return the angle between this and another vector.
const Depsgraph * depsgraph
IconTextureDrawCall normal
ccl_device_inline float4 mask(const int4 &mask, const float4 &a)
static float smooth_mask(float x, float y)
static float limit_radius(const float3 &position_prev, const float3 &position, const float3 &position_next, const float angle_prev, const float angle, const float angle_next, const float radius_prev, const float radius, const float radius_next)
thread_local int thread_id
static const pxr::TfToken out("out", pxr::TfToken::Immortal)
MutableSpan< float3 > normals
CCL_NAMESPACE_BEGIN ccl_device float fade(float t)
void SCULPT_OT_project_line_gesture(struct wmOperatorType *ot)
void SCULPT_flush_stroke_deform(struct Sculpt *sd, Object *ob, bool is_proxy_used)
@ SCULPT_EXPAND_FALLOFF_BOUNDARY_FACE_SET
@ SCULPT_EXPAND_FALLOFF_BOUNDARY_TOPOLOGY
@ SCULPT_EXPAND_FALLOFF_NORMALS
@ SCULPT_EXPAND_FALLOFF_SPHERICAL
@ SCULPT_EXPAND_FALLOFF_GEODESIC
@ SCULPT_EXPAND_FALLOFF_TOPOLOGY
@ SCULPT_EXPAND_FALLOFF_TOPOLOGY_DIAGONALS
@ SCULPT_EXPAND_FALLOFF_ACTIVE_FACE_SET
void SCULPT_OT_face_sets_init(struct wmOperatorType *ot)
bool SCULPT_brush_test_sphere(SculptBrushTest *test, const float co[3])
void SCULPT_undo_push_begin(struct Object *ob, const char *name)
void SCULPT_cloth_brush_store_simulation_state(struct SculptSession *ss, struct SculptClothSimulation *cloth_sim)
void SCULPT_dynamic_topology_triangulate(struct BMesh *bm)
void SCULPT_orig_vert_data_update(SculptOrigVertData *orig_data, PBVHVertexIter *iter)
bool SCULPT_get_redraw_rect(struct ARegion *region, struct RegionView3D *rv3d, Object *ob, rcti *rect)
void sculpt_dynamic_topology_disable_with_undo(struct Main *bmain, struct Depsgraph *depsgraph, Scene *scene, Object *ob)
void SCULPT_floodfill_add_and_skip_initial(SculptFloodFill *flood, int index)
void SCULPT_tilt_apply_to_normal(float r_normal[3], struct StrokeCache *cache, float tilt_strength)
void SCULPT_visibility_sync_all_face_sets_to_vertices(struct Object *ob)
BLI_INLINE bool SCULPT_tool_is_paint(int tool)
float * SCULPT_geodesic_distances_create(struct Object *ob, struct GSet *initial_vertices, float limit_radius)
void SCULPT_undo_push_end(struct Object *ob)
void SCULPT_filter_zero_disabled_axis_components(float r_v[3], struct FilterCache *filter_cache)
void SCULPT_do_inflate_brush(struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
struct SculptVertexNeighborIter SculptVertexNeighborIter
void SCULPT_OT_dyntopo_detail_size_edit(struct wmOperatorType *ot)
void SCULPT_orig_vert_data_init(SculptOrigVertData *data, Object *ob, PBVHNode *node, SculptUndoType type)
void SCULPT_OT_trim_lasso_gesture(struct wmOperatorType *ot)
void SCULPT_boundary_info_ensure(Object *object)
void SCULPT_vertcos_to_key(Object *ob, KeyBlock *kb, const float(*vertCos)[3])
void SCULPT_filter_to_orientation_space(float r_v[3], struct FilterCache *filter_cache)
void SCULPT_flip_quat_by_symm_area(float quat[4], ePaintSymmetryFlags symm, ePaintSymmetryAreas symmarea, const float pivot[3])
void SCULPT_OT_mask_filter(struct wmOperatorType *ot)
float SCULPT_raycast_init(struct ViewContext *vc, const float mval[2], float ray_start[3], float ray_end[3], float ray_normal[3], bool original)
PBVHNode ** SCULPT_cloth_brush_affected_nodes_gather(SculptSession *ss, Brush *brush, int *r_totnode)
int SCULPT_active_vertex_get(SculptSession *ss)
void SCULPT_do_pinch_brush(struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
void SCULPT_do_smear_brush(Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
bool SCULPT_poll(struct bContext *C)
bool SCULPT_stroke_get_location(struct bContext *C, float out[3], const float mouse[2], bool force_original)
bool SCULPT_cursor_geometry_info_update(bContext *C, SculptCursorGeometryInfo *out, const float mouse[2], bool use_sampled_normal)
bool SCULPT_use_image_paint_brush(struct PaintModeSettings *settings, Object *ob) ATTR_NONNULL()
int SCULPT_plane_point_side(const float co[3], const float plane[4])
void SCULPT_OT_face_set_lasso_gesture(struct wmOperatorType *ot)
void SCULPT_face_set_visibility_set(SculptSession *ss, int face_set, bool visible)
bool SCULPT_handles_colors_report(struct SculptSession *ss, struct ReportList *reports)
void SCULPT_do_mask_brush(struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
void SCULPT_floodfill_execute(struct SculptSession *ss, SculptFloodFill *flood, bool(*func)(SculptSession *ss, int from_v, int to_v, bool is_duplicate, void *userdata), void *userdata)
bool SCULPT_vertex_has_face_set(SculptSession *ss, int index, int face_set)
void SCULPT_vertex_persistent_normal_get(SculptSession *ss, int index, float no[3])
bool SCULPT_vertex_is_boundary(const SculptSession *ss, int index)
void SCULPT_cloth_plane_falloff_preview_draw(uint gpuattr, struct SculptSession *ss, const float outline_col[3], float outline_alpha)
float * SCULPT_boundary_automasking_init(Object *ob, eBoundaryAutomaskMode mode, int propagation_steps, float *automask_factor)
bool SCULPT_mode_poll_view3d(struct bContext *C)
float * SCULPT_geodesic_from_vertex(Object *ob, int vertex, float limit_radius)
void SCULPT_pose_brush_init(struct Sculpt *sd, struct Object *ob, struct SculptSession *ss, struct Brush *br)
bool SCULPT_vertex_has_unique_face_set(SculptSession *ss, int index)
struct SculptUndoNodeGeometry SculptUndoNodeGeometry
struct SculptClothSimulation * SCULPT_cloth_brush_simulation_create(struct Object *ob, float cloth_mass, float cloth_damping, float cloth_softbody_strength, bool use_collisions, bool needs_deform_coords)
void SCULPT_do_scrape_brush(struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
float * SCULPT_geodesic_from_vertex_and_symm(struct Sculpt *sd, struct Object *ob, int vertex, float limit_radius)
struct SculptPoseIKChain * SCULPT_pose_ik_chain_init(struct Sculpt *sd, struct Object *ob, struct SculptSession *ss, struct Brush *br, const float initial_location[3], float radius)
const float * SCULPT_brush_frontface_normal_from_falloff_shape(SculptSession *ss, char falloff_shape)
SculptBrushTestFn SCULPT_brush_test_init_with_falloff_shape(SculptSession *ss, SculptBrushTest *test, char falloff_shape)
void SCULPT_tilt_effective_normal_get(const SculptSession *ss, const Brush *brush, float r_no[3])
float SCULPT_clay_thumb_get_stabilized_pressure(struct StrokeCache *cache)
void SCULPT_do_paint_brush(struct PaintModeSettings *paint_mode_settings, Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode) ATTR_NONNULL()
struct SculptUndoNode SculptUndoNode
void SCULPT_do_displacement_smear_brush(struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
void SCULPT_floodfill_init(struct SculptSession *ss, SculptFloodFill *flood)
bool SCULPT_vertex_any_face_set_visible_get(SculptSession *ss, int index)
const float * SCULPT_vertex_co_for_grab_active_get(SculptSession *ss, int index)
void SCULPT_calc_brush_plane(struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode, float r_area_no[3], float r_area_co[3])
void SCULPT_do_clay_strips_brush(struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
void SCULPT_do_mask_brush_draw(struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
const float * SCULPT_vertex_co_get(struct SculptSession *ss, int index)
void SCULPT_vertex_face_set_set(SculptSession *ss, int index, int face_set)
enum eDynTopoWarnFlag SCULPT_dynamic_topology_check(Scene *scene, Object *ob)
eSculptExpandRecursionType
@ SCULPT_EXPAND_RECURSION_GEODESICS
@ SCULPT_EXPAND_RECURSION_TOPOLOGY
bool SCULPT_brush_test_circle_sq(SculptBrushTest *test, const float co[3])
struct SculptThreadedTaskData SculptThreadedTaskData
BLI_INLINE bool SCULPT_is_cloth_deform_brush(const Brush *brush)
void SCULPT_floodfill_add_initial(SculptFloodFill *flood, int index)
void SCULPT_OT_mesh_filter(struct wmOperatorType *ot)
struct AutomaskingCache AutomaskingCache
void SCULPT_dynamic_topology_disable(bContext *C, struct SculptUndoNode *unode)
void SCULPT_calc_area_normal_and_center(Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode, float r_area_no[3], float r_area_co[3])
bool SCULPT_is_symmetry_iteration_valid(char i, char symm)
void SCULPT_pbvh_clear(Object *ob)
void SCULPT_OT_set_pivot_position(struct wmOperatorType *ot)
void SCULPT_connected_components_ensure(Object *ob)
@ SCULPT_FILTER_ORIENTATION_WORLD
@ SCULPT_FILTER_ORIENTATION_VIEW
@ SCULPT_FILTER_ORIENTATION_LOCAL
const float * SCULPT_active_vertex_co_get(SculptSession *ss)
BLI_INLINE bool SCULPT_tool_needs_all_pbvh_nodes(const Brush *brush)
SculptTransformDisplacementMode
@ SCULPT_TRANSFORM_DISPLACEMENT_ORIGINAL
@ SCULPT_TRANSFORM_DISPLACEMENT_INCREMENTAL
void SCULPT_flush_update_done(const bContext *C, Object *ob, SculptUpdateType update_flags)
struct AutomaskingCache * SCULPT_automasking_cache_init(Sculpt *sd, Brush *brush, Object *ob)
void SCULPT_OT_dynamic_topology_toggle(struct wmOperatorType *ot)
bool SCULPT_search_sphere_cb(PBVHNode *node, void *data_v)
void SCULPT_do_displacement_eraser_brush(struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
void SCULPT_stroke_modifiers_check(const bContext *C, Object *ob, const Brush *brush)
void SCULPT_vertex_visible_set(SculptSession *ss, int index, bool visible)
void SCULPT_filter_to_object_space(float r_v[3], struct FilterCache *filter_cache)
void SCULPT_do_flatten_brush(struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
bool SCULPT_vertex_visible_get(SculptSession *ss, int index)
void SCULPT_vertex_color_set(SculptSession *ss, int index, const float color[4])
void SCULPT_combine_transform_proxies(Sculpt *sd, Object *ob)
void SCULPT_face_sets_visibility_all_set(SculptSession *ss, bool visible)
void SCULPT_do_clay_thumb_brush(struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
void sculpt_expand_modal_keymap(struct wmKeyConfig *keyconf)
void SCULPT_surface_smooth_laplacian_step(SculptSession *ss, float *disp, const float co[3], float(*laplacian_disp)[3], int v_index, const float origco[3], float alpha)
void SCULPT_relax_vertex(struct SculptSession *ss, struct PBVHVertexIter *vd, float factor, bool filter_boundary_face_sets, float *r_final_pos)
void SCULPT_face_sets_visibility_invert(SculptSession *ss)
int SCULPT_plane_trim(const struct StrokeCache *cache, const struct Brush *brush, const float val[3])
void SCULPT_do_smooth_brush(Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
void SCULPT_do_slide_relax_brush(struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
void SCULPT_flush_update_step(bContext *C, SculptUpdateType update_flags)
void SCULPT_orig_vert_data_unode_init(SculptOrigVertData *data, Object *ob, struct SculptUndoNode *unode)
void SCULPT_vertex_color_get(const SculptSession *ss, int index, float r_color[4])
void SCULPT_OT_expand(struct wmOperatorType *ot)
bool SCULPT_mode_poll(struct bContext *C)
void SCULPT_vertex_normal_get(SculptSession *ss, int index, float no[3])
void SCULPT_neighbor_coords_average(SculptSession *ss, float result[3], int index)
bool SCULPT_stroke_is_first_brush_step(struct StrokeCache *cache)
void SCULPT_bmesh_topology_rake(struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode, float bstrength)
void SCULPT_visibility_sync_all_vertex_to_face_sets(struct SculptSession *ss)
void SCULPT_vertex_limit_surface_get(SculptSession *ss, int index, float r_co[3])
float SCULPT_neighbor_mask_average(SculptSession *ss, int index)
bool SCULPT_stroke_is_dynamic_topology(const SculptSession *ss, const Brush *brush)
bool SCULPT_check_vertex_pivot_symmetry(const float vco[3], const float pco[3], char symm)
bool SCULPT_pbvh_calc_area_normal(const struct Brush *brush, Object *ob, PBVHNode **nodes, int totnode, bool use_threading, float r_area_no[3])
void SCULPT_undo_push_end_ex(struct Object *ob, const bool use_nested_undo)
void SCULPT_automasking_cache_free(struct AutomaskingCache *automasking)
void SCULPT_do_multiplane_scrape_brush(Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
void SCULPT_do_crease_brush(struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
bool SCULPT_poll_view3d(struct bContext *C)
bool(* SculptBrushTestFn)(SculptBrushTest *test, const float co[3])
float SCULPT_brush_plane_offset_get(Sculpt *sd, SculptSession *ss)
void SCULPT_floodfill_free(SculptFloodFill *flood)
void SCULPT_OT_set_detail_size(struct wmOperatorType *ot)
SculptUndoNode * SCULPT_undo_get_first_node(void)
float * SCULPT_brush_deform_target_vertex_co_get(SculptSession *ss, int deform_target, PBVHVertexIter *iter)
#define SCULPT_CLAY_STABILIZER_LEN
void SCULPT_bmesh_four_neighbor_average(float avg[3], float direction[3], struct BMVert *v)
void SCULPT_fake_neighbors_enable(Object *ob)
void SCULPT_vertex_random_access_ensure(struct SculptSession *ss)
void SCULPT_OT_face_sets_edit(struct wmOperatorType *ot)
void SCULPT_do_cloth_brush(struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
@ SCULPT_UPDATE_VISIBILITY
void SCULPT_OT_brush_stroke(struct wmOperatorType *ot)
#define SCULPT_VERTEX_NEIGHBOR_FIXED_CAPACITY
void SCULPT_active_vertex_normal_get(SculptSession *ss, float normal[3])
void SCULPT_update_object_bounding_box(struct Object *ob)
void SCULPT_do_pose_brush(struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
bool SCULPT_vertex_all_face_sets_visible_get(const SculptSession *ss, int index)
void SCULPT_do_layer_brush(struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
void SCULPT_dynamic_topology_enable_ex(struct Main *bmain, struct Depsgraph *depsgraph, Scene *scene, Object *ob)
void SCULPT_do_nudge_brush(struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
void SCULPT_floodfill_add_initial_with_symmetry(struct Sculpt *sd, struct Object *ob, struct SculptSession *ss, SculptFloodFill *flood, int index, float radius)
void SCULPT_fake_neighbors_ensure(struct Sculpt *sd, Object *ob, float max_dist)
void SCULPT_multiplane_scrape_preview_draw(uint gpuattr, Brush *brush, SculptSession *ss, const float outline_col[3], float outline_alpha)
void SCULPT_do_fill_brush(struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
void SCULPT_do_elastic_deform_brush(struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
void SCULPT_cloth_simulation_free(struct SculptClothSimulation *cloth_sim)
struct SculptBrushTest SculptBrushTest
void SCULPT_do_surface_smooth_brush(Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
bool SCULPT_brush_test_sphere_sq(SculptBrushTest *test, const float co[3])
int SCULPT_vertex_face_set_get(SculptSession *ss, int index)
void SCULPT_do_grab_brush(struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
struct SculptBoundary * SCULPT_boundary_data_init(Object *object, Brush *brush, int initial_vertex, float radius)
void SCULPT_do_rotate_brush(struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
void SCULPT_OT_face_set_box_gesture(struct wmOperatorType *ot)
struct FilterCache FilterCache
struct AutomaskingCache * SCULPT_automasking_active_cache_get(SculptSession *ss)
void SCULPT_do_clay_brush(struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
void SCULPT_do_draw_brush(struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
SculptUndoNode * SCULPT_undo_push_node(Object *ob, PBVHNode *node, SculptUndoType type)
void SCULPT_fake_neighbors_disable(Object *ob)
SculptUndoNode * SCULPT_undo_get_node(PBVHNode *node, SculptUndoType type)
struct AutomaskingSettings AutomaskingSettings
void SCULPT_do_thumb_brush(struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
void SCULPT_boundary_edges_preview_draw(uint gpuattr, struct SculptSession *ss, const float outline_col[3], float outline_alpha)
void SCULPT_OT_detail_flood_fill(struct wmOperatorType *ot)
struct SculptCursorGeometryInfo SculptCursorGeometryInfo
int SCULPT_face_set_next_available_get(SculptSession *ss)
void SCULPT_neighbor_coords_average_interior(SculptSession *ss, float result[3], int index)
void SCULPT_flip_v3_by_symm_area(float v[3], ePaintSymmetryFlags symm, ePaintSymmetryAreas symmarea, const float pivot[3])
bool SCULPT_has_loop_colors(const struct Object *ob)
int SCULPT_nearest_vertex_get(struct Sculpt *sd, struct Object *ob, const float co[3], float max_distance, bool use_original)
void SCULPT_cloth_brush_simulation_init(struct SculptSession *ss, struct SculptClothSimulation *cloth_sim)
void SCULPT_dyntopo_node_layers_add(struct SculptSession *ss)
void SCULPT_do_boundary_brush(struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
char SCULPT_mesh_symmetry_xyz_get(Object *object)
void SCULPT_neighbor_color_average(SculptSession *ss, float result[4], int index)
bool SCULPT_is_vertex_inside_brush_radius_symm(const float vertex[3], const float br_co[3], float radius, char symm)
void SCULPT_OT_face_sets_create(struct wmOperatorType *ot)
void SCULPT_floodfill_add_active(struct Sculpt *sd, struct Object *ob, struct SculptSession *ss, SculptFloodFill *flood, float radius)
void SCULPT_filter_cache_init(struct bContext *C, Object *ob, Sculpt *sd, int undo_type)
void SCULPT_filter_cache_free(SculptSession *ss)
bool SCULPT_stroke_is_first_brush_step_of_symmetry_pass(struct StrokeCache *cache)
void SCULPT_geometry_preview_lines_update(bContext *C, struct SculptSession *ss, float radius)
void SCULPT_cache_calc_brushdata_symm(StrokeCache *cache, char symm, char axis, float angle)
bool SCULPT_search_circle_cb(PBVHNode *node, void *data_v)
@ AUTOMASK_INIT_BOUNDARY_EDGES
@ AUTOMASK_INIT_BOUNDARY_FACE_SETS
void SCULPT_do_snake_hook_brush(struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
void SCULPT_cache_free(StrokeCache *cache)
void SCULPT_fake_neighbors_free(struct Object *ob)
float SCULPT_vertex_mask_get(struct SculptSession *ss, int index)
bool SCULPT_is_automasking_mode_enabled(const Sculpt *sd, const Brush *br, eAutomasking_flag mode)
void SCULPT_do_draw_sharp_brush(struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
void SCULPT_do_paint_brush_image(struct PaintModeSettings *paint_mode_settings, Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode) ATTR_NONNULL()
void SCULPT_OT_face_sets_randomize_colors(struct wmOperatorType *ot)
void SCULPT_calc_area_normal(Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode, float r_area_no[3])
struct StrokeCache StrokeCache
void SCULPT_OT_cloth_filter(struct wmOperatorType *ot)
bool SCULPT_brush_test_cube(SculptBrushTest *test, const float co[3], const float local[4][4], float roundness)
float SCULPT_automasking_factor_get(struct AutomaskingCache *automasking, SculptSession *ss, int vert)
void SCULPT_OT_sample_detail_size(struct wmOperatorType *ot)
const float * SCULPT_vertex_persistent_co_get(SculptSession *ss, int index)
void SCULPT_OT_color_filter(struct wmOperatorType *ot)
void SCULPT_surface_smooth_displace_step(SculptSession *ss, float *co, float(*laplacian_disp)[3], int v_index, float beta, float fade)
void SCULPT_brush_test_init(struct SculptSession *ss, SculptBrushTest *test)
float SCULPT_brush_strength_factor(struct SculptSession *ss, const struct Brush *br, const float point[3], float len, const float vno[3], const float fno[3], float mask, int vertex_index, int thread_id)
void SCULPT_OT_trim_box_gesture(struct wmOperatorType *ot)
bool SCULPT_stroke_is_main_symmetry_pass(struct StrokeCache *cache)
ePaintSymmetryAreas SCULPT_get_vertex_symm_area(const float co[3])
struct MVert * SCULPT_mesh_deformed_mverts_get(SculptSession *ss)
void SCULPT_cloth_brush_do_simulation_step(struct Sculpt *sd, struct Object *ob, struct SculptClothSimulation *cloth_sim, struct PBVHNode **nodes, int totnode)
bool SCULPT_is_automasking_enabled(const Sculpt *sd, const SculptSession *ss, const Brush *br)
#define EXPAND_SYMM_AREAS
void SCULPT_cloth_simulation_limits_draw(uint gpuattr, const struct Brush *brush, const float location[3], const float normal[3], float rds, float line_width, const float outline_col[3], float alpha)
int SCULPT_active_face_set_get(SculptSession *ss)
void SCULPT_boundary_data_free(struct SculptBoundary *boundary)
@ SCULPT_EXPAND_TARGET_COLORS
@ SCULPT_EXPAND_TARGET_FACE_SETS
@ SCULPT_EXPAND_TARGET_MASK
void SCULPT_mask_filter_smooth_apply(Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode, int smooth_iterations)
void SCULPT_OT_mask_init(struct wmOperatorType *ot)
void SCULPT_OT_dirty_mask(struct wmOperatorType *ot)
void SCULPT_do_draw_face_sets_brush(Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
int SCULPT_vertex_count_get(struct SculptSession *ss)
void SCULPT_smooth(Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode, float bstrength, bool smooth_mask)
void SCULPT_boundary_pivot_line_preview_draw(uint gpuattr, struct SculptSession *ss)
struct ExpandCache ExpandCache
void SCULPT_clip(Sculpt *sd, SculptSession *ss, float co[3], const float val[3])
void SCULPT_OT_face_sets_change_visibility(struct wmOperatorType *ot)
bool SCULPT_has_colors(const SculptSession *ss)
void SCULPT_pose_ik_chain_free(struct SculptPoseIKChain *ik_chain)
void SCULPT_cloth_brush_ensure_nodes_constraints(struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode, struct SculptClothSimulation *cloth_sim, float initial_location[3], float radius)
@ SCULPT_UNDO_DYNTOPO_SYMMETRIZE
@ SCULPT_UNDO_DYNTOPO_END
@ SCULPT_UNDO_DYNTOPO_BEGIN
void SCULPT_calc_area_center(Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode, float r_area_co[3])
void SCULPT_cloth_sim_activate_nodes(struct SculptClothSimulation *cloth_sim, PBVHNode **nodes, int totnode)
void SCULPT_tag_update_overlays(bContext *C)
bool SCULPT_brush_test_sphere_fast(const SculptBrushTest *test, const float co[3])
void SCULPT_vertex_neighbors_get(struct SculptSession *ss, int index, bool include_duplicates, SculptVertexNeighborIter *iter)
void SCULPT_OT_mask_expand(struct wmOperatorType *ot)
bool SCULPT_paint_image_canvas_get(struct PaintModeSettings *paint_mode_settings, struct Object *ob, struct Image **r_image, struct ImageUser **r_image_user) ATTR_NONNULL()
Get the image canvas for painting on the given object.
void SCULPT_pose_calc_pose_data(struct Sculpt *sd, struct Object *ob, struct SculptSession *ss, float initial_location[3], float radius, float pose_offset, float *r_pose_origin, float *r_pose_factor)
AutomaskingSettings settings
int snake_hook_deform_type
eSculptExpandFalloffType falloff_type
eSculptExpandFalloffType move_original_falloff_type
int max_geodesic_move_preview
int initial_active_vertex
float texture_distortion_strength
int initial_active_face_set
eSculptExpandTargetType target
GSet * snap_enabled_face_sets
float initial_mouse_move[2]
eSculptExpandFalloffType move_preview_falloff_type
bool modify_active_face_set
float(* original_colors)[4]
int active_connected_components[EXPAND_SYMM_AREAS]
float original_mouse_move[2]
float surface_smooth_current_vertex
float(* detail_directions)[3]
SculptTransformDisplacementMode transform_displacement_mode
AutomaskingCache * automasking
SculptFilterOrientation orientation
float cloth_sim_pinch_point[3]
int sharpen_curvature_smooth_iterations
float(* surface_smooth_laplacian_disp)[3]
float sharpen_smooth_ratio
float(* limit_surface_co)[3]
float mask_expand_initial_co[3]
float sharpen_intensify_detail_strength
float(* pre_smoothed_color)[4]
SculptClothSimulation * cloth_sim
float surface_smooth_shape_preservation
int mask_update_current_it
bool enabled_force_axis[3]
struct RegionView3D * clip_rv3d
float symm_rot_mat_inv[4][4]
float active_vertex_co[3]
BLI_bitmap * visited_vertices
struct SculptUndoNode * unode
struct SculptSession * ss
struct DistRayAABB_Precalc * dist_ray_to_aabb_precalc
bool ignore_fully_ineffective
bool ignore_fully_ineffective
struct SculptSession * ss
bool dirty_mask_dirty_only
const struct Brush * brush
float * mask_by_color_floodfill
float elastic_transform_pivot_init[3]
SculptClothSimulation * cloth_sim
float * filter_fill_color
float mask_by_color_threshold
float nearest_vertex_search_co[3]
struct SculptProjectVector * spvc
bool mask_expand_use_normals
int mask_expand_update_it
bool mask_expand_keep_prev_mask
float * cloth_sim_initial_location
bool mask_expand_invert_mask
float max_distance_squared
struct WeightPaintInfo * wpi
float multiplane_scrape_planes[2][4]
float elastic_transform_mat[4][4]
bool mask_by_color_invert
bool mask_expand_create_face_set
float elastic_transform_radius
float transform_mats[8][4][4]
float multiplane_scrape_angle
float * wet_mix_sampled_color
float boundary_deform_strength
float elastic_transform_pivot[3]
bool mask_by_color_preserve_mask
struct BMLogEntry * bm_entry
struct SculptUndoNode * prev
float(* orig_loop_col)[4]
BLI_bitmap ** grid_hidden
SculptUndoNodeGeometry geometry_modified
SculptUndoNodeGeometry geometry_bmesh_enter
char shapeName[sizeof(((KeyBlock *) 0)) ->name]
SculptUndoNodeGeometry geometry_original
struct SculptUndoNode * next
int neighbors_fixed[SCULPT_VERTEX_NEIGHBOR_FIXED_CAPACITY]
float wet_mix_prev_color[4]
float orig_grab_location[3]
float old_grab_location[3]
const struct Brush * brush
float brush_local_mat[4][4]
float symm_rot_mat_inv[4][4]
float initial_location[3]
float clip_mirror_mtx[4][4]
float true_view_normal[3]
float projection_mat[4][4]
void * prev_colors_vpaint
float anchored_location[3]
char saved_active_brush_name[MAX_ID_NAME]
struct SculptPoseIKChain * pose_ik_chain
struct SculptBoundary * boundaries[PAINT_SYMM_AREAS]
struct StrokeCache::@514 paint_brush
float sculpt_normal_symm[3]
float(* limit_surface_co)[3]
struct SculptRakeData rake_data
float(* surface_smooth_laplacian_disp)[3]
float true_initial_location[3]
float multiplane_scrape_angle
float grab_delta_symmetry[3]
AutomaskingCache * automasking
float stroke_local_mat[4][4]
struct SculptClothSimulation * cloth_sim
float true_last_location[3]
float true_initial_normal[3]
float(* prev_displacement)[3]
bool is_rake_rotation_valid
float gravity_direction[3]
float(* detail_directions)[3]
float true_gravity_direction[3]
float * layer_displacement_factor
char saved_mask_brush_tool
float clay_pressure_stabilizer[SCULPT_CLAY_STABILIZER_LEN]
int clay_pressure_stabilizer_index
float clay_thumb_front_angle
float rake_rotation_symmetry[4]
float dyntopo_pixel_radius
ccl_device_inline float beta(float x, float y)