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
|
@@ -6,46 +6,46 @@
|
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
8
|
exports.fade_lod = void 0;
|
|
9
|
-
exports.fade_lod = `
|
|
10
|
-
if (uLod.w == 0.0 && (uLod.x != 0.0 || uLod.y != 0.0)) {
|
|
11
|
-
float d = dot(uCameraPlane.xyz, vModelPosition) + uCameraPlane.w;
|
|
12
|
-
float ta = min(
|
|
13
|
-
smoothstep(uLod.x, uLod.x + uLod.z, d),
|
|
14
|
-
1.0 - smoothstep(uLod.y - uLod.z, uLod.y, d)
|
|
15
|
-
);
|
|
16
|
-
|
|
17
|
-
#if defined(dRenderVariant_color)
|
|
18
|
-
float at = 0.0;
|
|
19
|
-
|
|
20
|
-
// shift by view-offset during multi-sample rendering to allow for blending
|
|
21
|
-
vec2 coord = gl_FragCoord.xy + uViewOffset * 0.25;
|
|
22
|
-
|
|
23
|
-
const mat4 thresholdMatrix = mat4(
|
|
24
|
-
1.0 / 17.0, 9.0 / 17.0, 3.0 / 17.0, 11.0 / 17.0,
|
|
25
|
-
13.0 / 17.0, 5.0 / 17.0, 15.0 / 17.0, 7.0 / 17.0,
|
|
26
|
-
4.0 / 17.0, 12.0 / 17.0, 2.0 / 17.0, 10.0 / 17.0,
|
|
27
|
-
16.0 / 17.0, 8.0 / 17.0, 14.0 / 17.0, 6.0 / 17.0
|
|
28
|
-
);
|
|
29
|
-
int ci = int(intMod(coord.x, 4.0));
|
|
30
|
-
int ri = int(intMod(coord.y, 4.0));
|
|
31
|
-
#if __VERSION__ == 100
|
|
32
|
-
vec4 i = vec4(float(ci * 4 + ri));
|
|
33
|
-
vec4 v = thresholdMatrix[0] * vec4(equal(i, vec4(0.0, 1.0, 2.0, 3.0))) +
|
|
34
|
-
thresholdMatrix[1] * vec4(equal(i, vec4(4.0, 5.0, 6.0, 7.0))) +
|
|
35
|
-
thresholdMatrix[2] * vec4(equal(i, vec4(8.0, 9.0, 10.0, 11.0))) +
|
|
36
|
-
thresholdMatrix[3] * vec4(equal(i, vec4(12.0, 13.0, 14.0, 15.0)));
|
|
37
|
-
at = v.x + v.y + v.z + v.w;
|
|
38
|
-
#else
|
|
39
|
-
at = thresholdMatrix[ci][ri];
|
|
40
|
-
#endif
|
|
41
|
-
|
|
42
|
-
if (ta < 0.99 && (ta < 0.01 || ta < at)) {
|
|
43
|
-
discard;
|
|
44
|
-
}
|
|
45
|
-
#else
|
|
46
|
-
if (ta < uPickingAlphaThreshold) {
|
|
47
|
-
discard;
|
|
48
|
-
}
|
|
49
|
-
#endif
|
|
50
|
-
}
|
|
9
|
+
exports.fade_lod = `
|
|
10
|
+
if (uLod.w == 0.0 && (uLod.x != 0.0 || uLod.y != 0.0)) {
|
|
11
|
+
float d = dot(uCameraPlane.xyz, vModelPosition) + uCameraPlane.w;
|
|
12
|
+
float ta = min(
|
|
13
|
+
smoothstep(uLod.x, uLod.x + uLod.z, d),
|
|
14
|
+
1.0 - smoothstep(uLod.y - uLod.z, uLod.y, d)
|
|
15
|
+
);
|
|
16
|
+
|
|
17
|
+
#if defined(dRenderVariant_color)
|
|
18
|
+
float at = 0.0;
|
|
19
|
+
|
|
20
|
+
// shift by view-offset during multi-sample rendering to allow for blending
|
|
21
|
+
vec2 coord = gl_FragCoord.xy + uViewOffset * 0.25;
|
|
22
|
+
|
|
23
|
+
const mat4 thresholdMatrix = mat4(
|
|
24
|
+
1.0 / 17.0, 9.0 / 17.0, 3.0 / 17.0, 11.0 / 17.0,
|
|
25
|
+
13.0 / 17.0, 5.0 / 17.0, 15.0 / 17.0, 7.0 / 17.0,
|
|
26
|
+
4.0 / 17.0, 12.0 / 17.0, 2.0 / 17.0, 10.0 / 17.0,
|
|
27
|
+
16.0 / 17.0, 8.0 / 17.0, 14.0 / 17.0, 6.0 / 17.0
|
|
28
|
+
);
|
|
29
|
+
int ci = int(intMod(coord.x, 4.0));
|
|
30
|
+
int ri = int(intMod(coord.y, 4.0));
|
|
31
|
+
#if __VERSION__ == 100
|
|
32
|
+
vec4 i = vec4(float(ci * 4 + ri));
|
|
33
|
+
vec4 v = thresholdMatrix[0] * vec4(equal(i, vec4(0.0, 1.0, 2.0, 3.0))) +
|
|
34
|
+
thresholdMatrix[1] * vec4(equal(i, vec4(4.0, 5.0, 6.0, 7.0))) +
|
|
35
|
+
thresholdMatrix[2] * vec4(equal(i, vec4(8.0, 9.0, 10.0, 11.0))) +
|
|
36
|
+
thresholdMatrix[3] * vec4(equal(i, vec4(12.0, 13.0, 14.0, 15.0)));
|
|
37
|
+
at = v.x + v.y + v.z + v.w;
|
|
38
|
+
#else
|
|
39
|
+
at = thresholdMatrix[ci][ri];
|
|
40
|
+
#endif
|
|
41
|
+
|
|
42
|
+
if (ta < 0.99 && (ta < 0.01 || ta < at)) {
|
|
43
|
+
discard;
|
|
44
|
+
}
|
|
45
|
+
#else
|
|
46
|
+
if (ta < uPickingAlphaThreshold) {
|
|
47
|
+
discard;
|
|
48
|
+
}
|
|
49
|
+
#endif
|
|
50
|
+
}
|
|
51
51
|
`;
|
|
@@ -6,43 +6,43 @@
|
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
8
|
exports.float_to_rgba = void 0;
|
|
9
|
-
exports.float_to_rgba = `
|
|
10
|
-
// floatToRgba adapted from https://github.com/equinor/glsl-float-to-rgba
|
|
11
|
-
// MIT License, Copyright (c) 2020 Equinor
|
|
12
|
-
|
|
13
|
-
float shiftRight (float v, float amt) {
|
|
14
|
-
v = floor(v) + 0.5;
|
|
15
|
-
return floor(v / exp2(amt));
|
|
16
|
-
}
|
|
17
|
-
float shiftLeft (float v, float amt) {
|
|
18
|
-
return floor(v * exp2(amt) + 0.5);
|
|
19
|
-
}
|
|
20
|
-
float maskLast (float v, float bits) {
|
|
21
|
-
return mod(v, shiftLeft(1.0, bits));
|
|
22
|
-
}
|
|
23
|
-
float extractBits (float num, float from, float to) {
|
|
24
|
-
from = floor(from + 0.5); to = floor(to + 0.5);
|
|
25
|
-
return maskLast(shiftRight(num, from), to - from);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
vec4 floatToRgba(float texelFloat, bool littleEndian) {
|
|
29
|
-
if (texelFloat == 0.0) return vec4(0.0, 0.0, 0.0, 0.0);
|
|
30
|
-
float sign = texelFloat > 0.0 ? 0.0 : 1.0;
|
|
31
|
-
texelFloat = abs(texelFloat);
|
|
32
|
-
float exponent = floor(log2(texelFloat));
|
|
33
|
-
float biased_exponent = exponent + 127.0;
|
|
34
|
-
float fraction = ((texelFloat / exp2(exponent)) - 1.0) * 8388608.0;
|
|
35
|
-
float t = biased_exponent / 2.0;
|
|
36
|
-
float last_bit_of_biased_exponent = fract(t) * 2.0;
|
|
37
|
-
float remaining_bits_of_biased_exponent = floor(t);
|
|
38
|
-
float byte4 = extractBits(fraction, 0.0, 8.0) / 255.0;
|
|
39
|
-
float byte3 = extractBits(fraction, 8.0, 16.0) / 255.0;
|
|
40
|
-
float byte2 = (last_bit_of_biased_exponent * 128.0 + extractBits(fraction, 16.0, 23.0)) / 255.0;
|
|
41
|
-
float byte1 = (sign * 128.0 + remaining_bits_of_biased_exponent) / 255.0;
|
|
42
|
-
return (
|
|
43
|
-
littleEndian
|
|
44
|
-
? vec4(byte4, byte3, byte2, byte1)
|
|
45
|
-
: vec4(byte1, byte2, byte3, byte4)
|
|
46
|
-
);
|
|
47
|
-
}
|
|
9
|
+
exports.float_to_rgba = `
|
|
10
|
+
// floatToRgba adapted from https://github.com/equinor/glsl-float-to-rgba
|
|
11
|
+
// MIT License, Copyright (c) 2020 Equinor
|
|
12
|
+
|
|
13
|
+
float shiftRight (float v, float amt) {
|
|
14
|
+
v = floor(v) + 0.5;
|
|
15
|
+
return floor(v / exp2(amt));
|
|
16
|
+
}
|
|
17
|
+
float shiftLeft (float v, float amt) {
|
|
18
|
+
return floor(v * exp2(amt) + 0.5);
|
|
19
|
+
}
|
|
20
|
+
float maskLast (float v, float bits) {
|
|
21
|
+
return mod(v, shiftLeft(1.0, bits));
|
|
22
|
+
}
|
|
23
|
+
float extractBits (float num, float from, float to) {
|
|
24
|
+
from = floor(from + 0.5); to = floor(to + 0.5);
|
|
25
|
+
return maskLast(shiftRight(num, from), to - from);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
vec4 floatToRgba(float texelFloat, bool littleEndian) {
|
|
29
|
+
if (texelFloat == 0.0) return vec4(0.0, 0.0, 0.0, 0.0);
|
|
30
|
+
float sign = texelFloat > 0.0 ? 0.0 : 1.0;
|
|
31
|
+
texelFloat = abs(texelFloat);
|
|
32
|
+
float exponent = floor(log2(texelFloat));
|
|
33
|
+
float biased_exponent = exponent + 127.0;
|
|
34
|
+
float fraction = ((texelFloat / exp2(exponent)) - 1.0) * 8388608.0;
|
|
35
|
+
float t = biased_exponent / 2.0;
|
|
36
|
+
float last_bit_of_biased_exponent = fract(t) * 2.0;
|
|
37
|
+
float remaining_bits_of_biased_exponent = floor(t);
|
|
38
|
+
float byte4 = extractBits(fraction, 0.0, 8.0) / 255.0;
|
|
39
|
+
float byte3 = extractBits(fraction, 8.0, 16.0) / 255.0;
|
|
40
|
+
float byte2 = (last_bit_of_biased_exponent * 128.0 + extractBits(fraction, 16.0, 23.0)) / 255.0;
|
|
41
|
+
float byte1 = (sign * 128.0 + remaining_bits_of_biased_exponent) / 255.0;
|
|
42
|
+
return (
|
|
43
|
+
littleEndian
|
|
44
|
+
? vec4(byte4, byte3, byte2, byte1)
|
|
45
|
+
: vec4(byte1, byte2, byte3, byte4)
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
48
|
`;
|
|
@@ -9,131 +9,131 @@
|
|
|
9
9
|
*/
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
11
|
exports.light_frag_params = void 0;
|
|
12
|
-
exports.light_frag_params = `
|
|
13
|
-
#if dLightCount != 0
|
|
14
|
-
uniform vec3 uLightDirection[dLightCount];
|
|
15
|
-
uniform vec3 uLightColor[dLightCount];
|
|
16
|
-
#endif
|
|
17
|
-
uniform vec3 uAmbientColor;
|
|
18
|
-
|
|
19
|
-
struct PhysicalMaterial {
|
|
20
|
-
vec3 diffuseColor;
|
|
21
|
-
float roughness;
|
|
22
|
-
vec3 specularColor;
|
|
23
|
-
float specularF90;
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
struct IncidentLight {
|
|
27
|
-
vec3 color;
|
|
28
|
-
vec3 direction;
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
struct ReflectedLight {
|
|
32
|
-
vec3 directDiffuse;
|
|
33
|
-
vec3 directSpecular;
|
|
34
|
-
vec3 indirectDiffuse;
|
|
35
|
-
vec3 indirectSpecular;
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
struct GeometricContext {
|
|
39
|
-
vec3 position;
|
|
40
|
-
vec3 normal;
|
|
41
|
-
vec3 viewDir;
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
vec3 BRDF_Lambert(const in vec3 diffuseColor) {
|
|
45
|
-
return RECIPROCAL_PI * diffuseColor;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
vec3 F_Schlick(const in vec3 f0, const in float f90, const in float dotVH) {
|
|
49
|
-
// Original approximation by Christophe Schlick '94
|
|
50
|
-
// float fresnel = pow( 1.0 - dotVH, 5.0 );
|
|
51
|
-
// Optimized variant (presented by Epic at SIGGRAPH '13)
|
|
52
|
-
// https://cdn2.unrealengine.com/Resources/files/2013SiggraphPresentationsNotes-26915738.pdf
|
|
53
|
-
float fresnel = exp2((-5.55473 * dotVH - 6.98316) * dotVH);
|
|
54
|
-
return f0 * (1.0 - fresnel) + (f90 * fresnel);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
// Moving Frostbite to Physically Based Rendering 3.0 - page 12, listing 2
|
|
58
|
-
// https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf
|
|
59
|
-
float V_GGX_SmithCorrelated(const in float alpha, const in float dotNL, const in float dotNV) {
|
|
60
|
-
float a2 = pow2(alpha);
|
|
61
|
-
float gv = dotNL * sqrt(a2 + (1.0 - a2) * pow2(dotNV));
|
|
62
|
-
float gl = dotNV * sqrt(a2 + (1.0 - a2) * pow2(dotNL));
|
|
63
|
-
return 0.5 / max(gv + gl, EPSILON);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
// Microfacet Models for Refraction through Rough Surfaces - equation (33)
|
|
67
|
-
// http://graphicrants.blogspot.com/2013/08/specular-brdf-reference.html
|
|
68
|
-
// alpha is "roughness squared" in Disney’s reparameterization
|
|
69
|
-
float D_GGX(const in float alpha, const in float dotNH) {
|
|
70
|
-
float a2 = pow2(alpha);
|
|
71
|
-
float denom = pow2(dotNH) * (a2 - 1.0) + 1.0; // avoid alpha = 0 with dotNH = 1
|
|
72
|
-
return RECIPROCAL_PI * a2 / pow2(denom);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
// GGX Distribution, Schlick Fresnel, GGX_SmithCorrelated Visibility
|
|
76
|
-
vec3 BRDF_GGX(const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float roughness) {
|
|
77
|
-
float alpha = pow2(roughness); // UE4's roughness
|
|
78
|
-
vec3 halfDir = normalize( lightDir + viewDir);
|
|
79
|
-
float dotNL = saturate(dot(normal, lightDir));
|
|
80
|
-
float dotNV = saturate(dot(normal, viewDir));
|
|
81
|
-
float dotNH = saturate(dot(normal, halfDir));
|
|
82
|
-
float dotVH = saturate(dot(viewDir, halfDir));
|
|
83
|
-
vec3 F = F_Schlick(f0, f90, dotVH);
|
|
84
|
-
float V = V_GGX_SmithCorrelated(alpha, dotNL, dotNV);
|
|
85
|
-
float D = D_GGX(alpha, dotNH);
|
|
86
|
-
return F * (V * D);
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
// Analytical approximation of the DFG LUT, one half of the
|
|
90
|
-
// split-sum approximation used in indirect specular lighting.
|
|
91
|
-
// via 'environmentBRDF' from "Physically Based Shading on Mobile"
|
|
92
|
-
// https://www.unrealengine.com/blog/physically-based-shading-on-mobile
|
|
93
|
-
vec2 DFGApprox(const in vec3 normal, const in vec3 viewDir, const in float roughness) {
|
|
94
|
-
float dotNV = saturate(dot(normal, viewDir));
|
|
95
|
-
const vec4 c0 = vec4(-1, -0.0275, -0.572, 0.022);
|
|
96
|
-
const vec4 c1 = vec4(1, 0.0425, 1.04, -0.04);
|
|
97
|
-
vec4 r = roughness * c0 + c1;
|
|
98
|
-
float a004 = min(r.x * r.x, exp2(-9.28 * dotNV)) * r.x + r.y;
|
|
99
|
-
vec2 fab = vec2(-1.04, 1.04) * a004 + r.zw;
|
|
100
|
-
return fab;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
// Fdez-Agüera's "Multiple-Scattering Microfacet Model for Real-Time Image Based Lighting"
|
|
104
|
-
// Approximates multiscattering in order to preserve energy.
|
|
105
|
-
// http://www.jcgt.org/published/0008/01/03/
|
|
106
|
-
void computeMultiscattering(const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter) {
|
|
107
|
-
vec2 fab = DFGApprox(normal, viewDir, roughness);
|
|
108
|
-
vec3 FssEss = specularColor * fab.x + specularF90 * fab.y;
|
|
109
|
-
float Ess = fab.x + fab.y;
|
|
110
|
-
float Ems = 1.0 - Ess;
|
|
111
|
-
vec3 Favg = specularColor + (1.0 - specularColor) * 0.047619; // 1/21
|
|
112
|
-
vec3 Fms = FssEss * Favg / (1.0 - Ems * Favg);
|
|
113
|
-
singleScatter += FssEss;
|
|
114
|
-
multiScatter += Fms * Ems;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
void RE_Direct_Physical(const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {
|
|
118
|
-
float dotNL = saturate(dot(geometry.normal, directLight.direction));
|
|
119
|
-
vec3 irradiance = dotNL * directLight.color;
|
|
120
|
-
reflectedLight.directSpecular += irradiance * BRDF_GGX(directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness);
|
|
121
|
-
reflectedLight.directDiffuse += irradiance * BRDF_Lambert(material.diffuseColor);
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
void RE_IndirectDiffuse_Physical(const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {
|
|
125
|
-
reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert(material.diffuseColor);
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {
|
|
129
|
-
// Both indirect specular and indirect diffuse light accumulate here
|
|
130
|
-
vec3 singleScattering = vec3(0.0);
|
|
131
|
-
vec3 multiScattering = vec3(0.0);
|
|
132
|
-
vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;
|
|
133
|
-
computeMultiscattering(geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering);
|
|
134
|
-
vec3 diffuse = material.diffuseColor * (1.0 - ( singleScattering + multiScattering));
|
|
135
|
-
reflectedLight.indirectSpecular += radiance * singleScattering;
|
|
136
|
-
reflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;
|
|
137
|
-
reflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;
|
|
138
|
-
}
|
|
12
|
+
exports.light_frag_params = `
|
|
13
|
+
#if dLightCount != 0
|
|
14
|
+
uniform vec3 uLightDirection[dLightCount];
|
|
15
|
+
uniform vec3 uLightColor[dLightCount];
|
|
16
|
+
#endif
|
|
17
|
+
uniform vec3 uAmbientColor;
|
|
18
|
+
|
|
19
|
+
struct PhysicalMaterial {
|
|
20
|
+
vec3 diffuseColor;
|
|
21
|
+
float roughness;
|
|
22
|
+
vec3 specularColor;
|
|
23
|
+
float specularF90;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
struct IncidentLight {
|
|
27
|
+
vec3 color;
|
|
28
|
+
vec3 direction;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
struct ReflectedLight {
|
|
32
|
+
vec3 directDiffuse;
|
|
33
|
+
vec3 directSpecular;
|
|
34
|
+
vec3 indirectDiffuse;
|
|
35
|
+
vec3 indirectSpecular;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
struct GeometricContext {
|
|
39
|
+
vec3 position;
|
|
40
|
+
vec3 normal;
|
|
41
|
+
vec3 viewDir;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
vec3 BRDF_Lambert(const in vec3 diffuseColor) {
|
|
45
|
+
return RECIPROCAL_PI * diffuseColor;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
vec3 F_Schlick(const in vec3 f0, const in float f90, const in float dotVH) {
|
|
49
|
+
// Original approximation by Christophe Schlick '94
|
|
50
|
+
// float fresnel = pow( 1.0 - dotVH, 5.0 );
|
|
51
|
+
// Optimized variant (presented by Epic at SIGGRAPH '13)
|
|
52
|
+
// https://cdn2.unrealengine.com/Resources/files/2013SiggraphPresentationsNotes-26915738.pdf
|
|
53
|
+
float fresnel = exp2((-5.55473 * dotVH - 6.98316) * dotVH);
|
|
54
|
+
return f0 * (1.0 - fresnel) + (f90 * fresnel);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Moving Frostbite to Physically Based Rendering 3.0 - page 12, listing 2
|
|
58
|
+
// https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf
|
|
59
|
+
float V_GGX_SmithCorrelated(const in float alpha, const in float dotNL, const in float dotNV) {
|
|
60
|
+
float a2 = pow2(alpha);
|
|
61
|
+
float gv = dotNL * sqrt(a2 + (1.0 - a2) * pow2(dotNV));
|
|
62
|
+
float gl = dotNV * sqrt(a2 + (1.0 - a2) * pow2(dotNL));
|
|
63
|
+
return 0.5 / max(gv + gl, EPSILON);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// Microfacet Models for Refraction through Rough Surfaces - equation (33)
|
|
67
|
+
// http://graphicrants.blogspot.com/2013/08/specular-brdf-reference.html
|
|
68
|
+
// alpha is "roughness squared" in Disney’s reparameterization
|
|
69
|
+
float D_GGX(const in float alpha, const in float dotNH) {
|
|
70
|
+
float a2 = pow2(alpha);
|
|
71
|
+
float denom = pow2(dotNH) * (a2 - 1.0) + 1.0; // avoid alpha = 0 with dotNH = 1
|
|
72
|
+
return RECIPROCAL_PI * a2 / pow2(denom);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// GGX Distribution, Schlick Fresnel, GGX_SmithCorrelated Visibility
|
|
76
|
+
vec3 BRDF_GGX(const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float roughness) {
|
|
77
|
+
float alpha = pow2(roughness); // UE4's roughness
|
|
78
|
+
vec3 halfDir = normalize( lightDir + viewDir);
|
|
79
|
+
float dotNL = saturate(dot(normal, lightDir));
|
|
80
|
+
float dotNV = saturate(dot(normal, viewDir));
|
|
81
|
+
float dotNH = saturate(dot(normal, halfDir));
|
|
82
|
+
float dotVH = saturate(dot(viewDir, halfDir));
|
|
83
|
+
vec3 F = F_Schlick(f0, f90, dotVH);
|
|
84
|
+
float V = V_GGX_SmithCorrelated(alpha, dotNL, dotNV);
|
|
85
|
+
float D = D_GGX(alpha, dotNH);
|
|
86
|
+
return F * (V * D);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// Analytical approximation of the DFG LUT, one half of the
|
|
90
|
+
// split-sum approximation used in indirect specular lighting.
|
|
91
|
+
// via 'environmentBRDF' from "Physically Based Shading on Mobile"
|
|
92
|
+
// https://www.unrealengine.com/blog/physically-based-shading-on-mobile
|
|
93
|
+
vec2 DFGApprox(const in vec3 normal, const in vec3 viewDir, const in float roughness) {
|
|
94
|
+
float dotNV = saturate(dot(normal, viewDir));
|
|
95
|
+
const vec4 c0 = vec4(-1, -0.0275, -0.572, 0.022);
|
|
96
|
+
const vec4 c1 = vec4(1, 0.0425, 1.04, -0.04);
|
|
97
|
+
vec4 r = roughness * c0 + c1;
|
|
98
|
+
float a004 = min(r.x * r.x, exp2(-9.28 * dotNV)) * r.x + r.y;
|
|
99
|
+
vec2 fab = vec2(-1.04, 1.04) * a004 + r.zw;
|
|
100
|
+
return fab;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// Fdez-Agüera's "Multiple-Scattering Microfacet Model for Real-Time Image Based Lighting"
|
|
104
|
+
// Approximates multiscattering in order to preserve energy.
|
|
105
|
+
// http://www.jcgt.org/published/0008/01/03/
|
|
106
|
+
void computeMultiscattering(const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter) {
|
|
107
|
+
vec2 fab = DFGApprox(normal, viewDir, roughness);
|
|
108
|
+
vec3 FssEss = specularColor * fab.x + specularF90 * fab.y;
|
|
109
|
+
float Ess = fab.x + fab.y;
|
|
110
|
+
float Ems = 1.0 - Ess;
|
|
111
|
+
vec3 Favg = specularColor + (1.0 - specularColor) * 0.047619; // 1/21
|
|
112
|
+
vec3 Fms = FssEss * Favg / (1.0 - Ems * Favg);
|
|
113
|
+
singleScatter += FssEss;
|
|
114
|
+
multiScatter += Fms * Ems;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
void RE_Direct_Physical(const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {
|
|
118
|
+
float dotNL = saturate(dot(geometry.normal, directLight.direction));
|
|
119
|
+
vec3 irradiance = dotNL * directLight.color;
|
|
120
|
+
reflectedLight.directSpecular += irradiance * BRDF_GGX(directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness);
|
|
121
|
+
reflectedLight.directDiffuse += irradiance * BRDF_Lambert(material.diffuseColor);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
void RE_IndirectDiffuse_Physical(const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {
|
|
125
|
+
reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert(material.diffuseColor);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {
|
|
129
|
+
// Both indirect specular and indirect diffuse light accumulate here
|
|
130
|
+
vec3 singleScattering = vec3(0.0);
|
|
131
|
+
vec3 multiScattering = vec3(0.0);
|
|
132
|
+
vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;
|
|
133
|
+
computeMultiscattering(geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering);
|
|
134
|
+
vec3 diffuse = material.diffuseColor * (1.0 - ( singleScattering + multiScattering));
|
|
135
|
+
reflectedLight.indirectSpecular += radiance * singleScattering;
|
|
136
|
+
reflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;
|
|
137
|
+
reflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;
|
|
138
|
+
}
|
|
139
139
|
`;
|
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
8
|
exports.matrix_scale = void 0;
|
|
9
|
-
exports.matrix_scale = `
|
|
10
|
-
float matrixScale(in mat4 m){
|
|
11
|
-
vec4 r = m[0];
|
|
12
|
-
return sqrt(r[0] * r[0] + r[1] * r[1] + r[2] * r[2]);
|
|
13
|
-
}
|
|
9
|
+
exports.matrix_scale = `
|
|
10
|
+
float matrixScale(in mat4 m){
|
|
11
|
+
vec4 r = m[0];
|
|
12
|
+
return sqrt(r[0] * r[0] + r[1] * r[1] + r[2] * r[2]);
|
|
13
|
+
}
|
|
14
14
|
`;
|
|
@@ -6,18 +6,18 @@
|
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
8
|
exports.read_from_texture = void 0;
|
|
9
|
-
exports.read_from_texture = `
|
|
10
|
-
vec4 readFromTexture(const in sampler2D tex, const in float i, const in vec2 dim) {
|
|
11
|
-
float x = intMod(i, dim.x);
|
|
12
|
-
float y = floor(intDiv(i, dim.x));
|
|
13
|
-
vec2 uv = (vec2(x, y) + 0.5) / dim;
|
|
14
|
-
return texture2D(tex, uv);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
vec4 readFromTexture(const in sampler2D tex, const in int i, const in vec2 dim) {
|
|
18
|
-
int x = imod(i, int(dim.x));
|
|
19
|
-
int y = i / int(dim.x);
|
|
20
|
-
vec2 uv = (vec2(x, y) + 0.5) / dim;
|
|
21
|
-
return texture2D(tex, uv);
|
|
22
|
-
}
|
|
9
|
+
exports.read_from_texture = `
|
|
10
|
+
vec4 readFromTexture(const in sampler2D tex, const in float i, const in vec2 dim) {
|
|
11
|
+
float x = intMod(i, dim.x);
|
|
12
|
+
float y = floor(intDiv(i, dim.x));
|
|
13
|
+
vec2 uv = (vec2(x, y) + 0.5) / dim;
|
|
14
|
+
return texture2D(tex, uv);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
vec4 readFromTexture(const in sampler2D tex, const in int i, const in vec2 dim) {
|
|
18
|
+
int x = imod(i, int(dim.x));
|
|
19
|
+
int y = i / int(dim.x);
|
|
20
|
+
vec2 uv = (vec2(x, y) + 0.5) / dim;
|
|
21
|
+
return texture2D(tex, uv);
|
|
22
|
+
}
|
|
23
23
|
`;
|