Blender  V3.3
Classes | Functions
sculpt_intern.h File Reference
#include "DNA_brush_types.h"
#include "DNA_key_types.h"
#include "DNA_listBase.h"
#include "DNA_meshdata_types.h"
#include "DNA_scene_types.h"
#include "DNA_vec_types.h"
#include "BKE_paint.h"
#include "BKE_pbvh.h"
#include "BLI_bitmap.h"
#include "BLI_compiler_attrs.h"
#include "BLI_compiler_compat.h"
#include "BLI_gsqueue.h"
#include "BLI_threads.h"

Go to the source code of this file.

Classes

struct  SculptCursorGeometryInfo
 
struct  SculptVertexNeighborIter
 
struct  SculptOrigVertData
 
struct  SculptFloodFill
 
struct  SculptUndoNodeGeometry
 
struct  SculptUndoNode
 
struct  SculptRakeData
 
struct  SculptThreadedTaskData
 
struct  SculptBrushTest
 
struct  SculptSearchSphereData
 
struct  SculptSearchCircleData
 
struct  AutomaskingSettings
 
struct  AutomaskingCache
 
struct  FilterCache
 
struct  StrokeCache
 
struct  ExpandCache
 

Functions

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_cache_calc_brushdata_symm (StrokeCache *cache, char symm, char axis, float angle)
 
void SCULPT_cache_free (StrokeCache *cache)
 
void SCULPT_vertcos_to_key (Object *ob, KeyBlock *kb, const float(*vertCos)[3])
 
void SCULPT_update_object_bounding_box (struct Object *ob)
 
bool SCULPT_get_redraw_rect (struct ARegion *region, struct RegionView3D *rv3d, Object *ob, rcti *rect)
 
void SCULPT_OT_dynamic_topology_toggle (struct wmOperatorType *ot)
 
void SCULPT_bmesh_topology_rake (struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode, float bstrength)
 
void SCULPT_OT_brush_stroke (struct wmOperatorType *ot)
 
BLI_INLINE bool SCULPT_tool_is_paint (int tool)
 
Sculpt Poll Functions
bool SCULPT_mode_poll (struct bContext *C)
 
bool SCULPT_mode_poll_view3d (struct bContext *C)
 
bool SCULPT_poll (struct bContext *C)
 
bool SCULPT_poll_view3d (struct bContext *C)
 
bool SCULPT_handles_colors_report (struct SculptSession *ss, struct ReportList *reports)
 
Sculpt Update Functions
void SCULPT_flush_update_step (bContext *C, SculptUpdateType update_flags)
 
void SCULPT_flush_update_done (const bContext *C, Object *ob, SculptUpdateType update_flags)
 
void SCULPT_pbvh_clear (Object *ob)
 
void SCULPT_flush_stroke_deform (struct Sculpt *sd, Object *ob, bool is_proxy_used)
 
void SCULPT_tag_update_overlays (bContext *C)
 
Stroke Functions
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)
 
void SCULPT_geometry_preview_lines_update (bContext *C, struct SculptSession *ss, float radius)
 
void SCULPT_stroke_modifiers_check (const bContext *C, Object *ob, const Brush *brush)
 
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)
 
char SCULPT_mesh_symmetry_xyz_get (Object *object)
 
bool SCULPT_stroke_is_main_symmetry_pass (struct StrokeCache *cache)
 
bool SCULPT_stroke_is_first_brush_step (struct StrokeCache *cache)
 
bool SCULPT_stroke_is_first_brush_step_of_symmetry_pass (struct StrokeCache *cache)
 
Sculpt Visibility API
void SCULPT_vertex_visible_set (SculptSession *ss, int index, bool visible)
 
bool SCULPT_vertex_visible_get (SculptSession *ss, int index)
 
void SCULPT_visibility_sync_all_face_sets_to_vertices (struct Object *ob)
 
void SCULPT_visibility_sync_all_vertex_to_face_sets (struct SculptSession *ss)
 
Face Sets API
int SCULPT_active_face_set_get (SculptSession *ss)
 
int SCULPT_vertex_face_set_get (SculptSession *ss, int index)
 
void SCULPT_vertex_face_set_set (SculptSession *ss, int index, int face_set)
 
bool SCULPT_vertex_has_face_set (SculptSession *ss, int index, int face_set)
 
bool SCULPT_vertex_has_unique_face_set (SculptSession *ss, int index)
 
int SCULPT_face_set_next_available_get (SculptSession *ss)
 
void SCULPT_face_set_visibility_set (SculptSession *ss, int face_set, bool visible)
 
bool SCULPT_vertex_all_face_sets_visible_get (const SculptSession *ss, int index)
 
bool SCULPT_vertex_any_face_set_visible_get (SculptSession *ss, int index)
 
void SCULPT_face_sets_visibility_invert (SculptSession *ss)
 
void SCULPT_face_sets_visibility_all_set (SculptSession *ss, bool visible)
 
Original Data API
void SCULPT_orig_vert_data_init (SculptOrigVertData *data, Object *ob, PBVHNode *node, SculptUndoType type)
 
void SCULPT_orig_vert_data_update (SculptOrigVertData *orig_data, PBVHVertexIter *iter)
 
void SCULPT_orig_vert_data_unode_init (SculptOrigVertData *data, Object *ob, struct SculptUndoNode *unode)
 
Brush Utilities.
BLI_INLINE bool SCULPT_tool_needs_all_pbvh_nodes (const Brush *brush)
 
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_calc_area_normal (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode, float r_area_no[3])
 
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])
 
void SCULPT_calc_area_center (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode, float r_area_co[3])
 
int SCULPT_nearest_vertex_get (struct Sculpt *sd, struct Object *ob, const float co[3], float max_distance, bool use_original)
 
int SCULPT_plane_point_side (const float co[3], const float plane[4])
 
int SCULPT_plane_trim (const struct StrokeCache *cache, const struct Brush *brush, const float val[3])
 
void SCULPT_clip (Sculpt *sd, SculptSession *ss, float co[3], const float val[3])
 
float SCULPT_brush_plane_offset_get (Sculpt *sd, SculptSession *ss)
 
ePaintSymmetryAreas SCULPT_get_vertex_symm_area (const float co[3])
 
bool SCULPT_check_vertex_pivot_symmetry (const float vco[3], const float pco[3], char symm)
 
bool SCULPT_is_vertex_inside_brush_radius_symm (const float vertex[3], const float br_co[3], float radius, char symm)
 
bool SCULPT_is_symmetry_iteration_valid (char i, char symm)
 
void SCULPT_flip_v3_by_symm_area (float v[3], ePaintSymmetryFlags symm, ePaintSymmetryAreas symmarea, const float pivot[3])
 
void SCULPT_flip_quat_by_symm_area (float quat[4], ePaintSymmetryFlags symm, ePaintSymmetryAreas symmarea, const float pivot[3])
 
void SCULPT_brush_test_init (struct SculptSession *ss, SculptBrushTest *test)
 
bool SCULPT_brush_test_sphere (SculptBrushTest *test, const float co[3])
 
bool SCULPT_brush_test_sphere_sq (SculptBrushTest *test, const float co[3])
 
bool SCULPT_brush_test_sphere_fast (const SculptBrushTest *test, const float co[3])
 
bool SCULPT_brush_test_cube (SculptBrushTest *test, const float co[3], const float local[4][4], float roundness)
 
bool SCULPT_brush_test_circle_sq (SculptBrushTest *test, const float co[3])
 
bool SCULPT_search_sphere_cb (PBVHNode *node, void *data_v)
 
bool SCULPT_search_circle_cb (PBVHNode *node, void *data_v)
 
void SCULPT_combine_transform_proxies (Sculpt *sd, Object *ob)
 
SculptBrushTestFn SCULPT_brush_test_init_with_falloff_shape (SculptSession *ss, SculptBrushTest *test, char falloff_shape)
 
const floatSCULPT_brush_frontface_normal_from_falloff_shape (SculptSession *ss, char falloff_shape)
 
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_tilt_apply_to_normal (float r_normal[3], struct StrokeCache *cache, float tilt_strength)
 
void SCULPT_tilt_effective_normal_get (const SculptSession *ss, const Brush *brush, float r_no[3])
 
Flood Fill
void SCULPT_floodfill_init (struct SculptSession *ss, SculptFloodFill *flood)
 
void SCULPT_floodfill_add_active (struct Sculpt *sd, struct Object *ob, struct SculptSession *ss, SculptFloodFill *flood, float radius)
 
void SCULPT_floodfill_add_initial_with_symmetry (struct Sculpt *sd, struct Object *ob, struct SculptSession *ss, SculptFloodFill *flood, int index, float radius)
 
void SCULPT_floodfill_add_initial (SculptFloodFill *flood, int index)
 
void SCULPT_floodfill_add_and_skip_initial (SculptFloodFill *flood, int index)
 
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)
 
void SCULPT_floodfill_free (SculptFloodFill *flood)
 
Auto-masking.
float SCULPT_automasking_factor_get (struct AutomaskingCache *automasking, SculptSession *ss, int vert)
 
struct AutomaskingCacheSCULPT_automasking_active_cache_get (SculptSession *ss)
 
struct AutomaskingCacheSCULPT_automasking_cache_init (Sculpt *sd, Brush *brush, Object *ob)
 
void SCULPT_automasking_cache_free (struct AutomaskingCache *automasking)
 
bool SCULPT_is_automasking_mode_enabled (const Sculpt *sd, const Brush *br, eAutomasking_flag mode)
 
bool SCULPT_is_automasking_enabled (const Sculpt *sd, const SculptSession *ss, const Brush *br)
 
floatSCULPT_boundary_automasking_init (Object *ob, eBoundaryAutomaskMode mode, int propagation_steps, float *automask_factor)
 
Geodesic distances.
floatSCULPT_geodesic_distances_create (struct Object *ob, struct GSet *initial_vertices, float limit_radius)
 
floatSCULPT_geodesic_from_vertex_and_symm (struct Sculpt *sd, struct Object *ob, int vertex, float limit_radius)
 
floatSCULPT_geodesic_from_vertex (Object *ob, int vertex, float limit_radius)
 
Filter API
void SCULPT_filter_cache_init (struct bContext *C, Object *ob, Sculpt *sd, int undo_type)
 
void SCULPT_filter_cache_free (SculptSession *ss)
 
void SCULPT_mask_filter_smooth_apply (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode, int smooth_iterations)
 
void SCULPT_filter_to_orientation_space (float r_v[3], struct FilterCache *filter_cache)
 
void SCULPT_filter_to_object_space (float r_v[3], struct FilterCache *filter_cache)
 
void SCULPT_filter_zero_disabled_axis_components (float r_v[3], struct FilterCache *filter_cache)
 
Cloth Simulation.
void SCULPT_do_cloth_brush (struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
 
void SCULPT_cloth_simulation_free (struct SculptClothSimulation *cloth_sim)
 
struct SculptClothSimulationSCULPT_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_cloth_brush_simulation_init (struct SculptSession *ss, struct SculptClothSimulation *cloth_sim)
 
void SCULPT_cloth_sim_activate_nodes (struct SculptClothSimulation *cloth_sim, PBVHNode **nodes, int totnode)
 
void SCULPT_cloth_brush_store_simulation_state (struct SculptSession *ss, struct SculptClothSimulation *cloth_sim)
 
void SCULPT_cloth_brush_do_simulation_step (struct Sculpt *sd, struct Object *ob, struct SculptClothSimulation *cloth_sim, struct PBVHNode **nodes, int totnode)
 
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)
 
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)
 
void SCULPT_cloth_plane_falloff_preview_draw (uint gpuattr, struct SculptSession *ss, const float outline_col[3], float outline_alpha)
 
PBVHNode ** SCULPT_cloth_brush_affected_nodes_gather (SculptSession *ss, Brush *brush, int *r_totnode)
 
BLI_INLINE bool SCULPT_is_cloth_deform_brush (const Brush *brush)
 
Smoothing API
void SCULPT_bmesh_four_neighbor_average (float avg[3], float direction[3], struct BMVert *v)
 
void SCULPT_neighbor_coords_average (SculptSession *ss, float result[3], int index)
 
float SCULPT_neighbor_mask_average (SculptSession *ss, int index)
 
void SCULPT_neighbor_color_average (SculptSession *ss, float result[4], int index)
 
void SCULPT_neighbor_coords_average_interior (SculptSession *ss, float result[3], int index)
 
void SCULPT_smooth (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode, float bstrength, bool smooth_mask)
 
void SCULPT_do_smooth_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
 
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_surface_smooth_displace_step (SculptSession *ss, float *co, float(*laplacian_disp)[3], int v_index, float beta, float fade)
 
void SCULPT_do_surface_smooth_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
 
void SCULPT_relax_vertex (struct SculptSession *ss, struct PBVHVertexIter *vd, float factor, bool filter_boundary_face_sets, float *r_final_pos)
 
Sculpt Undo
SculptUndoNodeSCULPT_undo_push_node (Object *ob, PBVHNode *node, SculptUndoType type)
 
SculptUndoNodeSCULPT_undo_get_node (PBVHNode *node, SculptUndoType type)
 
SculptUndoNodeSCULPT_undo_get_first_node (void)
 
void SCULPT_undo_push_begin (struct Object *ob, const char *name)
 
void SCULPT_undo_push_end (struct Object *ob)
 
void SCULPT_undo_push_end_ex (struct Object *ob, const bool use_nested_undo)
 
Expand Operator
void SCULPT_OT_expand (struct wmOperatorType *ot)
 
void sculpt_expand_modal_keymap (struct wmKeyConfig *keyconf)
 
Gesture Operators
void SCULPT_OT_face_set_lasso_gesture (struct wmOperatorType *ot)
 
void SCULPT_OT_face_set_box_gesture (struct wmOperatorType *ot)
 
void SCULPT_OT_trim_lasso_gesture (struct wmOperatorType *ot)
 
void SCULPT_OT_trim_box_gesture (struct wmOperatorType *ot)
 
void SCULPT_OT_project_line_gesture (struct wmOperatorType *ot)
 
Face Set Operators
void SCULPT_OT_face_sets_randomize_colors (struct wmOperatorType *ot)
 
void SCULPT_OT_face_sets_change_visibility (struct wmOperatorType *ot)
 
void SCULPT_OT_face_sets_init (struct wmOperatorType *ot)
 
void SCULPT_OT_face_sets_create (struct wmOperatorType *ot)
 
void SCULPT_OT_face_sets_edit (struct wmOperatorType *ot)
 
Transform Operators
void SCULPT_OT_set_pivot_position (struct wmOperatorType *ot)
 
Filter Operators
void SCULPT_OT_mesh_filter (struct wmOperatorType *ot)
 
void SCULPT_OT_cloth_filter (struct wmOperatorType *ot)
 
void SCULPT_OT_color_filter (struct wmOperatorType *ot)
 
Interactive Mask Operators
void SCULPT_OT_mask_filter (struct wmOperatorType *ot)
 
void SCULPT_OT_dirty_mask (struct wmOperatorType *ot)
 
void SCULPT_OT_mask_expand (struct wmOperatorType *ot)
 
void SCULPT_OT_mask_init (struct wmOperatorType *ot)
 
Dyntopo/Retopology Operators
void SCULPT_OT_detail_flood_fill (struct wmOperatorType *ot)
 
void SCULPT_OT_sample_detail_size (struct wmOperatorType *ot)
 
void SCULPT_OT_set_detail_size (struct wmOperatorType *ot)
 
void SCULPT_OT_dyntopo_detail_size_edit (struct wmOperatorType *ot)
 
Brushes
void SCULPT_do_pose_brush (struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
 
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)
 
void SCULPT_pose_brush_init (struct Sculpt *sd, struct Object *ob, struct SculptSession *ss, struct Brush *br)
 
struct SculptPoseIKChainSCULPT_pose_ik_chain_init (struct Sculpt *sd, struct Object *ob, struct SculptSession *ss, struct Brush *br, const float initial_location[3], float radius)
 
void SCULPT_pose_ik_chain_free (struct SculptPoseIKChain *ik_chain)
 
struct SculptBoundarySCULPT_boundary_data_init (Object *object, Brush *brush, int initial_vertex, float radius)
 
void SCULPT_boundary_data_free (struct SculptBoundary *boundary)
 
void SCULPT_do_boundary_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_boundary_pivot_line_preview_draw (uint gpuattr, struct SculptSession *ss)
 
void SCULPT_do_multiplane_scrape_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
 
void SCULPT_multiplane_scrape_preview_draw (uint gpuattr, Brush *brush, SculptSession *ss, const float outline_col[3], float outline_alpha)
 
void SCULPT_do_draw_face_sets_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
 
void SCULPT_do_paint_brush (struct PaintModeSettings *paint_mode_settings, Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode) ATTR_NONNULL()
 
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. More...
 
void SCULPT_do_paint_brush_image (struct PaintModeSettings *paint_mode_settings, Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode) ATTR_NONNULL()
 
bool SCULPT_use_image_paint_brush (struct PaintModeSettings *settings, Object *ob) ATTR_NONNULL()
 
void SCULPT_do_smear_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
 
float SCULPT_clay_thumb_get_stabilized_pressure (struct StrokeCache *cache)
 
void SCULPT_do_draw_brush (struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
 
void SCULPT_do_fill_brush (struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
 
void SCULPT_do_scrape_brush (struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
 
void SCULPT_do_clay_thumb_brush (struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
 
void SCULPT_do_flatten_brush (struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
 
void SCULPT_do_clay_brush (struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
 
void SCULPT_do_clay_strips_brush (struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
 
void SCULPT_do_snake_hook_brush (struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
 
void SCULPT_do_thumb_brush (struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
 
void SCULPT_do_rotate_brush (struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
 
void SCULPT_do_layer_brush (struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
 
void SCULPT_do_inflate_brush (struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
 
void SCULPT_do_nudge_brush (struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
 
void SCULPT_do_crease_brush (struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
 
void SCULPT_do_pinch_brush (struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
 
void SCULPT_do_grab_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_do_draw_sharp_brush (struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
 
void SCULPT_do_slide_relax_brush (struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
 
void SCULPT_do_displacement_smear_brush (struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
 
void SCULPT_do_displacement_eraser_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)
 
void SCULPT_do_mask_brush (struct Sculpt *sd, struct Object *ob, struct PBVHNode **nodes, int totnode)
 

Sculpt Types

#define SCULPT_VERTEX_NEIGHBOR_FIXED_CAPACITY   256
 
#define SCULPT_RAKE_BRUSH_FACTOR   0.25f
 
#define SCULPT_CLAY_STABILIZER_LEN   10
 
enum  SculptUpdateType {
  SCULPT_UPDATE_COORDS = 1 << 0 , SCULPT_UPDATE_MASK = 1 << 1 , SCULPT_UPDATE_VISIBILITY = 1 << 2 , SCULPT_UPDATE_COLOR = 1 << 3 ,
  SCULPT_UPDATE_IMAGE = 1 << 4
}
 
enum  eBoundaryAutomaskMode { AUTOMASK_INIT_BOUNDARY_EDGES = 1 , AUTOMASK_INIT_BOUNDARY_FACE_SETS = 2 }
 
enum  SculptUndoType {
  SCULPT_UNDO_COORDS , SCULPT_UNDO_HIDDEN , SCULPT_UNDO_MASK , SCULPT_UNDO_DYNTOPO_BEGIN ,
  SCULPT_UNDO_DYNTOPO_END , SCULPT_UNDO_DYNTOPO_SYMMETRIZE , SCULPT_UNDO_GEOMETRY , SCULPT_UNDO_FACE_SETS ,
  SCULPT_UNDO_COLOR
}
 
enum  SculptFilterOrientation { SCULPT_FILTER_ORIENTATION_LOCAL = 0 , SCULPT_FILTER_ORIENTATION_WORLD = 1 , SCULPT_FILTER_ORIENTATION_VIEW = 2 }
 
enum  SculptTransformDisplacementMode { SCULPT_TRANSFORM_DISPLACEMENT_ORIGINAL = 0 , SCULPT_TRANSFORM_DISPLACEMENT_INCREMENTAL = 1 }
 
typedef enum SculptUpdateType SculptUpdateType
 
typedef struct SculptCursorGeometryInfo SculptCursorGeometryInfo
 
typedef struct SculptVertexNeighborIter SculptVertexNeighborIter
 
typedef enum eBoundaryAutomaskMode eBoundaryAutomaskMode
 
typedef struct SculptUndoNodeGeometry SculptUndoNodeGeometry
 
typedef struct SculptUndoNode SculptUndoNode
 
typedef struct SculptThreadedTaskData SculptThreadedTaskData
 
typedef struct SculptBrushTest SculptBrushTest
 
typedef bool(* SculptBrushTestFn) (SculptBrushTest *test, const float co[3])
 
typedef enum SculptFilterOrientation SculptFilterOrientation
 
typedef enum SculptTransformDisplacementMode SculptTransformDisplacementMode
 
typedef struct AutomaskingSettings AutomaskingSettings
 
typedef struct AutomaskingCache AutomaskingCache
 
typedef struct FilterCache FilterCache
 
typedef struct StrokeCache StrokeCache
 

Sculpt Expand

#define EXPAND_SYMM_AREAS   8
 
enum  eSculptExpandFalloffType {
  SCULPT_EXPAND_FALLOFF_GEODESIC , SCULPT_EXPAND_FALLOFF_TOPOLOGY , SCULPT_EXPAND_FALLOFF_TOPOLOGY_DIAGONALS , SCULPT_EXPAND_FALLOFF_NORMALS ,
  SCULPT_EXPAND_FALLOFF_SPHERICAL , SCULPT_EXPAND_FALLOFF_BOUNDARY_TOPOLOGY , SCULPT_EXPAND_FALLOFF_BOUNDARY_FACE_SET , SCULPT_EXPAND_FALLOFF_ACTIVE_FACE_SET
}
 
enum  eSculptExpandTargetType { SCULPT_EXPAND_TARGET_MASK , SCULPT_EXPAND_TARGET_FACE_SETS , SCULPT_EXPAND_TARGET_COLORS }
 
enum  eSculptExpandRecursionType { SCULPT_EXPAND_RECURSION_TOPOLOGY , SCULPT_EXPAND_RECURSION_GEODESICS }
 
typedef enum eSculptExpandFalloffType eSculptExpandFalloffType
 
typedef enum eSculptExpandTargetType eSculptExpandTargetType
 
typedef enum eSculptExpandRecursionType eSculptExpandRecursionType
 
typedef struct ExpandCache ExpandCache
 

Sculpt mesh accessor API

#define SCULPT_VERTEX_NEIGHBORS_ITER_BEGIN(ss, v_index, neighbor_iterator)
 
#define SCULPT_VERTEX_DUPLICATES_AND_NEIGHBORS_ITER_BEGIN(ss, v_index, neighbor_iterator)
 
#define SCULPT_VERTEX_NEIGHBORS_ITER_END(neighbor_iterator)
 
#define FAKE_NEIGHBOR_NONE   -1
 
void SCULPT_vertex_random_access_ensure (struct SculptSession *ss)
 
int SCULPT_vertex_count_get (struct SculptSession *ss)
 
const floatSCULPT_vertex_co_get (struct SculptSession *ss, int index)
 
void SCULPT_vertex_normal_get (SculptSession *ss, int index, float no[3])
 
float SCULPT_vertex_mask_get (struct SculptSession *ss, int index)
 
void SCULPT_vertex_color_get (const SculptSession *ss, int index, float r_color[4])
 
void SCULPT_vertex_color_set (SculptSession *ss, int index, const float color[4])
 
bool SCULPT_has_colors (const SculptSession *ss)
 
bool SCULPT_has_loop_colors (const struct Object *ob)
 
const floatSCULPT_vertex_persistent_co_get (SculptSession *ss, int index)
 
void SCULPT_vertex_persistent_normal_get (SculptSession *ss, int index, float no[3])
 
const floatSCULPT_vertex_co_for_grab_active_get (SculptSession *ss, int index)
 
void SCULPT_vertex_limit_surface_get (SculptSession *ss, int index, float r_co[3])
 
floatSCULPT_brush_deform_target_vertex_co_get (SculptSession *ss, int deform_target, PBVHVertexIter *iter)
 
void SCULPT_vertex_neighbors_get (struct SculptSession *ss, int index, bool include_duplicates, SculptVertexNeighborIter *iter)
 
int SCULPT_active_vertex_get (SculptSession *ss)
 
const floatSCULPT_active_vertex_co_get (SculptSession *ss)
 
void SCULPT_active_vertex_normal_get (SculptSession *ss, float normal[3])
 
struct MVertSCULPT_mesh_deformed_mverts_get (SculptSession *ss)
 
void SCULPT_fake_neighbors_ensure (struct Sculpt *sd, Object *ob, float max_dist)
 
void SCULPT_fake_neighbors_enable (Object *ob)
 
void SCULPT_fake_neighbors_disable (Object *ob)
 
void SCULPT_fake_neighbors_free (struct Object *ob)
 
void SCULPT_boundary_info_ensure (Object *object)
 
bool SCULPT_vertex_is_boundary (const SculptSession *ss, int index)
 
void SCULPT_connected_components_ensure (Object *ob)
 

Dynamic topology

enum  eDynTopoWarnFlag { DYNTOPO_WARN_VDATA = (1 << 0) , DYNTOPO_WARN_EDATA = (1 << 1) , DYNTOPO_WARN_LDATA = (1 << 2) , DYNTOPO_WARN_MODIFIER = (1 << 3) }
 
void SCULPT_dynamic_topology_enable_ex (struct Main *bmain, struct Depsgraph *depsgraph, Scene *scene, Object *ob)
 
void SCULPT_dynamic_topology_disable (bContext *C, struct SculptUndoNode *unode)
 
void sculpt_dynamic_topology_disable_with_undo (struct Main *bmain, struct Depsgraph *depsgraph, Scene *scene, Object *ob)
 
bool SCULPT_stroke_is_dynamic_topology (const SculptSession *ss, const Brush *brush)
 
void SCULPT_dynamic_topology_triangulate (struct BMesh *bm)
 
void SCULPT_dyntopo_node_layers_add (struct SculptSession *ss)
 
enum eDynTopoWarnFlag SCULPT_dynamic_topology_check (Scene *scene, Object *ob)
 

Macro Definition Documentation

◆ EXPAND_SYMM_AREAS

#define EXPAND_SYMM_AREAS   8

Definition at line 663 of file sculpt_intern.h.

◆ FAKE_NEIGHBOR_NONE

#define FAKE_NEIGHBOR_NONE   -1

Definition at line 978 of file sculpt_intern.h.

◆ SCULPT_CLAY_STABILIZER_LEN

#define SCULPT_CLAY_STABILIZER_LEN   10

Definition at line 391 of file sculpt_intern.h.

◆ SCULPT_RAKE_BRUSH_FACTOR

#define SCULPT_RAKE_BRUSH_FACTOR   0.25f

Definition at line 201 of file sculpt_intern.h.

◆ SCULPT_VERTEX_DUPLICATES_AND_NEIGHBORS_ITER_BEGIN

#define SCULPT_VERTEX_DUPLICATES_AND_NEIGHBORS_ITER_BEGIN (   ss,
  v_index,
  neighbor_iterator 
)
Value:
SCULPT_vertex_neighbors_get(ss, v_index, true, &neighbor_iterator); \
for (neighbor_iterator.i = neighbor_iterator.size - 1; neighbor_iterator.i >= 0; \
neighbor_iterator.i--) { \
neighbor_iterator.index = neighbor_iterator.neighbors[neighbor_iterator.i]; \
neighbor_iterator.is_duplicate = (neighbor_iterator.i >= \
neighbor_iterator.size - neighbor_iterator.num_duplicates);
void SCULPT_vertex_neighbors_get(struct SculptSession *ss, int index, bool include_duplicates, SculptVertexNeighborIter *iter)
Definition: sculpt.c:841

Iterate over neighboring and duplicate vertices (for PBVH_GRIDS). Duplicates come first since they are nearest for floodfill.

Definition at line 953 of file sculpt_intern.h.

◆ SCULPT_VERTEX_NEIGHBOR_FIXED_CAPACITY

#define SCULPT_VERTEX_NEIGHBOR_FIXED_CAPACITY   256

Definition at line 58 of file sculpt_intern.h.

◆ SCULPT_VERTEX_NEIGHBORS_ITER_BEGIN

#define SCULPT_VERTEX_NEIGHBORS_ITER_BEGIN (   ss,
  v_index,
  neighbor_iterator 
)
Value:
SCULPT_vertex_neighbors_get(ss, v_index, false, &neighbor_iterator); \
for (neighbor_iterator.i = 0; neighbor_iterator.i < neighbor_iterator.size; \
neighbor_iterator.i++) { \
neighbor_iterator.index = neighbor_iterator.neighbors[neighbor_iterator.i];

Iterator over neighboring vertices.

Definition at line 945 of file sculpt_intern.h.

◆ SCULPT_VERTEX_NEIGHBORS_ITER_END

#define SCULPT_VERTEX_NEIGHBORS_ITER_END (   neighbor_iterator)
Value:
} \
if (neighbor_iterator.neighbors != neighbor_iterator.neighbors_fixed) { \
MEM_freeN(neighbor_iterator.neighbors); \
} \
((void)0)
SyclQueue void void size_t num_bytes void

Definition at line 961 of file sculpt_intern.h.

Typedef Documentation

◆ AutomaskingCache

◆ AutomaskingSettings

◆ eBoundaryAutomaskMode

◆ eSculptExpandFalloffType

◆ eSculptExpandRecursionType

◆ eSculptExpandTargetType

◆ ExpandCache

typedef struct ExpandCache ExpandCache

◆ FilterCache

typedef struct FilterCache FilterCache

◆ SculptBrushTest

◆ SculptBrushTestFn

typedef bool(* SculptBrushTestFn) (SculptBrushTest *test, const float co[3])

Definition at line 355 of file sculpt_intern.h.

◆ SculptCursorGeometryInfo

◆ SculptFilterOrientation

◆ SculptThreadedTaskData

Generic thread data. The size of this struct has gotten a little out of hand; normally we would split it up, but it might be better to see if we can't eliminate it altogether after moving to C++ (where we'll be able to use lambdas).

◆ SculptTransformDisplacementMode

◆ SculptUndoNode

◆ SculptUndoNodeGeometry

◆ SculptUpdateType

◆ SculptVertexNeighborIter

◆ StrokeCache

typedef struct StrokeCache StrokeCache

This structure contains all the temporary data needed for individual brush strokes.

Enumeration Type Documentation

◆ eBoundaryAutomaskMode

Enumerator
AUTOMASK_INIT_BOUNDARY_EDGES 
AUTOMASK_INIT_BOUNDARY_FACE_SETS 

Definition at line 99 of file sculpt_intern.h.

◆ eDynTopoWarnFlag

Enumerator
DYNTOPO_WARN_VDATA 
DYNTOPO_WARN_EDATA 
DYNTOPO_WARN_LDATA 
DYNTOPO_WARN_MODIFIER 

Definition at line 1238 of file sculpt_intern.h.

◆ eSculptExpandFalloffType

Enumerator
SCULPT_EXPAND_FALLOFF_GEODESIC 
SCULPT_EXPAND_FALLOFF_TOPOLOGY 
SCULPT_EXPAND_FALLOFF_TOPOLOGY_DIAGONALS 
SCULPT_EXPAND_FALLOFF_NORMALS 
SCULPT_EXPAND_FALLOFF_SPHERICAL 
SCULPT_EXPAND_FALLOFF_BOUNDARY_TOPOLOGY 
SCULPT_EXPAND_FALLOFF_BOUNDARY_FACE_SET 
SCULPT_EXPAND_FALLOFF_ACTIVE_FACE_SET 

Definition at line 641 of file sculpt_intern.h.

◆ eSculptExpandRecursionType

Enumerator
SCULPT_EXPAND_RECURSION_TOPOLOGY 
SCULPT_EXPAND_RECURSION_GEODESICS 

Definition at line 658 of file sculpt_intern.h.

◆ eSculptExpandTargetType

Enumerator
SCULPT_EXPAND_TARGET_MASK 
SCULPT_EXPAND_TARGET_FACE_SETS 
SCULPT_EXPAND_TARGET_COLORS 

Definition at line 652 of file sculpt_intern.h.

◆ SculptFilterOrientation

Enumerator
SCULPT_FILTER_ORIENTATION_LOCAL 
SCULPT_FILTER_ORIENTATION_WORLD 
SCULPT_FILTER_ORIENTATION_VIEW 

Definition at line 377 of file sculpt_intern.h.

◆ SculptTransformDisplacementMode

Enumerator
SCULPT_TRANSFORM_DISPLACEMENT_ORIGINAL 
SCULPT_TRANSFORM_DISPLACEMENT_INCREMENTAL 

Definition at line 384 of file sculpt_intern.h.

◆ SculptUndoType

Enumerator
SCULPT_UNDO_COORDS 
SCULPT_UNDO_HIDDEN 
SCULPT_UNDO_MASK 
SCULPT_UNDO_DYNTOPO_BEGIN 
SCULPT_UNDO_DYNTOPO_END 
SCULPT_UNDO_DYNTOPO_SYMMETRIZE 
SCULPT_UNDO_GEOMETRY 
SCULPT_UNDO_FACE_SETS 
SCULPT_UNDO_COLOR 

Definition at line 106 of file sculpt_intern.h.

◆ SculptUpdateType

Enumerator
SCULPT_UPDATE_COORDS 
SCULPT_UPDATE_MASK 
SCULPT_UPDATE_VISIBILITY 
SCULPT_UPDATE_COLOR 
SCULPT_UPDATE_IMAGE 

Definition at line 44 of file sculpt_intern.h.

Function Documentation

◆ SCULPT_active_face_set_get()

int SCULPT_active_face_set_get ( SculptSession ss)

◆ SCULPT_active_vertex_co_get()

const float* SCULPT_active_vertex_co_get ( SculptSession ss)

◆ SCULPT_active_vertex_get()

int SCULPT_active_vertex_get ( SculptSession ss)

◆ SCULPT_active_vertex_normal_get()

void SCULPT_active_vertex_normal_get ( SculptSession ss,
float  normal[3] 
)

Definition at line 284 of file sculpt.c.

References normal, SCULPT_active_vertex_get(), and SCULPT_vertex_normal_get().

Referenced by sculpt_mask_expand_invoke().

◆ SCULPT_automasking_active_cache_get()

struct AutomaskingCache* SCULPT_automasking_active_cache_get ( SculptSession ss)

◆ SCULPT_automasking_cache_free()

void SCULPT_automasking_cache_free ( struct AutomaskingCache automasking)

Definition at line 150 of file sculpt_automasking.cc.

References AutomaskingCache::factor, and MEM_SAFE_FREE.

Referenced by SCULPT_filter_cache_free(), and sculpt_stroke_done().

◆ SCULPT_automasking_cache_init()

struct AutomaskingCache* SCULPT_automasking_cache_init ( Sculpt sd,
Brush brush,
Object ob 
)

◆ SCULPT_automasking_factor_get()

float SCULPT_automasking_factor_get ( struct AutomaskingCache automasking,
SculptSession ss,
int  vert 
)

◆ SCULPT_bmesh_four_neighbor_average()

void SCULPT_bmesh_four_neighbor_average ( float  avg[3],
float  direction[3],
struct BMVert v 
)

For bmesh: Average surrounding verts based on an orthogonality measure. Naturally converges to a quad-like structure.

Definition at line 89 of file sculpt_smooth.c.

References add_v3_v3(), BM_edge_is_boundary(), BM_EDGES_OF_VERT, BM_ITER_ELEM, BMVert::co, copy_v3_v3(), dot_v3v3(), e, madd_v3_v3fl(), mul_v3_v3fl(), BMVert::no, normalize_v3(), sub_v3_v3(), sub_v3_v3v3(), v, and zero_v3().

Referenced by do_topology_rake_bmesh_task_cb_ex().

◆ SCULPT_bmesh_topology_rake()

void SCULPT_bmesh_topology_rake ( struct Sculpt sd,
struct Object ob,
struct PBVHNode **  nodes,
int  totnode,
float  bstrength 
)

◆ SCULPT_boundary_automasking_init()

float* SCULPT_boundary_automasking_init ( Object ob,
eBoundaryAutomaskMode  mode,
int  propagation_steps,
float automask_factor 
)

◆ SCULPT_boundary_data_free()

void SCULPT_boundary_data_free ( struct SculptBoundary boundary)

◆ SCULPT_boundary_data_init()

struct SculptBoundary* SCULPT_boundary_data_init ( Object object,
Brush brush,
int  initial_vertex,
float  radius 
)

◆ SCULPT_boundary_edges_preview_draw()

void SCULPT_boundary_edges_preview_draw ( uint  gpuattr,
struct SculptSession ss,
const float  outline_col[3],
float  outline_alpha 
)

◆ SCULPT_boundary_info_ensure()

void SCULPT_boundary_info_ensure ( Object object)

◆ SCULPT_boundary_pivot_line_preview_draw()

void SCULPT_boundary_pivot_line_preview_draw ( uint  gpuattr,
struct SculptSession ss 
)

◆ SCULPT_brush_deform_target_vertex_co_get()

float* SCULPT_brush_deform_target_vertex_co_get ( SculptSession ss,
int  deform_target,
PBVHVertexIter iter 
)

◆ SCULPT_brush_frontface_normal_from_falloff_shape()

const float* SCULPT_brush_frontface_normal_from_falloff_shape ( SculptSession ss,
char  falloff_shape 
)

◆ SCULPT_brush_plane_offset_get()

float SCULPT_brush_plane_offset_get ( Sculpt sd,
SculptSession ss 
)

◆ SCULPT_brush_strength_factor()

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 
)

Return a multiplier for brush strength on a particular vertex.

◆ SCULPT_brush_test_circle_sq()

bool SCULPT_brush_test_circle_sq ( SculptBrushTest test,
const float  co[3] 
)

◆ SCULPT_brush_test_cube()

bool SCULPT_brush_test_cube ( SculptBrushTest test,
const float  co[3],
const float  local[4][4],
float  roundness 
)

◆ SCULPT_brush_test_init()

void SCULPT_brush_test_init ( struct SculptSession ss,
SculptBrushTest test 
)

◆ SCULPT_brush_test_init_with_falloff_shape()

SculptBrushTestFn SCULPT_brush_test_init_with_falloff_shape ( SculptSession ss,
SculptBrushTest test,
char  falloff_shape 
)

Initialize a point-in-brush test with a given falloff shape.

Parameters
falloff_shapePAINT_FALLOFF_SHAPE_SPHERE or PAINT_FALLOFF_SHAPE_TUBE.
Returns
The brush falloff function.

Definition at line 1686 of file sculpt.c.

References SculptSession::cache, SculptBrushTest::location, PAINT_FALLOFF_SHAPE_SPHERE, plane_from_point_normal_v3(), SculptBrushTest::plane_view, SCULPT_brush_test_circle_sq(), SCULPT_brush_test_init(), SCULPT_brush_test_sphere_sq(), and StrokeCache::view_normal.

Referenced by calc_area_normal_and_center_task_cb(), calc_clay_surface_task_cb(), calc_multiplane_scrape_surface_task_cb(), calculate_average_color(), do_clay_brush_task_cb_ex(), do_clay_thumb_brush_task_cb_ex(), do_cloth_brush_apply_forces_task_cb_ex(), do_color_smooth_task_cb_exec(), do_crease_brush_task_cb_ex(), do_displacement_eraser_brush_task_cb_ex(), do_displacement_smear_brush_task_cb_ex(), do_draw_brush_task_cb_ex(), do_draw_face_sets_brush_task_cb_ex(), do_draw_sharp_brush_task_cb_ex(), do_enhance_details_brush_task_cb_ex(), do_fill_brush_task_cb_ex(), do_flatten_brush_task_cb_ex(), do_grab_brush_task_cb_ex(), do_gravity_task_cb_ex(), do_inflate_brush_task_cb_ex(), do_layer_brush_task_cb_ex(), do_mask_brush_draw_task_cb_ex(), do_multiplane_scrape_brush_task_cb_ex(), do_nudge_brush_task_cb_ex(), do_paint_brush_task_cb_ex(), do_pinch_brush_task_cb_ex(), do_relax_face_sets_brush_task_cb_ex(), do_rotate_brush_task_cb_ex(), do_sample_wet_paint_task_cb(), do_scrape_brush_task_cb_ex(), do_smear_brush_task_cb_exec(), do_smooth_brush_task_cb_ex(), do_snake_hook_brush_task_cb_ex(), do_thumb_brush_task_cb_ex(), do_topology_rake_bmesh_task_cb_ex(), do_topology_relax_task_cb_ex(), do_topology_slide_task_cb_ex(), do_vpaint_brush_blur_loops(), do_vpaint_brush_blur_verts(), do_vpaint_brush_smear(), do_wpaint_brush_blur_task_cb_ex(), do_wpaint_brush_calc_average_weight_cb_ex(), do_wpaint_brush_draw_task_cb_ex(), do_wpaint_brush_smear_task_cb_ex(), SCULPT_do_surface_smooth_brush_displace_task_cb_ex(), SCULPT_do_surface_smooth_brush_laplacian_task_cb_ex(), and vpaint_do_draw().

◆ SCULPT_brush_test_sphere()

bool SCULPT_brush_test_sphere ( SculptBrushTest test,
const float  co[3] 
)

◆ SCULPT_brush_test_sphere_fast()

bool SCULPT_brush_test_sphere_fast ( const SculptBrushTest test,
const float  co[3] 
)

◆ SCULPT_brush_test_sphere_sq()

bool SCULPT_brush_test_sphere_sq ( SculptBrushTest test,
const float  co[3] 
)

◆ SCULPT_cache_calc_brushdata_symm()

void SCULPT_cache_calc_brushdata_symm ( StrokeCache cache,
char  symm,
char  axis,
float  angle 
)

◆ SCULPT_cache_free()

void SCULPT_cache_free ( StrokeCache cache)

◆ SCULPT_calc_area_center()

void SCULPT_calc_area_center ( Sculpt sd,
Object ob,
PBVHNode **  nodes,
int  totnode,
float  r_area_co[3] 
)

◆ SCULPT_calc_area_normal()

void SCULPT_calc_area_normal ( Sculpt sd,
Object ob,
PBVHNode **  nodes,
int  totnode,
float  r_area_no[3] 
)

◆ SCULPT_calc_area_normal_and_center()

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] 
)

◆ SCULPT_calc_brush_plane()

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] 
)

◆ SCULPT_check_vertex_pivot_symmetry()

bool SCULPT_check_vertex_pivot_symmetry ( const float  vco[3],
const float  pco[3],
char  symm 
)

◆ SCULPT_clay_thumb_get_stabilized_pressure()

float SCULPT_clay_thumb_get_stabilized_pressure ( struct StrokeCache cache)

◆ SCULPT_clip()

void SCULPT_clip ( Sculpt sd,
SculptSession ss,
float  co[3],
const float  val[3] 
)

◆ SCULPT_cloth_brush_affected_nodes_gather()

PBVHNode** SCULPT_cloth_brush_affected_nodes_gather ( SculptSession ss,
Brush brush,
int *  r_totnode 
)

◆ SCULPT_cloth_brush_do_simulation_step()

void SCULPT_cloth_brush_do_simulation_step ( struct Sculpt sd,
struct Object ob,
struct SculptClothSimulation cloth_sim,
struct PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_cloth_brush_ensure_nodes_constraints()

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_cloth_brush_simulation_create()

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 
)

◆ SCULPT_cloth_brush_simulation_init()

void SCULPT_cloth_brush_simulation_init ( struct SculptSession ss,
struct SculptClothSimulation cloth_sim 
)

◆ SCULPT_cloth_brush_store_simulation_state()

void SCULPT_cloth_brush_store_simulation_state ( struct SculptSession ss,
struct SculptClothSimulation cloth_sim 
)

◆ SCULPT_cloth_plane_falloff_preview_draw()

void SCULPT_cloth_plane_falloff_preview_draw ( uint  gpuattr,
struct SculptSession ss,
const float  outline_col[3],
float  outline_alpha 
)

◆ SCULPT_cloth_sim_activate_nodes()

void SCULPT_cloth_sim_activate_nodes ( struct SculptClothSimulation cloth_sim,
PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_cloth_simulation_free()

void SCULPT_cloth_simulation_free ( struct SculptClothSimulation cloth_sim)

◆ SCULPT_cloth_simulation_limits_draw()

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 
)

Cursor drawing function.

◆ SCULPT_combine_transform_proxies()

void SCULPT_combine_transform_proxies ( Sculpt sd,
Object ob 
)

◆ SCULPT_connected_components_ensure()

void SCULPT_connected_components_ensure ( Object ob)

◆ SCULPT_cursor_geometry_info_update()

bool SCULPT_cursor_geometry_info_update ( bContext C,
SculptCursorGeometryInfo out,
const float  mouse[2],
bool  use_sampled_normal 
)

Gets the normal, location and active vertex location of the geometry under the cursor. This also updates the active vertex and cursor related data of the SculptSession using the mouse position

Definition at line 4835 of file sculpt.c.

References SculptRaycastData::active_face_grid_index, SculptSession::active_face_index, SculptSession::active_grid_index, SculptSession::active_vertex_index, SculptRaycastData::active_vertex_index, add_v3_v3(), BKE_brush_size_get(), BKE_brush_unprojected_radius_get(), BKE_brush_use_locked_size(), BKE_paint_brush(), BKE_paint_get_active_from_context(), BKE_pbvh_raycast(), BKE_pbvh_type(), C, copy_m3_m4(), copy_v3_v3(), CTX_data_depsgraph_pointer(), CTX_data_scene(), SculptSession::cursor_location, SculptSession::cursor_normal, SculptSession::cursor_radius, SculptSession::cursor_sampled_normal, SculptSession::cursor_view_normal, depsgraph, SculptRaycastData::depth, ED_view3d_viewcontext_init(), SculptRaycastData::face_normal, SculptRaycastData::hit, Object::imat, invert_m4_m4(), SculptRaycastData::isect_precalc, isect_ray_tri_watertight_v3_precalc(), MEM_SAFE_FREE, mul_m3_v3(), mul_v3_fl(), normalize_v3_v3(), ViewContext::obact, Object::obmat, SculptRaycastData::original, usdtokens::out(), paint_calc_object_space_radius(), SculptSession::pbvh, PBVH_BMESH, PBVH_FACES, PBVH_GRIDS, SculptSession::rv3d, ViewContext::rv3d, scene, Object::sculpt, ToolSettings::sculpt, SCULPT_active_vertex_co_get(), SCULPT_pbvh_calc_area_normal(), sculpt_pbvh_gather_cursor_update(), sculpt_raycast_cb(), SCULPT_raycast_init(), SCULPT_stroke_modifiers_check(), SCULPT_vertex_random_access_ensure(), Scene::toolsettings, SculptSession::v3d, ViewContext::v3d, RegionView3D::viewinv, and zero_v3().

Referenced by ED_sculpt_face_sets_active_update_and_get(), paint_cursor_sculpt_session_update_and_init(), sample_detail_voxel(), sculpt_cloth_filter_invoke(), sculpt_color_filter_invoke(), sculpt_expand_target_vertex_update_and_get(), sculpt_face_set_edit_invoke(), sculpt_face_sets_change_visibility_invoke(), sculpt_mask_by_color_invoke(), sculpt_mask_expand_invoke(), sculpt_mask_expand_modal(), sculpt_mesh_filter_invoke(), sculpt_stroke_test_start(), sculpt_trim_gesture_box_invoke(), and sculpt_trim_gesture_lasso_invoke().

◆ SCULPT_do_boundary_brush()

void SCULPT_do_boundary_brush ( struct Sculpt sd,
struct Object ob,
struct PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_clay_brush()

void SCULPT_do_clay_brush ( struct Sculpt sd,
struct Object ob,
struct PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_clay_strips_brush()

void SCULPT_do_clay_strips_brush ( struct Sculpt sd,
struct Object ob,
struct PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_clay_thumb_brush()

void SCULPT_do_clay_thumb_brush ( struct Sculpt sd,
struct Object ob,
struct PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_cloth_brush()

void SCULPT_do_cloth_brush ( struct Sculpt sd,
struct Object ob,
struct PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_crease_brush()

void SCULPT_do_crease_brush ( struct Sculpt sd,
struct Object ob,
struct PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_displacement_eraser_brush()

void SCULPT_do_displacement_eraser_brush ( struct Sculpt sd,
struct Object ob,
struct PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_displacement_smear_brush()

void SCULPT_do_displacement_smear_brush ( struct Sculpt sd,
struct Object ob,
struct PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_draw_brush()

void SCULPT_do_draw_brush ( struct Sculpt sd,
struct Object ob,
struct PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_draw_face_sets_brush()

void SCULPT_do_draw_face_sets_brush ( Sculpt sd,
Object ob,
PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_draw_sharp_brush()

void SCULPT_do_draw_sharp_brush ( struct Sculpt sd,
struct Object ob,
struct PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_elastic_deform_brush()

void SCULPT_do_elastic_deform_brush ( struct Sculpt sd,
struct Object ob,
struct PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_fill_brush()

void SCULPT_do_fill_brush ( struct Sculpt sd,
struct Object ob,
struct PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_flatten_brush()

void SCULPT_do_flatten_brush ( struct Sculpt sd,
struct Object ob,
struct PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_grab_brush()

void SCULPT_do_grab_brush ( struct Sculpt sd,
struct Object ob,
struct PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_inflate_brush()

void SCULPT_do_inflate_brush ( struct Sculpt sd,
struct Object ob,
struct PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_layer_brush()

void SCULPT_do_layer_brush ( struct Sculpt sd,
struct Object ob,
struct PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_mask_brush()

void SCULPT_do_mask_brush ( struct Sculpt sd,
struct Object ob,
struct PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_mask_brush_draw()

void SCULPT_do_mask_brush_draw ( struct Sculpt sd,
struct Object ob,
struct PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_multiplane_scrape_brush()

void SCULPT_do_multiplane_scrape_brush ( Sculpt sd,
Object ob,
PBVHNode **  nodes,
int  totnode 
)

Definition at line 211 of file sculpt_multiplane_scrape.c.

References add_v3_v3(), angle_v3v3(), MultiplaneScrapeSampleData::area_cos, MultiplaneScrapeSampleData::area_count, MultiplaneScrapeSampleData::area_nos, BKE_paint_brush(), BKE_pbvh_parallel_range_settings(), BLI_task_parallel_range(), BRUSH_MULTIPLANE_SCRAPE_DYNAMIC, BRUSH_ORIGINAL_NORMAL, StrokeCache::bstrength, SculptSession::cache, calc_multiplane_scrape_surface_reduce(), calc_multiplane_scrape_surface_task_cb(), copy_m4_m4(), copy_v3_v3(), cross_v3_v3v3(), data, DEG2RADF, do_multiplane_scrape_brush_task_cb_ex(), dot_v3v3(), Brush::flag, Brush::flag2, TaskParallelSettings::func_reduce, StrokeCache::grab_delta_symmetry, interpf(), invert_m4(), invert_m4_m4(), is_zero_v3(), StrokeCache::location, mid_v3_v3v3(), StrokeCache::mirror_symmetry_pass, mul_v3_fl(), mul_v3_mat3_m4v3(), mul_v3_v3fl(), mul_v3_v3v3(), StrokeCache::multiplane_scrape_angle, Brush::multiplane_scrape_angle, normalize_m4(), normalize_v3(), NULL, offset, Sculpt::paint, plane_from_point_normal_v3(), StrokeCache::pressure, RAD2DEGF, StrokeCache::radial_symmetry_pass, StrokeCache::radius, rotate_v3_v3v3fl(), StrokeCache::scale, Object::sculpt, SCULPT_brush_plane_offset_get(), SCULPT_calc_area_normal(), SCULPT_calc_brush_plane(), SCULPT_DISP_DIR_AREA, Brush::sculpt_plane, SCULPT_stroke_is_first_brush_step_of_symmetry_pass(), SculptThreadedTaskData::sd, StrokeCache::stroke_local_mat, sub_v3_v3v3(), TaskParallelSettings::userdata_chunk, and TaskParallelSettings::userdata_chunk_size.

Referenced by do_brush_action().

◆ SCULPT_do_nudge_brush()

void SCULPT_do_nudge_brush ( struct Sculpt sd,
struct Object ob,
struct PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_paint_brush()

void SCULPT_do_paint_brush ( struct PaintModeSettings paint_mode_settings,
Sculpt sd,
Object ob,
PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_paint_brush_image()

void SCULPT_do_paint_brush_image ( struct PaintModeSettings paint_mode_settings,
Sculpt sd,
Object ob,
PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_pinch_brush()

void SCULPT_do_pinch_brush ( struct Sculpt sd,
struct Object ob,
struct PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_pose_brush()

void SCULPT_do_pose_brush ( struct Sculpt sd,
struct Object ob,
struct PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_rotate_brush()

void SCULPT_do_rotate_brush ( struct Sculpt sd,
struct Object ob,
struct PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_scrape_brush()

void SCULPT_do_scrape_brush ( struct Sculpt sd,
struct Object ob,
struct PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_slide_relax_brush()

void SCULPT_do_slide_relax_brush ( struct Sculpt sd,
struct Object ob,
struct PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_smear_brush()

void SCULPT_do_smear_brush ( Sculpt sd,
Object ob,
PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_smooth_brush()

void SCULPT_do_smooth_brush ( Sculpt sd,
Object ob,
PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_snake_hook_brush()

void SCULPT_do_snake_hook_brush ( struct Sculpt sd,
struct Object ob,
struct PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_surface_smooth_brush()

void SCULPT_do_surface_smooth_brush ( Sculpt sd,
Object ob,
PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_do_thumb_brush()

void SCULPT_do_thumb_brush ( struct Sculpt sd,
struct Object ob,
struct PBVHNode **  nodes,
int  totnode 
)

◆ SCULPT_dynamic_topology_check()

enum eDynTopoWarnFlag SCULPT_dynamic_topology_check ( Scene scene,
Object ob 
)

◆ SCULPT_dynamic_topology_disable()

void SCULPT_dynamic_topology_disable ( bContext C,
struct SculptUndoNode unode 
)

◆ sculpt_dynamic_topology_disable_with_undo()

void sculpt_dynamic_topology_disable_with_undo ( struct Main bmain,
struct Depsgraph depsgraph,
Scene scene,
Object ob 
)

◆ SCULPT_dynamic_topology_enable_ex()

void SCULPT_dynamic_topology_enable_ex ( struct Main bmain,
struct Depsgraph depsgraph,
Scene scene,
Object ob 
)

◆ SCULPT_dynamic_topology_triangulate()

void SCULPT_dynamic_topology_triangulate ( struct BMesh bm)

◆ SCULPT_dyntopo_node_layers_add()

void SCULPT_dyntopo_node_layers_add ( struct SculptSession ss)

◆ sculpt_expand_modal_keymap()

void sculpt_expand_modal_keymap ( struct wmKeyConfig keyconf)

◆ SCULPT_face_set_next_available_get()

int SCULPT_face_set_next_available_get ( SculptSession ss)

◆ SCULPT_face_set_visibility_set()

void SCULPT_face_set_visibility_set ( SculptSession ss,
int  face_set,
bool  visible 
)

◆ SCULPT_face_sets_visibility_all_set()

void SCULPT_face_sets_visibility_all_set ( SculptSession ss,
bool  visible 
)

◆ SCULPT_face_sets_visibility_invert()

void SCULPT_face_sets_visibility_invert ( SculptSession ss)

◆ SCULPT_fake_neighbors_disable()

void SCULPT_fake_neighbors_disable ( Object ob)

◆ SCULPT_fake_neighbors_enable()

void SCULPT_fake_neighbors_enable ( Object ob)

◆ SCULPT_fake_neighbors_ensure()

void SCULPT_fake_neighbors_ensure ( struct Sculpt sd,
Object ob,
float  max_dist 
)

◆ SCULPT_fake_neighbors_free()

void SCULPT_fake_neighbors_free ( struct Object ob)

Definition at line 5923 of file sculpt.c.

References Object::sculpt, and sculpt_pose_fake_neighbors_free().

Referenced by SCULPT_flush_update_done().

◆ SCULPT_filter_cache_free()

void SCULPT_filter_cache_free ( SculptSession ss)

◆ SCULPT_filter_cache_init()

void SCULPT_filter_cache_init ( struct bContext C,
Object ob,
Sculpt sd,
int  undo_type 
)

◆ SCULPT_filter_to_object_space()

void SCULPT_filter_to_object_space ( float  r_v[3],
struct FilterCache filter_cache 
)

◆ SCULPT_filter_to_orientation_space()

void SCULPT_filter_to_orientation_space ( float  r_v[3],
struct FilterCache filter_cache 
)

◆ SCULPT_filter_zero_disabled_axis_components()

void SCULPT_filter_zero_disabled_axis_components ( float  r_v[3],
struct FilterCache filter_cache 
)

◆ SCULPT_flip_quat_by_symm_area()

void SCULPT_flip_quat_by_symm_area ( float  quat[4],
ePaintSymmetryFlags  symm,
ePaintSymmetryAreas  symmarea,
const float  pivot[3] 
)

Definition at line 2882 of file sculpt.c.

References flip_qt().

Referenced by SCULPT_do_pose_brush(), and sculpt_transform_matrices_init().

◆ SCULPT_flip_v3_by_symm_area()

void SCULPT_flip_v3_by_symm_area ( float  v[3],
ePaintSymmetryFlags  symm,
ePaintSymmetryAreas  symmarea,
const float  pivot[3] 
)

◆ SCULPT_floodfill_add_active()

void SCULPT_floodfill_add_active ( struct Sculpt sd,
struct Object ob,
struct SculptSession ss,
SculptFloodFill flood,
float  radius 
)

◆ SCULPT_floodfill_add_and_skip_initial()

void SCULPT_floodfill_add_and_skip_initial ( SculptFloodFill flood,
int  index 
)

◆ SCULPT_floodfill_add_initial()

void SCULPT_floodfill_add_initial ( SculptFloodFill flood,
int  index 
)

◆ SCULPT_floodfill_add_initial_with_symmetry()

void SCULPT_floodfill_add_initial_with_symmetry ( struct Sculpt sd,
struct Object ob,
struct SculptSession ss,
SculptFloodFill flood,
int  index,
float  radius 
)

◆ SCULPT_floodfill_execute()

void SCULPT_floodfill_execute ( struct SculptSession ss,
SculptFloodFill flood,
bool(*)(SculptSession *ss, int from_v, int to_v, bool is_duplicate, void *userdata)  func,
void userdata 
)

◆ SCULPT_floodfill_free()

void SCULPT_floodfill_free ( SculptFloodFill flood)

◆ SCULPT_floodfill_init()

void SCULPT_floodfill_init ( struct SculptSession ss,
SculptFloodFill flood 
)

◆ SCULPT_flush_stroke_deform()

void SCULPT_flush_stroke_deform ( struct Sculpt sd,
Object ob,
bool  is_proxy_used 
)

◆ SCULPT_flush_update_done()

void SCULPT_flush_update_done ( const bContext C,
Object ob,
SculptUpdateType  update_flags 
)

◆ SCULPT_flush_update_step()

void SCULPT_flush_update_step ( bContext C,
SculptUpdateType  update_flags 
)

◆ SCULPT_geodesic_distances_create()

float* SCULPT_geodesic_distances_create ( struct Object ob,
struct GSet initial_vertices,
float  limit_radius 
)

Returns an array indexed by vertex index containing the geodesic distance to the closest vertex in the initial vertex set. The caller is responsible for freeing the array. Geodesic distances will only work when used with PBVH_FACES, for other types of PBVH it will fallback to euclidean distances to one of the initial vertices in the set.

Definition at line 290 of file sculpt_geodesic.c.

References BKE_pbvh_type(), BLI_assert, blender::geometry::limit_radius(), NULL, SculptSession::pbvh, PBVH_BMESH, PBVH_FACES, PBVH_GRIDS, Object::sculpt, SCULPT_geodesic_fallback_create(), and SCULPT_geodesic_mesh_create().

Referenced by sculpt_expand_geodesics_from_state_boundary(), SCULPT_geodesic_from_vertex(), and SCULPT_geodesic_from_vertex_and_symm().

◆ SCULPT_geodesic_from_vertex()

float* SCULPT_geodesic_from_vertex ( Object ob,
int  vertex,
float  limit_radius 
)

◆ SCULPT_geodesic_from_vertex_and_symm()

float* SCULPT_geodesic_from_vertex_and_symm ( struct Sculpt sd,
struct Object ob,
int  vertex,
float  limit_radius 
)

◆ SCULPT_geometry_preview_lines_update()

void SCULPT_geometry_preview_lines_update ( bContext C,
struct SculptSession ss,
float  radius 
)

◆ SCULPT_get_redraw_rect()

bool SCULPT_get_redraw_rect ( struct ARegion region,
struct RegionView3D rv3d,
Object ob,
rcti rect 
)

Get a screen-space rectangle of the modified area.

Definition at line 1489 of file sculpt.c.

References BKE_pbvh_redraw_BB(), paint_convert_bb_to_rect(), SculptSession::pbvh, and Object::sculpt.

Referenced by SCULPT_flush_update_step(), and wpaint_stroke_update_step().

◆ SCULPT_get_vertex_symm_area()

ePaintSymmetryAreas SCULPT_get_vertex_symm_area ( const float  co[3])

◆ SCULPT_handles_colors_report()

bool SCULPT_handles_colors_report ( struct SculptSession ss,
struct ReportList reports 
)

Returns true if sculpt session can handle color attributes (BKE_pbvh_type(ss->pbvh) == PBVH_FACES). If false an error message will be shown to the user. Operators should return OPERATOR_CANCELLED in this case.

NOTE: Does not check if a color attribute actually exists. Calling code must handle this itself; in most cases a call to BKE_sculpt_color_layer_create_if_needed() is sufficient.

Definition at line 5303 of file sculpt.c.

References BKE_pbvh_type(), BKE_report(), BLI_assert_msg, SculptSession::pbvh, PBVH_BMESH, PBVH_FACES, PBVH_GRIDS, and RPT_ERROR.

Referenced by sculpt_brush_stroke_invoke(), sculpt_color_filter_invoke(), sculpt_mask_by_color_invoke(), and sculpt_sample_color_invoke().

◆ SCULPT_has_colors()

bool SCULPT_has_colors ( const SculptSession ss)

Returns true if a color attribute exists in the current sculpt session.

Definition at line 156 of file sculpt.c.

References SculptSession::mcol, and SculptSession::vcol.

Referenced by sculpt_colors_poll(), SCULPT_do_paint_brush(), SCULPT_do_smear_brush(), and sculpt_sample_color_invoke().

◆ SCULPT_has_loop_colors()

bool SCULPT_has_loop_colors ( const struct Object ob)

Returns true if the active color attribute is on loop (ATTR_DOMAIN_CORNER) domain.

◆ SCULPT_is_automasking_enabled()

bool SCULPT_is_automasking_enabled ( const Sculpt sd,
const SculptSession ss,
const Brush br 
)

◆ SCULPT_is_automasking_mode_enabled()

bool SCULPT_is_automasking_mode_enabled ( const Sculpt sd,
const Brush br,
eAutomasking_flag  mode 
)

◆ SCULPT_is_cloth_deform_brush()

BLI_INLINE bool SCULPT_is_cloth_deform_brush ( const Brush brush)

◆ SCULPT_is_symmetry_iteration_valid()

bool SCULPT_is_symmetry_iteration_valid ( char  i,
char  symm 
)

◆ SCULPT_is_vertex_inside_brush_radius_symm()

bool SCULPT_is_vertex_inside_brush_radius_symm ( const float  vertex[3],
const float  br_co[3],
float  radius,
char  symm 
)

Checks if a vertex is inside the brush radius from any of its mirrored axis.

Definition at line 1030 of file sculpt.c.

References flip_v3_v3(), len_squared_v3v3(), and SCULPT_is_symmetry_iteration_valid().

Referenced by automask_floodfill_cb().

◆ SCULPT_mask_filter_smooth_apply()

void SCULPT_mask_filter_smooth_apply ( Sculpt sd,
Object ob,
PBVHNode **  nodes,
int  totnode,
int  smooth_iterations 
)

◆ SCULPT_mesh_deformed_mverts_get()

struct MVert* SCULPT_mesh_deformed_mverts_get ( SculptSession ss)

◆ SCULPT_mesh_symmetry_xyz_get()

char SCULPT_mesh_symmetry_xyz_get ( Object object)

◆ SCULPT_mode_poll()

bool SCULPT_mode_poll ( struct bContext C)

◆ SCULPT_mode_poll_view3d()

bool SCULPT_mode_poll_view3d ( struct bContext C)

◆ SCULPT_multiplane_scrape_preview_draw()

void SCULPT_multiplane_scrape_preview_draw ( uint  gpuattr,
Brush brush,
SculptSession ss,
const float  outline_col[3],
float  outline_alpha 
)

◆ SCULPT_nearest_vertex_get()

int SCULPT_nearest_vertex_get ( struct Sculpt sd,
struct Object ob,
const float  co[3],
float  max_distance,
bool  use_original 
)

◆ SCULPT_neighbor_color_average()

void SCULPT_neighbor_color_average ( SculptSession ss,
float  result[4],
int  index 
)

◆ SCULPT_neighbor_coords_average()

void SCULPT_neighbor_coords_average ( SculptSession ss,
float  result[3],
int  index 
)

◆ SCULPT_neighbor_coords_average_interior()

void SCULPT_neighbor_coords_average_interior ( SculptSession ss,
float  result[3],
int  index 
)

◆ SCULPT_neighbor_mask_average()

float SCULPT_neighbor_mask_average ( SculptSession ss,
int  index 
)

◆ SCULPT_orig_vert_data_init()

void SCULPT_orig_vert_data_init ( SculptOrigVertData data,
Object ob,
PBVHNode node,
SculptUndoType  type 
)

◆ SCULPT_orig_vert_data_unode_init()

void SCULPT_orig_vert_data_unode_init ( SculptOrigVertData data,
Object ob,
struct SculptUndoNode unode 
)

Initialize a SculptOrigVertData for accessing original vertex data; handles BMesh, Mesh, and multi-resolution.

Definition at line 1271 of file sculpt.c.

References SculptSession::bm, bm, SculptSession::bm_log, data, and Object::sculpt.

Referenced by paint_mesh_restore_co_task_cb(), and SCULPT_orig_vert_data_init().

◆ SCULPT_orig_vert_data_update()

void SCULPT_orig_vert_data_update ( SculptOrigVertData orig_data,
PBVHVertexIter iter 
)

◆ SCULPT_OT_brush_stroke()

void SCULPT_OT_brush_stroke ( struct wmOperatorType ot)

◆ SCULPT_OT_cloth_filter()

void SCULPT_OT_cloth_filter ( struct wmOperatorType ot)

◆ SCULPT_OT_color_filter()

void SCULPT_OT_color_filter ( struct wmOperatorType ot)

◆ SCULPT_OT_detail_flood_fill()

void SCULPT_OT_detail_flood_fill ( struct wmOperatorType ot)

◆ SCULPT_OT_dirty_mask()

void SCULPT_OT_dirty_mask ( struct wmOperatorType ot)

◆ SCULPT_OT_dynamic_topology_toggle()

void SCULPT_OT_dynamic_topology_toggle ( struct wmOperatorType ot)

◆ SCULPT_OT_dyntopo_detail_size_edit()

void SCULPT_OT_dyntopo_detail_size_edit ( struct wmOperatorType ot)

◆ SCULPT_OT_expand()

void SCULPT_OT_expand ( struct wmOperatorType ot)

◆ SCULPT_OT_face_set_box_gesture()

void SCULPT_OT_face_set_box_gesture ( struct wmOperatorType ot)

◆ SCULPT_OT_face_set_lasso_gesture()

void SCULPT_OT_face_set_lasso_gesture ( struct wmOperatorType ot)

◆ SCULPT_OT_face_sets_change_visibility()

void SCULPT_OT_face_sets_change_visibility ( struct wmOperatorType ot)

◆ SCULPT_OT_face_sets_create()

void SCULPT_OT_face_sets_create ( struct wmOperatorType ot)

◆ SCULPT_OT_face_sets_edit()

void SCULPT_OT_face_sets_edit ( struct wmOperatorType ot)

◆ SCULPT_OT_face_sets_init()

void SCULPT_OT_face_sets_init ( struct wmOperatorType ot)

◆ SCULPT_OT_face_sets_randomize_colors()

void SCULPT_OT_face_sets_randomize_colors ( struct wmOperatorType ot)

◆ SCULPT_OT_mask_expand()

void SCULPT_OT_mask_expand ( struct wmOperatorType ot)

◆ SCULPT_OT_mask_filter()

void SCULPT_OT_mask_filter ( struct wmOperatorType ot)

◆ SCULPT_OT_mask_init()

void SCULPT_OT_mask_init ( struct wmOperatorType ot)

◆ SCULPT_OT_mesh_filter()

void SCULPT_OT_mesh_filter ( struct wmOperatorType ot)

◆ SCULPT_OT_project_line_gesture()

void SCULPT_OT_project_line_gesture ( struct wmOperatorType ot)

◆ SCULPT_OT_sample_detail_size()

void SCULPT_OT_sample_detail_size ( struct wmOperatorType ot)

◆ SCULPT_OT_set_detail_size()

void SCULPT_OT_set_detail_size ( struct wmOperatorType ot)

◆ SCULPT_OT_set_pivot_position()

void SCULPT_OT_set_pivot_position ( struct wmOperatorType ot)

◆ SCULPT_OT_trim_box_gesture()

void SCULPT_OT_trim_box_gesture ( struct wmOperatorType ot)

◆ SCULPT_OT_trim_lasso_gesture()

void SCULPT_OT_trim_lasso_gesture ( struct wmOperatorType ot)

◆ SCULPT_paint_image_canvas_get()

bool SCULPT_paint_image_canvas_get ( struct PaintModeSettings paint_mode_settings,
struct Object ob,
struct Image **  r_image,
struct ImageUser **  r_image_user 
)

Get the image canvas for painting on the given object.

Returns
#true if an image is found. The #r_image and #r_image_user fields are filled with the image and image user. Returns false when the image isn't found. In the later case the r_image and r_image_user are set to NULL.

Definition at line 458 of file sculpt_paint_image.cc.

References blender::ed::sculpt_paint::paint::image::ImageData::image, blender::ed::sculpt_paint::paint::image::ImageData::image_user, and blender::ed::sculpt_paint::paint::image::ImageData::init_active_image().

Referenced by sculpt_needs_pbvh_pixels(), and sculpt_pbvh_update_pixels().

◆ SCULPT_pbvh_calc_area_normal()

bool SCULPT_pbvh_calc_area_normal ( const struct Brush brush,
Object ob,
PBVHNode **  nodes,
int  totnode,
bool  use_threading,
float  r_area_no[3] 
)

Expose 'calc_area_normal' externally (just for vertex paint).

◆ SCULPT_pbvh_clear()

void SCULPT_pbvh_clear ( Object ob)

◆ SCULPT_plane_point_side()

int SCULPT_plane_point_side ( const float  co[3],
const float  plane[4] 
)

◆ SCULPT_plane_trim()

int SCULPT_plane_trim ( const struct StrokeCache cache,
const struct Brush brush,
const float  val[3] 
)

◆ SCULPT_poll()

bool SCULPT_poll ( struct bContext C)

Checks for a brush, not just sculpt mode.

Definition at line 3973 of file sculpt.c.

References C, PAINT_brush_tool_poll(), and SCULPT_mode_poll().

Referenced by SCULPT_OT_brush_stroke(), and SCULPT_poll_view3d().

◆ SCULPT_poll_view3d()

bool SCULPT_poll_view3d ( struct bContext C)

Definition at line 3968 of file sculpt.c.

References C, CTX_wm_region_view3d(), and SCULPT_poll().

◆ SCULPT_pose_brush_init()

void SCULPT_pose_brush_init ( struct Sculpt sd,
struct Object ob,
struct SculptSession ss,
struct Brush br 
)

◆ SCULPT_pose_calc_pose_data()

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 
)

◆ SCULPT_pose_ik_chain_free()

void SCULPT_pose_ik_chain_free ( struct SculptPoseIKChain ik_chain)

◆ SCULPT_pose_ik_chain_init()

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 
)

◆ SCULPT_raycast_init()

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 
)

◆ SCULPT_relax_vertex()

void SCULPT_relax_vertex ( struct SculptSession ss,
struct PBVHVertexIter vd,
float  factor,
bool  filter_boundary_face_sets,
float r_final_pos 
)

◆ SCULPT_search_circle_cb()

bool SCULPT_search_circle_cb ( PBVHNode node,
void data_v 
)

◆ SCULPT_search_sphere_cb()

bool SCULPT_search_sphere_cb ( PBVHNode node,
void data_v 
)

◆ SCULPT_smooth()

void SCULPT_smooth ( Sculpt sd,
Object ob,
PBVHNode **  nodes,
int  totnode,
float  bstrength,
bool  smooth_mask 
)

◆ SCULPT_stroke_get_location()

bool SCULPT_stroke_get_location ( struct bContext C,
float  out[3],
const float  mouse[2],
bool  force_original 
)

Do a ray-cast in the tree to find the 3d brush location (This allows us to ignore the GL depth buffer) Returns 0 if the ray doesn't hit the mesh, non-zero otherwise.

Definition at line 4964 of file sculpt.c.

References add_v3_v3(), BKE_paint_brush(), BKE_paint_get_active_from_context(), BKE_pbvh_find_nearest_to_ray(), BKE_pbvh_raycast(), BKE_pbvh_type(), SculptSession::bm, BM_mesh_elem_index_ensure(), BM_mesh_elem_table_ensure(), BM_VERT, C, SculptSession::cache, copy_v3_v3(), CTX_data_depsgraph_pointer(), depsgraph, SculptRaycastData::depth, SculptFindNearestToRayData::depth, ED_view3d_viewcontext_init(), ELEM, SculptRaycastData::face_normal, Brush::falloff_shape, SculptRaycastData::hit, SculptFindNearestToRayData::hit, SculptRaycastData::isect_precalc, isect_ray_tri_watertight_v3_precalc(), mul_v3_fl(), ViewContext::obact, SculptRaycastData::original, SculptFindNearestToRayData::original, StrokeCache::original, usdtokens::out(), PAINT_FALLOFF_SHAPE_TUBE, SculptSession::pbvh, PBVH_BMESH, SculptRaycastData::ray_normal, SculptRaycastData::ray_start, Object::sculpt, sculpt_find_nearest_to_ray_cb(), sculpt_raycast_cb(), SCULPT_raycast_init(), SCULPT_stroke_modifiers_check(), and SculptRaycastData::ss.

Referenced by over_mesh(), paint_brush_stroke_add_step(), paint_line_strokes_spacing(), paint_space_stroke(), paint_stroke_curve_end(), paint_stroke_modal(), sculpt_brush_stroke_exec(), sculpt_brush_stroke_invoke(), sculpt_set_pivot_position_exec(), vpaint_exec(), vpaint_invoke(), wpaint_exec(), and wpaint_invoke().

◆ SCULPT_stroke_is_dynamic_topology()

bool SCULPT_stroke_is_dynamic_topology ( const SculptSession ss,
const Brush brush 
)

Returns true if the stroke will use dynamic topology, false otherwise.

Factors: some brushes like grab cannot do dynamic topology. Others, like smooth, are better without. Same goes for alt-key smoothing.

Definition at line 1338 of file sculpt.c.

References StrokeCache::alt_smooth, BKE_pbvh_type(), BRUSH_ANCHORED, BRUSH_DRAG_DOT, SculptSession::cache, Brush::flag, SculptSession::pbvh, PBVH_BMESH, Brush::sculpt_tool, and SCULPT_TOOL_HAS_DYNTOPO.

Referenced by sculpt_brush_stroke_cancel(), SCULPT_calc_area_center(), SCULPT_calc_area_normal_and_center(), SCULPT_is_automasking_enabled(), SCULPT_pbvh_calc_area_normal(), and sculpt_stroke_update_step().

◆ SCULPT_stroke_is_first_brush_step()

bool SCULPT_stroke_is_first_brush_step ( struct StrokeCache cache)

Return true only once per stroke on the first symmetry pass, regardless of the symmetry passes enabled.

This should be used for functionality that needs to be computed once per stroke of a particular tool (allocating memory, updating random seeds...).

Definition at line 912 of file sculpt.c.

References StrokeCache::first_time, StrokeCache::mirror_symmetry_pass, StrokeCache::radial_symmetry_pass, and StrokeCache::tile_pass.

Referenced by do_brush_action(), SCULPT_do_cloth_brush(), SCULPT_do_paint_brush(), and SCULPT_enhance_details_brush().

◆ SCULPT_stroke_is_first_brush_step_of_symmetry_pass()

bool SCULPT_stroke_is_first_brush_step_of_symmetry_pass ( struct StrokeCache cache)

◆ SCULPT_stroke_is_main_symmetry_pass()

bool SCULPT_stroke_is_main_symmetry_pass ( struct StrokeCache cache)

Returns true when the step belongs to the stroke that is directly performed by the brush and not by one of the symmetry passes.

Definition at line 906 of file sculpt.c.

References StrokeCache::mirror_symmetry_pass, StrokeCache::radial_symmetry_pass, and StrokeCache::tile_pass.

Referenced by calc_sculpt_plane(), do_brush_action(), SCULPT_calc_brush_plane(), and SCULPT_do_clay_thumb_brush().

◆ SCULPT_stroke_modifiers_check()

void SCULPT_stroke_modifiers_check ( const bContext C,
Object ob,
const Brush brush 
)

◆ SCULPT_surface_smooth_displace_step()

void SCULPT_surface_smooth_displace_step ( SculptSession ss,
float co,
float(*)  laplacian_disp[3],
int  v_index,
float  beta,
float  fade 
)

◆ SCULPT_surface_smooth_laplacian_step()

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 
)

◆ SCULPT_tag_update_overlays()

void SCULPT_tag_update_overlays ( bContext C)

◆ SCULPT_tilt_apply_to_normal()

void SCULPT_tilt_apply_to_normal ( float  r_normal[3],
struct StrokeCache cache,
float  tilt_strength 
)

◆ SCULPT_tilt_effective_normal_get()

void SCULPT_tilt_effective_normal_get ( const SculptSession ss,
const Brush brush,
float  r_no[3] 
)

Get effective surface normal with pen tilt and tilt strength applied to it.

Definition at line 2767 of file sculpt.c.

References SculptSession::cache, copy_v3_v3(), StrokeCache::sculpt_normal_symm, SCULPT_tilt_apply_to_normal(), and Brush::tilt_strength_factor.

Referenced by SCULPT_do_draw_brush(), and SCULPT_do_draw_sharp_brush().

◆ SCULPT_tool_is_paint()

BLI_INLINE bool SCULPT_tool_is_paint ( int  tool)

◆ SCULPT_tool_needs_all_pbvh_nodes()

BLI_INLINE bool SCULPT_tool_needs_all_pbvh_nodes ( const Brush brush)

◆ SCULPT_undo_get_first_node()

SculptUndoNode* SCULPT_undo_get_first_node ( void  )

Definition at line 1037 of file sculpt_undo.c.

References ListBase::first, UndoSculpt::nodes, NULL, and sculpt_undo_get_nodes().

Referenced by sculpt_restore_mesh().

◆ SCULPT_undo_get_node()

SculptUndoNode* SCULPT_undo_get_node ( PBVHNode node,
SculptUndoType  type 
)

◆ SCULPT_undo_push_begin()

void SCULPT_undo_push_begin ( struct Object ob,
const char *  name 
)

◆ SCULPT_undo_push_end()

void SCULPT_undo_push_end ( struct Object ob)

◆ SCULPT_undo_push_end_ex()

void SCULPT_undo_push_end_ex ( struct Object ob,
const bool  use_nested_undo 
)

◆ SCULPT_undo_push_node()

SculptUndoNode* SCULPT_undo_push_node ( Object ob,
PBVHNode node,
SculptUndoType  type 
)

Definition at line 1419 of file sculpt_undo.c.

References BKE_object_get_original_mesh(), BKE_pbvh_node_get_grids(), BKE_pbvh_node_get_loops(), BKE_pbvh_node_get_verts(), BKE_pbvh_node_num_loops(), BKE_pbvh_node_num_verts(), BLI_assert_msg, BLI_strncpy(), BLI_thread_lock(), BLI_thread_unlock(), SculptSession::bm, copy_v3_v3(), ELEM, SculptUndoNode::grids, SculptUndoNode::index, LOCK_CUSTOM1, SculptUndoNode::loop_index, SculptUndoNode::maxloop, KeyBlock::name, SculptSession::needs_flush_to_id, node, SculptUndoNode::node, NULL, SculptSession::pbvh, SculptSession::pivot_pos, SculptUndoNode::pivot_pos, SculptSession::pivot_rot, SculptUndoNode::pivot_rot, Object::sculpt, sculpt_undo_alloc_node(), sculpt_undo_bmesh_push(), SCULPT_UNDO_COLOR, SCULPT_UNDO_COORDS, SCULPT_UNDO_DYNTOPO_BEGIN, SCULPT_UNDO_DYNTOPO_END, SCULPT_UNDO_DYNTOPO_SYMMETRIZE, SCULPT_UNDO_FACE_SETS, sculpt_undo_face_sets_push(), SCULPT_UNDO_GEOMETRY, sculpt_undo_geometry_push(), SCULPT_undo_get_node(), SCULPT_UNDO_HIDDEN, SCULPT_UNDO_MASK, sculpt_undo_store_color(), sculpt_undo_store_coords(), sculpt_undo_store_hidden(), sculpt_undo_store_mask(), SculptSession::shapekey_active, SculptUndoNode::shapeName, Mesh::totloop, and type.

Referenced by calc_area_normal_and_center_task_cb(), do_brush_action(), do_brush_action_task_cb(), do_mask_by_color_contiguous_update_nodes_cb(), do_mask_by_color_task_cb(), ED_object_sculptmode_enter_ex(), ED_sculpt_undo_geometry_begin(), ED_sculpt_undo_geometry_end(), ED_sculpt_undo_push_multires_mesh_begin(), ED_sculpt_undo_push_multires_mesh_end(), filter_cache_init_task_cb(), mask_flood_fill_task_cb(), mask_gesture_apply_task_cb(), mask_init_task_cb(), paint_mesh_restore_co_task_cb(), partialvis_update_bmesh(), partialvis_update_grids(), partialvis_update_mesh(), project_line_gesture_apply_task_cb(), sculpt_combine_proxies_task_cb(), sculpt_detail_flood_fill_exec(), sculpt_dirty_mask_exec(), sculpt_dynamic_topology_disable_with_undo(), sculpt_dynamic_topology_enable_with_undo(), sculpt_elastic_transform_task_cb(), sculpt_expand_undo_push(), sculpt_face_set_create_exec(), sculpt_face_set_edit_modify_coordinates(), sculpt_face_set_edit_modify_face_sets(), sculpt_face_set_init_exec(), sculpt_face_sets_change_visibility_exec(), sculpt_gesture_face_set_begin(), sculpt_gesture_trim_begin(), sculpt_gesture_trim_end(), sculpt_mask_expand_invoke(), sculpt_mask_filter_exec(), SCULPT_orig_vert_data_init(), sculpt_symmetrize_exec(), sculpt_topology_update(), sculpt_transform_task_cb(), sculpt_undo_push_all_grids(), and vpaint_paint_leaves().

◆ SCULPT_update_object_bounding_box()

void SCULPT_update_object_bounding_box ( struct Object ob)

Copy the PBVH bounding box into the object's bounding box.

Definition at line 5134 of file sculpt.c.

References Object_Runtime::bb, BKE_boundbox_init_from_minmax(), BKE_pbvh_bounding_box(), SculptSession::pbvh, Object::runtime, and Object::sculpt.

Referenced by SCULPT_flush_update_step(), and sculpt_undo_restore_list().

◆ SCULPT_use_image_paint_brush()

bool SCULPT_use_image_paint_brush ( struct PaintModeSettings settings,
Object ob 
)

◆ SCULPT_vertcos_to_key()

void SCULPT_vertcos_to_key ( Object ob,
KeyBlock kb,
const float(*)  vertCos[3] 
)

◆ SCULPT_vertex_all_face_sets_visible_get()

bool SCULPT_vertex_all_face_sets_visible_get ( const SculptSession ss,
int  index 
)

◆ SCULPT_vertex_any_face_set_visible_get()

bool SCULPT_vertex_any_face_set_visible_get ( SculptSession ss,
int  index 
)

◆ SCULPT_vertex_co_for_grab_active_get()

const float* SCULPT_vertex_co_for_grab_active_get ( SculptSession ss,
int  index 
)

◆ SCULPT_vertex_co_get()

const float* SCULPT_vertex_co_get ( struct SculptSession ss,
int  index 
)

Definition at line 125 of file sculpt.c.

References BKE_pbvh_get_bmesh(), BKE_pbvh_get_grid_key(), BKE_pbvh_get_grids(), BKE_pbvh_get_verts(), BKE_pbvh_type(), BM_vert_at_index(), CCG_elem_co(), CCG_elem_offset(), BMVert::co, MVert::co, SculptSession::deform_modifiers_active, CCGKey::grid_area, SculptSession::mvert, NULL, SculptSession::pbvh, PBVH_BMESH, PBVH_FACES, PBVH_GRIDS, and SculptSession::shapekey_active.

Referenced by automask_floodfill_cb(), boundary_floodfill_cb(), boundary_initial_vertex_floodfill_cb(), cloth_brush_add_length_constraint(), do_boundary_brush_smooth_task_cb_ex(), do_displacement_smear_store_prev_disp_task_cb_ex(), do_smear_brush_task_cb_exec(), do_topology_slide_task_cb_ex(), dyntopo_detail_size_sample_from_surface(), mesh_filter_enhance_details_init_directions(), mesh_filter_sharpen_init(), mesh_filter_task_cb(), neighbor_dirty_mask(), paint_cursor_draw_3d_view_brush_cursor_inactive(), paint_cursor_preview_boundary_data_pivot_draw(), pose_face_sets_floodfill_cb(), pose_ik_chain_init_face_sets(), pose_ik_chain_init_face_sets_fk(), pose_topology_floodfill_cb(), sample_detail_voxel(), SCULPT_active_vertex_co_get(), sculpt_boundary_bend_data_init(), SCULPT_boundary_edges_preview_draw(), sculpt_boundary_edit_data_init(), sculpt_boundary_indices_init(), SCULPT_boundary_pivot_line_preview_draw(), sculpt_boundary_slide_data_init(), sculpt_boundary_twist_data_init(), SCULPT_cloth_brush_simulation_init(), SCULPT_cloth_brush_store_simulation_state(), sculpt_cloth_filter_modal(), SCULPT_do_displacement_smear_brush(), SCULPT_enhance_details_brush(), sculpt_expand_falloff_value_vertex_get(), sculpt_expand_get_vertex_index_for_symmetry_pass(), sculpt_expand_reposition_pivot(), sculpt_expand_spherical_falloff_create(), SCULPT_fake_neighbor_search(), SCULPT_floodfill_add_initial_with_symmetry(), SCULPT_geodesic_fallback_create(), SCULPT_geodesic_from_vertex_and_symm(), sculpt_gesture_trim_calculate_depth(), SCULPT_neighbor_coords_average(), SCULPT_neighbor_coords_average_interior(), SCULPT_relax_vertex(), sculpt_set_persistent_base_exec(), SCULPT_vertex_co_for_grab_active_get(), SCULPT_vertex_limit_surface_get(), and SCULPT_vertex_persistent_co_get().

◆ SCULPT_vertex_color_get()

void SCULPT_vertex_color_get ( const SculptSession ss,
int  index,
float  r_color[4] 
)

◆ SCULPT_vertex_color_set()

void SCULPT_vertex_color_set ( SculptSession ss,
int  index,
const float  color[4] 
)

◆ SCULPT_vertex_count_get()

int SCULPT_vertex_count_get ( struct SculptSession ss)

Definition at line 111 of file sculpt.c.

References BKE_pbvh_get_bmesh(), BKE_pbvh_get_grid_num_vertices(), BKE_pbvh_type(), BM_mesh_elem_count(), BM_VERT, SculptSession::pbvh, PBVH_BMESH, PBVH_FACES, PBVH_GRIDS, and SculptSession::totvert.

Referenced by cloth_brush_apply_brush_foces(), do_brush_action(), mesh_filter_enhance_details_init_directions(), mesh_filter_init_limit_surface_co(), mesh_filter_sharpen_init(), mesh_filter_surface_smooth_init(), pose_ik_chain_init_face_sets(), pose_ik_chain_init_face_sets_fk(), pose_ik_chain_init_topology(), SCULPT_automasking_cache_init(), SCULPT_boundary_automasking_init(), sculpt_boundary_bend_data_init(), sculpt_boundary_edit_data_init(), sculpt_boundary_falloff_factor_init(), sculpt_boundary_get_closest_boundary_vertex(), sculpt_boundary_indices_init(), sculpt_boundary_slide_data_init(), SCULPT_cloth_brush_simulation_create(), SCULPT_cloth_brush_simulation_init(), SCULPT_cloth_brush_store_simulation_state(), sculpt_cloth_filter_modal(), sculpt_color_presmooth_init(), SCULPT_connected_components_ensure(), SCULPT_do_displacement_smear_brush(), SCULPT_do_layer_brush(), SCULPT_do_smear_brush(), SCULPT_enhance_details_brush(), sculpt_expand_bitmap_from_enabled(), sculpt_expand_boundary_from_enabled(), sculpt_expand_boundary_topology_falloff_create(), sculpt_expand_diagonals_falloff_create(), sculpt_expand_geodesics_from_state_boundary(), sculpt_expand_initialize_from_face_set_boundary(), sculpt_expand_invoke(), sculpt_expand_modal(), sculpt_expand_normal_falloff_create(), sculpt_expand_original_state_store(), sculpt_expand_reposition_pivot(), sculpt_expand_spherical_falloff_create(), sculpt_expand_topology_falloff_create(), sculpt_expand_topology_from_state_boundary(), sculpt_expand_update_max_vert_falloff_value(), sculpt_face_set_create_exec(), sculpt_face_set_edit_fair_face_set(), sculpt_face_sets_automasking_init(), sculpt_face_sets_change_visibility_exec(), SCULPT_fake_neighbor_init(), SCULPT_fake_neighbors_ensure(), SCULPT_floodfill_init(), SCULPT_geometry_preview_lines_update(), sculpt_gesture_trim_calculate_depth(), sculpt_mask_by_color_contiguous(), sculpt_mask_expand_invoke(), sculpt_mask_filter_exec(), sculpt_pose_grow_pose_factor(), sculpt_set_persistent_base_exec(), and SCULPT_topology_automasking_init().

◆ SCULPT_vertex_face_set_get()

int SCULPT_vertex_face_set_get ( SculptSession ss,
int  index 
)

◆ SCULPT_vertex_face_set_set()

void SCULPT_vertex_face_set_set ( SculptSession ss,
int  index,
int  face_set 
)

◆ SCULPT_vertex_has_face_set()

bool SCULPT_vertex_has_face_set ( SculptSession ss,
int  index,
int  face_set 
)

◆ SCULPT_vertex_has_unique_face_set()

bool SCULPT_vertex_has_unique_face_set ( SculptSession ss,
int  index 
)

◆ SCULPT_vertex_is_boundary()

bool SCULPT_vertex_is_boundary ( const SculptSession ss,
int  index 
)

◆ SCULPT_vertex_limit_surface_get()

void SCULPT_vertex_limit_surface_get ( SculptSession ss,
int  index,
float  r_co[3] 
)

◆ SCULPT_vertex_mask_get()

float SCULPT_vertex_mask_get ( struct SculptSession ss,
int  index 
)

◆ SCULPT_vertex_neighbors_get()

void SCULPT_vertex_neighbors_get ( struct SculptSession ss,
int  index,
bool  include_duplicates,
SculptVertexNeighborIter iter 
)

◆ SCULPT_vertex_normal_get()

void SCULPT_vertex_normal_get ( SculptSession ss,
int  index,
float  no[3] 
)

◆ SCULPT_vertex_persistent_co_get()

const float* SCULPT_vertex_persistent_co_get ( SculptSession ss,
int  index 
)

◆ SCULPT_vertex_persistent_normal_get()

void SCULPT_vertex_persistent_normal_get ( SculptSession ss,
int  index,
float  no[3] 
)

◆ SCULPT_vertex_random_access_ensure()

void SCULPT_vertex_random_access_ensure ( struct SculptSession ss)

◆ SCULPT_vertex_visible_get()

bool SCULPT_vertex_visible_get ( SculptSession ss,
int  index 
)

◆ SCULPT_vertex_visible_set()

void SCULPT_vertex_visible_set ( SculptSession ss,
int  index,
bool  visible 
)

◆ SCULPT_visibility_sync_all_face_sets_to_vertices()

void SCULPT_visibility_sync_all_face_sets_to_vertices ( struct Object ob)

◆ SCULPT_visibility_sync_all_vertex_to_face_sets()

void SCULPT_visibility_sync_all_vertex_to_face_sets ( struct SculptSession ss)