molstar
Version:
A comprehensive macromolecular library.
261 lines (260 loc) • 11.9 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 { ValueCell } from '../../mol-util';
import { AttributeItemSize, ElementsKind, AttributeValues, AttributeKind, DataTypeArrayType } from '../webgl/buffer';
import { UniformKind, UniformValues, UniformKindValue } from '../webgl/uniform';
import { DefineKind, DefineValues } from '../shader-code';
import { Mat4 } from '../../mol-math/linear-algebra';
import { TextureValues, TextureType, TextureFormat, TextureFilter, TextureKind, TextureKindValue } from '../webgl/texture';
import { Sphere3D } from '../../mol-math/geometry';
export declare type ValueKindType = {
'number': number;
'string': string;
'boolean': boolean;
'any': any;
'unknown': unknown;
'm4': Mat4;
'float32': Float32Array;
'sphere': Sphere3D;
};
export declare type ValueKind = keyof ValueKindType;
export declare type KindValue = UniformKindValue & DataTypeArrayType & TextureKindValue & ValueKindType;
export declare type Values<S extends RenderableSchema> = {
readonly [k in keyof S]: ValueCell<KindValue[S[k]['kind']]>;
};
export declare type UnboxedValues<S extends RenderableSchema> = {
readonly [k in keyof S]: KindValue[S[k]['kind']];
};
export declare function splitValues(schema: RenderableSchema, values: RenderableValues): {
attributeValues: AttributeValues;
defineValues: DefineValues;
textureValues: TextureValues;
uniformValues: UniformValues;
materialUniformValues: UniformValues;
bufferedUniformValues: UniformValues;
};
export declare type Versions<T extends RenderableValues> = {
[k in keyof T]: number;
};
export declare function getValueVersions<T extends RenderableValues>(values: T): Versions<T>;
export declare type AttributeSpec<K extends AttributeKind> = {
type: 'attribute';
kind: K;
itemSize: AttributeItemSize;
divisor: number;
};
export declare function AttributeSpec<K extends AttributeKind>(kind: K, itemSize: AttributeItemSize, divisor: number): AttributeSpec<K>;
export declare type UniformSpec<K extends UniformKind> = {
type: 'uniform';
kind: K;
variant?: 'material' | 'buffered';
};
export declare function UniformSpec<K extends UniformKind>(kind: K, variant?: 'material' | 'buffered'): UniformSpec<K>;
export declare type TextureSpec<K extends TextureKind> = {
type: 'texture';
kind: K;
format: TextureFormat;
dataType: TextureType;
filter: TextureFilter;
};
export declare function TextureSpec<K extends TextureKind>(kind: K, format: TextureFormat, dataType: TextureType, filter: TextureFilter): TextureSpec<K>;
export declare type ElementsSpec<K extends ElementsKind> = {
type: 'elements';
kind: K;
};
export declare function ElementsSpec<K extends ElementsKind>(kind: K): ElementsSpec<K>;
export declare type DefineSpec<K extends DefineKind> = {
type: 'define';
kind: K;
options?: string[];
};
export declare function DefineSpec<K extends DefineKind>(kind: K, options?: string[]): DefineSpec<K>;
export declare type ValueSpec<K extends ValueKind> = {
type: 'value';
kind: K;
};
export declare function ValueSpec<K extends ValueKind>(kind: K): ValueSpec<K>;
export declare type RenderableSchema = {
readonly [k: string]: (AttributeSpec<AttributeKind> | UniformSpec<UniformKind> | TextureSpec<TextureKind> | ValueSpec<ValueKind> | DefineSpec<DefineKind> | ElementsSpec<ElementsKind>);
};
export declare type RenderableValues = {
readonly [k: string]: ValueCell<any>;
};
export declare const GlobalUniformSchema: {
readonly uModel: UniformSpec<"m4">;
readonly uView: UniformSpec<"m4">;
readonly uInvView: UniformSpec<"m4">;
readonly uModelView: UniformSpec<"m4">;
readonly uInvModelView: UniformSpec<"m4">;
readonly uProjection: UniformSpec<"m4">;
readonly uInvProjection: UniformSpec<"m4">;
readonly uModelViewProjection: UniformSpec<"m4">;
readonly uInvModelViewProjection: UniformSpec<"m4">;
readonly uIsOrtho: UniformSpec<"f">;
readonly uPixelRatio: UniformSpec<"f">;
readonly uViewport: UniformSpec<"v4">;
readonly uViewOffset: UniformSpec<"v2">;
readonly uDrawingBufferSize: UniformSpec<"v2">;
readonly uCameraPosition: UniformSpec<"v3">;
readonly uCameraDir: UniformSpec<"v3">;
readonly uNear: UniformSpec<"f">;
readonly uFar: UniformSpec<"f">;
readonly uFogNear: UniformSpec<"f">;
readonly uFogFar: UniformSpec<"f">;
readonly uFogColor: UniformSpec<"v3">;
readonly uTransparentBackground: UniformSpec<"b">;
readonly uClipObjectType: UniformSpec<"i[]">;
readonly uClipObjectInvert: UniformSpec<"b[]">;
readonly uClipObjectPosition: UniformSpec<"v3[]">;
readonly uClipObjectRotation: UniformSpec<"v4[]">;
readonly uClipObjectScale: UniformSpec<"v3[]">;
readonly uLightIntensity: UniformSpec<"f">;
readonly uAmbientIntensity: UniformSpec<"f">;
readonly uMetalness: UniformSpec<"f">;
readonly uRoughness: UniformSpec<"f">;
readonly uReflectivity: UniformSpec<"f">;
readonly uPickingAlphaThreshold: UniformSpec<"f">;
readonly uInteriorDarkening: UniformSpec<"f">;
readonly uInteriorColorFlag: UniformSpec<"b">;
readonly uInteriorColor: UniformSpec<"v3">;
readonly uHighlightColor: UniformSpec<"v3">;
readonly uSelectColor: UniformSpec<"v3">;
readonly uHighlightStrength: UniformSpec<"f">;
readonly uSelectStrength: UniformSpec<"f">;
readonly uMarkerPriority: UniformSpec<"i">;
readonly uXrayEdgeFalloff: UniformSpec<"f">;
readonly uRenderWboit: UniformSpec<"b">;
readonly uMarkingDepthTest: UniformSpec<"b">;
};
export declare type GlobalUniformSchema = typeof GlobalUniformSchema;
export declare type GlobalUniformValues = Values<GlobalUniformSchema>;
export declare const GlobalTextureSchema: {
readonly tDepth: TextureSpec<"texture">;
};
export declare type GlobalTextureSchema = typeof GlobalTextureSchema;
export declare type GlobalTextureValues = Values<GlobalTextureSchema>;
export declare const InternalSchema: {
readonly uObjectId: UniformSpec<"i">;
};
export declare type InternalSchema = typeof InternalSchema;
export declare type InternalValues = Values<InternalSchema>;
export declare const ColorSchema: {
readonly uColor: UniformSpec<"v3">;
readonly uColorTexDim: UniformSpec<"v2">;
readonly uColorGridDim: UniformSpec<"v3">;
readonly uColorGridTransform: UniformSpec<"v4">;
readonly tColor: TextureSpec<"image-uint8">;
readonly tPalette: TextureSpec<"image-uint8">;
readonly tColorGrid: TextureSpec<"texture">;
readonly dColorType: DefineSpec<"string">;
readonly dUsePalette: DefineSpec<"boolean">;
};
export declare type ColorSchema = typeof ColorSchema;
export declare type ColorValues = Values<ColorSchema>;
export declare const SizeSchema: {
readonly uSize: UniformSpec<"f">;
readonly uSizeTexDim: UniformSpec<"v2">;
readonly tSize: TextureSpec<"image-uint8">;
readonly dSizeType: DefineSpec<"string">;
readonly uSizeFactor: UniformSpec<"f">;
};
export declare type SizeSchema = typeof SizeSchema;
export declare type SizeValues = Values<SizeSchema>;
export declare const MarkerSchema: {
readonly uMarker: UniformSpec<"f">;
readonly uMarkerTexDim: UniformSpec<"v2">;
readonly tMarker: TextureSpec<"image-uint8">;
readonly dMarkerType: DefineSpec<"string">;
readonly markerAverage: ValueSpec<"number">;
readonly markerStatus: ValueSpec<"number">;
};
export declare type MarkerSchema = typeof MarkerSchema;
export declare type MarkerValues = Values<MarkerSchema>;
export declare const OverpaintSchema: {
readonly uOverpaintTexDim: UniformSpec<"v2">;
readonly tOverpaint: TextureSpec<"image-uint8">;
readonly dOverpaint: DefineSpec<"boolean">;
};
export declare type OverpaintSchema = typeof OverpaintSchema;
export declare type OverpaintValues = Values<OverpaintSchema>;
export declare const TransparencySchema: {
readonly uTransparencyTexDim: UniformSpec<"v2">;
readonly tTransparency: TextureSpec<"image-uint8">;
readonly dTransparency: DefineSpec<"boolean">;
readonly transparencyAverage: ValueSpec<"number">;
};
export declare type TransparencySchema = typeof TransparencySchema;
export declare type TransparencyValues = Values<TransparencySchema>;
export declare const ClippingSchema: {
readonly dClipObjectCount: DefineSpec<"number">;
readonly dClipVariant: DefineSpec<"string">;
readonly uClippingTexDim: UniformSpec<"v2">;
readonly tClipping: TextureSpec<"image-uint8">;
readonly dClipping: DefineSpec<"boolean">;
};
export declare type ClippingSchema = typeof ClippingSchema;
export declare type ClippingValues = Values<ClippingSchema>;
export declare const BaseSchema: {
readonly aInstance: AttributeSpec<"float32">;
/**
* final per-instance transform calculated for instance `i` as
* `aTransform[i] = matrix * transform[i] * extraTransform[i]`
*/
readonly aTransform: AttributeSpec<"float32">;
/**
* final alpha, calculated as `values.alpha * state.alpha`
*/
readonly uAlpha: UniformSpec<"f">;
readonly uVertexCount: UniformSpec<"i">;
readonly uInstanceCount: UniformSpec<"i">;
readonly uGroupCount: UniformSpec<"i">;
readonly uInvariantBoundingSphere: UniformSpec<"v4">;
readonly drawCount: ValueSpec<"number">;
readonly instanceCount: ValueSpec<"number">;
/** base alpha, see uAlpha */
readonly alpha: ValueSpec<"number">;
/** global transform, see aTransform */
readonly matrix: ValueSpec<"m4">;
/** base per-instance transform, see aTransform */
readonly transform: ValueSpec<"float32">;
/** additional per-instance transform, see aTransform */
readonly extraTransform: ValueSpec<"float32">;
/** denotes reflection in transform */
readonly hasReflection: ValueSpec<"boolean">;
/** bounding sphere taking aTransform into account and encompases all instances */
readonly boundingSphere: ValueSpec<"sphere">;
/** bounding sphere NOT taking aTransform into account */
readonly invariantBoundingSphere: ValueSpec<"sphere">;
readonly dClipObjectCount: DefineSpec<"number">;
readonly dClipVariant: DefineSpec<"string">;
readonly uClippingTexDim: UniformSpec<"v2">;
readonly tClipping: TextureSpec<"image-uint8">;
readonly dClipping: DefineSpec<"boolean">;
readonly uTransparencyTexDim: UniformSpec<"v2">;
readonly tTransparency: TextureSpec<"image-uint8">;
readonly dTransparency: DefineSpec<"boolean">;
readonly transparencyAverage: ValueSpec<"number">;
readonly uOverpaintTexDim: UniformSpec<"v2">;
readonly tOverpaint: TextureSpec<"image-uint8">;
readonly dOverpaint: DefineSpec<"boolean">;
readonly uMarker: UniformSpec<"f">;
readonly uMarkerTexDim: UniformSpec<"v2">;
readonly tMarker: TextureSpec<"image-uint8">;
readonly dMarkerType: DefineSpec<"string">;
readonly markerAverage: ValueSpec<"number">;
readonly markerStatus: ValueSpec<"number">;
readonly uColor: UniformSpec<"v3">;
readonly uColorTexDim: UniformSpec<"v2">;
readonly uColorGridDim: UniformSpec<"v3">;
readonly uColorGridTransform: UniformSpec<"v4">;
readonly tColor: TextureSpec<"image-uint8">;
readonly tPalette: TextureSpec<"image-uint8">;
readonly tColorGrid: TextureSpec<"texture">;
readonly dColorType: DefineSpec<"string">;
readonly dUsePalette: DefineSpec<"boolean">;
};
export declare type BaseSchema = typeof BaseSchema;
export declare type BaseValues = Values<BaseSchema>;