UNPKG

molstar

Version:

A comprehensive macromolecular library.

93 lines (92 loc) 4.22 kB
/** * Copyright (c) 2018-2021 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Alexander Rose <alexander.rose@weirdbyte.de> */ import { ICamera } from '../mol-canvas3d/camera'; import { Scene } from './scene'; import { WebGLContext } from './webgl/context'; import { GraphicsRenderVariant } from './webgl/render-item'; import { ParamDefinition as PD } from '../mol-util/param-definition'; import { Clipping } from '../mol-theme/clipping'; 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; } interface Renderer { readonly stats: RendererStats; readonly props: Readonly<RendererProps>; clear: (toBackgroundColor: boolean) => void; clearDepth: () => void; update: (camera: ICamera) => void; renderPick: (group: Scene.Group, camera: ICamera, variant: GraphicsRenderVariant, depthTexture: Texture | null) => void; renderDepth: (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.Group, camera: ICamera, depthTexture: Texture | null) => void; renderBlendedOpaque: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void; renderBlendedTransparent: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void; renderBlendedVolumeOpaque: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void; renderBlendedVolumeTransparent: (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; 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; highlightColor: PD.Color; selectColor: PD.Color; highlightStrength: PD.Numeric; selectStrength: PD.Numeric; markerPriority: PD.Select<number>; xrayEdgeFalloff: PD.Numeric; style: PD.Mapped<PD.NamedParams<PD.Normalize<unknown>, "flat"> | PD.NamedParams<PD.Normalize<unknown>, "metallic"> | PD.NamedParams<PD.Normalize<{ lightIntensity: number; ambientIntensity: number; metalness: number; roughness: number; reflectivity: number; }>, "custom"> | PD.NamedParams<PD.Normalize<unknown>, "matte"> | PD.NamedParams<PD.Normalize<unknown>, "glossy"> | PD.NamedParams<PD.Normalize<unknown>, "plastic">>; clip: PD.Group<PD.Normalize<{ variant: Clipping.Variant; objects: PD.Normalize<{ type: any; invert: any; position: any; rotation: any; scale: any; }>[]; }>>; }; export declare type RendererProps = PD.Values<typeof RendererParams>; export declare type Style = { lightIntensity: number; ambientIntensity: number; metalness: number; roughness: number; reflectivity: number; }; export declare function getStyle(props: RendererProps['style']): Style; declare namespace Renderer { function create(ctx: WebGLContext, props?: Partial<RendererProps>): Renderer; } export { Renderer };