feat(meshlet): refactor meshlet pipeline & add benchmark

Refactor meshlet build pipeline for robustness and performance.
Rename DxcShaderCompiler to DXCShaderCompiler. Enhance meshlet
data structures with bounds and LOD info. Add fallback mesh
simplification. Remove obsolete MeshRenderPass. Add
MeshoptBenchmark for meshlet build performance. Update mesh
import utilities for correct handedness. Minor bug fixes and
code cleanups.
This commit is contained in:
2026-04-02 17:50:44 +09:00
parent e32a24739d
commit d03eb659fa
12 changed files with 465 additions and 408 deletions

View File

@@ -23,12 +23,6 @@ internal static class MeshUtility
return new float4(t.xyz, w);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private static float3 RightHandToLeft(float3 p)
{
return new float3(p.x, p.y, -p.z);
}
public static unsafe Result LoadMesh(string filePath, Allocator allocator, out UnsafeList<Vertex> vertices, out UnsafeList<uint> indices)
{
vertices = default;
@@ -47,18 +41,8 @@ internal static class MeshUtility
var load_Opts = new ufbx_load_opts
{
target_axes = new ufbx_coordinate_axes
{
right = ufbx_coordinate_axis.UFBX_COORDINATE_AXIS_POSITIVE_X,
up = ufbx_coordinate_axis.UFBX_COORDINATE_AXIS_POSITIVE_Y,
front = ufbx_coordinate_axis.UFBX_COORDINATE_AXIS_POSITIVE_Z
},
obj_axes = new ufbx_coordinate_axes
{
right = ufbx_coordinate_axis.UFBX_COORDINATE_AXIS_POSITIVE_X,
up = ufbx_coordinate_axis.UFBX_COORDINATE_AXIS_POSITIVE_Y,
front = ufbx_coordinate_axis.UFBX_COORDINATE_AXIS_NEGATIVE_Z
},
target_axes = ufbx_coordinate_axes.left_handed_y_up,
obj_axes = ufbx_coordinate_axes.right_handed_y_up,
// Force X-axis mirroring to correctly convert handedness to Left-Handed,
// while preserving correct left/right orientation when viewed from the front.
handedness_conversion_axis = ufbx_mirror_axis.UFBX_MIRROR_AXIS_X,