UNPKG

molstar

Version:

A comprehensive macromolecular library.

261 lines (260 loc) 11.9 kB
/** * 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>;