/** * MassiveDataRenderer - Optimized renderer for 100M+ points * * Features: * - Chunked buffer upload with progress * - Batched draw calls to avoid GPU timeout * - LOD (Level of Detail) with GPU downsampling * - Storage buffers for instanced rendering * - Streaming data generation */ export interface MassiveDataConfig { maxPointsPerBatch: number; chunkSizeBytes: number; enableLOD: boolean; lodLevels: number; onProgress?: (phase: string, progress: number) => void; onStats?: (stats: RenderStats) => void; } export interface RenderStats { totalPoints: number; renderedPoints: number; bufferSizeMB: number; uploadTimeMs: number; frameTimeMs: number; fps: number; lodLevel: number; batchCount: number; } export interface LODLevel { buffer: any; pointCount: number; factor: number; } export declare class MassiveDataRenderer { private device; private context; private format; private config; private linePipeline; private lineBindGroupLayout; private uniformBuffer; private storageBuffer; private bindGroup; private totalPoints; private lodLevels; private currentLOD; private lastFrameTime; private frameCount; private lastFpsTime; private currentFps; private viewport; constructor(device: any, // GPUDevice context: any, // GPUCanvasContext format: any, // GPUTextureFormat config?: Partial); /** * Initialize render pipelines */ init(): Promise; /** * Set viewport dimensions */ setViewport(width: number, height: number): void; /** * Upload data with chunked progress */ uploadData(data: Float32Array): Promise; /** * Build LOD levels using GPU downsampling */ private buildLOD; /** * Select appropriate LOD level based on visible range */ selectLOD(visibleRange: number, totalRange: number): number; /** * Render frame with batching */ render(options: { bounds: { xMin: number; xMax: number; yMin: number; yMax: number; }; color?: [number, number, number, number]; lineWidth?: number; time?: number; lodLevel?: number; }): void; /** * Generate streaming sine wave data */ static generateSineWaveData(pointCount: number, onProgress?: (progress: number) => void): Promise; /** * Get current stats */ getStats(): RenderStats; /** * Get available LOD levels */ getLODLevels(): { level: number; pointCount: number; factor: number; }[]; /** * Cleanup resources */ destroy(): void; }