/*! * Copyright (c) Microsoft Corporation. * Licensed under the MIT License. */ import { vec2, vec3 } from "gl-matrix"; import { IRendererOptionsBase, RendererBase } from "../renderer.js"; import { Core } from "../../main.js"; import { Config } from "./config.js"; import { Light, RectLight } from "./light.js"; import { IImageVisual, ImageBase } from "../../components/image.js"; import { Font, IFontVisual } from "../../font.js"; import { FontVisual } from "./font.js"; import { ImageVisual } from "./image.js"; import { ILabelSetVisual, LabelSet } from "../../components/labels.js"; import { LabelSetVisual } from "./labels.js"; import { TransitionBuffer } from "./buffer.js"; import { Ground } from "./ground.js"; import { Material } from "./material.js"; export interface IRendererOptions extends IRendererOptionsBase { } export interface IStandardLightOptions { azimuth: number; altitude: number; pitch: number; yaw: number; distance: number; size: vec2; color: vec3; } export declare class Main extends RendererBase { private _hasWorldChanged; protected _options: IRendererOptions; private _adapter; private _device; private _queue; private _context; private _frameCount; get frameCount(): number; protected _startTime: number; private _duration; get duration(): number; private _hittables; private _presentationFormat; private _worldCreated; private _maxComputeWorkgroupsPerDimension; protected _config: Config; get config(): Config; private _position; private _right; private _up; private _forward; private _modelPosition; private _fullscreenQuadUniformBuffer; private _fullscreenQuadUniformBufferData; private _fullscreenQuadPipeline; private _fullscreenQuadBindGroup; private _fullscreenQuadHdrPipeline; private _fullscreenQuadDepthPipeline; private _fullscreenQuadNormalPipeline; private _fullscreenQuadDepthMultisampledPipeline; private _fullscreenQuadNormalMultisampledPipeline; private _fullscreenQuadSegmentPipeline; private _fullscreenQuadEdgePipeline; private _computeUniformBuffer; private _computeUniformBufferData; private _depthMinMaxBuffer; private _depthMinMaxResultBuffer; private _computeBindGroup; private _clearBindGroup; private _computePipeline; private _computeDepthNormalPipeline; private _computeDepthNormalMultisampledPipeline; private _computeSegmentPipeline; private _clearPipeline; private _hittableBuffer; private _hittableBufferData; private _textureBuffer; private _textureBufferData; private _lightBuffer; private _lightBufferData; private _linearBVHNodeBuffer; private _linearBVHNodeBufferData; private _sampler; private _backgroundTexture; private _texture; private _atlasTexture; private _tilesX; private _tilesY; private _tileOffsetX; private _tileOffsetY; materials: Material[]; private _areLightsInitialized; private _haveLightsChanged; private _lights; set lights(value: Light[]); get lights(): Light[]; fonts: { [key: string]: FontVisual; }; labelSets: LabelSetVisual[]; images: ImageVisual[]; transitionBuffers: TransitionBuffer[]; ground: Ground; restart(): void; constructor(options?: IRendererOptions); initialize(core: Core): void; private _initializeAPI; private _initializeResources; get isSupported(): boolean; private _createWorld; private _createLights; standardLighting(lights?: IStandardLightOptions[]): RectLight[]; private _getHittables; createFontVisual(font: Font): IFontVisual; createImageVisual(image: ImageBase): IImageVisual; createLabelSetVisual(labelSet: LabelSet): ILabelSetVisual; createTransitionBuffer(ids: Uint32Array): TransitionBuffer; private _resizeBackings; private _previousRenderMode; update(elapsedTime: number): void; render(elapsedTime: number): Promise; clear(): void; private _encodeCommands; protected _resize(width: number, height: number): void; }