@itwin/core-frontend
Version:
iTwin.js frontend components
60 lines • 3.13 kB
TypeScript
/** @packageDocumentation
* @module WebGL
*/
import { ContourDisplay } from "@itwin/core-common";
import { SceneContext } from "../../../ViewContext";
import { ViewRect } from "../../../common/ViewRect";
import { Pixel } from "../../../render/Pixel";
import { GraphicList } from "../../../render/RenderGraphic";
import { RenderMemory } from "../../../render/RenderMemory";
import { CachedGeometry } from "./CachedGeometry";
import { WebGLDisposable } from "./Disposable";
import { FrameBuffer } from "./FrameBuffer";
import { RenderCommands } from "./RenderCommands";
import { SolarShadowMap } from "./SolarShadowMap";
import { Target } from "./Target";
import { TextureHandle } from "./Texture";
import { Primitive } from "./Primitive";
import { ShaderProgramExecutor } from "./ShaderProgram";
import { EyeDomeLighting } from "./EDL";
export declare function collectTextureStatistics(texture: TextureHandle | undefined, stats: RenderMemory.Statistics): void;
export declare function collectGeometryStatistics(geom: CachedGeometry | undefined, stats: RenderMemory.Statistics): void;
interface ContourPixels {
display: ContourDisplay;
data: Uint32Array;
zLow: number;
zHigh: number;
}
/** Orchestrates rendering of the scene on behalf of a Target.
* This base class exists only so we don't have to export all the types of the shared Compositor members like Textures, FrameBuffers, etc.
* @internal
*/
export declare abstract class SceneCompositor implements WebGLDisposable, RenderMemory.Consumer {
readonly target: Target;
readonly solarShadowMap: SolarShadowMap;
readonly eyeDomeLighting: EyeDomeLighting;
protected _needHiddenEdges: boolean;
abstract get isDisposed(): boolean;
abstract [Symbol.dispose](): void;
abstract preDraw(): void;
abstract draw(_commands: RenderCommands): void;
abstract drawForReadPixels(_commands: RenderCommands, sceneOverlays: GraphicList, worldOverlayDecorations: GraphicList | undefined, viewOverlayDecorations: GraphicList | undefined): void;
abstract readPixels(rect: ViewRect, selector: Pixel.Selector): Pixel.Buffer | undefined;
abstract readDepthAndOrder(rect: ViewRect): Uint8Array | undefined;
abstract readContours(rect: ViewRect): ContourPixels | undefined;
abstract readFeatureIds(rect: ViewRect): Uint8Array | undefined;
abstract updateSolarShadows(context: SceneContext | undefined): void;
abstract drawPrimitive(primitive: Primitive, exec: ShaderProgramExecutor, outputsToPick: boolean): void;
abstract forceBufferChange(): void;
/** Obtain a framebuffer with a single spare RGBA texture that can be used for screen-space effect shaders. */
abstract get screenSpaceEffectFbo(): FrameBuffer;
abstract get featureIds(): TextureHandle;
abstract get depthAndOrder(): TextureHandle;
abstract get antialiasSamples(): number;
get needHiddenEdges(): boolean;
protected constructor(target: Target);
static create(target: Target): SceneCompositor;
abstract collectStatistics(stats: RenderMemory.Statistics): void;
}
export {};
//# sourceMappingURL=SceneCompositor.d.ts.map