diff options
Diffstat (limited to 'source/blender/editors/sculpt_paint/sculpt_intern.h')
-rw-r--r-- | source/blender/editors/sculpt_paint/sculpt_intern.h | 37 |
1 files changed, 35 insertions, 2 deletions
diff --git a/source/blender/editors/sculpt_paint/sculpt_intern.h b/source/blender/editors/sculpt_paint/sculpt_intern.h index 6a989ffea7e..ee0eaeb28f3 100644 --- a/source/blender/editors/sculpt_paint/sculpt_intern.h +++ b/source/blender/editors/sculpt_paint/sculpt_intern.h @@ -89,7 +89,7 @@ float SCULPT_raycast_init(struct ViewContext *vc, bool original); /* Sculpt PBVH abstraction API */ -void SCULPT_vertex_random_access_init(struct SculptSession *ss); +void SCULPT_vertex_random_access_ensure(struct SculptSession *ss); int SCULPT_vertex_count_get(struct SculptSession *ss); const float *SCULPT_vertex_co_get(struct SculptSession *ss, int index); @@ -97,6 +97,13 @@ void SCULPT_vertex_normal_get(SculptSession *ss, int index, float no[3]); float SCULPT_vertex_mask_get(struct SculptSession *ss, int index); const float *SCULPT_vertex_color_get(SculptSession *ss, int index); +const float *SCULPT_vertex_persistent_co_get(SculptSession *ss, int index); +void SCULPT_vertex_persistent_normal_get(SculptSession *ss, int index, float no[3]); + +/* Returns the info of the limit surface when Multires is available, otherwise it returns the + * current coordinate of the vertex. */ +void SCULPT_vertex_limit_surface_get(SculptSession *ss, int index, float r_co[3]); + #define SCULPT_VERTEX_NEIGHBOR_FIXED_CAPACITY 256 typedef struct SculptVertexNeighborIter { /* Storage */ @@ -347,7 +354,6 @@ void SCULPT_cloth_simulation_free(struct SculptClothSimulation *cloth_sim); void SCULPT_cloth_simulation_limits_draw(const uint gpuattr, const struct Brush *brush, - const float obmat[4][4], const float location[3], const float normal[3], const float rds, @@ -390,9 +396,27 @@ struct SculptPoseIKChain *SCULPT_pose_ik_chain_init(struct Sculpt *sd, const float radius); void SCULPT_pose_ik_chain_free(struct SculptPoseIKChain *ik_chain); +/* Boundary Brush. */ +struct SculptBoundary *SCULPT_boundary_data_init(Object *object, + Brush *brush, + const int initial_vertex, + const float radius); +void SCULPT_boundary_data_free(struct SculptBoundary *bdata); +void SCULPT_do_boundary_brush(struct Sculpt *sd, + struct Object *ob, + struct PBVHNode **nodes, + int totnode); + +void SCULPT_boundary_edges_preview_draw(const uint gpuattr, + struct SculptSession *ss, + const float outline_col[3], + const float outline_alpha); +void SCULPT_boundary_pivot_line_preview_draw(const uint gpuattr, struct SculptSession *ss); + /* Multiplane Scrape Brush. */ void SCULPT_do_multiplane_scrape_brush(Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode); void SCULPT_multiplane_scrape_preview_draw(const uint gpuattr, + Brush *brush, SculptSession *ss, const float outline_col[3], const float outline_alpha); @@ -627,6 +651,9 @@ typedef struct SculptThreadedTaskData { float transform_mats[8][4][4]; + /* Boundary brush */ + float boundary_deform_strength; + float cloth_time_step; SculptClothSimulation *cloth_sim; float *cloth_sim_initial_location; @@ -852,6 +879,9 @@ typedef struct StrokeCache { float initial_normal[3]; float true_initial_normal[3]; + /* Boundary brush */ + struct SculptBoundary *bdata[PAINT_SYMM_AREAS]; + /* Surface Smooth Brush */ /* Stores the displacement produced by the laplacian step of HC smooth. */ float (*surface_smooth_laplacian_disp)[3]; @@ -905,7 +935,10 @@ typedef struct FilterCache { /* Sharpen mesh filter. */ float sharpen_smooth_ratio; + float sharpen_intensify_detail_strength; + int sharpen_curvature_smooth_iterations; float *sharpen_factor; + float (*sharpen_detail_directions)[3]; /* unmasked nodes */ PBVHNode **nodes; |