molstar 4.2.0 → 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +20 -20
- package/README.md +197 -197
- package/build/viewer/embedded.html +52 -52
- package/build/viewer/index.html +129 -129
- package/build/viewer/molstar.js +1 -1
- package/build/viewer/molstar.js.LICENSE.txt +9 -0
- package/lib/apps/docking-viewer/index.html +36 -36
- package/lib/apps/mesoscale-explorer/index.html +100 -100
- package/lib/apps/mesoscale-explorer/style.scss +33 -33
- package/lib/apps/viewer/app.d.ts +2 -1
- package/lib/apps/viewer/app.js +2 -1
- package/lib/apps/viewer/embedded.html +52 -52
- package/lib/apps/viewer/index.html +129 -129
- package/lib/cli/chem-comp-dict/create-ions.js +9 -9
- package/lib/cli/chem-comp-dict/create-saccharides.js +9 -9
- package/lib/cli/cifschema/util/generate.js +12 -12
- package/lib/cli/lipid-params/index.js +9 -9
- package/lib/commonjs/apps/viewer/app.d.ts +2 -1
- package/lib/commonjs/apps/viewer/app.js +1 -0
- package/lib/commonjs/cli/chem-comp-dict/create-ions.js +9 -9
- package/lib/commonjs/cli/chem-comp-dict/create-saccharides.js +9 -9
- package/lib/commonjs/cli/cifschema/util/generate.js +12 -12
- package/lib/commonjs/cli/lipid-params/index.js +9 -9
- package/lib/commonjs/examples/alpha-orbitals/example-data.js +160 -160
- package/lib/commonjs/extensions/alpha-orbitals/gpu/shader.frag.js +136 -136
- package/lib/commonjs/extensions/assembly-symmetry/prop.js +24 -24
- package/lib/commonjs/extensions/dnatco/confal-pyramids/behavior.js +5 -5
- package/lib/commonjs/extensions/dnatco/ntc-tube/behavior.js +5 -5
- package/lib/commonjs/extensions/geo-export/usdz-exporter.js +41 -41
- package/lib/commonjs/extensions/meshes/mesh-extension.d.ts +1 -0
- package/lib/commonjs/extensions/mp4-export/encoder.js +1 -1
- package/lib/commonjs/extensions/mvs/components/annotation-label/representation.d.ts +0 -2
- package/lib/commonjs/extensions/mvs/components/custom-label/representation.d.ts +2 -2
- package/lib/commonjs/extensions/mvs/tree/mvs/mvs-builder.d.ts +8 -2
- package/lib/commonjs/extensions/sb-ncbr/index.d.ts +8 -0
- package/lib/commonjs/extensions/sb-ncbr/index.js +14 -1
- package/lib/commonjs/extensions/sb-ncbr/tunnels/actions.d.ts +20 -0
- package/lib/commonjs/extensions/sb-ncbr/tunnels/actions.js +89 -0
- package/lib/commonjs/extensions/sb-ncbr/tunnels/algorithm.d.ts +26 -0
- package/lib/commonjs/extensions/sb-ncbr/tunnels/algorithm.js +474 -0
- package/lib/commonjs/extensions/sb-ncbr/tunnels/behavior.d.ts +40 -0
- package/lib/commonjs/extensions/sb-ncbr/tunnels/behavior.js +96 -0
- package/lib/commonjs/extensions/sb-ncbr/tunnels/data-model.d.ts +146 -0
- package/lib/commonjs/extensions/sb-ncbr/tunnels/data-model.js +28 -0
- package/lib/commonjs/extensions/sb-ncbr/tunnels/examples.d.ts +12 -0
- package/lib/commonjs/extensions/sb-ncbr/tunnels/examples.js +54 -0
- package/lib/commonjs/extensions/sb-ncbr/tunnels/props.d.ts +19 -0
- package/lib/commonjs/extensions/sb-ncbr/tunnels/props.js +26 -0
- package/lib/commonjs/extensions/sb-ncbr/tunnels/representation.d.ts +29 -0
- package/lib/commonjs/extensions/sb-ncbr/tunnels/representation.js +99 -0
- package/lib/commonjs/mol-canvas3d/canvas3d.d.ts +17 -0
- package/lib/commonjs/mol-canvas3d/canvas3d.js +4 -0
- package/lib/commonjs/mol-canvas3d/passes/dof.d.ts +34 -0
- package/lib/commonjs/mol-canvas3d/passes/dof.js +167 -0
- package/lib/commonjs/mol-canvas3d/passes/draw.d.ts +2 -0
- package/lib/commonjs/mol-canvas3d/passes/draw.js +31 -8
- package/lib/commonjs/mol-canvas3d/passes/image.d.ts +8 -0
- package/lib/commonjs/mol-canvas3d/passes/postprocessing.d.ts +8 -0
- package/lib/commonjs/mol-canvas3d/passes/postprocessing.js +5 -0
- package/lib/commonjs/mol-geo/geometry/lines/lines.d.ts +0 -1
- package/lib/commonjs/mol-gl/shader/background.frag.js +95 -95
- package/lib/commonjs/mol-gl/shader/background.vert.js +11 -11
- package/lib/commonjs/mol-gl/shader/blend-back-dpoit.frag.js +13 -13
- package/lib/commonjs/mol-gl/shader/bloom/blur.frag.js +28 -28
- package/lib/commonjs/mol-gl/shader/bloom/composite.frag.js +33 -33
- package/lib/commonjs/mol-gl/shader/bloom/luminosity.frag.js +52 -52
- package/lib/commonjs/mol-gl/shader/cas.frag.js +144 -144
- package/lib/commonjs/mol-gl/shader/chunks/apply-fog.glsl.js +31 -31
- package/lib/commonjs/mol-gl/shader/chunks/apply-interior-color.glsl.js +12 -12
- package/lib/commonjs/mol-gl/shader/chunks/apply-light-color.glsl.js +77 -77
- package/lib/commonjs/mol-gl/shader/chunks/apply-marker-color.glsl.js +16 -16
- package/lib/commonjs/mol-gl/shader/chunks/assign-clipping-varying.glsl.js +8 -8
- package/lib/commonjs/mol-gl/shader/chunks/assign-color-varying.glsl.js +140 -140
- package/lib/commonjs/mol-gl/shader/chunks/assign-group.glsl.js +6 -6
- package/lib/commonjs/mol-gl/shader/chunks/assign-marker-varying.glsl.js +8 -8
- package/lib/commonjs/mol-gl/shader/chunks/assign-material-color.glsl.js +112 -112
- package/lib/commonjs/mol-gl/shader/chunks/assign-position.glsl.js +14 -14
- package/lib/commonjs/mol-gl/shader/chunks/assign-size.glsl.js +18 -18
- package/lib/commonjs/mol-gl/shader/chunks/check-picking-alpha.glsl.js +12 -12
- package/lib/commonjs/mol-gl/shader/chunks/check-transparency.glsl.js +16 -16
- package/lib/commonjs/mol-gl/shader/chunks/clip-instance.glsl.js +7 -7
- package/lib/commonjs/mol-gl/shader/chunks/clip-pixel.glsl.js +5 -5
- package/lib/commonjs/mol-gl/shader/chunks/color-frag-params.glsl.js +60 -60
- package/lib/commonjs/mol-gl/shader/chunks/color-vert-params.glsl.js +122 -122
- package/lib/commonjs/mol-gl/shader/chunks/common-clip.glsl.js +104 -104
- package/lib/commonjs/mol-gl/shader/chunks/common-frag-params.glsl.js +150 -150
- package/lib/commonjs/mol-gl/shader/chunks/common-vert-params.glsl.js +61 -61
- package/lib/commonjs/mol-gl/shader/chunks/common.glsl.js +234 -234
- package/lib/commonjs/mol-gl/shader/chunks/dpoit-write.glsl.js +62 -62
- package/lib/commonjs/mol-gl/shader/chunks/fade-lod.glsl.js +42 -42
- package/lib/commonjs/mol-gl/shader/chunks/float-to-rgba.glsl.js +39 -39
- package/lib/commonjs/mol-gl/shader/chunks/light-frag-params.glsl.js +127 -127
- package/lib/commonjs/mol-gl/shader/chunks/matrix-scale.glsl.js +5 -5
- package/lib/commonjs/mol-gl/shader/chunks/normal-frag-params.glsl.js +2 -2
- package/lib/commonjs/mol-gl/shader/chunks/read-from-texture.glsl.js +14 -14
- package/lib/commonjs/mol-gl/shader/chunks/rgba-to-float.glsl.js +84 -84
- package/lib/commonjs/mol-gl/shader/chunks/size-vert-params.glsl.js +11 -11
- package/lib/commonjs/mol-gl/shader/chunks/texture3d-from-1d-trilinear.glsl.js +23 -23
- package/lib/commonjs/mol-gl/shader/chunks/texture3d-from-2d-linear.glsl.js +17 -17
- package/lib/commonjs/mol-gl/shader/chunks/texture3d-from-2d-nearest.glsl.js +8 -8
- package/lib/commonjs/mol-gl/shader/chunks/wboit-write.glsl.js +25 -25
- package/lib/commonjs/mol-gl/shader/compose.frag.js +12 -12
- package/lib/commonjs/mol-gl/shader/compute/color-smoothing/accumulate.frag.js +23 -23
- package/lib/commonjs/mol-gl/shader/compute/color-smoothing/accumulate.vert.js +43 -43
- package/lib/commonjs/mol-gl/shader/compute/color-smoothing/normalize.frag.js +15 -15
- package/lib/commonjs/mol-gl/shader/copy.frag.js +11 -11
- package/lib/commonjs/mol-gl/shader/cylinders.frag.js +266 -266
- package/lib/commonjs/mol-gl/shader/cylinders.vert.js +89 -89
- package/lib/commonjs/mol-gl/shader/depth-merge.frag.js +23 -23
- package/lib/commonjs/mol-gl/shader/direct-volume.frag.js +362 -362
- package/lib/commonjs/mol-gl/shader/direct-volume.vert.js +41 -41
- package/lib/commonjs/mol-gl/shader/dof.frag.d.ts +7 -0
- package/lib/commonjs/mol-gl/shader/dof.frag.js +122 -0
- package/lib/commonjs/mol-gl/shader/evaluate-dpoit.frag.js +10 -10
- package/lib/commonjs/mol-gl/shader/evaluate-wboit.frag.js +17 -17
- package/lib/commonjs/mol-gl/shader/fxaa.frag.js +228 -228
- package/lib/commonjs/mol-gl/shader/gaussian-density.frag.js +49 -49
- package/lib/commonjs/mol-gl/shader/gaussian-density.vert.js +27 -27
- package/lib/commonjs/mol-gl/shader/hi-z.frag.js +18 -18
- package/lib/commonjs/mol-gl/shader/histogram-pyramid/reduction.frag.js +58 -58
- package/lib/commonjs/mol-gl/shader/histogram-pyramid/sum.frag.js +19 -19
- package/lib/commonjs/mol-gl/shader/image.frag.js +169 -169
- package/lib/commonjs/mol-gl/shader/image.vert.js +21 -21
- package/lib/commonjs/mol-gl/shader/lines.frag.js +42 -42
- package/lib/commonjs/mol-gl/shader/lines.vert.js +117 -117
- package/lib/commonjs/mol-gl/shader/marching-cubes/active-voxels.frag.js +70 -70
- package/lib/commonjs/mol-gl/shader/marching-cubes/isosurface.frag.js +311 -311
- package/lib/commonjs/mol-gl/shader/marking/edge.frag.js +28 -28
- package/lib/commonjs/mol-gl/shader/marking/overlay.frag.js +26 -26
- package/lib/commonjs/mol-gl/shader/mesh.frag.js +65 -65
- package/lib/commonjs/mol-gl/shader/mesh.vert.js +49 -49
- package/lib/commonjs/mol-gl/shader/outlines.frag.js +95 -95
- package/lib/commonjs/mol-gl/shader/points.frag.js +59 -59
- package/lib/commonjs/mol-gl/shader/points.vert.js +38 -38
- package/lib/commonjs/mol-gl/shader/postprocessing.frag.js +150 -150
- package/lib/commonjs/mol-gl/shader/quad.vert.js +10 -10
- package/lib/commonjs/mol-gl/shader/shadows.frag.js +123 -123
- package/lib/commonjs/mol-gl/shader/smaa/blend.frag.js +56 -56
- package/lib/commonjs/mol-gl/shader/smaa/blend.vert.js +25 -25
- package/lib/commonjs/mol-gl/shader/smaa/edges.frag.js +66 -66
- package/lib/commonjs/mol-gl/shader/smaa/edges.vert.js +26 -26
- package/lib/commonjs/mol-gl/shader/smaa/weights.frag.js +206 -206
- package/lib/commonjs/mol-gl/shader/smaa/weights.vert.js +32 -32
- package/lib/commonjs/mol-gl/shader/spheres.frag.js +148 -148
- package/lib/commonjs/mol-gl/shader/spheres.vert.js +132 -132
- package/lib/commonjs/mol-gl/shader/ssao-blur.frag.js +97 -97
- package/lib/commonjs/mol-gl/shader/ssao.frag.js +211 -211
- package/lib/commonjs/mol-gl/shader/text.frag.js +85 -85
- package/lib/commonjs/mol-gl/shader/text.vert.js +85 -85
- package/lib/commonjs/mol-gl/shader/util/grid3d-template.frag.js +46 -46
- package/lib/commonjs/mol-gl/shader-code.js +15 -15
- package/lib/commonjs/mol-gl/webgl/compat.js +12 -12
- package/lib/commonjs/mol-gl/webgl/context.js +1 -0
- package/lib/commonjs/mol-gl/webgl/timer.d.ts +1 -1
- package/lib/commonjs/mol-gl/webgl/timer.js +8 -1
- package/lib/commonjs/mol-math/linear-algebra/3d/minimize-rmsd.js +2 -1
- package/lib/commonjs/mol-plugin/animation-loop.d.ts +1 -0
- package/lib/commonjs/mol-plugin/behavior/dynamic/volume-streaming/behavior.d.ts +6 -6
- package/lib/commonjs/mol-plugin/behavior/dynamic/volume-streaming/model.d.ts +1 -1
- package/lib/commonjs/mol-plugin/behavior/dynamic/volume-streaming/transformers.d.ts +3 -3
- package/lib/commonjs/mol-plugin-state/animation/built-in/state-snapshots.js +7 -3
- package/lib/commonjs/mol-plugin-ui/viewport/simple-settings.js +3 -0
- package/lib/commonjs/servers/common/swagger-ui/indexTemplate.js +66 -66
- package/lib/commonjs/servers/volume/config.js +5 -5
- package/lib/examples/alpha-orbitals/example-data.js +160 -160
- package/lib/examples/alpha-orbitals/index.html +72 -72
- package/lib/examples/basic-wrapper/index.html +137 -137
- package/lib/examples/lighting/index.html +88 -88
- package/lib/examples/proteopedia-wrapper/index.html +236 -236
- package/lib/extensions/alpha-orbitals/gpu/shader.frag.js +136 -136
- package/lib/extensions/assembly-symmetry/prop.js +24 -24
- package/lib/extensions/dnatco/confal-pyramids/behavior.js +5 -5
- package/lib/extensions/dnatco/ntc-tube/behavior.js +5 -5
- package/lib/extensions/geo-export/usdz-exporter.js +41 -41
- package/lib/extensions/meshes/mesh-extension.d.ts +1 -0
- package/lib/extensions/mp4-export/encoder.js +1 -1
- package/lib/extensions/mvs/components/annotation-label/representation.d.ts +0 -2
- package/lib/extensions/mvs/components/custom-label/representation.d.ts +2 -2
- package/lib/extensions/mvs/tree/mvs/mvs-builder.d.ts +8 -2
- package/lib/extensions/sb-ncbr/index.d.ts +8 -0
- package/lib/extensions/sb-ncbr/index.js +8 -0
- package/lib/extensions/sb-ncbr/tunnels/actions.d.ts +20 -0
- package/lib/extensions/sb-ncbr/tunnels/actions.js +86 -0
- package/lib/extensions/sb-ncbr/tunnels/algorithm.d.ts +26 -0
- package/lib/extensions/sb-ncbr/tunnels/algorithm.js +469 -0
- package/lib/extensions/sb-ncbr/tunnels/behavior.d.ts +40 -0
- package/lib/extensions/sb-ncbr/tunnels/behavior.js +92 -0
- package/lib/extensions/sb-ncbr/tunnels/data-model.d.ts +146 -0
- package/lib/extensions/sb-ncbr/tunnels/data-model.js +23 -0
- package/lib/extensions/sb-ncbr/tunnels/examples.d.ts +12 -0
- package/lib/extensions/sb-ncbr/tunnels/examples.js +49 -0
- package/lib/extensions/sb-ncbr/tunnels/props.d.ts +19 -0
- package/lib/extensions/sb-ncbr/tunnels/props.js +22 -0
- package/lib/extensions/sb-ncbr/tunnels/representation.d.ts +29 -0
- package/lib/extensions/sb-ncbr/tunnels/representation.js +96 -0
- package/lib/mol-canvas3d/canvas3d.d.ts +17 -0
- package/lib/mol-canvas3d/canvas3d.js +4 -0
- package/lib/mol-canvas3d/passes/dof.d.ts +34 -0
- package/lib/mol-canvas3d/passes/dof.js +163 -0
- package/lib/mol-canvas3d/passes/draw.d.ts +2 -0
- package/lib/mol-canvas3d/passes/draw.js +31 -8
- package/lib/mol-canvas3d/passes/image.d.ts +8 -0
- package/lib/mol-canvas3d/passes/postprocessing.d.ts +8 -0
- package/lib/mol-canvas3d/passes/postprocessing.js +5 -0
- package/lib/mol-geo/geometry/lines/lines.d.ts +0 -1
- package/lib/mol-gl/shader/background.frag.js +95 -95
- package/lib/mol-gl/shader/background.vert.js +11 -11
- package/lib/mol-gl/shader/blend-back-dpoit.frag.js +13 -13
- package/lib/mol-gl/shader/bloom/blur.frag.js +28 -28
- package/lib/mol-gl/shader/bloom/composite.frag.js +33 -33
- package/lib/mol-gl/shader/bloom/luminosity.frag.js +52 -52
- package/lib/mol-gl/shader/cas.frag.js +144 -144
- package/lib/mol-gl/shader/chunks/apply-fog.glsl.js +31 -31
- package/lib/mol-gl/shader/chunks/apply-interior-color.glsl.js +12 -12
- package/lib/mol-gl/shader/chunks/apply-light-color.glsl.js +77 -77
- package/lib/mol-gl/shader/chunks/apply-marker-color.glsl.js +16 -16
- package/lib/mol-gl/shader/chunks/assign-clipping-varying.glsl.js +8 -8
- package/lib/mol-gl/shader/chunks/assign-color-varying.glsl.js +140 -140
- package/lib/mol-gl/shader/chunks/assign-group.glsl.js +6 -6
- package/lib/mol-gl/shader/chunks/assign-marker-varying.glsl.js +8 -8
- package/lib/mol-gl/shader/chunks/assign-material-color.glsl.js +112 -112
- package/lib/mol-gl/shader/chunks/assign-position.glsl.js +14 -14
- package/lib/mol-gl/shader/chunks/assign-size.glsl.js +18 -18
- package/lib/mol-gl/shader/chunks/check-picking-alpha.glsl.js +12 -12
- package/lib/mol-gl/shader/chunks/check-transparency.glsl.js +16 -16
- package/lib/mol-gl/shader/chunks/clip-instance.glsl.js +7 -7
- package/lib/mol-gl/shader/chunks/clip-pixel.glsl.js +5 -5
- package/lib/mol-gl/shader/chunks/color-frag-params.glsl.js +60 -60
- package/lib/mol-gl/shader/chunks/color-vert-params.glsl.js +122 -122
- package/lib/mol-gl/shader/chunks/common-clip.glsl.js +104 -104
- package/lib/mol-gl/shader/chunks/common-frag-params.glsl.js +150 -150
- package/lib/mol-gl/shader/chunks/common-vert-params.glsl.js +61 -61
- package/lib/mol-gl/shader/chunks/common.glsl.js +234 -234
- package/lib/mol-gl/shader/chunks/dpoit-write.glsl.js +62 -62
- package/lib/mol-gl/shader/chunks/fade-lod.glsl.js +42 -42
- package/lib/mol-gl/shader/chunks/float-to-rgba.glsl.js +39 -39
- package/lib/mol-gl/shader/chunks/light-frag-params.glsl.js +127 -127
- package/lib/mol-gl/shader/chunks/matrix-scale.glsl.js +5 -5
- package/lib/mol-gl/shader/chunks/normal-frag-params.glsl.js +2 -2
- package/lib/mol-gl/shader/chunks/read-from-texture.glsl.js +14 -14
- package/lib/mol-gl/shader/chunks/rgba-to-float.glsl.js +84 -84
- package/lib/mol-gl/shader/chunks/size-vert-params.glsl.js +11 -11
- package/lib/mol-gl/shader/chunks/texture3d-from-1d-trilinear.glsl.js +23 -23
- package/lib/mol-gl/shader/chunks/texture3d-from-2d-linear.glsl.js +17 -17
- package/lib/mol-gl/shader/chunks/texture3d-from-2d-nearest.glsl.js +8 -8
- package/lib/mol-gl/shader/chunks/wboit-write.glsl.js +25 -25
- package/lib/mol-gl/shader/compose.frag.js +12 -12
- package/lib/mol-gl/shader/compute/color-smoothing/accumulate.frag.js +23 -23
- package/lib/mol-gl/shader/compute/color-smoothing/accumulate.vert.js +43 -43
- package/lib/mol-gl/shader/compute/color-smoothing/normalize.frag.js +15 -15
- package/lib/mol-gl/shader/copy.frag.js +11 -11
- package/lib/mol-gl/shader/cylinders.frag.js +266 -266
- package/lib/mol-gl/shader/cylinders.vert.js +89 -89
- package/lib/mol-gl/shader/depth-merge.frag.js +23 -23
- package/lib/mol-gl/shader/direct-volume.frag.js +362 -362
- package/lib/mol-gl/shader/direct-volume.vert.js +41 -41
- package/lib/mol-gl/shader/dof.frag.d.ts +7 -0
- package/lib/mol-gl/shader/dof.frag.js +119 -0
- package/lib/mol-gl/shader/evaluate-dpoit.frag.js +10 -10
- package/lib/mol-gl/shader/evaluate-wboit.frag.js +17 -17
- package/lib/mol-gl/shader/fxaa.frag.js +228 -228
- package/lib/mol-gl/shader/gaussian-density.frag.js +49 -49
- package/lib/mol-gl/shader/gaussian-density.vert.js +27 -27
- package/lib/mol-gl/shader/hi-z.frag.js +18 -18
- package/lib/mol-gl/shader/histogram-pyramid/reduction.frag.js +58 -58
- package/lib/mol-gl/shader/histogram-pyramid/sum.frag.js +19 -19
- package/lib/mol-gl/shader/image.frag.js +169 -169
- package/lib/mol-gl/shader/image.vert.js +21 -21
- package/lib/mol-gl/shader/lines.frag.js +42 -42
- package/lib/mol-gl/shader/lines.vert.js +117 -117
- package/lib/mol-gl/shader/marching-cubes/active-voxels.frag.js +70 -70
- package/lib/mol-gl/shader/marching-cubes/isosurface.frag.js +311 -311
- package/lib/mol-gl/shader/marking/edge.frag.js +28 -28
- package/lib/mol-gl/shader/marking/overlay.frag.js +26 -26
- package/lib/mol-gl/shader/mesh.frag.js +65 -65
- package/lib/mol-gl/shader/mesh.vert.js +49 -49
- package/lib/mol-gl/shader/outlines.frag.js +95 -95
- package/lib/mol-gl/shader/points.frag.js +59 -59
- package/lib/mol-gl/shader/points.vert.js +38 -38
- package/lib/mol-gl/shader/postprocessing.frag.js +150 -150
- package/lib/mol-gl/shader/quad.vert.js +10 -10
- package/lib/mol-gl/shader/shadows.frag.js +123 -123
- package/lib/mol-gl/shader/smaa/blend.frag.js +56 -56
- package/lib/mol-gl/shader/smaa/blend.vert.js +25 -25
- package/lib/mol-gl/shader/smaa/edges.frag.js +66 -66
- package/lib/mol-gl/shader/smaa/edges.vert.js +26 -26
- package/lib/mol-gl/shader/smaa/weights.frag.js +206 -206
- package/lib/mol-gl/shader/smaa/weights.vert.js +32 -32
- package/lib/mol-gl/shader/spheres.frag.js +148 -148
- package/lib/mol-gl/shader/spheres.vert.js +132 -132
- package/lib/mol-gl/shader/ssao-blur.frag.js +97 -97
- package/lib/mol-gl/shader/ssao.frag.js +211 -211
- package/lib/mol-gl/shader/text.frag.js +85 -85
- package/lib/mol-gl/shader/text.vert.js +85 -85
- package/lib/mol-gl/shader/util/grid3d-template.frag.js +46 -46
- package/lib/mol-gl/shader-code.js +15 -15
- package/lib/mol-gl/webgl/compat.js +12 -12
- package/lib/mol-gl/webgl/context.js +1 -0
- package/lib/mol-gl/webgl/timer.d.ts +1 -1
- package/lib/mol-gl/webgl/timer.js +8 -1
- package/lib/mol-math/linear-algebra/3d/minimize-rmsd.js +2 -1
- package/lib/mol-plugin/animation-loop.d.ts +1 -0
- package/lib/mol-plugin/behavior/dynamic/volume-streaming/behavior.d.ts +6 -6
- package/lib/mol-plugin/behavior/dynamic/volume-streaming/model.d.ts +1 -1
- package/lib/mol-plugin/behavior/dynamic/volume-streaming/transformers.d.ts +3 -3
- package/lib/mol-plugin/version.js +2 -2
- package/lib/mol-plugin-state/animation/built-in/state-snapshots.js +7 -3
- package/lib/mol-plugin-ui/skin/base/base.scss +37 -37
- package/lib/mol-plugin-ui/skin/base/components/controls-base.scss +333 -333
- package/lib/mol-plugin-ui/skin/base/components/controls.scss +445 -445
- package/lib/mol-plugin-ui/skin/base/components/help.scss +27 -27
- package/lib/mol-plugin-ui/skin/base/components/line-graph.scss +67 -67
- package/lib/mol-plugin-ui/skin/base/components/log.scss +100 -100
- package/lib/mol-plugin-ui/skin/base/components/misc.scss +663 -663
- package/lib/mol-plugin-ui/skin/base/components/sequence.scss +125 -125
- package/lib/mol-plugin-ui/skin/base/components/slider.scss +165 -165
- package/lib/mol-plugin-ui/skin/base/components/tasks.scss +99 -99
- package/lib/mol-plugin-ui/skin/base/components/toast.scss +83 -83
- package/lib/mol-plugin-ui/skin/base/components/transformer.scss +163 -163
- package/lib/mol-plugin-ui/skin/base/components/viewport.scss +194 -194
- package/lib/mol-plugin-ui/skin/base/layout/common.scss +71 -71
- package/lib/mol-plugin-ui/skin/base/layout/controls-landscape.scss +89 -89
- package/lib/mol-plugin-ui/skin/base/layout/controls-outside.scss +98 -98
- package/lib/mol-plugin-ui/skin/base/layout/controls-portrait.scss +108 -108
- package/lib/mol-plugin-ui/skin/base/layout.scss +40 -40
- package/lib/mol-plugin-ui/skin/base/logo.scss +12 -12
- package/lib/mol-plugin-ui/skin/base/normalize.scss +209 -209
- package/lib/mol-plugin-ui/skin/base/ui.scss +40 -40
- package/lib/mol-plugin-ui/skin/base/variables.scss +88 -88
- package/lib/mol-plugin-ui/skin/blue.scss +1 -1
- package/lib/mol-plugin-ui/skin/colors/blue.scss +23 -23
- package/lib/mol-plugin-ui/skin/colors/dark.scss +23 -23
- package/lib/mol-plugin-ui/skin/colors/light.scss +29 -29
- package/lib/mol-plugin-ui/skin/dark.scss +1 -1
- package/lib/mol-plugin-ui/skin/light.scss +1 -1
- package/lib/mol-plugin-ui/viewport/simple-settings.js +3 -0
- package/lib/servers/common/swagger-ui/indexTemplate.js +66 -66
- package/lib/servers/volume/config.js +5 -5
- package/package.json +196 -195
|
@@ -1,232 +1,232 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.fxaa_frag = void 0;
|
|
4
|
-
exports.fxaa_frag = `
|
|
5
|
-
precision highp float;
|
|
6
|
-
precision highp int;
|
|
7
|
-
precision highp sampler2D;
|
|
8
|
-
|
|
9
|
-
uniform sampler2D tColor;
|
|
10
|
-
uniform vec2 uTexSizeInv;
|
|
11
|
-
|
|
12
|
-
// adapted from https://github.com/kosua20/Rendu
|
|
13
|
-
// MIT License Copyright (c) 2017 Simon Rodriguez
|
|
14
|
-
|
|
15
|
-
#define QUALITY(q) ((q) < 5 ? 1.0 : ((q) > 5 ? ((q) < 10 ? 2.0 : ((q) < 11 ? 4.0 : 8.0)) : 1.5))
|
|
16
|
-
|
|
17
|
-
float rgb2luma(vec3 rgb){
|
|
18
|
-
return sqrt(dot(rgb, vec3(0.299, 0.587, 0.114)));
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
float sampleLuma(vec2 uv) {
|
|
22
|
-
return rgb2luma(texture2D(tColor, uv).rgb);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
float sampleLuma(vec2 uv, float uOffset, float vOffset) {
|
|
26
|
-
uv += uTexSizeInv * vec2(uOffset, vOffset);
|
|
27
|
-
return sampleLuma(uv);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
void main(void) {
|
|
31
|
-
vec2 coords = gl_FragCoord.xy * uTexSizeInv;
|
|
32
|
-
vec2 inverseScreenSize = uTexSizeInv;
|
|
33
|
-
|
|
34
|
-
vec4 colorCenter = texture2D(tColor, coords);
|
|
35
|
-
|
|
36
|
-
// Luma at the current fragment
|
|
37
|
-
float lumaCenter = rgb2luma(colorCenter.rgb);
|
|
38
|
-
|
|
39
|
-
// Luma at the four direct neighbours of the current fragment.
|
|
40
|
-
float lumaDown = sampleLuma(coords, 0.0, -1.0);
|
|
41
|
-
float lumaUp = sampleLuma(coords, 0.0, 1.0);
|
|
42
|
-
float lumaLeft = sampleLuma(coords, -1.0, 0.0);
|
|
43
|
-
float lumaRight = sampleLuma(coords, 1.0, 0.0);
|
|
44
|
-
|
|
45
|
-
// Find the maximum and minimum luma around the current fragment.
|
|
46
|
-
float lumaMin = min(lumaCenter, min(min(lumaDown, lumaUp), min(lumaLeft, lumaRight)));
|
|
47
|
-
float lumaMax = max(lumaCenter, max(max(lumaDown, lumaUp), max(lumaLeft, lumaRight)));
|
|
48
|
-
|
|
49
|
-
// Compute the delta.
|
|
50
|
-
float lumaRange = lumaMax - lumaMin;
|
|
51
|
-
|
|
52
|
-
// If the luma variation is lower that a threshold (or if we are in a really dark area),
|
|
53
|
-
// we are not on an edge, don't perform any AA.
|
|
54
|
-
if (lumaRange < max(dEdgeThresholdMin, lumaMax * dEdgeThresholdMax)) {
|
|
55
|
-
gl_FragColor = colorCenter;
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
// Query the 4 remaining corners lumas.
|
|
60
|
-
float lumaDownLeft = sampleLuma(coords, -1.0, -1.0);
|
|
61
|
-
float lumaUpRight = sampleLuma(coords, 1.0, 1.0);
|
|
62
|
-
float lumaUpLeft = sampleLuma(coords, -1.0, 1.0);
|
|
63
|
-
float lumaDownRight = sampleLuma(coords, 1.0, -1.0);
|
|
64
|
-
|
|
65
|
-
// Combine the four edges lumas (using intermediary variables for future computations
|
|
66
|
-
// with the same values).
|
|
67
|
-
float lumaDownUp = lumaDown + lumaUp;
|
|
68
|
-
float lumaLeftRight = lumaLeft + lumaRight;
|
|
69
|
-
|
|
70
|
-
// Same for corners
|
|
71
|
-
float lumaLeftCorners = lumaDownLeft + lumaUpLeft;
|
|
72
|
-
float lumaDownCorners = lumaDownLeft + lumaDownRight;
|
|
73
|
-
float lumaRightCorners = lumaDownRight + lumaUpRight;
|
|
74
|
-
float lumaUpCorners = lumaUpRight + lumaUpLeft;
|
|
75
|
-
|
|
76
|
-
// Compute an estimation of the gradient along the horizontal and vertical axis.
|
|
77
|
-
float edgeHorizontal = abs(-2.0 * lumaLeft + lumaLeftCorners) + abs(-2.0 * lumaCenter + lumaDownUp) * 2.0 + abs(-2.0 * lumaRight + lumaRightCorners);
|
|
78
|
-
float edgeVertical = abs(-2.0 * lumaUp + lumaUpCorners) + abs(-2.0 * lumaCenter + lumaLeftRight) * 2.0 + abs(-2.0 * lumaDown + lumaDownCorners);
|
|
79
|
-
|
|
80
|
-
// Is the local edge horizontal or vertical ?
|
|
81
|
-
bool isHorizontal = (edgeHorizontal >= edgeVertical);
|
|
82
|
-
|
|
83
|
-
// Choose the step size (one pixel) accordingly.
|
|
84
|
-
float stepLength = isHorizontal ? inverseScreenSize.y : inverseScreenSize.x;
|
|
85
|
-
|
|
86
|
-
// Select the two neighboring texels lumas in the opposite direction to the local edge.
|
|
87
|
-
float luma1 = isHorizontal ? lumaDown : lumaLeft;
|
|
88
|
-
float luma2 = isHorizontal ? lumaUp : lumaRight;
|
|
89
|
-
// Compute gradients in this direction.
|
|
90
|
-
float gradient1 = luma1 - lumaCenter;
|
|
91
|
-
float gradient2 = luma2 - lumaCenter;
|
|
92
|
-
|
|
93
|
-
// Which direction is the steepest ?
|
|
94
|
-
bool is1Steepest = abs(gradient1) >= abs(gradient2);
|
|
95
|
-
|
|
96
|
-
// Gradient in the corresponding direction, normalized.
|
|
97
|
-
float gradientScaled = 0.25 * max(abs(gradient1), abs(gradient2));
|
|
98
|
-
|
|
99
|
-
// Average luma in the correct direction.
|
|
100
|
-
float lumaLocalAverage = 0.0;
|
|
101
|
-
if(is1Steepest){
|
|
102
|
-
// Switch the direction
|
|
103
|
-
stepLength = -stepLength;
|
|
104
|
-
lumaLocalAverage = 0.5 * (luma1 + lumaCenter);
|
|
105
|
-
} else {
|
|
106
|
-
lumaLocalAverage = 0.5 * (luma2 + lumaCenter);
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
// Shift UV in the correct direction by half a pixel.
|
|
110
|
-
vec2 currentUv = coords;
|
|
111
|
-
if(isHorizontal){
|
|
112
|
-
currentUv.y += stepLength * 0.5;
|
|
113
|
-
} else {
|
|
114
|
-
currentUv.x += stepLength * 0.5;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
// Compute offset (for each iteration step) in the right direction.
|
|
118
|
-
vec2 offset = isHorizontal ? vec2(inverseScreenSize.x, 0.0) : vec2(0.0, inverseScreenSize.y);
|
|
119
|
-
// Compute UVs to explore on each side of the edge, orthogonally.
|
|
120
|
-
// The QUALITY allows us to step faster.
|
|
121
|
-
vec2 uv1 = currentUv - offset * QUALITY(0);
|
|
122
|
-
vec2 uv2 = currentUv + offset * QUALITY(0);
|
|
123
|
-
|
|
124
|
-
// Read the lumas at both current extremities of the exploration segment,
|
|
125
|
-
// and compute the delta wrt to the local average luma.
|
|
126
|
-
float lumaEnd1 = sampleLuma(uv1);
|
|
127
|
-
float lumaEnd2 = sampleLuma(uv2);
|
|
128
|
-
lumaEnd1 -= lumaLocalAverage;
|
|
129
|
-
lumaEnd2 -= lumaLocalAverage;
|
|
130
|
-
|
|
131
|
-
// If the luma deltas at the current extremities is larger than the local gradient,
|
|
132
|
-
// we have reached the side of the edge.
|
|
133
|
-
bool reached1 = abs(lumaEnd1) >= gradientScaled;
|
|
134
|
-
bool reached2 = abs(lumaEnd2) >= gradientScaled;
|
|
135
|
-
bool reachedBoth = reached1 && reached2;
|
|
136
|
-
|
|
137
|
-
// If the side is not reached, we continue to explore in this direction.
|
|
138
|
-
if(!reached1){
|
|
139
|
-
uv1 -= offset * QUALITY(1);
|
|
140
|
-
}
|
|
141
|
-
if(!reached2){
|
|
142
|
-
uv2 += offset * QUALITY(1);
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
// If both sides have not been reached, continue to explore.
|
|
146
|
-
if(!reachedBoth){
|
|
147
|
-
for(int i = 2; i < dIterations; i++){
|
|
148
|
-
// If needed, read luma in 1st direction, compute delta.
|
|
149
|
-
if(!reached1){
|
|
150
|
-
lumaEnd1 = sampleLuma(uv1);
|
|
151
|
-
lumaEnd1 = lumaEnd1 - lumaLocalAverage;
|
|
152
|
-
}
|
|
153
|
-
// If needed, read luma in opposite direction, compute delta.
|
|
154
|
-
if(!reached2){
|
|
155
|
-
lumaEnd2 = sampleLuma(uv2);
|
|
156
|
-
lumaEnd2 = lumaEnd2 - lumaLocalAverage;
|
|
157
|
-
}
|
|
158
|
-
// If the luma deltas at the current extremities is larger than the local gradient,
|
|
159
|
-
// we have reached the side of the edge.
|
|
160
|
-
reached1 = abs(lumaEnd1) >= gradientScaled;
|
|
161
|
-
reached2 = abs(lumaEnd2) >= gradientScaled;
|
|
162
|
-
reachedBoth = reached1 && reached2;
|
|
163
|
-
|
|
164
|
-
// If the side is not reached, we continue to explore in this direction,
|
|
165
|
-
// with a variable quality.
|
|
166
|
-
if(!reached1){
|
|
167
|
-
uv1 -= offset * QUALITY(i);
|
|
168
|
-
}
|
|
169
|
-
if(!reached2){
|
|
170
|
-
uv2 += offset * QUALITY(i);
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
// If both sides have been reached, stop the exploration.
|
|
174
|
-
if(reachedBoth){
|
|
175
|
-
break;
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
// Compute the distances to each side edge of the edge (!).
|
|
181
|
-
float distance1 = isHorizontal ? (coords.x - uv1.x) : (coords.y - uv1.y);
|
|
182
|
-
float distance2 = isHorizontal ? (uv2.x - coords.x) : (uv2.y - coords.y);
|
|
183
|
-
|
|
184
|
-
// In which direction is the side of the edge closer ?
|
|
185
|
-
bool isDirection1 = distance1 < distance2;
|
|
186
|
-
float distanceFinal = min(distance1, distance2);
|
|
187
|
-
|
|
188
|
-
// Thickness of the edge.
|
|
189
|
-
float edgeThickness = (distance1 + distance2);
|
|
190
|
-
|
|
191
|
-
// Is the luma at center smaller than the local average ?
|
|
192
|
-
bool isLumaCenterSmaller = lumaCenter < lumaLocalAverage;
|
|
193
|
-
|
|
194
|
-
// If the luma at center is smaller than at its neighbour,
|
|
195
|
-
// the delta luma at each end should be positive (same variation).
|
|
196
|
-
bool correctVariation1 = (lumaEnd1 < 0.0) != isLumaCenterSmaller;
|
|
197
|
-
bool correctVariation2 = (lumaEnd2 < 0.0) != isLumaCenterSmaller;
|
|
198
|
-
|
|
199
|
-
// Only keep the result in the direction of the closer side of the edge.
|
|
200
|
-
bool correctVariation = isDirection1 ? correctVariation1 : correctVariation2;
|
|
201
|
-
|
|
202
|
-
// UV offset: read in the direction of the closest side of the edge.
|
|
203
|
-
float pixelOffset = - distanceFinal / edgeThickness + 0.5;
|
|
204
|
-
|
|
205
|
-
// If the luma variation is incorrect, do not offset.
|
|
206
|
-
float finalOffset = correctVariation ? pixelOffset : 0.0;
|
|
207
|
-
|
|
208
|
-
// Sub-pixel shifting
|
|
209
|
-
// Full weighted average of the luma over the 3x3 neighborhood.
|
|
210
|
-
float lumaAverage = (1.0 / 12.0) * (2.0 * (lumaDownUp + lumaLeftRight) + lumaLeftCorners + lumaRightCorners);
|
|
211
|
-
// Ratio of the delta between the global average and the center luma,
|
|
212
|
-
// over the luma range in the 3x3 neighborhood.
|
|
213
|
-
float subPixelOffset1 = clamp(abs(lumaAverage - lumaCenter) / lumaRange, 0.0, 1.0);
|
|
214
|
-
float subPixelOffset2 = (-2.0 * subPixelOffset1 + 3.0) * subPixelOffset1 * subPixelOffset1;
|
|
215
|
-
// Compute a sub-pixel offset based on this delta.
|
|
216
|
-
float subPixelOffsetFinal = subPixelOffset2 * subPixelOffset2 * float(dSubpixelQuality);
|
|
217
|
-
|
|
218
|
-
// Pick the biggest of the two offsets.
|
|
219
|
-
finalOffset = max(finalOffset, subPixelOffsetFinal);
|
|
220
|
-
|
|
221
|
-
// Compute the final UV coordinates.
|
|
222
|
-
vec2 finalUv = coords;
|
|
223
|
-
if(isHorizontal){
|
|
224
|
-
finalUv.y += finalOffset * stepLength;
|
|
225
|
-
} else {
|
|
226
|
-
finalUv.x += finalOffset * stepLength;
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
// Read the color at the new UV coordinates, and use it.
|
|
230
|
-
gl_FragColor = texture2D(tColor, finalUv);
|
|
231
|
-
}
|
|
4
|
+
exports.fxaa_frag = `
|
|
5
|
+
precision highp float;
|
|
6
|
+
precision highp int;
|
|
7
|
+
precision highp sampler2D;
|
|
8
|
+
|
|
9
|
+
uniform sampler2D tColor;
|
|
10
|
+
uniform vec2 uTexSizeInv;
|
|
11
|
+
|
|
12
|
+
// adapted from https://github.com/kosua20/Rendu
|
|
13
|
+
// MIT License Copyright (c) 2017 Simon Rodriguez
|
|
14
|
+
|
|
15
|
+
#define QUALITY(q) ((q) < 5 ? 1.0 : ((q) > 5 ? ((q) < 10 ? 2.0 : ((q) < 11 ? 4.0 : 8.0)) : 1.5))
|
|
16
|
+
|
|
17
|
+
float rgb2luma(vec3 rgb){
|
|
18
|
+
return sqrt(dot(rgb, vec3(0.299, 0.587, 0.114)));
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
float sampleLuma(vec2 uv) {
|
|
22
|
+
return rgb2luma(texture2D(tColor, uv).rgb);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
float sampleLuma(vec2 uv, float uOffset, float vOffset) {
|
|
26
|
+
uv += uTexSizeInv * vec2(uOffset, vOffset);
|
|
27
|
+
return sampleLuma(uv);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
void main(void) {
|
|
31
|
+
vec2 coords = gl_FragCoord.xy * uTexSizeInv;
|
|
32
|
+
vec2 inverseScreenSize = uTexSizeInv;
|
|
33
|
+
|
|
34
|
+
vec4 colorCenter = texture2D(tColor, coords);
|
|
35
|
+
|
|
36
|
+
// Luma at the current fragment
|
|
37
|
+
float lumaCenter = rgb2luma(colorCenter.rgb);
|
|
38
|
+
|
|
39
|
+
// Luma at the four direct neighbours of the current fragment.
|
|
40
|
+
float lumaDown = sampleLuma(coords, 0.0, -1.0);
|
|
41
|
+
float lumaUp = sampleLuma(coords, 0.0, 1.0);
|
|
42
|
+
float lumaLeft = sampleLuma(coords, -1.0, 0.0);
|
|
43
|
+
float lumaRight = sampleLuma(coords, 1.0, 0.0);
|
|
44
|
+
|
|
45
|
+
// Find the maximum and minimum luma around the current fragment.
|
|
46
|
+
float lumaMin = min(lumaCenter, min(min(lumaDown, lumaUp), min(lumaLeft, lumaRight)));
|
|
47
|
+
float lumaMax = max(lumaCenter, max(max(lumaDown, lumaUp), max(lumaLeft, lumaRight)));
|
|
48
|
+
|
|
49
|
+
// Compute the delta.
|
|
50
|
+
float lumaRange = lumaMax - lumaMin;
|
|
51
|
+
|
|
52
|
+
// If the luma variation is lower that a threshold (or if we are in a really dark area),
|
|
53
|
+
// we are not on an edge, don't perform any AA.
|
|
54
|
+
if (lumaRange < max(dEdgeThresholdMin, lumaMax * dEdgeThresholdMax)) {
|
|
55
|
+
gl_FragColor = colorCenter;
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// Query the 4 remaining corners lumas.
|
|
60
|
+
float lumaDownLeft = sampleLuma(coords, -1.0, -1.0);
|
|
61
|
+
float lumaUpRight = sampleLuma(coords, 1.0, 1.0);
|
|
62
|
+
float lumaUpLeft = sampleLuma(coords, -1.0, 1.0);
|
|
63
|
+
float lumaDownRight = sampleLuma(coords, 1.0, -1.0);
|
|
64
|
+
|
|
65
|
+
// Combine the four edges lumas (using intermediary variables for future computations
|
|
66
|
+
// with the same values).
|
|
67
|
+
float lumaDownUp = lumaDown + lumaUp;
|
|
68
|
+
float lumaLeftRight = lumaLeft + lumaRight;
|
|
69
|
+
|
|
70
|
+
// Same for corners
|
|
71
|
+
float lumaLeftCorners = lumaDownLeft + lumaUpLeft;
|
|
72
|
+
float lumaDownCorners = lumaDownLeft + lumaDownRight;
|
|
73
|
+
float lumaRightCorners = lumaDownRight + lumaUpRight;
|
|
74
|
+
float lumaUpCorners = lumaUpRight + lumaUpLeft;
|
|
75
|
+
|
|
76
|
+
// Compute an estimation of the gradient along the horizontal and vertical axis.
|
|
77
|
+
float edgeHorizontal = abs(-2.0 * lumaLeft + lumaLeftCorners) + abs(-2.0 * lumaCenter + lumaDownUp) * 2.0 + abs(-2.0 * lumaRight + lumaRightCorners);
|
|
78
|
+
float edgeVertical = abs(-2.0 * lumaUp + lumaUpCorners) + abs(-2.0 * lumaCenter + lumaLeftRight) * 2.0 + abs(-2.0 * lumaDown + lumaDownCorners);
|
|
79
|
+
|
|
80
|
+
// Is the local edge horizontal or vertical ?
|
|
81
|
+
bool isHorizontal = (edgeHorizontal >= edgeVertical);
|
|
82
|
+
|
|
83
|
+
// Choose the step size (one pixel) accordingly.
|
|
84
|
+
float stepLength = isHorizontal ? inverseScreenSize.y : inverseScreenSize.x;
|
|
85
|
+
|
|
86
|
+
// Select the two neighboring texels lumas in the opposite direction to the local edge.
|
|
87
|
+
float luma1 = isHorizontal ? lumaDown : lumaLeft;
|
|
88
|
+
float luma2 = isHorizontal ? lumaUp : lumaRight;
|
|
89
|
+
// Compute gradients in this direction.
|
|
90
|
+
float gradient1 = luma1 - lumaCenter;
|
|
91
|
+
float gradient2 = luma2 - lumaCenter;
|
|
92
|
+
|
|
93
|
+
// Which direction is the steepest ?
|
|
94
|
+
bool is1Steepest = abs(gradient1) >= abs(gradient2);
|
|
95
|
+
|
|
96
|
+
// Gradient in the corresponding direction, normalized.
|
|
97
|
+
float gradientScaled = 0.25 * max(abs(gradient1), abs(gradient2));
|
|
98
|
+
|
|
99
|
+
// Average luma in the correct direction.
|
|
100
|
+
float lumaLocalAverage = 0.0;
|
|
101
|
+
if(is1Steepest){
|
|
102
|
+
// Switch the direction
|
|
103
|
+
stepLength = -stepLength;
|
|
104
|
+
lumaLocalAverage = 0.5 * (luma1 + lumaCenter);
|
|
105
|
+
} else {
|
|
106
|
+
lumaLocalAverage = 0.5 * (luma2 + lumaCenter);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// Shift UV in the correct direction by half a pixel.
|
|
110
|
+
vec2 currentUv = coords;
|
|
111
|
+
if(isHorizontal){
|
|
112
|
+
currentUv.y += stepLength * 0.5;
|
|
113
|
+
} else {
|
|
114
|
+
currentUv.x += stepLength * 0.5;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// Compute offset (for each iteration step) in the right direction.
|
|
118
|
+
vec2 offset = isHorizontal ? vec2(inverseScreenSize.x, 0.0) : vec2(0.0, inverseScreenSize.y);
|
|
119
|
+
// Compute UVs to explore on each side of the edge, orthogonally.
|
|
120
|
+
// The QUALITY allows us to step faster.
|
|
121
|
+
vec2 uv1 = currentUv - offset * QUALITY(0);
|
|
122
|
+
vec2 uv2 = currentUv + offset * QUALITY(0);
|
|
123
|
+
|
|
124
|
+
// Read the lumas at both current extremities of the exploration segment,
|
|
125
|
+
// and compute the delta wrt to the local average luma.
|
|
126
|
+
float lumaEnd1 = sampleLuma(uv1);
|
|
127
|
+
float lumaEnd2 = sampleLuma(uv2);
|
|
128
|
+
lumaEnd1 -= lumaLocalAverage;
|
|
129
|
+
lumaEnd2 -= lumaLocalAverage;
|
|
130
|
+
|
|
131
|
+
// If the luma deltas at the current extremities is larger than the local gradient,
|
|
132
|
+
// we have reached the side of the edge.
|
|
133
|
+
bool reached1 = abs(lumaEnd1) >= gradientScaled;
|
|
134
|
+
bool reached2 = abs(lumaEnd2) >= gradientScaled;
|
|
135
|
+
bool reachedBoth = reached1 && reached2;
|
|
136
|
+
|
|
137
|
+
// If the side is not reached, we continue to explore in this direction.
|
|
138
|
+
if(!reached1){
|
|
139
|
+
uv1 -= offset * QUALITY(1);
|
|
140
|
+
}
|
|
141
|
+
if(!reached2){
|
|
142
|
+
uv2 += offset * QUALITY(1);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// If both sides have not been reached, continue to explore.
|
|
146
|
+
if(!reachedBoth){
|
|
147
|
+
for(int i = 2; i < dIterations; i++){
|
|
148
|
+
// If needed, read luma in 1st direction, compute delta.
|
|
149
|
+
if(!reached1){
|
|
150
|
+
lumaEnd1 = sampleLuma(uv1);
|
|
151
|
+
lumaEnd1 = lumaEnd1 - lumaLocalAverage;
|
|
152
|
+
}
|
|
153
|
+
// If needed, read luma in opposite direction, compute delta.
|
|
154
|
+
if(!reached2){
|
|
155
|
+
lumaEnd2 = sampleLuma(uv2);
|
|
156
|
+
lumaEnd2 = lumaEnd2 - lumaLocalAverage;
|
|
157
|
+
}
|
|
158
|
+
// If the luma deltas at the current extremities is larger than the local gradient,
|
|
159
|
+
// we have reached the side of the edge.
|
|
160
|
+
reached1 = abs(lumaEnd1) >= gradientScaled;
|
|
161
|
+
reached2 = abs(lumaEnd2) >= gradientScaled;
|
|
162
|
+
reachedBoth = reached1 && reached2;
|
|
163
|
+
|
|
164
|
+
// If the side is not reached, we continue to explore in this direction,
|
|
165
|
+
// with a variable quality.
|
|
166
|
+
if(!reached1){
|
|
167
|
+
uv1 -= offset * QUALITY(i);
|
|
168
|
+
}
|
|
169
|
+
if(!reached2){
|
|
170
|
+
uv2 += offset * QUALITY(i);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// If both sides have been reached, stop the exploration.
|
|
174
|
+
if(reachedBoth){
|
|
175
|
+
break;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
// Compute the distances to each side edge of the edge (!).
|
|
181
|
+
float distance1 = isHorizontal ? (coords.x - uv1.x) : (coords.y - uv1.y);
|
|
182
|
+
float distance2 = isHorizontal ? (uv2.x - coords.x) : (uv2.y - coords.y);
|
|
183
|
+
|
|
184
|
+
// In which direction is the side of the edge closer ?
|
|
185
|
+
bool isDirection1 = distance1 < distance2;
|
|
186
|
+
float distanceFinal = min(distance1, distance2);
|
|
187
|
+
|
|
188
|
+
// Thickness of the edge.
|
|
189
|
+
float edgeThickness = (distance1 + distance2);
|
|
190
|
+
|
|
191
|
+
// Is the luma at center smaller than the local average ?
|
|
192
|
+
bool isLumaCenterSmaller = lumaCenter < lumaLocalAverage;
|
|
193
|
+
|
|
194
|
+
// If the luma at center is smaller than at its neighbour,
|
|
195
|
+
// the delta luma at each end should be positive (same variation).
|
|
196
|
+
bool correctVariation1 = (lumaEnd1 < 0.0) != isLumaCenterSmaller;
|
|
197
|
+
bool correctVariation2 = (lumaEnd2 < 0.0) != isLumaCenterSmaller;
|
|
198
|
+
|
|
199
|
+
// Only keep the result in the direction of the closer side of the edge.
|
|
200
|
+
bool correctVariation = isDirection1 ? correctVariation1 : correctVariation2;
|
|
201
|
+
|
|
202
|
+
// UV offset: read in the direction of the closest side of the edge.
|
|
203
|
+
float pixelOffset = - distanceFinal / edgeThickness + 0.5;
|
|
204
|
+
|
|
205
|
+
// If the luma variation is incorrect, do not offset.
|
|
206
|
+
float finalOffset = correctVariation ? pixelOffset : 0.0;
|
|
207
|
+
|
|
208
|
+
// Sub-pixel shifting
|
|
209
|
+
// Full weighted average of the luma over the 3x3 neighborhood.
|
|
210
|
+
float lumaAverage = (1.0 / 12.0) * (2.0 * (lumaDownUp + lumaLeftRight) + lumaLeftCorners + lumaRightCorners);
|
|
211
|
+
// Ratio of the delta between the global average and the center luma,
|
|
212
|
+
// over the luma range in the 3x3 neighborhood.
|
|
213
|
+
float subPixelOffset1 = clamp(abs(lumaAverage - lumaCenter) / lumaRange, 0.0, 1.0);
|
|
214
|
+
float subPixelOffset2 = (-2.0 * subPixelOffset1 + 3.0) * subPixelOffset1 * subPixelOffset1;
|
|
215
|
+
// Compute a sub-pixel offset based on this delta.
|
|
216
|
+
float subPixelOffsetFinal = subPixelOffset2 * subPixelOffset2 * float(dSubpixelQuality);
|
|
217
|
+
|
|
218
|
+
// Pick the biggest of the two offsets.
|
|
219
|
+
finalOffset = max(finalOffset, subPixelOffsetFinal);
|
|
220
|
+
|
|
221
|
+
// Compute the final UV coordinates.
|
|
222
|
+
vec2 finalUv = coords;
|
|
223
|
+
if(isHorizontal){
|
|
224
|
+
finalUv.y += finalOffset * stepLength;
|
|
225
|
+
} else {
|
|
226
|
+
finalUv.x += finalOffset * stepLength;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
// Read the color at the new UV coordinates, and use it.
|
|
230
|
+
gl_FragColor = texture2D(tColor, finalUv);
|
|
231
|
+
}
|
|
232
232
|
`;
|
|
@@ -7,53 +7,53 @@
|
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.gaussianDensity_frag = void 0;
|
|
10
|
-
exports.gaussianDensity_frag = `
|
|
11
|
-
precision highp float;
|
|
12
|
-
|
|
13
|
-
varying vec3 vPosition;
|
|
14
|
-
varying float vRadiusSqInv;
|
|
15
|
-
#if defined(dCalcType_groupId)
|
|
16
|
-
#if defined(dGridTexType_2d)
|
|
17
|
-
precision highp sampler2D;
|
|
18
|
-
uniform sampler2D tMinDistanceTex;
|
|
19
|
-
uniform vec3 uGridTexDim;
|
|
20
|
-
#elif defined(dGridTexType_3d)
|
|
21
|
-
precision highp sampler3D;
|
|
22
|
-
uniform sampler3D tMinDistanceTex;
|
|
23
|
-
#endif
|
|
24
|
-
varying float vGroup;
|
|
25
|
-
#endif
|
|
26
|
-
|
|
27
|
-
#include common
|
|
28
|
-
|
|
29
|
-
uniform vec3 uGridDim;
|
|
30
|
-
uniform vec2 uGridTexScale;
|
|
31
|
-
uniform float uCurrentSlice;
|
|
32
|
-
uniform float uCurrentX;
|
|
33
|
-
uniform float uCurrentY;
|
|
34
|
-
uniform float uAlpha;
|
|
35
|
-
uniform float uResolution;
|
|
36
|
-
uniform float uRadiusFactorInv;
|
|
37
|
-
|
|
38
|
-
void main() {
|
|
39
|
-
vec2 v = gl_FragCoord.xy - vec2(uCurrentX, uCurrentY) - 0.5;
|
|
40
|
-
vec3 fragPos = vec3(v.x, v.y, uCurrentSlice);
|
|
41
|
-
float dist = distance(fragPos, vPosition) * uResolution;
|
|
42
|
-
|
|
43
|
-
#if defined(dCalcType_density)
|
|
44
|
-
float density = exp(-uAlpha * ((dist * dist) * vRadiusSqInv));
|
|
45
|
-
gl_FragColor.a = density * uRadiusFactorInv;
|
|
46
|
-
#elif defined(dCalcType_minDistance)
|
|
47
|
-
gl_FragColor.a = 1.0 - dist * uRadiusFactorInv;
|
|
48
|
-
#elif defined(dCalcType_groupId)
|
|
49
|
-
#if defined(dGridTexType_2d)
|
|
50
|
-
float minDistance = 1.0 - texture2D(tMinDistanceTex, (gl_FragCoord.xy) / (uGridTexDim.xy / uGridTexScale)).a;
|
|
51
|
-
#elif defined(dGridTexType_3d)
|
|
52
|
-
float minDistance = 1.0 - texelFetch(tMinDistanceTex, ivec3(gl_FragCoord.xy, uCurrentSlice), 0).a;
|
|
53
|
-
#endif
|
|
54
|
-
if (dist * uRadiusFactorInv > minDistance + uResolution * 0.05)
|
|
55
|
-
discard;
|
|
56
|
-
gl_FragColor.rgb = packIntToRGB(vGroup);
|
|
57
|
-
#endif
|
|
58
|
-
}
|
|
10
|
+
exports.gaussianDensity_frag = `
|
|
11
|
+
precision highp float;
|
|
12
|
+
|
|
13
|
+
varying vec3 vPosition;
|
|
14
|
+
varying float vRadiusSqInv;
|
|
15
|
+
#if defined(dCalcType_groupId)
|
|
16
|
+
#if defined(dGridTexType_2d)
|
|
17
|
+
precision highp sampler2D;
|
|
18
|
+
uniform sampler2D tMinDistanceTex;
|
|
19
|
+
uniform vec3 uGridTexDim;
|
|
20
|
+
#elif defined(dGridTexType_3d)
|
|
21
|
+
precision highp sampler3D;
|
|
22
|
+
uniform sampler3D tMinDistanceTex;
|
|
23
|
+
#endif
|
|
24
|
+
varying float vGroup;
|
|
25
|
+
#endif
|
|
26
|
+
|
|
27
|
+
#include common
|
|
28
|
+
|
|
29
|
+
uniform vec3 uGridDim;
|
|
30
|
+
uniform vec2 uGridTexScale;
|
|
31
|
+
uniform float uCurrentSlice;
|
|
32
|
+
uniform float uCurrentX;
|
|
33
|
+
uniform float uCurrentY;
|
|
34
|
+
uniform float uAlpha;
|
|
35
|
+
uniform float uResolution;
|
|
36
|
+
uniform float uRadiusFactorInv;
|
|
37
|
+
|
|
38
|
+
void main() {
|
|
39
|
+
vec2 v = gl_FragCoord.xy - vec2(uCurrentX, uCurrentY) - 0.5;
|
|
40
|
+
vec3 fragPos = vec3(v.x, v.y, uCurrentSlice);
|
|
41
|
+
float dist = distance(fragPos, vPosition) * uResolution;
|
|
42
|
+
|
|
43
|
+
#if defined(dCalcType_density)
|
|
44
|
+
float density = exp(-uAlpha * ((dist * dist) * vRadiusSqInv));
|
|
45
|
+
gl_FragColor.a = density * uRadiusFactorInv;
|
|
46
|
+
#elif defined(dCalcType_minDistance)
|
|
47
|
+
gl_FragColor.a = 1.0 - dist * uRadiusFactorInv;
|
|
48
|
+
#elif defined(dCalcType_groupId)
|
|
49
|
+
#if defined(dGridTexType_2d)
|
|
50
|
+
float minDistance = 1.0 - texture2D(tMinDistanceTex, (gl_FragCoord.xy) / (uGridTexDim.xy / uGridTexScale)).a;
|
|
51
|
+
#elif defined(dGridTexType_3d)
|
|
52
|
+
float minDistance = 1.0 - texelFetch(tMinDistanceTex, ivec3(gl_FragCoord.xy, uCurrentSlice), 0).a;
|
|
53
|
+
#endif
|
|
54
|
+
if (dist * uRadiusFactorInv > minDistance + uResolution * 0.05)
|
|
55
|
+
discard;
|
|
56
|
+
gl_FragColor.rgb = packIntToRGB(vGroup);
|
|
57
|
+
#endif
|
|
58
|
+
}
|
|
59
59
|
`;
|
|
@@ -7,31 +7,31 @@
|
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.gaussianDensity_vert = void 0;
|
|
10
|
-
exports.gaussianDensity_vert = `
|
|
11
|
-
precision highp float;
|
|
12
|
-
|
|
13
|
-
attribute vec3 aPosition;
|
|
14
|
-
attribute float aRadius;
|
|
15
|
-
|
|
16
|
-
varying vec3 vPosition;
|
|
17
|
-
varying float vRadiusSqInv;
|
|
18
|
-
|
|
19
|
-
#if defined(dCalcType_groupId)
|
|
20
|
-
attribute float aGroup;
|
|
21
|
-
varying float vGroup;
|
|
22
|
-
#endif
|
|
23
|
-
|
|
24
|
-
uniform vec3 uBboxSize;
|
|
25
|
-
uniform vec3 uBboxMin;
|
|
26
|
-
uniform float uResolution;
|
|
27
|
-
|
|
28
|
-
void main() {
|
|
29
|
-
vRadiusSqInv = 1.0 / (aRadius * aRadius);
|
|
30
|
-
#if defined(dCalcType_groupId)
|
|
31
|
-
vGroup = aGroup;
|
|
32
|
-
#endif
|
|
33
|
-
gl_PointSize = ceil(((aRadius * 3.0) / uResolution) + uResolution);
|
|
34
|
-
vPosition = (aPosition - uBboxMin) / uResolution;
|
|
35
|
-
gl_Position = vec4(((aPosition - uBboxMin) / uBboxSize) * 2.0 - 1.0, 1.0);
|
|
36
|
-
}
|
|
10
|
+
exports.gaussianDensity_vert = `
|
|
11
|
+
precision highp float;
|
|
12
|
+
|
|
13
|
+
attribute vec3 aPosition;
|
|
14
|
+
attribute float aRadius;
|
|
15
|
+
|
|
16
|
+
varying vec3 vPosition;
|
|
17
|
+
varying float vRadiusSqInv;
|
|
18
|
+
|
|
19
|
+
#if defined(dCalcType_groupId)
|
|
20
|
+
attribute float aGroup;
|
|
21
|
+
varying float vGroup;
|
|
22
|
+
#endif
|
|
23
|
+
|
|
24
|
+
uniform vec3 uBboxSize;
|
|
25
|
+
uniform vec3 uBboxMin;
|
|
26
|
+
uniform float uResolution;
|
|
27
|
+
|
|
28
|
+
void main() {
|
|
29
|
+
vRadiusSqInv = 1.0 / (aRadius * aRadius);
|
|
30
|
+
#if defined(dCalcType_groupId)
|
|
31
|
+
vGroup = aGroup;
|
|
32
|
+
#endif
|
|
33
|
+
gl_PointSize = ceil(((aRadius * 3.0) / uResolution) + uResolution);
|
|
34
|
+
vPosition = (aPosition - uBboxMin) / uResolution;
|
|
35
|
+
gl_Position = vec4(((aPosition - uBboxMin) / uBboxSize) * 2.0 - 1.0, 1.0);
|
|
36
|
+
}
|
|
37
37
|
`;
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.hiZ_frag = void 0;
|
|
4
|
-
exports.hiZ_frag = `
|
|
5
|
-
precision highp float;
|
|
6
|
-
precision highp sampler2D;
|
|
7
|
-
|
|
8
|
-
uniform sampler2D tPreviousLevel;
|
|
9
|
-
uniform vec2 uInvSize;
|
|
10
|
-
uniform vec2 uOffset;
|
|
11
|
-
|
|
12
|
-
void main(void) {
|
|
13
|
-
vec2 position = gl_FragCoord.xy * uInvSize + uOffset;
|
|
14
|
-
|
|
15
|
-
float x = texture(tPreviousLevel, position).r;
|
|
16
|
-
float y = textureOffset(tPreviousLevel, position, ivec2(-1, 0)).r;
|
|
17
|
-
float z = textureOffset(tPreviousLevel, position, ivec2(-1, -1)).r;
|
|
18
|
-
float w = textureOffset(tPreviousLevel, position, ivec2(0, -1)).r;
|
|
19
|
-
|
|
20
|
-
gl_FragColor = vec4(max(max(x, y), max(z, w)));
|
|
21
|
-
}
|
|
4
|
+
exports.hiZ_frag = `
|
|
5
|
+
precision highp float;
|
|
6
|
+
precision highp sampler2D;
|
|
7
|
+
|
|
8
|
+
uniform sampler2D tPreviousLevel;
|
|
9
|
+
uniform vec2 uInvSize;
|
|
10
|
+
uniform vec2 uOffset;
|
|
11
|
+
|
|
12
|
+
void main(void) {
|
|
13
|
+
vec2 position = gl_FragCoord.xy * uInvSize + uOffset;
|
|
14
|
+
|
|
15
|
+
float x = texture(tPreviousLevel, position).r;
|
|
16
|
+
float y = textureOffset(tPreviousLevel, position, ivec2(-1, 0)).r;
|
|
17
|
+
float z = textureOffset(tPreviousLevel, position, ivec2(-1, -1)).r;
|
|
18
|
+
float w = textureOffset(tPreviousLevel, position, ivec2(0, -1)).r;
|
|
19
|
+
|
|
20
|
+
gl_FragColor = vec4(max(max(x, y), max(z, w)));
|
|
21
|
+
}
|
|
22
22
|
`;
|