Skip to content
Snippets Groups Projects
Select Git revision
  • 52b2e7c14449614b1224f63406526dcec30cdcc1
  • master default protected
  • rednatco-v2
  • 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
  • servers
  • 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

postprocessing.ts

  • postprocessing.ts 23.59 KiB
    /**
     * Copyright (c) 2019-2020 mol* contributors, licensed under MIT, See LICENSE file for more info.
     *
     * @author Alexander Rose <alexander.rose@weirdbyte.de>
     * @author Áron Samuel Kovács <aron.kovacs@mail.muni.cz>
     */
    
    import { QuadSchema, QuadValues } from '../../mol-gl/compute/util';
    import { TextureSpec, Values, UniformSpec, DefineSpec } from '../../mol-gl/renderable/schema';
    import { ShaderCode } from '../../mol-gl/shader-code';
    import { WebGLContext } from '../../mol-gl/webgl/context';
    import { Texture } from '../../mol-gl/webgl/texture';
    import { ValueCell } from '../../mol-util';
    import { createComputeRenderItem } from '../../mol-gl/webgl/render-item';
    import { createComputeRenderable, ComputeRenderable } from '../../mol-gl/renderable';
    import { Mat4, Vec2, Vec3 } from '../../mol-math/linear-algebra';
    import { ParamDefinition as PD } from '../../mol-util/param-definition';
    import { RenderTarget } from '../../mol-gl/webgl/render-target';
    import { DrawPass } from './draw';
    import { ICamera } from '../../mol-canvas3d/camera';
    import quad_vert from '../../mol-gl/shader/quad.vert';
    import outlines_frag from '../../mol-gl/shader/outlines.frag';
    import ssao_frag from '../../mol-gl/shader/ssao.frag';
    import ssao_blur_frag from '../../mol-gl/shader/ssao-blur.frag';
    import postprocessing_frag from '../../mol-gl/shader/postprocessing.frag';
    import { Framebuffer } from '../../mol-gl/webgl/framebuffer';
    import { Color } from '../../mol-util/color';
    import { FxaaParams, FxaaPass } from './fxaa';
    import { SmaaParams, SmaaPass } from './smaa';
    
    const OutlinesSchema = {
        ...QuadSchema,
        tDepth: TextureSpec('texture', 'rgba', 'ubyte', 'nearest'),
        uTexSize: UniformSpec('v2'),
    
        dOrthographic: DefineSpec('number'),
        uNear: UniformSpec('f'),
        uFar: UniformSpec('f'),
    
        uMaxPossibleViewZDiff: UniformSpec('f'),
    };
    type OutlinesRenderable = ComputeRenderable<Values<typeof OutlinesSchema>>
    
    function getOutlinesRenderable(ctx: WebGLContext, depthTexture: Texture): OutlinesRenderable {
        const values: Values<typeof OutlinesSchema> = {
            ...QuadValues,
            tDepth: ValueCell.create(depthTexture),
            uTexSize: ValueCell.create(Vec2.create(depthTexture.getWidth(), depthTexture.getHeight())),
    
            dOrthographic: ValueCell.create(0),
            uNear: ValueCell.create(1),
            uFar: ValueCell.create(10000),
    
            uMaxPossibleViewZDiff: ValueCell.create(0.5),
        };
    
        const schema = { ...OutlinesSchema };
        const shaderCode = ShaderCode('outlines', quad_vert, outlines_frag);
        const renderItem = createComputeRenderItem(ctx, 'triangles', shaderCode, schema, values);
    
        return createComputeRenderable(renderItem, values);
    }
    
    const SsaoSchema = {
        ...QuadSchema,
        tDepth: TextureSpec('texture', 'rgba', 'ubyte', 'nearest'),
    
        uSamples: UniformSpec('v3[]'),
        dNSamples: DefineSpec('number'),