[Bf-blender-cvs] [f177eee7ace] temp-vert-normals-cleanup: Fix failing subdivision test
Hans Goudey
noreply at git.blender.org
Sat Nov 13 21:00:42 CET 2021
Commit: f177eee7ace8b88cdb9558bbf156921339e5b58d
Author: Hans Goudey
Date: Sat Nov 13 14:00:21 2021 -0600
Branches: temp-vert-normals-cleanup
https://developer.blender.org/rBf177eee7ace8b88cdb9558bbf156921339e5b58d
Fix failing subdivision test
===================================================================
M source/blender/blenkernel/BKE_mesh.h
M source/blender/blenkernel/intern/subdiv_mesh.c
===================================================================
diff --git a/source/blender/blenkernel/BKE_mesh.h b/source/blender/blenkernel/BKE_mesh.h
index 7df1377f0d3..c130a5c56bc 100644
--- a/source/blender/blenkernel/BKE_mesh.h
+++ b/source/blender/blenkernel/BKE_mesh.h
@@ -635,7 +635,7 @@ void BKE_mesh_calc_edges_tessface(struct Mesh *mesh);
/* In DerivedMesh.cc */
void BKE_mesh_wrapper_deferred_finalize(struct Mesh *me_eval,
- const CustomData_MeshMasks *cd_mask_finalize);
+ const struct CustomData_MeshMasks *cd_mask_finalize);
/* **** Depsgraph evaluation **** */
diff --git a/source/blender/blenkernel/intern/subdiv_mesh.c b/source/blender/blenkernel/intern/subdiv_mesh.c
index e29e88a17b5..3490e42e617 100644
--- a/source/blender/blenkernel/intern/subdiv_mesh.c
+++ b/source/blender/blenkernel/intern/subdiv_mesh.c
@@ -21,6 +21,7 @@
* \ingroup bke
*/
+#include "BKE_mesh.h"
#include "BKE_subdiv_mesh.h"
#include "atomic_ops.h"
@@ -100,14 +101,15 @@ static void subdiv_mesh_ctx_cache_custom_data_layers(SubdivMeshContext *ctx)
static void subdiv_mesh_prepare_accumulator(SubdivMeshContext *ctx, int num_vertices)
{
- if (!ctx->can_evaluate_normals && !ctx->have_displacement) {
- return;
- }
+ /* TODO: Even though #can_evaluated_normals is false, a buffer for the normals is necessary,
+ * since previously the code was evaluating into Mert.no directly. */
+ ctx->accumulated_normals = BKE_mesh_vertex_normals_for_write(ctx->subdiv_mesh);
/* TODO(sergey): Technically, this is overallocating, we don't need memory
* for an inner subdivision vertices. */
- ctx->accumulated_normals = (float(*)[3])CustomData_add_layer(
- &ctx->subdiv_mesh->vdata, CD_NORMAL, CD_DEFAULT, NULL, num_vertices);
memset(ctx->accumulated_normals, 0, sizeof(float[3]) * num_vertices);
+ if (!ctx->can_evaluate_normals && !ctx->have_displacement) {
+ return;
+ }
ctx->accumulated_counters = MEM_calloc_arrayN(
num_vertices, sizeof(*ctx->accumulated_counters), "subdiv accumulated counters");
}
More information about the Bf-blender-cvs
mailing list