molstar
Version:
A comprehensive macromolecular library.
96 lines (95 loc) • 4.21 kB
TypeScript
/**
* 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 };