83 bool use_sampled_normal);
119 const int deform_target,
122 #define SCULPT_VERTEX_NEIGHBOR_FIXED_CAPACITY 256
141 const bool include_duplicates,
145 #define SCULPT_VERTEX_NEIGHBORS_ITER_BEGIN(ss, v_index, neighbor_iterator) \
146 SCULPT_vertex_neighbors_get(ss, v_index, false, &neighbor_iterator); \
147 for (neighbor_iterator.i = 0; neighbor_iterator.i < neighbor_iterator.size; \
148 neighbor_iterator.i++) { \
149 neighbor_iterator.index = neighbor_iterator.neighbors[neighbor_iterator.i];
153 #define SCULPT_VERTEX_DUPLICATES_AND_NEIGHBORS_ITER_BEGIN(ss, v_index, neighbor_iterator) \
154 SCULPT_vertex_neighbors_get(ss, v_index, true, &neighbor_iterator); \
155 for (neighbor_iterator.i = neighbor_iterator.size - 1; neighbor_iterator.i >= 0; \
156 neighbor_iterator.i--) { \
157 neighbor_iterator.index = neighbor_iterator.neighbors[neighbor_iterator.i]; \
158 neighbor_iterator.is_duplicate = (neighbor_iterator.i >= \
159 neighbor_iterator.size - neighbor_iterator.num_duplicates);
161 #define SCULPT_VERTEX_NEIGHBORS_ITER_END(neighbor_iterator) \
163 if (neighbor_iterator.neighbors != neighbor_iterator.neighbors_fixed) { \
164 MEM_freeN(neighbor_iterator.neighbors); \
178 #define FAKE_NEIGHBOR_NONE -1
264 const struct Brush *brush,
273 const float br_co[3],
280 const float pivot[3]);
284 const float pivot[3]);
309 bool (*func)(
SculptSession *ss,
int from_v,
int to_v,
bool is_duplicate,
void *userdata),
364 int propagation_steps,
365 float *automask_factor);
374 struct GSet *initial_vertices,
375 const float limit_radius);
379 const float limit_radius);
401 const float cloth_mass,
402 const float cloth_damping,
403 const float cloth_softbody_strength,
404 const bool use_collisions,
405 const bool needs_deform_coords);
427 float initial_location[3],
431 const struct Brush *brush,
432 const float location[3],
435 const float line_width,
436 const float outline_col[3],
440 const float outline_col[3],
441 float outline_alpha);
498 float initial_location[3],
501 float *r_pose_origin,
502 float *r_pose_factor);
511 const float initial_location[3],
528 const float outline_col[3],
529 const float outline_alpha);
537 const float outline_col[3],
538 const float outline_alpha);
563 const bool smooth_mask);
571 float (*laplacian_disp)[3],
573 const float origco[3],
577 float (*laplacian_disp)[3],
587 bool filter_boundary_face_sets,
680 #define SCULPT_RAKE_BRUSH_FACTOR 0.25f
850 const float local[4][4],
851 const float roundness);
863 const struct Brush *br,
864 const float point[3],
869 const int vertex_index,
870 const int thread_id);
875 const float tilt_strength);
894 #define SCULPT_CLAY_STABILIZER_LEN 10
1114 #define EXPAND_SYMM_AREAS 8
typedef float(TangentPoint)[2]
A BVH for high poly meshes.
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
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
static CCL_NAMESPACE_BEGIN const double alpha
static float normals[][3]
IconTextureDrawCall normal
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_surface_smooth_laplacian_step(SculptSession *ss, float *disp, const float co[3], float(*laplacian_disp)[3], const int v_index, const float origco[3], const float alpha)
void SCULPT_visibility_sync_all_face_sets_to_vertices(struct Object *ob)
struct SculptClothSimulation * SCULPT_cloth_brush_simulation_create(struct SculptSession *ss, const float cloth_mass, const float cloth_damping, const float cloth_softbody_strength, const bool use_collisions, const bool needs_deform_coords)
void SCULPT_filter_zero_disabled_axis_components(float r_v[3], struct FilterCache *filter_cache)
struct SculptVertexNeighborIter SculptVertexNeighborIter
void SCULPT_OT_dyntopo_detail_size_edit(struct wmOperatorType *ot)
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_OT_mask_filter(struct wmOperatorType *ot)
PBVHNode ** SCULPT_cloth_brush_affected_nodes_gather(SculptSession *ss, Brush *brush, int *r_totnode)
int SCULPT_active_vertex_get(SculptSession *ss)
void SCULPT_do_smear_brush(Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
bool SCULPT_poll(struct bContext *C)
float * SCULPT_geodesic_distances_create(struct Object *ob, struct GSet *initial_vertices, const float limit_radius)
bool SCULPT_cursor_geometry_info_update(bContext *C, SculptCursorGeometryInfo *out, const float mouse[2], bool use_sampled_normal)
void SCULPT_filter_cache_init(struct bContext *C, Object *ob, Sculpt *sd, const int undo_type)
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)
float SCULPT_brush_strength_factor(struct SculptSession *ss, const struct Brush *br, const float point[3], const float len, const short vno[3], const float fno[3], const float mask, const int vertex_index, const int thread_id)
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])
SculptUndoNode * SCULPT_undo_get_node(PBVHNode *node)
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_raycast_init(struct ViewContext *vc, const float mouse[2], float ray_start[3], float ray_end[3], float ray_normal[3], bool original)
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], const float 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
void SCULPT_cache_calc_brushdata_symm(StrokeCache *cache, const char symm, const char axis, const float angle)
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])
struct SculptUndoNode SculptUndoNode
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])
const float * SCULPT_vertex_co_get(struct SculptSession *ss, int index)
void SCULPT_multiplane_scrape_preview_draw(const uint gpuattr, Brush *brush, SculptSession *ss, const float outline_col[3], const float outline_alpha)
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_boundary_edges_preview_draw(const uint gpuattr, struct SculptSession *ss, const float outline_col[3], const float outline_alpha)
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
bool SCULPT_stroke_get_location(struct bContext *C, float out[3], const float mouse[2])
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_brush_test_cube(SculptBrushTest *test, const float co[3], const float local[4][4], const float roundness)
bool SCULPT_search_sphere_cb(PBVHNode *node, void *data_v)
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)
bool SCULPT_vertex_visible_get(SculptSession *ss, int index)
void SCULPT_face_sets_visibility_all_set(SculptSession *ss, bool visible)
float * SCULPT_brush_deform_target_vertex_co_get(SculptSession *ss, const int deform_target, PBVHVertexIter *iter)
void sculpt_expand_modal_keymap(struct wmKeyConfig *keyconf)
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_flush_update_step(bContext *C, SculptUpdateType update_flags)
void SCULPT_orig_vert_data_unode_init(SculptOrigVertData *data, Object *ob, struct SculptUndoNode *unode)
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_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)
void SCULPT_surface_smooth_displace_step(SculptSession *ss, float *co, float(*laplacian_disp)[3], const int v_index, const float beta, const float fade)
void SCULPT_cloth_simulation_limits_draw(const uint gpuattr, const struct Brush *brush, const float location[3], const float normal[3], const float rds, const float line_width, const float outline_col[3], const float alpha)
bool SCULPT_stroke_is_dynamic_topology(const SculptSession *ss, const Brush *brush)
bool SCULPT_vertex_is_boundary(const SculptSession *ss, const int index)
void SCULPT_flip_v3_by_symm_area(float v[3], const ePaintSymmetryFlags symm, const ePaintSymmetryAreas symmarea, const float pivot[3])
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_smooth(Sculpt *sd, Object *ob, PBVHNode **nodes, const int totnode, float bstrength, const bool smooth_mask)
void SCULPT_automasking_cache_free(struct AutomaskingCache *automasking)
void SCULPT_do_multiplane_scrape_brush(Sculpt *sd, Object *ob, 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)
void SCULPT_undo_push_end_ex(const bool use_nested_undo)
SculptUndoNode * SCULPT_undo_get_first_node(void)
#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
#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)
void SCULPT_mask_filter_smooth_apply(Sculpt *sd, Object *ob, PBVHNode **nodes, const int totnode, const int smooth_iterations)
void SCULPT_flip_quat_by_symm_area(float quat[3], const ePaintSymmetryFlags symm, const ePaintSymmetryAreas symmarea, const float pivot[3])
bool SCULPT_vertex_all_face_sets_visible_get(const SculptSession *ss, int index)
void SCULPT_boundary_pivot_line_preview_draw(const uint gpuattr, struct SculptSession *ss)
const float * SCULPT_vertex_color_get(SculptSession *ss, int index)
void SCULPT_dynamic_topology_enable_ex(struct Main *bmain, struct Depsgraph *depsgraph, Scene *scene, Object *ob)
void SCULPT_floodfill_add_initial_with_symmetry(struct Sculpt *sd, struct Object *ob, struct SculptSession *ss, SculptFloodFill *flood, int index, float radius)
void SCULPT_undo_push_end(void)
void SCULPT_cloth_simulation_free(struct SculptClothSimulation *cloth_sim)
struct SculptBrushTest SculptBrushTest
bool SCULPT_is_automasking_mode_enabled(const Sculpt *sd, const Brush *br, const eAutomasking_flag mode)
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_OT_face_set_box_gesture(struct wmOperatorType *ot)
struct FilterCache FilterCache
struct AutomaskingCache * SCULPT_automasking_active_cache_get(SculptSession *ss)
SculptUndoNode * SCULPT_undo_push_node(Object *ob, PBVHNode *node, SculptUndoType type)
void SCULPT_fake_neighbors_disable(Object *ob)
struct AutomaskingSettings AutomaskingSettings
float * SCULPT_geodesic_from_vertex(Object *ob, const int vertex, const float limit_radius)
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_vertex_neighbors_get(struct SculptSession *ss, const int index, const bool include_duplicates, SculptVertexNeighborIter *iter)
int SCULPT_nearest_vertex_get(struct Sculpt *sd, struct Object *ob, const float co[3], float max_distance, bool use_original)
struct SculptBoundary * SCULPT_boundary_data_init(Object *object, Brush *brush, const int initial_vertex, const float radius)
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)
struct SculptPoseIKChain * SCULPT_pose_ik_chain_init(struct Sculpt *sd, struct Object *ob, struct SculptSession *ss, struct Brush *br, const float initial_location[3], const float radius)
void SCULPT_do_paint_brush(Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
void SCULPT_floodfill_add_active(struct Sculpt *sd, struct Object *ob, struct SculptSession *ss, SculptFloodFill *flood, float radius)
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)
bool SCULPT_search_circle_cb(PBVHNode *node, void *data_v)
void SCULPT_fake_neighbors_ensure(struct Sculpt *sd, Object *ob, const float max_dist)
@ AUTOMASK_INIT_BOUNDARY_EDGES
@ AUTOMASK_INIT_BOUNDARY_FACE_SETS
bool SCULPT_check_vertex_pivot_symmetry(const float vco[3], const float pco[3], const char symm)
void SCULPT_cache_free(StrokeCache *cache)
void SCULPT_fake_neighbors_free(struct Object *ob)
float SCULPT_vertex_mask_get(struct SculptSession *ss, int index)
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_vertex_colors_poll(struct bContext *C)
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)
float * SCULPT_geodesic_from_vertex_and_symm(struct Sculpt *sd, struct Object *ob, const int vertex, const float limit_radius)
void SCULPT_brush_test_init(struct SculptSession *ss, SculptBrushTest *test)
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_tilt_apply_to_normal(float r_normal[3], struct StrokeCache *cache, const float tilt_strength)
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_cloth_plane_falloff_preview_draw(const uint gpuattr, struct SculptSession *ss, const float outline_col[3], float outline_alpha)
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)
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)
void SCULPT_orig_vert_data_init(SculptOrigVertData *data, Object *ob, PBVHNode *node)
void SCULPT_pose_ik_chain_free(struct SculptPoseIKChain *ik_chain)
@ SCULPT_UNDO_DYNTOPO_SYMMETRIZE
@ SCULPT_UNDO_DYNTOPO_END
@ SCULPT_UNDO_DYNTOPO_BEGIN
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_OT_mask_expand(struct wmOperatorType *ot)
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
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
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]
bool mask_by_color_invert
bool mask_expand_create_face_set
float transform_mats[8][4][4]
float multiplane_scrape_angle
float * wet_mix_sampled_color
float boundary_deform_strength
bool mask_by_color_preserve_mask
struct BMLogEntry * bm_entry
struct SculptUndoNode * prev
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]
float anchored_location[3]
char saved_active_brush_name[MAX_ID_NAME]
struct SculptPoseIKChain * pose_ik_chain
struct SculptBoundary * boundaries[PAINT_SYMM_AREAS]
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]
struct StrokeCache::@489 paint_brush
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_NAMESPACE_BEGIN ccl_device float fade(float t)
ccl_device_inline float beta(float x, float y)
ccl_device_inline float4 mask(const int4 &mask, const float4 &a)