Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2018-09-04 16:26:58 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2018-09-04 16:34:52 +0300
commit916edab639616001c04b091d00d30e65d033f332 (patch)
treea45485fa77c1be8525c6845f03fab968239b7835 /source
parentf1508cc8d56489d5ab024531beb6056470beb0a4 (diff)
Subdiv: Move evaluation functionality to own header
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/BKE_subdiv.h88
-rw-r--r--source/blender/blenkernel/BKE_subdiv_eval.h127
-rw-r--r--source/blender/blenkernel/CMakeLists.txt1
-rw-r--r--source/blender/blenkernel/intern/multires_reshape.c1
-rw-r--r--source/blender/blenkernel/intern/subdiv_eval.c3
-rw-r--r--source/blender/blenkernel/intern/subdiv_mesh.c1
6 files changed, 132 insertions, 89 deletions
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/blenkernel/intern/subdiv_mesh.c
index a719fe9c23b..7e8dd06ce9b 100644
--- a/source/blender/blenkernel/intern/subdiv_mesh.c
+++ b/source/blender/blenkernel/intern/subdiv_mesh.c
@@ -42,6 +42,7 @@
#include "BKE_mesh.h"
#include "BKE_key.h"
+#include "BKE_subdiv_eval.h"
#include "BKE_subdiv_foreach.h"
#include "MEM_guardedalloc.h"