|
Blender V5.0
|
Classes | |
| struct | Settings |
| struct | SubdivStats |
| struct | Displacement |
| struct | Subdiv |
| struct | ForeachContext |
| struct | ToMeshSettings |
| struct | ConverterStorage |
| struct | SubdivDeformContext |
| struct | PolyCornerIndex |
| struct | MultiresDisplacementData |
| struct | ForeachTaskContext |
| struct | SubdivMeshContext |
| struct | LoopsOfPtex |
| struct | VerticesForInterpolation |
| struct | LoopsForInterpolation |
| struct | SubdivMeshTLS |
Typedefs | |
| using | ForeachTopologyInformationCb |
| using | ForeachVertexFromCornerCb |
| using | ForeachVertexFromEdgeCb |
| using | ForeachVertexInnerCb |
| using | ForeachEdgeCb |
| using | ForeachLoopCb |
| using | ForeachPolygonCb |
| using | ForeachLooseCb |
| using | ForeachVertexOfLooseEdgeCb |
Functions | |
| bool | eval_begin (Subdiv *subdiv, eSubdivEvaluatorType evaluator_type, OpenSubdiv_EvaluatorCache *evaluator_cache, const OpenSubdiv_EvaluatorSettings *settings) |
| bool | eval_begin_from_mesh (Subdiv *subdiv, const Mesh *mesh, eSubdivEvaluatorType evaluator_type, Span< float3 > coarse_vert_positions={}, OpenSubdiv_EvaluatorCache *evaluator_cache=nullptr) |
| bool | eval_refine_from_mesh (Subdiv *subdiv, const Mesh *mesh, Span< float3 > coarse_vert_positions) |
| void | eval_init_displacement (Subdiv *subdiv) |
| float3 | eval_limit_point (Subdiv *subdiv, int ptex_face_index, float u, float v) |
| void | eval_limit_point_and_derivatives (Subdiv *subdiv, int ptex_face_index, float u, float v, float3 &r_P, float3 &r_dPdu, float3 &r_dPdv) |
| void | eval_limit_point_and_normal (Subdiv *subdiv, int ptex_face_index, float u, float v, float3 &r_P, float3 &r_N) |
| void | eval_vertex_data (Subdiv *subdiv, int ptex_face_index, float u, float v, float r_vertex_data[]) |
| void | eval_face_varying (Subdiv *subdiv, int face_varying_channel, int ptex_face_index, float u, float v, float2 &r_face_varying) |
| void | eval_displacement (Subdiv *subdiv, int ptex_face_index, float u, float v, const float3 &dPdu, const float3 &dPdv, float3 &r_D) |
| float3 | eval_final_point (Subdiv *subdiv, int ptex_face_index, float u, float v) |
| int | topology_num_fvar_layers_get (const Subdiv *subdiv) |
| void | converter_free (OpenSubdiv_Converter *converter) |
| int | converter_vtx_boundary_interpolation_from_settings (const Settings *settings) |
| int | converter_fvar_linear_from_settings (const Settings *settings) |
| void | converter_init_for_mesh (OpenSubdiv_Converter *converter, const Settings *settings, const Mesh *mesh) |
| static OpenSubdiv_SchemeType | get_scheme_type (const OpenSubdiv_Converter *converter) |
| static OpenSubdiv_VtxBoundaryInterpolation | get_vtx_boundary_interpolation (const OpenSubdiv_Converter *converter) |
| static OpenSubdiv_FVarLinearInterpolation | get_fvar_linear_interpolation (const OpenSubdiv_Converter *converter) |
| static bool | specifies_full_topology (const OpenSubdiv_Converter *) |
| static int | get_num_edges (const OpenSubdiv_Converter *converter) |
| static int | get_num_vertices (const OpenSubdiv_Converter *converter) |
| static void | get_face_vertices (const OpenSubdiv_Converter *converter, int manifold_face_index, int *manifold_face_vertices) |
| static void | get_edge_vertices (const OpenSubdiv_Converter *converter, int manifold_edge_index, int *manifold_edge_vertices) |
| static float | get_edge_sharpness (const OpenSubdiv_Converter *converter, int manifold_edge_index) |
| static bool | is_infinite_sharp_vertex (const OpenSubdiv_Converter *converter, int manifold_vertex_index) |
| static float | get_vertex_sharpness (const OpenSubdiv_Converter *converter, int manifold_vertex_index) |
| static int | get_num_uv_layers (const OpenSubdiv_Converter *converter) |
| static void | precalc_uv_layer (const OpenSubdiv_Converter *converter, const int layer_index) |
| static void | finish_uv_layer (const OpenSubdiv_Converter *) |
| static int | get_num_uvs (const OpenSubdiv_Converter *converter) |
| static int | get_face_corner_uv_index (const OpenSubdiv_Converter *converter, const int face_index, const int corner) |
| static void | free_user_data (const OpenSubdiv_Converter *converter) |
| static void | init_functions (OpenSubdiv_Converter *converter) |
| static void | initialize_manifold_index_array (const BitSpan not_used_map, const int num_elements, int **r_indices, int **r_indices_reverse, int *r_num_manifold_elements) |
| static void | initialize_manifold_indices (ConverterStorage *storage) |
| static void | init_user_data (OpenSubdiv_Converter *converter, const Settings *settings, const Mesh *mesh) |
| static int | displacement_get_grid_and_coord (const Displacement &displacement, const int ptex_face_index, const float u, const float v, const MDisps **r_displacement_grid, float &r_grid_u, float &r_grid_v) |
| static const MDisps * | displacement_get_other_grid (const Displacement &displacement, const int ptex_face_index, const int corner, const int corner_delta) |
| BLI_INLINE AverageWith | read_displacement_grid (const MDisps &displacement_grid, const int grid_size, const float grid_u, const float grid_v, float3 &r_tangent_D) |
| static void | average_convert_grid_coord_to_ptex (const int num_corners, const int corner, const float grid_u, const float grid_v, float &r_ptex_face_u, float &r_ptex_face_v) |
| static void | average_construct_tangent_matrix (Subdiv &subdiv, const int num_corners, const int ptex_face_index, const int corner, const float u, const float v, float3x3 &r_tangent_matrix) |
| static void | average_read_displacement_tangent (const MultiresDisplacementData &data, const MDisps &other_displacement_grid, const float grid_u, const float grid_v, float3 &r_tangent_D) |
| static void | average_read_displacement_object (const MultiresDisplacementData &data, const MDisps &displacement_grid, const float grid_u, const float grid_v, const int ptex_face_index, const int corner_index, float3 &r_D) |
| static void | average_get_other_ptex_and_corner (const MultiresDisplacementData &data, const int ptex_face_index, const int corner, const int corner_delta, int &r_other_ptex_face_index, int &r_other_corner_index) |
| static void | average_with_other (const Displacement &displacement, const int ptex_face_index, const int corner, const float grid_u, const float grid_v, const int corner_delta, float3 &r_D) |
| static void | average_with_all (const Displacement &displacement, const int ptex_face_index, const int corner, const float, const float, float3 &r_D) |
| static void | average_with_next (const Displacement &displacement, const int ptex_face_index, const int corner, const float grid_u, const float, float3 &r_D) |
| static void | average_with_prev (const Displacement &displacement, const int ptex_face_index, const int corner, const float, const float grid_v, float3 &r_D) |
| static void | average_displacement (const Displacement &displacement, const AverageWith average_with, const int ptex_face_index, const int corner, const float grid_u, const float grid_v, float3 &r_D) |
| static int | displacement_get_face_corner (const MultiresDisplacementData &data, const int ptex_face_index, const float u, const float v) |
| static void | initialize (Displacement *displacement) |
| static void | eval_displacement (Displacement *displacement, const int ptex_face_index, const float u, const float v, const float3 &dPdu, const float3 &dPdv, float3 &r_D) |
| static void | free_displacement (Displacement *displacement) |
| static int | count_num_ptex_faces (const Mesh &mesh) |
| static void | displacement_data_init_mapping (Displacement &displacement, const Mesh &mesh) |
| static void | displacement_init_data (Displacement &displacement, Subdiv &subdiv, const Mesh &mesh, const MultiresModifierData &mmd) |
| static void | displacement_init_functions (Displacement *displacement) |
Module | |
| void | init () |
| void | exit () |
Conversion helpers. | |
| FVarLinearInterpolation | fvar_interpolation_from_uv_smooth (int uv_smooth) |
| VtxBoundaryInterpolation | vtx_boundary_interpolation_from_subsurf (int boundary_smooth) |
Statistics | |
| void | stats_init (SubdivStats *stats) |
| void | stats_begin (SubdivStats *stats, StatsValue value) |
| void | stats_end (SubdivStats *stats, StatsValue value) |
| void | stats_reset (SubdivStats *stats, StatsValue value) |
| void | stats_print (const SubdivStats *stats) |
Settings | |
| bool | settings_equal (const Settings *settings_a, const Settings *settings_b) |
Construction | |
| Subdiv * | new_from_converter (const Settings *settings, OpenSubdiv_Converter *converter) |
| Subdiv * | new_from_mesh (const Settings *settings, const Mesh *mesh) |
| Subdiv * | update_from_converter (Subdiv *subdiv, const Settings *settings, OpenSubdiv_Converter *converter) |
| Subdiv * | update_from_mesh (Subdiv *subdiv, const Settings *settings, const Mesh *mesh) |
| void | free (Subdiv *subdiv) |
Displacement API | |
| void | displacement_attach_from_multires (Subdiv *subdiv, const Mesh *mesh, const MultiresModifierData *mmd) |
| void | displacement_detach (Subdiv *subdiv) |
Topology helpers | |
| Span< int > | face_ptex_offset_get (Subdiv *subdiv) |
PTex faces and grids | |
| BLI_INLINE void | ptex_face_uv_to_grid_uv (float ptex_u, float ptex_v, float *r_grid_u, float *r_grid_v) |
| BLI_INLINE float2 | ptex_face_uv_to_grid_uv (const float2 &ptex_uv) |
| BLI_INLINE void | grid_uv_to_ptex_face_uv (float grid_u, float grid_v, float *r_ptex_u, float *r_ptex_v) |
| BLI_INLINE int | grid_size_from_level (int level) |
| BLI_INLINE int | rotate_quad_to_corner (float quad_u, float quad_v, float *r_corner_u, float *r_corner_v) |
| BLI_INLINE float2 | rotate_quad_to_corner (int corner, const float2 &quad) |
| BLI_INLINE void | rotate_grid_to_quad (int corner, float grid_u, float grid_v, float *r_quad_u, float *r_quad_v) |
| BLI_INLINE float | crease_to_sharpness (float crease) |
| BLI_INLINE float | sharpness_to_crease (float sharpness) |
Public entry point | |
| void | deform_coarse_vertices (Subdiv *subdiv, const Mesh *coarse_mesh, MutableSpan< float3 > vert_positions) |
| Mesh * | subdiv_to_mesh (Subdiv *subdiv, const ToMeshSettings *settings, const Mesh *coarse_mesh) |
Subdivision process entry points | |
| bool | foreach_subdiv_geometry (Subdiv *subdiv, const ForeachContext *context, const ToMeshSettings *mesh_settings, const Mesh *coarse_mesh) |
| static void | subdiv_foreach_single_geometry_vertices (ForeachTaskContext *ctx, void *tls) |
| static void | subdiv_foreach_mark_non_loose_geometry (ForeachTaskContext *ctx) |
| static void | subdiv_foreach_single_thread_tasks (ForeachTaskContext *ctx) |
| static void | subdiv_foreach_task (void *__restrict userdata, const int face_index, const TaskParallelTLS *__restrict tls) |
| static void | subdiv_foreach_boundary_edges_task (void *__restrict userdata, const int edge_index, const TaskParallelTLS *__restrict tls) |
| static void | subdiv_foreach_free (const void *__restrict userdata, void *__restrict userdata_chunk) |
Loose elements subdivision process | |
| float3 | mesh_interpolate_position_on_edge (Span< float3 > coarse_positions, Span< int2 > coarse_edges, GroupedSpan< int > vert_to_edge_map, int coarse_edge_index, bool is_simple, float u) |
| static void | subdiv_mesh_vertex_loose (const ForeachContext *foreach_context, void *, const int coarse_vertex_index, const int subdiv_vertex_index) |
| static std::array< std::optional< int2 >, 2 > | find_edge_neighbors (const Span< int2 > coarse_edges, const GroupedSpan< int > vert_to_edge_map, const int edge_index) |
| static std::array< float3, 4 > | find_loose_edge_interpolation_positions (const Span< float3 > coarse_positions, const int2 &coarse_edge, const std::array< std::optional< int2 >, 2 > &neighbors) |
| static void | subdiv_mesh_vertex_of_loose_edge_interpolate (SubdivMeshContext *ctx, const int2 &coarse_edge, const float u, const int subdiv_vertex_index) |
| static void | subdiv_mesh_vertex_of_loose_edge (const ForeachContext *foreach_context, void *, const int coarse_edge_index, const float u, const int subdiv_vertex_index) |
Limit surface | |
| void | calculate_limit_positions (Mesh *mesh, MutableSpan< float3 > limit_positions) |
Subdivision context | |
| static void | subdiv_mesh_prepare_accumulator (SubdivDeformContext *ctx, int num_vertices) |
| static void | subdiv_mesh_context_free (SubdivDeformContext *ctx) |
| static void | subdiv_mesh_ctx_cache_uv_layers (SubdivMeshContext *ctx) |
| static void | subdiv_mesh_ctx_cache_custom_data_layers (SubdivMeshContext *ctx) |
| static void | subdiv_mesh_prepare_accumulator (SubdivMeshContext *ctx, int num_vertices) |
| static void | subdiv_mesh_context_free (SubdivMeshContext *ctx) |
Accumulation helpers | |
| static void | subdiv_accumulate_vertex_displacement (SubdivDeformContext *ctx, const int ptex_face_index, const float u, const float v, int vertex_index) |
| static void | subdiv_accumulate_vertex_displacement (SubdivMeshContext *ctx, const int ptex_face_index, const float u, const float v, const int subdiv_vertex_index) |
Subdivision callbacks | |
| static bool | subdiv_mesh_topology_info (const ForeachContext *foreach_context, const int, const int, const int, const int, const int *) |
| static void | subdiv_mesh_vertex_every_corner (const ForeachContext *foreach_context, void *, const int ptex_face_index, const float u, const float v, const int coarse_vertex_index, const int, const int, const int) |
| static void | subdiv_mesh_vertex_corner (const ForeachContext *foreach_context, void *, const int ptex_face_index, const float u, const float v, const int coarse_vertex_index, const int, const int, const int) |
Initialization | |
| static void | setup_foreach_callbacks (const SubdivDeformContext *subdiv_context, ForeachContext *foreach_context) |
| static void | subdiv_foreach_ctx_count (ForeachTaskContext *ctx) |
| static void | subdiv_foreach_ctx_init_offsets (ForeachTaskContext *ctx) |
| static void | subdiv_foreach_ctx_init (Subdiv *subdiv, ForeachTaskContext *ctx) |
| static void | subdiv_foreach_ctx_free (ForeachTaskContext *ctx) |
| static void | setup_foreach_callbacks (const SubdivMeshContext *subdiv_context, ForeachContext *foreach_context) |
General helpers | |
| BLI_INLINE int | num_ptex_faces_per_face_get (const IndexRange face) |
| BLI_INLINE int | num_edges_per_ptex_face_get (const int resolution) |
| BLI_INLINE int | num_inner_edges_per_ptex_face_get (const int resolution) |
| BLI_INLINE int | num_faces_per_ptex_get (const int resolution) |
| BLI_INLINE int | ptex_face_resolution_get (const IndexRange face, int resolution) |
Threading helpers | |
| static void * | subdiv_foreach_tls_alloc (ForeachTaskContext *ctx) |
| static void | subdiv_foreach_tls_free (ForeachTaskContext *ctx, void *tls) |
Vertex traversal process | |
| static void | subdiv_foreach_corner_vertices_regular_do (ForeachTaskContext *ctx, void *tls, const int coarse_face_index, ForeachVertexFromCornerCb vertex_corner, bool check_usage) |
| static void | subdiv_foreach_corner_vertices_regular (ForeachTaskContext *ctx, void *tls, const int coarse_face_index) |
| static void | subdiv_foreach_corner_vertices_special_do (ForeachTaskContext *ctx, void *tls, const int coarse_face_index, ForeachVertexFromCornerCb vertex_corner, bool check_usage) |
| static void | subdiv_foreach_corner_vertices_special (ForeachTaskContext *ctx, void *tls, const int coarse_face_index) |
| static void | subdiv_foreach_corner_vertices (ForeachTaskContext *ctx, void *tls, const int coarse_face_index) |
| static void | subdiv_foreach_every_corner_vertices_regular (ForeachTaskContext *ctx, void *tls, const int coarse_face_index) |
| static void | subdiv_foreach_every_corner_vertices_special (ForeachTaskContext *ctx, void *tls, const int coarse_face_index) |
| static void | subdiv_foreach_every_corner_vertices (ForeachTaskContext *ctx, void *tls) |
| static void | subdiv_foreach_edge_vertices_regular_do (ForeachTaskContext *ctx, void *tls, const int coarse_face_index, ForeachVertexFromEdgeCb vertex_edge, bool check_usage) |
| static void | subdiv_foreach_edge_vertices_regular (ForeachTaskContext *ctx, void *tls, const int coarse_face_index) |
| static void | subdiv_foreach_edge_vertices_special_do (ForeachTaskContext *ctx, void *tls, const int coarse_face_index, ForeachVertexFromEdgeCb vertex_edge, bool check_usage) |
| static void | subdiv_foreach_edge_vertices_special (ForeachTaskContext *ctx, void *tls, const int coarse_face_index) |
| static void | subdiv_foreach_edge_vertices (ForeachTaskContext *ctx, void *tls, const int coarse_face_index) |
| static void | subdiv_foreach_every_edge_vertices_regular (ForeachTaskContext *ctx, void *tls, const int coarse_face_index) |
| static void | subdiv_foreach_every_edge_vertices_special (ForeachTaskContext *ctx, void *tls, const int coarse_face_index) |
| static void | subdiv_foreach_every_edge_vertices (ForeachTaskContext *ctx, void *tls) |
| static void | subdiv_foreach_inner_vertices_regular (ForeachTaskContext *ctx, void *tls, const int coarse_face_index) |
| static void | subdiv_foreach_inner_vertices_special (ForeachTaskContext *ctx, void *tls, const int coarse_face_index) |
| static void | subdiv_foreach_inner_vertices (ForeachTaskContext *ctx, void *tls, const int coarse_face_index) |
| static void | subdiv_foreach_vertices (ForeachTaskContext *ctx, void *tls, const int face_index) |
Edge traversal process | |
| static int | subdiv_foreach_edges_row (ForeachTaskContext *ctx, void *tls, const int coarse_edge_index, const int start_subdiv_edge_index, const int start_vertex_index, const int num_edges_per_row) |
| static int | subdiv_foreach_edges_column (ForeachTaskContext *ctx, void *tls, const int coarse_start_edge_index, const int coarse_end_edge_index, const int start_subdiv_edge_index, const int start_vertex_index, const int num_edges_per_row) |
| static void | subdiv_foreach_edges_all_patches_regular (ForeachTaskContext *ctx, void *tls, const int coarse_face_index) |
| static void | subdiv_foreach_edges_all_patches_special (ForeachTaskContext *ctx, void *tls, const int coarse_face_index) |
| static void | subdiv_foreach_edges_all_patches (ForeachTaskContext *ctx, void *tls, const int coarse_face_index) |
| static void | subdiv_foreach_edges (ForeachTaskContext *ctx, void *tls, int face_index) |
| static void | subdiv_foreach_boundary_edges (ForeachTaskContext *ctx, void *tls, int coarse_edge_index) |
Loops traversal | |
| static void | rotate_indices (const int rot, int *a, int *b, int *c, int *d) |
| static void | subdiv_foreach_loops_of_face (ForeachTaskContext *ctx, void *tls, int subdiv_loop_start_index, const int ptex_face_index, const int coarse_face_index, const int coarse_corner_index, const int rotation, int v0, int e0, int v1, int e1, int v2, int e2, int v3, int e3, const float u, const float v, const float du, const float dv) |
| static int | subdiv_foreach_loops_corner_index (const float u, const float v, const float du, const float dv) |
| static void | subdiv_foreach_loops_regular (ForeachTaskContext *ctx, void *tls, const int coarse_face_index) |
| static void | subdiv_foreach_loops_special (ForeachTaskContext *ctx, void *tls, const int coarse_face_index) |
| static void | subdiv_foreach_loops (ForeachTaskContext *ctx, void *tls, int face_index) |
Polygons traverse process | |
| static void | subdiv_foreach_faces (ForeachTaskContext *ctx, void *tls, int face_index) |
Loose elements traverse process | |
| static void | subdiv_foreach_loose_vertices_task (void *__restrict userdata, const int coarse_vertex_index, const TaskParallelTLS *__restrict tls) |
| static void | subdiv_foreach_vertices_of_loose_edges_task (void *__restrict userdata, const int coarse_edge_index, const TaskParallelTLS *__restrict tls) |
Loop custom data copy helpers | |
| static void | loops_of_ptex_get (LoopsOfPtex *loops_of_ptex, const IndexRange coarse_face, const int ptex_of_face_index) |
Vertex custom data interpolation helpers | |
| static void | vertex_interpolation_init (const SubdivMeshContext *ctx, VerticesForInterpolation *vertex_interpolation, const IndexRange coarse_face) |
| static void | vertex_interpolation_from_corner (const SubdivMeshContext *ctx, VerticesForInterpolation *vertex_interpolation, const IndexRange coarse_face, const int corner) |
| static void | vertex_interpolation_end (VerticesForInterpolation *vertex_interpolation) |
Loop custom data interpolation helpers | |
| static void | loop_interpolation_init (const SubdivMeshContext *ctx, LoopsForInterpolation *loop_interpolation, const IndexRange coarse_face) |
| static void | loop_interpolation_from_corner (const SubdivMeshContext *ctx, LoopsForInterpolation *loop_interpolation, const IndexRange coarse_face, const int corner) |
| static void | loop_interpolation_end (LoopsForInterpolation *loop_interpolation) |
TLS | |
| static void | subdiv_mesh_tls_free (void *tls_v) |
Evaluation helper functions | |
| static void | subdiv_vertex_orco_evaluate (const SubdivMeshContext *ctx, const int ptex_face_index, const float u, const float v, const int subdiv_vertex_index) |
Callbacks | |
| static bool | subdiv_mesh_topology_info (const ForeachContext *foreach_context, const int num_vertices, const int num_edges, const int num_loops, const int num_faces, const int *) |
Vertex subdivision process | |
| static void | subdiv_vertex_data_copy (const SubdivMeshContext *ctx, const int coarse_vertex_index, const int subdiv_vertex_index) |
| static void | subdiv_vertex_data_interpolate (const SubdivMeshContext *ctx, const int subdiv_vertex_index, const VerticesForInterpolation *vertex_interpolation, const float u, const float v) |
| static void | evaluate_vertex_and_apply_displacement_copy (const SubdivMeshContext *ctx, const int ptex_face_index, const float u, const float v, const int coarse_vertex_index, const int subdiv_vertex_index) |
| static void | evaluate_vertex_and_apply_displacement_interpolate (const SubdivMeshContext *ctx, const int ptex_face_index, const float u, const float v, VerticesForInterpolation *vertex_interpolation, const int subdiv_vertex_index) |
| static void | subdiv_mesh_vertex_displacement_every_corner_or_edge (const ForeachContext *foreach_context, void *, const int ptex_face_index, const float u, const float v, const int subdiv_vertex_index) |
| static void | subdiv_mesh_vertex_displacement_every_corner (const ForeachContext *foreach_context, void *tls, const int ptex_face_index, const float u, const float v, const int, const int, const int, const int subdiv_vertex_index) |
| static void | subdiv_mesh_vertex_displacement_every_edge (const ForeachContext *foreach_context, void *tls, const int ptex_face_index, const float u, const float v, const int, const int, const int, const int subdiv_vertex_index) |
| static void | subdiv_mesh_vertex_corner (const ForeachContext *foreach_context, void *, const int ptex_face_index, const float u, const float v, const int coarse_vertex_index, const int, const int, const int subdiv_vertex_index) |
| static void | subdiv_mesh_ensure_vertex_interpolation (SubdivMeshContext *ctx, SubdivMeshTLS *tls, const int coarse_face_index, const int coarse_corner) |
| static void | subdiv_mesh_vertex_edge (const ForeachContext *foreach_context, void *tls_v, const int ptex_face_index, const float u, const float v, const int, const int coarse_face_index, const int coarse_corner, const int subdiv_vertex_index) |
| static bool | subdiv_mesh_is_center_vertex (const IndexRange coarse_face, const float u, const float v) |
| static void | subdiv_mesh_tag_center_vertex (const IndexRange coarse_face, const int subdiv_vertex_index, const float u, const float v, Mesh *subdiv_mesh) |
| static void | subdiv_mesh_vertex_inner (const ForeachContext *foreach_context, void *tls_v, const int ptex_face_index, const float u, const float v, const int coarse_face_index, const int coarse_corner, const int subdiv_vertex_index) |
Edge subdivision process | |
| static void | subdiv_copy_edge_data (SubdivMeshContext *ctx, const int subdiv_edge_index, const int coarse_edge_index) |
| static void | subdiv_mesh_edge (const ForeachContext *foreach_context, void *, const int coarse_edge_index, const int subdiv_edge_index, const bool, const int subdiv_v1, const int subdiv_v2) |
Loops creation/interpolation | |
| static void | subdiv_interpolate_corner_data (const SubdivMeshContext *ctx, const int subdiv_loop_index, const LoopsForInterpolation *loop_interpolation, const float u, const float v) |
| static void | subdiv_eval_uv_layer (SubdivMeshContext *ctx, const int corner_index, const int ptex_face_index, const float u, const float v) |
| static void | subdiv_mesh_ensure_loop_interpolation (SubdivMeshContext *ctx, SubdivMeshTLS *tls, const int coarse_face_index, const int coarse_corner) |
| static void | subdiv_mesh_loop (const ForeachContext *foreach_context, void *tls_v, const int ptex_face_index, const float u, const float v, const int, const int coarse_face_index, const int coarse_corner, const int subdiv_loop_index, const int subdiv_vertex_index, const int subdiv_edge_index) |
Polygons subdivision process | |
| static void | subdiv_mesh_face (const ForeachContext *foreach_context, void *, const int coarse_face_index, const int subdiv_face_index, const int start_loop_index, const int) |
Definition at line 57 of file BKE_subdiv_foreach.hh.
Definition at line 65 of file BKE_subdiv_foreach.hh.
Definition at line 84 of file BKE_subdiv_foreach.hh.
Definition at line 77 of file BKE_subdiv_foreach.hh.
Definition at line 21 of file BKE_subdiv_foreach.hh.
Definition at line 28 of file BKE_subdiv_foreach.hh.
Definition at line 38 of file BKE_subdiv_foreach.hh.
Definition at line 48 of file BKE_subdiv_foreach.hh.
Definition at line 89 of file BKE_subdiv_foreach.hh.
|
strong |
| Enumerator | |
|---|---|
| None | |
| All | |
| Prev | |
| Next | |
Definition at line 59 of file subdiv_displacement_multires.cc.
| Enumerator | |
|---|---|
| SUBDIV_EVALUATOR_TYPE_CPU | |
| SUBDIV_EVALUATOR_TYPE_GPU | |
Definition at line 22 of file BKE_subdiv_eval.hh.
Definition at line 34 of file BKE_subdiv.hh.
Definition at line 84 of file BKE_subdiv.hh.
| Enumerator | |
|---|---|
| SUBDIV_VTX_BOUNDARY_NONE | Do not interpolate boundaries. |
| SUBDIV_VTX_BOUNDARY_EDGE_ONLY | Sharpen edges. |
| SUBDIV_VTX_BOUNDARY_EDGE_AND_CORNER | Sharpen edges and corners. |
Definition at line 25 of file BKE_subdiv.hh.
|
static |
Definition at line 147 of file subdiv_displacement_multires.cc.
References BKE_multires_construct_tangent_matrix(), eval_limit_point_and_derivatives(), and v.
Referenced by average_read_displacement_object().
|
static |
Definition at line 132 of file subdiv_displacement_multires.cc.
References grid_uv_to_ptex_face_uv(), and rotate_grid_to_quad().
Referenced by average_read_displacement_object().
|
static |
Definition at line 282 of file subdiv_displacement_multires.cc.
References All, average_with_all(), average_with_next(), average_with_prev(), Next, None, and Prev.
Referenced by eval_displacement().
|
static |
Definition at line 199 of file subdiv_displacement_multires.cc.
References data, and blender::bke::subdiv::PolyCornerIndex::face_index.
Referenced by average_with_other().
|
static |
Definition at line 173 of file subdiv_displacement_multires.cc.
References average_construct_tangent_matrix(), average_convert_grid_coord_to_ptex(), average_read_displacement_tangent(), data, blender::bke::subdiv::PolyCornerIndex::face_index, blender::math::transform_direction(), and v.
Referenced by average_with_other().
|
static |
Definition at line 164 of file subdiv_displacement_multires.cc.
References data, and read_displacement_grid().
Referenced by average_read_displacement_object().
|
static |
Definition at line 246 of file subdiv_displacement_multires.cc.
References average_with_other(), data, blender::bke::subdiv::PolyCornerIndex::face_index, and blender::bke::subdiv::Displacement::user_data.
Referenced by average_displacement().
|
static |
Definition at line 262 of file subdiv_displacement_multires.cc.
References average_with_other().
Referenced by average_displacement().
|
static |
Definition at line 217 of file subdiv_displacement_multires.cc.
References average_get_other_ptex_and_corner(), average_read_displacement_object(), data, displacement_get_other_grid(), and blender::bke::subdiv::Displacement::user_data.
Referenced by average_with_all(), average_with_next(), and average_with_prev().
|
static |
Definition at line 272 of file subdiv_displacement_multires.cc.
References average_with_other().
Referenced by average_displacement().
| void blender::bke::subdiv::calculate_limit_positions | ( | Mesh * | mesh, |
| MutableSpan< float3 > | limit_positions ) |
Calculate positions position of the given mesh vertices at the limit surface of the mesh.
The limit_positions is to be sized at exactly the number of the base mesh vertices.
Definition at line 1227 of file subdiv_mesh.cc.
References BLI_assert, blender::MutableSpan< T >::copy_from(), deform_coarse_vertices(), free(), blender::bke::subdiv::Settings::fvar_linear_interpolation, blender::bke::subdiv::Settings::is_adaptive, blender::bke::subdiv::Settings::is_simple, blender::bke::subdiv::Settings::level, blender::MutableSpan< T >::size(), SUBDIV_FVAR_LINEAR_INTERPOLATION_CORNERS_AND_JUNCTIONS, SUBDIV_VTX_BOUNDARY_EDGE_ONLY, update_from_mesh(), blender::bke::subdiv::Settings::use_creases, and blender::bke::subdiv::Settings::vtx_boundary_interpolation.
Referenced by add_verts_to_dgroups().
| void blender::bke::subdiv::converter_free | ( | OpenSubdiv_Converter * | converter | ) |
Definition at line 15 of file subdiv_converter.cc.
References OpenSubdiv_Converter::freeUserData.
Referenced by new_from_mesh(), and update_from_mesh().
| int blender::bke::subdiv::converter_fvar_linear_from_settings | ( | const Settings * | settings | ) |
Definition at line 36 of file subdiv_converter.cc.
References BLI_assert_msg, blender::bke::subdiv::Settings::fvar_linear_interpolation, OSD_FVAR_LINEAR_INTERPOLATION_ALL, OSD_FVAR_LINEAR_INTERPOLATION_BOUNDARIES, OSD_FVAR_LINEAR_INTERPOLATION_CORNERS_ONLY, OSD_FVAR_LINEAR_INTERPOLATION_CORNERS_PLUS1, OSD_FVAR_LINEAR_INTERPOLATION_CORNERS_PLUS2, OSD_FVAR_LINEAR_INTERPOLATION_NONE, SUBDIV_FVAR_LINEAR_INTERPOLATION_ALL, SUBDIV_FVAR_LINEAR_INTERPOLATION_BOUNDARIES, SUBDIV_FVAR_LINEAR_INTERPOLATION_CORNERS_AND_JUNCTIONS, SUBDIV_FVAR_LINEAR_INTERPOLATION_CORNERS_JUNCTIONS_AND_CONCAVE, SUBDIV_FVAR_LINEAR_INTERPOLATION_CORNERS_ONLY, and SUBDIV_FVAR_LINEAR_INTERPOLATION_NONE.
Referenced by get_fvar_linear_interpolation().
| void blender::bke::subdiv::converter_init_for_mesh | ( | OpenSubdiv_Converter * | converter, |
| const Settings * | settings, | ||
| const Mesh * | mesh ) |
Definition at line 380 of file subdiv_converter_mesh.cc.
References OpenSubdiv_Converter::faces, init_functions(), and init_user_data().
Referenced by new_from_mesh(), and update_from_mesh().
| int blender::bke::subdiv::converter_vtx_boundary_interpolation_from_settings | ( | const Settings * | settings | ) |
Definition at line 22 of file subdiv_converter.cc.
References BLI_assert_msg, OSD_VTX_BOUNDARY_EDGE_AND_CORNER, OSD_VTX_BOUNDARY_EDGE_ONLY, OSD_VTX_BOUNDARY_NONE, SUBDIV_VTX_BOUNDARY_EDGE_AND_CORNER, SUBDIV_VTX_BOUNDARY_EDGE_ONLY, SUBDIV_VTX_BOUNDARY_NONE, and blender::bke::subdiv::Settings::vtx_boundary_interpolation.
Referenced by get_vtx_boundary_interpolation().
|
static |
Definition at line 370 of file subdiv_displacement_multires.cc.
References faces.
Referenced by displacement_data_init_mapping().
| BLI_INLINE float blender::bke::subdiv::crease_to_sharpness | ( | float | crease | ) |
Convert Blender edge crease value to OpenSubdiv sharpness.
Definition at line 116 of file subdiv_inline.hh.
References BLI_INLINE.
Referenced by blender::io::alembic::get_edge_creases(), blender::io::usd::get_edge_creases(), get_edge_sharpness(), blender::io::alembic::get_vert_creases(), blender::io::usd::get_vert_creases(), and get_vertex_sharpness().
| void blender::bke::subdiv::deform_coarse_vertices | ( | Subdiv * | subdiv, |
| const Mesh * | coarse_mesh, | ||
| MutableSpan< float3 > | vert_positions ) |
Special version of subdivision surface which calculates final positions for coarse vertices. Effectively is pushing the coarse positions to the limit surface.
One of the usage examples is calculation of crazy space of subdivision modifier, allowing to paint on a deformed mesh with sub-surf on it.
vertex_cos are supposed to hold coordinates of the coarse mesh.
Definition at line 182 of file subdiv_deform.cc.
References blender::bke::subdiv::SubdivDeformContext::coarse_mesh, eval_begin_from_mesh(), Mesh::faces_num, foreach_subdiv_geometry(), blender::bke::subdiv::SubdivDeformContext::have_displacement, blender::bke::subdiv::ToMeshSettings::resolution, setup_foreach_callbacks(), stats_begin(), stats_end(), blender::bke::subdiv::SubdivDeformContext::subdiv, SUBDIV_EVALUATOR_TYPE_CPU, subdiv_mesh_context_free(), SUBDIV_STATS_SUBDIV_TO_MESH, SUBDIV_STATS_SUBDIV_TO_MESH_GEOMETRY, blender::bke::subdiv::ToMeshSettings::use_optimal_display, blender::bke::subdiv::ForeachContext::user_data, and blender::bke::subdiv::SubdivDeformContext::vert_positions.
Referenced by calculate_limit_positions(), deform_matrices(), deform_matrices(), and shrinkwrap_calc_subdivided_positions().
| void blender::bke::subdiv::displacement_attach_from_multires | ( | Subdiv * | subdiv, |
| const Mesh * | mesh, | ||
| const MultiresModifierData * | mmd ) |
Definition at line 432 of file subdiv_displacement_multires.cc.
References CD_MDISPS, CustomData_has_layer(), displacement_detach(), displacement_init_data(), displacement_init_functions(), MEM_callocN(), and blender::bke::subdiv::Displacement::user_data.
Referenced by deform_matrices(), multires_as_ccg(), and multires_as_mesh().
|
static |
Definition at line 380 of file subdiv_displacement_multires.cc.
References count_num_ptex_faces(), data, faces, blender::IndexRange::size(), and blender::bke::subdiv::Displacement::user_data.
Referenced by displacement_init_data().
| void blender::bke::subdiv::displacement_detach | ( | Subdiv * | subdiv | ) |
Definition at line 15 of file subdiv_displacement.cc.
References MEM_freeN().
Referenced by displacement_attach_from_multires(), and free().
|
static |
Definition at line 305 of file subdiv_displacement_multires.cc.
References blender::bke::subdiv::PolyCornerIndex::corner, data, blender::bke::subdiv::PolyCornerIndex::face_index, rotate_quad_to_corner(), and v.
Referenced by eval_displacement().
|
static |
Definition at line 66 of file subdiv_displacement_multires.cc.
References blender::bke::subdiv::PolyCornerIndex::corner, data, blender::bke::subdiv::PolyCornerIndex::face_index, ptex_face_uv_to_grid_uv(), rotate_quad_to_corner(), blender::IndexRange::size(), blender::IndexRange::start(), blender::bke::subdiv::Displacement::user_data, and v.
Referenced by eval_displacement().
|
static |
Definition at line 93 of file subdiv_displacement_multires.cc.
References blender::bke::subdiv::PolyCornerIndex::corner, data, blender::bke::subdiv::PolyCornerIndex::face_index, blender::IndexRange::size(), and blender::bke::subdiv::Displacement::user_data.
Referenced by average_with_other().
|
static |
Definition at line 407 of file subdiv_displacement_multires.cc.
References CD_MDISPS, CustomData_get_layer(), data, displacement_data_init_mapping(), face_ptex_offset_get(), grid_size_from_level(), MultiresModifierData::totlvl, and blender::bke::subdiv::Displacement::user_data.
Referenced by displacement_attach_from_multires().
|
static |
Definition at line 425 of file subdiv_displacement_multires.cc.
References blender::bke::subdiv::Displacement::eval_displacement, eval_displacement(), blender::bke::subdiv::Displacement::free, free_displacement(), blender::bke::subdiv::Displacement::initialize, and initialize().
Referenced by displacement_attach_from_multires().
| bool blender::bke::subdiv::eval_begin | ( | Subdiv * | subdiv, |
| eSubdivEvaluatorType | evaluator_type, | ||
| OpenSubdiv_EvaluatorCache * | evaluator_cache, | ||
| const OpenSubdiv_EvaluatorSettings * | settings ) |
Returns true if evaluator is ready for use.
Definition at line 56 of file subdiv_eval.cc.
References eval_init_displacement(), openSubdiv_createEvaluatorFromTopologyRefiner(), stats_begin(), stats_end(), stats_reset(), SUBDIV_STATS_EVALUATOR_CREATE, and UNUSED_VARS.
Referenced by eval_begin_from_mesh().
| bool blender::bke::subdiv::eval_begin_from_mesh | ( | Subdiv * | subdiv, |
| const Mesh * | mesh, | ||
| eSubdivEvaluatorType | evaluator_type, | ||
| Span< float3 > | coarse_vert_positions = {}, | ||
| OpenSubdiv_EvaluatorCache * | evaluator_cache = nullptr ) |
| coarse_vert_positions | optional span of positions to override the mesh positions. |
Definition at line 221 of file subdiv_eval.cc.
References eval_begin(), eval_refine_from_mesh(), and UNUSED_VARS.
Referenced by BKE_subdiv_to_ccg_mesh(), deform_coarse_vertices(), blender::draw::draw_subdiv_create_requested_buffers(), multires_reshape_create_subdiv(), and subdiv_to_mesh().
|
static |
Definition at line 329 of file subdiv_displacement_multires.cc.
References average_displacement(), BKE_multires_construct_tangent_matrix(), BLI_assert, data, displacement_get_face_corner(), displacement_get_grid_and_coord(), read_displacement_grid(), blender::math::transform_direction(), blender::bke::subdiv::Displacement::user_data, and v.
| void blender::bke::subdiv::eval_displacement | ( | Subdiv * | subdiv, |
| int | ptex_face_index, | ||
| float | u, | ||
| float | v, | ||
| const float3 & | dPdu, | ||
| const float3 & | dPdv, | ||
| float3 & | r_D ) |
TODO(sergey): This is currently used together with eval_final_point() which can easily evaluate derivatives. Would be nice to have displacement evaluation function which does not require knowing derivatives ahead of a time.
Definition at line 372 of file subdiv_eval.cc.
References v.
Referenced by displacement_init_functions(), eval_final_point(), subdiv_accumulate_vertex_displacement(), and subdiv_accumulate_vertex_displacement().
| void blender::bke::subdiv::eval_face_varying | ( | Subdiv * | subdiv, |
| int | face_varying_channel, | ||
| int | ptex_face_index, | ||
| float | u, | ||
| float | v, | ||
| float2 & | r_face_varying ) |
Evaluate face-varying layer (such as UV).
Definition at line 357 of file subdiv_eval.cc.
References UNUSED_VARS, and v.
Referenced by subdiv_eval_uv_layer().
| float3 blender::bke::subdiv::eval_final_point | ( | Subdiv * | subdiv, |
| int | ptex_face_index, | ||
| float | u, | ||
| float | v ) |
Evaluate point on a limit surface with displacement applied to it.
Definition at line 388 of file subdiv_eval.cc.
References D, eval_displacement(), eval_limit_point(), eval_limit_point_and_derivatives(), and v.
Referenced by subdiv_mesh_vertex_inner().
| void blender::bke::subdiv::eval_init_displacement | ( | Subdiv * | subdiv | ) |
Makes sure displacement evaluator is initialized.
Definition at line 276 of file subdiv_eval.cc.
Referenced by eval_begin().
| float3 blender::bke::subdiv::eval_limit_point | ( | Subdiv * | subdiv, |
| int | ptex_face_index, | ||
| float | u, | ||
| float | v ) |
Definition at line 291 of file subdiv_eval.cc.
References UNUSED_VARS, and v.
Referenced by BKE_subdiv_ccg_eval_limit_positions(), eval_final_point(), evaluate_vertex_and_apply_displacement_copy(), evaluate_vertex_and_apply_displacement_interpolate(), and subdiv_mesh_vertex_corner().
| void blender::bke::subdiv::eval_limit_point_and_derivatives | ( | Subdiv * | subdiv, |
| int | ptex_face_index, | ||
| float | u, | ||
| float | v, | ||
| float3 & | r_P, | ||
| float3 & | r_dPdu, | ||
| float3 & | r_dPdv ) |
Definition at line 303 of file subdiv_eval.cc.
References blender::math::is_equal(), blender::math::is_zero(), UNUSED_VARS, and v.
Referenced by average_construct_tangent_matrix(), eval_final_point(), eval_limit_point_and_normal(), multires_reshape_evaluate_base_mesh_limit_at_grid(), subdiv_accumulate_vertex_displacement(), and subdiv_accumulate_vertex_displacement().
| void blender::bke::subdiv::eval_limit_point_and_normal | ( | Subdiv * | subdiv, |
| int | ptex_face_index, | ||
| float | u, | ||
| float | v, | ||
| float3 & | r_P, | ||
| float3 & | r_N ) |
Definition at line 334 of file subdiv_eval.cc.
References blender::math::cross(), eval_limit_point_and_derivatives(), blender::math::normalize(), and v.
| bool blender::bke::subdiv::eval_refine_from_mesh | ( | Subdiv * | subdiv, |
| const Mesh * | mesh, | ||
| Span< float3 > | coarse_vert_positions ) |
Definition at line 240 of file subdiv_eval.cc.
References BLI_assert_msg, CD_PROP_FLOAT2, CustomData_get_layer_n(), CustomData_number_of_layers(), float, blender::Span< T >::is_empty(), stats_begin(), stats_end(), SUBDIV_STATS_EVALUATOR_REFINE, and UNUSED_VARS.
Referenced by eval_begin_from_mesh(), multires_reshape_apply_base_refine_from_base(), multires_reshape_apply_base_refine_from_deform(), and blender::ed::sculpt_paint::undo::refine_subdiv().
| void blender::bke::subdiv::eval_vertex_data | ( | Subdiv * | subdiv, |
| int | ptex_face_index, | ||
| float | u, | ||
| float | v, | ||
| float | r_vertex_data[] ) |
Evaluate smoothly interpolated vertex data (such as ORCO).
Definition at line 347 of file subdiv_eval.cc.
References UNUSED_VARS, and v.
Referenced by subdiv_vertex_orco_evaluate().
|
static |
Definition at line 606 of file subdiv_mesh.cc.
References blender::bke::subdiv::SubdivMeshContext::accumulated_counters, copy_v3_v3(), D, eval_limit_point(), blender::bke::subdiv::SubdivMeshContext::have_displacement, mul_v3_fl(), Mesh::runtime, blender::bke::subdiv::SubdivMeshContext::subdiv, blender::bke::subdiv::SubdivMeshContext::subdiv_mesh, blender::bke::subdiv::SubdivMeshContext::subdiv_positions, subdiv_vertex_data_copy(), subdiv_vertex_orco_evaluate(), and v.
Referenced by subdiv_mesh_vertex_corner().
|
static |
Definition at line 633 of file subdiv_mesh.cc.
References blender::bke::subdiv::SubdivMeshContext::accumulated_counters, add_v3_v3(), copy_v3_v3(), D, eval_limit_point(), blender::bke::subdiv::SubdivMeshContext::have_displacement, mul_v3_fl(), blender::bke::subdiv::SubdivMeshContext::subdiv, blender::bke::subdiv::SubdivMeshContext::subdiv_positions, subdiv_vertex_data_interpolate(), subdiv_vertex_orco_evaluate(), and v.
Referenced by subdiv_mesh_vertex_edge().
| void blender::bke::subdiv::exit | ( | ) |
Definition at line 38 of file subdiv.cc.
References openSubdiv_cleanup().
Referenced by WM_exit_ex().
For each element in the array, this stores the total number of ptex faces up to that element, with the total number of ptex faces being the last element in the array. The array is of length base face count + 1.
Definition at line 214 of file subdiv.cc.
References blender::opensubdiv::TopologyRefinerImpl::base_level(), and UNUSED_VARS.
Referenced by context_init_common(), displacement_init_data(), subdiv_ccg_coord_to_ptex_coord(), and subdiv_foreach_ctx_init().
|
static |
Definition at line 983 of file subdiv_mesh.cc.
References blender::Span< T >::size().
Referenced by mesh_interpolate_position_on_edge().
|
static |
Definition at line 1000 of file subdiv_mesh.cc.
References blender::bke::mesh::edge_other_vert(), and result.
Referenced by mesh_interpolate_position_on_edge().
|
static |
Definition at line 228 of file subdiv_converter_mesh.cc.
Referenced by init_functions().
| bool blender::bke::subdiv::foreach_subdiv_geometry | ( | Subdiv * | subdiv, |
| const ForeachContext * | context, | ||
| const ToMeshSettings * | mesh_settings, | ||
| const Mesh * | coarse_mesh ) |
Invokes callbacks in the order and with values which corresponds to creation of final subdivided mesh.
Main goal is to abstract all the traversal routines to give geometry element indices (for vertices, edges, loops, faces) in the same way as subdivision modifier will do for a dense mesh.
Returns true if the whole topology was traversed, without any early exits.
TODO(sergey): Need to either get rid of subdiv or of coarse_mesh. The main point here is to be able to get base level topology, which can be done with either of those. Having both of them is kind of redundant.
Definition at line 1794 of file subdiv_foreach.cc.
References BLI_parallel_range_settings_defaults(), BLI_task_parallel_range(), blender::bke::subdiv::ForeachTaskContext::coarse_corner_edges, blender::bke::subdiv::ForeachTaskContext::coarse_corner_verts, blender::bke::subdiv::ForeachTaskContext::coarse_edges, blender::bke::subdiv::ForeachTaskContext::coarse_faces, blender::bke::subdiv::ForeachTaskContext::coarse_mesh, Mesh::edges_num, Mesh::faces_num, blender::bke::subdiv::ForeachTaskContext::foreach_context, TaskParallelSettings::func_free, TaskParallelSettings::min_iter_per_thread, blender::bke::subdiv::ForeachTaskContext::num_subdiv_edges, blender::bke::subdiv::ForeachTaskContext::num_subdiv_faces, blender::bke::subdiv::ForeachTaskContext::num_subdiv_loops, blender::bke::subdiv::ForeachTaskContext::num_subdiv_vertices, blender::bke::subdiv::ForeachTaskContext::settings, blender::bke::subdiv::ForeachTaskContext::subdiv_face_offset, subdiv_foreach_boundary_edges_task(), subdiv_foreach_ctx_free(), subdiv_foreach_ctx_init(), subdiv_foreach_free(), subdiv_foreach_loose_vertices_task(), subdiv_foreach_single_thread_tasks(), subdiv_foreach_task(), subdiv_foreach_vertices_of_loose_edges_task(), TaskParallelSettings::userdata_chunk, TaskParallelSettings::userdata_chunk_size, and Mesh::verts_num.
Referenced by deform_coarse_vertices(), multires_reshape_assign_final_coords_from_vertcos(), and subdiv_to_mesh().
| void blender::bke::subdiv::free | ( | Subdiv * | subdiv | ) |
Definition at line 190 of file subdiv.cc.
References BKE_subsurf_modifier_free_gpu_cache_cb, displacement_detach(), OPENSUBDIV_EVALUATOR_CPU, and UNUSED_VARS.
Referenced by calculate_limit_positions(), deform_matrices(), deform_matrices(), blender::draw::DRW_cache_free_old_subdiv(), free_runtime_data(), free_runtime_data(), mesh_wrapper_ensure_subdivision(), modify_mesh(), modify_mesh(), multires_do_versions_simple_to_catmull_clark(), multires_reshape_context_free(), multires_reshape_create_subdiv(), shrinkwrap_calc_subdivided_positions(), subdivide_edit_mesh(), update_from_converter(), and SubdivCCG::~SubdivCCG().
|
static |
Definition at line 361 of file subdiv_displacement_multires.cc.
References data, and blender::bke::subdiv::Displacement::user_data.
Referenced by displacement_init_functions().
|
static |
Definition at line 245 of file subdiv_converter_mesh.cc.
References blender::bke::subdiv::ConverterStorage::loop_uv_indices, blender::bke::subdiv::ConverterStorage::manifold_edge_index_reverse, blender::bke::subdiv::ConverterStorage::manifold_vertex_index, blender::bke::subdiv::ConverterStorage::manifold_vertex_index_reverse, MEM_freeN(), MEM_SAFE_FREE, and OpenSubdiv_Converter::user_data.
Referenced by init_functions().
| FVarLinearInterpolation blender::bke::subdiv::fvar_interpolation_from_uv_smooth | ( | int | uv_smooth | ) |
Definition at line 47 of file subdiv.cc.
References BLI_assert_msg, SUBDIV_FVAR_LINEAR_INTERPOLATION_ALL, SUBDIV_FVAR_LINEAR_INTERPOLATION_BOUNDARIES, SUBDIV_FVAR_LINEAR_INTERPOLATION_CORNERS_AND_JUNCTIONS, SUBDIV_FVAR_LINEAR_INTERPOLATION_CORNERS_JUNCTIONS_AND_CONCAVE, SUBDIV_FVAR_LINEAR_INTERPOLATION_CORNERS_ONLY, SUBDIV_FVAR_LINEAR_INTERPOLATION_NONE, SUBSURF_UV_SMOOTH_ALL, SUBSURF_UV_SMOOTH_NONE, SUBSURF_UV_SMOOTH_PRESERVE_BOUNDARIES, SUBSURF_UV_SMOOTH_PRESERVE_CORNERS, SUBSURF_UV_SMOOTH_PRESERVE_CORNERS_AND_JUNCTIONS, and SUBSURF_UV_SMOOTH_PRESERVE_CORNERS_JUNCTIONS_AND_CONCAVE.
Referenced by BKE_multires_subdiv_settings_init(), and BKE_subsurf_modifier_settings_init().
|
static |
Definition at line 139 of file subdiv_converter_mesh.cc.
References blender::bke::subdiv::ConverterStorage::cd_edge_crease, crease_to_sharpness(), Span< T >::is_empty(), blender::bke::subdiv::Settings::is_simple, blender::bke::subdiv::ConverterStorage::manifold_edge_index_reverse, blender::bke::subdiv::ConverterStorage::settings, and OpenSubdiv_Converter::user_data.
Referenced by init_functions().
|
static |
Definition at line 128 of file subdiv_converter_mesh.cc.
References blender::bke::subdiv::ConverterStorage::edges, blender::bke::subdiv::ConverterStorage::manifold_edge_index_reverse, blender::bke::subdiv::ConverterStorage::manifold_vertex_index, and OpenSubdiv_Converter::user_data.
Referenced by init_functions().
|
static |
Definition at line 236 of file subdiv_converter_mesh.cc.
References blender::bke::subdiv::ConverterStorage::faces, blender::bke::subdiv::ConverterStorage::loop_uv_indices, blender::IndexRange::start(), and OpenSubdiv_Converter::user_data.
Referenced by init_functions().
|
static |
Definition at line 116 of file subdiv_converter_mesh.cc.
References blender::bke::subdiv::ConverterStorage::corner_verts, blender::bke::subdiv::ConverterStorage::faces, i, blender::bke::subdiv::ConverterStorage::manifold_vertex_index, blender::IndexRange::size(), and OpenSubdiv_Converter::user_data.
Referenced by init_functions().
|
static |
Definition at line 91 of file subdiv_converter_mesh.cc.
References converter_fvar_linear_from_settings(), blender::bke::subdiv::ConverterStorage::settings, and OpenSubdiv_Converter::user_data.
Referenced by init_functions().
|
static |
Definition at line 104 of file subdiv_converter_mesh.cc.
References blender::bke::subdiv::ConverterStorage::num_manifold_edges, and OpenSubdiv_Converter::user_data.
Referenced by init_functions().
|
static |
Definition at line 180 of file subdiv_converter_mesh.cc.
References CD_PROP_FLOAT2, CustomData_number_of_layers(), blender::bke::subdiv::ConverterStorage::mesh, and OpenSubdiv_Converter::user_data.
Referenced by init_functions().
|
static |
Definition at line 230 of file subdiv_converter_mesh.cc.
References blender::bke::subdiv::ConverterStorage::num_uv_coordinates, and OpenSubdiv_Converter::user_data.
Referenced by init_functions().
|
static |
Definition at line 110 of file subdiv_converter_mesh.cc.
References blender::bke::subdiv::ConverterStorage::num_manifold_vertices, and OpenSubdiv_Converter::user_data.
Referenced by init_functions().
|
static |
Definition at line 67 of file subdiv_converter_mesh.cc.
References blender::bke::subdiv::Settings::is_simple, OSD_SCHEME_BILINEAR, OSD_SCHEME_CATMARK, blender::bke::subdiv::ConverterStorage::settings, and OpenSubdiv_Converter::user_data.
Referenced by init_functions().
|
static |
Definition at line 170 of file subdiv_converter_mesh.cc.
References blender::bke::subdiv::ConverterStorage::cd_vertex_crease, crease_to_sharpness(), Span< T >::is_empty(), blender::bke::subdiv::ConverterStorage::manifold_vertex_index_reverse, and OpenSubdiv_Converter::user_data.
Referenced by init_functions().
|
static |
Definition at line 83 of file subdiv_converter_mesh.cc.
References converter_vtx_boundary_interpolation_from_settings(), blender::bke::subdiv::ConverterStorage::settings, and OpenSubdiv_Converter::user_data.
Referenced by init_functions().
| BLI_INLINE int blender::bke::subdiv::grid_size_from_level | ( | int | level | ) |
For a given subdivision level (which is NOT refinement level) get size of CCG grid (number of grid points on a side).
Definition at line 43 of file subdiv_inline.hh.
References BLI_INLINE.
Referenced by allocate_displacement_grid(), BKE_subdiv_ccg_key(), BKE_subdiv_to_ccg(), displacement_init_data(), ensure_mask_grids(), foreach_grid_coordinate(), multires_reshape_context_create_from_base_mesh(), multires_reshape_context_create_from_ccg(), multires_reshape_context_create_from_object(), multires_reshape_context_create_from_subdiv(), multires_reshape_orig_grid_element_for_grid_coord(), and read_mask_grid().
| BLI_INLINE void blender::bke::subdiv::grid_uv_to_ptex_face_uv | ( | float | grid_u, |
| float | grid_v, | ||
| float * | r_ptex_u, | ||
| float * | r_ptex_v ) |
Inverse of above.
Definition at line 34 of file subdiv_inline.hh.
References BLI_INLINE.
Referenced by average_convert_grid_coord_to_ptex(), and multires_reshape_grid_coord_to_ptex().
| void blender::bke::subdiv::init | ( | ) |
|
static |
Definition at line 255 of file subdiv_converter_mesh.cc.
References finish_uv_layer(), OpenSubdiv_Converter::finishUVLayer, free_user_data(), OpenSubdiv_Converter::freeUserData, get_edge_sharpness(), get_edge_vertices(), get_face_corner_uv_index(), get_face_vertices(), get_fvar_linear_interpolation(), get_num_edges(), get_num_uv_layers(), get_num_uvs(), get_num_vertices(), get_scheme_type(), get_vertex_sharpness(), get_vtx_boundary_interpolation(), OpenSubdiv_Converter::getEdgeFaces, OpenSubdiv_Converter::getEdgeSharpness, OpenSubdiv_Converter::getEdgeVertices, OpenSubdiv_Converter::getFaceCornerUVIndex, OpenSubdiv_Converter::getFaceEdges, OpenSubdiv_Converter::getFaceVertices, OpenSubdiv_Converter::getFVarLinearInterpolation, OpenSubdiv_Converter::getNumEdgeFaces, OpenSubdiv_Converter::getNumEdges, OpenSubdiv_Converter::getNumUVCoordinates, OpenSubdiv_Converter::getNumUVLayers, OpenSubdiv_Converter::getNumVertexEdges, OpenSubdiv_Converter::getNumVertexFaces, OpenSubdiv_Converter::getNumVertices, OpenSubdiv_Converter::getSchemeType, OpenSubdiv_Converter::getVertexEdges, OpenSubdiv_Converter::getVertexFaces, OpenSubdiv_Converter::getVertexSharpness, OpenSubdiv_Converter::getVtxBoundaryInterpolation, is_infinite_sharp_vertex(), OpenSubdiv_Converter::isInfiniteSharpVertex, precalc_uv_layer(), OpenSubdiv_Converter::precalcUVLayer, specifies_full_topology(), and OpenSubdiv_Converter::specifiesFullTopology.
Referenced by converter_init_for_mesh().
|
static |
Definition at line 358 of file subdiv_converter_mesh.cc.
References blender::bke::subdiv::ConverterStorage::cd_edge_crease, blender::bke::subdiv::ConverterStorage::cd_vertex_crease, blender::bke::subdiv::ConverterStorage::corner_edges, blender::bke::subdiv::ConverterStorage::corner_verts, blender::bke::Edge, blender::bke::subdiv::ConverterStorage::edges, blender::bke::subdiv::ConverterStorage::faces, initialize_manifold_indices(), blender::bke::AttributeAccessor::lookup(), blender::bke::subdiv::ConverterStorage::loop_uv_indices, blender::bke::subdiv::ConverterStorage::mesh, blender::bke::Point, blender::bke::subdiv::ConverterStorage::settings, blender::bke::subdiv::Settings::use_creases, OpenSubdiv_Converter::user_data, and blender::bke::subdiv::ConverterStorage::vert_positions.
Referenced by converter_init_for_mesh().
|
static |
Definition at line 321 of file subdiv_displacement_multires.cc.
References data, multiresModifier_ensure_external_read(), and blender::bke::subdiv::Displacement::user_data.
Referenced by displacement_init_functions().
|
static |
Definition at line 289 of file subdiv_converter_mesh.cc.
References i, indices, blender::bits::BitSpan::is_empty(), and MEM_malloc_arrayN().
Referenced by initialize_manifold_indices().
|
static |
Definition at line 329 of file subdiv_converter_mesh.cc.
References blender::bke::LooseGeomCache::count, blender::bke::subdiv::ConverterStorage::edges, blender::bke::subdiv::ConverterStorage::infinite_sharp_vertices_map, initialize_manifold_index_array(), blender::bke::LooseGeomCache::is_loose_bits, blender::bke::subdiv::ConverterStorage::manifold_edge_index_reverse, blender::bke::subdiv::ConverterStorage::manifold_vertex_index, blender::bke::subdiv::ConverterStorage::manifold_vertex_index_reverse, blender::bke::subdiv::ConverterStorage::mesh, blender::bke::subdiv::ConverterStorage::num_manifold_edges, blender::bke::subdiv::ConverterStorage::num_manifold_vertices, and blender::bits::BitVector< InlineBufferCapacity, Allocator >::resize().
Referenced by init_user_data().
|
static |
Definition at line 154 of file subdiv_converter_mesh.cc.
References blender::bke::subdiv::ConverterStorage::infinite_sharp_vertices_map, blender::bits::BitVector< InlineBufferCapacity, Allocator >::is_empty(), blender::bke::subdiv::Settings::is_simple, blender::bke::subdiv::ConverterStorage::manifold_vertex_index_reverse, blender::bke::subdiv::ConverterStorage::settings, and OpenSubdiv_Converter::user_data.
Referenced by init_functions().
|
static |
Definition at line 409 of file subdiv_mesh.cc.
References blender::bke::subdiv::LoopsForInterpolation::corner_data_storage, blender::bke::subdiv::LoopsForInterpolation::corner_data_storage_allocated, and CustomData_free().
Referenced by subdiv_mesh_ensure_loop_interpolation(), and subdiv_mesh_tls_free().
|
static |
Definition at line 374 of file subdiv_mesh.cc.
References blender::bke::subdiv::SubdivMeshContext::coarse_corner_data_interp, blender::bke::subdiv::LoopsForInterpolation::corner_data_storage, CustomData_copy_data(), CustomData_free_elem(), CustomData_interp(), blender::bke::subdiv::LoopsOfPtex::first_loop, blender::bke::subdiv::LoopsOfPtex::last_loop, loops_of_ptex_get(), blender::IndexRange::size(), and blender::IndexRange::start().
Referenced by subdiv_mesh_ensure_loop_interpolation().
|
static |
Definition at line 330 of file subdiv_mesh.cc.
References CD_MASK_EVERYTHING, CD_SET_DEFAULT, blender::bke::subdiv::SubdivMeshContext::coarse_corner_data_interp, blender::bke::subdiv::LoopsForInterpolation::corner_data, blender::bke::subdiv::LoopsForInterpolation::corner_data_storage, blender::bke::subdiv::LoopsForInterpolation::corner_data_storage_allocated, CustomData_init_layout_from(), CustomData_interp(), blender::Array< T, InlineBufferCapacity, Allocator >::data(), float, i, indices, blender::bke::subdiv::LoopsForInterpolation::loop_indices, blender::IndexRange::size(), and blender::IndexRange::start().
Referenced by subdiv_mesh_ensure_loop_interpolation().
|
static |
Definition at line 157 of file subdiv_mesh.cc.
References blender::bke::subdiv::LoopsOfPtex::first_loop, blender::bke::subdiv::LoopsOfPtex::last_loop, blender::bke::subdiv::LoopsOfPtex::second_loop, blender::IndexRange::size(), blender::IndexRange::start(), and blender::bke::subdiv::LoopsOfPtex::third_loop.
Referenced by loop_interpolation_from_corner(), and vertex_interpolation_from_corner().
| float3 blender::bke::subdiv::mesh_interpolate_position_on_edge | ( | Span< float3 > | coarse_positions, |
| Span< int2 > | coarse_edges, | ||
| GroupedSpan< int > | vert_to_edge_map, | ||
| int | coarse_edge_index, | ||
| bool | is_simple, | ||
| float | u ) |
Interpolate a position along the coarse_edge at the relative u coordinate. If is_simple is false, this will perform a B-Spline interpolation using the edge neighbors, otherwise a linear interpolation will be done base on the edge vertices.
Definition at line 1026 of file subdiv_mesh.cc.
References find_edge_neighbors(), find_loose_edge_interpolation_positions(), blender::math::interpolate(), KEY_BSPLINE, key_curve_position_weights(), and blender::bke::attribute_math::mix4().
Referenced by subdiv_mesh_vertex_of_loose_edge().
| Subdiv * blender::bke::subdiv::new_from_converter | ( | const Settings * | settings, |
| OpenSubdiv_Converter * | converter ) |
Construct new subdivision surface descriptor, from scratch, using given settings and topology.
Definition at line 98 of file subdiv.cc.
References blender::opensubdiv::TopologyRefinerImpl::createFromConverter(), OpenSubdiv_Converter::getNumVertices, blender::bke::subdiv::Settings::is_adaptive, OpenSubdiv_TopologyRefinerSettings::is_adaptive, blender::bke::subdiv::Settings::level, OpenSubdiv_TopologyRefinerSettings::level, stats_begin(), stats_end(), stats_init(), SUBDIV_STATS_TOPOLOGY_REFINER_CREATION_TIME, and UNUSED_VARS.
Referenced by new_from_mesh(), and update_from_converter().
Definition at line 131 of file subdiv.cc.
References converter_free(), converter_init_for_mesh(), and new_from_converter().
Referenced by multires_reshape_create_subdiv(), and subdivide_edit_mesh().
| BLI_INLINE int blender::bke::subdiv::num_edges_per_ptex_face_get | ( | const int | resolution | ) |
Definition at line 34 of file subdiv_foreach.cc.
References BLI_INLINE.
Referenced by subdiv_foreach_ctx_count(), subdiv_foreach_ctx_init_offsets(), and subdiv_foreach_loops_regular().
| BLI_INLINE int blender::bke::subdiv::num_faces_per_ptex_get | ( | const int | resolution | ) |
Definition at line 48 of file subdiv_foreach.cc.
References BLI_INLINE.
Referenced by subdiv_foreach_ctx_count(), subdiv_foreach_ctx_init_offsets(), and subdiv_foreach_faces().
| BLI_INLINE int blender::bke::subdiv::num_inner_edges_per_ptex_face_get | ( | const int | resolution | ) |
Definition at line 39 of file subdiv_foreach.cc.
References BLI_INLINE.
Referenced by subdiv_foreach_ctx_count(), subdiv_foreach_ctx_init_offsets(), and subdiv_foreach_loops_special().
| BLI_INLINE int blender::bke::subdiv::num_ptex_faces_per_face_get | ( | const IndexRange | face | ) |
Definition at line 29 of file subdiv_foreach.cc.
References BLI_INLINE, and blender::IndexRange::size().
Referenced by subdiv_foreach_ctx_count(), subdiv_foreach_ctx_init_offsets(), and subdiv_foreach_faces().
|
static |
Definition at line 187 of file subdiv_converter_mesh.cc.
References BKE_mesh_uv_vert_map_create(), BKE_mesh_uv_vert_map_free(), BKE_mesh_uv_vert_map_get_vert(), CD_PROP_FLOAT2, blender::bke::Corner, blender::bke::subdiv::ConverterStorage::corner_verts, CustomData_get_layer_name(), UvMapVert::face_index, blender::bke::subdiv::ConverterStorage::faces, blender::bke::AttributeAccessor::lookup(), UvMapVert::loop_of_face_index, blender::bke::subdiv::ConverterStorage::loop_uv_indices, MEM_malloc_arrayN(), blender::bke::subdiv::ConverterStorage::mesh, name, UvMapVert::next, blender::bke::subdiv::ConverterStorage::num_uv_coordinates, UvMapVert::separate, blender::IndexRange::start(), STD_UV_CONNECT_LIMIT, and OpenSubdiv_Converter::user_data.
Referenced by init_functions().
| BLI_INLINE int blender::bke::subdiv::ptex_face_resolution_get | ( | const IndexRange | face, |
| int | resolution ) |
Definition at line 54 of file subdiv_foreach.cc.
References BLI_INLINE, and blender::IndexRange::size().
Referenced by subdiv_foreach_edges_all_patches_special(), subdiv_foreach_faces(), subdiv_foreach_inner_vertices_special(), subdiv_foreach_loops_regular(), and subdiv_foreach_loops_special().
| BLI_INLINE float2 blender::bke::subdiv::ptex_face_uv_to_grid_uv | ( | const float2 & | ptex_uv | ) |
Definition at line 29 of file subdiv_inline.hh.
References BLI_INLINE.
| BLI_INLINE void blender::bke::subdiv::ptex_face_uv_to_grid_uv | ( | float | ptex_u, |
| float | ptex_v, | ||
| float * | r_grid_u, | ||
| float * | r_grid_v ) |
For a given (ptex_u, ptex_v) within a ptex face get corresponding (grid_u, grid_v) within a grid.
Definition at line 20 of file subdiv_inline.hh.
References BLI_INLINE.
Referenced by displacement_get_grid_and_coord(), mask_get_grid_and_coord(), multires_reshape_grid_coord_to_ptex(), and multires_reshape_ptex_coord_to_grid().
| BLI_INLINE AverageWith blender::bke::subdiv::read_displacement_grid | ( | const MDisps & | displacement_grid, |
| const int | grid_size, | ||
| const float | grid_u, | ||
| const float | grid_v, | ||
| float3 & | r_tangent_D ) |
Definition at line 107 of file subdiv_displacement_multires.cc.
References All, BLI_INLINE, MDisps::disps, Next, None, Prev, roundf, x, and y.
Referenced by average_read_displacement_tangent(), and eval_displacement().
| BLI_INLINE void blender::bke::subdiv::rotate_grid_to_quad | ( | int | corner, |
| float | grid_u, | ||
| float | grid_v, | ||
| float * | r_quad_u, | ||
| float * | r_quad_v ) |
Converts (u, v) coordinate from within a grid to a quad coordinate in normalized ptex coordinates.
Definition at line 94 of file subdiv_inline.hh.
References BLI_assert, and BLI_INLINE.
Referenced by average_convert_grid_coord_to_ptex(), multires_reshape_grid_coord_to_ptex(), and subdiv_ccg_coord_to_ptex_coord().
|
static |
Definition at line 981 of file subdiv_foreach.cc.
Referenced by subdiv_foreach_loops_of_face().
| BLI_INLINE int blender::bke::subdiv::rotate_quad_to_corner | ( | float | quad_u, |
| float | quad_v, | ||
| float * | r_corner_u, | ||
| float * | r_corner_v ) |
Find per-corner coordinate with given per-face UV coord. Only handles quad and works in normalized coordinates.
Definition at line 48 of file subdiv_inline.hh.
References BLI_assert, and BLI_INLINE.
Referenced by displacement_get_face_corner(), displacement_get_grid_and_coord(), mask_get_grid_and_coord(), and multires_reshape_ptex_coord_to_grid().
| BLI_INLINE float2 blender::bke::subdiv::rotate_quad_to_corner | ( | int | corner, |
| const float2 & | quad ) |
Definition at line 78 of file subdiv_inline.hh.
References BLI_assert, BLI_INLINE, and quad.
| bool blender::bke::subdiv::settings_equal | ( | const Settings * | settings_a, |
| const Settings * | settings_b ) |
Definition at line 83 of file subdiv.cc.
References blender::bke::subdiv::Settings::fvar_linear_interpolation, blender::bke::subdiv::Settings::is_adaptive, blender::bke::subdiv::Settings::is_simple, blender::bke::subdiv::Settings::level, and blender::bke::subdiv::Settings::vtx_boundary_interpolation.
Referenced by update_from_converter().
|
static |
Definition at line 163 of file subdiv_deform.cc.
References blender::bke::subdiv::SubdivDeformContext::have_displacement, subdiv_mesh_topology_info(), subdiv_mesh_vertex_corner(), subdiv_mesh_vertex_every_corner(), blender::bke::subdiv::ForeachContext::topology_info, blender::bke::subdiv::ForeachContext::vertex_corner, and blender::bke::subdiv::ForeachContext::vertex_every_corner.
Referenced by deform_coarse_vertices(), and subdiv_to_mesh().
|
static |
Definition at line 1101 of file subdiv_mesh.cc.
References blender::bke::subdiv::ForeachContext::edge, blender::bke::subdiv::SubdivMeshContext::have_displacement, blender::bke::subdiv::ForeachContext::loop, blender::bke::subdiv::ForeachContext::poly, subdiv_mesh_edge(), subdiv_mesh_face(), subdiv_mesh_loop(), subdiv_mesh_tls_free(), subdiv_mesh_topology_info(), subdiv_mesh_vertex_corner(), subdiv_mesh_vertex_displacement_every_corner(), subdiv_mesh_vertex_displacement_every_edge(), subdiv_mesh_vertex_edge(), subdiv_mesh_vertex_inner(), subdiv_mesh_vertex_loose(), subdiv_mesh_vertex_of_loose_edge(), blender::bke::subdiv::ForeachContext::topology_info, blender::bke::subdiv::ForeachContext::user_data_tls_free, blender::bke::subdiv::ForeachContext::vertex_corner, blender::bke::subdiv::ForeachContext::vertex_edge, blender::bke::subdiv::ForeachContext::vertex_every_corner, blender::bke::subdiv::ForeachContext::vertex_every_edge, blender::bke::subdiv::ForeachContext::vertex_inner, blender::bke::subdiv::ForeachContext::vertex_loose, and blender::bke::subdiv::ForeachContext::vertex_of_loose_edge.
| BLI_INLINE float blender::bke::subdiv::sharpness_to_crease | ( | float | sharpness | ) |
Definition at line 121 of file subdiv_inline.hh.
References BLI_INLINE, and sqrt.
Referenced by blender::io::alembic::read_edge_creases(), and blender::io::alembic::read_vertex_creases().
|
static |
Definition at line 99 of file subdiv_converter_mesh.cc.
Referenced by init_functions().
| void blender::bke::subdiv::stats_begin | ( | SubdivStats * | stats, |
| StatsValue | value ) |
Definition at line 29 of file subdiv_stats.cc.
References blender::bke::subdiv::SubdivStats::begin_timestamp_, and BLI_time_now_seconds().
Referenced by BKE_subdiv_to_ccg(), BKE_subdiv_to_ccg_mesh(), deform_coarse_vertices(), eval_begin(), eval_refine_from_mesh(), new_from_converter(), subdiv_to_mesh(), and update_from_converter().
| void blender::bke::subdiv::stats_end | ( | SubdivStats * | stats, |
| StatsValue | value ) |
Definition at line 34 of file subdiv_stats.cc.
References blender::bke::subdiv::SubdivStats::begin_timestamp_, BLI_time_now_seconds(), and blender::bke::subdiv::SubdivStats::values_.
Referenced by BKE_subdiv_to_ccg(), BKE_subdiv_to_ccg_mesh(), deform_coarse_vertices(), eval_begin(), eval_refine_from_mesh(), new_from_converter(), subdiv_to_mesh(), and update_from_converter().
| void blender::bke::subdiv::stats_init | ( | SubdivStats * | stats | ) |
Definition at line 17 of file subdiv_stats.cc.
References blender::bke::subdiv::SubdivStats::evaluator_creation_time, blender::bke::subdiv::SubdivStats::evaluator_refine_time, blender::bke::subdiv::SubdivStats::subdiv_to_ccg_elements_time, blender::bke::subdiv::SubdivStats::subdiv_to_ccg_time, blender::bke::subdiv::SubdivStats::subdiv_to_mesh_geometry_time, blender::bke::subdiv::SubdivStats::subdiv_to_mesh_time, blender::bke::subdiv::SubdivStats::topology_compare_time, and blender::bke::subdiv::SubdivStats::topology_refiner_creation_time.
Referenced by new_from_converter().
| void blender::bke::subdiv::stats_print | ( | const SubdivStats * | stats | ) |
Definition at line 44 of file subdiv_stats.cc.
References printf, and STATS_PRINT_TIME.
| void blender::bke::subdiv::stats_reset | ( | SubdivStats * | stats, |
| StatsValue | value ) |
Definition at line 39 of file subdiv_stats.cc.
References blender::bke::subdiv::SubdivStats::values_.
Referenced by eval_begin().
|
static |
Definition at line 68 of file subdiv_deform.cc.
References blender::bke::subdiv::SubdivDeformContext::accumulated_counters, add_v3_v3(), copy_v3_v3(), D, eval_displacement(), eval_limit_point_and_derivatives(), blender::bke::subdiv::SubdivDeformContext::have_displacement, blender::bke::subdiv::SubdivDeformContext::subdiv, v, and blender::bke::subdiv::SubdivDeformContext::vert_positions.
Referenced by subdiv_mesh_vertex_displacement_every_corner_or_edge(), and subdiv_mesh_vertex_every_corner().
|
static |
|
static |
Definition at line 818 of file subdiv_mesh.cc.
References blender::bke::subdiv::SubdivMeshContext::coarse_mesh, CustomData_copy_data(), Mesh::edge_data, blender::bke::subdiv::SubdivMeshContext::edge_origindex, ORIGINDEX_NONE, blender::bke::subdiv::SubdivMeshContext::settings, blender::bke::subdiv::SubdivMeshContext::subdiv_display_edges, blender::bke::subdiv::SubdivMeshContext::subdiv_mesh, and blender::bke::subdiv::ToMeshSettings::use_optimal_display.
Referenced by subdiv_mesh_edge().
|
static |
Definition at line 874 of file subdiv_mesh.cc.
References eval_face_varying(), blender::bke::subdiv::SubdivMeshContext::num_uv_layers, blender::bke::subdiv::SubdivMeshContext::subdiv, blender::bke::subdiv::SubdivMeshContext::uv_layers, and v.
Referenced by subdiv_mesh_loop().
|
static |
Definition at line 948 of file subdiv_foreach.cc.
References BLI_BITMAP_TEST_BOOL, blender::bke::subdiv::ForeachTaskContext::coarse_edges, blender::bke::subdiv::ForeachTaskContext::coarse_edges_used_map, blender::bke::subdiv::ForeachContext::edge, blender::bke::subdiv::ForeachTaskContext::edge_boundary_offset, blender::bke::subdiv::ForeachTaskContext::foreach_context, i, blender::bke::subdiv::ToMeshSettings::resolution, blender::bke::subdiv::ForeachTaskContext::settings, v2, blender::bke::subdiv::ForeachTaskContext::vertices_corner_offset, and blender::bke::subdiv::ForeachTaskContext::vertices_edge_offset.
Referenced by subdiv_foreach_boundary_edges_task().
|
static |
Definition at line 1780 of file subdiv_foreach.cc.
References subdiv_foreach_boundary_edges().
Referenced by foreach_subdiv_geometry().
|
static |
Definition at line 355 of file subdiv_foreach.cc.
References blender::bke::subdiv::ForeachTaskContext::coarse_faces, subdiv_foreach_corner_vertices_regular(), and subdiv_foreach_corner_vertices_special().
Referenced by subdiv_foreach_single_geometry_vertices().
|
static |
Definition at line 311 of file subdiv_foreach.cc.
References blender::bke::subdiv::ForeachTaskContext::foreach_context, subdiv_foreach_corner_vertices_regular_do(), and blender::bke::subdiv::ForeachContext::vertex_corner.
Referenced by subdiv_foreach_corner_vertices().
|
static |
Definition at line 280 of file subdiv_foreach.cc.
References BLI_BITMAP_TEST_AND_SET_ATOMIC, blender::bke::subdiv::ForeachTaskContext::coarse_corner_verts, blender::bke::subdiv::ForeachTaskContext::coarse_faces, blender::bke::subdiv::ForeachTaskContext::coarse_vertices_used_map, blender::bke::subdiv::ForeachTaskContext::face_ptex_offset, blender::bke::subdiv::ForeachTaskContext::foreach_context, blender::IndexRange::size(), v, and blender::bke::subdiv::ForeachTaskContext::vertices_corner_offset.
Referenced by subdiv_foreach_corner_vertices_regular(), and subdiv_foreach_every_corner_vertices_regular().
|
static |
Definition at line 347 of file subdiv_foreach.cc.
References blender::bke::subdiv::ForeachTaskContext::foreach_context, subdiv_foreach_corner_vertices_special_do(), and blender::bke::subdiv::ForeachContext::vertex_corner.
Referenced by subdiv_foreach_corner_vertices().
|
static |
Definition at line 319 of file subdiv_foreach.cc.
References BLI_BITMAP_TEST_AND_SET_ATOMIC, blender::bke::subdiv::ForeachTaskContext::coarse_corner_verts, blender::bke::subdiv::ForeachTaskContext::coarse_faces, blender::bke::subdiv::ForeachTaskContext::coarse_vertices_used_map, blender::bke::subdiv::ForeachTaskContext::face_ptex_offset, blender::bke::subdiv::ForeachTaskContext::foreach_context, blender::IndexRange::size(), and blender::bke::subdiv::ForeachTaskContext::vertices_corner_offset.
Referenced by subdiv_foreach_corner_vertices_special(), and subdiv_foreach_every_corner_vertices_special().
|
static |
Definition at line 147 of file subdiv_foreach.cc.
References blender::bke::subdiv::ForeachTaskContext::coarse_faces, blender::bke::subdiv::ForeachTaskContext::coarse_mesh, Mesh::edges_num, Mesh::faces_num, num_edges_per_ptex_face_get(), num_faces_per_ptex_get(), num_inner_edges_per_ptex_face_get(), num_ptex_faces_per_face_get(), blender::bke::subdiv::ForeachTaskContext::num_subdiv_edges, blender::bke::subdiv::ForeachTaskContext::num_subdiv_faces, blender::bke::subdiv::ForeachTaskContext::num_subdiv_loops, blender::bke::subdiv::ForeachTaskContext::num_subdiv_vertices, blender::bke::subdiv::ToMeshSettings::resolution, blender::bke::subdiv::ForeachTaskContext::settings, blender::IndexRange::size(), and Mesh::verts_num.
Referenced by subdiv_foreach_ctx_init().
|
static |
Definition at line 263 of file subdiv_foreach.cc.
References blender::bke::subdiv::ForeachTaskContext::coarse_edges_used_map, blender::bke::subdiv::ForeachTaskContext::coarse_vertices_used_map, MEM_freeN(), blender::bke::subdiv::ForeachTaskContext::subdiv_edge_offset, blender::bke::subdiv::ForeachTaskContext::subdiv_face_offset, and blender::bke::subdiv::ForeachTaskContext::subdiv_vertex_offset.
Referenced by foreach_subdiv_geometry().
|
static |
Definition at line 244 of file subdiv_foreach.cc.
References BLI_BITMAP_NEW, blender::bke::subdiv::ForeachTaskContext::coarse_edges_used_map, blender::bke::subdiv::ForeachTaskContext::coarse_mesh, blender::bke::subdiv::ForeachTaskContext::coarse_vertices_used_map, Mesh::edges_num, blender::bke::subdiv::ForeachTaskContext::face_ptex_offset, face_ptex_offset_get(), Mesh::faces_num, MEM_malloc_arrayN(), blender::bke::subdiv::ForeachTaskContext::subdiv_edge_offset, blender::bke::subdiv::ForeachTaskContext::subdiv_face_offset, subdiv_foreach_ctx_count(), subdiv_foreach_ctx_init_offsets(), blender::bke::subdiv::ForeachTaskContext::subdiv_vertex_offset, and Mesh::verts_num.
Referenced by foreach_subdiv_geometry().
|
static |
Definition at line 196 of file subdiv_foreach.cc.
References blender::bke::subdiv::ForeachTaskContext::coarse_faces, blender::bke::subdiv::ForeachTaskContext::coarse_mesh, blender::bke::subdiv::ForeachTaskContext::edge_boundary_offset, blender::bke::subdiv::ForeachTaskContext::edge_inner_offset, Mesh::edges_num, Mesh::faces_num, num_edges_per_ptex_face_get(), num_faces_per_ptex_get(), num_inner_edges_per_ptex_face_get(), num_ptex_faces_per_face_get(), blender::bke::subdiv::ToMeshSettings::resolution, blender::bke::subdiv::ForeachTaskContext::settings, blender::IndexRange::size(), blender::bke::subdiv::ForeachTaskContext::subdiv_edge_offset, blender::bke::subdiv::ForeachTaskContext::subdiv_face_offset, blender::bke::subdiv::ForeachTaskContext::subdiv_vertex_offset, blender::bke::subdiv::ForeachTaskContext::vertices_corner_offset, blender::bke::subdiv::ForeachTaskContext::vertices_edge_offset, blender::bke::subdiv::ForeachTaskContext::vertices_inner_offset, and Mesh::verts_num.
Referenced by subdiv_foreach_ctx_init().
|
static |
Definition at line 536 of file subdiv_foreach.cc.
References blender::bke::subdiv::ForeachTaskContext::coarse_faces, subdiv_foreach_edge_vertices_regular(), and subdiv_foreach_edge_vertices_special().
Referenced by subdiv_foreach_single_geometry_vertices().
|
static |
Definition at line 457 of file subdiv_foreach.cc.
References blender::bke::subdiv::ForeachTaskContext::foreach_context, subdiv_foreach_edge_vertices_regular_do(), and blender::bke::subdiv::ForeachContext::vertex_edge.
Referenced by subdiv_foreach_edge_vertices().
|
static |
Definition at line 401 of file subdiv_foreach.cc.
References BLI_BITMAP_TEST_AND_SET_ATOMIC, blender::bke::subdiv::ForeachTaskContext::coarse_corner_edges, blender::bke::subdiv::ForeachTaskContext::coarse_corner_verts, blender::bke::subdiv::ForeachTaskContext::coarse_edges, blender::bke::subdiv::ForeachTaskContext::coarse_edges_used_map, blender::bke::subdiv::ForeachTaskContext::coarse_faces, blender::bke::subdiv::ForeachTaskContext::face_ptex_offset, float, blender::bke::subdiv::ForeachTaskContext::foreach_context, blender::bke::subdiv::ToMeshSettings::resolution, blender::bke::subdiv::ForeachTaskContext::settings, blender::IndexRange::size(), v, and blender::bke::subdiv::ForeachTaskContext::vertices_edge_offset.
Referenced by subdiv_foreach_edge_vertices_regular(), and subdiv_foreach_every_edge_vertices_regular().
|
static |
Definition at line 528 of file subdiv_foreach.cc.
References blender::bke::subdiv::ForeachTaskContext::foreach_context, subdiv_foreach_edge_vertices_special_do(), and blender::bke::subdiv::ForeachContext::vertex_edge.
Referenced by subdiv_foreach_edge_vertices().
|
static |
Definition at line 465 of file subdiv_foreach.cc.
References BLI_BITMAP_TEST_AND_SET_ATOMIC, blender::bke::subdiv::ForeachTaskContext::coarse_corner_edges, blender::bke::subdiv::ForeachTaskContext::coarse_corner_verts, blender::bke::subdiv::ForeachTaskContext::coarse_edges, blender::bke::subdiv::ForeachTaskContext::coarse_edges_used_map, blender::bke::subdiv::ForeachTaskContext::coarse_faces, blender::bke::subdiv::ForeachTaskContext::face_ptex_offset, float, blender::bke::subdiv::ForeachTaskContext::foreach_context, blender::bke::subdiv::ToMeshSettings::resolution, blender::bke::subdiv::ForeachTaskContext::settings, blender::IndexRange::size(), v, and blender::bke::subdiv::ForeachTaskContext::vertices_edge_offset.
Referenced by subdiv_foreach_edge_vertices_special(), and subdiv_foreach_every_edge_vertices_special().
|
static |
Definition at line 943 of file subdiv_foreach.cc.
References subdiv_foreach_edges_all_patches().
Referenced by subdiv_foreach_task().
|
static |
Definition at line 931 of file subdiv_foreach.cc.
References blender::bke::subdiv::ForeachTaskContext::coarse_faces, subdiv_foreach_edges_all_patches_regular(), and subdiv_foreach_edges_all_patches_special().
Referenced by subdiv_foreach_edges().
|
static |
Definition at line 737 of file subdiv_foreach.cc.
References blender::bke::subdiv::ForeachTaskContext::coarse_corner_edges, blender::bke::subdiv::ForeachTaskContext::coarse_corner_verts, blender::bke::subdiv::ForeachTaskContext::coarse_edges, blender::bke::subdiv::ForeachTaskContext::coarse_faces, blender::bke::subdiv::ForeachContext::edge, blender::bke::subdiv::ForeachTaskContext::edge_inner_offset, blender::bke::subdiv::ForeachTaskContext::foreach_context, i, ORIGINDEX_NONE, blender::bke::subdiv::ToMeshSettings::resolution, blender::bke::subdiv::ForeachTaskContext::settings, blender::IndexRange::size(), blender::bke::subdiv::ForeachTaskContext::subdiv_edge_offset, subdiv_foreach_edges_column(), subdiv_foreach_edges_row(), blender::bke::subdiv::ForeachTaskContext::subdiv_vertex_offset, v2, blender::bke::subdiv::ForeachTaskContext::vertices_edge_offset, and blender::bke::subdiv::ForeachTaskContext::vertices_inner_offset.
Referenced by subdiv_foreach_edges_all_patches().
|
static |
Definition at line 815 of file subdiv_foreach.cc.
References blender::bke::subdiv::ForeachTaskContext::coarse_corner_edges, blender::bke::subdiv::ForeachTaskContext::coarse_corner_verts, blender::bke::subdiv::ForeachTaskContext::coarse_edges, blender::bke::subdiv::ForeachTaskContext::coarse_faces, blender::bke::subdiv::ForeachContext::edge, blender::bke::subdiv::ForeachTaskContext::edge_inner_offset, blender::bke::subdiv::ForeachTaskContext::foreach_context, i, ORIGINDEX_NONE, ptex_face_resolution_get(), blender::bke::subdiv::ToMeshSettings::resolution, blender::bke::subdiv::ForeachTaskContext::settings, blender::IndexRange::size(), blender::bke::subdiv::ForeachTaskContext::subdiv_edge_offset, subdiv_foreach_edges_column(), subdiv_foreach_edges_row(), blender::bke::subdiv::ForeachTaskContext::subdiv_vertex_offset, v2, blender::bke::subdiv::ForeachTaskContext::vertices_edge_offset, and blender::bke::subdiv::ForeachTaskContext::vertices_inner_offset.
Referenced by subdiv_foreach_edges_all_patches().
|
static |
Definition at line 692 of file subdiv_foreach.cc.
References blender::bke::subdiv::ForeachContext::edge, blender::bke::subdiv::ForeachTaskContext::foreach_context, ORIGINDEX_NONE, and v2.
Referenced by subdiv_foreach_edges_all_patches_regular(), and subdiv_foreach_edges_all_patches_special().
|
static |
Definition at line 672 of file subdiv_foreach.cc.
References blender::bke::subdiv::ForeachContext::edge, blender::bke::subdiv::ForeachTaskContext::foreach_context, and v2.
Referenced by subdiv_foreach_edges_all_patches_regular(), and subdiv_foreach_edges_all_patches_special().
|
static |
Definition at line 383 of file subdiv_foreach.cc.
References blender::bke::subdiv::ForeachTaskContext::coarse_faces, blender::bke::subdiv::ForeachTaskContext::coarse_mesh, Mesh::faces_num, blender::bke::subdiv::ForeachTaskContext::foreach_context, subdiv_foreach_every_corner_vertices_regular(), subdiv_foreach_every_corner_vertices_special(), and blender::bke::subdiv::ForeachContext::vertex_every_corner.
Referenced by subdiv_foreach_single_thread_tasks().
|
static |
Definition at line 367 of file subdiv_foreach.cc.
References blender::bke::subdiv::ForeachTaskContext::foreach_context, subdiv_foreach_corner_vertices_regular_do(), and blender::bke::subdiv::ForeachContext::vertex_every_corner.
Referenced by subdiv_foreach_every_corner_vertices().
|
static |
Definition at line 375 of file subdiv_foreach.cc.
References blender::bke::subdiv::ForeachTaskContext::foreach_context, subdiv_foreach_corner_vertices_special_do(), and blender::bke::subdiv::ForeachContext::vertex_every_corner.
Referenced by subdiv_foreach_every_corner_vertices().
|
static |
Definition at line 564 of file subdiv_foreach.cc.
References blender::bke::subdiv::ForeachTaskContext::coarse_faces, blender::bke::subdiv::ForeachTaskContext::coarse_mesh, Mesh::faces_num, blender::bke::subdiv::ForeachTaskContext::foreach_context, subdiv_foreach_every_edge_vertices_regular(), subdiv_foreach_every_edge_vertices_special(), and blender::bke::subdiv::ForeachContext::vertex_every_edge.
Referenced by subdiv_foreach_single_thread_tasks().
|
static |
Definition at line 548 of file subdiv_foreach.cc.
References blender::bke::subdiv::ForeachTaskContext::foreach_context, subdiv_foreach_edge_vertices_regular_do(), and blender::bke::subdiv::ForeachContext::vertex_every_edge.
Referenced by subdiv_foreach_every_edge_vertices().
|
static |
Definition at line 556 of file subdiv_foreach.cc.
References blender::bke::subdiv::ForeachTaskContext::foreach_context, subdiv_foreach_edge_vertices_special_do(), and blender::bke::subdiv::ForeachContext::vertex_every_edge.
Referenced by subdiv_foreach_every_edge_vertices().
|
static |
Definition at line 1624 of file subdiv_foreach.cc.
References blender::bke::subdiv::ForeachTaskContext::coarse_faces, blender::bke::subdiv::ForeachTaskContext::foreach_context, num_faces_per_ptex_get(), num_ptex_faces_per_face_get(), blender::bke::subdiv::ForeachContext::poly, ptex_face_resolution_get(), blender::bke::subdiv::ToMeshSettings::resolution, blender::bke::subdiv::ForeachTaskContext::settings, and blender::bke::subdiv::ForeachTaskContext::subdiv_face_offset.
Referenced by subdiv_foreach_task().
|
static |
Definition at line 1788 of file subdiv_foreach.cc.
References blender::bke::subdiv::ForeachTaskContext::foreach_context, and blender::bke::subdiv::ForeachContext::user_data_tls_free.
Referenced by foreach_subdiv_geometry().
|
static |
Definition at line 645 of file subdiv_foreach.cc.
References blender::bke::subdiv::ForeachTaskContext::coarse_faces, subdiv_foreach_inner_vertices_regular(), and subdiv_foreach_inner_vertices_special().
Referenced by subdiv_foreach_vertices().
|
static |
Definition at line 582 of file subdiv_foreach.cc.
References blender::bke::subdiv::ForeachTaskContext::face_ptex_offset, float, blender::bke::subdiv::ForeachTaskContext::foreach_context, blender::bke::subdiv::ToMeshSettings::resolution, blender::bke::subdiv::ForeachTaskContext::settings, blender::bke::subdiv::ForeachTaskContext::subdiv_vertex_offset, v, blender::bke::subdiv::ForeachContext::vertex_inner, blender::bke::subdiv::ForeachTaskContext::vertices_inner_offset, x, and y.
Referenced by subdiv_foreach_inner_vertices().
|
static |
Definition at line 607 of file subdiv_foreach.cc.
References blender::bke::subdiv::ForeachTaskContext::coarse_faces, blender::bke::subdiv::ForeachTaskContext::face_ptex_offset, float, blender::bke::subdiv::ForeachTaskContext::foreach_context, ptex_face_resolution_get(), blender::bke::subdiv::ToMeshSettings::resolution, blender::bke::subdiv::ForeachTaskContext::settings, blender::IndexRange::size(), blender::bke::subdiv::ForeachTaskContext::subdiv_vertex_offset, v, blender::bke::subdiv::ForeachContext::vertex_inner, blender::bke::subdiv::ForeachTaskContext::vertices_inner_offset, x, and y.
Referenced by subdiv_foreach_inner_vertices().
|
static |
Definition at line 1608 of file subdiv_foreach.cc.
References blender::bke::subdiv::ForeachTaskContext::coarse_faces, subdiv_foreach_loops_regular(), and subdiv_foreach_loops_special().
Referenced by subdiv_foreach_task().
|
static |
Definition at line 1058 of file subdiv_foreach.cc.
References v.
Referenced by subdiv_foreach_loops_regular().
|
static |
Definition at line 990 of file subdiv_foreach.cc.
References blender::bke::subdiv::ForeachTaskContext::foreach_context, blender::bke::subdiv::ForeachContext::loop, ORIGINDEX_NONE, rotate_indices(), v, and v2.
Referenced by subdiv_foreach_loops_regular(), and subdiv_foreach_loops_special().
|
static |
Definition at line 1075 of file subdiv_foreach.cc.
References blender::bke::subdiv::ForeachTaskContext::coarse_corner_edges, blender::bke::subdiv::ForeachTaskContext::coarse_corner_verts, blender::bke::subdiv::ForeachTaskContext::coarse_edges, blender::bke::subdiv::ForeachTaskContext::coarse_faces, blender::bke::subdiv::ForeachTaskContext::edge_boundary_offset, blender::bke::subdiv::ForeachTaskContext::edge_inner_offset, blender::bke::subdiv::ForeachTaskContext::face_ptex_offset, float, i, num_edges_per_ptex_face_get(), ptex_face_resolution_get(), blender::bke::subdiv::ToMeshSettings::resolution, blender::bke::subdiv::ForeachTaskContext::settings, blender::IndexRange::size(), blender::bke::subdiv::ForeachTaskContext::subdiv_edge_offset, blender::bke::subdiv::ForeachTaskContext::subdiv_face_offset, subdiv_foreach_loops_corner_index(), subdiv_foreach_loops_of_face(), blender::bke::subdiv::ForeachTaskContext::subdiv_vertex_offset, v, v2, blender::bke::subdiv::ForeachTaskContext::vertices_corner_offset, blender::bke::subdiv::ForeachTaskContext::vertices_edge_offset, blender::bke::subdiv::ForeachTaskContext::vertices_inner_offset, x, and y.
Referenced by subdiv_foreach_loops().
|
static |
Definition at line 1269 of file subdiv_foreach.cc.
References blender::bke::subdiv::ForeachTaskContext::coarse_corner_edges, blender::bke::subdiv::ForeachTaskContext::coarse_corner_verts, blender::bke::subdiv::ForeachTaskContext::coarse_edges, blender::bke::subdiv::ForeachTaskContext::coarse_faces, blender::bke::subdiv::ForeachTaskContext::edge_boundary_offset, blender::bke::subdiv::ForeachTaskContext::edge_inner_offset, blender::bke::subdiv::ForeachTaskContext::face_ptex_offset, float, i, num_inner_edges_per_ptex_face_get(), ptex_face_resolution_get(), blender::bke::subdiv::ToMeshSettings::resolution, blender::bke::subdiv::ForeachTaskContext::settings, blender::IndexRange::size(), blender::bke::subdiv::ForeachTaskContext::subdiv_edge_offset, blender::bke::subdiv::ForeachTaskContext::subdiv_face_offset, subdiv_foreach_loops_of_face(), blender::bke::subdiv::ForeachTaskContext::subdiv_vertex_offset, v, v2, blender::bke::subdiv::ForeachTaskContext::vertices_corner_offset, blender::bke::subdiv::ForeachTaskContext::vertices_edge_offset, blender::bke::subdiv::ForeachTaskContext::vertices_inner_offset, x, and y.
Referenced by subdiv_foreach_loops().
|
static |
Definition at line 1657 of file subdiv_foreach.cc.
References BLI_BITMAP_TEST_BOOL, blender::bke::subdiv::ForeachTaskContext::coarse_vertices_used_map, blender::bke::subdiv::ForeachTaskContext::foreach_context, blender::bke::subdiv::ForeachContext::vertex_loose, and blender::bke::subdiv::ForeachTaskContext::vertices_corner_offset.
Referenced by foreach_subdiv_geometry().
|
static |
Definition at line 1727 of file subdiv_foreach.cc.
References BLI_BITMAP_ENABLE, blender::bke::subdiv::ForeachTaskContext::coarse_corner_edges, blender::bke::subdiv::ForeachTaskContext::coarse_corner_verts, blender::bke::subdiv::ForeachTaskContext::coarse_edges_used_map, blender::bke::subdiv::ForeachTaskContext::coarse_faces, and blender::bke::subdiv::ForeachTaskContext::coarse_vertices_used_map.
Referenced by subdiv_foreach_single_thread_tasks().
|
static |
Definition at line 1715 of file subdiv_foreach.cc.
References blender::bke::subdiv::ForeachTaskContext::coarse_mesh, Mesh::faces_num, blender::bke::subdiv::ForeachTaskContext::foreach_context, subdiv_foreach_corner_vertices(), subdiv_foreach_edge_vertices(), and blender::bke::subdiv::ForeachContext::vertex_corner.
Referenced by subdiv_foreach_single_thread_tasks().
|
static |
Definition at line 1737 of file subdiv_foreach.cc.
References blender::bke::subdiv::ForeachTaskContext::foreach_context, subdiv_foreach_every_corner_vertices(), subdiv_foreach_every_edge_vertices(), subdiv_foreach_mark_non_loose_geometry(), subdiv_foreach_single_geometry_vertices(), subdiv_foreach_tls_alloc(), subdiv_foreach_tls_free(), blender::bke::subdiv::ForeachContext::vertex_every_corner, blender::bke::subdiv::ForeachContext::vertex_every_edge, blender::bke::subdiv::ForeachContext::vertex_loose, and blender::bke::subdiv::ForeachContext::vertex_of_loose_edge.
Referenced by foreach_subdiv_geometry().
|
static |
Definition at line 1761 of file subdiv_foreach.cc.
References blender::bke::subdiv::ForeachContext::edge, blender::bke::subdiv::ForeachTaskContext::foreach_context, blender::bke::subdiv::ForeachContext::loop, blender::bke::subdiv::ForeachContext::poly, subdiv_foreach_edges(), subdiv_foreach_faces(), subdiv_foreach_loops(), and subdiv_foreach_vertices().
Referenced by foreach_subdiv_geometry().
|
static |
Definition at line 118 of file subdiv_foreach.cc.
References blender::bke::subdiv::ForeachTaskContext::foreach_context, MEM_mallocN(), blender::bke::subdiv::ForeachContext::user_data_tls, and blender::bke::subdiv::ForeachContext::user_data_tls_size.
Referenced by subdiv_foreach_single_thread_tasks().
|
static |
Definition at line 129 of file subdiv_foreach.cc.
References blender::bke::subdiv::ForeachTaskContext::foreach_context, MEM_freeN(), and blender::bke::subdiv::ForeachContext::user_data_tls_free.
Referenced by subdiv_foreach_single_thread_tasks().
|
static |
Definition at line 658 of file subdiv_foreach.cc.
References blender::bke::subdiv::ForeachTaskContext::foreach_context, subdiv_foreach_inner_vertices(), and blender::bke::subdiv::ForeachContext::vertex_inner.
Referenced by subdiv_foreach_task().
|
static |
Definition at line 1671 of file subdiv_foreach.cc.
References BLI_BITMAP_TEST_BOOL, blender::bke::subdiv::ForeachTaskContext::coarse_edges, blender::bke::subdiv::ForeachTaskContext::coarse_edges_used_map, float, blender::bke::subdiv::ForeachTaskContext::foreach_context, i, blender::bke::subdiv::ToMeshSettings::resolution, blender::bke::subdiv::ForeachTaskContext::settings, blender::bke::subdiv::ForeachContext::vertex_of_loose_edge, blender::bke::subdiv::ForeachTaskContext::vertices_corner_offset, and blender::bke::subdiv::ForeachTaskContext::vertices_edge_offset.
Referenced by foreach_subdiv_geometry().
|
static |
Definition at line 858 of file subdiv_mesh.cc.
References blender::bke::subdiv::LoopsForInterpolation::corner_data, Mesh::corner_data, CustomData_interp(), blender::bke::subdiv::LoopsForInterpolation::loop_indices, blender::bke::subdiv::SubdivMeshContext::subdiv_mesh, and v.
Referenced by subdiv_mesh_loop().
|
static |
Definition at line 57 of file subdiv_deform.cc.
References blender::bke::subdiv::SubdivDeformContext::accumulated_counters, and MEM_SAFE_FREE.
Referenced by deform_coarse_vertices(), and subdiv_to_mesh().
|
static |
Definition at line 133 of file subdiv_mesh.cc.
References blender::bke::subdiv::SubdivMeshContext::accumulated_counters, blender::bke::subdiv::SubdivMeshContext::coarse_corner_data_interp, CustomData_free(), MEM_SAFE_FREE, blender::bke::subdiv::SubdivMeshContext::subdiv_corner_edges, and blender::bke::subdiv::SubdivMeshContext::subdiv_corner_verts.
|
static |
Definition at line 101 of file subdiv_mesh.cc.
References CD_CLOTH_ORCO, CD_ORCO, CD_ORIGINDEX, blender::bke::subdiv::SubdivMeshContext::cloth_orco, Mesh::corner_data, Mesh::corners_num, CustomData_get_layer_for_write(), Mesh::edge_data, blender::bke::subdiv::SubdivMeshContext::edge_origindex, Mesh::edges_num, Mesh::face_data, blender::bke::subdiv::SubdivMeshContext::face_origindex, Mesh::faces_num, blender::bke::subdiv::SubdivMeshContext::loop_origindex, blender::bke::subdiv::SubdivMeshContext::orco, blender::bke::subdiv::SubdivMeshContext::subdiv_edges, blender::bke::subdiv::SubdivMeshContext::subdiv_face_offsets, blender::bke::subdiv::SubdivMeshContext::subdiv_mesh, subdiv_mesh_ctx_cache_uv_layers(), blender::bke::subdiv::SubdivMeshContext::subdiv_positions, Mesh::vert_data, blender::bke::subdiv::SubdivMeshContext::vert_origindex, and Mesh::verts_num.
Referenced by subdiv_mesh_topology_info().
|
static |
Definition at line 90 of file subdiv_mesh.cc.
References CD_PROP_FLOAT2, Mesh::corner_data, Mesh::corners_num, CustomData_get_layer_n_for_write(), CustomData_number_of_layers(), MAX_MTFACE, blender::bke::subdiv::SubdivMeshContext::num_uv_layers, blender::bke::subdiv::SubdivMeshContext::subdiv_mesh, and blender::bke::subdiv::SubdivMeshContext::uv_layers.
Referenced by subdiv_mesh_ctx_cache_custom_data_layers().
|
static |
Definition at line 838 of file subdiv_mesh.cc.
References subdiv_copy_edge_data(), blender::bke::subdiv::SubdivMeshContext::subdiv_edges, and blender::bke::subdiv::ForeachContext::user_data.
Referenced by setup_foreach_callbacks().
|
static |
Definition at line 890 of file subdiv_mesh.cc.
References blender::bke::subdiv::SubdivMeshContext::coarse_faces, blender::bke::subdiv::SubdivMeshTLS::loop_interpolation, blender::bke::subdiv::SubdivMeshTLS::loop_interpolation_coarse_corner, blender::bke::subdiv::SubdivMeshTLS::loop_interpolation_coarse_face_index, loop_interpolation_end(), loop_interpolation_from_corner(), loop_interpolation_init(), and blender::bke::subdiv::SubdivMeshTLS::loop_interpolation_initialized.
Referenced by subdiv_mesh_loop().
|
static |
Definition at line 715 of file subdiv_mesh.cc.
References blender::bke::subdiv::SubdivMeshContext::coarse_faces, blender::bke::subdiv::SubdivMeshTLS::vertex_interpolation, blender::bke::subdiv::SubdivMeshTLS::vertex_interpolation_coarse_corner, blender::bke::subdiv::SubdivMeshTLS::vertex_interpolation_coarse_face_index, vertex_interpolation_end(), vertex_interpolation_from_corner(), vertex_interpolation_init(), and blender::bke::subdiv::SubdivMeshTLS::vertex_interpolation_initialized.
Referenced by subdiv_mesh_vertex_edge(), and subdiv_mesh_vertex_inner().
|
static |
Definition at line 948 of file subdiv_mesh.cc.
References BLI_assert, blender::bke::subdiv::SubdivMeshContext::coarse_mesh, CustomData_copy_data(), Mesh::face_data, ORIGINDEX_NONE, blender::bke::subdiv::SubdivMeshContext::subdiv_face_offsets, blender::bke::subdiv::SubdivMeshContext::subdiv_mesh, and blender::bke::subdiv::ForeachContext::user_data.
Referenced by setup_foreach_callbacks().
|
static |
Definition at line 763 of file subdiv_mesh.cc.
References blender::IndexRange::size(), and v.
Referenced by subdiv_mesh_tag_center_vertex().
|
static |
Definition at line 921 of file subdiv_mesh.cc.
References blender::bke::subdiv::SubdivMeshTLS::loop_interpolation, blender::bke::subdiv::SubdivMeshContext::subdiv_corner_edges, blender::bke::subdiv::SubdivMeshContext::subdiv_corner_verts, subdiv_eval_uv_layer(), subdiv_interpolate_corner_data(), subdiv_mesh_ensure_loop_interpolation(), blender::bke::subdiv::ForeachContext::user_data, and v.
Referenced by setup_foreach_callbacks().
|
static |
Definition at line 49 of file subdiv_deform.cc.
References blender::bke::subdiv::SubdivDeformContext::accumulated_counters, blender::bke::subdiv::SubdivDeformContext::have_displacement, and MEM_calloc_arrayN().
Referenced by subdiv_mesh_topology_info(), and subdiv_mesh_topology_info().
|
static |
Definition at line 125 of file subdiv_mesh.cc.
References blender::bke::subdiv::SubdivMeshContext::accumulated_counters, blender::bke::subdiv::SubdivMeshContext::have_displacement, and MEM_calloc_arrayN().
|
static |
Definition at line 780 of file subdiv_mesh.cc.
References Mesh::runtime, subdiv_mesh_is_center_vertex(), and v.
Referenced by subdiv_mesh_vertex_inner().
|
static |
Definition at line 434 of file subdiv_mesh.cc.
References blender::bke::subdiv::SubdivMeshTLS::loop_interpolation, loop_interpolation_end(), blender::bke::subdiv::SubdivMeshTLS::loop_interpolation_initialized, blender::bke::subdiv::SubdivMeshTLS::vertex_interpolation, vertex_interpolation_end(), and blender::bke::subdiv::SubdivMeshTLS::vertex_interpolation_initialized.
Referenced by setup_foreach_callbacks().
|
static |
Definition at line 509 of file subdiv_mesh.cc.
References BKE_mesh_copy_parameters_for_eval(), CD_MASK_EVERYTHING, CD_MASK_MULTIRES_GRIDS, CD_SET_DEFAULT, blender::bke::subdiv::SubdivMeshContext::coarse_corner_data_interp, blender::bke::subdiv::SubdivMeshContext::coarse_mesh, Mesh::corner_data, Mesh::corners_num, CustomData_free(), CustomData_free_layer_named(), CustomData_init_from(), CustomData_init_layout_from(), Mesh::edge_data, Mesh::face_data, mask(), MEM_malloc_arrayN(), blender::bke::mesh_new_no_attributes(), Mesh::runtime, blender::bke::subdiv::SubdivMeshContext::settings, blender::bke::subdiv::SubdivMeshContext::subdiv_corner_edges, blender::bke::subdiv::SubdivMeshContext::subdiv_corner_verts, blender::bke::subdiv::SubdivMeshContext::subdiv_display_edges, blender::bke::subdiv::SubdivMeshContext::subdiv_mesh, subdiv_mesh_ctx_cache_custom_data_layers(), subdiv_mesh_prepare_accumulator(), blender::bke::subdiv::ToMeshSettings::use_optimal_display, blender::bke::subdiv::ForeachContext::user_data, and Mesh::vert_data.
|
static |
Definition at line 101 of file subdiv_deform.cc.
References blender::bke::subdiv::SubdivDeformContext::coarse_mesh, subdiv_mesh_prepare_accumulator(), blender::bke::subdiv::ForeachContext::user_data, and Mesh::verts_num.
Referenced by setup_foreach_callbacks(), and setup_foreach_callbacks().
|
static |
Definition at line 699 of file subdiv_mesh.cc.
References BLI_assert, evaluate_vertex_and_apply_displacement_copy(), ORIGINDEX_NONE, blender::bke::subdiv::ForeachContext::user_data, and v.
|
static |
Definition at line 128 of file subdiv_deform.cc.
References blender::bke::subdiv::SubdivDeformContext::accumulated_counters, add_v3_v3(), copy_v3_v3(), D, eval_limit_point(), blender::bke::subdiv::SubdivDeformContext::have_displacement, mul_v3_fl(), blender::bke::subdiv::SubdivDeformContext::subdiv, blender::bke::subdiv::ForeachContext::user_data, v, and blender::bke::subdiv::SubdivDeformContext::vert_positions.
Referenced by setup_foreach_callbacks(), and setup_foreach_callbacks().
|
static |
Definition at line 671 of file subdiv_mesh.cc.
References subdiv_mesh_vertex_displacement_every_corner_or_edge(), and v.
Referenced by setup_foreach_callbacks().
|
static |
Definition at line 659 of file subdiv_mesh.cc.
References subdiv_accumulate_vertex_displacement(), blender::bke::subdiv::ForeachContext::user_data, and v.
Referenced by subdiv_mesh_vertex_displacement_every_corner(), and subdiv_mesh_vertex_displacement_every_edge().
|
static |
Definition at line 685 of file subdiv_mesh.cc.
References subdiv_mesh_vertex_displacement_every_corner_or_edge(), and v.
Referenced by setup_foreach_callbacks().
|
static |
Definition at line 746 of file subdiv_mesh.cc.
References evaluate_vertex_and_apply_displacement_interpolate(), subdiv_mesh_ensure_vertex_interpolation(), blender::bke::subdiv::ForeachContext::user_data, v, and blender::bke::subdiv::SubdivMeshTLS::vertex_interpolation.
Referenced by setup_foreach_callbacks().
|
static |
Definition at line 114 of file subdiv_deform.cc.
References subdiv_accumulate_vertex_displacement(), blender::bke::subdiv::ForeachContext::user_data, and v.
Referenced by setup_foreach_callbacks().
|
static |
Definition at line 791 of file subdiv_mesh.cc.
References blender::bke::subdiv::SubdivMeshContext::coarse_faces, eval_final_point(), blender::bke::subdiv::SubdivMeshContext::subdiv, blender::bke::subdiv::SubdivMeshContext::subdiv_mesh, subdiv_mesh_ensure_vertex_interpolation(), subdiv_mesh_tag_center_vertex(), blender::bke::subdiv::SubdivMeshContext::subdiv_positions, subdiv_vertex_data_interpolate(), subdiv_vertex_orco_evaluate(), blender::bke::subdiv::ForeachContext::user_data, v, and blender::bke::subdiv::SubdivMeshTLS::vertex_interpolation.
Referenced by setup_foreach_callbacks().
|
static |
Definition at line 971 of file subdiv_mesh.cc.
References subdiv_vertex_data_copy(), and blender::bke::subdiv::ForeachContext::user_data.
Referenced by setup_foreach_callbacks().
|
static |
Definition at line 1070 of file subdiv_mesh.cc.
References blender::bke::subdiv::SubdivMeshContext::coarse_edges, blender::bke::subdiv::SubdivMeshContext::coarse_positions, ELEM, blender::bke::subdiv::Settings::is_simple, mesh_interpolate_position_on_edge(), blender::bke::subdiv::Subdiv::settings, blender::bke::subdiv::SubdivMeshContext::subdiv, subdiv_mesh_vertex_of_loose_edge_interpolate(), blender::bke::subdiv::SubdivMeshContext::subdiv_positions, blender::bke::subdiv::ForeachContext::user_data, and blender::bke::subdiv::SubdivMeshContext::vert_to_edge_map.
Referenced by setup_foreach_callbacks().
|
static |
Definition at line 1047 of file subdiv_mesh.cc.
References BLI_assert, blender::bke::subdiv::SubdivMeshContext::coarse_mesh, CustomData_interp(), ORIGINDEX_NONE, blender::bke::subdiv::SubdivMeshContext::subdiv_mesh, Mesh::vert_data, and blender::bke::subdiv::SubdivMeshContext::vert_origindex.
Referenced by subdiv_mesh_vertex_of_loose_edge().
| Mesh * blender::bke::subdiv::subdiv_to_mesh | ( | Subdiv * | subdiv, |
| const ToMeshSettings * | settings, | ||
| const Mesh * | coarse_mesh ) |
Create real hi-res mesh from subdivision, all geometry is "real".
Definition at line 1129 of file subdiv_mesh.cc.
References blender::bke::mesh::build_vert_to_edge_map(), CD_PROP_INT32, blender::bke::subdiv::SubdivMeshContext::coarse_corner_verts, blender::bke::subdiv::SubdivMeshContext::coarse_edges, blender::bke::subdiv::SubdivMeshContext::coarse_faces, blender::bke::subdiv::SubdivMeshContext::coarse_mesh, blender::bke::subdiv::SubdivMeshContext::coarse_positions, CustomData_add_layer_named_with_data(), eval_begin_from_mesh(), Mesh::faces_num, foreach_subdiv_geometry(), blender::bke::subdiv::SubdivMeshContext::have_displacement, Array< T, InlineBufferCapacity, Allocator >::is_empty(), result, Mesh::runtime, blender::bke::subdiv::SubdivMeshContext::settings, setup_foreach_callbacks(), stats_begin(), stats_end(), blender::bke::subdiv::SubdivMeshContext::subdiv, blender::bke::subdiv::SubdivMeshContext::subdiv_corner_edges, blender::bke::subdiv::SubdivMeshContext::subdiv_corner_verts, blender::bke::subdiv::SubdivMeshContext::subdiv_display_edges, SUBDIV_EVALUATOR_TYPE_CPU, blender::bke::subdiv::SubdivMeshContext::subdiv_mesh, subdiv_mesh_context_free(), SUBDIV_STATS_SUBDIV_TO_MESH, SUBDIV_STATS_SUBDIV_TO_MESH_GEOMETRY, blender::bke::subdiv::ForeachContext::user_data, blender::bke::subdiv::ForeachContext::user_data_tls, blender::bke::subdiv::ForeachContext::user_data_tls_size, blender::bke::subdiv::SubdivMeshContext::vert_to_edge_indices, blender::bke::subdiv::SubdivMeshContext::vert_to_edge_map, blender::bke::subdiv::SubdivMeshContext::vert_to_edge_offsets, and Mesh::verts_num.
Referenced by mesh_wrapper_ensure_subdivision(), multires_as_mesh(), subdiv_as_mesh(), and subdivide_edit_mesh().
|
static |
Definition at line 576 of file subdiv_mesh.cc.
References blender::bke::subdiv::SubdivMeshContext::coarse_mesh, CustomData_copy_data(), blender::bke::subdiv::SubdivMeshContext::subdiv_mesh, and Mesh::vert_data.
Referenced by evaluate_vertex_and_apply_displacement_copy(), and subdiv_mesh_vertex_loose().
|
static |
Definition at line 588 of file subdiv_mesh.cc.
References CustomData_interp(), ORIGINDEX_NONE, blender::bke::subdiv::SubdivMeshContext::subdiv_mesh, v, Mesh::vert_data, blender::bke::subdiv::SubdivMeshContext::vert_origindex, blender::bke::subdiv::VerticesForInterpolation::vertex_data, and blender::bke::subdiv::VerticesForInterpolation::vertex_indices.
Referenced by evaluate_vertex_and_apply_displacement_interpolate(), and subdiv_mesh_vertex_inner().
|
static |
Definition at line 451 of file subdiv_mesh.cc.
References blender::bke::subdiv::SubdivMeshContext::cloth_orco, copy_v3_v3(), eval_vertex_data(), blender::bke::subdiv::SubdivMeshContext::orco, blender::bke::subdiv::SubdivMeshContext::subdiv, and v.
Referenced by evaluate_vertex_and_apply_displacement_copy(), evaluate_vertex_and_apply_displacement_interpolate(), and subdiv_mesh_vertex_inner().
| int blender::bke::subdiv::topology_num_fvar_layers_get | ( | const Subdiv * | subdiv | ) |
Definition at line 21 of file subdiv_topology.cc.
References blender::opensubdiv::TopologyRefinerImpl::base_level(), and UNUSED_VARS.
| Subdiv * blender::bke::subdiv::update_from_converter | ( | Subdiv * | subdiv, |
| const Settings * | settings, | ||
| OpenSubdiv_Converter * | converter ) |
Similar to above, but will not re-create descriptor if it was created for the same settings and topology. If settings or topology did change, the existing descriptor is freed and a new one is created from scratch.
Definition at line 145 of file subdiv.cc.
References free(), new_from_converter(), settings_equal(), stats_begin(), stats_end(), SUBDIV_STATS_TOPOLOGY_COMPARE, and UNUSED_VARS.
Referenced by update_from_mesh().
| Subdiv * blender::bke::subdiv::update_from_mesh | ( | Subdiv * | subdiv, |
| const Settings * | settings, | ||
| const Mesh * | mesh ) |
Definition at line 179 of file subdiv.cc.
References converter_free(), converter_init_for_mesh(), and update_from_converter().
Referenced by BKE_subsurf_modifier_subdiv_descriptor_ensure(), calculate_limit_positions(), shrinkwrap_calc_subdivided_positions(), and subdiv_descriptor_ensure().
|
static |
Definition at line 296 of file subdiv_mesh.cc.
References CustomData_free(), blender::bke::subdiv::VerticesForInterpolation::vertex_data_storage, and blender::bke::subdiv::VerticesForInterpolation::vertex_data_storage_allocated.
Referenced by subdiv_mesh_ensure_vertex_interpolation(), and subdiv_mesh_tls_free().
|
static |
Definition at line 256 of file subdiv_mesh.cc.
References blender::bke::subdiv::SubdivMeshContext::coarse_corner_verts, blender::bke::subdiv::SubdivMeshContext::coarse_mesh, CustomData_copy_data(), CustomData_interp(), blender::bke::subdiv::LoopsOfPtex::first_loop, blender::bke::subdiv::LoopsOfPtex::last_loop, loops_of_ptex_get(), blender::IndexRange::size(), blender::IndexRange::start(), Mesh::vert_data, and blender::bke::subdiv::VerticesForInterpolation::vertex_data_storage.
Referenced by subdiv_mesh_ensure_vertex_interpolation().
|
static |
Definition at line 211 of file subdiv_mesh.cc.
References CD_MASK_EVERYTHING, CD_SET_DEFAULT, blender::bke::subdiv::SubdivMeshContext::coarse_corner_verts, blender::bke::subdiv::SubdivMeshContext::coarse_mesh, CustomData_init_layout_from(), CustomData_interp(), blender::Array< T, InlineBufferCapacity, Allocator >::data(), float, i, indices, blender::IndexRange::size(), blender::IndexRange::start(), Mesh::vert_data, blender::bke::subdiv::VerticesForInterpolation::vertex_data, blender::bke::subdiv::VerticesForInterpolation::vertex_data_storage, blender::bke::subdiv::VerticesForInterpolation::vertex_data_storage_allocated, and blender::bke::subdiv::VerticesForInterpolation::vertex_indices.
Referenced by subdiv_mesh_ensure_vertex_interpolation().
| VtxBoundaryInterpolation blender::bke::subdiv::vtx_boundary_interpolation_from_subsurf | ( | int | boundary_smooth | ) |
Definition at line 67 of file subdiv.cc.
References BLI_assert_msg, SUBDIV_VTX_BOUNDARY_EDGE_AND_CORNER, SUBDIV_VTX_BOUNDARY_EDGE_ONLY, SUBSURF_BOUNDARY_SMOOTH_ALL, and SUBSURF_BOUNDARY_SMOOTH_PRESERVE_CORNERS.
Referenced by BKE_multires_subdiv_settings_init(), and BKE_subsurf_modifier_settings_init().