/** * MeshletGenerator — Nanite-style mesh cluster generator. * * Splits a mesh into small, spatially-coherent triangle clusters * (meshlets) of bounded size. Each meshlet can be independently * culled, streamed, and LOD-transitioned. * * Key properties: * - Max 64 vertices, 124 triangles per meshlet (GPU-friendly) * - Spatial locality via greedy triangle growing * - Per-meshlet bounding sphere for efficient culling * - Compatible with mesh shaders (Task→Mesh pipeline) * * @see HS-5 — Meshlet cluster generator directive * @see W.080 — Draft→Mesh→Simulation pipeline */ import type { MeshData } from './LODGenerator'; /** Configuration for meshlet generation */ export interface MeshletGeneratorOptions { /** Maximum vertices per meshlet (default: 64) */ maxVertices: number; /** Maximum triangles per meshlet (default: 124) */ maxTriangles: number; /** Cone culling threshold for backface culling (0-1, default: 0.9) */ coneWeight: number; } /** A single meshlet — a small, bounded cluster of triangles */ export interface Meshlet { /** Unique ID within the mesh */ id: number; /** Indices into the meshlet's local vertex buffer */ triangleIndices: Uint32Array; /** Global vertex indices referenced by this meshlet */ vertexIndices: Uint32Array; /** Number of triangles in this meshlet */ triangleCount: number; /** Number of vertices in this meshlet */ vertexCount: number; /** Bounding sphere center [x, y, z] */ boundCenter: [number, number, number]; /** Bounding sphere radius */ boundRadius: number; /** Normal cone axis [x, y, z] for backface culling */ coneAxis: [number, number, number]; /** Normal cone cutoff (dot product threshold) */ coneCutoff: number; } /** Result of meshlet generation */ export interface MeshletGenerationResult { /** Generated meshlets */ meshlets: Meshlet[]; /** Total triangle count across all meshlets */ totalTriangles: number; /** Total vertex references across all meshlets */ totalVertexRefs: number; /** Source mesh triangle count */ sourceTriangles: number; /** Generation time in ms */ generationTimeMs: number; } export declare const DEFAULT_MESHLET_OPTIONS: MeshletGeneratorOptions; export declare class MeshletGenerator { private options; constructor(options?: Partial); /** * Generate meshlets from input mesh data. * Uses greedy spatial growing to build bounded clusters. */ generate(mesh: MeshData): MeshletGenerationResult; /** Get current options */ getOptions(): MeshletGeneratorOptions; } /** Factory function */ export declare function createMeshletGenerator(options?: Partial): MeshletGenerator; /** Convenience: generate meshlets in one call */ export declare function generateMeshlets(mesh: MeshData, options?: Partial): MeshletGenerationResult; //# sourceMappingURL=MeshletGenerator.d.ts.map