Adjust LOD selection metrics to use attribute error

- Revert meshoptimizer patch; the metric used for LOD selection now
incorporates attribute error
- Since LOD selection is now aware of attribute deviation, we don't
need to use a higher normal weight
- To prevent normal creases from creating input triangles with very
large normal deviation, reduce default normal merge threshold
- Since we now use combined metric to select LODs, we never need LODs
with error>1 as these should not be selected if the mesh is visible.
This commit is contained in:
Arseny Kapoulkine
2025-05-18 17:38:54 +03:00
parent c3ae6aa10b
commit 6190d412d3
4 changed files with 6 additions and 19 deletions

View File

@ -1,13 +0,0 @@
diff --git a/thirdparty/meshoptimizer/simplifier.cpp b/thirdparty/meshoptimizer/simplifier.cpp
index af64cbda49..8a7072fe4e 100644
--- a/thirdparty/meshoptimizer/simplifier.cpp
+++ b/thirdparty/meshoptimizer/simplifier.cpp
@@ -2048,7 +2048,7 @@ size_t meshopt_simplifyEdge(unsigned int* destination, const unsigned int* indic
// result_error is quadratic; we need to remap it back to linear
if (out_result_error)
- *out_result_error = sqrtf(result_error) * error_scale;
+ *out_result_error = sqrtf(vertex_error) * error_scale;
return result_count;
}

View File

@ -2048,7 +2048,7 @@ size_t meshopt_simplifyEdge(unsigned int* destination, const unsigned int* indic
// result_error is quadratic; we need to remap it back to linear
if (out_result_error)
*out_result_error = sqrtf(vertex_error) * error_scale;
*out_result_error = sqrtf(result_error) * error_scale;
return result_count;
}