[Bf-blender-cvs] [916edab6396] blender2.8: Subdiv: Move evaluation functionality to own header

Sergey Sharybin noreply at git.blender.org
Tue Sep 4 15:35:02 CEST 2018


Commit: 916edab639616001c04b091d00d30e65d033f332
Author: Sergey Sharybin
Date:   Tue Sep 4 15:26:58 2018 +0200
Branches: blender2.8
https://developer.blender.org/rB916edab639616001c04b091d00d30e65d033f332

Subdiv: Move evaluation functionality to own header

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

M	source/blender/blenkernel/BKE_subdiv.h
A	source/blender/blenkernel/BKE_subdiv_eval.h
M	source/blender/blenkernel/CMakeLists.txt
M	source/blender/blenkernel/intern/multires_reshape.c
M	source/blender/blenkernel/intern/subdiv_eval.c
M	source/blender/blenkernel/intern/subdiv_mesh.c

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

diff --git a/source/blender/blenkernel/BKE_subdiv.h b/source/blender/blenkernel/BKE_subdiv.h
index 8205864ddae..111f04915ad 100644
--- a/source/blender/blenkernel/BKE_subdiv.h
+++ b/source/blender/blenkernel/BKE_subdiv.h
@@ -171,94 +171,6 @@ Subdiv *BKE_subdiv_new_from_mesh(const SubdivSettings *settings,
 
 void BKE_subdiv_free(Subdiv *subdiv);
 
-/* ============================= EVALUATION API ============================= */
-
-/* Returns true if evaluator is ready for use. */
-bool BKE_subdiv_eval_begin(Subdiv *subdiv);
-bool BKE_subdiv_eval_update_from_mesh(Subdiv *subdiv, const struct Mesh *mesh);
-
-/* Single point queries. */
-
-void BKE_subdiv_eval_limit_point(
-        Subdiv *subdiv,
-        const int ptex_face_index,
-        const float u, const float v,
-        float r_P[3]);
-void BKE_subdiv_eval_limit_point_and_derivatives(
-        Subdiv *subdiv,
-        const int ptex_face_index,
-        const float u, const float v,
-        float r_P[3], float r_dPdu[3], float r_dPdv[3]);
-void BKE_subdiv_eval_limit_point_and_normal(
-        Subdiv *subdiv,
-        const int ptex_face_index,
-        const float u, const float v,
-        float r_P[3], float r_N[3]);
-void BKE_subdiv_eval_limit_point_and_short_normal(
-        Subdiv *subdiv,
-        const int ptex_face_index,
-        const float u, const float v,
-        float r_P[3], short r_N[3]);
-
-void BKE_subdiv_eval_face_varying(
-        Subdiv *subdiv,
-        const int face_varying_channel,
-        const int ptex_face_index,
-        const float u, const float v,
-        float r_varying[2]);
-
-/* NOTE: Expects derivatives to be correct.
- *
- * TODO(sergey): This is currently used together with
- * BKE_subdiv_eval_final_point() which cas easily evaluate derivatives.
- * Would be nice to have dispalcement evaluation function which does not require
- * knowing derivatives ahead of a time.
- */
-void BKE_subdiv_eval_displacement(
-        Subdiv *subdiv,
-        const int ptex_face_index,
-        const float u, const float v,
-        const float dPdu[3], const float dPdv[3],
-        float r_D[3]);
-
-void BKE_subdiv_eval_final_point(
-        Subdiv *subdiv,
-        const int ptex_face_index,
-        const float u, const float v,
-        float r_P[3]);
-
-/* Patch queries at given resolution.
- *
- * Will evaluate patch at uniformly distributed (u, v) coordinates on a grid
- * of given resolution, producing resolution^2 evaluation points. The order
- * goes as u in rows, v in columns.
- */
-
-void BKE_subdiv_eval_limit_patch_resolution_point(
-        Subdiv *subdiv,
-        const int ptex_face_index,
-        const int resolution,
-        void *buffer, const int offset, const int stride);
-void BKE_subdiv_eval_limit_patch_resolution_point_and_derivatives(
-        Subdiv *subdiv,
-        const int ptex_face_index,
-        const int resolution,
-        void *point_buffer, const int point_offset, const int point_stride,
-        void *du_buffer, const int du_offset, const int du_stride,
-        void *dv_buffer, const int dv_offset, const int dv_stride);
-void BKE_subdiv_eval_limit_patch_resolution_point_and_normal(
-        Subdiv *subdiv,
-        const int ptex_face_index,
-        const int resolution,
-        void *point_buffer, const int point_offset, const int point_stride,
-        void *normal_buffer, const int normal_offset, const int normal_stride);
-void BKE_subdiv_eval_limit_patch_resolution_point_and_short_normal(
-        Subdiv *subdiv,
-        const int ptex_face_index,
-        const int resolution,
-        void *point_buffer, const int point_offset, const int point_stride,
-        void *normal_buffer, const int normal_offset, const int normal_stride);
-
 /* =========================== SUBDIV TO MESH API =========================== */
 
 typedef struct SubdivToMeshSettings {
diff --git a/source/blender/blenkernel/BKE_subdiv_eval.h b/source/blender/blenkernel/BKE_subdiv_eval.h
new file mode 100644
index 00000000000..26c13643808
--- /dev/null
+++ b/source/blender/blenkernel/BKE_subdiv_eval.h
@@ -0,0 +1,127 @@
+/*
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * The Original Code is Copyright (C) 2018 by Blender Foundation.
+ * All rights reserved.
+ *
+ * Contributor(s): Sergey Sharybin.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+/** \file BKE_subdiv_eval.h
+ *  \ingroup bke
+ *  \since July 2018
+ *  \author Sergey Sharybin
+ */
+
+#ifndef __BKE_SUBDIV_EVAL_H__
+#define __BKE_SUBDIV_EVAL_H__
+
+#include "BLI_sys_types.h"
+
+struct Mesh;
+struct Subdiv;
+
+/* Returns true if evaluator is ready for use. */
+bool BKE_subdiv_eval_begin(struct Subdiv *subdiv);
+bool BKE_subdiv_eval_update_from_mesh(struct Subdiv *subdiv,
+                                      const struct Mesh *mesh);
+
+/* Single point queries. */
+
+void BKE_subdiv_eval_limit_point(
+        struct Subdiv *subdiv,
+        const int ptex_face_index,
+        const float u, const float v,
+        float r_P[3]);
+void BKE_subdiv_eval_limit_point_and_derivatives(
+        struct Subdiv *subdiv,
+        const int ptex_face_index,
+        const float u, const float v,
+        float r_P[3], float r_dPdu[3], float r_dPdv[3]);
+void BKE_subdiv_eval_limit_point_and_normal(
+        struct Subdiv *subdiv,
+        const int ptex_face_index,
+        const float u, const float v,
+        float r_P[3], float r_N[3]);
+void BKE_subdiv_eval_limit_point_and_short_normal(
+        struct Subdiv *subdiv,
+        const int ptex_face_index,
+        const float u, const float v,
+        float r_P[3], short r_N[3]);
+
+void BKE_subdiv_eval_face_varying(
+        struct Subdiv *subdiv,
+        const int face_varying_channel,
+        const int ptex_face_index,
+        const float u, const float v,
+        float r_varying[2]);
+
+/* NOTE: Expects derivatives to be correct.
+ *
+ * TODO(sergey): This is currently used together with
+ * BKE_subdiv_eval_final_point() which cas easily evaluate derivatives.
+ * Would be nice to have dispalcement evaluation function which does not require
+ * knowing derivatives ahead of a time.
+ */
+void BKE_subdiv_eval_displacement(
+        struct Subdiv *subdiv,
+        const int ptex_face_index,
+        const float u, const float v,
+        const float dPdu[3], const float dPdv[3],
+        float r_D[3]);
+
+void BKE_subdiv_eval_final_point(
+        struct Subdiv *subdiv,
+        const int ptex_face_index,
+        const float u, const float v,
+        float r_P[3]);
+
+/* Patch queries at given resolution.
+ *
+ * Will evaluate patch at uniformly distributed (u, v) coordinates on a grid
+ * of given resolution, producing resolution^2 evaluation points. The order
+ * goes as u in rows, v in columns.
+ */
+
+void BKE_subdiv_eval_limit_patch_resolution_point(
+        struct Subdiv *subdiv,
+        const int ptex_face_index,
+        const int resolution,
+        void *buffer, const int offset, const int stride);
+void BKE_subdiv_eval_limit_patch_resolution_point_and_derivatives(
+        struct Subdiv *subdiv,
+        const int ptex_face_index,
+        const int resolution,
+        void *point_buffer, const int point_offset, const int point_stride,
+        void *du_buffer, const int du_offset, const int du_stride,
+        void *dv_buffer, const int dv_offset, const int dv_stride);
+void BKE_subdiv_eval_limit_patch_resolution_point_and_normal(
+        struct Subdiv *subdiv,
+        const int ptex_face_index,
+        const int resolution,
+        void *point_buffer, const int point_offset, const int point_stride,
+        void *normal_buffer, const int normal_offset, const int normal_stride);
+void BKE_subdiv_eval_limit_patch_resolution_point_and_short_normal(
+        struct Subdiv *subdiv,
+        const int ptex_face_index,
+        const int resolution,
+        void *point_buffer, const int point_offset, const int point_stride,
+        void *normal_buffer, const int normal_offset, const int normal_stride);
+
+#endif  /* __BKE_SUBDIV_EVAL_H__ */
diff --git a/source/blender/blenkernel/CMakeLists.txt b/source/blender/blenkernel/CMakeLists.txt
index 723cbc6ea8c..0c5428aad57 100644
--- a/source/blender/blenkernel/CMakeLists.txt
+++ b/source/blender/blenkernel/CMakeLists.txt
@@ -325,6 +325,7 @@ set(SRC
 	BKE_speaker.h
 	BKE_studiolight.h
 	BKE_subdiv.h
+	BKE_subdiv_eval.h
 	BKE_subdiv_foreach.h
 	BKE_subsurf.h
 	BKE_suggestions.h
diff --git a/source/blender/blenkernel/intern/multires_reshape.c b/source/blender/blenkernel/intern/multires_reshape.c
index 3a4bb5e5980..182e957ce4a 100644
--- a/source/blender/blenkernel/intern/multires_reshape.c
+++ b/source/blender/blenkernel/intern/multires_reshape.c
@@ -42,6 +42,7 @@
 #include "BKE_modifier.h"
 #include "BKE_multires.h"
 #include "BKE_subdiv.h"
+#include "BKE_subdiv_eval.h"
 #include "BKE_subdiv_foreach.h"
 
 #include "DEG_depsgraph_query.h"
diff --git a/source/blender/blenkernel/intern/subdiv_eval.c b/source/blender/blenkernel/intern/subdiv_eval.c
index 7b234683102..f4a9e1a95fd 100644
--- a/source/blender/blenkernel/intern/subdiv_eval.c
+++ b/source/blender/blenkernel/intern/subdiv_eval.c
@@ -27,7 +27,7 @@
  *  \ingroup bke
  */
 
-#include "BKE_subdiv.h"
+#include "BKE_subdiv_eval.h"
 
 #include "DNA_mesh_types.h"
 #include "DNA_meshdata_types.h"
@@ -37,6 +37,7 @@
 #include "BLI_math_vector.h"
 
 #include "BKE_customdata.h"
+#include "BKE_subdiv.h"
 
 #include "MEM_guardedalloc.h"
 
diff --git a/source/blender/blenkernel/intern/subdiv_mesh.c b/source/blender/blen

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list