Skip to content
Snippets Groups Projects
Select Git revision
  • a81bcf4311624b15525cfe4b376c667fbf40cbdd
  • 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

mesh.ts

  • postprocessing.ts 30.15 KiB
    /**
     * Copyright (c) 2019-2022 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 { CopyRenderable, createCopyRenderable, 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, Vec4 } 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 { ssaoBlur_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';
    import { isTimingMode } from '../../mol-util/debug';
    import { BackgroundParams, BackgroundPass } from './background';
    import { AssetManager } from '../../mol-util/assets';
    
    const OutlinesSchema = {
        ...QuadSchema,
        tDepthOpaque: TextureSpec('texture', 'rgba', 'ubyte', 'nearest'),
        tDepthTransparent: 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, depthTextureOpaque: Texture, depthTextureTransparent: Texture): OutlinesRenderable {
        const width = depthTextureOpaque.getWidth();
        const height = depthTextureOpaque.getHeight();
    
        const values: Values<typeof OutlinesSchema> = {
            ...QuadValues,
            tDepthOpaque: ValueCell.create(depthTextureOpaque),
            tDepthTransparent: ValueCell.create(depthTextureTransparent),
            uTexSize: ValueCell.create(Vec2.create(width, height)),
    
            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);
    }