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)
{
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. */
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)
{
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;
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>(
"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 *>(
CustomData_get_layer_named(&me->face_data, CD_PROP_BOOL, "sharp_face"));
bke::mesh::edges_sharp_from_angle_set(me->faces(),

View File

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

View File

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

View File

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

View File

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

View File

@ -6,6 +6,7 @@
#include <pxr/base/tf/staticTokens.h>
#include <pxr/imaging/hd/tokens.h>
#include "BKE_attribute.h"
#include "BKE_material.h"
#include "BKE_mesh.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<MLoopTri> looptris = mesh->looptris();
Array<float3> corner_normals(mesh->totloop);
BKE_mesh_calc_normals_split_ex(
mesh, nullptr, reinterpret_cast<float(*)[3]>(corner_normals.data()));
Span<float3> corner_normals;
if (mesh->normal_domain_all_info() == ATTR_DOMAIN_CORNER) {
corner_normals = mesh->corner_normals();
}
const float2 *uv_map = static_cast<const float2 *>(
CustomData_get_layer(&mesh->loop_data, CD_PROP_FLOAT2));