Fix errors in new Blur node

This commit is contained in:
Hans Goudey 2022-12-08 12:51:03 -06:00
parent a9b193f663
commit 10a5b1663d
1 changed files with 11 additions and 11 deletions

View File

@ -159,34 +159,34 @@ static Array<Vector<int>> build_edge_to_edge_by_vert_map(const Span<MEdge> edges
}
static Array<Vector<int>> build_face_to_edge_by_loop_map(const Span<MPoly> polys,
const Span<MLoop> loops,
const Span<int> corner_edges,
const int edges_num)
{
Array<Vector<int>> map(edges_num);
for (const int i : polys.index_range()) {
const MPoly &poly = polys[i];
for (const MLoop &loop : loops.slice(poly.loopstart, poly.totloop)) {
map[loop.e].append(i);
for (const int edge : corner_edges.slice(poly.loopstart, poly.totloop)) {
map[edge].append(i);
}
}
return map;
}
static Array<Vector<int>> build_face_to_face_by_edge_map(const Span<MPoly> polys,
const Span<MLoop> loops,
const Span<int> corner_edges,
const int edges_num,
const IndexMask poly_mask)
{
Array<Vector<int>> map(polys.size());
Array<Vector<int>> faces_by_edge = build_face_to_edge_by_loop_map(polys, loops, edges_num);
Array<Vector<int>> faces_by_edge = build_face_to_edge_by_loop_map(
polys, corner_edges, edges_num);
threading::parallel_for(poly_mask.index_range(), 1024, [&](IndexRange range) {
for (const int poly_i : poly_mask.slice(range)) {
const MPoly &poly = polys[poly_i];
for (const MLoop &loop : loops.slice(poly.loopstart, poly.totloop)) {
const int edge_i = loop.e;
if (faces_by_edge[edge_i].size() > 1) {
for (const int neighbor : faces_by_edge[edge_i]) {
for (const int edge : corner_edges.slice(poly.loopstart, poly.totloop)) {
if (faces_by_edge[edge].size() > 1) {
for (const int neighbor : faces_by_edge[edge]) {
if (neighbor != poly_i) {
map[poly_i].append(neighbor);
}
@ -215,9 +215,9 @@ static Array<Vector<int>> create_mesh_map(const Mesh &mesh,
}
case ATTR_DOMAIN_FACE: {
const Span<MPoly> polys = mesh.polys();
const Span<MLoop> loops = mesh.loops();
const Span<int> corner_edges = mesh.corner_edges();
const int edges_num = mesh.totedge;
return build_face_to_face_by_edge_map(polys, loops, edges_num, mask);
return build_face_to_face_by_edge_map(polys, corner_edges, edges_num, mask);
}
case ATTR_DOMAIN_CORNER: {
return {};