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