Skip to content
Snippets Groups Projects
Select Git revision
  • fe8a9799ab0a67b17530329b0a0fe5c91ef60d52
  • master default protected
  • rednatco-v2
  • base-pairs-ladder
  • rednatco
  • test
  • ntc-tube-uniform-color
  • ntc-tube-missing-atoms
  • restore-vertex-array-per-program
  • watlas2
  • dnatco_new
  • cleanup-old-nodejs
  • webmmb
  • fix_auth_seq_id
  • update_deps
  • ext_dev
  • ntc_balls
  • nci-2
  • plugin
  • bugfix-0.4.5
  • nci
  • v0.5.0-dev.1
  • v0.4.5
  • v0.4.4
  • v0.4.3
  • v0.4.2
  • v0.4.1
  • v0.4.0
  • v0.3.12
  • v0.3.11
  • v0.3.10
  • v0.3.9
  • v0.3.8
  • v0.3.7
  • v0.3.6
  • v0.3.5
  • v0.3.4
  • v0.3.3
  • v0.3.2
  • v0.3.1
  • v0.3.0
41 results

renderer.ts

Blame
  • renderer.ts 40.13 KiB
    /**
     * Copyright (c) 2018-2023 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 { Viewport } from '../mol-canvas3d/camera/util';
    import { ICamera } from '../mol-canvas3d/camera';
    import { Scene } from './scene';
    import { WebGLContext } from './webgl/context';
    import { Mat4, Vec3, Vec4, Vec2 } from '../mol-math/linear-algebra';
    import { GraphicsRenderable } from './renderable';
    import { Color } from '../mol-util/color';
    import { ValueCell, deepEqual } from '../mol-util';
    import { GlobalUniformValues } from './renderable/schema';
    import { GraphicsRenderVariant } from './webgl/render-item';
    import { ParamDefinition as PD } from '../mol-util/param-definition';
    import { degToRad } from '../mol-math/misc';
    import { Texture, Textures } from './webgl/texture';
    import { arrayMapUpsert } from '../mol-util/array';
    import { clamp } from '../mol-math/interpolate';
    import { isTimingMode } from '../mol-util/debug';
    
    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 enum PickType {
        None = 0,
        Object = 1,
        Instance = 2,
        Group = 3,
    }
    
    export enum MarkingType {
        None = 0,
        Depth = 1,
        Mask = 2,
    }
    
    interface Renderer {
        readonly stats: RendererStats
        readonly props: Readonly<RendererProps>
        readonly light: Readonly<Light>
    
        clear: (toBackgroundColor: boolean, ignoreTransparentBackground?: boolean) => void
        clearDepth: (packed?: boolean) => void
        update: (camera: ICamera, scene: Scene) => 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