export interface InstancedObject { /** Unique instance ID */ id: string; /** Batch key (geometry + material) */ batchKey: string; /** Instance index in batch */ instanceIndex: number; /** Transform matrix (16 floats) */ matrix: Float32Array; /** Material color override */ color?: [number, number, number]; /** Visibility flag */ visible: boolean; } export interface InstanceBatch { /** Batch identifier */ key: string; /** Geometry type */ geometryType: string; /** Material type */ materialType: string; /** Three.js InstancedMesh */ instancedMesh: any; /** Maximum instances */ maxInstances: number; /** Current instance count */ count: number; /** Instance ID → Index mapping */ instanceMap: Map; /** Free instance indices (for reuse) */ freeIndices: number[]; /** Needs matrix update */ needsUpdate: boolean; } export interface InstancedRenderingStats { /** Total batches */ batchCount: number; /** Total instances across all batches */ totalInstances: number; /** Draw calls (one per batch) */ drawCalls: number; /** Memory usage (approximate, MB) */ memoryUsage: number; /** Performance improvement vs non-instanced */ improvement: string; } /** * Instanced Rendering Manager * Automatically batches similar objects for GPU instancing */ export declare class InstancedRenderer { private batches; private objects; private scene; private maxInstancesPerBatch; private enabled; constructor(scene: any, maxInstancesPerBatch?: number); /** * Add object to instanced rendering */ addInstance(id: string, geometryType: string, materialType: string, position: [number, number, number], rotation?: [number, number, number], scale?: [number, number, number], color?: [number, number, number]): boolean; /** * Remove instance from rendering */ removeInstance(id: string): boolean; /** * Update instance transform */ updateInstance(id: string, position?: [number, number, number], rotation?: [number, number, number], scale?: [number, number, number]): boolean; /** * Update instance color */ updateInstanceColor(id: string, color: [number, number, number]): boolean; /** * Update all batches (call once per frame) */ update(): void; /** * Create a new batch */ private createBatch; /** * Create geometry by type */ private createGeometry; /** * Create material by type */ private createMaterial; /** * Create transform matrix from position, rotation, scale */ private createTransformMatrix; /** * Convert Float32Array to THREE.Matrix4 */ private arrayToMatrix4; /** * Extract transform from matrix */ private matrixToTransform; /** * Get statistics */ getStatistics(): InstancedRenderingStats; /** * Enable/disable instanced rendering */ setEnabled(enabled: boolean): void; /** * Clear all batches */ clear(): void; /** * Get batch for inspection */ getBatch(key: string): InstanceBatch | undefined; /** * Get all batch keys */ getBatchKeys(): string[]; } //# sourceMappingURL=InstancedRenderer.d.ts.map