UNPKG

molstar

Version:

A comprehensive macromolecular library.

96 lines (95 loc) 4.21 kB
/** * Copyright (c) 2018-2022 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Alexander Rose <alexander.rose@weirdbyte.de> * @author Gianluca Tomasello <giagitom@gmail.com> */ import { ICamera } from '../mol-canvas3d/camera'; import { Scene } from './scene'; import { WebGLContext } from './webgl/context'; import { Color } from '../mol-util/color'; import { ParamDefinition as PD } from '../mol-util/param-definition'; import { Texture } from './webgl/texture'; export interface RendererStats { programCount: number; shaderCount: number; attributeCount: number; elementsCount: number; framebufferCount: number; renderbufferCount: number; textureCount: number; vertexArrayCount: number; drawCount: number; instanceCount: number; instancedDrawCount: number; } export declare const enum PickType { None = 0, Object = 1, Instance = 2, Group = 3 } export declare const enum MarkingType { None = 0, Depth = 1, Mask = 2 } interface Renderer { readonly stats: RendererStats; readonly props: Readonly<RendererProps>; clear: (toBackgroundColor: boolean, ignoreTransparentBackground?: boolean) => void; clearDepth: (packed?: boolean) => void; update: (camera: ICamera) => void; renderPick: (group: Scene.Group, camera: ICamera, variant: 'pick' | 'depth', depthTexture: Texture | null, pickType: PickType) => void; renderDepth: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void; renderDepthOpaque: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void; renderDepthTransparent: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void; renderMarkingDepth: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void; renderMarkingMask: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void; renderBlended: (group: Scene, camera: ICamera) => void; renderBlendedOpaque: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void; renderBlendedTransparent: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void; renderBlendedVolume: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void; renderWboitOpaque: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void; renderWboitTransparent: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void; renderDpoitOpaque: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void; renderDpoitTransparent: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null, dpoitTextures: { depth: Texture; frontColor: Texture; backColor: Texture; }) => void; renderDpoitVolume: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void; setProps: (props: Partial<RendererProps>) => void; setViewport: (x: number, y: number, width: number, height: number) => void; setTransparentBackground: (value: boolean) => void; setDrawingBufferSize: (width: number, height: number) => void; setPixelRatio: (value: number) => void; dispose: () => void; } export declare const RendererParams: { backgroundColor: PD.Color; pickingAlphaThreshold: PD.Numeric; interiorDarkening: PD.Numeric; interiorColorFlag: PD.BooleanParam; interiorColor: PD.Color; colorMarker: PD.BooleanParam; highlightColor: PD.Color; selectColor: PD.Color; highlightStrength: PD.Numeric; selectStrength: PD.Numeric; markerPriority: PD.Select<number>; xrayEdgeFalloff: PD.Numeric; light: PD.ObjectList<PD.Normalize<{ inclination: number; azimuth: number; color: Color; intensity: number; }>>; ambientColor: PD.Color; ambientIntensity: PD.Numeric; }; export declare type RendererProps = PD.Values<typeof RendererParams>; declare namespace Renderer { function create(ctx: WebGLContext, props?: Partial<RendererProps>): Renderer; } export { Renderer };