diff options
-rw-r--r-- | source/blender/blenkernel/BKE_subdiv.h | 4 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/subdiv_converter_mesh.c | 3 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/subdiv_inline.h | 11 |
3 files changed, 16 insertions, 2 deletions
diff --git a/source/blender/blenkernel/BKE_subdiv.h b/source/blender/blenkernel/BKE_subdiv.h index 7f4fe1c7673..3b342402ecb 100644 --- a/source/blender/blenkernel/BKE_subdiv.h +++ b/source/blender/blenkernel/BKE_subdiv.h @@ -287,6 +287,10 @@ BLI_INLINE int BKE_subdiv_rotate_quad_to_corner(const float quad_u, BLI_INLINE void BKE_subdiv_rotate_grid_to_quad( const int corner, const float grid_u, const float grid_v, float *r_quad_u, float *r_quad_v); +/* Convert Blender edge crease value to OpenSubdiv sharpness. */ +BLI_INLINE float BKE_subdiv_edge_crease_to_sharpness_f(float edge_crease); +BLI_INLINE float BKE_subdiv_edge_crease_to_sharpness_char(char edge_crease); + #ifdef __cplusplus } #endif diff --git a/source/blender/blenkernel/intern/subdiv_converter_mesh.c b/source/blender/blenkernel/intern/subdiv_converter_mesh.c index a078648e68b..41fc28c5d52 100644 --- a/source/blender/blenkernel/intern/subdiv_converter_mesh.c +++ b/source/blender/blenkernel/intern/subdiv_converter_mesh.c @@ -168,8 +168,7 @@ static float get_edge_sharpness(const OpenSubdiv_Converter *converter, int manif } const int edge_index = storage->manifold_edge_index_reverse[manifold_edge_index]; const MEdge *medge = storage->mesh->medge; - const float edge_crease = (float)medge[edge_index].crease / 255.0f; - return edge_crease * edge_crease * 10.0f; + return BKE_subdiv_edge_crease_to_sharpness_char(medge[edge_index].crease); } static bool is_infinite_sharp_vertex(const OpenSubdiv_Converter *converter, diff --git a/source/blender/blenkernel/intern/subdiv_inline.h b/source/blender/blenkernel/intern/subdiv_inline.h index f00c5cf7ff7..a51a33feb3d 100644 --- a/source/blender/blenkernel/intern/subdiv_inline.h +++ b/source/blender/blenkernel/intern/subdiv_inline.h @@ -104,4 +104,15 @@ BLI_INLINE void BKE_subdiv_rotate_grid_to_quad( } } +BLI_INLINE float BKE_subdiv_edge_crease_to_sharpness_f(float edge_crease) +{ + return edge_crease * edge_crease * 10.0f; +} + +BLI_INLINE float BKE_subdiv_edge_crease_to_sharpness_char(char edge_crease) +{ + const float edge_crease_f = edge_crease / 255.0f; + return BKE_subdiv_edge_crease_to_sharpness_f(edge_crease_f); +} + #endif /* __SUBDIV_INLINE_H__ */ |