[Bf-blender-cvs] [b49dbb635af] master: Subdiv: Make Blender crease to OSD sharpness reusable

Sergey Sharybin noreply at git.blender.org
Thu Mar 19 10:34:10 CET 2020


Commit: b49dbb635af74db5359cfc6c14a00ef397725968
Author: Sergey Sharybin
Date:   Thu Mar 19 10:32:16 2020 +0100
Branches: master
https://developer.blender.org/rBb49dbb635af74db5359cfc6c14a00ef397725968

Subdiv: Make Blender crease to OSD sharpness reusable

Makes it so conversion is centralized in a single place.

We might consider removing any conversion, passing value as-is which
will be easier for I/O scripts to match crease. The downside of that
would be loose of control range in certain qualities and values of
crease.

There shouldn't be any functional changes in this commit.

===================================================================

M	source/blender/blenkernel/BKE_subdiv.h
M	source/blender/blenkernel/intern/subdiv_converter_mesh.c
M	source/blender/blenkernel/intern/subdiv_inline.h

===================================================================

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__ */



More information about the Bf-blender-cvs mailing list