molstar 4.2.0 → 4.4.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/build/viewer/molstar.css +1 -1
- package/build/viewer/molstar.js +1 -1
- package/lib/apps/docking-viewer/viewport.d.ts +1 -1
- package/lib/apps/docking-viewer/viewport.js +2 -1
- package/lib/apps/mesoscale-explorer/app.d.ts +3 -1
- package/lib/apps/mesoscale-explorer/app.js +12 -1
- package/lib/apps/mesoscale-explorer/behavior/camera.d.ts +12 -0
- package/lib/apps/mesoscale-explorer/behavior/camera.js +32 -6
- package/lib/apps/mesoscale-explorer/behavior/select.d.ts +1 -0
- package/lib/apps/mesoscale-explorer/behavior/select.js +58 -9
- package/lib/apps/mesoscale-explorer/data/cellpack/model.js +4 -6
- package/lib/apps/mesoscale-explorer/data/cellpack/preset.js +8 -5
- package/lib/apps/mesoscale-explorer/data/generic/model.d.ts +1 -0
- package/lib/apps/mesoscale-explorer/data/generic/model.js +2 -1
- package/lib/apps/mesoscale-explorer/data/generic/preset.js +7 -6
- package/lib/apps/mesoscale-explorer/data/mmcif/model.js +3 -1
- package/lib/apps/mesoscale-explorer/data/mmcif/preset.js +6 -3
- package/lib/apps/mesoscale-explorer/data/petworld/model.js +3 -1
- package/lib/apps/mesoscale-explorer/data/petworld/preset.js +6 -3
- package/lib/apps/mesoscale-explorer/data/state.d.ts +48 -10
- package/lib/apps/mesoscale-explorer/data/state.js +83 -8
- package/lib/apps/mesoscale-explorer/index.html +6 -1
- package/lib/apps/mesoscale-explorer/style.scss +33 -0
- package/lib/apps/mesoscale-explorer/ui/entities.d.ts +23 -1
- package/lib/apps/mesoscale-explorer/ui/entities.js +301 -32
- package/lib/apps/mesoscale-explorer/ui/panels.d.ts +1 -0
- package/lib/apps/mesoscale-explorer/ui/panels.js +42 -5
- package/lib/apps/mesoscale-explorer/ui/states.d.ts +60 -2
- package/lib/apps/mesoscale-explorer/ui/states.js +471 -11
- package/lib/apps/viewer/app.d.ts +12 -5
- package/lib/apps/viewer/app.js +30 -1
- package/lib/commonjs/apps/docking-viewer/viewport.d.ts +1 -1
- package/lib/commonjs/apps/docking-viewer/viewport.js +2 -1
- package/lib/commonjs/apps/mesoscale-explorer/app.d.ts +3 -1
- package/lib/commonjs/apps/mesoscale-explorer/app.js +12 -1
- package/lib/commonjs/apps/mesoscale-explorer/behavior/camera.d.ts +12 -0
- package/lib/commonjs/apps/mesoscale-explorer/behavior/camera.js +34 -8
- package/lib/commonjs/apps/mesoscale-explorer/behavior/select.d.ts +1 -0
- package/lib/commonjs/apps/mesoscale-explorer/behavior/select.js +58 -9
- package/lib/commonjs/apps/mesoscale-explorer/data/cellpack/model.js +4 -6
- package/lib/commonjs/apps/mesoscale-explorer/data/cellpack/preset.js +8 -6
- package/lib/commonjs/apps/mesoscale-explorer/data/generic/model.d.ts +1 -0
- package/lib/commonjs/apps/mesoscale-explorer/data/generic/model.js +2 -1
- package/lib/commonjs/apps/mesoscale-explorer/data/generic/preset.js +9 -9
- package/lib/commonjs/apps/mesoscale-explorer/data/mmcif/model.js +3 -1
- package/lib/commonjs/apps/mesoscale-explorer/data/mmcif/preset.js +6 -4
- package/lib/commonjs/apps/mesoscale-explorer/data/petworld/model.js +3 -1
- package/lib/commonjs/apps/mesoscale-explorer/data/petworld/preset.js +6 -4
- package/lib/commonjs/apps/mesoscale-explorer/data/state.d.ts +48 -10
- package/lib/commonjs/apps/mesoscale-explorer/data/state.js +107 -28
- package/lib/commonjs/apps/mesoscale-explorer/data/util.js +2 -3
- package/lib/commonjs/apps/mesoscale-explorer/ui/entities.d.ts +23 -1
- package/lib/commonjs/apps/mesoscale-explorer/ui/entities.js +302 -30
- package/lib/commonjs/apps/mesoscale-explorer/ui/panels.d.ts +1 -0
- package/lib/commonjs/apps/mesoscale-explorer/ui/panels.js +39 -2
- package/lib/commonjs/apps/mesoscale-explorer/ui/states.d.ts +60 -2
- package/lib/commonjs/apps/mesoscale-explorer/ui/states.js +477 -13
- package/lib/commonjs/apps/viewer/app.d.ts +12 -5
- package/lib/commonjs/apps/viewer/app.js +29 -0
- package/lib/commonjs/cli/chem-comp-dict/util.js +7 -7
- package/lib/commonjs/cli/cif2bcif/converter.js +1 -2
- package/lib/commonjs/cli/cifschema/util/cif-dic.js +2 -3
- package/lib/commonjs/cli/cifschema/util/generate.js +1 -2
- package/lib/commonjs/cli/cifschema/util/helper.js +1 -2
- package/lib/commonjs/cli/cifschema/util/schema.js +9 -10
- package/lib/commonjs/cli/state-docs/pd-to-md.js +1 -2
- package/lib/commonjs/cli/structure-info/helpers.js +2 -3
- package/lib/commonjs/cli/structure-info/model.js +11 -12
- package/lib/commonjs/examples/alpha-orbitals/controls.js +1 -2
- package/lib/commonjs/examples/basic-wrapper/custom-theme.js +2 -2
- package/lib/commonjs/examples/basic-wrapper/superposition.js +3 -3
- package/lib/commonjs/examples/domain-annotation-server/mapping.js +1 -2
- package/lib/commonjs/examples/lighting/index.d.ts +1 -1
- package/lib/commonjs/examples/lighting/index.js +2 -1
- package/lib/commonjs/examples/proteopedia-wrapper/coloring.d.ts +5 -20
- package/lib/commonjs/examples/proteopedia-wrapper/coloring.js +1 -2
- package/lib/commonjs/examples/proteopedia-wrapper/ui/controls.js +1 -2
- package/lib/commonjs/examples/task.js +6 -6
- package/lib/commonjs/extensions/alpha-orbitals/collocation.js +1 -2
- package/lib/commonjs/extensions/alpha-orbitals/data-model.js +4 -5
- package/lib/commonjs/extensions/alpha-orbitals/density.js +2 -3
- package/lib/commonjs/extensions/alpha-orbitals/gpu/compute.js +2 -3
- package/lib/commonjs/extensions/alpha-orbitals/orbitals.js +2 -3
- package/lib/commonjs/extensions/alpha-orbitals/spherical-functions.js +2 -2
- package/lib/commonjs/extensions/alpha-orbitals/transforms.d.ts +3 -3
- package/lib/commonjs/extensions/anvil/algorithm.js +5 -5
- package/lib/commonjs/extensions/anvil/behavior.d.ts +1 -0
- package/lib/commonjs/extensions/anvil/behavior.js +2 -2
- package/lib/commonjs/extensions/anvil/representation.d.ts +4 -0
- package/lib/commonjs/extensions/anvil/representation.js +3 -3
- package/lib/commonjs/extensions/assembly-symmetry/behavior.d.ts +1 -0
- package/lib/commonjs/extensions/assembly-symmetry/behavior.js +3 -3
- package/lib/commonjs/extensions/assembly-symmetry/color.d.ts +2 -2
- package/lib/commonjs/extensions/assembly-symmetry/color.js +3 -3
- package/lib/commonjs/extensions/assembly-symmetry/prop.js +3 -3
- package/lib/commonjs/extensions/assembly-symmetry/representation.d.ts +1 -0
- package/lib/commonjs/extensions/assembly-symmetry/representation.js +2 -2
- package/lib/commonjs/extensions/dnatco/confal-pyramids/behavior.js +2 -2
- package/lib/commonjs/extensions/dnatco/confal-pyramids/color.js +3 -3
- package/lib/commonjs/extensions/dnatco/confal-pyramids/representation.d.ts +3 -0
- package/lib/commonjs/extensions/dnatco/confal-pyramids/representation.js +3 -3
- package/lib/commonjs/extensions/dnatco/ntc-tube/behavior.js +2 -2
- package/lib/commonjs/extensions/dnatco/ntc-tube/color.js +3 -3
- package/lib/commonjs/extensions/dnatco/ntc-tube/representation.d.ts +3 -0
- package/lib/commonjs/extensions/dnatco/ntc-tube/representation.js +3 -3
- package/lib/commonjs/extensions/g3d/data.js +2 -3
- package/lib/commonjs/extensions/g3d/format.d.ts +3 -3
- package/lib/commonjs/extensions/g3d/model.js +5 -5
- package/lib/commonjs/extensions/geo-export/mesh-exporter.d.ts +2 -2
- package/lib/commonjs/extensions/geo-export/ui.d.ts +0 -1
- package/lib/commonjs/extensions/meshes/examples.js +9 -9
- package/lib/commonjs/extensions/meshes/mesh-extension.d.ts +3 -5
- package/lib/commonjs/extensions/meshes/mesh-extension.js +2 -2
- package/lib/commonjs/extensions/meshes/mesh-streaming/behavior.d.ts +3 -3
- package/lib/commonjs/extensions/meshes/mesh-streaming/server-info.d.ts +3 -3
- package/lib/commonjs/extensions/meshes/mesh-utils.js +9 -9
- package/lib/commonjs/extensions/model-archive/quality-assessment/color/plddt.d.ts +1 -1
- package/lib/commonjs/extensions/model-archive/quality-assessment/color/plddt.js +11 -8
- package/lib/commonjs/extensions/model-archive/quality-assessment/color/qmean.js +3 -3
- package/lib/commonjs/extensions/model-export/export.js +2 -2
- package/lib/commonjs/extensions/model-export/ui.d.ts +0 -1
- package/lib/commonjs/extensions/mp4-export/controls.d.ts +1 -1
- package/lib/commonjs/extensions/mp4-export/encoder.js +2 -3
- package/lib/commonjs/extensions/mp4-export/ui.d.ts +0 -1
- package/lib/commonjs/extensions/mvs/camera.js +4 -5
- package/lib/commonjs/extensions/mvs/components/annotation-color-theme.js +2 -2
- package/lib/commonjs/extensions/mvs/components/annotation-label/representation.d.ts +32 -34
- package/lib/commonjs/extensions/mvs/components/annotation-label/representation.js +2 -2
- package/lib/commonjs/extensions/mvs/components/annotation-label/visual.d.ts +16 -16
- package/lib/commonjs/extensions/mvs/components/annotation-label/visual.js +2 -2
- package/lib/commonjs/extensions/mvs/components/annotation-prop.js +2 -2
- package/lib/commonjs/extensions/mvs/components/annotation-structure-component.js +4 -4
- package/lib/commonjs/extensions/mvs/components/custom-label/representation.d.ts +32 -32
- package/lib/commonjs/extensions/mvs/components/custom-label/representation.js +2 -2
- package/lib/commonjs/extensions/mvs/components/custom-label/visual.d.ts +16 -16
- package/lib/commonjs/extensions/mvs/components/custom-label/visual.js +2 -2
- package/lib/commonjs/extensions/mvs/components/formats.d.ts +6 -6
- package/lib/commonjs/extensions/mvs/components/formats.js +2 -2
- package/lib/commonjs/extensions/mvs/components/is-mvs-model-prop.js +3 -3
- package/lib/commonjs/extensions/mvs/components/multilayer-color-theme.js +3 -3
- package/lib/commonjs/extensions/mvs/components/selector.js +3 -3
- package/lib/commonjs/extensions/mvs/helpers/indexing.d.ts +2 -2
- package/lib/commonjs/extensions/mvs/helpers/label-text.js +1 -2
- package/lib/commonjs/extensions/mvs/helpers/param-definition.js +2 -3
- package/lib/commonjs/extensions/mvs/helpers/schemas.d.ts +1 -1
- package/lib/commonjs/extensions/mvs/helpers/schemas.js +2 -2
- package/lib/commonjs/extensions/mvs/helpers/selections.js +6 -7
- package/lib/commonjs/extensions/mvs/helpers/utils.d.ts +1 -1
- package/lib/commonjs/extensions/mvs/helpers/utils.js +7 -7
- package/lib/commonjs/extensions/mvs/load-helpers.d.ts +1 -1
- package/lib/commonjs/extensions/mvs/load-helpers.js +17 -17
- package/lib/commonjs/extensions/mvs/load.js +1 -2
- package/lib/commonjs/extensions/mvs/tree/generic/params-schema.js +8 -8
- package/lib/commonjs/extensions/mvs/tree/generic/tree-schema.js +8 -9
- package/lib/commonjs/extensions/mvs/tree/generic/tree-utils.js +10 -11
- package/lib/commonjs/extensions/mvs/tree/molstar/conversion.js +4 -4
- package/lib/commonjs/extensions/mvs/tree/mvs/mvs-builder.d.ts +0 -2
- package/lib/commonjs/extensions/mvs/tree/mvs/mvs-builder.js +3 -3
- package/lib/commonjs/extensions/pdbe/structure-quality-report/color.js +2 -2
- package/lib/commonjs/extensions/rcsb/validation-report/color/density-fit.js +2 -2
- package/lib/commonjs/extensions/rcsb/validation-report/color/geometry-quality.js +3 -3
- package/lib/commonjs/extensions/rcsb/validation-report/color/random-coil-index.js +2 -2
- package/lib/commonjs/extensions/rcsb/validation-report/representation.d.ts +5 -0
- package/lib/commonjs/extensions/rcsb/validation-report/representation.js +5 -5
- 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/partial-charges/color.js +3 -3
- package/lib/commonjs/extensions/sb-ncbr/partial-charges/labels.js +1 -2
- package/lib/commonjs/extensions/sb-ncbr/partial-charges/property.js +2 -2
- 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 +473 -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/extensions/volumes-and-segmentations/entry-root.d.ts +3 -3
- package/lib/commonjs/extensions/volumes-and-segmentations/entry-root.js +3 -3
- package/lib/commonjs/extensions/volumes-and-segmentations/entry-state.d.ts +3 -3
- package/lib/commonjs/extensions/volumes-and-segmentations/external-api.js +2 -3
- package/lib/commonjs/extensions/volumes-and-segmentations/global-state.d.ts +3 -3
- package/lib/commonjs/extensions/volumes-and-segmentations/helpers.js +6 -6
- package/lib/commonjs/extensions/volumes-and-segmentations/ui.d.ts +0 -1
- package/lib/commonjs/extensions/zenodo/ui.d.ts +0 -1
- package/lib/commonjs/mol-canvas3d/camera/transition.d.ts +1 -1
- package/lib/commonjs/mol-canvas3d/camera/transition.js +23 -6
- package/lib/commonjs/mol-canvas3d/camera/util.js +3 -4
- package/lib/commonjs/mol-canvas3d/canvas3d.d.ts +26 -1
- package/lib/commonjs/mol-canvas3d/canvas3d.js +4 -0
- package/lib/commonjs/mol-canvas3d/helper/bounding-sphere-helper.d.ts +1 -6
- package/lib/commonjs/mol-canvas3d/helper/camera-helper.js +2 -2
- package/lib/commonjs/mol-canvas3d/helper/handle-helper.d.ts +1 -0
- package/lib/commonjs/mol-canvas3d/helper/handle-helper.js +2 -2
- package/lib/commonjs/mol-canvas3d/helper/helper.d.ts +2 -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 +10 -0
- package/lib/commonjs/mol-canvas3d/passes/multi-sample.d.ts +2 -1
- package/lib/commonjs/mol-canvas3d/passes/multi-sample.js +4 -3
- package/lib/commonjs/mol-canvas3d/passes/postprocessing.d.ts +9 -0
- package/lib/commonjs/mol-canvas3d/passes/postprocessing.js +12 -2
- package/lib/commonjs/mol-canvas3d/util.js +3 -4
- package/lib/commonjs/mol-data/db/column-helpers.js +6 -7
- package/lib/commonjs/mol-data/db/column.d.ts +1 -1
- package/lib/commonjs/mol-data/generic/hash-set.js +1 -2
- package/lib/commonjs/mol-data/generic/linked-list.js +1 -2
- package/lib/commonjs/mol-data/int/impl/interval.js +15 -15
- package/lib/commonjs/mol-data/int/impl/ordered-set.js +25 -25
- package/lib/commonjs/mol-data/int/impl/segmentation.js +7 -7
- package/lib/commonjs/mol-data/int/impl/sorted-array.js +31 -31
- package/lib/commonjs/mol-data/int/linked-index.js +1 -2
- package/lib/commonjs/mol-data/util/array.js +5 -6
- package/lib/commonjs/mol-data/util/buckets.js +1 -2
- package/lib/commonjs/mol-data/util/combination.js +2 -2
- package/lib/commonjs/mol-data/util/equivalence-classes.js +2 -2
- package/lib/commonjs/mol-data/util/grouping.js +2 -3
- package/lib/commonjs/mol-data/util/hash-functions.js +9 -10
- package/lib/commonjs/mol-data/util/sort.js +5 -6
- package/lib/commonjs/mol-geo/geometry/base.d.ts +1 -1
- package/lib/commonjs/mol-geo/geometry/base.js +3 -3
- package/lib/commonjs/mol-geo/geometry/clipping-data.js +4 -5
- package/lib/commonjs/mol-geo/geometry/color-data.js +4 -5
- package/lib/commonjs/mol-geo/geometry/cylinders/cylinders.d.ts +1 -0
- package/lib/commonjs/mol-geo/geometry/cylinders/cylinders.js +3 -0
- package/lib/commonjs/mol-geo/geometry/direct-volume/direct-volume.d.ts +1 -0
- package/lib/commonjs/mol-geo/geometry/direct-volume/direct-volume.js +3 -0
- package/lib/commonjs/mol-geo/geometry/direct-volume/transfer-function.js +3 -4
- package/lib/commonjs/mol-geo/geometry/emissive-data.js +5 -6
- package/lib/commonjs/mol-geo/geometry/image/image.d.ts +1 -1
- package/lib/commonjs/mol-geo/geometry/lines/lines.d.ts +0 -1
- package/lib/commonjs/mol-geo/geometry/marker-data.js +3 -4
- package/lib/commonjs/mol-geo/geometry/mesh/builder/axes.js +1 -2
- package/lib/commonjs/mol-geo/geometry/mesh/builder/box.js +2 -3
- package/lib/commonjs/mol-geo/geometry/mesh/builder/cylinder.js +4 -5
- package/lib/commonjs/mol-geo/geometry/mesh/builder/ellipsoid.js +1 -2
- package/lib/commonjs/mol-geo/geometry/mesh/builder/ribbon.js +1 -2
- package/lib/commonjs/mol-geo/geometry/mesh/builder/sheet.js +1 -2
- package/lib/commonjs/mol-geo/geometry/mesh/builder/sphere.js +2 -3
- package/lib/commonjs/mol-geo/geometry/mesh/builder/tube.js +1 -2
- package/lib/commonjs/mol-geo/geometry/mesh/color-smoothing.js +7 -8
- package/lib/commonjs/mol-geo/geometry/mesh/mesh.d.ts +1 -0
- package/lib/commonjs/mol-geo/geometry/mesh/mesh.js +3 -0
- package/lib/commonjs/mol-geo/geometry/overpaint-data.js +4 -5
- package/lib/commonjs/mol-geo/geometry/points/points.d.ts +1 -1
- package/lib/commonjs/mol-geo/geometry/size-data.js +9 -9
- package/lib/commonjs/mol-geo/geometry/spheres/spheres.d.ts +1 -0
- package/lib/commonjs/mol-geo/geometry/spheres/spheres.js +3 -0
- package/lib/commonjs/mol-geo/geometry/substance-data.js +4 -5
- package/lib/commonjs/mol-geo/geometry/text/font-atlas.js +3 -3
- package/lib/commonjs/mol-geo/geometry/texture-mesh/color-smoothing.js +7 -7
- package/lib/commonjs/mol-geo/geometry/texture-mesh/texture-mesh.d.ts +1 -0
- package/lib/commonjs/mol-geo/geometry/texture-mesh/texture-mesh.js +3 -0
- package/lib/commonjs/mol-geo/geometry/transform-data.js +4 -5
- package/lib/commonjs/mol-geo/geometry/transparency-data.js +5 -6
- package/lib/commonjs/mol-geo/primitive/box.js +3 -4
- package/lib/commonjs/mol-geo/primitive/cage.js +3 -4
- package/lib/commonjs/mol-geo/primitive/circle.js +2 -2
- package/lib/commonjs/mol-geo/primitive/cylinder.js +2 -2
- package/lib/commonjs/mol-geo/primitive/dodecahedron.js +3 -3
- package/lib/commonjs/mol-geo/primitive/icosahedron.js +2 -3
- package/lib/commonjs/mol-geo/primitive/octahedron.js +4 -4
- package/lib/commonjs/mol-geo/primitive/plane.js +2 -3
- package/lib/commonjs/mol-geo/primitive/polygon.js +1 -2
- package/lib/commonjs/mol-geo/primitive/polyhedron.js +2 -2
- package/lib/commonjs/mol-geo/primitive/primitive.js +4 -5
- package/lib/commonjs/mol-geo/primitive/prism.js +11 -11
- package/lib/commonjs/mol-geo/primitive/pyramid.js +6 -7
- package/lib/commonjs/mol-geo/primitive/sphere.js +2 -3
- package/lib/commonjs/mol-geo/primitive/spiked-ball.js +1 -2
- package/lib/commonjs/mol-geo/primitive/star.js +2 -2
- package/lib/commonjs/mol-geo/primitive/tetrahedron.js +3 -3
- package/lib/commonjs/mol-geo/primitive/torus.js +2 -2
- package/lib/commonjs/mol-geo/primitive/wedge.js +3 -4
- package/lib/commonjs/mol-geo/util/location-iterator.js +3 -4
- package/lib/commonjs/mol-geo/util/marching-cubes/algorithm.js +2 -3
- package/lib/commonjs/mol-geo/util/marching-cubes/builder.js +2 -3
- package/lib/commonjs/mol-geo/util/marching-cubes/tables.js +3 -3
- package/lib/commonjs/mol-geo/util.js +7 -8
- package/lib/commonjs/mol-gl/compute/grid3d.js +2 -3
- package/lib/commonjs/mol-gl/compute/hi-z.js +1 -2
- package/lib/commonjs/mol-gl/compute/histogram-pyramid/reduction.js +1 -2
- package/lib/commonjs/mol-gl/compute/histogram-pyramid/sum.js +1 -2
- package/lib/commonjs/mol-gl/compute/marching-cubes/active-voxels.js +1 -2
- package/lib/commonjs/mol-gl/compute/marching-cubes/isosurface.js +2 -3
- package/lib/commonjs/mol-gl/compute/marching-cubes/tables.js +2 -3
- package/lib/commonjs/mol-gl/compute/util.js +5 -5
- package/lib/commonjs/mol-gl/render-object.js +3 -3
- package/lib/commonjs/mol-gl/renderable/cylinders.d.ts +1 -0
- package/lib/commonjs/mol-gl/renderable/cylinders.js +3 -2
- package/lib/commonjs/mol-gl/renderable/direct-volume.d.ts +1 -0
- package/lib/commonjs/mol-gl/renderable/direct-volume.js +3 -2
- package/lib/commonjs/mol-gl/renderable/image.js +2 -2
- package/lib/commonjs/mol-gl/renderable/lines.js +2 -2
- package/lib/commonjs/mol-gl/renderable/mesh.d.ts +1 -0
- package/lib/commonjs/mol-gl/renderable/mesh.js +3 -2
- package/lib/commonjs/mol-gl/renderable/points.js +2 -2
- package/lib/commonjs/mol-gl/renderable/schema.d.ts +1 -0
- package/lib/commonjs/mol-gl/renderable/schema.js +10 -9
- package/lib/commonjs/mol-gl/renderable/spheres.d.ts +1 -0
- package/lib/commonjs/mol-gl/renderable/spheres.js +3 -2
- package/lib/commonjs/mol-gl/renderable/text.js +2 -2
- package/lib/commonjs/mol-gl/renderable/texture-mesh.d.ts +1 -0
- package/lib/commonjs/mol-gl/renderable/texture-mesh.js +3 -2
- package/lib/commonjs/mol-gl/renderable/util.js +7 -8
- package/lib/commonjs/mol-gl/renderable.js +2 -3
- package/lib/commonjs/mol-gl/renderer.d.ts +1 -0
- package/lib/commonjs/mol-gl/renderer.js +6 -0
- package/lib/commonjs/mol-gl/shader/chunks/apply-light-color.glsl.d.ts +2 -1
- package/lib/commonjs/mol-gl/shader/chunks/apply-light-color.glsl.js +57 -24
- package/lib/commonjs/mol-gl/shader/chunks/common-frag-params.glsl.d.ts +1 -1
- package/lib/commonjs/mol-gl/shader/chunks/common-frag-params.glsl.js +1 -0
- package/lib/commonjs/mol-gl/shader/chunks/common.glsl.d.ts +1 -1
- package/lib/commonjs/mol-gl/shader/chunks/common.glsl.js +6 -0
- package/lib/commonjs/mol-gl/shader/cylinders.frag.d.ts +2 -1
- package/lib/commonjs/mol-gl/shader/cylinders.frag.js +11 -2
- package/lib/commonjs/mol-gl/shader/direct-volume.frag.d.ts +1 -1
- package/lib/commonjs/mol-gl/shader/direct-volume.frag.js +1 -0
- 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/ssao-blur.frag.d.ts +1 -1
- package/lib/commonjs/mol-gl/shader/ssao-blur.frag.js +9 -6
- package/lib/commonjs/mol-gl/shader-code.js +4 -4
- package/lib/commonjs/mol-gl/webgl/buffer.js +8 -9
- package/lib/commonjs/mol-gl/webgl/compat.js +32 -33
- package/lib/commonjs/mol-gl/webgl/context.js +7 -7
- package/lib/commonjs/mol-gl/webgl/extensions.js +1 -2
- package/lib/commonjs/mol-gl/webgl/framebuffer.js +3 -4
- package/lib/commonjs/mol-gl/webgl/program.js +2 -3
- package/lib/commonjs/mol-gl/webgl/render-item.d.ts +2 -2
- package/lib/commonjs/mol-gl/webgl/render-item.js +5 -5
- package/lib/commonjs/mol-gl/webgl/render-target.js +2 -3
- package/lib/commonjs/mol-gl/webgl/renderbuffer.js +3 -4
- package/lib/commonjs/mol-gl/webgl/resources.js +1 -2
- package/lib/commonjs/mol-gl/webgl/shader.js +2 -3
- package/lib/commonjs/mol-gl/webgl/state.js +1 -2
- package/lib/commonjs/mol-gl/webgl/texture.js +13 -14
- package/lib/commonjs/mol-gl/webgl/timer.d.ts +1 -1
- package/lib/commonjs/mol-gl/webgl/timer.js +10 -4
- package/lib/commonjs/mol-gl/webgl/uniform.js +6 -7
- package/lib/commonjs/mol-gl/webgl/vertex-array.js +1 -2
- package/lib/commonjs/mol-io/common/ascii.js +1 -2
- package/lib/commonjs/mol-io/common/binary-cif/classifier.js +2 -3
- package/lib/commonjs/mol-io/common/binary-cif/decoder.js +1 -2
- package/lib/commonjs/mol-io/common/binary.js +3 -3
- package/lib/commonjs/mol-io/common/msgpack/decode.js +1 -2
- package/lib/commonjs/mol-io/common/msgpack/encode.js +1 -2
- package/lib/commonjs/mol-io/common/simple-buffer.d.ts +0 -1
- package/lib/commonjs/mol-io/common/typed-array.js +6 -6
- package/lib/commonjs/mol-io/common/utf8.js +3 -4
- package/lib/commonjs/mol-io/reader/ccp4/parser.js +6 -7
- package/lib/commonjs/mol-io/reader/cif/binary/field.js +1 -2
- package/lib/commonjs/mol-io/reader/cif/binary/parser.js +1 -2
- package/lib/commonjs/mol-io/reader/cif/data-model.js +8 -8
- package/lib/commonjs/mol-io/reader/cif/schema/bird.d.ts +1 -1
- package/lib/commonjs/mol-io/reader/cif/schema/bird.js +1 -1
- package/lib/commonjs/mol-io/reader/cif/schema/ccd.d.ts +1 -1
- package/lib/commonjs/mol-io/reader/cif/schema/ccd.js +1 -1
- package/lib/commonjs/mol-io/reader/cif/schema/mmcif.d.ts +9 -1
- package/lib/commonjs/mol-io/reader/cif/schema/mmcif.js +9 -1
- package/lib/commonjs/mol-io/reader/cif/schema.js +4 -4
- package/lib/commonjs/mol-io/reader/cif/text/parser.js +1 -2
- package/lib/commonjs/mol-io/reader/common/text/column/fixed.d.ts +1 -1
- package/lib/commonjs/mol-io/reader/common/text/column/fixed.js +2 -3
- package/lib/commonjs/mol-io/reader/common/text/column/token.d.ts +1 -1
- package/lib/commonjs/mol-io/reader/common/text/column/token.js +4 -5
- package/lib/commonjs/mol-io/reader/common/text/number-parser.js +6 -6
- package/lib/commonjs/mol-io/reader/common/text/tokenizer.js +3 -3
- package/lib/commonjs/mol-io/reader/csv/data-model.js +3 -3
- package/lib/commonjs/mol-io/reader/csv/parser.js +1 -2
- package/lib/commonjs/mol-io/reader/cube/parser.js +1 -2
- package/lib/commonjs/mol-io/reader/dcd/parser.js +2 -3
- package/lib/commonjs/mol-io/reader/dsn6/parser.js +6 -6
- package/lib/commonjs/mol-io/reader/dx/parser.js +1 -2
- package/lib/commonjs/mol-io/reader/gro/parser.js +1 -2
- package/lib/commonjs/mol-io/reader/mol/parser.js +6 -7
- package/lib/commonjs/mol-io/reader/mol2/parser.js +1 -2
- package/lib/commonjs/mol-io/reader/nctraj/parser.js +1 -2
- package/lib/commonjs/mol-io/reader/obj/parser.js +1 -2
- package/lib/commonjs/mol-io/reader/pdb/parser.js +1 -2
- package/lib/commonjs/mol-io/reader/ply/parser.js +1 -2
- package/lib/commonjs/mol-io/reader/ply/schema.d.ts +1 -1
- package/lib/commonjs/mol-io/reader/ply/schema.js +3 -3
- package/lib/commonjs/mol-io/reader/prmtop/parser.js +1 -2
- package/lib/commonjs/mol-io/reader/psf/parser.js +1 -2
- package/lib/commonjs/mol-io/reader/sdf/parser-v3-util.js +4 -5
- package/lib/commonjs/mol-io/reader/sdf/parser.js +1 -2
- package/lib/commonjs/mol-io/reader/top/parser.js +1 -2
- package/lib/commonjs/mol-io/reader/trr/parser.js +1 -2
- package/lib/commonjs/mol-io/reader/xtc/parser.js +1 -2
- package/lib/commonjs/mol-io/reader/xyz/parser.js +1 -2
- package/lib/commonjs/mol-io/writer/cif/encoder/util.js +3 -4
- package/lib/commonjs/mol-math/approx.js +24 -25
- package/lib/commonjs/mol-math/easing.js +18 -19
- package/lib/commonjs/mol-math/geometry/boundary.js +2 -3
- package/lib/commonjs/mol-math/geometry/common.js +2 -3
- package/lib/commonjs/mol-math/geometry/distance-transform.js +1 -2
- package/lib/commonjs/mol-math/geometry/gaussian-density/cpu.js +1 -2
- package/lib/commonjs/mol-math/geometry/gaussian-density/gpu.js +4 -5
- package/lib/commonjs/mol-math/geometry/gaussian-density.js +5 -5
- package/lib/commonjs/mol-math/geometry/instance-grid.js +2 -3
- package/lib/commonjs/mol-math/geometry/lookup3d/grid.js +1 -2
- package/lib/commonjs/mol-math/geometry/molecular-surface.js +2 -2
- package/lib/commonjs/mol-math/geometry/polygon.js +1 -2
- package/lib/commonjs/mol-math/geometry/primitives/axes3d.js +1 -2
- package/lib/commonjs/mol-math/geometry/primitives/box3d.js +1 -2
- package/lib/commonjs/mol-math/geometry/primitives/frustum3d.js +1 -2
- package/lib/commonjs/mol-math/geometry/primitives/plane3d.js +1 -2
- package/lib/commonjs/mol-math/geometry/primitives/sphere3d.js +1 -2
- package/lib/commonjs/mol-math/geometry/spacegroup/cell.js +1 -2
- package/lib/commonjs/mol-math/geometry/spacegroup/tables.js +4 -4
- package/lib/commonjs/mol-math/histogram.js +1 -2
- package/lib/commonjs/mol-math/interpolate.js +12 -13
- package/lib/commonjs/mol-math/linear-algebra/3d/common.js +2 -2
- package/lib/commonjs/mol-math/linear-algebra/3d/euler.js +1 -2
- package/lib/commonjs/mol-math/linear-algebra/3d/mat3.js +1 -2
- package/lib/commonjs/mol-math/linear-algebra/3d/mat4.js +1 -2
- package/lib/commonjs/mol-math/linear-algebra/3d/minimize-rmsd.js +2 -1
- package/lib/commonjs/mol-math/linear-algebra/3d/quat.js +1 -2
- package/lib/commonjs/mol-math/linear-algebra/3d/vec2.js +1 -2
- package/lib/commonjs/mol-math/linear-algebra/3d/vec3.js +1 -2
- package/lib/commonjs/mol-math/linear-algebra/3d/vec4.js +1 -2
- package/lib/commonjs/mol-math/linear-algebra/matrix/svd.js +4 -5
- package/lib/commonjs/mol-math/misc.js +7 -7
- package/lib/commonjs/mol-model/custom-property.js +2 -2
- package/lib/commonjs/mol-model/location.js +4 -4
- package/lib/commonjs/mol-model/loci.d.ts +1 -1
- package/lib/commonjs/mol-model/loci.js +7 -7
- package/lib/commonjs/mol-model/sequence/alignment/alignment.d.ts +2 -1
- package/lib/commonjs/mol-model/sequence/alignment/alignment.js +1 -2
- package/lib/commonjs/mol-model/sequence/alignment/sequence.js +3 -3
- package/lib/commonjs/mol-model/sequence/constants.js +3 -4
- package/lib/commonjs/mol-model/structure/coordinates/coordinates.js +2 -2
- package/lib/commonjs/mol-model/structure/export/categories/atom_site.js +5 -5
- package/lib/commonjs/mol-model/structure/export/categories/atom_site_operator_mapping.js +2 -2
- package/lib/commonjs/mol-model/structure/export/categories/utils.js +6 -7
- package/lib/commonjs/mol-model/structure/export/mmcif.js +3 -3
- package/lib/commonjs/mol-model/structure/model/properties/atomic/bonds.js +2 -3
- package/lib/commonjs/mol-model/structure/model/properties/atomic/measures.js +4 -4
- package/lib/commonjs/mol-model/structure/model/properties/atomic/types.js +14 -14
- package/lib/commonjs/mol-model/structure/model/properties/secondary-structure.js +1 -2
- package/lib/commonjs/mol-model/structure/model/properties/utils/atomic-derived.js +1 -2
- package/lib/commonjs/mol-model/structure/model/properties/utils/atomic-index.js +1 -2
- package/lib/commonjs/mol-model/structure/model/properties/utils/atomic-ranges.js +1 -2
- package/lib/commonjs/mol-model/structure/model/properties/utils/coarse-keys.js +1 -2
- package/lib/commonjs/mol-model/structure/model/properties/utils/coarse-ranges.js +1 -2
- package/lib/commonjs/mol-model/structure/model/types/saccharides.js +1 -1
- package/lib/commonjs/mol-model/structure/model/types.d.ts +3 -3
- package/lib/commonjs/mol-model/structure/model/types.js +12 -12
- package/lib/commonjs/mol-model/structure/model/util.js +2 -3
- package/lib/commonjs/mol-model/structure/query/queries/atom-set.js +3 -4
- package/lib/commonjs/mol-model/structure/query/queries/combinators.js +2 -3
- package/lib/commonjs/mol-model/structure/query/queries/filters.js +7 -8
- package/lib/commonjs/mol-model/structure/query/queries/generators.js +9 -9
- package/lib/commonjs/mol-model/structure/query/queries/internal.js +7 -8
- package/lib/commonjs/mol-model/structure/query/queries/modifiers.js +9 -10
- package/lib/commonjs/mol-model/structure/query/utils/structure-distance.js +2 -3
- package/lib/commonjs/mol-model/structure/query/utils/structure-set.js +5 -6
- package/lib/commonjs/mol-model/structure/structure/carbohydrates/compute.js +1 -2
- package/lib/commonjs/mol-model/structure/structure/carbohydrates/constants.js +4 -4
- package/lib/commonjs/mol-model/structure/structure/element/loci.js +1 -2
- package/lib/commonjs/mol-model/structure/structure/element/util.js +6 -7
- package/lib/commonjs/mol-model/structure/structure/properties.d.ts +1 -0
- package/lib/commonjs/mol-model/structure/structure/properties.js +1 -0
- package/lib/commonjs/mol-model/structure/structure/unit/bonds/common.js +6 -6
- package/lib/commonjs/mol-model/structure/structure/unit/bonds/inter-compute.js +1 -2
- package/lib/commonjs/mol-model/structure/structure/unit/bonds/intra-compute.js +1 -2
- package/lib/commonjs/mol-model/structure/structure/unit/resonance.js +1 -2
- package/lib/commonjs/mol-model/structure/structure/unit/rings/compute.js +3 -4
- package/lib/commonjs/mol-model/structure/structure/util/boundary.js +1 -2
- package/lib/commonjs/mol-model/structure/structure/util/lookup3d.js +2 -2
- package/lib/commonjs/mol-model/structure/structure/util/polymer.js +6 -7
- package/lib/commonjs/mol-model/structure/structure/util/principal-axes.js +2 -3
- package/lib/commonjs/mol-model/structure/structure/util/superposition-sifts-mapping.js +1 -2
- package/lib/commonjs/mol-model/structure/structure/util/superposition.js +3 -4
- package/lib/commonjs/mol-model/structure/util.js +5 -6
- package/lib/commonjs/mol-model/volume/volume.d.ts +6 -6
- package/lib/commonjs/mol-model-formats/shape/ply.d.ts +2 -0
- package/lib/commonjs/mol-model-formats/shape/ply.js +2 -2
- package/lib/commonjs/mol-model-formats/structure/basic/atomic.js +1 -2
- package/lib/commonjs/mol-model-formats/structure/basic/coarse.js +2 -2
- package/lib/commonjs/mol-model-formats/structure/basic/entities.js +2 -3
- package/lib/commonjs/mol-model-formats/structure/basic/parser.js +1 -2
- package/lib/commonjs/mol-model-formats/structure/basic/properties.js +4 -5
- package/lib/commonjs/mol-model-formats/structure/basic/schema.d.ts +1 -0
- package/lib/commonjs/mol-model-formats/structure/basic/schema.js +2 -2
- package/lib/commonjs/mol-model-formats/structure/basic/sequence.js +1 -2
- package/lib/commonjs/mol-model-formats/structure/basic/sort.js +1 -2
- package/lib/commonjs/mol-model-formats/structure/basic/util.js +2 -3
- package/lib/commonjs/mol-model-formats/structure/cif-core.js +2 -2
- package/lib/commonjs/mol-model-formats/structure/common/entity.d.ts +1 -0
- package/lib/commonjs/mol-model-formats/structure/cube.js +1 -2
- package/lib/commonjs/mol-model-formats/structure/dcd.js +1 -2
- package/lib/commonjs/mol-model-formats/structure/gro.js +2 -2
- package/lib/commonjs/mol-model-formats/structure/mmcif.js +3 -3
- package/lib/commonjs/mol-model-formats/structure/mol.js +3 -3
- package/lib/commonjs/mol-model-formats/structure/mol2.js +2 -2
- package/lib/commonjs/mol-model-formats/structure/nctraj.js +1 -2
- package/lib/commonjs/mol-model-formats/structure/pdb/anisotropic.js +3 -4
- package/lib/commonjs/mol-model-formats/structure/pdb/assembly.js +3 -4
- package/lib/commonjs/mol-model-formats/structure/pdb/atom-site.js +3 -4
- package/lib/commonjs/mol-model-formats/structure/pdb/conect.js +1 -2
- package/lib/commonjs/mol-model-formats/structure/pdb/entity.js +2 -3
- package/lib/commonjs/mol-model-formats/structure/pdb/header.js +1 -2
- package/lib/commonjs/mol-model-formats/structure/pdb/secondary-structure.js +2 -3
- package/lib/commonjs/mol-model-formats/structure/pdb/to-cif.js +1 -2
- package/lib/commonjs/mol-model-formats/structure/pdb.js +2 -2
- package/lib/commonjs/mol-model-formats/structure/prmtop.js +2 -2
- package/lib/commonjs/mol-model-formats/structure/property/assembly.js +3 -4
- package/lib/commonjs/mol-model-formats/structure/psf.js +2 -2
- package/lib/commonjs/mol-model-formats/structure/sdf.js +2 -2
- package/lib/commonjs/mol-model-formats/structure/top.js +2 -2
- package/lib/commonjs/mol-model-formats/structure/trr.js +1 -2
- package/lib/commonjs/mol-model-formats/structure/util.js +2 -3
- package/lib/commonjs/mol-model-formats/structure/xtc.js +1 -2
- package/lib/commonjs/mol-model-formats/structure/xyz.js +2 -2
- package/lib/commonjs/mol-model-formats/volume/ccp4.js +3 -3
- package/lib/commonjs/mol-model-formats/volume/cube.js +2 -2
- package/lib/commonjs/mol-model-formats/volume/density-server.js +2 -2
- package/lib/commonjs/mol-model-formats/volume/dsn6.js +2 -2
- package/lib/commonjs/mol-model-formats/volume/dx.js +2 -2
- package/lib/commonjs/mol-model-formats/volume/segmentation.js +2 -2
- package/lib/commonjs/mol-model-props/computed/accessible-surface-area/shrake-rupley/area.js +1 -2
- package/lib/commonjs/mol-model-props/computed/accessible-surface-area/shrake-rupley/radii.js +1 -2
- package/lib/commonjs/mol-model-props/computed/chemistry/functional-group.js +16 -17
- package/lib/commonjs/mol-model-props/computed/chemistry/geometry.js +5 -5
- package/lib/commonjs/mol-model-props/computed/chemistry/util.js +16 -17
- package/lib/commonjs/mol-model-props/computed/chemistry/valence-model.js +4 -4
- package/lib/commonjs/mol-model-props/computed/helix-orientation/helix-orientation.js +1 -2
- package/lib/commonjs/mol-model-props/computed/interactions/common.js +4 -4
- package/lib/commonjs/mol-model-props/computed/interactions/contacts.js +3 -3
- package/lib/commonjs/mol-model-props/computed/interactions/interactions.js +2 -2
- package/lib/commonjs/mol-model-props/computed/interactions/refine.js +1 -2
- package/lib/commonjs/mol-model-props/computed/representations/interactions-inter-unit-cylinder.d.ts +1 -0
- package/lib/commonjs/mol-model-props/computed/representations/interactions-inter-unit-cylinder.js +2 -2
- package/lib/commonjs/mol-model-props/computed/representations/interactions-intra-unit-cylinder.d.ts +1 -0
- package/lib/commonjs/mol-model-props/computed/representations/interactions-intra-unit-cylinder.js +2 -2
- package/lib/commonjs/mol-model-props/computed/representations/interactions.d.ts +3 -0
- package/lib/commonjs/mol-model-props/computed/representations/interactions.js +3 -3
- package/lib/commonjs/mol-model-props/computed/secondary-structure/dssp/backbone-hbonds.js +1 -2
- package/lib/commonjs/mol-model-props/computed/secondary-structure/dssp/bends.js +1 -2
- package/lib/commonjs/mol-model-props/computed/secondary-structure/dssp/bridges.js +1 -2
- package/lib/commonjs/mol-model-props/computed/secondary-structure/dssp/dihedral-angles.js +1 -2
- package/lib/commonjs/mol-model-props/computed/secondary-structure/dssp/helices.js +1 -2
- package/lib/commonjs/mol-model-props/computed/secondary-structure/dssp/ladders.js +1 -2
- package/lib/commonjs/mol-model-props/computed/secondary-structure/dssp/protein-info.js +1 -2
- package/lib/commonjs/mol-model-props/computed/secondary-structure/dssp/sheets.js +1 -2
- package/lib/commonjs/mol-model-props/computed/secondary-structure/dssp/trace-lookup.js +1 -2
- package/lib/commonjs/mol-model-props/computed/secondary-structure/dssp/turns.js +1 -2
- package/lib/commonjs/mol-model-props/computed/secondary-structure/dssp.js +2 -2
- package/lib/commonjs/mol-model-props/computed/themes/accessible-surface-area.js +3 -3
- package/lib/commonjs/mol-model-props/computed/themes/interaction-type.js +3 -3
- package/lib/commonjs/mol-model-props/integrative/cross-link-restraint/color.js +3 -3
- package/lib/commonjs/mol-model-props/integrative/cross-link-restraint/representation.d.ts +4 -0
- package/lib/commonjs/mol-model-props/integrative/cross-link-restraint/representation.js +4 -4
- package/lib/commonjs/mol-model-props/sequence/themes/sifts-mapping.d.ts +2 -2
- package/lib/commonjs/mol-model-props/sequence/themes/sifts-mapping.js +3 -3
- package/lib/commonjs/mol-plugin/animation-loop.d.ts +1 -0
- package/lib/commonjs/mol-plugin/behavior/behavior.d.ts +9 -9
- package/lib/commonjs/mol-plugin/behavior/dynamic/volume-streaming/behavior.d.ts +9 -9
- package/lib/commonjs/mol-plugin/behavior/dynamic/volume-streaming/model.d.ts +3 -3
- package/lib/commonjs/mol-plugin/behavior/dynamic/volume-streaming/transformers.d.ts +3 -3
- package/lib/commonjs/mol-plugin/behavior/dynamic/volume-streaming/util.js +8 -9
- package/lib/commonjs/mol-plugin/behavior/static/camera.js +6 -7
- package/lib/commonjs/mol-plugin/behavior/static/misc.js +2 -3
- package/lib/commonjs/mol-plugin/behavior/static/representation.js +4 -5
- package/lib/commonjs/mol-plugin/behavior/static/state.js +12 -13
- package/lib/commonjs/mol-plugin/command.js +2 -2
- package/lib/commonjs/mol-plugin/commands.d.ts +23 -87
- package/lib/commonjs/mol-plugin/context.d.ts +3 -2
- package/lib/commonjs/mol-plugin/context.js +4 -2
- package/lib/commonjs/mol-plugin/state.d.ts +7 -7
- package/lib/commonjs/mol-plugin/util/headless-screenshot.d.ts +1 -1
- package/lib/commonjs/mol-plugin/util/headless-screenshot.js +7 -5
- package/lib/commonjs/mol-plugin/util/viewport-screenshot.d.ts +1 -1
- package/lib/commonjs/mol-plugin/util/viewport-screenshot.js +2 -1
- package/lib/commonjs/mol-plugin-state/actions/volume.d.ts +1 -1
- package/lib/commonjs/mol-plugin-state/actions/volume.js +4 -12
- package/lib/commonjs/mol-plugin-state/animation/built-in/model-index.d.ts +2 -2
- package/lib/commonjs/mol-plugin-state/animation/built-in/state-snapshots.js +7 -3
- package/lib/commonjs/mol-plugin-state/animation/helpers.js +5 -5
- package/lib/commonjs/mol-plugin-state/builder/structure/hierarchy-preset.js +2 -2
- package/lib/commonjs/mol-plugin-state/builder/structure/representation-preset.js +4 -4
- package/lib/commonjs/mol-plugin-state/formats/provider.js +2 -3
- package/lib/commonjs/mol-plugin-state/formats/registry.d.ts +1 -1
- package/lib/commonjs/mol-plugin-state/formats/trajectory.d.ts +9 -9
- package/lib/commonjs/mol-plugin-state/formats/volume.d.ts +0 -1
- package/lib/commonjs/mol-plugin-state/helpers/structure-clipping.js +1 -2
- package/lib/commonjs/mol-plugin-state/helpers/structure-component.js +3 -3
- package/lib/commonjs/mol-plugin-state/helpers/structure-emissive.js +2 -3
- package/lib/commonjs/mol-plugin-state/helpers/structure-overpaint.js +2 -3
- package/lib/commonjs/mol-plugin-state/helpers/structure-representation-params.js +4 -5
- package/lib/commonjs/mol-plugin-state/helpers/structure-selection-query.js +9 -9
- package/lib/commonjs/mol-plugin-state/helpers/structure-substance.js +2 -3
- package/lib/commonjs/mol-plugin-state/helpers/structure-transparency.js +2 -3
- package/lib/commonjs/mol-plugin-state/helpers/volume-representation-params.js +4 -5
- package/lib/commonjs/mol-plugin-state/manager/focus-camera/focus-first-residue.js +2 -3
- package/lib/commonjs/mol-plugin-state/manager/focus-camera/orient-axes.js +4 -4
- package/lib/commonjs/mol-plugin-state/manager/structure/hierarchy-state.js +2 -3
- package/lib/commonjs/mol-plugin-state/manager/structure/hierarchy.d.ts +3 -3
- package/lib/commonjs/mol-plugin-state/manager/structure/measurement.d.ts +4 -0
- package/lib/commonjs/mol-plugin-state/manager/volume/hierarchy-state.js +2 -3
- package/lib/commonjs/mol-plugin-state/objects.d.ts +97 -97
- package/lib/commonjs/mol-plugin-state/transforms/data.d.ts +10 -1
- package/lib/commonjs/mol-plugin-state/transforms/data.js +31 -2
- package/lib/commonjs/mol-plugin-state/transforms/helpers.js +6 -7
- package/lib/commonjs/mol-plugin-state/transforms/representation.d.ts +6 -0
- package/lib/commonjs/mol-plugin-state/transforms/shape.js +2 -2
- package/lib/commonjs/mol-plugin-ui/base.js +2 -1
- package/lib/commonjs/mol-plugin-ui/controls/color.js +3 -3
- package/lib/commonjs/mol-plugin-ui/controls/common.js +5 -5
- package/lib/commonjs/mol-plugin-ui/controls/icons.d.ts +5 -0
- package/lib/commonjs/mol-plugin-ui/controls/icons.js +87 -73
- package/lib/commonjs/mol-plugin-ui/controls/legend.js +2 -2
- package/lib/commonjs/mol-plugin-ui/controls/parameters.d.ts +3 -3
- package/lib/commonjs/mol-plugin-ui/controls/parameters.js +2 -2
- package/lib/commonjs/mol-plugin-ui/controls.js +3 -3
- package/lib/commonjs/mol-plugin-ui/hooks/use-behavior.js +1 -2
- package/lib/commonjs/mol-plugin-ui/index.js +1 -2
- package/lib/commonjs/mol-plugin-ui/left-panel.d.ts +0 -1
- package/lib/commonjs/mol-plugin-ui/plugin.js +5 -4
- package/lib/commonjs/mol-plugin-ui/react18.js +1 -2
- package/lib/commonjs/mol-plugin-ui/sequence.js +8 -8
- package/lib/commonjs/mol-plugin-ui/spec.d.ts +10 -10
- package/lib/commonjs/mol-plugin-ui/spec.js +1 -1
- package/lib/commonjs/mol-plugin-ui/state/apply-action.d.ts +1 -1
- package/lib/commonjs/mol-plugin-ui/state/update-transform.d.ts +1 -1
- package/lib/commonjs/mol-plugin-ui/structure/quick-styles.d.ts +2 -1
- package/lib/commonjs/mol-plugin-ui/structure/quick-styles.js +5 -2
- package/lib/commonjs/mol-plugin-ui/structure/selection.d.ts +2 -2
- package/lib/commonjs/mol-plugin-ui/task.js +2 -3
- package/lib/commonjs/mol-plugin-ui/viewport/simple-settings.js +3 -0
- package/lib/commonjs/mol-repr/representation.d.ts +3 -3
- package/lib/commonjs/mol-repr/shape/loci/angle.d.ts +1 -0
- package/lib/commonjs/mol-repr/shape/loci/angle.js +2 -2
- package/lib/commonjs/mol-repr/shape/loci/dihedral.d.ts +1 -0
- package/lib/commonjs/mol-repr/shape/loci/dihedral.js +2 -2
- package/lib/commonjs/mol-repr/shape/loci/distance.js +2 -2
- package/lib/commonjs/mol-repr/shape/loci/label.js +2 -2
- package/lib/commonjs/mol-repr/shape/loci/orientation.d.ts +1 -0
- package/lib/commonjs/mol-repr/shape/loci/orientation.js +2 -2
- package/lib/commonjs/mol-repr/shape/loci/plane.d.ts +1 -0
- package/lib/commonjs/mol-repr/shape/loci/plane.js +2 -2
- package/lib/commonjs/mol-repr/shape/model/unitcell.d.ts +1 -0
- package/lib/commonjs/mol-repr/shape/model/unitcell.js +3 -3
- package/lib/commonjs/mol-repr/shape/representation.js +1 -2
- package/lib/commonjs/mol-repr/structure/complex-representation.js +1 -2
- package/lib/commonjs/mol-repr/structure/complex-visual.d.ts +5 -0
- package/lib/commonjs/mol-repr/structure/complex-visual.js +9 -9
- package/lib/commonjs/mol-repr/structure/params.d.ts +5 -0
- package/lib/commonjs/mol-repr/structure/params.js +2 -2
- package/lib/commonjs/mol-repr/structure/registry.d.ts +11 -0
- package/lib/commonjs/mol-repr/structure/representation/backbone.d.ts +3 -0
- package/lib/commonjs/mol-repr/structure/representation/backbone.js +3 -3
- package/lib/commonjs/mol-repr/structure/representation/ball-and-stick.d.ts +3 -0
- package/lib/commonjs/mol-repr/structure/representation/ball-and-stick.js +3 -3
- package/lib/commonjs/mol-repr/structure/representation/carbohydrate.d.ts +3 -0
- package/lib/commonjs/mol-repr/structure/representation/carbohydrate.js +3 -3
- package/lib/commonjs/mol-repr/structure/representation/cartoon.d.ts +3 -0
- package/lib/commonjs/mol-repr/structure/representation/cartoon.js +3 -3
- package/lib/commonjs/mol-repr/structure/representation/ellipsoid.d.ts +3 -0
- package/lib/commonjs/mol-repr/structure/representation/ellipsoid.js +3 -3
- package/lib/commonjs/mol-repr/structure/representation/gaussian-surface.d.ts +3 -0
- package/lib/commonjs/mol-repr/structure/representation/gaussian-surface.js +3 -3
- package/lib/commonjs/mol-repr/structure/representation/gaussian-volume.d.ts +3 -0
- package/lib/commonjs/mol-repr/structure/representation/gaussian-volume.js +3 -3
- package/lib/commonjs/mol-repr/structure/representation/label.js +3 -3
- package/lib/commonjs/mol-repr/structure/representation/line.js +3 -3
- package/lib/commonjs/mol-repr/structure/representation/molecular-surface.d.ts +3 -0
- package/lib/commonjs/mol-repr/structure/representation/molecular-surface.js +3 -3
- package/lib/commonjs/mol-repr/structure/representation/orientation.d.ts +3 -0
- package/lib/commonjs/mol-repr/structure/representation/orientation.js +3 -3
- package/lib/commonjs/mol-repr/structure/representation/point.js +3 -3
- package/lib/commonjs/mol-repr/structure/representation/putty.d.ts +3 -0
- package/lib/commonjs/mol-repr/structure/representation/putty.js +3 -3
- package/lib/commonjs/mol-repr/structure/representation/spacefill.d.ts +3 -0
- package/lib/commonjs/mol-repr/structure/representation/spacefill.js +3 -3
- package/lib/commonjs/mol-repr/structure/representation.js +2 -2
- package/lib/commonjs/mol-repr/structure/units-representation.js +1 -2
- package/lib/commonjs/mol-repr/structure/units-visual.d.ts +5 -0
- package/lib/commonjs/mol-repr/structure/units-visual.js +10 -10
- package/lib/commonjs/mol-repr/structure/visual/bond-inter-unit-cylinder.d.ts +2 -0
- package/lib/commonjs/mol-repr/structure/visual/bond-inter-unit-cylinder.js +4 -4
- package/lib/commonjs/mol-repr/structure/visual/bond-inter-unit-line.js +2 -2
- package/lib/commonjs/mol-repr/structure/visual/bond-intra-unit-cylinder.d.ts +2 -0
- package/lib/commonjs/mol-repr/structure/visual/bond-intra-unit-cylinder.js +4 -4
- package/lib/commonjs/mol-repr/structure/visual/bond-intra-unit-line.js +2 -2
- package/lib/commonjs/mol-repr/structure/visual/carbohydrate-link-cylinder.d.ts +1 -0
- package/lib/commonjs/mol-repr/structure/visual/carbohydrate-link-cylinder.js +2 -2
- package/lib/commonjs/mol-repr/structure/visual/carbohydrate-symbol-mesh.d.ts +1 -0
- package/lib/commonjs/mol-repr/structure/visual/carbohydrate-symbol-mesh.js +2 -2
- package/lib/commonjs/mol-repr/structure/visual/carbohydrate-terminal-link-cylinder.d.ts +1 -0
- package/lib/commonjs/mol-repr/structure/visual/carbohydrate-terminal-link-cylinder.js +2 -2
- package/lib/commonjs/mol-repr/structure/visual/element-cross.js +3 -3
- package/lib/commonjs/mol-repr/structure/visual/element-point.js +3 -3
- package/lib/commonjs/mol-repr/structure/visual/element-sphere.d.ts +4 -0
- package/lib/commonjs/mol-repr/structure/visual/element-sphere.js +7 -7
- package/lib/commonjs/mol-repr/structure/visual/ellipsoid-mesh.d.ts +1 -0
- package/lib/commonjs/mol-repr/structure/visual/ellipsoid-mesh.js +3 -3
- package/lib/commonjs/mol-repr/structure/visual/gaussian-density-volume.d.ts +2 -0
- package/lib/commonjs/mol-repr/structure/visual/gaussian-density-volume.js +3 -3
- package/lib/commonjs/mol-repr/structure/visual/gaussian-surface-mesh.d.ts +4 -0
- package/lib/commonjs/mol-repr/structure/visual/gaussian-surface-mesh.js +7 -7
- package/lib/commonjs/mol-repr/structure/visual/gaussian-surface-wireframe.js +2 -2
- package/lib/commonjs/mol-repr/structure/visual/label-text.js +2 -2
- package/lib/commonjs/mol-repr/structure/visual/molecular-surface-mesh.d.ts +1 -0
- package/lib/commonjs/mol-repr/structure/visual/molecular-surface-mesh.js +3 -3
- package/lib/commonjs/mol-repr/structure/visual/molecular-surface-wireframe.js +2 -2
- package/lib/commonjs/mol-repr/structure/visual/nucleotide-atomic-bond.d.ts +2 -0
- package/lib/commonjs/mol-repr/structure/visual/nucleotide-atomic-bond.js +4 -4
- package/lib/commonjs/mol-repr/structure/visual/nucleotide-atomic-element.d.ts +2 -0
- package/lib/commonjs/mol-repr/structure/visual/nucleotide-atomic-element.js +4 -4
- package/lib/commonjs/mol-repr/structure/visual/nucleotide-atomic-ring-fill.d.ts +1 -0
- package/lib/commonjs/mol-repr/structure/visual/nucleotide-atomic-ring-fill.js +2 -2
- package/lib/commonjs/mol-repr/structure/visual/nucleotide-block-mesh.d.ts +1 -0
- package/lib/commonjs/mol-repr/structure/visual/nucleotide-block-mesh.js +2 -2
- package/lib/commonjs/mol-repr/structure/visual/nucleotide-ring-mesh.d.ts +1 -0
- package/lib/commonjs/mol-repr/structure/visual/nucleotide-ring-mesh.js +2 -2
- package/lib/commonjs/mol-repr/structure/visual/orientation-ellipsoid-mesh.d.ts +1 -0
- package/lib/commonjs/mol-repr/structure/visual/orientation-ellipsoid-mesh.js +3 -3
- package/lib/commonjs/mol-repr/structure/visual/polymer-backbone-cylinder.d.ts +2 -0
- package/lib/commonjs/mol-repr/structure/visual/polymer-backbone-cylinder.js +4 -4
- package/lib/commonjs/mol-repr/structure/visual/polymer-backbone-sphere.d.ts +2 -0
- package/lib/commonjs/mol-repr/structure/visual/polymer-backbone-sphere.js +4 -4
- package/lib/commonjs/mol-repr/structure/visual/polymer-direction-wedge.d.ts +1 -0
- package/lib/commonjs/mol-repr/structure/visual/polymer-direction-wedge.js +2 -2
- package/lib/commonjs/mol-repr/structure/visual/polymer-gap-cylinder.d.ts +1 -0
- package/lib/commonjs/mol-repr/structure/visual/polymer-gap-cylinder.js +2 -2
- package/lib/commonjs/mol-repr/structure/visual/polymer-trace-mesh.d.ts +1 -0
- package/lib/commonjs/mol-repr/structure/visual/polymer-trace-mesh.js +2 -2
- package/lib/commonjs/mol-repr/structure/visual/polymer-tube-mesh.d.ts +1 -0
- package/lib/commonjs/mol-repr/structure/visual/polymer-tube-mesh.js +2 -2
- package/lib/commonjs/mol-repr/structure/visual/util/bond.js +8 -8
- package/lib/commonjs/mol-repr/structure/visual/util/common.js +14 -14
- package/lib/commonjs/mol-repr/structure/visual/util/element.js +10 -10
- package/lib/commonjs/mol-repr/structure/visual/util/gaussian.js +8 -8
- package/lib/commonjs/mol-repr/structure/visual/util/link.js +5 -5
- package/lib/commonjs/mol-repr/structure/visual/util/molecular-surface.js +2 -3
- package/lib/commonjs/mol-repr/structure/visual/util/nucleotide.d.ts +60 -60
- package/lib/commonjs/mol-repr/structure/visual/util/nucleotide.js +11 -11
- package/lib/commonjs/mol-repr/structure/visual/util/polymer/backbone.js +3 -4
- package/lib/commonjs/mol-repr/structure/visual/util/polymer/curve-segment.js +5 -6
- package/lib/commonjs/mol-repr/structure/visual/util/polymer/gap-iterator.js +2 -2
- package/lib/commonjs/mol-repr/structure/visual/util/polymer/trace-iterator.js +2 -2
- package/lib/commonjs/mol-repr/structure/visual/util/polymer.js +8 -8
- package/lib/commonjs/mol-repr/util.js +3 -3
- package/lib/commonjs/mol-repr/volume/direct-volume.d.ts +48 -45
- package/lib/commonjs/mol-repr/volume/direct-volume.js +9 -9
- package/lib/commonjs/mol-repr/volume/isosurface.d.ts +95 -90
- package/lib/commonjs/mol-repr/volume/isosurface.js +10 -10
- package/lib/commonjs/mol-repr/volume/registry.d.ts +63 -60
- package/lib/commonjs/mol-repr/volume/representation.js +4 -4
- package/lib/commonjs/mol-repr/volume/segment.d.ts +80 -75
- package/lib/commonjs/mol-repr/volume/segment.js +8 -8
- package/lib/commonjs/mol-repr/volume/slice.d.ts +45 -45
- package/lib/commonjs/mol-repr/volume/slice.js +5 -5
- package/lib/commonjs/mol-repr/volume/util.js +5 -6
- package/lib/commonjs/mol-script/language/expression-formatter.js +1 -2
- package/lib/commonjs/mol-script/language/helpers.js +3 -4
- package/lib/commonjs/mol-script/language/parser.js +1 -2
- package/lib/commonjs/mol-script/language/symbol-table/core.d.ts +1 -1
- package/lib/commonjs/mol-script/language/symbol.js +5 -5
- package/lib/commonjs/mol-script/runtime/query/base.js +2 -2
- package/lib/commonjs/mol-script/script/mol-script/script-macro.js +4 -5
- package/lib/commonjs/mol-script/script/mol-script/symbols.js +3 -3
- package/lib/commonjs/mol-script/script.js +1 -2
- package/lib/commonjs/mol-script/transpile.js +1 -2
- package/lib/commonjs/mol-script/transpilers/helper.js +28 -28
- package/lib/commonjs/mol-script/transpilers/jmol/properties.js +2 -2
- package/lib/commonjs/mol-script/transpilers/vmd/properties.js +2 -2
- package/lib/commonjs/mol-script/util/id-list.js +1 -2
- package/lib/commonjs/mol-state/object.d.ts +4 -4
- package/lib/commonjs/mol-state/state.d.ts +4 -4
- package/lib/commonjs/mol-state/transform.d.ts +1 -1
- package/lib/commonjs/mol-state/transformer.d.ts +1 -1
- package/lib/commonjs/mol-task/execution/observable.js +4 -5
- package/lib/commonjs/mol-task/util/chunked.js +1 -2
- package/lib/commonjs/mol-task/util/multistep.js +1 -2
- package/lib/commonjs/mol-task/util/scheduler.d.ts +0 -1
- package/lib/commonjs/mol-theme/clipping.js +1 -2
- package/lib/commonjs/mol-theme/color/atom-id.d.ts +2 -2
- package/lib/commonjs/mol-theme/color/atom-id.js +3 -3
- package/lib/commonjs/mol-theme/color/carbohydrate-symbol.js +3 -3
- package/lib/commonjs/mol-theme/color/cartoon.js +3 -3
- package/lib/commonjs/mol-theme/color/chain-id.d.ts +2 -2
- package/lib/commonjs/mol-theme/color/chain-id.js +3 -3
- package/lib/commonjs/mol-theme/color/element-index.d.ts +2 -2
- package/lib/commonjs/mol-theme/color/element-index.js +3 -3
- package/lib/commonjs/mol-theme/color/element-symbol.js +4 -4
- package/lib/commonjs/mol-theme/color/entity-id.d.ts +2 -2
- package/lib/commonjs/mol-theme/color/entity-id.js +3 -3
- package/lib/commonjs/mol-theme/color/entity-source.d.ts +2 -2
- package/lib/commonjs/mol-theme/color/entity-source.js +3 -3
- package/lib/commonjs/mol-theme/color/external-volume.d.ts +2 -2
- package/lib/commonjs/mol-theme/color/external-volume.js +2 -2
- package/lib/commonjs/mol-theme/color/hydrophobicity.js +4 -4
- package/lib/commonjs/mol-theme/color/illustrative.js +3 -3
- package/lib/commonjs/mol-theme/color/model-index.d.ts +2 -2
- package/lib/commonjs/mol-theme/color/model-index.js +3 -3
- package/lib/commonjs/mol-theme/color/molecule-type.js +4 -4
- package/lib/commonjs/mol-theme/color/occupancy.js +4 -4
- package/lib/commonjs/mol-theme/color/operator-hkl.d.ts +2 -2
- package/lib/commonjs/mol-theme/color/operator-hkl.js +3 -3
- package/lib/commonjs/mol-theme/color/operator-name.d.ts +2 -2
- package/lib/commonjs/mol-theme/color/operator-name.js +3 -3
- package/lib/commonjs/mol-theme/color/partial-charge.js +3 -3
- package/lib/commonjs/mol-theme/color/polymer-id.d.ts +2 -2
- package/lib/commonjs/mol-theme/color/polymer-id.js +3 -3
- package/lib/commonjs/mol-theme/color/polymer-index.d.ts +2 -2
- package/lib/commonjs/mol-theme/color/polymer-index.js +3 -3
- package/lib/commonjs/mol-theme/color/residue-name.js +4 -4
- package/lib/commonjs/mol-theme/color/secondary-structure.js +4 -4
- package/lib/commonjs/mol-theme/color/sequence-id.js +3 -3
- package/lib/commonjs/mol-theme/color/shape-group.js +3 -3
- package/lib/commonjs/mol-theme/color/structure-index.d.ts +2 -2
- package/lib/commonjs/mol-theme/color/structure-index.js +3 -3
- package/lib/commonjs/mol-theme/color/trajectory-index.d.ts +2 -2
- package/lib/commonjs/mol-theme/color/trajectory-index.js +3 -3
- package/lib/commonjs/mol-theme/color/uncertainty.js +4 -4
- package/lib/commonjs/mol-theme/color/uniform.js +3 -3
- package/lib/commonjs/mol-theme/color/unit-index.d.ts +2 -2
- package/lib/commonjs/mol-theme/color/unit-index.js +3 -3
- package/lib/commonjs/mol-theme/color/volume-segment.d.ts +2 -2
- package/lib/commonjs/mol-theme/color/volume-segment.js +3 -3
- package/lib/commonjs/mol-theme/color/volume-value.js +3 -3
- package/lib/commonjs/mol-theme/color.d.ts +16 -16
- package/lib/commonjs/mol-theme/color.js +2 -2
- package/lib/commonjs/mol-theme/emissive.js +1 -2
- package/lib/commonjs/mol-theme/label.js +11 -11
- package/lib/commonjs/mol-theme/overpaint.js +1 -2
- package/lib/commonjs/mol-theme/size/physical.js +4 -4
- package/lib/commonjs/mol-theme/size/shape-group.js +3 -3
- package/lib/commonjs/mol-theme/size/uncertainty.js +4 -4
- package/lib/commonjs/mol-theme/size/uniform.js +3 -3
- package/lib/commonjs/mol-theme/substance.js +1 -2
- package/lib/commonjs/mol-theme/theme.d.ts +3 -3
- package/lib/commonjs/mol-theme/transparency.js +1 -2
- package/lib/commonjs/mol-util/array.js +22 -23
- package/lib/commonjs/mol-util/binding.js +1 -2
- package/lib/commonjs/mol-util/clip.js +1 -2
- package/lib/commonjs/mol-util/color/color.js +6 -7
- package/lib/commonjs/mol-util/color/distinct.js +2 -2
- package/lib/commonjs/mol-util/color/lists.js +2 -2
- package/lib/commonjs/mol-util/color/palette.d.ts +4 -3
- package/lib/commonjs/mol-util/color/palette.js +2 -3
- package/lib/commonjs/mol-util/color/params.js +1 -2
- package/lib/commonjs/mol-util/color/scale.d.ts +2 -1
- package/lib/commonjs/mol-util/color/spaces/hcl.js +1 -2
- package/lib/commonjs/mol-util/color/spaces/lab.js +1 -2
- package/lib/commonjs/mol-util/data-source.d.ts +0 -1
- package/lib/commonjs/mol-util/data-source.js +7 -7
- package/lib/commonjs/mol-util/date.js +2 -3
- package/lib/commonjs/mol-util/debug.js +7 -7
- package/lib/commonjs/mol-util/download.js +1 -2
- package/lib/commonjs/mol-util/file-info.js +1 -2
- package/lib/commonjs/mol-util/id-factory.js +1 -2
- package/lib/commonjs/mol-util/index.js +13 -13
- package/lib/commonjs/mol-util/input/event-offset.js +1 -2
- package/lib/commonjs/mol-util/input/input-observer.js +4 -4
- package/lib/commonjs/mol-util/is-little-endian.js +1 -2
- package/lib/commonjs/mol-util/json.js +2 -3
- package/lib/commonjs/mol-util/legend.js +2 -3
- package/lib/commonjs/mol-util/make-dir.js +1 -2
- package/lib/commonjs/mol-util/map.js +1 -2
- package/lib/commonjs/mol-util/marker-action.js +6 -6
- package/lib/commonjs/mol-util/mask.js +2 -2
- package/lib/commonjs/mol-util/material.js +1 -2
- package/lib/commonjs/mol-util/memoize.js +2 -3
- package/lib/commonjs/mol-util/nodejs-shims.d.ts +1 -1
- package/lib/commonjs/mol-util/now.js +2 -2
- package/lib/commonjs/mol-util/number-packing.js +3 -4
- package/lib/commonjs/mol-util/number.js +7 -8
- package/lib/commonjs/mol-util/object.js +14 -15
- package/lib/commonjs/mol-util/param-mapping.js +1 -2
- package/lib/commonjs/mol-util/read.js +6 -7
- package/lib/commonjs/mol-util/reference-cache.js +3 -4
- package/lib/commonjs/mol-util/retry-if.js +1 -2
- package/lib/commonjs/mol-util/sleep.js +1 -2
- package/lib/commonjs/mol-util/string.js +18 -18
- package/lib/commonjs/mol-util/type-helpers.js +3 -4
- package/lib/commonjs/mol-util/url.js +2 -3
- package/lib/commonjs/mol-util/zip/bin.js +9 -10
- package/lib/commonjs/mol-util/zip/checksum.js +2 -3
- package/lib/commonjs/mol-util/zip/deflate.js +1 -2
- package/lib/commonjs/mol-util/zip/huffman.js +1 -2
- package/lib/commonjs/mol-util/zip/inflate.js +1 -2
- package/lib/commonjs/mol-util/zip/util.js +4 -4
- package/lib/commonjs/mol-util/zip/zip.js +8 -9
- package/lib/commonjs/servers/common/file-handle.js +1 -2
- package/lib/commonjs/servers/common/swagger-ui/index.js +2 -3
- package/lib/commonjs/servers/common/util.js +1 -2
- package/lib/commonjs/servers/model/config.d.ts +4 -4
- package/lib/commonjs/servers/model/config.js +2 -2
- package/lib/commonjs/servers/model/preprocess/converter.js +1 -2
- package/lib/commonjs/servers/model/preprocess/parallel.js +2 -3
- package/lib/commonjs/servers/model/preprocess/preprocess.js +1 -2
- package/lib/commonjs/servers/model/preprocess/util.js +2 -3
- package/lib/commonjs/servers/model/property-provider.js +2 -3
- package/lib/commonjs/servers/model/query/atoms.js +1 -2
- package/lib/commonjs/servers/model/server/api-local.js +1 -2
- package/lib/commonjs/servers/model/server/api-schema.js +2 -2
- package/lib/commonjs/servers/model/server/api-web-multiple.js +1 -2
- package/lib/commonjs/servers/model/server/api-web.js +2 -3
- package/lib/commonjs/servers/model/server/api.js +4 -4
- package/lib/commonjs/servers/model/server/jobs.js +3 -3
- package/lib/commonjs/servers/model/server/query.js +2 -3
- package/lib/commonjs/servers/model/server/structure-wrapper.js +6 -6
- package/lib/commonjs/servers/model/utils/fetch-retry.js +1 -2
- package/lib/commonjs/servers/model/utils/tar.d.ts +0 -1
- package/lib/commonjs/servers/model/utils/tar.js +2 -2
- package/lib/commonjs/servers/plugin-state/api-schema.js +2 -2
- package/lib/commonjs/servers/plugin-state/config.js +1 -2
- package/lib/commonjs/servers/volume/common/binary-schema.d.ts +0 -1
- package/lib/commonjs/servers/volume/common/binary-schema.js +5 -5
- package/lib/commonjs/servers/volume/common/data-format.d.ts +0 -1
- package/lib/commonjs/servers/volume/common/data-format.js +2 -3
- package/lib/commonjs/servers/volume/common/file.js +4 -5
- package/lib/commonjs/servers/volume/config.d.ts +1 -5
- package/lib/commonjs/servers/volume/config.js +3 -3
- package/lib/commonjs/servers/volume/pack/data-model.js +2 -3
- package/lib/commonjs/servers/volume/pack/downsampling.js +2 -3
- package/lib/commonjs/servers/volume/pack/format/ccp4.js +2 -2
- package/lib/commonjs/servers/volume/pack/format/dsn6.js +2 -2
- package/lib/commonjs/servers/volume/pack/format.js +4 -5
- package/lib/commonjs/servers/volume/pack/main.js +1 -2
- package/lib/commonjs/servers/volume/pack/sampling.js +2 -3
- package/lib/commonjs/servers/volume/pack/writer.js +1 -2
- package/lib/commonjs/servers/volume/server/algebra/box.js +14 -15
- package/lib/commonjs/servers/volume/server/algebra/coordinate.js +17 -18
- package/lib/commonjs/servers/volume/server/api.js +3 -4
- package/lib/commonjs/servers/volume/server/local-api.js +1 -2
- package/lib/commonjs/servers/volume/server/query/compose.js +1 -2
- package/lib/commonjs/servers/volume/server/query/encode.js +1 -2
- package/lib/commonjs/servers/volume/server/query/execute.js +1 -2
- package/lib/commonjs/servers/volume/server/query/identify.js +1 -2
- package/lib/commonjs/servers/volume/server/web-api.js +1 -2
- package/lib/commonjs/servers/volume/server/web-schema.js +2 -2
- package/lib/examples/lighting/index.d.ts +1 -1
- package/lib/examples/lighting/index.js +2 -1
- package/lib/examples/proteopedia-wrapper/coloring.d.ts +5 -20
- package/lib/extensions/alpha-orbitals/transforms.d.ts +3 -3
- package/lib/extensions/anvil/behavior.d.ts +1 -0
- package/lib/extensions/anvil/representation.d.ts +4 -0
- package/lib/extensions/assembly-symmetry/behavior.d.ts +1 -0
- package/lib/extensions/assembly-symmetry/color.d.ts +2 -2
- package/lib/extensions/assembly-symmetry/representation.d.ts +1 -0
- package/lib/extensions/dnatco/confal-pyramids/representation.d.ts +3 -0
- package/lib/extensions/dnatco/ntc-tube/representation.d.ts +3 -0
- package/lib/extensions/g3d/format.d.ts +3 -3
- package/lib/extensions/geo-export/mesh-exporter.d.ts +2 -2
- package/lib/extensions/geo-export/ui.d.ts +0 -1
- package/lib/extensions/meshes/mesh-extension.d.ts +3 -5
- package/lib/extensions/meshes/mesh-streaming/behavior.d.ts +3 -3
- package/lib/extensions/meshes/mesh-streaming/server-info.d.ts +3 -3
- package/lib/extensions/model-archive/quality-assessment/color/plddt.d.ts +1 -1
- package/lib/extensions/model-archive/quality-assessment/color/plddt.js +8 -5
- package/lib/extensions/model-export/ui.d.ts +0 -1
- package/lib/extensions/mp4-export/controls.d.ts +1 -1
- package/lib/extensions/mp4-export/encoder.js +1 -1
- package/lib/extensions/mp4-export/ui.d.ts +0 -1
- package/lib/extensions/mvs/components/annotation-label/representation.d.ts +32 -34
- package/lib/extensions/mvs/components/annotation-label/visual.d.ts +16 -16
- package/lib/extensions/mvs/components/custom-label/representation.d.ts +32 -32
- package/lib/extensions/mvs/components/custom-label/visual.d.ts +16 -16
- package/lib/extensions/mvs/components/formats.d.ts +6 -6
- package/lib/extensions/mvs/helpers/indexing.d.ts +2 -2
- package/lib/extensions/mvs/helpers/schemas.d.ts +1 -1
- package/lib/extensions/mvs/helpers/utils.d.ts +1 -1
- package/lib/extensions/mvs/load-helpers.d.ts +1 -1
- package/lib/extensions/mvs/tree/mvs/mvs-builder.d.ts +0 -2
- package/lib/extensions/rcsb/validation-report/representation.d.ts +5 -0
- 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/extensions/volumes-and-segmentations/entry-root.d.ts +3 -3
- package/lib/extensions/volumes-and-segmentations/entry-state.d.ts +3 -3
- package/lib/extensions/volumes-and-segmentations/global-state.d.ts +3 -3
- package/lib/extensions/volumes-and-segmentations/ui.d.ts +0 -1
- package/lib/extensions/zenodo/ui.d.ts +0 -1
- package/lib/mol-canvas3d/camera/transition.d.ts +1 -1
- package/lib/mol-canvas3d/camera/transition.js +23 -6
- package/lib/mol-canvas3d/canvas3d.d.ts +26 -1
- package/lib/mol-canvas3d/canvas3d.js +4 -0
- package/lib/mol-canvas3d/helper/bounding-sphere-helper.d.ts +1 -6
- package/lib/mol-canvas3d/helper/handle-helper.d.ts +1 -0
- package/lib/mol-canvas3d/helper/helper.d.ts +2 -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 +10 -0
- package/lib/mol-canvas3d/passes/multi-sample.d.ts +2 -1
- package/lib/mol-canvas3d/passes/multi-sample.js +4 -3
- package/lib/mol-canvas3d/passes/postprocessing.d.ts +9 -0
- package/lib/mol-canvas3d/passes/postprocessing.js +10 -0
- package/lib/mol-data/db/column.d.ts +1 -1
- package/lib/mol-geo/geometry/base.d.ts +1 -1
- package/lib/mol-geo/geometry/cylinders/cylinders.d.ts +1 -0
- package/lib/mol-geo/geometry/cylinders/cylinders.js +3 -0
- package/lib/mol-geo/geometry/direct-volume/direct-volume.d.ts +1 -0
- package/lib/mol-geo/geometry/direct-volume/direct-volume.js +3 -0
- package/lib/mol-geo/geometry/image/image.d.ts +1 -1
- package/lib/mol-geo/geometry/lines/lines.d.ts +0 -1
- package/lib/mol-geo/geometry/mesh/mesh.d.ts +1 -0
- package/lib/mol-geo/geometry/mesh/mesh.js +3 -0
- package/lib/mol-geo/geometry/points/points.d.ts +1 -1
- package/lib/mol-geo/geometry/spheres/spheres.d.ts +1 -0
- package/lib/mol-geo/geometry/spheres/spheres.js +3 -0
- package/lib/mol-geo/geometry/texture-mesh/texture-mesh.d.ts +1 -0
- package/lib/mol-geo/geometry/texture-mesh/texture-mesh.js +3 -0
- package/lib/mol-gl/renderable/cylinders.d.ts +1 -0
- package/lib/mol-gl/renderable/cylinders.js +1 -0
- package/lib/mol-gl/renderable/direct-volume.d.ts +1 -0
- package/lib/mol-gl/renderable/direct-volume.js +1 -0
- package/lib/mol-gl/renderable/mesh.d.ts +1 -0
- package/lib/mol-gl/renderable/mesh.js +1 -0
- package/lib/mol-gl/renderable/schema.d.ts +1 -0
- package/lib/mol-gl/renderable/schema.js +1 -0
- package/lib/mol-gl/renderable/spheres.d.ts +1 -0
- package/lib/mol-gl/renderable/spheres.js +1 -0
- package/lib/mol-gl/renderable/texture-mesh.d.ts +1 -0
- package/lib/mol-gl/renderable/texture-mesh.js +1 -0
- package/lib/mol-gl/renderer.d.ts +1 -0
- package/lib/mol-gl/renderer.js +6 -0
- package/lib/mol-gl/shader/chunks/apply-light-color.glsl.d.ts +2 -1
- package/lib/mol-gl/shader/chunks/apply-light-color.glsl.js +57 -24
- package/lib/mol-gl/shader/chunks/common-frag-params.glsl.d.ts +1 -1
- package/lib/mol-gl/shader/chunks/common-frag-params.glsl.js +1 -0
- package/lib/mol-gl/shader/chunks/common.glsl.d.ts +1 -1
- package/lib/mol-gl/shader/chunks/common.glsl.js +6 -0
- package/lib/mol-gl/shader/cylinders.frag.d.ts +2 -1
- package/lib/mol-gl/shader/cylinders.frag.js +11 -2
- package/lib/mol-gl/shader/direct-volume.frag.d.ts +1 -1
- package/lib/mol-gl/shader/direct-volume.frag.js +1 -0
- 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/ssao-blur.frag.d.ts +1 -1
- package/lib/mol-gl/shader/ssao-blur.frag.js +9 -6
- package/lib/mol-gl/shader-code.js +1 -1
- package/lib/mol-gl/webgl/context.js +1 -0
- package/lib/mol-gl/webgl/render-item.d.ts +2 -2
- package/lib/mol-gl/webgl/timer.d.ts +1 -1
- package/lib/mol-gl/webgl/timer.js +8 -1
- package/lib/mol-io/common/simple-buffer.d.ts +0 -1
- package/lib/mol-io/reader/cif/schema/bird.d.ts +1 -1
- package/lib/mol-io/reader/cif/schema/bird.js +1 -1
- package/lib/mol-io/reader/cif/schema/ccd.d.ts +1 -1
- package/lib/mol-io/reader/cif/schema/ccd.js +1 -1
- package/lib/mol-io/reader/cif/schema/mmcif.d.ts +9 -1
- package/lib/mol-io/reader/cif/schema/mmcif.js +9 -1
- package/lib/mol-io/reader/common/text/column/fixed.d.ts +1 -1
- package/lib/mol-io/reader/common/text/column/token.d.ts +1 -1
- package/lib/mol-io/reader/ply/schema.d.ts +1 -1
- package/lib/mol-math/linear-algebra/3d/minimize-rmsd.js +2 -1
- package/lib/mol-model/loci.d.ts +1 -1
- package/lib/mol-model/sequence/alignment/alignment.d.ts +2 -1
- package/lib/mol-model/structure/model/types/saccharides.js +1 -1
- package/lib/mol-model/structure/model/types.d.ts +3 -3
- package/lib/mol-model/structure/query/queries/generators.js +2 -2
- package/lib/mol-model/structure/structure/properties.d.ts +1 -0
- package/lib/mol-model/structure/structure/properties.js +1 -0
- package/lib/mol-model/volume/volume.d.ts +6 -6
- package/lib/mol-model-formats/shape/ply.d.ts +2 -0
- package/lib/mol-model-formats/structure/basic/schema.d.ts +1 -0
- package/lib/mol-model-formats/structure/common/entity.d.ts +1 -0
- package/lib/mol-model-props/computed/representations/interactions-inter-unit-cylinder.d.ts +1 -0
- package/lib/mol-model-props/computed/representations/interactions-intra-unit-cylinder.d.ts +1 -0
- package/lib/mol-model-props/computed/representations/interactions.d.ts +3 -0
- package/lib/mol-model-props/integrative/cross-link-restraint/representation.d.ts +4 -0
- package/lib/mol-model-props/sequence/themes/sifts-mapping.d.ts +2 -2
- package/lib/mol-plugin/animation-loop.d.ts +1 -0
- package/lib/mol-plugin/behavior/behavior.d.ts +9 -9
- package/lib/mol-plugin/behavior/dynamic/volume-streaming/behavior.d.ts +9 -9
- package/lib/mol-plugin/behavior/dynamic/volume-streaming/model.d.ts +3 -3
- package/lib/mol-plugin/behavior/dynamic/volume-streaming/transformers.d.ts +3 -3
- package/lib/mol-plugin/commands.d.ts +23 -87
- package/lib/mol-plugin/context.d.ts +3 -2
- package/lib/mol-plugin/context.js +4 -2
- package/lib/mol-plugin/state.d.ts +7 -7
- package/lib/mol-plugin/util/headless-screenshot.d.ts +1 -1
- package/lib/mol-plugin/util/headless-screenshot.js +3 -1
- package/lib/mol-plugin/util/viewport-screenshot.d.ts +1 -1
- package/lib/mol-plugin/util/viewport-screenshot.js +2 -1
- package/lib/mol-plugin/version.js +2 -2
- package/lib/mol-plugin-state/actions/volume.d.ts +1 -1
- package/lib/mol-plugin-state/actions/volume.js +4 -12
- package/lib/mol-plugin-state/animation/built-in/model-index.d.ts +2 -2
- package/lib/mol-plugin-state/animation/built-in/state-snapshots.js +7 -3
- package/lib/mol-plugin-state/formats/registry.d.ts +1 -1
- package/lib/mol-plugin-state/formats/trajectory.d.ts +9 -9
- package/lib/mol-plugin-state/formats/volume.d.ts +0 -1
- package/lib/mol-plugin-state/manager/structure/hierarchy.d.ts +3 -3
- package/lib/mol-plugin-state/manager/structure/measurement.d.ts +4 -0
- package/lib/mol-plugin-state/objects.d.ts +97 -97
- package/lib/mol-plugin-state/transforms/data.d.ts +10 -1
- package/lib/mol-plugin-state/transforms/data.js +30 -1
- package/lib/mol-plugin-state/transforms/representation.d.ts +6 -0
- package/lib/mol-plugin-ui/base.js +2 -1
- package/lib/mol-plugin-ui/controls/icons.d.ts +5 -0
- package/lib/mol-plugin-ui/controls/icons.js +10 -0
- package/lib/mol-plugin-ui/controls/parameters.d.ts +3 -3
- package/lib/mol-plugin-ui/controls.js +1 -1
- package/lib/mol-plugin-ui/left-panel.d.ts +0 -1
- package/lib/mol-plugin-ui/plugin.js +3 -2
- package/lib/mol-plugin-ui/skin/base/components/controls.scss +6 -0
- package/lib/mol-plugin-ui/spec.d.ts +10 -10
- package/lib/mol-plugin-ui/spec.js +1 -1
- package/lib/mol-plugin-ui/state/apply-action.d.ts +1 -1
- package/lib/mol-plugin-ui/state/update-transform.d.ts +1 -1
- package/lib/mol-plugin-ui/structure/quick-styles.d.ts +2 -1
- package/lib/mol-plugin-ui/structure/quick-styles.js +5 -2
- package/lib/mol-plugin-ui/structure/selection.d.ts +2 -2
- package/lib/mol-plugin-ui/viewport/simple-settings.js +3 -0
- package/lib/mol-repr/representation.d.ts +3 -3
- package/lib/mol-repr/shape/loci/angle.d.ts +1 -0
- package/lib/mol-repr/shape/loci/dihedral.d.ts +1 -0
- package/lib/mol-repr/shape/loci/orientation.d.ts +1 -0
- package/lib/mol-repr/shape/loci/plane.d.ts +1 -0
- package/lib/mol-repr/shape/model/unitcell.d.ts +1 -0
- package/lib/mol-repr/structure/complex-visual.d.ts +5 -0
- package/lib/mol-repr/structure/params.d.ts +5 -0
- package/lib/mol-repr/structure/registry.d.ts +11 -0
- package/lib/mol-repr/structure/representation/backbone.d.ts +3 -0
- package/lib/mol-repr/structure/representation/ball-and-stick.d.ts +3 -0
- package/lib/mol-repr/structure/representation/carbohydrate.d.ts +3 -0
- package/lib/mol-repr/structure/representation/cartoon.d.ts +3 -0
- package/lib/mol-repr/structure/representation/ellipsoid.d.ts +3 -0
- package/lib/mol-repr/structure/representation/gaussian-surface.d.ts +3 -0
- package/lib/mol-repr/structure/representation/gaussian-volume.d.ts +3 -0
- package/lib/mol-repr/structure/representation/molecular-surface.d.ts +3 -0
- package/lib/mol-repr/structure/representation/orientation.d.ts +3 -0
- package/lib/mol-repr/structure/representation/putty.d.ts +3 -0
- package/lib/mol-repr/structure/representation/spacefill.d.ts +3 -0
- package/lib/mol-repr/structure/units-visual.d.ts +5 -0
- package/lib/mol-repr/structure/visual/bond-inter-unit-cylinder.d.ts +2 -0
- package/lib/mol-repr/structure/visual/bond-intra-unit-cylinder.d.ts +2 -0
- package/lib/mol-repr/structure/visual/carbohydrate-link-cylinder.d.ts +1 -0
- package/lib/mol-repr/structure/visual/carbohydrate-symbol-mesh.d.ts +1 -0
- package/lib/mol-repr/structure/visual/carbohydrate-terminal-link-cylinder.d.ts +1 -0
- package/lib/mol-repr/structure/visual/element-sphere.d.ts +4 -0
- package/lib/mol-repr/structure/visual/ellipsoid-mesh.d.ts +1 -0
- package/lib/mol-repr/structure/visual/gaussian-density-volume.d.ts +2 -0
- package/lib/mol-repr/structure/visual/gaussian-surface-mesh.d.ts +4 -0
- package/lib/mol-repr/structure/visual/molecular-surface-mesh.d.ts +1 -0
- package/lib/mol-repr/structure/visual/nucleotide-atomic-bond.d.ts +2 -0
- package/lib/mol-repr/structure/visual/nucleotide-atomic-element.d.ts +2 -0
- package/lib/mol-repr/structure/visual/nucleotide-atomic-ring-fill.d.ts +1 -0
- package/lib/mol-repr/structure/visual/nucleotide-block-mesh.d.ts +1 -0
- package/lib/mol-repr/structure/visual/nucleotide-ring-mesh.d.ts +1 -0
- package/lib/mol-repr/structure/visual/orientation-ellipsoid-mesh.d.ts +1 -0
- package/lib/mol-repr/structure/visual/polymer-backbone-cylinder.d.ts +2 -0
- package/lib/mol-repr/structure/visual/polymer-backbone-sphere.d.ts +2 -0
- package/lib/mol-repr/structure/visual/polymer-direction-wedge.d.ts +1 -0
- package/lib/mol-repr/structure/visual/polymer-gap-cylinder.d.ts +1 -0
- package/lib/mol-repr/structure/visual/polymer-trace-mesh.d.ts +1 -0
- package/lib/mol-repr/structure/visual/polymer-tube-mesh.d.ts +1 -0
- package/lib/mol-repr/structure/visual/util/nucleotide.d.ts +60 -60
- package/lib/mol-repr/volume/direct-volume.d.ts +48 -45
- package/lib/mol-repr/volume/isosurface.d.ts +95 -90
- package/lib/mol-repr/volume/registry.d.ts +63 -60
- package/lib/mol-repr/volume/segment.d.ts +80 -75
- package/lib/mol-repr/volume/slice.d.ts +45 -45
- package/lib/mol-script/language/symbol-table/core.d.ts +1 -1
- package/lib/mol-state/object.d.ts +4 -4
- package/lib/mol-state/state.d.ts +4 -4
- package/lib/mol-state/transform.d.ts +1 -1
- package/lib/mol-state/transformer.d.ts +1 -1
- package/lib/mol-task/util/scheduler.d.ts +0 -1
- package/lib/mol-theme/color/atom-id.d.ts +2 -2
- package/lib/mol-theme/color/chain-id.d.ts +2 -2
- package/lib/mol-theme/color/element-index.d.ts +2 -2
- package/lib/mol-theme/color/entity-id.d.ts +2 -2
- package/lib/mol-theme/color/entity-source.d.ts +2 -2
- package/lib/mol-theme/color/external-volume.d.ts +2 -2
- package/lib/mol-theme/color/model-index.d.ts +2 -2
- package/lib/mol-theme/color/operator-hkl.d.ts +2 -2
- package/lib/mol-theme/color/operator-name.d.ts +2 -2
- package/lib/mol-theme/color/polymer-id.d.ts +2 -2
- package/lib/mol-theme/color/polymer-index.d.ts +2 -2
- package/lib/mol-theme/color/structure-index.d.ts +2 -2
- package/lib/mol-theme/color/trajectory-index.d.ts +2 -2
- package/lib/mol-theme/color/unit-index.d.ts +2 -2
- package/lib/mol-theme/color/volume-segment.d.ts +2 -2
- package/lib/mol-theme/color.d.ts +16 -16
- package/lib/mol-theme/theme.d.ts +3 -3
- package/lib/mol-util/color/palette.d.ts +4 -3
- package/lib/mol-util/color/scale.d.ts +2 -1
- package/lib/mol-util/data-source.d.ts +0 -1
- package/lib/mol-util/nodejs-shims.d.ts +1 -1
- package/lib/servers/model/config.d.ts +4 -4
- package/lib/servers/model/utils/tar.d.ts +0 -1
- package/lib/servers/volume/common/binary-schema.d.ts +0 -1
- package/lib/servers/volume/common/data-format.d.ts +0 -1
- package/lib/servers/volume/config.d.ts +1 -5
- package/package.json +18 -16
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
* @author Alexander Rose <alexander.rose@weirdbyte.de>
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.
|
|
8
|
+
exports.TextSchema = void 0;
|
|
9
|
+
exports.TextRenderable = TextRenderable;
|
|
9
10
|
const renderable_1 = require("../renderable");
|
|
10
11
|
const render_item_1 = require("../webgl/render-item");
|
|
11
12
|
const schema_1 = require("./schema");
|
|
@@ -39,4 +40,3 @@ function TextRenderable(ctx, id, values, state, materialId, transparency) {
|
|
|
39
40
|
const renderItem = (0, render_item_1.createGraphicsRenderItem)(ctx, 'triangles', shaderCode, schema, { ...values, ...internalValues }, materialId, transparency);
|
|
40
41
|
return (0, renderable_1.createRenderable)(renderItem, values, state);
|
|
41
42
|
}
|
|
42
|
-
exports.TextRenderable = TextRenderable;
|
|
@@ -17,6 +17,7 @@ export declare const TextureMeshSchema: {
|
|
|
17
17
|
uDoubleSided: UniformSpec<"b">;
|
|
18
18
|
dFlipSided: DefineSpec<"boolean">;
|
|
19
19
|
dIgnoreLight: DefineSpec<"boolean">;
|
|
20
|
+
dCelShaded: DefineSpec<"boolean">;
|
|
20
21
|
dXrayShaded: DefineSpec<"string">;
|
|
21
22
|
dTransparentBackfaces: DefineSpec<"string">;
|
|
22
23
|
uBumpFrequency: UniformSpec<"f">;
|
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
* @author Alexander Rose <alexander.rose@weirdbyte.de>
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.
|
|
8
|
+
exports.TextureMeshSchema = void 0;
|
|
9
|
+
exports.TextureMeshRenderable = TextureMeshRenderable;
|
|
9
10
|
const renderable_1 = require("../renderable");
|
|
10
11
|
const render_item_1 = require("../webgl/render-item");
|
|
11
12
|
const schema_1 = require("./schema");
|
|
@@ -22,6 +23,7 @@ exports.TextureMeshSchema = {
|
|
|
22
23
|
uDoubleSided: (0, schema_1.UniformSpec)('b', 'material'),
|
|
23
24
|
dFlipSided: (0, schema_1.DefineSpec)('boolean'),
|
|
24
25
|
dIgnoreLight: (0, schema_1.DefineSpec)('boolean'),
|
|
26
|
+
dCelShaded: (0, schema_1.DefineSpec)('boolean'),
|
|
25
27
|
dXrayShaded: (0, schema_1.DefineSpec)('string', ['off', 'on', 'inverted']),
|
|
26
28
|
dTransparentBackfaces: (0, schema_1.DefineSpec)('string', ['off', 'on', 'opaque']),
|
|
27
29
|
uBumpFrequency: (0, schema_1.UniformSpec)('f', 'material'),
|
|
@@ -37,4 +39,3 @@ function TextureMeshRenderable(ctx, id, values, state, materialId, transparency)
|
|
|
37
39
|
const renderItem = (0, render_item_1.createGraphicsRenderItem)(ctx, 'triangles', shaderCode, schema, { ...values, ...internalValues }, materialId, transparency);
|
|
38
40
|
return (0, renderable_1.createRenderable)(renderItem, values, state);
|
|
39
41
|
}
|
|
40
|
-
exports.TextureMeshRenderable = TextureMeshRenderable;
|
|
@@ -5,7 +5,13 @@
|
|
|
5
5
|
* @author Alexander Rose <alexander.rose@weirdbyte.de>
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.
|
|
8
|
+
exports.calculateTextureInfo = calculateTextureInfo;
|
|
9
|
+
exports.createTextureImage = createTextureImage;
|
|
10
|
+
exports.printTextureImage = printTextureImage;
|
|
11
|
+
exports.printImageData = printImageData;
|
|
12
|
+
exports.calculateInvariantBoundingSphere = calculateInvariantBoundingSphere;
|
|
13
|
+
exports.calculateTransformBoundingSphere = calculateTransformBoundingSphere;
|
|
14
|
+
exports.calculateBoundingSphere = calculateBoundingSphere;
|
|
9
15
|
const geometry_1 = require("../../mol-math/geometry");
|
|
10
16
|
const linear_algebra_1 = require("../../mol-math/linear-algebra");
|
|
11
17
|
const boundary_helper_1 = require("../../mol-math/geometry/boundary-helper");
|
|
@@ -21,13 +27,11 @@ function calculateTextureInfo(n, itemSize) {
|
|
|
21
27
|
const height = width > 0 ? Math.ceil(n / width) : 0;
|
|
22
28
|
return { width, height, length: width * height * itemSize };
|
|
23
29
|
}
|
|
24
|
-
exports.calculateTextureInfo = calculateTextureInfo;
|
|
25
30
|
function createTextureImage(n, itemSize, arrayCtor, array) {
|
|
26
31
|
const { length, width, height } = calculateTextureInfo(n, itemSize);
|
|
27
32
|
array = array && array.length >= length ? array : new arrayCtor(length);
|
|
28
33
|
return { array, width, height };
|
|
29
34
|
}
|
|
30
|
-
exports.createTextureImage = createTextureImage;
|
|
31
35
|
const DefaultPrintImageOptions = {
|
|
32
36
|
scale: 1,
|
|
33
37
|
pixelated: false,
|
|
@@ -72,7 +76,6 @@ function printTextureImage(textureImage, options = {}) {
|
|
|
72
76
|
}
|
|
73
77
|
return printImageData(new ImageData(data, width, height), options);
|
|
74
78
|
}
|
|
75
|
-
exports.printTextureImage = printTextureImage;
|
|
76
79
|
let tmpCanvas;
|
|
77
80
|
let tmpCanvasCtx;
|
|
78
81
|
let tmpContainer;
|
|
@@ -138,7 +141,6 @@ function printImageData(imageData, options = {}) {
|
|
|
138
141
|
}, 'image/png');
|
|
139
142
|
}
|
|
140
143
|
}
|
|
141
|
-
exports.printImageData = printImageData;
|
|
142
144
|
//
|
|
143
145
|
const v = (0, linear_algebra_1.Vec3)();
|
|
144
146
|
const boundaryHelperCoarse = new boundary_helper_1.BoundaryHelper('14');
|
|
@@ -169,7 +171,6 @@ function calculateInvariantBoundingSphere(position, positionCount, stepFactor) {
|
|
|
169
171
|
}
|
|
170
172
|
return sphere;
|
|
171
173
|
}
|
|
172
|
-
exports.calculateInvariantBoundingSphere = calculateInvariantBoundingSphere;
|
|
173
174
|
const _mat4 = (0, linear_algebra_1.Mat4)();
|
|
174
175
|
function calculateTransformBoundingSphere(invariantBoundingSphere, transform, transformCount, transformOffset) {
|
|
175
176
|
if (transformCount === 1) {
|
|
@@ -209,7 +210,6 @@ function calculateTransformBoundingSphere(invariantBoundingSphere, transform, tr
|
|
|
209
210
|
}
|
|
210
211
|
return boundaryHelper.getSphere();
|
|
211
212
|
}
|
|
212
|
-
exports.calculateTransformBoundingSphere = calculateTransformBoundingSphere;
|
|
213
213
|
function calculateBoundingSphere(position, positionCount, transform, transformCount, padding = 0, stepFactor = 1) {
|
|
214
214
|
const invariantBoundingSphere = calculateInvariantBoundingSphere(position, positionCount, stepFactor);
|
|
215
215
|
const boundingSphere = calculateTransformBoundingSphere(invariantBoundingSphere, transform, transformCount, 0);
|
|
@@ -217,4 +217,3 @@ function calculateBoundingSphere(position, positionCount, transform, transformCo
|
|
|
217
217
|
geometry_1.Sphere3D.expand(invariantBoundingSphere, invariantBoundingSphere, padding);
|
|
218
218
|
return { boundingSphere, invariantBoundingSphere };
|
|
219
219
|
}
|
|
220
|
-
exports.calculateBoundingSphere = calculateBoundingSphere;
|
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
* @author Alexander Rose <alexander.rose@weirdbyte.de>
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.
|
|
8
|
+
exports.createRenderable = createRenderable;
|
|
9
|
+
exports.createComputeRenderable = createComputeRenderable;
|
|
9
10
|
const mol_util_1 = require("../mol-util");
|
|
10
11
|
const id_factory_1 = require("../mol-util/id-factory");
|
|
11
12
|
const interpolate_1 = require("../mol-math/interpolate");
|
|
@@ -273,7 +274,6 @@ function createRenderable(renderItem, values, state) {
|
|
|
273
274
|
dispose: () => renderItem.destroy()
|
|
274
275
|
};
|
|
275
276
|
}
|
|
276
|
-
exports.createRenderable = createRenderable;
|
|
277
277
|
function createComputeRenderable(renderItem, values) {
|
|
278
278
|
return {
|
|
279
279
|
id: getNextRenderableId(),
|
|
@@ -283,4 +283,3 @@ function createComputeRenderable(renderItem, values) {
|
|
|
283
283
|
dispose: () => renderItem.destroy()
|
|
284
284
|
};
|
|
285
285
|
}
|
|
286
|
-
exports.createComputeRenderable = createComputeRenderable;
|
|
@@ -46,6 +46,7 @@ exports.RendererParams = {
|
|
|
46
46
|
dimStrength: param_definition_1.ParamDefinition.Numeric(0.0, { min: 0.0, max: 1.0, step: 0.1 }),
|
|
47
47
|
markerPriority: param_definition_1.ParamDefinition.Select(1, [[1, 'Highlight'], [2, 'Select']]),
|
|
48
48
|
xrayEdgeFalloff: param_definition_1.ParamDefinition.Numeric(1, { min: 0.0, max: 3.0, step: 0.1 }),
|
|
49
|
+
celSteps: param_definition_1.ParamDefinition.Numeric(5, { min: 2, max: 16, step: 1 }),
|
|
49
50
|
exposure: param_definition_1.ParamDefinition.Numeric(1, { min: 0.0, max: 3.0, step: 0.01 }),
|
|
50
51
|
light: param_definition_1.ParamDefinition.ObjectList({
|
|
51
52
|
inclination: param_definition_1.ParamDefinition.Numeric(150, { min: 0, max: 180, step: 1 }),
|
|
@@ -155,6 +156,7 @@ var Renderer;
|
|
|
155
156
|
uMarkerPriority: mol_util_1.ValueCell.create(p.markerPriority),
|
|
156
157
|
uMarkerAverage: mol_util_1.ValueCell.create(0),
|
|
157
158
|
uXrayEdgeFalloff: mol_util_1.ValueCell.create(p.xrayEdgeFalloff),
|
|
159
|
+
uCelSteps: mol_util_1.ValueCell.create(p.celSteps),
|
|
158
160
|
uExposure: mol_util_1.ValueCell.create(p.exposure),
|
|
159
161
|
};
|
|
160
162
|
const globalUniformList = Object.entries(globalUniforms);
|
|
@@ -709,6 +711,10 @@ var Renderer;
|
|
|
709
711
|
p.xrayEdgeFalloff = props.xrayEdgeFalloff;
|
|
710
712
|
mol_util_1.ValueCell.update(globalUniforms.uXrayEdgeFalloff, p.xrayEdgeFalloff);
|
|
711
713
|
}
|
|
714
|
+
if (props.celSteps !== undefined && props.celSteps !== p.celSteps) {
|
|
715
|
+
p.celSteps = props.celSteps;
|
|
716
|
+
mol_util_1.ValueCell.update(globalUniforms.uCelSteps, p.celSteps);
|
|
717
|
+
}
|
|
712
718
|
if (props.exposure !== undefined && props.exposure !== p.exposure) {
|
|
713
719
|
p.exposure = props.exposure;
|
|
714
720
|
mol_util_1.ValueCell.update(globalUniforms.uExposure, p.exposure);
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
* Copyright (c) 2017-2024 mol* contributors, licensed under MIT, See LICENSE file for more info.
|
|
3
3
|
*
|
|
4
4
|
* @author Alexander Rose <alexander.rose@weirdbyte.de>
|
|
5
|
+
* @author Gianluca Tomasello <giagitom@gmail.com>
|
|
5
6
|
*
|
|
6
7
|
* adapted from three.js (https://github.com/mrdoob/three.js/)
|
|
7
8
|
* which under the MIT License, Copyright © 2010-2021 three.js authors
|
|
8
9
|
*/
|
|
9
|
-
export declare const apply_light_color = "\n#if defined(dIgnoreLight)\n #ifdef bumpEnabled\n if (uBumpFrequency > 0.0 && uBumpAmplitude > 0.0 && bumpiness > 0.0) {\n material.rgb += fbm(vModelPosition * uBumpFrequency) * uBumpAmplitude * bumpiness;\n material.rgb -= 0.5 * uBumpAmplitude * bumpiness;\n }\n #endif\n\n #if defined(dRenderVariant_color)\n material.rgb += material.rgb * emissive;\n #endif\n\n gl_FragColor = material;\n#else\n #ifdef bumpEnabled\n if (uBumpFrequency > 0.0 && uBumpAmplitude > 0.0 && bumpiness > 0.0) {\n normal = perturbNormal(-vViewPosition, normal, fbm(vModelPosition * uBumpFrequency), (uBumpAmplitude * bumpiness) / uBumpFrequency);\n }\n #endif\n\n vec4 color = material;\n\n
|
|
10
|
+
export declare const apply_light_color = "\n#if defined(dIgnoreLight)\n #ifdef bumpEnabled\n if (uBumpFrequency > 0.0 && uBumpAmplitude > 0.0 && bumpiness > 0.0) {\n material.rgb += fbm(vModelPosition * uBumpFrequency) * uBumpAmplitude * bumpiness;\n material.rgb -= 0.5 * uBumpAmplitude * bumpiness;\n }\n #endif\n\n #if defined(dRenderVariant_color)\n material.rgb += material.rgb * emissive;\n #endif\n\n gl_FragColor = material;\n#else\n #ifdef bumpEnabled\n if (uBumpFrequency > 0.0 && uBumpAmplitude > 0.0 && bumpiness > 0.0) {\n normal = perturbNormal(-vViewPosition, normal, fbm(vModelPosition * uBumpFrequency), (uBumpAmplitude * bumpiness) / uBumpFrequency);\n }\n #endif\n\n vec4 color = material;\n\n #if defined(dCelShaded)\n // clamp to avoid artifacts\n metalness = clamp(metalness, 0.0, 0.99);\n roughness = clamp(roughness, 0.05, 1.0);\n #endif\n\n GeometricContext geometry;\n geometry.position = -vViewPosition;\n geometry.normal = normal;\n geometry.viewDir = normalize(vViewPosition);\n\n PhysicalMaterial physicalMaterial;\n physicalMaterial.diffuseColor = color.rgb * (1.0 - metalness);\n #ifdef enabledFragDepth\n physicalMaterial.roughness = min(max(roughness, 0.0525), 1.0);\n #else\n vec3 dxy = max(abs(dFdx(normal)), abs(dFdy(normal)));\n float geometryRoughness = max(max(dxy.x, dxy.y), dxy.z);\n physicalMaterial.roughness = min(max(roughness, 0.0525) + geometryRoughness, 1.0);\n #endif\n physicalMaterial.specularColor = mix(vec3(0.04), color.rgb, metalness);\n physicalMaterial.specularF90 = 1.0;\n\n IncidentLight directLight;\n\n vec3 outgoingLight = vec3(0.0);\n\n #if defined(dCelShaded)\n float celDiffuse;\n float celSpecular;\n float celIntensity;\n\n #pragma unroll_loop_start\n for (int i = 0; i < dLightCount; ++i) {\n directLight.direction = uLightDirection[i];\n directLight.color = uLightColor[i] * PI; // * PI for punctual light\n\n celDiffuse = RECIPROCAL_PI * max(dot(geometry.normal, directLight.direction), 0.0) * (1.0 - metalness);\n celSpecular = luminance(saturate(dot(geometry.normal, directLight.direction)) * BRDF_GGX(directLight.direction, geometry.viewDir, geometry.normal, physicalMaterial.specularColor, physicalMaterial.specularF90, roughness));\n\n celIntensity = celDiffuse + celSpecular;\n celIntensity = ceil(celIntensity * uCelSteps) / uCelSteps;\n\n outgoingLight += color.rgb * directLight.color * celIntensity;\n }\n #pragma unroll_loop_end\n\n outgoingLight += physicalMaterial.diffuseColor * luminance(uAmbientColor);\n #else\n ReflectedLight reflectedLight = ReflectedLight(vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0));\n\n #pragma unroll_loop_start\n for (int i = 0; i < dLightCount; ++i) {\n directLight.direction = uLightDirection[i];\n directLight.color = uLightColor[i] * PI; // * PI for punctual light\n RE_Direct_Physical(directLight, geometry, physicalMaterial, reflectedLight);\n }\n #pragma unroll_loop_end\n\n vec3 irradiance = uAmbientColor * PI; // * PI for punctual light\n RE_IndirectDiffuse_Physical(irradiance, geometry, physicalMaterial, reflectedLight);\n\n // indirect specular only metals\n vec3 radiance = uAmbientColor * metalness;\n vec3 iblIrradiance = uAmbientColor * metalness;\n vec3 clearcoatRadiance = vec3(0.0);\n RE_IndirectSpecular_Physical(radiance, iblIrradiance, clearcoatRadiance, geometry, physicalMaterial, reflectedLight);\n\n outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular;\n #endif\n outgoingLight = clamp(outgoingLight, 0.01, 0.99); // prevents black artifacts on specular highlight with transparent background\n\n #if defined(dRenderVariant_color)\n outgoingLight += color.rgb * emissive;\n #endif\n\n gl_FragColor = vec4(outgoingLight, color.a);\n#endif\n\n#if defined(dXrayShaded_on)\n gl_FragColor.a *= 1.0 - pow(abs(dot(normal, vec3(0.0, 0.0, 1.0))), uXrayEdgeFalloff);\n#elif defined(dXrayShaded_inverted)\n gl_FragColor.a *= pow(abs(dot(normal, vec3(0.0, 0.0, 1.0))), uXrayEdgeFalloff);\n#endif\n\ngl_FragColor.rgb *= uExposure;\n";
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Copyright (c) 2017-2024 mol* contributors, licensed under MIT, See LICENSE file for more info.
|
|
4
4
|
*
|
|
5
5
|
* @author Alexander Rose <alexander.rose@weirdbyte.de>
|
|
6
|
+
* @author Gianluca Tomasello <giagitom@gmail.com>
|
|
6
7
|
*
|
|
7
8
|
* adapted from three.js (https://github.com/mrdoob/three.js/)
|
|
8
9
|
* which under the MIT License, Copyright © 2010-2021 three.js authors
|
|
@@ -32,7 +33,16 @@ exports.apply_light_color = `
|
|
|
32
33
|
|
|
33
34
|
vec4 color = material;
|
|
34
35
|
|
|
35
|
-
|
|
36
|
+
#if defined(dCelShaded)
|
|
37
|
+
// clamp to avoid artifacts
|
|
38
|
+
metalness = clamp(metalness, 0.0, 0.99);
|
|
39
|
+
roughness = clamp(roughness, 0.05, 1.0);
|
|
40
|
+
#endif
|
|
41
|
+
|
|
42
|
+
GeometricContext geometry;
|
|
43
|
+
geometry.position = -vViewPosition;
|
|
44
|
+
geometry.normal = normal;
|
|
45
|
+
geometry.viewDir = normalize(vViewPosition);
|
|
36
46
|
|
|
37
47
|
PhysicalMaterial physicalMaterial;
|
|
38
48
|
physicalMaterial.diffuseColor = color.rgb * (1.0 - metalness);
|
|
@@ -46,30 +56,53 @@ exports.apply_light_color = `
|
|
|
46
56
|
physicalMaterial.specularColor = mix(vec3(0.04), color.rgb, metalness);
|
|
47
57
|
physicalMaterial.specularF90 = 1.0;
|
|
48
58
|
|
|
49
|
-
GeometricContext geometry;
|
|
50
|
-
geometry.position = -vViewPosition;
|
|
51
|
-
geometry.normal = normal;
|
|
52
|
-
geometry.viewDir = normalize(vViewPosition);
|
|
53
|
-
|
|
54
59
|
IncidentLight directLight;
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
60
|
+
|
|
61
|
+
vec3 outgoingLight = vec3(0.0);
|
|
62
|
+
|
|
63
|
+
#if defined(dCelShaded)
|
|
64
|
+
float celDiffuse;
|
|
65
|
+
float celSpecular;
|
|
66
|
+
float celIntensity;
|
|
67
|
+
|
|
68
|
+
#pragma unroll_loop_start
|
|
69
|
+
for (int i = 0; i < dLightCount; ++i) {
|
|
70
|
+
directLight.direction = uLightDirection[i];
|
|
71
|
+
directLight.color = uLightColor[i] * PI; // * PI for punctual light
|
|
72
|
+
|
|
73
|
+
celDiffuse = RECIPROCAL_PI * max(dot(geometry.normal, directLight.direction), 0.0) * (1.0 - metalness);
|
|
74
|
+
celSpecular = luminance(saturate(dot(geometry.normal, directLight.direction)) * BRDF_GGX(directLight.direction, geometry.viewDir, geometry.normal, physicalMaterial.specularColor, physicalMaterial.specularF90, roughness));
|
|
75
|
+
|
|
76
|
+
celIntensity = celDiffuse + celSpecular;
|
|
77
|
+
celIntensity = ceil(celIntensity * uCelSteps) / uCelSteps;
|
|
78
|
+
|
|
79
|
+
outgoingLight += color.rgb * directLight.color * celIntensity;
|
|
80
|
+
}
|
|
81
|
+
#pragma unroll_loop_end
|
|
82
|
+
|
|
83
|
+
outgoingLight += physicalMaterial.diffuseColor * luminance(uAmbientColor);
|
|
84
|
+
#else
|
|
85
|
+
ReflectedLight reflectedLight = ReflectedLight(vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0));
|
|
86
|
+
|
|
87
|
+
#pragma unroll_loop_start
|
|
88
|
+
for (int i = 0; i < dLightCount; ++i) {
|
|
89
|
+
directLight.direction = uLightDirection[i];
|
|
90
|
+
directLight.color = uLightColor[i] * PI; // * PI for punctual light
|
|
91
|
+
RE_Direct_Physical(directLight, geometry, physicalMaterial, reflectedLight);
|
|
92
|
+
}
|
|
93
|
+
#pragma unroll_loop_end
|
|
94
|
+
|
|
95
|
+
vec3 irradiance = uAmbientColor * PI; // * PI for punctual light
|
|
96
|
+
RE_IndirectDiffuse_Physical(irradiance, geometry, physicalMaterial, reflectedLight);
|
|
97
|
+
|
|
98
|
+
// indirect specular only metals
|
|
99
|
+
vec3 radiance = uAmbientColor * metalness;
|
|
100
|
+
vec3 iblIrradiance = uAmbientColor * metalness;
|
|
101
|
+
vec3 clearcoatRadiance = vec3(0.0);
|
|
102
|
+
RE_IndirectSpecular_Physical(radiance, iblIrradiance, clearcoatRadiance, geometry, physicalMaterial, reflectedLight);
|
|
103
|
+
|
|
104
|
+
outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular;
|
|
105
|
+
#endif
|
|
73
106
|
outgoingLight = clamp(outgoingLight, 0.01, 0.99); // prevents black artifacts on specular highlight with transparent background
|
|
74
107
|
|
|
75
108
|
#if defined(dRenderVariant_color)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const common_frag_params = "\nuniform int uObjectId;\nuniform int uInstanceCount;\nuniform int uGroupCount;\n\nuniform int uPickType;\nuniform int uMarkingType;\n\nuniform vec4 uCameraPlane;\nuniform vec4 uLod;\n\n#if dClipObjectCount != 0\n uniform int uClipObjectType[dClipObjectCount];\n uniform bool uClipObjectInvert[dClipObjectCount];\n uniform vec3 uClipObjectPosition[dClipObjectCount];\n uniform vec4 uClipObjectRotation[dClipObjectCount];\n uniform vec3 uClipObjectScale[dClipObjectCount];\n\n #if defined(dClipping)\n #if __VERSION__ == 100 || defined(dClippingType_instance) || !defined(dVaryingGroup)\n varying float vClipping;\n #else\n flat in float vClipping;\n #endif\n #endif\n#endif\n\n#if defined(dColorMarker)\n uniform vec3 uHighlightColor;\n uniform vec3 uSelectColor;\n uniform vec3 uDimColor;\n uniform float uHighlightStrength;\n uniform float uSelectStrength;\n uniform float uDimStrength;\n uniform int uMarkerPriority;\n uniform float uMarkerAverage;\n#endif\n\n#if defined(dNeedsMarker)\n uniform float uMarker;\n #if __VERSION__ == 100 || defined(dMarkerType_instance) || !defined(dVaryingGroup)\n varying float vMarker;\n #else\n flat in float vMarker;\n #endif\n#endif\n\n#if defined(dRenderVariant_colorDpoit)\n #define MAX_DPOIT_DEPTH 99999.0 // NOTE constant also set in TypeScript\n uniform sampler2D tDpoitDepth;\n uniform sampler2D tDpoitFrontColor;\n#endif\n\nvarying vec3 vModelPosition;\nvarying vec3 vViewPosition;\n\nuniform vec2 uViewOffset;\n\nuniform float uNear;\nuniform float uFar;\nuniform float uIsOrtho;\n\nuniform bool uFog;\nuniform float uFogNear;\nuniform float uFogFar;\nuniform vec3 uFogColor;\n\nuniform float uAlpha;\nuniform float uPickingAlphaThreshold;\nuniform bool uTransparentBackground;\n\nuniform bool uDoubleSided;\nuniform float uInteriorDarkening;\nuniform bool uInteriorColorFlag;\nuniform vec3 uInteriorColor;\nbool interior;\n\nuniform float uXrayEdgeFalloff;\nuniform float uExposure;\n\nuniform mat4 uProjection;\n\nuniform int uRenderMask;\nuniform bool uMarkingDepthTest;\n\nuniform sampler2D tDepth;\nuniform vec2 uDrawingBufferSize;\n\nfloat getDepthPacked(const in vec2 coords) {\n return unpackRGBAToDepth(texture2D(tDepth, coords));\n}\n\nfloat getDepth(const in vec2 coords) {\n #ifdef depthTextureSupport\n return texture2D(tDepth, coords).r;\n #else\n return unpackRGBAToDepth(texture2D(tDepth, coords));\n #endif\n}\n\nfloat calcDepth(const in vec3 pos) {\n vec2 clipZW = pos.z * uProjection[2].zw + uProjection[3].zw;\n return 0.5 + 0.5 * clipZW.x / clipZW.y;\n}\n\n// \"Bump Mapping Unparametrized Surfaces on the GPU\" Morten S. Mikkelsen\n// https://mmikk.github.io/papers3d/mm_sfgrad_bump.pdf\nvec3 perturbNormal(in vec3 position, in vec3 normal, in float height, in float scale) {\n vec3 sigmaS = dFdx(position);\n vec3 sigmaT = dFdy(position);\n\n vec3 r1 = cross(sigmaT, normal);\n vec3 r2 = cross(normal, sigmaS);\n float det = dot(sigmaS, r1);\n if (det == 0.0) return normal;\n\n float bs = dFdx(height);\n float bt = dFdy(height);\n\n vec3 surfGrad = sign(det) * (bs * r1 + bt * r2);\n return normalize(abs(det) * normal - scale * surfGrad);\n}\n\nfloat hash(in float h) {\n return fract(sin(h) * 43758.5453123);\n}\n\nfloat noise(in vec3 x) {\n vec3 p = floor(x);\n vec3 f = fract(x);\n f = f * f * (3.0 - 2.0 * f);\n\n float n = p.x + p.y * 157.0 + 113.0 * p.z;\n return mix(\n mix(mix(hash(n + 0.0), hash(n + 1.0), f.x),\n mix(hash(n + 157.0), hash(n + 158.0), f.x), f.y),\n mix(mix(hash(n + 113.0), hash(n + 114.0), f.x),\n mix(hash(n + 270.0), hash(n + 271.0), f.x), f.y), f.z);\n}\n\nfloat fbm(in vec3 p) {\n float f = 0.0;\n f += 0.5 * noise(p);\n p *= 2.01;\n f += 0.25 * noise(p);\n p *= 2.02;\n f += 0.125 * noise(p);\n\n return f;\n}\n";
|
|
1
|
+
export declare const common_frag_params = "\nuniform int uObjectId;\nuniform int uInstanceCount;\nuniform int uGroupCount;\n\nuniform int uPickType;\nuniform int uMarkingType;\n\nuniform vec4 uCameraPlane;\nuniform vec4 uLod;\n\n#if dClipObjectCount != 0\n uniform int uClipObjectType[dClipObjectCount];\n uniform bool uClipObjectInvert[dClipObjectCount];\n uniform vec3 uClipObjectPosition[dClipObjectCount];\n uniform vec4 uClipObjectRotation[dClipObjectCount];\n uniform vec3 uClipObjectScale[dClipObjectCount];\n\n #if defined(dClipping)\n #if __VERSION__ == 100 || defined(dClippingType_instance) || !defined(dVaryingGroup)\n varying float vClipping;\n #else\n flat in float vClipping;\n #endif\n #endif\n#endif\n\n#if defined(dColorMarker)\n uniform vec3 uHighlightColor;\n uniform vec3 uSelectColor;\n uniform vec3 uDimColor;\n uniform float uHighlightStrength;\n uniform float uSelectStrength;\n uniform float uDimStrength;\n uniform int uMarkerPriority;\n uniform float uMarkerAverage;\n#endif\n\n#if defined(dNeedsMarker)\n uniform float uMarker;\n #if __VERSION__ == 100 || defined(dMarkerType_instance) || !defined(dVaryingGroup)\n varying float vMarker;\n #else\n flat in float vMarker;\n #endif\n#endif\n\n#if defined(dRenderVariant_colorDpoit)\n #define MAX_DPOIT_DEPTH 99999.0 // NOTE constant also set in TypeScript\n uniform sampler2D tDpoitDepth;\n uniform sampler2D tDpoitFrontColor;\n#endif\n\nvarying vec3 vModelPosition;\nvarying vec3 vViewPosition;\n\nuniform vec2 uViewOffset;\n\nuniform float uNear;\nuniform float uFar;\nuniform float uIsOrtho;\n\nuniform bool uFog;\nuniform float uFogNear;\nuniform float uFogFar;\nuniform vec3 uFogColor;\n\nuniform float uAlpha;\nuniform float uPickingAlphaThreshold;\nuniform bool uTransparentBackground;\n\nuniform bool uDoubleSided;\nuniform float uInteriorDarkening;\nuniform bool uInteriorColorFlag;\nuniform vec3 uInteriorColor;\nbool interior;\n\nuniform float uXrayEdgeFalloff;\nuniform float uCelSteps;\nuniform float uExposure;\n\nuniform mat4 uProjection;\n\nuniform int uRenderMask;\nuniform bool uMarkingDepthTest;\n\nuniform sampler2D tDepth;\nuniform vec2 uDrawingBufferSize;\n\nfloat getDepthPacked(const in vec2 coords) {\n return unpackRGBAToDepth(texture2D(tDepth, coords));\n}\n\nfloat getDepth(const in vec2 coords) {\n #ifdef depthTextureSupport\n return texture2D(tDepth, coords).r;\n #else\n return unpackRGBAToDepth(texture2D(tDepth, coords));\n #endif\n}\n\nfloat calcDepth(const in vec3 pos) {\n vec2 clipZW = pos.z * uProjection[2].zw + uProjection[3].zw;\n return 0.5 + 0.5 * clipZW.x / clipZW.y;\n}\n\n// \"Bump Mapping Unparametrized Surfaces on the GPU\" Morten S. Mikkelsen\n// https://mmikk.github.io/papers3d/mm_sfgrad_bump.pdf\nvec3 perturbNormal(in vec3 position, in vec3 normal, in float height, in float scale) {\n vec3 sigmaS = dFdx(position);\n vec3 sigmaT = dFdy(position);\n\n vec3 r1 = cross(sigmaT, normal);\n vec3 r2 = cross(normal, sigmaS);\n float det = dot(sigmaS, r1);\n if (det == 0.0) return normal;\n\n float bs = dFdx(height);\n float bt = dFdy(height);\n\n vec3 surfGrad = sign(det) * (bs * r1 + bt * r2);\n return normalize(abs(det) * normal - scale * surfGrad);\n}\n\nfloat hash(in float h) {\n return fract(sin(h) * 43758.5453123);\n}\n\nfloat noise(in vec3 x) {\n vec3 p = floor(x);\n vec3 f = fract(x);\n f = f * f * (3.0 - 2.0 * f);\n\n float n = p.x + p.y * 157.0 + 113.0 * p.z;\n return mix(\n mix(mix(hash(n + 0.0), hash(n + 1.0), f.x),\n mix(hash(n + 157.0), hash(n + 158.0), f.x), f.y),\n mix(mix(hash(n + 113.0), hash(n + 114.0), f.x),\n mix(hash(n + 270.0), hash(n + 271.0), f.x), f.y), f.z);\n}\n\nfloat fbm(in vec3 p) {\n float f = 0.0;\n f += 0.5 * noise(p);\n p *= 2.01;\n f += 0.25 * noise(p);\n p *= 2.02;\n f += 0.125 * noise(p);\n\n return f;\n}\n";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const common = "\n// TODO find a better place for these convenience defines\n\n#if defined(dRenderVariant_colorBlended) || defined(dRenderVariant_colorWboit) || defined(dRenderVariant_colorDpoit)\n #define dRenderVariant_color\n#endif\n\n#if defined(dColorType_instance) || defined(dColorType_group) || defined(dColorType_groupInstance) || defined(dColorType_vertex) || defined(dColorType_vertexInstance)\n #define dColorType_texture\n#endif\n\n#if defined(dColorType_volume) || defined(dColorType_volumeInstance)\n #define dColorType_grid\n#endif\n\n#if defined(dColorType_attribute) || defined(dColorType_texture) || defined(dColorType_grid)\n #define dColorType_varying\n#endif\n\n#if (defined(dRenderVariant_color) && defined(dColorMarker)) || defined(dRenderVariant_marking)\n #define dNeedsMarker\n#endif\n\n#if defined(dXrayShaded_on) || defined(dXrayShaded_inverted)\n #define dXrayShaded\n#endif\n\n#define MaskAll 0\n#define MaskOpaque 1\n#define MaskTransparent 2\n\n//\n\n#define PI 3.14159265\n#define RECIPROCAL_PI 0.31830988618\n#define EPSILON 1e-6\n\n#define saturate(a) clamp(a, 0.0, 1.0)\n\n#if __VERSION__ == 100\n #define round(x) floor((x) + 0.5)\n#endif\n\nfloat intDiv(const in float a, const in float b) { return float(int(a) / int(b)); }\nvec2 ivec2Div(const in vec2 a, const in vec2 b) { return vec2(ivec2(a) / ivec2(b)); }\nfloat intMod(const in float a, const in float b) { return a - b * float(int(a) / int(b)); }\nint imod(const in int a, const in int b) { return a - b * (a / b); }\n\nfloat pow2(const in float x) { return x * x; }\n\nvec3 packIntToRGB(in float value) {\n value = clamp(round(value), 0.0, 16777216.0 - 1.0) + 1.0;\n vec3 c = vec3(0.0);\n c.b = mod(value, 256.0);\n value = floor(value / 256.0);\n c.g = mod(value, 256.0);\n value = floor(value / 256.0);\n c.r = mod(value, 256.0);\n return c / 255.0;\n}\nfloat unpackRGBToInt(const in vec3 rgb) {\n return (floor(rgb.r * 255.0 + 0.5) * 256.0 * 256.0 + floor(rgb.g * 255.0 + 0.5) * 256.0 + floor(rgb.b * 255.0 + 0.5)) - 1.0;\n}\n\nvec2 packUnitIntervalToRG(const in float v) {\n vec2 enc;\n enc.xy = vec2(fract(v * 256.0), v);\n enc.y -= enc.x * (1.0 / 256.0);\n enc.xy *= 256.0 / 255.0;\n\n return enc;\n}\n\nfloat unpackRGToUnitInterval(const in vec2 enc) {\n return dot(enc, vec2(255.0 / (256.0 * 256.0), 255.0 / 256.0));\n}\n\nvec3 screenSpaceToViewSpace(const in vec3 ssPos, const in mat4 invProjection) {\n vec4 p = vec4(ssPos * 2.0 - 1.0, 1.0);\n p = invProjection * p;\n return p.xyz / p.w;\n}\n\nconst float PackUpscale = 256.0 / 255.0; // fraction -> 0..1 (including 1)\nconst float UnpackDownscale = 255.0 / 256.0; // 0..1 -> fraction (excluding 1)\nconst vec3 PackFactors = vec3(256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0);\nconst vec4 UnpackFactors = UnpackDownscale / vec4(PackFactors, 1.0);\nconst float ShiftRight8 = 1.0 / 256.0;\n\nvec4 packDepthToRGBA(const in float v) {\n vec4 r = vec4(fract(v * PackFactors), v);\n r.yzw -= r.xyz * ShiftRight8; // tidy overflow\n return r * PackUpscale;\n}\nfloat unpackRGBAToDepth(const in vec4 v) {\n return dot(v, UnpackFactors);\n}\n\nvec4 sRGBToLinear(const in vec4 c) {\n return vec4(mix(pow(c.rgb * 0.9478672986 + vec3(0.0521327014), vec3(2.4)), c.rgb * 0.0773993808, vec3(lessThanEqual(c.rgb, vec3(0.04045)))), c.a);\n}\nvec4 linearTosRGB(const in vec4 c) {\n return vec4(mix(pow(c.rgb, vec3(0.41666)) * 1.055 - vec3(0.055), c.rgb * 12.92, vec3(lessThanEqual(c.rgb, vec3(0.0031308)))), c.a);\n}\n\nfloat linearizeDepth(const in float depth, const in float near, const in float far) {\n return (2.0 * near) / (far + near - depth * (far - near));\n}\n\nfloat perspectiveDepthToViewZ(const in float invClipZ, const in float near, const in float far) {\n return (near * far) / ((far - near) * invClipZ - far);\n}\n\nfloat orthographicDepthToViewZ(const in float linearClipZ, const in float near, const in float far) {\n return linearClipZ * (near - far) - near;\n}\n\nfloat depthToViewZ(const in float isOrtho, const in float linearClipZ, const in float near, const in float far) {\n return isOrtho == 1.0 ? orthographicDepthToViewZ(linearClipZ, near, far) : perspectiveDepthToViewZ(linearClipZ, near, far);\n}\n\n#if __VERSION__ == 100\n // transpose\n\n float transpose(const in float m) {\n return m;\n }\n\n mat2 transpose2(const in mat2 m) {\n return mat2(\n m[0][0], m[1][0],\n m[0][1], m[1][1]\n );\n }\n\n mat3 transpose3(const in mat3 m) {\n return mat3(\n m[0][0], m[1][0], m[2][0],\n m[0][1], m[1][1], m[2][1],\n m[0][2], m[1][2], m[2][2]\n );\n }\n\n mat4 transpose4(const in mat4 m) {\n return mat4(\n m[0][0], m[1][0], m[2][0], m[3][0],\n m[0][1], m[1][1], m[2][1], m[3][1],\n m[0][2], m[1][2], m[2][2], m[3][2],\n m[0][3], m[1][3], m[2][3], m[3][3]\n );\n }\n\n // inverse\n\n float inverse(const in float m) {\n return 1.0 / m;\n }\n\n mat2 inverse2(const in mat2 m) {\n return mat2(m[1][1],-m[0][1],\n -m[1][0], m[0][0]) / (m[0][0]*m[1][1] - m[0][1]*m[1][0]);\n }\n\n mat3 inverse3(const in mat3 m) {\n float a00 = m[0][0], a01 = m[0][1], a02 = m[0][2];\n float a10 = m[1][0], a11 = m[1][1], a12 = m[1][2];\n float a20 = m[2][0], a21 = m[2][1], a22 = m[2][2];\n\n float b01 = a22 * a11 - a12 * a21;\n float b11 = -a22 * a10 + a12 * a20;\n float b21 = a21 * a10 - a11 * a20;\n\n float det = a00 * b01 + a01 * b11 + a02 * b21;\n\n return mat3(b01, (-a22 * a01 + a02 * a21), (a12 * a01 - a02 * a11),\n b11, (a22 * a00 - a02 * a20), (-a12 * a00 + a02 * a10),\n b21, (-a21 * a00 + a01 * a20), (a11 * a00 - a01 * a10)) / det;\n }\n\n mat4 inverse4(const in mat4 m) {\n float\n a00 = m[0][0], a01 = m[0][1], a02 = m[0][2], a03 = m[0][3],\n a10 = m[1][0], a11 = m[1][1], a12 = m[1][2], a13 = m[1][3],\n a20 = m[2][0], a21 = m[2][1], a22 = m[2][2], a23 = m[2][3],\n a30 = m[3][0], a31 = m[3][1], a32 = m[3][2], a33 = m[3][3],\n\n b00 = a00 * a11 - a01 * a10,\n b01 = a00 * a12 - a02 * a10,\n b02 = a00 * a13 - a03 * a10,\n b03 = a01 * a12 - a02 * a11,\n b04 = a01 * a13 - a03 * a11,\n b05 = a02 * a13 - a03 * a12,\n b06 = a20 * a31 - a21 * a30,\n b07 = a20 * a32 - a22 * a30,\n b08 = a20 * a33 - a23 * a30,\n b09 = a21 * a32 - a22 * a31,\n b10 = a21 * a33 - a23 * a31,\n b11 = a22 * a33 - a23 * a32,\n\n det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n return mat4(\n a11 * b11 - a12 * b10 + a13 * b09,\n a02 * b10 - a01 * b11 - a03 * b09,\n a31 * b05 - a32 * b04 + a33 * b03,\n a22 * b04 - a21 * b05 - a23 * b03,\n a12 * b08 - a10 * b11 - a13 * b07,\n a00 * b11 - a02 * b08 + a03 * b07,\n a32 * b02 - a30 * b05 - a33 * b01,\n a20 * b05 - a22 * b02 + a23 * b01,\n a10 * b10 - a11 * b08 + a13 * b06,\n a01 * b08 - a00 * b10 - a03 * b06,\n a30 * b04 - a31 * b02 + a33 * b00,\n a21 * b02 - a20 * b04 - a23 * b00,\n a11 * b07 - a10 * b09 - a12 * b06,\n a00 * b09 - a01 * b07 + a02 * b06,\n a31 * b01 - a30 * b03 - a32 * b00,\n a20 * b03 - a21 * b01 + a22 * b00) / det;\n }\n\n #define isNaN(x) ((x) != (x))\n #define isInf(x) ((x) == (x) + 1.0)\n#else\n #define transpose2(m) transpose(m)\n #define transpose3(m) transpose(m)\n #define transpose4(m) transpose(m)\n\n #define inverse2(m) inverse(m)\n #define inverse3(m) inverse(m)\n #define inverse4(m) inverse(m)\n\n #define isNaN isnan\n #define isInf isinf\n#endif\n";
|
|
1
|
+
export declare const common = "\n// TODO find a better place for these convenience defines\n\n#if defined(dRenderVariant_colorBlended) || defined(dRenderVariant_colorWboit) || defined(dRenderVariant_colorDpoit)\n #define dRenderVariant_color\n#endif\n\n#if defined(dColorType_instance) || defined(dColorType_group) || defined(dColorType_groupInstance) || defined(dColorType_vertex) || defined(dColorType_vertexInstance)\n #define dColorType_texture\n#endif\n\n#if defined(dColorType_volume) || defined(dColorType_volumeInstance)\n #define dColorType_grid\n#endif\n\n#if defined(dColorType_attribute) || defined(dColorType_texture) || defined(dColorType_grid)\n #define dColorType_varying\n#endif\n\n#if (defined(dRenderVariant_color) && defined(dColorMarker)) || defined(dRenderVariant_marking)\n #define dNeedsMarker\n#endif\n\n#if defined(dXrayShaded_on) || defined(dXrayShaded_inverted)\n #define dXrayShaded\n#endif\n\n#define MaskAll 0\n#define MaskOpaque 1\n#define MaskTransparent 2\n\n//\n\n#define PI 3.14159265\n#define RECIPROCAL_PI 0.31830988618\n#define EPSILON 1e-6\n\n#define saturate(a) clamp(a, 0.0, 1.0)\n\n#if __VERSION__ == 100\n #define round(x) floor((x) + 0.5)\n#endif\n\nfloat intDiv(const in float a, const in float b) { return float(int(a) / int(b)); }\nvec2 ivec2Div(const in vec2 a, const in vec2 b) { return vec2(ivec2(a) / ivec2(b)); }\nfloat intMod(const in float a, const in float b) { return a - b * float(int(a) / int(b)); }\nint imod(const in int a, const in int b) { return a - b * (a / b); }\n\nfloat pow2(const in float x) { return x * x; }\n\nvec3 packIntToRGB(in float value) {\n value = clamp(round(value), 0.0, 16777216.0 - 1.0) + 1.0;\n vec3 c = vec3(0.0);\n c.b = mod(value, 256.0);\n value = floor(value / 256.0);\n c.g = mod(value, 256.0);\n value = floor(value / 256.0);\n c.r = mod(value, 256.0);\n return c / 255.0;\n}\nfloat unpackRGBToInt(const in vec3 rgb) {\n return (floor(rgb.r * 255.0 + 0.5) * 256.0 * 256.0 + floor(rgb.g * 255.0 + 0.5) * 256.0 + floor(rgb.b * 255.0 + 0.5)) - 1.0;\n}\n\nvec2 packUnitIntervalToRG(const in float v) {\n vec2 enc;\n enc.xy = vec2(fract(v * 256.0), v);\n enc.y -= enc.x * (1.0 / 256.0);\n enc.xy *= 256.0 / 255.0;\n\n return enc;\n}\n\nfloat unpackRGToUnitInterval(const in vec2 enc) {\n return dot(enc, vec2(255.0 / (256.0 * 256.0), 255.0 / 256.0));\n}\n\nvec3 screenSpaceToViewSpace(const in vec3 ssPos, const in mat4 invProjection) {\n vec4 p = vec4(ssPos * 2.0 - 1.0, 1.0);\n p = invProjection * p;\n return p.xyz / p.w;\n}\n\nconst float PackUpscale = 256.0 / 255.0; // fraction -> 0..1 (including 1)\nconst float UnpackDownscale = 255.0 / 256.0; // 0..1 -> fraction (excluding 1)\nconst vec3 PackFactors = vec3(256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0);\nconst vec4 UnpackFactors = UnpackDownscale / vec4(PackFactors, 1.0);\nconst float ShiftRight8 = 1.0 / 256.0;\n\nvec4 packDepthToRGBA(const in float v) {\n vec4 r = vec4(fract(v * PackFactors), v);\n r.yzw -= r.xyz * ShiftRight8; // tidy overflow\n return r * PackUpscale;\n}\nfloat unpackRGBAToDepth(const in vec4 v) {\n return dot(v, UnpackFactors);\n}\n\nvec4 sRGBToLinear(const in vec4 c) {\n return vec4(mix(pow(c.rgb * 0.9478672986 + vec3(0.0521327014), vec3(2.4)), c.rgb * 0.0773993808, vec3(lessThanEqual(c.rgb, vec3(0.04045)))), c.a);\n}\nvec4 linearTosRGB(const in vec4 c) {\n return vec4(mix(pow(c.rgb, vec3(0.41666)) * 1.055 - vec3(0.055), c.rgb * 12.92, vec3(lessThanEqual(c.rgb, vec3(0.0031308)))), c.a);\n}\n\nfloat luminance(vec3 c) {\n // https://www.w3.org/TR/WCAG21/#dfn-relative-luminance\n const vec3 W = vec3(0.2125, 0.7154, 0.0721);\n return dot(c, W);\n}\n\nfloat linearizeDepth(const in float depth, const in float near, const in float far) {\n return (2.0 * near) / (far + near - depth * (far - near));\n}\n\nfloat perspectiveDepthToViewZ(const in float invClipZ, const in float near, const in float far) {\n return (near * far) / ((far - near) * invClipZ - far);\n}\n\nfloat orthographicDepthToViewZ(const in float linearClipZ, const in float near, const in float far) {\n return linearClipZ * (near - far) - near;\n}\n\nfloat depthToViewZ(const in float isOrtho, const in float linearClipZ, const in float near, const in float far) {\n return isOrtho == 1.0 ? orthographicDepthToViewZ(linearClipZ, near, far) : perspectiveDepthToViewZ(linearClipZ, near, far);\n}\n\n#if __VERSION__ == 100\n // transpose\n\n float transpose(const in float m) {\n return m;\n }\n\n mat2 transpose2(const in mat2 m) {\n return mat2(\n m[0][0], m[1][0],\n m[0][1], m[1][1]\n );\n }\n\n mat3 transpose3(const in mat3 m) {\n return mat3(\n m[0][0], m[1][0], m[2][0],\n m[0][1], m[1][1], m[2][1],\n m[0][2], m[1][2], m[2][2]\n );\n }\n\n mat4 transpose4(const in mat4 m) {\n return mat4(\n m[0][0], m[1][0], m[2][0], m[3][0],\n m[0][1], m[1][1], m[2][1], m[3][1],\n m[0][2], m[1][2], m[2][2], m[3][2],\n m[0][3], m[1][3], m[2][3], m[3][3]\n );\n }\n\n // inverse\n\n float inverse(const in float m) {\n return 1.0 / m;\n }\n\n mat2 inverse2(const in mat2 m) {\n return mat2(m[1][1],-m[0][1],\n -m[1][0], m[0][0]) / (m[0][0]*m[1][1] - m[0][1]*m[1][0]);\n }\n\n mat3 inverse3(const in mat3 m) {\n float a00 = m[0][0], a01 = m[0][1], a02 = m[0][2];\n float a10 = m[1][0], a11 = m[1][1], a12 = m[1][2];\n float a20 = m[2][0], a21 = m[2][1], a22 = m[2][2];\n\n float b01 = a22 * a11 - a12 * a21;\n float b11 = -a22 * a10 + a12 * a20;\n float b21 = a21 * a10 - a11 * a20;\n\n float det = a00 * b01 + a01 * b11 + a02 * b21;\n\n return mat3(b01, (-a22 * a01 + a02 * a21), (a12 * a01 - a02 * a11),\n b11, (a22 * a00 - a02 * a20), (-a12 * a00 + a02 * a10),\n b21, (-a21 * a00 + a01 * a20), (a11 * a00 - a01 * a10)) / det;\n }\n\n mat4 inverse4(const in mat4 m) {\n float\n a00 = m[0][0], a01 = m[0][1], a02 = m[0][2], a03 = m[0][3],\n a10 = m[1][0], a11 = m[1][1], a12 = m[1][2], a13 = m[1][3],\n a20 = m[2][0], a21 = m[2][1], a22 = m[2][2], a23 = m[2][3],\n a30 = m[3][0], a31 = m[3][1], a32 = m[3][2], a33 = m[3][3],\n\n b00 = a00 * a11 - a01 * a10,\n b01 = a00 * a12 - a02 * a10,\n b02 = a00 * a13 - a03 * a10,\n b03 = a01 * a12 - a02 * a11,\n b04 = a01 * a13 - a03 * a11,\n b05 = a02 * a13 - a03 * a12,\n b06 = a20 * a31 - a21 * a30,\n b07 = a20 * a32 - a22 * a30,\n b08 = a20 * a33 - a23 * a30,\n b09 = a21 * a32 - a22 * a31,\n b10 = a21 * a33 - a23 * a31,\n b11 = a22 * a33 - a23 * a32,\n\n det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n return mat4(\n a11 * b11 - a12 * b10 + a13 * b09,\n a02 * b10 - a01 * b11 - a03 * b09,\n a31 * b05 - a32 * b04 + a33 * b03,\n a22 * b04 - a21 * b05 - a23 * b03,\n a12 * b08 - a10 * b11 - a13 * b07,\n a00 * b11 - a02 * b08 + a03 * b07,\n a32 * b02 - a30 * b05 - a33 * b01,\n a20 * b05 - a22 * b02 + a23 * b01,\n a10 * b10 - a11 * b08 + a13 * b06,\n a01 * b08 - a00 * b10 - a03 * b06,\n a30 * b04 - a31 * b02 + a33 * b00,\n a21 * b02 - a20 * b04 - a23 * b00,\n a11 * b07 - a10 * b09 - a12 * b06,\n a00 * b09 - a01 * b07 + a02 * b06,\n a31 * b01 - a30 * b03 - a32 * b00,\n a20 * b03 - a21 * b01 + a22 * b00) / det;\n }\n\n #define isNaN(x) ((x) != (x))\n #define isInf(x) ((x) == (x) + 1.0)\n#else\n #define transpose2(m) transpose(m)\n #define transpose3(m) transpose(m)\n #define transpose4(m) transpose(m)\n\n #define inverse2(m) inverse(m)\n #define inverse3(m) inverse(m)\n #define inverse4(m) inverse(m)\n\n #define isNaN isnan\n #define isInf isinf\n#endif\n";
|
|
@@ -106,6 +106,12 @@ vec4 linearTosRGB(const in vec4 c) {
|
|
|
106
106
|
return vec4(mix(pow(c.rgb, vec3(0.41666)) * 1.055 - vec3(0.055), c.rgb * 12.92, vec3(lessThanEqual(c.rgb, vec3(0.0031308)))), c.a);
|
|
107
107
|
}
|
|
108
108
|
|
|
109
|
+
float luminance(vec3 c) {
|
|
110
|
+
// https://www.w3.org/TR/WCAG21/#dfn-relative-luminance
|
|
111
|
+
const vec3 W = vec3(0.2125, 0.7154, 0.0721);
|
|
112
|
+
return dot(c, W);
|
|
113
|
+
}
|
|
114
|
+
|
|
109
115
|
float linearizeDepth(const in float depth, const in float near, const in float far) {
|
|
110
116
|
return (2.0 * near) / (far + near - depth * (far - near));
|
|
111
117
|
}
|
|
@@ -2,5 +2,6 @@
|
|
|
2
2
|
* Copyright (c) 2020-2024 mol* contributors, licensed under MIT, See LICENSE file for more info.
|
|
3
3
|
*
|
|
4
4
|
* @author Alexander Rose <alexander.rose@weirdbyte.de>
|
|
5
|
+
* @author Gianluca Tomasello <giagitom@gmail.com>
|
|
5
6
|
*/
|
|
6
|
-
export declare const cylinders_frag = "\nprecision highp float;\nprecision highp int;\n\n#define bumpEnabled\n\nuniform mat4 uView;\n\nvarying mat4 vTransform;\nvarying vec3 vStart;\nvarying vec3 vEnd;\nvarying float vSize;\nvarying float vCap;\n\nuniform vec3 uCameraDir;\nuniform vec3 uCameraPosition;\nuniform mat4 uInvView;\n\n#include common\n#include common_frag_params\n#include color_frag_params\n#include light_frag_params\n#include common_clip\n\n#ifdef dSolidInterior\n const bool solidInterior = true;\n#else\n const bool solidInterior = false;\n#endif\n\n// adapted from https://www.shadertoy.com/view/4lcSRn\n// The MIT License, Copyright 2016 Inigo Quilez\nbool CylinderImpostor(\n in vec3 rayOrigin, in vec3 rayDir,\n in vec3 start, in vec3 end, in float radius,\n out vec3 cameraNormal, out bool interior,\n out vec3 modelPosition, out vec3 viewPosition, out float fragmentDepth\n){\n vec3 ba = end - start;\n vec3 oc = rayOrigin - start;\n\n float baba = dot(ba, ba);\n float bard = dot(ba, rayDir);\n float baoc = dot(ba, oc);\n\n float k2 = baba - bard * bard;\n float k1 = baba * dot(oc, rayDir) - baoc * bard;\n float k0 = baba * dot(oc, oc) - baoc * baoc - radius * radius * baba;\n\n float h = k1 * k1 - k2 * k0;\n if (h < 0.0) return false;\n\n bool topCap = (vCap > 0.9 && vCap < 1.1) || vCap >= 2.9;\n bool bottomCap = (vCap > 1.9 && vCap < 2.1) || vCap >= 2.9;\n\n #ifdef dSolidInterior\n bool topInterior = !topCap;\n bool bottomInterior = !bottomCap;\n topCap = true;\n bottomCap = true;\n #else\n bool topInterior = false;\n bool bottomInterior = false;\n #endif\n\n bool clipped = false;\n bool objectClipped = false;\n\n // body outside\n h = sqrt(h);\n float t = (-k1 - h) / k2;\n float y = baoc + t * bard;\n if (y > 0.0 && y < baba) {\n interior = false;\n cameraNormal = (oc + t * rayDir - ba * y / baba) / radius;\n modelPosition = rayOrigin + t * rayDir;\n viewPosition = (uView * vec4(modelPosition, 1.0)).xyz;\n fragmentDepth = calcDepth(viewPosition);\n #if defined(dClipVariant_pixel) && dClipObjectCount != 0\n if (clipTest(vec4(modelPosition, 0.0))) {\n objectClipped = true;\n fragmentDepth = -1.0;\n #ifdef dSolidInterior\n topCap = !topInterior;\n bottomCap = !bottomInterior;\n #endif\n }\n #endif\n if (fragmentDepth > 0.0) return true;\n clipped = true;\n }\n\n if (!clipped) {\n if (topCap && y < 0.0) {\n // top cap\n t = -baoc / bard;\n if (abs(k1 + k2 * t) < h) {\n interior = topInterior;\n cameraNormal = -ba / baba;\n modelPosition = rayOrigin + t * rayDir;\n viewPosition = (uView * vec4(modelPosition, 1.0)).xyz;\n fragmentDepth = calcDepth(viewPosition);\n #if defined(dClipVariant_pixel) && dClipObjectCount != 0\n if (clipTest(vec4(modelPosition, 0.0))) {\n objectClipped = true;\n fragmentDepth = -1.0;\n #ifdef dSolidInterior\n topCap = !topInterior;\n bottomCap = !bottomInterior;\n #endif\n }\n #endif\n if (fragmentDepth > 0.0) {\n #ifdef dSolidInterior\n if (interior) cameraNormal = -rayDir;\n #endif\n return true;\n }\n }\n } else if (bottomCap && y >= 0.0) {\n // bottom cap\n t = (baba - baoc) / bard;\n if (abs(k1 + k2 * t) < h) {\n interior = bottomInterior;\n cameraNormal = ba / baba;\n modelPosition = rayOrigin + t * rayDir;\n viewPosition = (uView * vec4(modelPosition, 1.0)).xyz;\n fragmentDepth = calcDepth(viewPosition);\n #if defined(dClipVariant_pixel) && dClipObjectCount != 0\n if (clipTest(vec4(modelPosition, 0.0))) {\n objectClipped = true;\n fragmentDepth = -1.0;\n #ifdef dSolidInterior\n topCap = !topInterior;\n bottomCap = !bottomInterior;\n #endif\n }\n #endif\n if (fragmentDepth > 0.0) {\n #ifdef dSolidInterior\n if (interior) cameraNormal = -rayDir;\n #endif\n return true;\n }\n }\n }\n }\n\n if (uDoubleSided || solidInterior) {\n // body inside\n h = -h;\n t = (-k1 - h) / k2;\n y = baoc + t * bard;\n if (y > 0.0 && y < baba) {\n interior = true;\n cameraNormal = -(oc + t * rayDir - ba * y / baba) / radius;\n modelPosition = rayOrigin + t * rayDir;\n viewPosition = (uView * vec4(modelPosition, 1.0)).xyz;\n fragmentDepth = calcDepth(viewPosition);\n if (fragmentDepth > 0.0) {\n #ifdef dSolidInterior\n if (!objectClipped) {\n fragmentDepth = 0.0 + (0.0000002 / vSize);\n cameraNormal = -rayDir;\n }\n #endif\n return true;\n }\n }\n\n if (topCap && y < 0.0) {\n // top cap\n t = -baoc / bard;\n if (abs(k1 + k2 * t) < -h) {\n interior = true;\n cameraNormal = ba / baba;\n modelPosition = rayOrigin + t * rayDir;\n viewPosition = (uView * vec4(modelPosition, 1.0)).xyz;\n fragmentDepth = calcDepth(viewPosition);\n if (fragmentDepth > 0.0) {\n #ifdef dSolidInterior\n if (!objectClipped) {\n fragmentDepth = 0.0 + (0.0000002 / vSize);\n cameraNormal = -rayDir;\n }\n #endif\n return true;\n }\n }\n } else if (bottomCap && y >= 0.0) {\n // bottom cap\n t = (baba - baoc) / bard;\n if (abs(k1 + k2 * t) < -h) {\n interior = true;\n cameraNormal = -ba / baba;\n modelPosition = rayOrigin + t * rayDir;\n viewPosition = (uView * vec4(modelPosition, 1.0)).xyz;\n fragmentDepth = calcDepth(viewPosition);\n if (fragmentDepth > 0.0) {\n #ifdef dSolidInterior\n if (!objectClipped) {\n fragmentDepth = 0.0 + (0.0000002 / vSize);\n cameraNormal = -rayDir;\n }\n #endif\n return true;\n }\n }\n }\n }\n\n return false;\n}\n\nvoid main() {\n vec3 rayOrigin = vModelPosition;\n vec3 rayDir = mix(normalize(vModelPosition - uCameraPosition), uCameraDir, uIsOrtho);\n\n vec3 cameraNormal;\n vec3 modelPosition;\n vec3 viewPosition;\n float fragmentDepth;\n bool hit = CylinderImpostor(rayOrigin, rayDir, vStart, vEnd, vSize, cameraNormal, interior, modelPosition, viewPosition, fragmentDepth);\n if (!hit) discard;\n\n if (fragmentDepth < 0.0) discard;\n if (fragmentDepth > 1.0) discard;\n\n gl_FragDepthEXT = fragmentDepth;\n\n vec3 vViewPosition = viewPosition;\n vec3 vModelPosition = modelPosition;\n\n #include fade_lod\n #include clip_pixel\n #include assign_material_color\n #include check_transparency\n\n #if defined(dRenderVariant_pick)\n #include check_picking_alpha\n #ifdef requiredDrawBuffers\n gl_FragColor = vObject;\n gl_FragData[1] = vInstance;\n gl_FragData[2] = vGroup;\n gl_FragData[3] = packDepthToRGBA(fragmentDepth);\n #else\n gl_FragColor = vColor;\n #endif\n #elif defined(dRenderVariant_depth)\n gl_FragColor = material;\n #elif defined(dRenderVariant_marking)\n gl_FragColor = material;\n #elif defined(dRenderVariant_emissive)\n gl_FragColor = material;\n #elif defined(dRenderVariant_color)\n mat3 normalMatrix = transpose3(inverse3(mat3(uView)));\n vec3 normal = normalize(normalMatrix * -normalize(cameraNormal));\n #include apply_light_color\n\n #include apply_interior_color\n #include apply_marker_color\n #include apply_fog\n #include wboit_write\n #include dpoit_write\n #endif\n}\n";
|
|
7
|
+
export declare const cylinders_frag = "\nprecision highp float;\nprecision highp int;\n\n#define bumpEnabled\n\nuniform mat4 uView;\n\nvarying mat4 vTransform;\nvarying vec3 vStart;\nvarying vec3 vEnd;\nvarying float vSize;\nvarying float vCap;\n\nuniform vec3 uCameraDir;\nuniform vec3 uCameraPosition;\nuniform mat4 uInvView;\n\n#include common\n#include common_frag_params\n#include color_frag_params\n#include light_frag_params\n#include common_clip\n\n#ifdef dSolidInterior\n const bool solidInterior = true;\n#else\n const bool solidInterior = false;\n#endif\n\n// adapted from https://www.shadertoy.com/view/4lcSRn\n// The MIT License, Copyright 2016 Inigo Quilez\nbool CylinderImpostor(\n in vec3 rayOrigin, in vec3 rayDir,\n in vec3 start, in vec3 end, in float radius,\n out vec3 cameraNormal, out bool interior,\n out vec3 modelPosition, out vec3 viewPosition, out float fragmentDepth\n){\n vec3 ba = end - start;\n vec3 oc = rayOrigin - start;\n\n float baba = dot(ba, ba);\n float bard = dot(ba, rayDir);\n float baoc = dot(ba, oc);\n\n float k2 = baba - bard * bard;\n float k1 = baba * dot(oc, rayDir) - baoc * bard;\n float k0 = baba * dot(oc, oc) - baoc * baoc - radius * radius * baba;\n\n float h = k1 * k1 - k2 * k0;\n if (h < 0.0) return false;\n\n bool topCap = (vCap > 0.9 && vCap < 1.1) || vCap >= 2.9;\n bool bottomCap = (vCap > 1.9 && vCap < 2.1) || vCap >= 2.9;\n\n #ifdef dSolidInterior\n bool topInterior = !topCap;\n bool bottomInterior = !bottomCap;\n topCap = true;\n bottomCap = true;\n #else\n bool topInterior = false;\n bool bottomInterior = false;\n #endif\n\n bool clipped = false;\n bool objectClipped = false;\n\n // body outside\n h = sqrt(h);\n float t = (-k1 - h) / k2;\n float y = baoc + t * bard;\n if (y > 0.0 && y < baba) {\n interior = false;\n cameraNormal = (oc + t * rayDir - ba * y / baba) / radius;\n modelPosition = rayOrigin + t * rayDir;\n viewPosition = (uView * vec4(modelPosition, 1.0)).xyz;\n fragmentDepth = calcDepth(viewPosition);\n #if defined(dClipVariant_pixel) && dClipObjectCount != 0\n if (clipTest(vec4(modelPosition, 0.0))) {\n objectClipped = true;\n fragmentDepth = -1.0;\n #ifdef dSolidInterior\n topCap = !topInterior;\n bottomCap = !bottomInterior;\n #endif\n }\n #endif\n if (fragmentDepth > 0.0) return true;\n clipped = true;\n }\n\n if (!clipped) {\n if (topCap && y < 0.0) {\n // top cap\n t = -baoc / bard;\n if (abs(k1 + k2 * t) < h) {\n interior = topInterior;\n cameraNormal = -ba / baba;\n modelPosition = rayOrigin + t * rayDir;\n viewPosition = (uView * vec4(modelPosition, 1.0)).xyz;\n fragmentDepth = calcDepth(viewPosition);\n #if defined(dClipVariant_pixel) && dClipObjectCount != 0\n if (clipTest(vec4(modelPosition, 0.0))) {\n objectClipped = true;\n fragmentDepth = -1.0;\n #ifdef dSolidInterior\n topCap = !topInterior;\n bottomCap = !bottomInterior;\n #endif\n }\n #endif\n if (fragmentDepth > 0.0) {\n #ifdef dSolidInterior\n if (interior) cameraNormal = -rayDir;\n #endif\n #if defined(dClipVariant_pixel) && dClipObjectCount != 0\n return true;\n #else\n return !interior;\n #endif\n }\n }\n } else if (bottomCap && y >= 0.0) {\n // bottom cap\n t = (baba - baoc) / bard;\n if (abs(k1 + k2 * t) < h) {\n interior = bottomInterior;\n cameraNormal = ba / baba;\n modelPosition = rayOrigin + t * rayDir;\n viewPosition = (uView * vec4(modelPosition, 1.0)).xyz;\n fragmentDepth = calcDepth(viewPosition);\n #if defined(dClipVariant_pixel) && dClipObjectCount != 0\n if (clipTest(vec4(modelPosition, 0.0))) {\n objectClipped = true;\n fragmentDepth = -1.0;\n #ifdef dSolidInterior\n topCap = !topInterior;\n bottomCap = !bottomInterior;\n #endif\n }\n #endif\n if (fragmentDepth > 0.0) {\n #ifdef dSolidInterior\n if (interior) cameraNormal = -rayDir;\n #endif\n #if defined(dClipVariant_pixel) && dClipObjectCount != 0\n return true;\n #else\n return !interior;\n #endif\n }\n }\n }\n }\n\n if (uDoubleSided || solidInterior) {\n // body inside\n h = -h;\n t = (-k1 - h) / k2;\n y = baoc + t * bard;\n if (y > 0.0 && y < baba) {\n interior = true;\n cameraNormal = -(oc + t * rayDir - ba * y / baba) / radius;\n modelPosition = rayOrigin + t * rayDir;\n viewPosition = (uView * vec4(modelPosition, 1.0)).xyz;\n fragmentDepth = calcDepth(viewPosition);\n if (fragmentDepth > 0.0) {\n #ifdef dSolidInterior\n if (!objectClipped) {\n fragmentDepth = 0.0 + (0.0000002 / vSize);\n cameraNormal = -rayDir;\n }\n #endif\n return true;\n }\n }\n\n if (topCap && y < 0.0) {\n // top cap\n t = -baoc / bard;\n if (abs(k1 + k2 * t) < -h) {\n interior = true;\n cameraNormal = ba / baba;\n modelPosition = rayOrigin + t * rayDir;\n viewPosition = (uView * vec4(modelPosition, 1.0)).xyz;\n fragmentDepth = calcDepth(viewPosition);\n if (fragmentDepth > 0.0) {\n #ifdef dSolidInterior\n if (!objectClipped) {\n fragmentDepth = 0.0 + (0.0000002 / vSize);\n cameraNormal = -rayDir;\n }\n #endif\n return true;\n }\n }\n } else if (bottomCap && y >= 0.0) {\n // bottom cap\n t = (baba - baoc) / bard;\n if (abs(k1 + k2 * t) < -h) {\n interior = true;\n cameraNormal = -ba / baba;\n modelPosition = rayOrigin + t * rayDir;\n viewPosition = (uView * vec4(modelPosition, 1.0)).xyz;\n fragmentDepth = calcDepth(viewPosition);\n if (fragmentDepth > 0.0) {\n #ifdef dSolidInterior\n if (!objectClipped) {\n fragmentDepth = 0.0 + (0.0000002 / vSize);\n cameraNormal = -rayDir;\n }\n #endif\n return true;\n }\n }\n }\n }\n\n return false;\n}\n\nvoid main() {\n vec3 rayOrigin = vModelPosition;\n vec3 rayDir = mix(normalize(vModelPosition - uCameraPosition), uCameraDir, uIsOrtho);\n\n vec3 cameraNormal;\n vec3 modelPosition;\n vec3 viewPosition;\n float fragmentDepth;\n bool hit = CylinderImpostor(rayOrigin, rayDir, vStart, vEnd, vSize, cameraNormal, interior, modelPosition, viewPosition, fragmentDepth);\n if (!hit) discard;\n\n if (fragmentDepth < 0.0) discard;\n if (fragmentDepth > 1.0) discard;\n\n gl_FragDepthEXT = fragmentDepth;\n\n vec3 vViewPosition = viewPosition;\n vec3 vModelPosition = modelPosition;\n\n #include fade_lod\n #include clip_pixel\n #include assign_material_color\n #include check_transparency\n\n #if defined(dRenderVariant_pick)\n #include check_picking_alpha\n #ifdef requiredDrawBuffers\n gl_FragColor = vObject;\n gl_FragData[1] = vInstance;\n gl_FragData[2] = vGroup;\n gl_FragData[3] = packDepthToRGBA(fragmentDepth);\n #else\n gl_FragColor = vColor;\n #endif\n #elif defined(dRenderVariant_depth)\n gl_FragColor = material;\n #elif defined(dRenderVariant_marking)\n gl_FragColor = material;\n #elif defined(dRenderVariant_emissive)\n gl_FragColor = material;\n #elif defined(dRenderVariant_color)\n mat3 normalMatrix = transpose3(inverse3(mat3(uView)));\n vec3 normal = normalize(normalMatrix * -normalize(cameraNormal));\n #include apply_light_color\n\n #include apply_interior_color\n #include apply_marker_color\n #include apply_fog\n #include wboit_write\n #include dpoit_write\n #endif\n}\n";
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Copyright (c) 2020-2024 mol* contributors, licensed under MIT, See LICENSE file for more info.
|
|
4
4
|
*
|
|
5
5
|
* @author Alexander Rose <alexander.rose@weirdbyte.de>
|
|
6
|
+
* @author Gianluca Tomasello <giagitom@gmail.com>
|
|
6
7
|
*/
|
|
7
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
9
|
exports.cylinders_frag = void 0;
|
|
@@ -122,7 +123,11 @@ bool CylinderImpostor(
|
|
|
122
123
|
#ifdef dSolidInterior
|
|
123
124
|
if (interior) cameraNormal = -rayDir;
|
|
124
125
|
#endif
|
|
125
|
-
|
|
126
|
+
#if defined(dClipVariant_pixel) && dClipObjectCount != 0
|
|
127
|
+
return true;
|
|
128
|
+
#else
|
|
129
|
+
return !interior;
|
|
130
|
+
#endif
|
|
126
131
|
}
|
|
127
132
|
}
|
|
128
133
|
} else if (bottomCap && y >= 0.0) {
|
|
@@ -148,7 +153,11 @@ bool CylinderImpostor(
|
|
|
148
153
|
#ifdef dSolidInterior
|
|
149
154
|
if (interior) cameraNormal = -rayDir;
|
|
150
155
|
#endif
|
|
151
|
-
|
|
156
|
+
#if defined(dClipVariant_pixel) && dClipObjectCount != 0
|
|
157
|
+
return true;
|
|
158
|
+
#else
|
|
159
|
+
return !interior;
|
|
160
|
+
#endif
|
|
152
161
|
}
|
|
153
162
|
}
|
|
154
163
|
}
|
|
@@ -4,4 +4,4 @@
|
|
|
4
4
|
* @author Alexander Rose <alexander.rose@weirdbyte.de>
|
|
5
5
|
* @author Michael Krone <michael.krone@uni-tuebingen.de>
|
|
6
6
|
*/
|
|
7
|
-
export declare const directVolume_frag = "\nprecision highp float;\nprecision highp int;\n\n#include common\n#include light_frag_params\n\n#if dClipObjectCount != 0\n uniform int uClipObjectType[dClipObjectCount];\n uniform bool uClipObjectInvert[dClipObjectCount];\n uniform vec3 uClipObjectPosition[dClipObjectCount];\n uniform vec4 uClipObjectRotation[dClipObjectCount];\n uniform vec3 uClipObjectScale[dClipObjectCount];\n#endif\n#include common_clip\n\n#include read_from_texture\n#include texture3d_from_1d_trilinear\n#include texture3d_from_2d_nearest\n#include texture3d_from_2d_linear\n\nuniform mat4 uProjection, uTransform, uModelView, uModel, uView;\nuniform vec3 uCameraDir;\n\nuniform sampler2D tDepth;\nuniform vec2 uDrawingBufferSize;\n\nvarying vec3 vOrigPos;\nvarying float vInstance;\nvarying vec4 vBoundingSphere;\nvarying mat4 vTransform;\n\nuniform mat4 uInvView;\nuniform vec3 uGridDim;\nuniform vec3 uBboxSize;\nuniform sampler2D tTransferTex;\nuniform float uTransferScale;\nuniform float uStepScale;\nuniform float uJumpLength;\n\nuniform int uObjectId;\nuniform int uVertexCount;\nuniform int uInstanceCount;\nuniform int uGroupCount;\n\n#if defined(dColorMarker)\n uniform vec3 uHighlightColor;\n uniform vec3 uSelectColor;\n uniform vec3 uDimColor;\n uniform float uHighlightStrength;\n uniform float uSelectStrength;\n uniform float uDimStrength;\n uniform int uMarkerPriority;\n uniform float uMarkerAverage;\n\n uniform float uMarker;\n uniform vec2 uMarkerTexDim;\n uniform sampler2D tMarker;\n#endif\n\nuniform float uMetalness;\nuniform float uRoughness;\nuniform float uEmissive;\n\nuniform bool uFog;\nuniform float uFogNear;\nuniform float uFogFar;\nuniform vec3 uFogColor;\n\nuniform float uAlpha;\nuniform bool uTransparentBackground;\nuniform float uXrayEdgeFalloff;\nuniform float uExposure;\n\nuniform int uRenderMask;\n\nuniform float uNear;\nuniform float uFar;\nuniform float uIsOrtho;\n\nuniform vec3 uCellDim;\nuniform vec3 uCameraPosition;\nuniform mat4 uCartnToUnit;\n\n#if __VERSION__ != 100\n // for webgl1 this is given as a 'define'\n uniform int uMaxSteps;\n#endif\n\n#if defined(dGridTexType_2d)\n precision highp sampler2D;\n uniform sampler2D tGridTex;\n uniform vec3 uGridTexDim;\n#elif defined(dGridTexType_3d)\n precision highp sampler3D;\n uniform sampler3D tGridTex;\n#endif\n\n#if defined(dColorType_uniform)\n uniform vec3 uColor;\n#elif defined(dColorType_texture)\n uniform vec2 uColorTexDim;\n uniform sampler2D tColor;\n#endif\n\n#ifdef dOverpaint\n #if defined(dOverpaintType_groupInstance) || defined(dOverpaintType_vertexInstance)\n uniform vec2 uOverpaintTexDim;\n uniform sampler2D tOverpaint;\n #endif\n#endif\n\n#ifdef dUsePalette\n uniform sampler2D tPalette;\n#endif\n\n#if defined(dGridTexType_2d)\n vec4 textureVal(vec3 pos) {\n return texture3dFrom2dLinear(tGridTex, pos + (vec3(0.5, 0.5, 0.0) / uGridDim), uGridDim, uGridTexDim.xy);\n }\n vec4 textureGroup(vec3 pos) {\n return texture3dFrom2dNearest(tGridTex, pos + (vec3(0.5, 0.5, 0.0) / uGridDim), uGridDim, uGridTexDim.xy);\n }\n#elif defined(dGridTexType_3d)\n vec4 textureVal(vec3 pos) {\n return texture(tGridTex, pos + (vec3(0.5) / uGridDim));\n }\n vec4 textureGroup(vec3 pos) {\n return texelFetch(tGridTex, ivec3(pos * uGridDim), 0);\n }\n#endif\n\nfloat calcDepth(const in vec3 pos) {\n vec2 clipZW = pos.z * uProjection[2].zw + uProjection[3].zw;\n return 0.5 + 0.5 * clipZW.x / clipZW.y;\n}\n\nfloat transferFunction(float value) {\n return texture2D(tTransferTex, vec2(value, 0.0)).a;\n}\n\nfloat getDepth(const in vec2 coords) {\n #ifdef depthTextureSupport\n return texture2D(tDepth, coords).r;\n #else\n return unpackRGBAToDepth(texture2D(tDepth, coords));\n #endif\n}\n\nconst float gradOffset = 0.5;\n\nvec3 v3m4(vec3 p, mat4 m) {\n return (m * vec4(p, 1.0)).xyz;\n}\n\nfloat preFogAlphaBlended = 0.0;\n\nvec4 raymarch(vec3 startLoc, vec3 step, vec3 rayDir) {\n mat3 normalMatrix = transpose3(inverse3(mat3(uModelView * vTransform)));\n mat4 cartnToUnit = uCartnToUnit * inverse4(vTransform);\n #if defined(dClipVariant_pixel) && dClipObjectCount != 0\n mat4 modelTransform = uModel * vTransform * uTransform;\n #endif\n mat4 modelViewTransform = uModelView * vTransform * uTransform;\n\n vec3 scaleVol = vec3(1.0) / uGridDim;\n vec3 pos = startLoc;\n vec4 cell;\n float prevValue = -1.0;\n float value = 0.0;\n vec4 src = vec4(0.0);\n vec4 dst = vec4(0.0);\n float fragmentDepth;\n\n vec3 posMin = vec3(0.0);\n vec3 posMax = vec3(1.0) - vec3(1.0) / uGridDim;\n\n vec3 unitPos;\n\n vec3 nextPos;\n float nextValue;\n\n vec4 material;\n vec4 overpaint;\n float metalness = uMetalness;\n float roughness = uRoughness;\n float emissive = uEmissive;\n\n vec3 gradient = vec3(1.0);\n vec3 dx = vec3(gradOffset * scaleVol.x, 0.0, 0.0);\n vec3 dy = vec3(0.0, gradOffset * scaleVol.y, 0.0);\n vec3 dz = vec3(0.0, 0.0, gradOffset * scaleVol.z);\n\n float maxDist = min(vBoundingSphere.w * 2.0, uFar - uNear);\n float maxDistSq = maxDist * maxDist;\n\n for (int i = 0; i < uMaxSteps; ++i) {\n // break when beyond bounding-sphere or far-plane\n vec3 distVec = startLoc - pos;\n if (dot(distVec, distVec) > maxDistSq) break;\n\n unitPos = v3m4(pos, cartnToUnit);\n\n // continue when outside of grid\n if (unitPos.x > posMax.x || unitPos.y > posMax.y || unitPos.z > posMax.z ||\n unitPos.x < posMin.x || unitPos.y < posMin.y || unitPos.z < posMin.z\n ) {\n prevValue = value;\n pos += step;\n continue;\n }\n\n cell = textureVal(unitPos);\n value = cell.a; // current voxel value\n\n if (uJumpLength > 0.0 && value < 0.01) {\n nextPos = pos + rayDir * uJumpLength;\n nextValue = textureVal(v3m4(nextPos, cartnToUnit)).a;\n if (nextValue < 0.01) {\n prevValue = nextValue;\n pos = nextPos;\n continue;\n }\n }\n\n vec4 mvPosition = modelViewTransform * vec4(unitPos * uGridDim, 1.0);\n if (calcDepth(mvPosition.xyz) > getDepth(gl_FragCoord.xy / uDrawingBufferSize))\n break;\n\n #if defined(dClipVariant_pixel) && dClipObjectCount != 0\n vec3 vModelPosition = v3m4(unitPos * uGridDim, modelTransform);\n if (clipTest(vec4(vModelPosition, 0.0))) {\n prevValue = value;\n pos += step;\n continue;\n }\n #endif\n\n vec3 vViewPosition = mvPosition.xyz;\n material.a = transferFunction(value);\n\n #ifdef dPackedGroup\n float group = unpackRGBToInt(textureGroup(floor(unitPos * uGridDim + 0.5) / uGridDim).rgb);\n #else\n vec3 g = floor(unitPos * uGridDim + 0.5);\n // note that we swap x and z because the texture is flipped around y\n #if defined(dAxisOrder_012)\n float group = g.z + g.y * uGridDim.z + g.x * uGridDim.z * uGridDim.y; // 210\n #elif defined(dAxisOrder_021)\n float group = g.y + g.z * uGridDim.y + g.x * uGridDim.y * uGridDim.z; // 120\n #elif defined(dAxisOrder_102)\n float group = g.z + g.x * uGridDim.z + g.y * uGridDim.z * uGridDim.x; // 201\n #elif defined(dAxisOrder_120)\n float group = g.x + g.z * uGridDim.x + g.y * uGridDim.x * uGridDim.z; // 021\n #elif defined(dAxisOrder_201)\n float group = g.y + g.x * uGridDim.y + g.z * uGridDim.y * uGridDim.x; // 102\n #elif defined(dAxisOrder_210)\n float group = g.x + g.y * uGridDim.x + g.z * uGridDim.x * uGridDim.y; // 012\n #endif\n #endif\n\n #if defined(dColorType_direct) && defined(dUsePalette)\n material.rgb = texture2D(tPalette, vec2(value, 0.0)).rgb;\n #elif defined(dColorType_uniform)\n material.rgb = uColor;\n #elif defined(dColorType_instance)\n material.rgb = readFromTexture(tColor, vInstance, uColorTexDim).rgb;\n #elif defined(dColorType_group)\n material.rgb = readFromTexture(tColor, group, uColorTexDim).rgb;\n #elif defined(dColorType_groupInstance)\n material.rgb = readFromTexture(tColor, vInstance * float(uGroupCount) + group, uColorTexDim).rgb;\n #elif defined(dColorType_vertex)\n material.rgb = texture3dFrom1dTrilinear(tColor, unitPos, uGridDim, uColorTexDim, 0.0).rgb;\n #elif defined(dColorType_vertexInstance)\n material.rgb = texture3dFrom1dTrilinear(tColor, unitPos, uGridDim, uColorTexDim, vInstance * float(uVertexCount)).rgb;\n #endif\n\n #ifdef dOverpaint\n #if defined(dOverpaintType_groupInstance)\n overpaint = readFromTexture(tOverpaint, vInstance * float(uGroupCount) + group, uOverpaintTexDim);\n #elif defined(dOverpaintType_vertexInstance)\n overpaint = texture3dFrom1dTrilinear(tOverpaint, unitPos, uGridDim, uOverpaintTexDim, vInstance * float(uVertexCount));\n #endif\n\n material.rgb = mix(material.rgb, overpaint.rgb, overpaint.a);\n #endif\n\n #if defined(dIgnoreLight)\n gl_FragColor.rgb = material.rgb;\n #else\n if (material.a >= 0.01) {\n #ifdef dPackedGroup\n // compute gradient by central differences\n gradient.x = textureVal(unitPos - dx).a - textureVal(unitPos + dx).a;\n gradient.y = textureVal(unitPos - dy).a - textureVal(unitPos + dy).a;\n gradient.z = textureVal(unitPos - dz).a - textureVal(unitPos + dz).a;\n #else\n gradient = cell.xyz * 2.0 - 1.0;\n #endif\n vec3 normal = -normalize(normalMatrix * normalize(gradient));\n #include apply_light_color\n } else {\n gl_FragColor.rgb = material.rgb;\n }\n #endif\n\n gl_FragColor.a = material.a * uAlpha * uTransferScale;\n\n #if defined(dColorMarker)\n float marker = uMarker;\n if (uMarker == -1.0) {\n marker = readFromTexture(tMarker, vInstance * float(uGroupCount) + group, uMarkerTexDim).a;\n marker = floor(marker * 255.0 + 0.5); // rounding required to work on some cards on win\n }\n #endif\n #include apply_marker_color\n\n preFogAlphaBlended = (1.0 - preFogAlphaBlended) * gl_FragColor.a + preFogAlphaBlended;\n fragmentDepth = calcDepth(mvPosition.xyz);\n #include apply_fog\n\n src = gl_FragColor;\n\n if (!uTransparentBackground) {\n // done in 'apply_fog' otherwise\n src.rgb *= src.a;\n }\n dst = (1.0 - dst.a) * src + dst; // standard blending\n\n // break if the color is opaque enough\n if (dst.a > 0.95)\n break;\n\n pos += step;\n }\n\n return dst;\n}\n\n// TODO: support float texture for higher precision values???\n// TODO: support clipping exclusion texture support\n\nvoid main() {\n #if defined(dRenderVariant_emissive)\n discard;\n #else\n if (gl_FrontFacing)\n discard;\n\n vec3 rayDir = mix(normalize(vOrigPos - uCameraPosition), uCameraDir, uIsOrtho);\n vec3 step = rayDir * uStepScale;\n\n float boundingSphereNear = distance(vBoundingSphere.xyz, uCameraPosition) - vBoundingSphere.w;\n float d = max(uNear, boundingSphereNear) - mix(0.0, distance(vOrigPos, uCameraPosition), uIsOrtho);\n vec3 start = mix(uCameraPosition, vOrigPos, uIsOrtho) + (d * rayDir);\n gl_FragColor = raymarch(start, step, rayDir);\n\n float fragmentDepth = calcDepth((uModelView * vec4(start, 1.0)).xyz);\n float preFogAlpha = clamp(preFogAlphaBlended, 0.0, 1.0);\n #include wboit_write\n #endif\n}\n";
|
|
7
|
+
export declare const directVolume_frag = "\nprecision highp float;\nprecision highp int;\n\n#include common\n#include light_frag_params\n\n#if dClipObjectCount != 0\n uniform int uClipObjectType[dClipObjectCount];\n uniform bool uClipObjectInvert[dClipObjectCount];\n uniform vec3 uClipObjectPosition[dClipObjectCount];\n uniform vec4 uClipObjectRotation[dClipObjectCount];\n uniform vec3 uClipObjectScale[dClipObjectCount];\n#endif\n#include common_clip\n\n#include read_from_texture\n#include texture3d_from_1d_trilinear\n#include texture3d_from_2d_nearest\n#include texture3d_from_2d_linear\n\nuniform mat4 uProjection, uTransform, uModelView, uModel, uView;\nuniform vec3 uCameraDir;\n\nuniform sampler2D tDepth;\nuniform vec2 uDrawingBufferSize;\n\nvarying vec3 vOrigPos;\nvarying float vInstance;\nvarying vec4 vBoundingSphere;\nvarying mat4 vTransform;\n\nuniform mat4 uInvView;\nuniform vec3 uGridDim;\nuniform vec3 uBboxSize;\nuniform sampler2D tTransferTex;\nuniform float uTransferScale;\nuniform float uStepScale;\nuniform float uJumpLength;\n\nuniform int uObjectId;\nuniform int uVertexCount;\nuniform int uInstanceCount;\nuniform int uGroupCount;\n\n#if defined(dColorMarker)\n uniform vec3 uHighlightColor;\n uniform vec3 uSelectColor;\n uniform vec3 uDimColor;\n uniform float uHighlightStrength;\n uniform float uSelectStrength;\n uniform float uDimStrength;\n uniform int uMarkerPriority;\n uniform float uMarkerAverage;\n\n uniform float uMarker;\n uniform vec2 uMarkerTexDim;\n uniform sampler2D tMarker;\n#endif\n\nuniform float uMetalness;\nuniform float uRoughness;\nuniform float uEmissive;\n\nuniform bool uFog;\nuniform float uFogNear;\nuniform float uFogFar;\nuniform vec3 uFogColor;\n\nuniform float uAlpha;\nuniform bool uTransparentBackground;\nuniform float uXrayEdgeFalloff;\nuniform float uCelSteps;\nuniform float uExposure;\n\nuniform int uRenderMask;\n\nuniform float uNear;\nuniform float uFar;\nuniform float uIsOrtho;\n\nuniform vec3 uCellDim;\nuniform vec3 uCameraPosition;\nuniform mat4 uCartnToUnit;\n\n#if __VERSION__ != 100\n // for webgl1 this is given as a 'define'\n uniform int uMaxSteps;\n#endif\n\n#if defined(dGridTexType_2d)\n precision highp sampler2D;\n uniform sampler2D tGridTex;\n uniform vec3 uGridTexDim;\n#elif defined(dGridTexType_3d)\n precision highp sampler3D;\n uniform sampler3D tGridTex;\n#endif\n\n#if defined(dColorType_uniform)\n uniform vec3 uColor;\n#elif defined(dColorType_texture)\n uniform vec2 uColorTexDim;\n uniform sampler2D tColor;\n#endif\n\n#ifdef dOverpaint\n #if defined(dOverpaintType_groupInstance) || defined(dOverpaintType_vertexInstance)\n uniform vec2 uOverpaintTexDim;\n uniform sampler2D tOverpaint;\n #endif\n#endif\n\n#ifdef dUsePalette\n uniform sampler2D tPalette;\n#endif\n\n#if defined(dGridTexType_2d)\n vec4 textureVal(vec3 pos) {\n return texture3dFrom2dLinear(tGridTex, pos + (vec3(0.5, 0.5, 0.0) / uGridDim), uGridDim, uGridTexDim.xy);\n }\n vec4 textureGroup(vec3 pos) {\n return texture3dFrom2dNearest(tGridTex, pos + (vec3(0.5, 0.5, 0.0) / uGridDim), uGridDim, uGridTexDim.xy);\n }\n#elif defined(dGridTexType_3d)\n vec4 textureVal(vec3 pos) {\n return texture(tGridTex, pos + (vec3(0.5) / uGridDim));\n }\n vec4 textureGroup(vec3 pos) {\n return texelFetch(tGridTex, ivec3(pos * uGridDim), 0);\n }\n#endif\n\nfloat calcDepth(const in vec3 pos) {\n vec2 clipZW = pos.z * uProjection[2].zw + uProjection[3].zw;\n return 0.5 + 0.5 * clipZW.x / clipZW.y;\n}\n\nfloat transferFunction(float value) {\n return texture2D(tTransferTex, vec2(value, 0.0)).a;\n}\n\nfloat getDepth(const in vec2 coords) {\n #ifdef depthTextureSupport\n return texture2D(tDepth, coords).r;\n #else\n return unpackRGBAToDepth(texture2D(tDepth, coords));\n #endif\n}\n\nconst float gradOffset = 0.5;\n\nvec3 v3m4(vec3 p, mat4 m) {\n return (m * vec4(p, 1.0)).xyz;\n}\n\nfloat preFogAlphaBlended = 0.0;\n\nvec4 raymarch(vec3 startLoc, vec3 step, vec3 rayDir) {\n mat3 normalMatrix = transpose3(inverse3(mat3(uModelView * vTransform)));\n mat4 cartnToUnit = uCartnToUnit * inverse4(vTransform);\n #if defined(dClipVariant_pixel) && dClipObjectCount != 0\n mat4 modelTransform = uModel * vTransform * uTransform;\n #endif\n mat4 modelViewTransform = uModelView * vTransform * uTransform;\n\n vec3 scaleVol = vec3(1.0) / uGridDim;\n vec3 pos = startLoc;\n vec4 cell;\n float prevValue = -1.0;\n float value = 0.0;\n vec4 src = vec4(0.0);\n vec4 dst = vec4(0.0);\n float fragmentDepth;\n\n vec3 posMin = vec3(0.0);\n vec3 posMax = vec3(1.0) - vec3(1.0) / uGridDim;\n\n vec3 unitPos;\n\n vec3 nextPos;\n float nextValue;\n\n vec4 material;\n vec4 overpaint;\n float metalness = uMetalness;\n float roughness = uRoughness;\n float emissive = uEmissive;\n\n vec3 gradient = vec3(1.0);\n vec3 dx = vec3(gradOffset * scaleVol.x, 0.0, 0.0);\n vec3 dy = vec3(0.0, gradOffset * scaleVol.y, 0.0);\n vec3 dz = vec3(0.0, 0.0, gradOffset * scaleVol.z);\n\n float maxDist = min(vBoundingSphere.w * 2.0, uFar - uNear);\n float maxDistSq = maxDist * maxDist;\n\n for (int i = 0; i < uMaxSteps; ++i) {\n // break when beyond bounding-sphere or far-plane\n vec3 distVec = startLoc - pos;\n if (dot(distVec, distVec) > maxDistSq) break;\n\n unitPos = v3m4(pos, cartnToUnit);\n\n // continue when outside of grid\n if (unitPos.x > posMax.x || unitPos.y > posMax.y || unitPos.z > posMax.z ||\n unitPos.x < posMin.x || unitPos.y < posMin.y || unitPos.z < posMin.z\n ) {\n prevValue = value;\n pos += step;\n continue;\n }\n\n cell = textureVal(unitPos);\n value = cell.a; // current voxel value\n\n if (uJumpLength > 0.0 && value < 0.01) {\n nextPos = pos + rayDir * uJumpLength;\n nextValue = textureVal(v3m4(nextPos, cartnToUnit)).a;\n if (nextValue < 0.01) {\n prevValue = nextValue;\n pos = nextPos;\n continue;\n }\n }\n\n vec4 mvPosition = modelViewTransform * vec4(unitPos * uGridDim, 1.0);\n if (calcDepth(mvPosition.xyz) > getDepth(gl_FragCoord.xy / uDrawingBufferSize))\n break;\n\n #if defined(dClipVariant_pixel) && dClipObjectCount != 0\n vec3 vModelPosition = v3m4(unitPos * uGridDim, modelTransform);\n if (clipTest(vec4(vModelPosition, 0.0))) {\n prevValue = value;\n pos += step;\n continue;\n }\n #endif\n\n vec3 vViewPosition = mvPosition.xyz;\n material.a = transferFunction(value);\n\n #ifdef dPackedGroup\n float group = unpackRGBToInt(textureGroup(floor(unitPos * uGridDim + 0.5) / uGridDim).rgb);\n #else\n vec3 g = floor(unitPos * uGridDim + 0.5);\n // note that we swap x and z because the texture is flipped around y\n #if defined(dAxisOrder_012)\n float group = g.z + g.y * uGridDim.z + g.x * uGridDim.z * uGridDim.y; // 210\n #elif defined(dAxisOrder_021)\n float group = g.y + g.z * uGridDim.y + g.x * uGridDim.y * uGridDim.z; // 120\n #elif defined(dAxisOrder_102)\n float group = g.z + g.x * uGridDim.z + g.y * uGridDim.z * uGridDim.x; // 201\n #elif defined(dAxisOrder_120)\n float group = g.x + g.z * uGridDim.x + g.y * uGridDim.x * uGridDim.z; // 021\n #elif defined(dAxisOrder_201)\n float group = g.y + g.x * uGridDim.y + g.z * uGridDim.y * uGridDim.x; // 102\n #elif defined(dAxisOrder_210)\n float group = g.x + g.y * uGridDim.x + g.z * uGridDim.x * uGridDim.y; // 012\n #endif\n #endif\n\n #if defined(dColorType_direct) && defined(dUsePalette)\n material.rgb = texture2D(tPalette, vec2(value, 0.0)).rgb;\n #elif defined(dColorType_uniform)\n material.rgb = uColor;\n #elif defined(dColorType_instance)\n material.rgb = readFromTexture(tColor, vInstance, uColorTexDim).rgb;\n #elif defined(dColorType_group)\n material.rgb = readFromTexture(tColor, group, uColorTexDim).rgb;\n #elif defined(dColorType_groupInstance)\n material.rgb = readFromTexture(tColor, vInstance * float(uGroupCount) + group, uColorTexDim).rgb;\n #elif defined(dColorType_vertex)\n material.rgb = texture3dFrom1dTrilinear(tColor, unitPos, uGridDim, uColorTexDim, 0.0).rgb;\n #elif defined(dColorType_vertexInstance)\n material.rgb = texture3dFrom1dTrilinear(tColor, unitPos, uGridDim, uColorTexDim, vInstance * float(uVertexCount)).rgb;\n #endif\n\n #ifdef dOverpaint\n #if defined(dOverpaintType_groupInstance)\n overpaint = readFromTexture(tOverpaint, vInstance * float(uGroupCount) + group, uOverpaintTexDim);\n #elif defined(dOverpaintType_vertexInstance)\n overpaint = texture3dFrom1dTrilinear(tOverpaint, unitPos, uGridDim, uOverpaintTexDim, vInstance * float(uVertexCount));\n #endif\n\n material.rgb = mix(material.rgb, overpaint.rgb, overpaint.a);\n #endif\n\n #if defined(dIgnoreLight)\n gl_FragColor.rgb = material.rgb;\n #else\n if (material.a >= 0.01) {\n #ifdef dPackedGroup\n // compute gradient by central differences\n gradient.x = textureVal(unitPos - dx).a - textureVal(unitPos + dx).a;\n gradient.y = textureVal(unitPos - dy).a - textureVal(unitPos + dy).a;\n gradient.z = textureVal(unitPos - dz).a - textureVal(unitPos + dz).a;\n #else\n gradient = cell.xyz * 2.0 - 1.0;\n #endif\n vec3 normal = -normalize(normalMatrix * normalize(gradient));\n #include apply_light_color\n } else {\n gl_FragColor.rgb = material.rgb;\n }\n #endif\n\n gl_FragColor.a = material.a * uAlpha * uTransferScale;\n\n #if defined(dColorMarker)\n float marker = uMarker;\n if (uMarker == -1.0) {\n marker = readFromTexture(tMarker, vInstance * float(uGroupCount) + group, uMarkerTexDim).a;\n marker = floor(marker * 255.0 + 0.5); // rounding required to work on some cards on win\n }\n #endif\n #include apply_marker_color\n\n preFogAlphaBlended = (1.0 - preFogAlphaBlended) * gl_FragColor.a + preFogAlphaBlended;\n fragmentDepth = calcDepth(mvPosition.xyz);\n #include apply_fog\n\n src = gl_FragColor;\n\n if (!uTransparentBackground) {\n // done in 'apply_fog' otherwise\n src.rgb *= src.a;\n }\n dst = (1.0 - dst.a) * src + dst; // standard blending\n\n // break if the color is opaque enough\n if (dst.a > 0.95)\n break;\n\n pos += step;\n }\n\n return dst;\n}\n\n// TODO: support float texture for higher precision values???\n// TODO: support clipping exclusion texture support\n\nvoid main() {\n #if defined(dRenderVariant_emissive)\n discard;\n #else\n if (gl_FrontFacing)\n discard;\n\n vec3 rayDir = mix(normalize(vOrigPos - uCameraPosition), uCameraDir, uIsOrtho);\n vec3 step = rayDir * uStepScale;\n\n float boundingSphereNear = distance(vBoundingSphere.xyz, uCameraPosition) - vBoundingSphere.w;\n float d = max(uNear, boundingSphereNear) - mix(0.0, distance(vOrigPos, uCameraPosition), uIsOrtho);\n vec3 start = mix(uCameraPosition, vOrigPos, uIsOrtho) + (d * rayDir);\n gl_FragColor = raymarch(start, step, rayDir);\n\n float fragmentDepth = calcDepth((uModelView * vec4(start, 1.0)).xyz);\n float preFogAlpha = clamp(preFogAlphaBlended, 0.0, 1.0);\n #include wboit_write\n #endif\n}\n";
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2024 mol* contributors, licensed under MIT, See LICENSE file for more info.
|
|
3
|
+
*
|
|
4
|
+
* @author Ludovic Autin <autin@scripps.edu>
|
|
5
|
+
* @author Alexander Rose <alexander.rose@weirdbyte.de>
|
|
6
|
+
*/
|
|
7
|
+
export declare const dof_frag = "\nprecision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\n#include common\n\nuniform sampler2D tColor;\nuniform sampler2D tDepthOpaque;\nuniform sampler2D tDepthTransparent;\n\nuniform vec2 uTexSize;\nuniform vec4 uBounds;\n\nuniform float uBlurSpread;\nuniform float uInFocus;\nuniform float uPPM;\n\nuniform float uNear; // Near plane\nuniform float uFar; // Far plane\n\nuniform mat4 uInvProjection; // Inverse projection\nuniform mat4 uProjection; // projection\n\nuniform int uMode; // 0-planar, 1-spherical\nuniform vec3 uCenter; // Center of focus sphere in view space\n\n// Function to convert depth value from depth buffer to view space Z\nfloat getViewZ(const in float depth) {\n #if dOrthographic == 1\n return orthographicDepthToViewZ(depth, uNear, uFar);\n #else\n return perspectiveDepthToViewZ(depth, uNear, uFar);\n #endif\n}\n\n// Retrieve depth from opaque depth texture\nfloat getDepthOpaque(const in vec2 coords) {\n #ifdef depthTextureSupport\n return texture2D(tDepthOpaque, coords).r;\n #else\n return unpackRGBAToDepth(texture2D(tDepthOpaque, coords));\n #endif\n}\n\n// Retrieve depth from transparent depth texture\nfloat getDepthTransparent(const in vec2 coords) {\n return unpackRGBAToDepth(texture2D(tDepthTransparent, coords));\n}\n\nbool isBackground(const in float depth) {\n return depth == 1.0;\n}\n\nfloat getDepth(const in vec2 coords) {\n return min(getDepthOpaque(coords), getDepthTransparent(coords));\n}\n\nfloat getCOC(vec2 uv) {\n float depth = getDepth(uv);\n float viewDist = getViewZ(depth);\n vec3 aposition = screenSpaceToViewSpace(vec3(uv.xy, depth), uInvProjection);\n float focusDist = length(aposition - uCenter);\n float coc = 0.0; // Circle of Confusion\n if (uMode == 0) { // planar Depth of field\n coc = (abs(viewDist) - uInFocus) / uPPM; //focus distance, focus range\n } else if(uMode == 1) { // spherical Depth of field\n coc = focusDist / uPPM ;\n }\n coc = clamp(coc, -1.0, 1.0);\n return coc;\n}\n\n// Simple box blur for blurring the image\nvec3 getBlurredImage(vec2 coords) {\n vec4 blurColor = vec4(0);\n vec2 texelSize = vec2(1.0 / uTexSize.x, 1.0 / uTexSize.y);\n float count = 0.0;\n for (int x = 0; x < int(dBlurSize); x++) {\n for (int y = 0; y < int(dBlurSize); y++) {\n vec2 offset = vec2(float(x) - float(dBlurSize) / 2.0, float(y) - float(dBlurSize) / 2.0);\n vec2 uvPixel = coords.xy + offset * texelSize * uBlurSpread;\n float coc = getCOC(uvPixel);\n coc = smoothstep(0.0, 1.0, abs(coc));\n // mix blurColor with new color with weight coc\n blurColor.rgb = blurColor.rgb + texture2D(tColor, uvPixel).xyz * coc;\n count+=coc;\n }\n }\n blurColor = blurColor / count;\n return blurColor.rgb;\n}\n\n// simplification from https://catlikecoding.com/unity/tutorials/advanced-rendering/depth-of-field/\nvoid main() {\n vec2 uv = gl_FragCoord.xy / uTexSize;\n vec4 color = texture2D(tColor, uv);\n float depth = getDepth(uv);\n\n float viewDist = getViewZ(depth);\n\n vec3 aposition = screenSpaceToViewSpace(vec3(uv.xy, depth), uInvProjection);\n float focusDist = length(aposition - uCenter);\n vec3 blurColor = getBlurredImage(uv);\n\n float coc = getCOC(uv); // Circle of Confusion\n\n // for debugging the coc\n // color.rgb = (coc < 0.0) ? (1.0 - abs(coc)) * vec3(1.0,0.0,0.0) : vec3(0.0, 1.0 - coc, 0.0) ;//mix(color.rgb, blurColor.rgb, abs(coc));\n color.rgb = mix(color.rgb, blurColor, smoothstep(0.0, 1.0, abs(coc))); // Smooth blending based on CoC\n gl_FragColor = color;\n}\n";
|