89 std::optional<MutableSpan<float3>> eval_mut_;
95 std::optional<Span<float3x3>> deform_imats_;
105 std::optional<Array<bool>> dependent_keys_;
131#define SCULPT_RAKE_BRUSH_FACTOR 0.25f
436 bool limit_closest_radius);
440 const float mouse[2],
441 bool force_original);
448 const float mouse[2],
449 bool use_sampled_normal);
497 float grab_delta[3]);
526 Span<int> corner_verts,
527 GroupedSpan<int> vert_to_face,
528 Span<bool> hide_poly,
530 Vector<int> &r_neighbors);
535#define FAKE_NEIGHBOR_NONE -1
560 const IndexMask &node_mask,
567 const IndexMask &node_mask);
576 const IndexMask &node_mask,
582 const IndexMask &node_mask,
586 Span<float3> vert_positions,
587 Span<bool> hide_vert,
610 const float br_co[3],
621 const float pivot[3]);
632 float max_distance = std::numeric_limits<float>::max());
635 float max_distance = std::numeric_limits<float>::max());
638 float max_distance = std::numeric_limits<float>::max());
642 float max_distance = std::numeric_limits<float>::max());
650 const bke::pbvh::Node &node,
663 const float brush_point[3],
682 float tilt_strength);
700 const IndexMask &node_mask,
701 MutableSpan<float3> translations);
905 const float outline_col[3],
906 float outline_alpha);
A BVH for high poly meshes.
#define ATTR_NONNULL(...)
@ SCULPT_BRUSH_TYPE_DRAW_FACE_SETS
@ SCULPT_BRUSH_TYPE_SMEAR
@ SCULPT_BRUSH_TYPE_PAINT
const Depsgraph * depsgraph
void SCULPT_OT_cloth_filter(wmOperatorType *ot)
void SCULPT_OT_color_filter(wmOperatorType *ot)
void SCULPT_OT_detail_flood_fill(wmOperatorType *ot)
void SCULPT_OT_sample_detail_size(wmOperatorType *ot)
void SCULPT_OT_dynamic_topology_toggle(wmOperatorType *ot)
void SCULPT_OT_dyntopo_detail_size_edit(wmOperatorType *ot)
void modal_keymap(wmKeyConfig *keyconf)
void SCULPT_OT_expand(wmOperatorType *ot)
void SCULPT_OT_face_set_lasso_gesture(wmOperatorType *ot)
void SCULPT_OT_face_set_line_gesture(wmOperatorType *ot)
void SCULPT_OT_face_set_polyline_gesture(wmOperatorType *ot)
void SCULPT_OT_face_sets_init(wmOperatorType *ot)
void SCULPT_OT_face_sets_create(wmOperatorType *ot)
void SCULPT_OT_face_set_change_visibility(wmOperatorType *ot)
void SCULPT_OT_face_sets_randomize_colors(wmOperatorType *ot)
void SCULPT_OT_face_sets_edit(wmOperatorType *ot)
void SCULPT_OT_face_set_box_gesture(wmOperatorType *ot)
void SCULPT_OT_mesh_filter(wmOperatorType *ot)
wmKeyMap * modal_keymap(wmKeyConfig *keyconf)
void SCULPT_OT_mask_filter(wmOperatorType *ot)
void SCULPT_OT_mask_init(wmOperatorType *ot)
void SCULPT_OT_project_line_gesture(wmOperatorType *ot)
void SCULPT_OT_trim_lasso_gesture(wmOperatorType *ot)
void SCULPT_OT_trim_box_gesture(wmOperatorType *ot)
void SCULPT_OT_trim_line_gesture(wmOperatorType *ot)
void SCULPT_OT_trim_polyline_gesture(wmOperatorType *ot)
std::optional< Span< float > > orig_mask_data_lookup_grids(const Object &object, const bke::pbvh::GridsNode &node)
void calc_smooth_translations(const Depsgraph &depsgraph, const Object &object, const IndexMask &node_mask, const MutableSpan< float3 > translations)
bool node_in_sphere(const bke::pbvh::Node &node, const float3 &location, const float radius_sq, const bool original)
bool node_in_cylinder(const DistRayAABB_Precalc &ray_dist_precalc, const bke::pbvh::Node &node, const float radius_sq, const bool original)
std::optional< Span< int > > orig_face_set_data_lookup_mesh(const Object &object, const bke::pbvh::MeshNode &node)
std::optional< int > nearest_vert_calc_mesh(const bke::pbvh::Tree &pbvh, const Span< float3 > vert_positions, const Span< bool > hide_vert, const float3 &location, const float max_distance, const bool use_original)
Vector< int > find_symm_verts_grids(const Object &object, const int original_vert, const float max_distance)
bool node_fully_masked_or_hidden(const bke::pbvh::Node &node)
std::optional< OrigPositionData > orig_position_data_lookup_grids(const Object &object, const bke::pbvh::GridsNode &node)
void flush_update_done(const bContext *C, Object &ob, UpdateType update_type)
void orig_position_data_gather_bmesh(const BMLog &bm_log, const Set< BMVert *, 0 > &verts, MutableSpan< float3 > positions, MutableSpan< float3 > normals)
void flush_update_step(bContext *C, UpdateType update_type)
float clay_thumb_get_stabilized_pressure(const StrokeCache &cache)
void ensure_valid_pivot(const Object &ob, Scene &scene)
Vector< int > find_symm_verts_mesh(const Depsgraph &depsgraph, const Object &object, const int original_vert, const float max_distance)
std::optional< Span< float4 > > orig_color_data_lookup_mesh(const Object &object, const bke::pbvh::MeshNode &node)
Span< float4 > orig_color_data_get_mesh(const Object &object, const bke::pbvh::MeshNode &node)
void SCULPT_OT_brush_stroke(wmOperatorType *ot)
void calc_brush_plane(const Depsgraph &depsgraph, const Brush &brush, Object &ob, const IndexMask &node_mask, float3 &r_area_no, float3 &r_area_co)
std::optional< float3 > calc_area_normal(const Depsgraph &depsgraph, const Brush &brush, const Object &ob, const IndexMask &node_mask)
OrigPositionData orig_position_data_get_mesh(const Object &object, const bke::pbvh::MeshNode &node)
Span< BMVert * > vert_neighbors_get_bmesh(BMVert &vert, Vector< BMVert *, 64 > &r_neighbors)
OrigPositionData orig_position_data_get_grids(const Object &object, const bke::pbvh::GridsNode &node)
void calc_area_center(const Depsgraph &depsgraph, const Brush &brush, const Object &ob, const IndexMask &node_mask, float r_area_co[3])
std::optional< BMVert * > nearest_vert_calc_bmesh(const bke::pbvh::Tree &pbvh, const float3 &location, const float max_distance, const bool use_original)
float sculpt_calc_radius(const ViewContext &vc, const Brush &brush, const Scene &scene, const float3 location)
std::optional< Span< float > > orig_mask_data_lookup_mesh(const Object &object, const bke::pbvh::MeshNode &node)
std::optional< SubdivCCGCoord > nearest_vert_calc_grids(const bke::pbvh::Tree &pbvh, const SubdivCCG &subdiv_ccg, const float3 &location, const float max_distance, const bool use_original)
std::optional< OrigPositionData > orig_position_data_lookup_mesh_all_verts(const Object &object, const bke::pbvh::MeshNode &node)
Span< BMVert * > vert_neighbors_get_interior_bmesh(BMVert &vert, Vector< BMVert *, 64 > &r_neighbors)
void calc_area_normal_and_center(const Depsgraph &depsgraph, const Brush &brush, const Object &ob, const IndexMask &node_mask, float r_area_no[3], float r_area_co[3])
TransformDisplacementMode
std::optional< OrigPositionData > orig_position_data_lookup_mesh(const Object &object, const bke::pbvh::MeshNode &node)
Vector< int > find_symm_verts(const Depsgraph &depsgraph, const Object &object, const int original_vert, const float max_distance)
std::optional< Span< int > > orig_face_set_data_lookup_grids(const Object &object, const bke::pbvh::GridsNode &node)
Span< int > vert_neighbors_get_mesh(const OffsetIndices< int > faces, const Span< int > corner_verts, const GroupedSpan< int > vert_to_face, const Span< bool > hide_poly, const int vert, Vector< int > &r_neighbors)
void multiplane_scrape_preview_draw(const uint gpuattr, const Brush &brush, const SculptSession &ss, const float outline_col[3], const float outline_alpha)
void SCULPT_OT_set_pivot_position(wmOperatorType *ot)
void geometry_preview_lines_update(Depsgraph &depsgraph, Object &object, SculptSession &ss, float radius)
Span< float3 > vert_positions_for_grab_active_get(const Depsgraph &depsgraph, const Object &object)
Vector< int > find_symm_verts_bmesh(const Object &object, const int original_vert, const float max_distance)
void sculpt_apply_texture(const SculptSession &ss, const Brush &brush, const float brush_point[3], int thread_id, float *r_value, float r_rgba[4])
bool SCULPT_stroke_is_first_brush_step_of_symmetry_pass(const blender::ed::sculpt_paint::StrokeCache &cache)
bool SCULPT_get_redraw_rect(const ARegion ®ion, const RegionView3D &rv3d, const Object &ob, rcti &rect)
void SCULPT_flip_quat_by_symm_area(float quat[4], ePaintSymmetryFlags symm, ePaintSymmetryAreas symmarea, const float pivot[3])
bool SCULPT_brush_cursor_poll(bContext *C)
ePaintSymmetryFlags SCULPT_mesh_symmetry_xyz_get(const Object &object)
void SCULPT_calc_vertex_displacement(const SculptSession &ss, const Brush &brush, float rgba[3], float r_offset[3])
bool SCULPT_cursor_geometry_info_update(bContext *C, SculptCursorGeometryInfo *out, const float mouse[2], bool use_sampled_normal)
const float * SCULPT_brush_frontface_normal_from_falloff_shape(const SculptSession &ss, char falloff_shape)
bool SCULPT_is_symmetry_iteration_valid(char i, char symm)
bool SCULPT_brush_type_needs_all_pbvh_nodes(const Brush &brush)
void SCULPT_vertex_random_access_ensure(Object &object)
void SCULPT_tilt_apply_to_normal(float r_normal[3], blender::ed::sculpt_paint::StrokeCache *cache, float tilt_strength)
void SCULPT_stroke_modifiers_check(const bContext *C, Object &ob, const Brush &brush)
bool SCULPT_stroke_get_location(bContext *C, float out[3], const float mouse[2], bool force_original)
void SCULPT_do_paint_brush_image(const Scene &scene, const Depsgraph &depsgraph, PaintModeSettings &paint_mode_settings, const Sculpt &sd, Object &ob, const blender::IndexMask &node_mask)
bool SCULPT_brush_type_is_mask(int tool)
blender::float3 SCULPT_flip_v3_by_symm_area(const blender::float3 &vector, ePaintSymmetryFlags symm, ePaintSymmetryAreas symmarea, const blender::float3 &pivot)
float SCULPT_raycast_init(ViewContext *vc, const float mval[2], float ray_start[3], float ray_end[3], float ray_normal[3], bool original)
bool SCULPT_check_vertex_pivot_symmetry(const float vco[3], const float pco[3], char symm)
BLI_INLINE bool SCULPT_brush_type_is_attribute_only(int tool)
bool SCULPT_stroke_get_location_ex(bContext *C, float out[3], const float mval[2], bool force_original, bool check_closest, bool limit_closest_radius)
bool SCULPT_mode_poll_view3d(bContext *C)
bool SCULPT_mode_poll(bContext *C)
bool SCULPT_stroke_is_main_symmetry_pass(const blender::ed::sculpt_paint::StrokeCache &cache)
int SCULPT_vertex_count_get(const Object &object)
blender::Span< int > SCULPT_fake_neighbors_ensure(const Depsgraph &depsgraph, Object &ob, float max_dist)
bool SCULPT_brush_type_is_paint(int tool)
void SCULPT_fake_neighbors_free(Object &ob)
void SCULPT_cache_calc_brushdata_symm(blender::ed::sculpt_paint::StrokeCache &cache, ePaintSymmetryFlags symm, char axis, float angle)
bool SCULPT_is_vertex_inside_brush_radius_symm(const float vertex[3], const float br_co[3], float radius, char symm)
bool SCULPT_use_image_paint_brush(PaintModeSettings &settings, Object &ob)
bool SCULPT_handles_colors_report(const Object &object, ReportList *reports)
bool SCULPT_paint_image_canvas_get(PaintModeSettings &paint_mode_settings, Object &ob, Image **r_image, ImageUser **r_image_user) ATTR_NONNULL()
Get the image canvas for painting on the given object.
bool SCULPT_poll(bContext *C)
ePaintSymmetryAreas SCULPT_get_vertex_symm_area(const float co[3])
float SCULPT_brush_plane_offset_get(const Sculpt &sd, const SculptSession &ss)
void SCULPT_tilt_effective_normal_get(const SculptSession &ss, const Brush &brush, float r_no[3])
bool SCULPT_vertex_is_occluded(const Depsgraph &depsgraph, const Object &object, const blender::float3 &position, bool original)
void SCULPT_cube_tip_init(const Sculpt &sd, const Object &ob, const Brush &brush, float mat[4][4])
bool SCULPT_stroke_is_first_brush_step(const blender::ed::sculpt_paint::StrokeCache &cache)
void sculpt_project_v3_normal_align(const SculptSession &ss, float normal_weight, float grab_delta[3])
void SCULPT_tag_update_overlays(bContext *C)
blender::float3 active_vertex_co
blender::float3 follow_co
Array< float3 > detail_directions
struct blender::ed::sculpt_paint::StrokeCache::@481 clay_thumb_brush
std::optional< math::Quaternion > rake_rotation
struct blender::ed::sculpt_paint::StrokeCache::@480 paint_brush
std::unique_ptr< pose::IKChain > pose_ik_chain
float3 initial_normal_symm
Array< float > layer_displacement_factor
struct blender::ed::sculpt_paint::StrokeCache::@478 mirror_modifier_clip
Array< float3 > prev_displacement
struct blender::ed::sculpt_paint::StrokeCache::@479 displacement_smear
float3 gravity_direction_symm
float4x4 brush_local_mat_inv
float3 sculpt_normal_symm
Array< float4 > prev_colors
float4 wet_mix_prev_color
std::unique_ptr< auto_mask::Cache > automasking
float dyntopo_pixel_radius
float multiplane_scrape_angle
float3 initial_location_symm
float4x4 stroke_local_mat
float4x4 symm_rot_mat_inv
std::optional< math::Quaternion > rake_rotation_symm
Array< float3 > limit_surface_co
float3 last_location_symm
char saved_mask_brush_tool
ePaintSymmetryFlags mirror_symmetry_pass
Array< float4 > mix_colors
Array< float3 > surface_smooth_laplacian_disp
std::unique_ptr< cloth::SimulationData > cloth_sim
std::array< float, 10 > pressure_stabilizer
std::array< std::unique_ptr< boundary::SculptBoundary >, PAINT_SYMM_AREAS > boundaries
float3 orig_grab_location
Brush * saved_active_brush