Mesh: Replace auto smooth with node group #108014
|
@ -336,30 +336,31 @@ static void compute_normal_outputs(const Mesh &mesh,
|
|||
{
|
||||
switch (mesh.normal_domain_all_info()) {
|
||||
case ATTR_DOMAIN_POINT: {
|
||||
bke::mesh_surface_sample::sample_point_normals(mesh.corner_verts(),
|
||||
mesh.looptris(),
|
||||
looptri_indices,
|
||||
bary_coords,
|
||||
mesh.vert_normals(),
|
||||
IndexMask(looptri_indices.index_range()),
|
||||
r_normals);
|
||||
const Span<int> corner_verts = mesh.corner_verts();
|
||||
const Span<MLoopTri> looptris = mesh.looptris();
|
||||
const Span<float3> vert_normals = mesh.vert_normals();
|
||||
threading::parallel_for(bary_coords.index_range(), 512, [&](const IndexRange range) {
|
||||
bke::mesh_surface_sample::sample_point_normals(
|
||||
corner_verts, looptris, looptri_indices, bary_coords, vert_normals, range, r_normals);
|
||||
});
|
||||
break;
|
||||
}
|
||||
case ATTR_DOMAIN_FACE: {
|
||||
bke::mesh_surface_sample::sample_face_attribute(mesh.looptri_polys(),
|
||||
looptri_indices,
|
||||
VArray<float3>::ForSpan(mesh.poly_normals()),
|
||||
IndexMask(looptri_indices.index_range()),
|
||||
r_normals);
|
||||
const Span<int> looptri_polys = mesh.looptri_polys();
|
||||
VArray<float3> poly_normals = VArray<float3>::ForSpan(mesh.poly_normals());
|
||||
threading::parallel_for(bary_coords.index_range(), 512, [&](const IndexRange range) {
|
||||
bke::mesh_surface_sample::sample_face_attribute(
|
||||
looptri_polys, looptri_indices, poly_normals, range, r_normals);
|
||||
});
|
||||
break;
|
||||
}
|
||||
case ATTR_DOMAIN_CORNER: {
|
||||
bke::mesh_surface_sample::sample_corner_normals(mesh.looptris(),
|
||||
looptri_indices,
|
||||
bary_coords,
|
||||
mesh.corner_normals(),
|
||||
IndexMask(looptri_indices.index_range()),
|
||||
r_normals);
|
||||
const Span<MLoopTri> looptris = mesh.looptris();
|
||||
const Span<float3> corner_normals = mesh.corner_normals();
|
||||
threading::parallel_for(bary_coords.index_range(), 512, [&](const IndexRange range) {
|
||||
bke::mesh_surface_sample::sample_corner_normals(
|
||||
looptris, looptri_indices, bary_coords, corner_normals, range, r_normals);
|
||||
});
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
|
|
@ -512,12 +512,12 @@ static void do_multires_bake(MultiresBakeRender *bkr,
|
|||
const blender::Span<int> corner_verts = temp_mesh->corner_verts();
|
||||
const blender::Span<blender::float3> vert_normals = temp_mesh->vert_normals();
|
||||
const blender::Span<blender::float3> poly_normals = temp_mesh->poly_normals();
|
||||
const blender::Span<blender::float3> corner_normals = temp_mesh->corner_normals();
|
||||
const blender::Span<MLoopTri> looptris = temp_mesh->looptris();
|
||||
const blender::Span<int> looptri_polys = temp_mesh->looptri_polys();
|
||||
|
||||
if (require_tangent) {
|
||||
if (CustomData_get_layer_index(&dm->loopData, CD_TANGENT) == -1) {
|
||||
const blender::Span<blender::float3> corner_normals = temp_mesh->corner_normals();
|
||||
BKE_mesh_calc_loop_tangent_ex(
|
||||
reinterpret_cast<const float(*)[3]>(positions.data()),
|
||||
polys,
|
||||
|
|
Loading…
Reference in New Issue