/** * ThreeJSRenderer.ts * * Three.js implementation of RuntimeRenderer. * Uses R3FCompiler's material presets and type mappings for runtime rendering. */ import { BaseRuntimeRenderer, type RenderableObject, type RenderableLight, type RenderableCamera, type ParticleSystem, type PostProcessingEffect, type RendererConfig, type RendererStatistics } from './RuntimeRenderer'; import type { HoloComposition } from '@holoscript/core'; interface TransformSpec { position?: [number, number, number]; rotation?: [number, number, number]; scale?: [number, number, number]; } /** * Three.js Runtime Renderer * * Renders HoloScript compositions using Three.js at runtime. * Extracts rendering knowledge from R3FCompiler for direct execution. */ export declare class ThreeJSRenderer extends BaseRuntimeRenderer { private scene; private renderer; private activeCamera; private meshes; private particleGeometries; private particleMeshes; private lightObjects; private animationFrameId?; private clock; private composer; private renderPass; private bloomPass; private bokehPass; private ssaoPass; private enabledEffects; private instancedMeshes; private instanceMatrices; private instanceCounts; private maxInstancesPerType; private enableInstancing; private stats; constructor(config?: RendererConfig); /** * Initialize renderer with composition */ initialize(composition: HoloComposition, config?: RendererConfig): void; /** * Initialize Three.js scene (lazy loaded) */ private initializeThreeJS; /** * Load composition into Three.js scene */ private loadComposition; /** * Add default lighting to scene */ private addDefaultLighting; /** * Start rendering loop */ start(): void; /** * Stop rendering loop */ stop(): void; /** * Animation loop */ private animate; /** * Update scene */ update(_deltaTime: number): void; /** * Render frame */ render(): void; /** * Add object to scene */ addObject(object: RenderableObject): void; /** * Create geometry from specification */ private static getThreeLib; private createGeometry; /** * Create material using R3FCompiler presets */ private createMaterial; /** * Remove object from scene */ removeObject(objectId: string): void; /** * Update object transform */ updateObjectTransform(objectId: string, transform: TransformSpec): void; /** * Add particle system */ addParticleSystem(system: ParticleSystem): void; /** * Update particle system */ updateParticleSystem(systemId: string, positions: Float32Array, colors?: Float32Array): void; /** * Remove particle system */ removeParticleSystem(systemId: string): void; /** * Add light to scene */ addLight(light: RenderableLight): void; /** * Update camera */ updateCamera(camera: RenderableCamera): void; /** * Initialize post-processing pipeline */ private initializePostProcessing; /** * Enable post-processing effect */ enablePostProcessing(effect: PostProcessingEffect): void; /** * Enable/disable frustum culling optimization * Automatically enabled by Three.js, but can be toggled per object */ enableFrustumCulling(enable: boolean): void; /** * Optimize geometry by merging vertices and reducing complexity * This is a simple optimization that can reduce memory usage */ optimizeGeometries(): void; /** * Set Level of Detail (LOD) for objects based on distance from camera * Objects far from camera use simpler geometry */ updateLOD(): void; /** * Enable automatic performance optimizations * Runs optimization passes periodically */ private performanceOptimizationFrame; enableAutoOptimization(enable: boolean): void; /** * Get renderer statistics */ getStatistics(): RendererStatistics; /** * Resize renderer */ resize(width: number, height: number): void; /** * Dispose renderer and free resources */ dispose(): void; } export {}; //# sourceMappingURL=ThreeJSRenderer.d.ts.map