From 03606eec73d88237c3514a31f42e7ff6353a0488 Mon Sep 17 00:00:00 2001 From: Arseny Kapoulkine Date: Sat, 15 Jul 2023 16:38:59 -0700 Subject: [PATCH] simplify: Use next[e+1] instead of next[next[e]] This makes the code more consistent between simplifier and indexgenerator (which also uses a 4-element next LUT for one algorithm), and results in a minor (0.1%) reduction in executed instructions on some meshes. --- src/simplifier.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/simplifier.cpp b/src/simplifier.cpp index 864fc8f78..0cd9d0635 100644 --- a/src/simplifier.cpp +++ b/src/simplifier.cpp @@ -743,7 +743,7 @@ static void fillEdgeQuadrics(Quadric* vertex_quadrics, const unsigned int* indic { for (size_t i = 0; i < index_count; i += 3) { - static const int next[3] = {1, 2, 0}; + static const int next[4] = {1, 2, 0, 1}; for (int e = 0; e < 3; ++e) { @@ -769,7 +769,7 @@ static void fillEdgeQuadrics(Quadric* vertex_quadrics, const unsigned int* indic if (kHasOpposite[k0][k1] && remap[i1] > remap[i0]) continue; - unsigned int i2 = indices[i + next[next[e]]]; + unsigned int i2 = indices[i + next[e + 1]]; // we try hard to maintain border edge geometry; seam edges can move more freely // due to topological restrictions on collapses, seam quadrics slightly improves collapse structure but aren't critical