/**
 * three-virtual-geometry: Virtual geometry for three.js WebGPU.
 *
 * Quick start:
 *
 *   import { VirtualGeometry } from 'three-virtual-geometry';
 *
 *   const vg = new VirtualGeometry();   // once
 *   await vg.add(gltf.scene);         // converts its static meshes in place (materials, textures, instancing)
 *   scene.add(gltf.scene);
 *   renderer.render(scene, camera);       // LOD selection and culling run automatically before each render
 *
 * Lower level: `buildVirtualMeshCached(fromBufferGeometry(geometry))` once per mesh, then
 * `vg.createMesh(data, material, { matrices })` (16 floats per instance) and add it to a scene.
 */
export { buildVirtualMesh } from './core/preprocess/buildVirtualMesh.js';
export type { VirtualMeshBuildOptions, VirtualMeshData, VirtualMeshSource } from './core/preprocess/buildVirtualMesh.js';
export { partitionMeshlets } from './core/preprocess/partition.js';
export { buildVirtualMeshCached, clearVirtualMeshCache, virtualMeshCacheKey, VG_BUILD_VERSION } from './core/io/cache.js';
export type { VirtualGeometryCacheOptions, VirtualGeometryCachedBuildOptions } from './core/io/cache.js';
export { decodeVirtualMesh, encodeVirtualMesh, loadVirtualMesh, VirtualMeshFormatError, VG_FORMAT_VERSION } from './core/io/serialize.js';
export type { VirtualMeshEncodeOptions } from './core/io/serialize.js';
export { instanceGuaranteedRange, instanceMeshletRange, selectBlendCut, selectCut, verifyCutCoverage, verifyCutOverlap } from './core/runtime/cut.js';
export { lodFadeRange, LOD_FADE_STEPS } from './core/runtime/lodBlend.js';
export type { CutView } from './core/runtime/cut.js';
export { VirtualMesh, vgWorldNormal, vgInstanceOrigin } from './core/runtime/VirtualMesh.js';
export { vgUv, vgTexture, vgNormalMap, bindVirtualGeometryTextures } from './core/runtime/vgMaterial.js';
export { toNodeMaterial, canConvertToNodeMaterial } from './core/import/toNodeMaterial.js';
export { virtualMeshesFromObject3D, collectVirtualGeometryGroups, VirtualGeometryImport } from './core/import/fromObject3D.js';
export type { VirtualGeometryImportOptions, VirtualGeometryImportGroup, VirtualGeometryBuilder } from './core/import/fromObject3D.js';
export type { VirtualMeshInstances, VirtualMeshOptions } from './core/runtime/VirtualMesh.js';
export { VirtualGeometry } from './core/runtime/VirtualGeometry.js';
export type { VirtualGeometryStats, VirtualGeometryOptions } from './core/runtime/VirtualGeometry.js';
export { virtualGeometryLimits } from './core/runtime/limits.js';
export { VG_DEBUG_MODES, MAX_MESHLET_TRIANGLES, MAX_MESHLET_VERTICES } from './core/constants.js';
export { fromBufferGeometry, mergeSources } from './source.js';
export type { FromGeometryOptions } from './source.js';
