Mesh: Replace auto smooth with node group #108014

Merged
Hans Goudey merged 149 commits from HooglyBoogly/blender:refactor-mesh-corner-normals-lazy into main 2023-10-20 16:54:20 +02:00
7 changed files with 12 additions and 8 deletions
Showing only changes of commit 32fa37bf83 - Show all commits

View File

@ -443,7 +443,7 @@ static void add_orco_mesh(
static void mesh_calc_modifier_final_normals(const bool sculpt_dyntopo, Mesh *mesh_final) static void mesh_calc_modifier_final_normals(const bool sculpt_dyntopo, Mesh *mesh_final)
{ {
const eAttrDomain domain = mesh_final->normal_domain_all_info(); const eAttrDomain domain = eAttrDomain(mesh_final->normal_domain_all_info());
/* Needed as `final_datamask` is not preserved outside modifier stack evaluation. */ /* Needed as `final_datamask` is not preserved outside modifier stack evaluation. */
SubsurfRuntimeData *subsurf_runtime_data = mesh_final->runtime->subsurf_runtime_data; SubsurfRuntimeData *subsurf_runtime_data = mesh_final->runtime->subsurf_runtime_data;
@ -1056,7 +1056,7 @@ bool editbmesh_modifier_is_enabled(const Scene *scene,
static void editbmesh_calc_modifier_final_normals(Mesh *mesh_final) static void editbmesh_calc_modifier_final_normals(Mesh *mesh_final)
{ {
const eAttrDomain domain = mesh_final->normal_domain_all_info(); const eAttrDomain domain = eAttrDomain(mesh_final->normal_domain_all_info());
SubsurfRuntimeData *subsurf_runtime_data = mesh_final->runtime->subsurf_runtime_data; SubsurfRuntimeData *subsurf_runtime_data = mesh_final->runtime->subsurf_runtime_data;
if (subsurf_runtime_data) { if (subsurf_runtime_data) {

View File

@ -1478,8 +1478,6 @@ void BKE_mesh_sharp_edges_set_from_angle(Mesh *me, const float angle)
} }
bke::SpanAttributeWriter<bool> sharp_edges = attributes.lookup_or_add_for_write_span<bool>( bke::SpanAttributeWriter<bool> sharp_edges = attributes.lookup_or_add_for_write_span<bool>(
"sharp_edge", ATTR_DOMAIN_EDGE); "sharp_edge", ATTR_DOMAIN_EDGE);
const bool *sharp_edges = static_cast<const bool *>(
CustomData_get_layer_named(&me->edge_data, CD_PROP_BOOL, "sharp_edge"));
const bool *sharp_faces = static_cast<const bool *>( const bool *sharp_faces = static_cast<const bool *>(
CustomData_get_layer_named(&me->face_data, CD_PROP_BOOL, "sharp_face")); CustomData_get_layer_named(&me->face_data, CD_PROP_BOOL, "sharp_face"));
bke::mesh::edges_sharp_from_angle_set(me->faces(), bke::mesh::edges_sharp_from_angle_set(me->faces(),

View File

@ -36,6 +36,7 @@
#include "BKE_modifier.h" #include "BKE_modifier.h"
#include "BKE_multires.hh" #include "BKE_multires.hh"
#include "BKE_node.hh" #include "BKE_node.hh"
#include "BKE_node_runtime.hh"
#include "BLT_translation.h" #include "BLT_translation.h"

View File

@ -299,7 +299,7 @@ void normals_calc_face_vert(const Span<float3> positions,
/** \name Mesh Normal Calculation /** \name Mesh Normal Calculation
* \{ */ * \{ */
eAttrDomain Mesh::normal_domain_all_info() const int Mesh::normal_domain_all_info() const
{ {
using namespace blender; using namespace blender;
using namespace blender::bke; using namespace blender::bke;

View File

@ -27,6 +27,7 @@
#include "BLI_utildefines.h" #include "BLI_utildefines.h"
#include "BKE_DerivedMesh.h" #include "BKE_DerivedMesh.h"
#include "BKE_attribute.h"
#include "BKE_cdderivedmesh.h" #include "BKE_cdderivedmesh.h"
#include "BKE_context.h" #include "BKE_context.h"
#include "BKE_lattice.h" #include "BKE_lattice.h"

View File

@ -13,6 +13,8 @@
* To update preference defaults see `userdef_default.c`. * To update preference defaults see `userdef_default.c`.
*/ */
#define DNA_DEPRECATED_ALLOW
#include "MEM_guardedalloc.h" #include "MEM_guardedalloc.h"
#include "BLI_listbase.h" #include "BLI_listbase.h"

View File

@ -6,6 +6,7 @@
#include <pxr/base/tf/staticTokens.h> #include <pxr/base/tf/staticTokens.h>
#include <pxr/imaging/hd/tokens.h> #include <pxr/imaging/hd/tokens.h>
#include "BKE_attribute.h"
#include "BKE_material.h" #include "BKE_material.h"
#include "BKE_mesh.hh" #include "BKE_mesh.hh"
#include "BKE_mesh_runtime.hh" #include "BKE_mesh_runtime.hh"
@ -233,9 +234,10 @@ void MeshData::write_submeshes(const Mesh *mesh)
const Span<int> corner_verts = mesh->corner_verts(); const Span<int> corner_verts = mesh->corner_verts();
const Span<MLoopTri> looptris = mesh->looptris(); const Span<MLoopTri> looptris = mesh->looptris();
Array<float3> corner_normals(mesh->totloop); Span<float3> corner_normals;
BKE_mesh_calc_normals_split_ex( if (mesh->normal_domain_all_info() == ATTR_DOMAIN_CORNER) {
mesh, nullptr, reinterpret_cast<float(*)[3]>(corner_normals.data())); corner_normals = mesh->corner_normals();
}
const float2 *uv_map = static_cast<const float2 *>( const float2 *uv_map = static_cast<const float2 *>(
CustomData_get_layer(&mesh->loop_data, CD_PROP_FLOAT2)); CustomData_get_layer(&mesh->loop_data, CD_PROP_FLOAT2));