molstar
Version:
A comprehensive macromolecular library.
53 lines (52 loc) • 2.55 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 { Textures } from './texture';
import { WebGLContext } from './context';
import { ShaderCode } from '../shader-code';
import { Program } from './program';
import { RenderableSchema, RenderableValues } from '../renderable/schema';
export declare type DrawMode = 'points' | 'lines' | 'line-strip' | 'line-loop' | 'triangles' | 'triangle-strip' | 'triangle-fan';
export declare function getDrawMode(ctx: WebGLContext, drawMode: DrawMode): number;
export interface RenderItem<T extends string> {
readonly id: number;
readonly materialId: number;
getProgram: (variant: T) => Program;
render: (variant: T, sharedTexturesList?: Textures) => void;
update: () => Readonly<ValueChanges>;
destroy: () => void;
}
declare const GraphicsRenderVariant: {
colorBlended: string;
colorWboit: string;
pickObject: string;
pickInstance: string;
pickGroup: string;
depth: string;
markingDepth: string;
markingMask: string;
};
export declare type GraphicsRenderVariant = keyof typeof GraphicsRenderVariant;
declare const ComputeRenderVariant: {
compute: string;
};
export declare type ComputeRenderVariant = keyof typeof ComputeRenderVariant;
interface ValueChanges {
attributes: boolean;
defines: boolean;
elements: boolean;
textures: boolean;
}
export declare type GraphicsRenderItem = RenderItem<GraphicsRenderVariant>;
export declare function createGraphicsRenderItem(ctx: WebGLContext, drawMode: DrawMode, shaderCode: ShaderCode, schema: RenderableSchema, values: RenderableValues, materialId: number): RenderItem<"depth" | "colorBlended" | "colorWboit" | "pickObject" | "pickInstance" | "pickGroup" | "markingDepth" | "markingMask">;
export declare type ComputeRenderItem = RenderItem<ComputeRenderVariant>;
export declare function createComputeRenderItem(ctx: WebGLContext, drawMode: DrawMode, shaderCode: ShaderCode, schema: RenderableSchema, values: RenderableValues, materialId?: number): RenderItem<"compute">;
/**
* Creates a render item
*
* - assumes that `values.drawCount` and `values.instanceCount` exist
*/
export declare function createRenderItem<T extends string>(ctx: WebGLContext, drawMode: DrawMode, shaderCode: ShaderCode, schema: RenderableSchema, values: RenderableValues, materialId: number, renderVariants: T[]): RenderItem<T>;
export {};