84 for (
const int vert : face_verts) {
87 r_factors[
i] = 1.0f -
sum * inv_size;
97 if (span[face_indices[
i]]) {
113 face_sets[face_indices[
i]] = face_set_id;
121 const float strength,
122 const int face_set_id,
232 const float strength,
233 const int face_set_id,
321 if (mask_offset == -1) {
333 }
while ((l_iter = l_iter->
next) != f->l_first);
348 centers[
i] = face_center;
369 const float strength,
370 const int face_set_id,
436 if (
object.sculpt->cache->invert) {
int CustomData_get_offset_named(const CustomData *data, eCustomDataType type, blender::StringRef name)
#define SCULPT_FACE_SET_NONE
const Brush * BKE_paint_brush_for_read(const Paint *paint)
A BVH for high poly meshes.
const blender::Set< BMFace *, 0 > & BKE_pbvh_bmesh_node_faces(blender::bke::pbvh::BMeshNode *node)
int BKE_subdiv_ccg_grid_to_face_index(const SubdivCCG &subdiv_ccg, const int grid_index)
CCGKey BKE_subdiv_ccg_key_top_level(const SubdivCCG &subdiv_ccg)
#define BM_ELEM_CD_GET_FLOAT(ele, offset)
#define BM_ELEM_CD_SET_INT(ele, offset, f)
#define BM_FACE_FIRST_LOOP(p)
#define BM_elem_flag_test(ele, hflag)
BMesh const char void * data
void BM_face_calc_center_median(const BMFace *f, float r_cent[3])
BPy_StructRNA * depsgraph
static T sum(const btAlignedObjectArray< T > &items)
void resize(const int64_t new_size)
constexpr int64_t size() const
constexpr void fill(const T &value) const
constexpr Span slice(int64_t start, int64_t size) const
constexpr int64_t size() const
constexpr IndexRange index_range() const
void resize(const int64_t new_size)
GAttributeReader lookup(const StringRef attribute_id) const
Span< NodeT > nodes() const
void tag_face_sets_changed(const IndexMask &node_mask)
void foreach_index(Fn &&fn) const
static float normals[][3]
float3 face_normal_calc(Span< float3 > vert_positions, Span< int > face_verts)
float3 face_center_calc(Span< float3 > vert_positions, Span< int > face_verts)
pbvh::Tree * pbvh_get(Object &object)
Span< float3 > vert_positions_eval(const Depsgraph &depsgraph, const Object &object_orig)
void calc_grids_factors(const Depsgraph &depsgraph, const Object &object, const Cache &automasking, const bke::pbvh::GridsNode &node, Span< int > grids, MutableSpan< float > factors)
void calc_face_factors(const Depsgraph &depsgraph, const Object &object, OffsetIndices< int > faces, Span< int > corner_verts, const Cache &automasking, const bke::pbvh::MeshNode &node, Span< int > face_indices, MutableSpan< float > factors)
static void calc_face_centers(const OffsetIndices< int > faces, const Span< int > corner_verts, const Span< float3 > vert_positions, const Span< int > face_indices, const MutableSpan< float3 > positions)
static void calc_grids(const Depsgraph &depsgraph, Object &object, const Brush &brush, const float strength, const int face_set_id, const bke::pbvh::GridsNode &node, GridLocalData &tls, const MutableSpan< int > face_sets)
static void calc_face_normals(const OffsetIndices< int > faces, const Span< int > corner_verts, const Span< float3 > vert_positions, const Span< int > face_indices, const MutableSpan< float3 > normals)
static void calc_faces(const Depsgraph &depsgraph, Object &object, const Brush &brush, const float strength, const int face_set_id, Span< float3 > positions_eval, const bke::pbvh::MeshNode &node, const Span< int > face_indices, MeshLocalData &tls, const MutableSpan< int > face_sets)
static BLI_NOINLINE void calc_face_indices_grids(const SubdivCCG &subdiv_ccg, const Span< int > grids, const MutableSpan< int > face_indices)
static void calc_bmesh(Object &object, const Brush &brush, const float strength, const int face_set_id, bke::pbvh::BMeshNode &node, BMeshLocalData &tls, const int cd_offset)
constexpr float FACE_SET_BRUSH_MIN_FADE
static BLI_NOINLINE void apply_face_set(const int face_set_id, const Span< int > face_indices, const Span< float > factors, const MutableSpan< int > face_sets)
static void do_draw_face_sets_brush_bmesh(const Depsgraph &depsgraph, Object &object, const Brush &brush, const IndexMask &node_mask)
static BLI_NOINLINE void fill_factor_from_hide_and_mask(const Mesh &mesh, const Span< int > face_indices, const MutableSpan< float > r_factors)
static void do_draw_face_sets_brush_mesh(const Depsgraph &depsgraph, Object &object, const Brush &brush, const IndexMask &node_mask)
static void do_draw_face_sets_brush_grids(const Depsgraph &depsgraph, Object &object, const Brush &brush, const IndexMask &node_mask)
void do_draw_face_sets_brush(const Depsgraph &depsgraph, const Sculpt &sd, Object &object, const IndexMask &node_mask)
int find_next_available_id(Object &object)
int ensure_face_sets_bmesh(Object &object)
bke::SpanAttributeWriter< int > ensure_face_sets_mesh(Mesh &mesh)
int active_face_set_get(const Object &object)
void push_nodes(const Depsgraph &depsgraph, Object &object, const IndexMask &node_mask, const Type type)
void fill_factor_from_hide_and_mask(Span< bool > hide_vert, Span< float > mask, Span< int > verts, MutableSpan< float > r_factors)
MutableSpan< float3 > gather_grids_positions(const SubdivCCG &subdiv_ccg, const Span< int > grids, Vector< float3 > &positions)
void calc_brush_strength_factors(const StrokeCache &cache, const Brush &brush, Span< float > distances, MutableSpan< float > factors)
void apply_hardness_to_distances(float radius, float hardness, MutableSpan< float > distances)
void filter_distances_with_radius(float radius, Span< float > distances, MutableSpan< float > factors)
void filter_region_clip_factors(const SculptSession &ss, Span< float3 > vert_positions, Span< int > verts, MutableSpan< float > factors)
void scale_factors(MutableSpan< float > factors, float strength)
void calc_brush_distances(const SculptSession &ss, Span< float3 > vert_positions, Span< int > vert, eBrushFalloffShape falloff_shape, MutableSpan< float > r_distances)
void calc_brush_texture_factors(const SculptSession &ss, const Brush &brush, Span< float3 > vert_positions, Span< int > vert, MutableSpan< float > factors)
void calc_front_face(const float3 &view_normal, Span< float3 > normals, MutableSpan< float > factors)
VecBase< float, 3 > float3
blender::ed::sculpt_paint::StrokeCache * cache
MutableVArraySpan< T > span
Span< int > grids() const
std::unique_ptr< auto_mask::Cache > automasking
Vector< float > distances
Vector< float3 > positions
Vector< float3 > positions
Vector< int > face_indices
Vector< float > distances
Vector< float > distances
Vector< float3 > positions