import type { Vector3 } from '@holoscript/core'; /** * DecalBatcher.ts * * Instanced decal rendering: GPU batching, per-texture * grouping, LOD selection, frustum culling, and draw stats. * * @module rendering */ export interface DecalInstance { id: string; textureId: string; position: [number, number, number]; scale: Vector3; rotation: { x: number; y: number; z: number; w: number; }; opacity: number; lodLevel: number; } export interface DrawBatch { textureId: string; instances: DecalInstance[]; instanceCount: number; } export interface BatchStats { totalInstances: number; totalBatches: number; culledCount: number; drawnCount: number; } export declare class DecalBatcher { private instances; private batches; private stats; private maxLOD; private lodDistances; setLODDistances(distances: number[]): void; getLODDistances(): number[]; addInstance(instance: DecalInstance): void; removeInstance(id: string): boolean; clear(): void; getInstanceCount(): number; computeLOD(distance: number): number; buildBatches(cameraPos: Vector3, frustumTest?: (pos: DecalInstance['position']) => boolean): DrawBatch[]; getStats(): BatchStats; } //# sourceMappingURL=DecalBatcher.d.ts.map