molstar 4.1.0 → 4.2.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.js +1 -1
- package/lib/apps/mesoscale-explorer/data/cellpack/preset.d.ts +1 -1
- package/lib/apps/mesoscale-explorer/data/cellpack/preset.js +5 -5
- package/lib/apps/mesoscale-explorer/data/generic/preset.d.ts +1 -1
- package/lib/apps/mesoscale-explorer/data/generic/preset.js +3 -3
- package/lib/apps/mesoscale-explorer/data/mmcif/preset.d.ts +1 -1
- package/lib/apps/mesoscale-explorer/data/mmcif/preset.js +3 -3
- package/lib/apps/mesoscale-explorer/data/petworld/preset.d.ts +1 -1
- package/lib/apps/mesoscale-explorer/data/petworld/preset.js +3 -3
- package/lib/apps/mesoscale-explorer/data/state.d.ts +10 -1
- package/lib/apps/mesoscale-explorer/data/state.js +14 -2
- package/lib/apps/mesoscale-explorer/ui/entities.d.ts +7 -1
- package/lib/apps/mesoscale-explorer/ui/entities.js +23 -4
- package/lib/apps/viewer/app.d.ts +8 -2
- package/lib/apps/viewer/app.js +6 -6
- package/lib/cli/cifschema/util/cif-dic.js +1 -0
- package/lib/commonjs/apps/mesoscale-explorer/data/cellpack/preset.d.ts +1 -1
- package/lib/commonjs/apps/mesoscale-explorer/data/cellpack/preset.js +5 -5
- package/lib/commonjs/apps/mesoscale-explorer/data/generic/preset.d.ts +1 -1
- package/lib/commonjs/apps/mesoscale-explorer/data/generic/preset.js +3 -3
- package/lib/commonjs/apps/mesoscale-explorer/data/mmcif/preset.d.ts +1 -1
- package/lib/commonjs/apps/mesoscale-explorer/data/mmcif/preset.js +3 -3
- package/lib/commonjs/apps/mesoscale-explorer/data/petworld/preset.d.ts +1 -1
- package/lib/commonjs/apps/mesoscale-explorer/data/petworld/preset.js +3 -3
- package/lib/commonjs/apps/mesoscale-explorer/data/state.d.ts +10 -1
- package/lib/commonjs/apps/mesoscale-explorer/data/state.js +15 -3
- package/lib/commonjs/apps/mesoscale-explorer/ui/entities.d.ts +7 -1
- package/lib/commonjs/apps/mesoscale-explorer/ui/entities.js +22 -3
- package/lib/commonjs/apps/viewer/app.d.ts +8 -2
- package/lib/commonjs/apps/viewer/app.js +6 -6
- package/lib/commonjs/cli/cifschema/util/cif-dic.js +1 -0
- package/lib/commonjs/extensions/anvil/behavior.d.ts +1 -0
- package/lib/commonjs/extensions/anvil/representation.d.ts +5 -0
- package/lib/commonjs/extensions/assembly-symmetry/behavior.d.ts +1 -0
- package/lib/commonjs/extensions/assembly-symmetry/representation.d.ts +1 -0
- package/lib/commonjs/extensions/dnatco/confal-pyramids/representation.d.ts +3 -0
- package/lib/commonjs/extensions/dnatco/ntc-tube/representation.d.ts +3 -0
- package/lib/commonjs/extensions/geo-export/glb-exporter.d.ts +1 -1
- package/lib/commonjs/extensions/geo-export/glb-exporter.js +6 -4
- package/lib/commonjs/extensions/mvs/camera.d.ts +2 -0
- package/lib/commonjs/extensions/mvs/camera.js +29 -2
- package/lib/commonjs/extensions/mvs/components/annotation-label/representation.d.ts +2 -0
- package/lib/commonjs/extensions/mvs/components/annotation-label/visual.d.ts +1 -0
- package/lib/commonjs/extensions/mvs/components/custom-label/representation.d.ts +2 -0
- package/lib/commonjs/extensions/mvs/components/custom-label/visual.d.ts +1 -0
- package/lib/commonjs/extensions/mvs/components/formats.d.ts +2 -0
- package/lib/commonjs/extensions/mvs/components/formats.js +2 -1
- package/lib/commonjs/extensions/mvs/load.d.ts +2 -0
- package/lib/commonjs/extensions/mvs/load.js +12 -6
- package/lib/commonjs/extensions/rcsb/validation-report/representation.d.ts +5 -0
- package/lib/commonjs/mol-canvas3d/canvas3d.d.ts +14 -0
- package/lib/commonjs/mol-canvas3d/helper/handle-helper.d.ts +1 -0
- package/lib/commonjs/mol-canvas3d/helper/helper.d.ts +2 -0
- package/lib/commonjs/mol-canvas3d/passes/bloom.d.ts +37 -0
- package/lib/commonjs/mol-canvas3d/passes/bloom.js +272 -0
- package/lib/commonjs/mol-canvas3d/passes/draw.d.ts +11 -7
- package/lib/commonjs/mol-canvas3d/passes/draw.js +23 -3
- package/lib/commonjs/mol-canvas3d/passes/image.d.ts +6 -0
- package/lib/commonjs/mol-canvas3d/passes/postprocessing.d.ts +30 -5
- package/lib/commonjs/mol-canvas3d/passes/postprocessing.js +27 -32
- package/lib/commonjs/mol-geo/geometry/base.d.ts +3 -1
- package/lib/commonjs/mol-geo/geometry/base.js +4 -1
- package/lib/commonjs/mol-geo/geometry/cylinders/cylinders.d.ts +2 -1
- package/lib/commonjs/mol-geo/geometry/cylinders/cylinders.js +4 -1
- package/lib/commonjs/mol-geo/geometry/direct-volume/direct-volume.d.ts +2 -1
- package/lib/commonjs/mol-geo/geometry/direct-volume/direct-volume.js +4 -1
- package/lib/commonjs/mol-geo/geometry/emissive-data.d.ts +26 -0
- package/lib/commonjs/mol-geo/geometry/emissive-data.js +80 -0
- package/lib/commonjs/mol-geo/geometry/image/image.d.ts +2 -1
- package/lib/commonjs/mol-geo/geometry/image/image.js +4 -1
- package/lib/commonjs/mol-geo/geometry/lines/lines.d.ts +3 -1
- package/lib/commonjs/mol-geo/geometry/lines/lines.js +4 -1
- package/lib/commonjs/mol-geo/geometry/mesh/color-smoothing.d.ts +2 -1
- package/lib/commonjs/mol-geo/geometry/mesh/color-smoothing.js +36 -2
- package/lib/commonjs/mol-geo/geometry/mesh/mesh.d.ts +2 -1
- package/lib/commonjs/mol-geo/geometry/mesh/mesh.js +4 -1
- package/lib/commonjs/mol-geo/geometry/points/points.d.ts +2 -2
- package/lib/commonjs/mol-geo/geometry/points/points.js +4 -1
- package/lib/commonjs/mol-geo/geometry/spheres/spheres.d.ts +2 -2
- package/lib/commonjs/mol-geo/geometry/spheres/spheres.js +7 -3
- package/lib/commonjs/mol-geo/geometry/text/text.d.ts +2 -1
- package/lib/commonjs/mol-geo/geometry/text/text.js +4 -1
- package/lib/commonjs/mol-geo/geometry/texture-mesh/color-smoothing.d.ts +2 -1
- package/lib/commonjs/mol-geo/geometry/texture-mesh/color-smoothing.js +34 -2
- package/lib/commonjs/mol-geo/geometry/texture-mesh/texture-mesh.d.ts +2 -1
- package/lib/commonjs/mol-geo/geometry/texture-mesh/texture-mesh.js +3 -0
- package/lib/commonjs/mol-gl/renderable/cylinders.d.ts +10 -0
- package/lib/commonjs/mol-gl/renderable/direct-volume.d.ts +10 -0
- package/lib/commonjs/mol-gl/renderable/image.d.ts +10 -0
- package/lib/commonjs/mol-gl/renderable/lines.d.ts +10 -0
- package/lib/commonjs/mol-gl/renderable/mesh.d.ts +10 -0
- package/lib/commonjs/mol-gl/renderable/points.d.ts +10 -0
- package/lib/commonjs/mol-gl/renderable/schema.d.ts +24 -1
- package/lib/commonjs/mol-gl/renderable/schema.js +15 -2
- package/lib/commonjs/mol-gl/renderable/spheres.d.ts +10 -0
- package/lib/commonjs/mol-gl/renderable/text.d.ts +10 -0
- package/lib/commonjs/mol-gl/renderable/texture-mesh.d.ts +10 -0
- package/lib/commonjs/mol-gl/renderable.d.ts +1 -1
- package/lib/commonjs/mol-gl/renderable.js +2 -2
- package/lib/commonjs/mol-gl/renderer.d.ts +2 -1
- package/lib/commonjs/mol-gl/renderer.js +58 -49
- package/lib/commonjs/mol-gl/scene.d.ts +3 -1
- package/lib/commonjs/mol-gl/scene.js +26 -1
- package/lib/commonjs/mol-gl/shader/bloom/blur.frag.d.ts +1 -0
- package/lib/commonjs/mol-gl/shader/bloom/blur.frag.js +32 -0
- package/lib/commonjs/mol-gl/shader/bloom/composite.frag.d.ts +1 -0
- package/lib/commonjs/mol-gl/shader/bloom/composite.frag.js +37 -0
- package/lib/commonjs/mol-gl/shader/bloom/luminosity.frag.d.ts +1 -0
- package/lib/commonjs/mol-gl/shader/bloom/luminosity.frag.js +56 -0
- package/lib/commonjs/mol-gl/shader/chunks/apply-light-color.glsl.d.ts +2 -2
- package/lib/commonjs/mol-gl/shader/chunks/apply-light-color.glsl.js +10 -2
- package/lib/commonjs/mol-gl/shader/chunks/assign-color-varying.glsl.d.ts +1 -1
- package/lib/commonjs/mol-gl/shader/chunks/assign-color-varying.glsl.js +28 -0
- package/lib/commonjs/mol-gl/shader/chunks/assign-material-color.glsl.d.ts +1 -1
- package/lib/commonjs/mol-gl/shader/chunks/assign-material-color.glsl.js +20 -31
- package/lib/commonjs/mol-gl/shader/chunks/check-transparency.glsl.d.ts +1 -0
- package/lib/commonjs/mol-gl/shader/chunks/check-transparency.glsl.js +20 -0
- package/lib/commonjs/mol-gl/shader/chunks/color-frag-params.glsl.d.ts +1 -1
- package/lib/commonjs/mol-gl/shader/chunks/color-frag-params.glsl.js +9 -0
- package/lib/commonjs/mol-gl/shader/chunks/color-vert-params.glsl.d.ts +1 -1
- package/lib/commonjs/mol-gl/shader/chunks/color-vert-params.glsl.js +30 -0
- 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/cylinders.frag.d.ts +2 -2
- package/lib/commonjs/mol-gl/shader/cylinders.frag.js +4 -1
- package/lib/commonjs/mol-gl/shader/direct-volume.frag.d.ts +1 -1
- package/lib/commonjs/mol-gl/shader/direct-volume.frag.js +17 -11
- package/lib/commonjs/mol-gl/shader/image.frag.d.ts +2 -2
- package/lib/commonjs/mol-gl/shader/image.frag.js +14 -5
- package/lib/commonjs/mol-gl/shader/lines.frag.d.ts +2 -2
- package/lib/commonjs/mol-gl/shader/lines.frag.js +4 -1
- package/lib/commonjs/mol-gl/shader/mesh.frag.d.ts +2 -2
- package/lib/commonjs/mol-gl/shader/mesh.frag.js +4 -1
- package/lib/commonjs/mol-gl/shader/points.frag.d.ts +2 -2
- package/lib/commonjs/mol-gl/shader/points.frag.js +9 -5
- package/lib/commonjs/mol-gl/shader/spheres.frag.d.ts +2 -2
- package/lib/commonjs/mol-gl/shader/spheres.frag.js +11 -5
- package/lib/commonjs/mol-gl/shader/ssao-blur.frag.d.ts +3 -2
- package/lib/commonjs/mol-gl/shader/ssao-blur.frag.js +7 -8
- package/lib/commonjs/mol-gl/shader/ssao.frag.d.ts +3 -2
- package/lib/commonjs/mol-gl/shader/ssao.frag.js +56 -17
- package/lib/commonjs/mol-gl/shader/text.frag.d.ts +2 -2
- package/lib/commonjs/mol-gl/shader/text.frag.js +6 -4
- package/lib/commonjs/mol-gl/shader-code.d.ts +1 -1
- package/lib/commonjs/mol-gl/shader-code.js +9 -3
- package/lib/commonjs/mol-gl/webgl/render-item.d.ts +3 -2
- package/lib/commonjs/mol-gl/webgl/render-item.js +1 -1
- 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 +1 -1
- package/lib/commonjs/mol-io/reader/cif/schema/mmcif.js +1 -1
- package/lib/commonjs/mol-model/structure/model/types/saccharides.js +1 -1
- package/lib/commonjs/mol-model/structure/structure/unit/bonds/data.d.ts +9 -6
- package/lib/commonjs/mol-model/structure/structure/unit/bonds/data.js +1 -1
- package/lib/commonjs/mol-model/structure/structure/unit/bonds/inter-compute.d.ts +1 -1
- package/lib/commonjs/mol-model/structure/structure/unit/bonds/inter-compute.js +7 -4
- package/lib/commonjs/mol-model/structure/structure/unit/bonds/intra-compute.d.ts +1 -1
- package/lib/commonjs/mol-model/structure/structure/unit/bonds/intra-compute.js +10 -6
- package/lib/commonjs/mol-model/structure/structure/unit.d.ts +1 -1
- package/lib/commonjs/mol-model/structure/structure/unit.js +5 -2
- package/lib/commonjs/mol-model-formats/shape/ply.d.ts +2 -0
- package/lib/commonjs/mol-model-formats/structure/property/bonds/index-pair.d.ts +4 -1
- package/lib/commonjs/mol-model-formats/structure/property/bonds/index-pair.js +6 -3
- 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-intra-unit-cylinder.d.ts +1 -0
- package/lib/commonjs/mol-model-props/computed/representations/interactions.d.ts +3 -0
- package/lib/commonjs/mol-model-props/integrative/cross-link-restraint/representation.d.ts +4 -0
- package/lib/commonjs/mol-plugin/commands.d.ts +1 -208
- package/lib/commonjs/mol-plugin-state/helpers/structure-emissive.d.ts +12 -0
- package/lib/commonjs/mol-plugin-state/helpers/structure-emissive.js +69 -0
- package/lib/commonjs/mol-plugin-state/manager/structure/component.d.ts +3 -1
- package/lib/commonjs/mol-plugin-state/manager/structure/component.js +9 -1
- package/lib/commonjs/mol-plugin-state/manager/structure/measurement.d.ts +341 -9
- package/lib/commonjs/mol-plugin-state/manager/structure/measurement.js +32 -19
- package/lib/commonjs/mol-plugin-state/transforms/representation.d.ts +25 -0
- package/lib/commonjs/mol-plugin-state/transforms/representation.js +121 -6
- package/lib/commonjs/mol-repr/representation.d.ts +6 -2
- package/lib/commonjs/mol-repr/representation.js +12 -2
- package/lib/commonjs/mol-repr/shape/loci/angle.d.ts +1 -0
- package/lib/commonjs/mol-repr/shape/loci/common.d.ts +1 -0
- package/lib/commonjs/mol-repr/shape/loci/dihedral.d.ts +1 -0
- package/lib/commonjs/mol-repr/shape/loci/distance.d.ts +1 -0
- package/lib/commonjs/mol-repr/shape/loci/label.d.ts +1 -0
- package/lib/commonjs/mol-repr/shape/loci/orientation.d.ts +1 -0
- package/lib/commonjs/mol-repr/shape/loci/plane.d.ts +1 -0
- package/lib/commonjs/mol-repr/shape/model/unitcell.d.ts +1 -0
- package/lib/commonjs/mol-repr/structure/complex-representation.d.ts +1 -1
- package/lib/commonjs/mol-repr/structure/complex-representation.js +7 -1
- package/lib/commonjs/mol-repr/structure/complex-visual.d.ts +8 -1
- package/lib/commonjs/mol-repr/structure/complex-visual.js +5 -1
- package/lib/commonjs/mol-repr/structure/params.d.ts +8 -0
- package/lib/commonjs/mol-repr/structure/registry.d.ts +14 -0
- package/lib/commonjs/mol-repr/structure/representation/backbone.d.ts +3 -0
- package/lib/commonjs/mol-repr/structure/representation/ball-and-stick.d.ts +3 -0
- package/lib/commonjs/mol-repr/structure/representation/carbohydrate.d.ts +3 -0
- package/lib/commonjs/mol-repr/structure/representation/cartoon.d.ts +3 -0
- package/lib/commonjs/mol-repr/structure/representation/ellipsoid.d.ts +3 -0
- package/lib/commonjs/mol-repr/structure/representation/gaussian-surface.d.ts +3 -0
- package/lib/commonjs/mol-repr/structure/representation/gaussian-volume.d.ts +3 -0
- package/lib/commonjs/mol-repr/structure/representation/label.d.ts +3 -0
- package/lib/commonjs/mol-repr/structure/representation/line.d.ts +3 -0
- package/lib/commonjs/mol-repr/structure/representation/molecular-surface.d.ts +3 -0
- package/lib/commonjs/mol-repr/structure/representation/orientation.d.ts +3 -0
- package/lib/commonjs/mol-repr/structure/representation/point.d.ts +3 -0
- package/lib/commonjs/mol-repr/structure/representation/putty.d.ts +3 -0
- package/lib/commonjs/mol-repr/structure/representation/spacefill.d.ts +3 -0
- package/lib/commonjs/mol-repr/structure/units-representation.d.ts +1 -1
- package/lib/commonjs/mol-repr/structure/units-representation.js +9 -3
- package/lib/commonjs/mol-repr/structure/units-visual.d.ts +9 -1
- package/lib/commonjs/mol-repr/structure/units-visual.js +5 -1
- 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-line.d.ts +1 -0
- 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-line.d.ts +1 -0
- package/lib/commonjs/mol-repr/structure/visual/carbohydrate-link-cylinder.d.ts +1 -0
- package/lib/commonjs/mol-repr/structure/visual/carbohydrate-symbol-mesh.d.ts +1 -0
- package/lib/commonjs/mol-repr/structure/visual/carbohydrate-terminal-link-cylinder.d.ts +1 -0
- package/lib/commonjs/mol-repr/structure/visual/element-cross.d.ts +1 -0
- package/lib/commonjs/mol-repr/structure/visual/element-point.d.ts +1 -0
- package/lib/commonjs/mol-repr/structure/visual/element-sphere.d.ts +4 -0
- package/lib/commonjs/mol-repr/structure/visual/ellipsoid-mesh.d.ts +1 -0
- package/lib/commonjs/mol-repr/structure/visual/gaussian-density-volume.d.ts +2 -0
- package/lib/commonjs/mol-repr/structure/visual/gaussian-surface-mesh.d.ts +4 -0
- package/lib/commonjs/mol-repr/structure/visual/gaussian-surface-wireframe.d.ts +1 -0
- package/lib/commonjs/mol-repr/structure/visual/label-text.d.ts +1 -0
- package/lib/commonjs/mol-repr/structure/visual/molecular-surface-mesh.d.ts +1 -0
- package/lib/commonjs/mol-repr/structure/visual/molecular-surface-wireframe.d.ts +1 -0
- package/lib/commonjs/mol-repr/structure/visual/nucleotide-atomic-bond.d.ts +2 -0
- package/lib/commonjs/mol-repr/structure/visual/nucleotide-atomic-element.d.ts +2 -0
- package/lib/commonjs/mol-repr/structure/visual/nucleotide-atomic-ring-fill.d.ts +1 -0
- package/lib/commonjs/mol-repr/structure/visual/nucleotide-block-mesh.d.ts +1 -0
- package/lib/commonjs/mol-repr/structure/visual/nucleotide-ring-mesh.d.ts +1 -0
- package/lib/commonjs/mol-repr/structure/visual/orientation-ellipsoid-mesh.d.ts +1 -0
- package/lib/commonjs/mol-repr/structure/visual/polymer-backbone-cylinder.d.ts +2 -0
- package/lib/commonjs/mol-repr/structure/visual/polymer-backbone-sphere.d.ts +2 -0
- package/lib/commonjs/mol-repr/structure/visual/polymer-direction-wedge.d.ts +1 -0
- package/lib/commonjs/mol-repr/structure/visual/polymer-gap-cylinder.d.ts +1 -0
- package/lib/commonjs/mol-repr/structure/visual/polymer-trace-mesh.d.ts +1 -0
- package/lib/commonjs/mol-repr/structure/visual/polymer-tube-mesh.d.ts +1 -0
- package/lib/commonjs/mol-repr/visual.d.ts +6 -1
- package/lib/commonjs/mol-repr/visual.js +55 -1
- package/lib/commonjs/mol-repr/volume/direct-volume.d.ts +3 -0
- package/lib/commonjs/mol-repr/volume/isosurface.d.ts +6 -0
- package/lib/commonjs/mol-repr/volume/registry.d.ts +4 -0
- package/lib/commonjs/mol-repr/volume/representation.d.ts +2 -1
- package/lib/commonjs/mol-repr/volume/representation.js +9 -2
- package/lib/commonjs/mol-repr/volume/segment.d.ts +5 -0
- package/lib/commonjs/mol-repr/volume/slice.d.ts +3 -0
- package/lib/commonjs/mol-theme/emissive.d.ts +40 -0
- package/lib/commonjs/mol-theme/emissive.js +137 -0
- package/lib/commonjs/mol-util/set.d.ts +1 -1
- package/lib/commonjs/mol-util/set.js +17 -1
- package/lib/extensions/anvil/behavior.d.ts +1 -0
- package/lib/extensions/anvil/representation.d.ts +5 -0
- package/lib/extensions/assembly-symmetry/behavior.d.ts +1 -0
- 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/geo-export/glb-exporter.d.ts +1 -1
- package/lib/extensions/geo-export/glb-exporter.js +6 -4
- package/lib/extensions/mvs/camera.d.ts +2 -0
- package/lib/extensions/mvs/camera.js +27 -1
- package/lib/extensions/mvs/components/annotation-label/representation.d.ts +2 -0
- package/lib/extensions/mvs/components/annotation-label/visual.d.ts +1 -0
- package/lib/extensions/mvs/components/custom-label/representation.d.ts +2 -0
- package/lib/extensions/mvs/components/custom-label/visual.d.ts +1 -0
- package/lib/extensions/mvs/components/formats.d.ts +2 -0
- package/lib/extensions/mvs/components/formats.js +2 -1
- package/lib/extensions/mvs/load.d.ts +2 -0
- package/lib/extensions/mvs/load.js +13 -7
- package/lib/extensions/rcsb/validation-report/representation.d.ts +5 -0
- package/lib/mol-canvas3d/canvas3d.d.ts +14 -0
- 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/bloom.d.ts +37 -0
- package/lib/mol-canvas3d/passes/bloom.js +268 -0
- package/lib/mol-canvas3d/passes/draw.d.ts +11 -7
- package/lib/mol-canvas3d/passes/draw.js +23 -3
- package/lib/mol-canvas3d/passes/image.d.ts +6 -0
- package/lib/mol-canvas3d/passes/postprocessing.d.ts +30 -5
- package/lib/mol-canvas3d/passes/postprocessing.js +25 -31
- package/lib/mol-geo/geometry/base.d.ts +3 -1
- package/lib/mol-geo/geometry/base.js +4 -1
- package/lib/mol-geo/geometry/cylinders/cylinders.d.ts +2 -1
- package/lib/mol-geo/geometry/cylinders/cylinders.js +4 -1
- package/lib/mol-geo/geometry/direct-volume/direct-volume.d.ts +2 -1
- package/lib/mol-geo/geometry/direct-volume/direct-volume.js +4 -1
- package/lib/mol-geo/geometry/emissive-data.d.ts +26 -0
- package/lib/mol-geo/geometry/emissive-data.js +72 -0
- package/lib/mol-geo/geometry/image/image.d.ts +2 -1
- package/lib/mol-geo/geometry/image/image.js +4 -1
- package/lib/mol-geo/geometry/lines/lines.d.ts +3 -1
- package/lib/mol-geo/geometry/lines/lines.js +4 -1
- package/lib/mol-geo/geometry/mesh/color-smoothing.d.ts +2 -1
- package/lib/mol-geo/geometry/mesh/color-smoothing.js +34 -1
- package/lib/mol-geo/geometry/mesh/mesh.d.ts +2 -1
- package/lib/mol-geo/geometry/mesh/mesh.js +4 -1
- package/lib/mol-geo/geometry/points/points.d.ts +2 -2
- package/lib/mol-geo/geometry/points/points.js +4 -1
- package/lib/mol-geo/geometry/spheres/spheres.d.ts +2 -2
- package/lib/mol-geo/geometry/spheres/spheres.js +7 -3
- package/lib/mol-geo/geometry/text/text.d.ts +2 -1
- package/lib/mol-geo/geometry/text/text.js +4 -1
- package/lib/mol-geo/geometry/texture-mesh/color-smoothing.d.ts +2 -1
- package/lib/mol-geo/geometry/texture-mesh/color-smoothing.js +32 -1
- package/lib/mol-geo/geometry/texture-mesh/texture-mesh.d.ts +2 -1
- package/lib/mol-geo/geometry/texture-mesh/texture-mesh.js +3 -0
- package/lib/mol-gl/renderable/cylinders.d.ts +10 -0
- package/lib/mol-gl/renderable/direct-volume.d.ts +10 -0
- package/lib/mol-gl/renderable/image.d.ts +10 -0
- package/lib/mol-gl/renderable/lines.d.ts +10 -0
- package/lib/mol-gl/renderable/mesh.d.ts +10 -0
- package/lib/mol-gl/renderable/points.d.ts +10 -0
- package/lib/mol-gl/renderable/schema.d.ts +24 -1
- package/lib/mol-gl/renderable/schema.js +14 -1
- package/lib/mol-gl/renderable/spheres.d.ts +10 -0
- package/lib/mol-gl/renderable/text.d.ts +10 -0
- package/lib/mol-gl/renderable/texture-mesh.d.ts +10 -0
- package/lib/mol-gl/renderable.d.ts +1 -1
- package/lib/mol-gl/renderable.js +2 -2
- package/lib/mol-gl/renderer.d.ts +2 -1
- package/lib/mol-gl/renderer.js +58 -49
- package/lib/mol-gl/scene.d.ts +3 -1
- package/lib/mol-gl/scene.js +26 -1
- package/lib/mol-gl/shader/bloom/blur.frag.d.ts +1 -0
- package/lib/mol-gl/shader/bloom/blur.frag.js +29 -0
- package/lib/mol-gl/shader/bloom/composite.frag.d.ts +1 -0
- package/lib/mol-gl/shader/bloom/composite.frag.js +34 -0
- package/lib/mol-gl/shader/bloom/luminosity.frag.d.ts +1 -0
- package/lib/mol-gl/shader/bloom/luminosity.frag.js +53 -0
- package/lib/mol-gl/shader/chunks/apply-light-color.glsl.d.ts +2 -2
- package/lib/mol-gl/shader/chunks/apply-light-color.glsl.js +10 -2
- package/lib/mol-gl/shader/chunks/assign-color-varying.glsl.d.ts +1 -1
- package/lib/mol-gl/shader/chunks/assign-color-varying.glsl.js +28 -0
- package/lib/mol-gl/shader/chunks/assign-material-color.glsl.d.ts +1 -1
- package/lib/mol-gl/shader/chunks/assign-material-color.glsl.js +20 -31
- package/lib/mol-gl/shader/chunks/check-transparency.glsl.d.ts +1 -0
- package/lib/mol-gl/shader/chunks/check-transparency.glsl.js +17 -0
- package/lib/mol-gl/shader/chunks/color-frag-params.glsl.d.ts +1 -1
- package/lib/mol-gl/shader/chunks/color-frag-params.glsl.js +9 -0
- package/lib/mol-gl/shader/chunks/color-vert-params.glsl.d.ts +1 -1
- package/lib/mol-gl/shader/chunks/color-vert-params.glsl.js +30 -0
- 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/cylinders.frag.d.ts +2 -2
- package/lib/mol-gl/shader/cylinders.frag.js +4 -1
- package/lib/mol-gl/shader/direct-volume.frag.d.ts +1 -1
- package/lib/mol-gl/shader/direct-volume.frag.js +17 -11
- package/lib/mol-gl/shader/image.frag.d.ts +2 -2
- package/lib/mol-gl/shader/image.frag.js +14 -5
- package/lib/mol-gl/shader/lines.frag.d.ts +2 -2
- package/lib/mol-gl/shader/lines.frag.js +4 -1
- package/lib/mol-gl/shader/mesh.frag.d.ts +2 -2
- package/lib/mol-gl/shader/mesh.frag.js +4 -1
- package/lib/mol-gl/shader/points.frag.d.ts +2 -2
- package/lib/mol-gl/shader/points.frag.js +9 -5
- package/lib/mol-gl/shader/spheres.frag.d.ts +2 -2
- package/lib/mol-gl/shader/spheres.frag.js +11 -5
- package/lib/mol-gl/shader/ssao-blur.frag.d.ts +3 -2
- package/lib/mol-gl/shader/ssao-blur.frag.js +7 -8
- package/lib/mol-gl/shader/ssao.frag.d.ts +3 -2
- package/lib/mol-gl/shader/ssao.frag.js +56 -17
- package/lib/mol-gl/shader/text.frag.d.ts +2 -2
- package/lib/mol-gl/shader/text.frag.js +6 -4
- package/lib/mol-gl/shader-code.d.ts +1 -1
- package/lib/mol-gl/shader-code.js +9 -3
- package/lib/mol-gl/webgl/render-item.d.ts +3 -2
- package/lib/mol-gl/webgl/render-item.js +1 -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 +1 -1
- package/lib/mol-io/reader/cif/schema/mmcif.js +1 -1
- package/lib/mol-model/structure/model/types/saccharides.js +1 -1
- package/lib/mol-model/structure/structure/unit/bonds/data.d.ts +9 -6
- package/lib/mol-model/structure/structure/unit/bonds/data.js +1 -1
- package/lib/mol-model/structure/structure/unit/bonds/inter-compute.d.ts +1 -1
- package/lib/mol-model/structure/structure/unit/bonds/inter-compute.js +7 -4
- package/lib/mol-model/structure/structure/unit/bonds/intra-compute.d.ts +1 -1
- package/lib/mol-model/structure/structure/unit/bonds/intra-compute.js +10 -6
- package/lib/mol-model/structure/structure/unit.d.ts +1 -1
- package/lib/mol-model/structure/structure/unit.js +5 -2
- package/lib/mol-model-formats/shape/ply.d.ts +2 -0
- package/lib/mol-model-formats/structure/property/bonds/index-pair.d.ts +4 -1
- package/lib/mol-model-formats/structure/property/bonds/index-pair.js +6 -3
- 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-plugin/commands.d.ts +1 -208
- package/lib/mol-plugin/version.js +2 -2
- package/lib/mol-plugin-state/helpers/structure-emissive.d.ts +12 -0
- package/lib/mol-plugin-state/helpers/structure-emissive.js +64 -0
- package/lib/mol-plugin-state/manager/structure/component.d.ts +3 -1
- package/lib/mol-plugin-state/manager/structure/component.js +9 -1
- package/lib/mol-plugin-state/manager/structure/measurement.d.ts +341 -9
- package/lib/mol-plugin-state/manager/structure/measurement.js +32 -19
- package/lib/mol-plugin-state/transforms/representation.d.ts +25 -0
- package/lib/mol-plugin-state/transforms/representation.js +120 -5
- package/lib/mol-repr/representation.d.ts +6 -2
- package/lib/mol-repr/representation.js +12 -2
- package/lib/mol-repr/shape/loci/angle.d.ts +1 -0
- package/lib/mol-repr/shape/loci/common.d.ts +1 -0
- package/lib/mol-repr/shape/loci/dihedral.d.ts +1 -0
- package/lib/mol-repr/shape/loci/distance.d.ts +1 -0
- package/lib/mol-repr/shape/loci/label.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-representation.d.ts +1 -1
- package/lib/mol-repr/structure/complex-representation.js +7 -1
- package/lib/mol-repr/structure/complex-visual.d.ts +8 -1
- package/lib/mol-repr/structure/complex-visual.js +5 -1
- package/lib/mol-repr/structure/params.d.ts +8 -0
- package/lib/mol-repr/structure/registry.d.ts +14 -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/label.d.ts +3 -0
- package/lib/mol-repr/structure/representation/line.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/point.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-representation.d.ts +1 -1
- package/lib/mol-repr/structure/units-representation.js +9 -3
- package/lib/mol-repr/structure/units-visual.d.ts +9 -1
- package/lib/mol-repr/structure/units-visual.js +5 -1
- package/lib/mol-repr/structure/visual/bond-inter-unit-cylinder.d.ts +2 -0
- package/lib/mol-repr/structure/visual/bond-inter-unit-line.d.ts +1 -0
- package/lib/mol-repr/structure/visual/bond-intra-unit-cylinder.d.ts +2 -0
- package/lib/mol-repr/structure/visual/bond-intra-unit-line.d.ts +1 -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-cross.d.ts +1 -0
- package/lib/mol-repr/structure/visual/element-point.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/gaussian-surface-wireframe.d.ts +1 -0
- package/lib/mol-repr/structure/visual/label-text.d.ts +1 -0
- package/lib/mol-repr/structure/visual/molecular-surface-mesh.d.ts +1 -0
- package/lib/mol-repr/structure/visual/molecular-surface-wireframe.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/visual.d.ts +6 -1
- package/lib/mol-repr/visual.js +57 -3
- package/lib/mol-repr/volume/direct-volume.d.ts +3 -0
- package/lib/mol-repr/volume/isosurface.d.ts +6 -0
- package/lib/mol-repr/volume/registry.d.ts +4 -0
- package/lib/mol-repr/volume/representation.d.ts +2 -1
- package/lib/mol-repr/volume/representation.js +9 -2
- package/lib/mol-repr/volume/segment.d.ts +5 -0
- package/lib/mol-repr/volume/slice.d.ts +3 -0
- package/lib/mol-theme/emissive.d.ts +40 -0
- package/lib/mol-theme/emissive.js +134 -0
- package/lib/mol-util/set.d.ts +1 -1
- package/lib/mol-util/set.js +17 -1
- package/package.json +19 -18
package/lib/mol-gl/renderer.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c) 2018-
|
|
2
|
+
* Copyright (c) 2018-2024 mol* contributors, licensed under MIT, See LICENSE file for more info.
|
|
3
3
|
*
|
|
4
4
|
* @author Alexander Rose <alexander.rose@weirdbyte.de>
|
|
5
5
|
* @author Gianluca Tomasello <giagitom@gmail.com>
|
|
@@ -48,6 +48,7 @@ interface Renderer {
|
|
|
48
48
|
renderDepthTransparent: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void;
|
|
49
49
|
renderMarkingDepth: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void;
|
|
50
50
|
renderMarkingMask: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void;
|
|
51
|
+
renderEmissive: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void;
|
|
51
52
|
renderBlended: (group: Scene, camera: ICamera) => void;
|
|
52
53
|
renderBlendedOpaque: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void;
|
|
53
54
|
renderBlendedTransparent: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void;
|
package/lib/mol-gl/renderer.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c) 2018-
|
|
2
|
+
* Copyright (c) 2018-2024 mol* contributors, licensed under MIT, See LICENSE file for more info.
|
|
3
3
|
*
|
|
4
4
|
* @author Alexander Rose <alexander.rose@weirdbyte.de>
|
|
5
5
|
* @author Gianluca Tomasello <giagitom@gmail.com>
|
|
@@ -174,7 +174,8 @@ var Renderer;
|
|
|
174
174
|
if (d - radius > maxDistance)
|
|
175
175
|
return;
|
|
176
176
|
}
|
|
177
|
-
|
|
177
|
+
const hasInstanceGrid = r.values.instanceGrid.ref.value.cellSize > 1;
|
|
178
|
+
if (hasInstanceGrid || (hasInstanceGrid && r.values.lodLevels)) {
|
|
178
179
|
r.cull(cameraPlane, frustum, isOccluded, ctx.stats);
|
|
179
180
|
}
|
|
180
181
|
else {
|
|
@@ -301,6 +302,30 @@ var Renderer;
|
|
|
301
302
|
globalUniformsNeedUpdate = true;
|
|
302
303
|
state.currentRenderItemId = -1;
|
|
303
304
|
};
|
|
305
|
+
const checkOpaque = function (r) {
|
|
306
|
+
var _a, _b, _c, _d;
|
|
307
|
+
// uAlpha is updated in `r.render` so we need to recompute it here
|
|
308
|
+
const alpha = clamp(r.values.alpha.ref.value * r.state.alphaFactor, 0, 1);
|
|
309
|
+
const xrayShaded = ((_a = r.values.dXrayShaded) === null || _a === void 0 ? void 0 : _a.ref.value) === 'on' || ((_b = r.values.dXrayShaded) === null || _b === void 0 ? void 0 : _b.ref.value) === 'inverted';
|
|
310
|
+
return ((alpha === 1 &&
|
|
311
|
+
r.values.transparencyAverage.ref.value !== 1 &&
|
|
312
|
+
r.values.dGeometryType.ref.value !== 'directVolume' &&
|
|
313
|
+
((_c = r.values.dPointStyle) === null || _c === void 0 ? void 0 : _c.ref.value) !== 'fuzzy' &&
|
|
314
|
+
!xrayShaded) || ((_d = r.values.dTransparentBackfaces) === null || _d === void 0 ? void 0 : _d.ref.value) === 'opaque');
|
|
315
|
+
};
|
|
316
|
+
const checkTransparent = function (r) {
|
|
317
|
+
var _a, _b, _c;
|
|
318
|
+
// uAlpha is updated in `r.render` so we need to recompute it here
|
|
319
|
+
const alpha = clamp(r.values.alpha.ref.value * r.state.alphaFactor, 0, 1);
|
|
320
|
+
const xrayShaded = ((_a = r.values.dXrayShaded) === null || _a === void 0 ? void 0 : _a.ref.value) === 'on' || ((_b = r.values.dXrayShaded) === null || _b === void 0 ? void 0 : _b.ref.value) === 'inverted';
|
|
321
|
+
return ((alpha < 1 && alpha !== 0) ||
|
|
322
|
+
r.values.transparencyAverage.ref.value > 0 ||
|
|
323
|
+
r.values.dGeometryType.ref.value === 'directVolume' ||
|
|
324
|
+
((_c = r.values.dPointStyle) === null || _c === void 0 ? void 0 : _c.ref.value) === 'fuzzy' ||
|
|
325
|
+
r.values.dGeometryType.ref.value === 'text' ||
|
|
326
|
+
r.values.dGeometryType.ref.value === 'image' ||
|
|
327
|
+
xrayShaded);
|
|
328
|
+
};
|
|
304
329
|
const renderPick = (group, camera, variant, depthTexture, pickType) => {
|
|
305
330
|
if (isTimingMode)
|
|
306
331
|
ctx.timer.mark('Renderer.renderPick');
|
|
@@ -333,7 +358,6 @@ var Renderer;
|
|
|
333
358
|
ctx.timer.markEnd('Renderer.renderDepth');
|
|
334
359
|
};
|
|
335
360
|
const renderDepthOpaque = (group, camera, depthTexture) => {
|
|
336
|
-
var _a, _b;
|
|
337
361
|
if (isTimingMode)
|
|
338
362
|
ctx.timer.mark('Renderer.renderDepthOpaque');
|
|
339
363
|
state.disable(gl.BLEND);
|
|
@@ -343,8 +367,7 @@ var Renderer;
|
|
|
343
367
|
const { renderables } = group;
|
|
344
368
|
for (let i = 0, il = renderables.length; i < il; ++i) {
|
|
345
369
|
const r = renderables[i];
|
|
346
|
-
|
|
347
|
-
if (r.state.opaque && r.values.transparencyAverage.ref.value !== 1 && !xrayShaded) {
|
|
370
|
+
if (checkOpaque(r)) {
|
|
348
371
|
renderObject(r, 'depth', 0 /* Flag.None */);
|
|
349
372
|
}
|
|
350
373
|
}
|
|
@@ -352,7 +375,6 @@ var Renderer;
|
|
|
352
375
|
ctx.timer.markEnd('Renderer.renderDepthOpaque');
|
|
353
376
|
};
|
|
354
377
|
const renderDepthTransparent = (group, camera, depthTexture) => {
|
|
355
|
-
var _a, _b;
|
|
356
378
|
if (isTimingMode)
|
|
357
379
|
ctx.timer.mark('Renderer.renderDepthTransparent');
|
|
358
380
|
state.disable(gl.BLEND);
|
|
@@ -362,8 +384,7 @@ var Renderer;
|
|
|
362
384
|
const { renderables } = group;
|
|
363
385
|
for (let i = 0, il = renderables.length; i < il; ++i) {
|
|
364
386
|
const r = renderables[i];
|
|
365
|
-
|
|
366
|
-
if (!r.state.opaque || r.values.transparencyAverage.ref.value > 0 || xrayShaded) {
|
|
387
|
+
if (checkTransparent(r)) {
|
|
367
388
|
renderObject(r, 'depth', 0 /* Flag.None */);
|
|
368
389
|
}
|
|
369
390
|
}
|
|
@@ -382,7 +403,7 @@ var Renderer;
|
|
|
382
403
|
for (let i = 0, il = renderables.length; i < il; ++i) {
|
|
383
404
|
const r = renderables[i];
|
|
384
405
|
const alpha = clamp(r.values.alpha.ref.value * r.state.alphaFactor, 0, 1);
|
|
385
|
-
if (alpha !== 0 && r.values.markerAverage.ref.value !== 1) {
|
|
406
|
+
if (alpha !== 0 && r.values.transparencyAverage.ref.value !== 1 && r.values.markerAverage.ref.value !== 1) {
|
|
386
407
|
renderObject(renderables[i], 'marking', 0 /* Flag.None */);
|
|
387
408
|
}
|
|
388
409
|
}
|
|
@@ -407,6 +428,23 @@ var Renderer;
|
|
|
407
428
|
if (isTimingMode)
|
|
408
429
|
ctx.timer.markEnd('Renderer.renderMarkingMask');
|
|
409
430
|
};
|
|
431
|
+
const renderEmissive = (group, camera, depthTexture) => {
|
|
432
|
+
if (isTimingMode)
|
|
433
|
+
ctx.timer.mark('Renderer.renderEmissive');
|
|
434
|
+
state.disable(gl.BLEND);
|
|
435
|
+
state.enable(gl.DEPTH_TEST);
|
|
436
|
+
state.depthMask(true);
|
|
437
|
+
updateInternal(group, camera, depthTexture, 1 /* Mask.Opaque */, false);
|
|
438
|
+
const { renderables } = group;
|
|
439
|
+
for (let i = 0, il = renderables.length; i < il; ++i) {
|
|
440
|
+
const r = renderables[i];
|
|
441
|
+
if (checkOpaque(r)) {
|
|
442
|
+
renderObject(r, 'emissive', 0 /* Flag.None */);
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
if (isTimingMode)
|
|
446
|
+
ctx.timer.markEnd('Renderer.renderEmissive');
|
|
447
|
+
};
|
|
410
448
|
const renderBlended = (scene, camera) => {
|
|
411
449
|
if (scene.hasOpaque) {
|
|
412
450
|
renderBlendedOpaque(scene, camera, null);
|
|
@@ -416,7 +454,6 @@ var Renderer;
|
|
|
416
454
|
}
|
|
417
455
|
};
|
|
418
456
|
const renderBlendedOpaque = (group, camera, depthTexture) => {
|
|
419
|
-
var _a, _b;
|
|
420
457
|
if (isTimingMode)
|
|
421
458
|
ctx.timer.mark('Renderer.renderBlendedOpaque');
|
|
422
459
|
state.disable(gl.BLEND);
|
|
@@ -426,12 +463,9 @@ var Renderer;
|
|
|
426
463
|
const { renderables } = group;
|
|
427
464
|
for (let i = 0, il = renderables.length; i < il; ++i) {
|
|
428
465
|
const r = renderables[i];
|
|
429
|
-
if (r
|
|
466
|
+
if (checkOpaque(r)) {
|
|
430
467
|
renderObject(r, 'color', 0 /* Flag.None */);
|
|
431
468
|
}
|
|
432
|
-
else if (((_a = r.values.uDoubleSided) === null || _a === void 0 ? void 0 : _a.ref.value) && ((_b = r.values.dTransparentBackfaces) === null || _b === void 0 ? void 0 : _b.ref.value) === 'opaque') {
|
|
433
|
-
renderObject(r, 'color', 2 /* Flag.BlendedBack */);
|
|
434
|
-
}
|
|
435
469
|
}
|
|
436
470
|
if (isTimingMode)
|
|
437
471
|
ctx.timer.markEnd('Renderer.renderBlendedOpaque');
|
|
@@ -440,9 +474,6 @@ var Renderer;
|
|
|
440
474
|
var _a, _b;
|
|
441
475
|
if (isTimingMode)
|
|
442
476
|
ctx.timer.mark('Renderer.renderBlendedTransparent');
|
|
443
|
-
state.enable(gl.DEPTH_TEST);
|
|
444
|
-
updateInternal(group, camera, depthTexture, 2 /* Mask.Transparent */, false);
|
|
445
|
-
const { renderables } = group;
|
|
446
477
|
if (transparentBackground) {
|
|
447
478
|
state.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
|
|
448
479
|
}
|
|
@@ -450,17 +481,13 @@ var Renderer;
|
|
|
450
481
|
state.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
|
|
451
482
|
}
|
|
452
483
|
state.enable(gl.BLEND);
|
|
453
|
-
state.
|
|
454
|
-
for (let i = 0, il = renderables.length; i < il; ++i) {
|
|
455
|
-
const r = renderables[i];
|
|
456
|
-
if (!r.state.opaque && r.state.writeDepth) {
|
|
457
|
-
renderObject(r, 'color', 0 /* Flag.None */);
|
|
458
|
-
}
|
|
459
|
-
}
|
|
484
|
+
state.enable(gl.DEPTH_TEST);
|
|
460
485
|
state.depthMask(false);
|
|
486
|
+
updateInternal(group, camera, depthTexture, 2 /* Mask.Transparent */, false);
|
|
487
|
+
const { renderables } = group;
|
|
461
488
|
for (let i = 0, il = renderables.length; i < il; ++i) {
|
|
462
489
|
const r = renderables[i];
|
|
463
|
-
if ((
|
|
490
|
+
if (checkTransparent(r)) {
|
|
464
491
|
if ((_a = r.values.uDoubleSided) === null || _a === void 0 ? void 0 : _a.ref.value) {
|
|
465
492
|
// render frontfaces and backfaces separately to avoid artefacts
|
|
466
493
|
if (((_b = r.values.dTransparentBackfaces) === null || _b === void 0 ? void 0 : _b.ref.value) !== 'opaque') {
|
|
@@ -481,6 +508,7 @@ var Renderer;
|
|
|
481
508
|
ctx.timer.mark('Renderer.renderBlendedVolume');
|
|
482
509
|
state.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
|
|
483
510
|
state.enable(gl.BLEND);
|
|
511
|
+
state.depthMask(false);
|
|
484
512
|
updateInternal(group, camera, depthTexture, 2 /* Mask.Transparent */, false);
|
|
485
513
|
const { renderables } = group;
|
|
486
514
|
for (let i = 0, il = renderables.length; i < il; ++i) {
|
|
@@ -493,7 +521,6 @@ var Renderer;
|
|
|
493
521
|
ctx.timer.markEnd('Renderer.renderBlendedVolume');
|
|
494
522
|
};
|
|
495
523
|
const renderWboitOpaque = (group, camera, depthTexture) => {
|
|
496
|
-
var _a, _b, _c, _d;
|
|
497
524
|
if (isTimingMode)
|
|
498
525
|
ctx.timer.mark('Renderer.renderWboitOpaque');
|
|
499
526
|
state.disable(gl.BLEND);
|
|
@@ -503,11 +530,7 @@ var Renderer;
|
|
|
503
530
|
const { renderables } = group;
|
|
504
531
|
for (let i = 0, il = renderables.length; i < il; ++i) {
|
|
505
532
|
const r = renderables[i];
|
|
506
|
-
|
|
507
|
-
// uAlpha is updated in "render" so we need to recompute it here
|
|
508
|
-
const alpha = clamp(r.values.alpha.ref.value * r.state.alphaFactor, 0, 1);
|
|
509
|
-
const xrayShaded = ((_a = r.values.dXrayShaded) === null || _a === void 0 ? void 0 : _a.ref.value) === 'on' || ((_b = r.values.dXrayShaded) === null || _b === void 0 ? void 0 : _b.ref.value) === 'inverted';
|
|
510
|
-
if ((alpha === 1 && r.values.transparencyAverage.ref.value !== 1 && r.values.dGeometryType.ref.value !== 'directVolume' && ((_c = r.values.dPointStyle) === null || _c === void 0 ? void 0 : _c.ref.value) !== 'fuzzy' && !xrayShaded) || ((_d = r.values.dTransparentBackfaces) === null || _d === void 0 ? void 0 : _d.ref.value) === 'opaque') {
|
|
533
|
+
if (checkOpaque(r)) {
|
|
511
534
|
renderObject(r, 'color', 0 /* Flag.None */);
|
|
512
535
|
}
|
|
513
536
|
}
|
|
@@ -515,18 +538,13 @@ var Renderer;
|
|
|
515
538
|
ctx.timer.markEnd('Renderer.renderWboitOpaque');
|
|
516
539
|
};
|
|
517
540
|
const renderWboitTransparent = (group, camera, depthTexture) => {
|
|
518
|
-
var _a, _b, _c;
|
|
519
541
|
if (isTimingMode)
|
|
520
542
|
ctx.timer.mark('Renderer.renderWboitTransparent');
|
|
521
543
|
updateInternal(group, camera, depthTexture, 2 /* Mask.Transparent */, false);
|
|
522
544
|
const { renderables } = group;
|
|
523
545
|
for (let i = 0, il = renderables.length; i < il; ++i) {
|
|
524
546
|
const r = renderables[i];
|
|
525
|
-
|
|
526
|
-
// uAlpha is updated in "render" so we need to recompute it here
|
|
527
|
-
const alpha = clamp(r.values.alpha.ref.value * r.state.alphaFactor, 0, 1);
|
|
528
|
-
const xrayShaded = ((_a = r.values.dXrayShaded) === null || _a === void 0 ? void 0 : _a.ref.value) === 'on' || ((_b = r.values.dXrayShaded) === null || _b === void 0 ? void 0 : _b.ref.value) === 'inverted';
|
|
529
|
-
if ((alpha < 1 && alpha !== 0) || r.values.transparencyAverage.ref.value > 0 || r.values.dGeometryType.ref.value === 'directVolume' || ((_c = r.values.dPointStyle) === null || _c === void 0 ? void 0 : _c.ref.value) === 'fuzzy' || r.values.dGeometryType.ref.value === 'text' || xrayShaded) {
|
|
547
|
+
if (checkTransparent(r)) {
|
|
530
548
|
renderObject(r, 'color', 0 /* Flag.None */);
|
|
531
549
|
}
|
|
532
550
|
}
|
|
@@ -534,7 +552,6 @@ var Renderer;
|
|
|
534
552
|
ctx.timer.markEnd('Renderer.renderWboitTransparent');
|
|
535
553
|
};
|
|
536
554
|
const renderDpoitOpaque = (group, camera, depthTexture) => {
|
|
537
|
-
var _a, _b, _c, _d;
|
|
538
555
|
if (isTimingMode)
|
|
539
556
|
ctx.timer.mark('Renderer.renderDpoitOpaque');
|
|
540
557
|
state.disable(gl.BLEND);
|
|
@@ -544,11 +561,7 @@ var Renderer;
|
|
|
544
561
|
const { renderables } = group;
|
|
545
562
|
for (let i = 0, il = renderables.length; i < il; ++i) {
|
|
546
563
|
const r = renderables[i];
|
|
547
|
-
|
|
548
|
-
// uAlpha is updated in "render" so we need to recompute it here
|
|
549
|
-
const alpha = clamp(r.values.alpha.ref.value * r.state.alphaFactor, 0, 1);
|
|
550
|
-
const xrayShaded = ((_a = r.values.dXrayShaded) === null || _a === void 0 ? void 0 : _a.ref.value) === 'on' || ((_b = r.values.dXrayShaded) === null || _b === void 0 ? void 0 : _b.ref.value) === 'inverted';
|
|
551
|
-
if ((alpha === 1 && r.values.transparencyAverage.ref.value !== 1 && ((_c = r.values.dPointStyle) === null || _c === void 0 ? void 0 : _c.ref.value) !== 'fuzzy' && !xrayShaded) || ((_d = r.values.dTransparentBackfaces) === null || _d === void 0 ? void 0 : _d.ref.value) === 'opaque') {
|
|
564
|
+
if (checkOpaque(r)) {
|
|
552
565
|
renderObject(r, 'color', 0 /* Flag.None */);
|
|
553
566
|
}
|
|
554
567
|
}
|
|
@@ -556,7 +569,6 @@ var Renderer;
|
|
|
556
569
|
ctx.timer.markEnd('Renderer.renderDpoitOpaque');
|
|
557
570
|
};
|
|
558
571
|
const renderDpoitTransparent = (group, camera, depthTexture, dpoitTextures) => {
|
|
559
|
-
var _a, _b, _c;
|
|
560
572
|
if (isTimingMode)
|
|
561
573
|
ctx.timer.mark('Renderer.renderDpoitTransparent');
|
|
562
574
|
state.enable(gl.BLEND);
|
|
@@ -567,11 +579,7 @@ var Renderer;
|
|
|
567
579
|
const { renderables } = group;
|
|
568
580
|
for (let i = 0, il = renderables.length; i < il; ++i) {
|
|
569
581
|
const r = renderables[i];
|
|
570
|
-
|
|
571
|
-
// uAlpha is updated in "render" so we need to recompute it here
|
|
572
|
-
const alpha = clamp(r.values.alpha.ref.value * r.state.alphaFactor, 0, 1);
|
|
573
|
-
const xrayShaded = ((_a = r.values.dXrayShaded) === null || _a === void 0 ? void 0 : _a.ref.value) === 'on' || ((_b = r.values.dXrayShaded) === null || _b === void 0 ? void 0 : _b.ref.value) === 'inverted';
|
|
574
|
-
if ((alpha < 1 && alpha !== 0) || r.values.transparencyAverage.ref.value > 0 || ((_c = r.values.dPointStyle) === null || _c === void 0 ? void 0 : _c.ref.value) === 'fuzzy' || r.values.dGeometryType.ref.value === 'text' || xrayShaded) {
|
|
582
|
+
if (checkTransparent(r)) {
|
|
575
583
|
renderObject(r, 'color', 0 /* Flag.None */);
|
|
576
584
|
}
|
|
577
585
|
}
|
|
@@ -631,6 +639,7 @@ var Renderer;
|
|
|
631
639
|
renderDepthTransparent,
|
|
632
640
|
renderMarkingDepth,
|
|
633
641
|
renderMarkingMask,
|
|
642
|
+
renderEmissive,
|
|
634
643
|
renderBlended,
|
|
635
644
|
renderBlendedOpaque,
|
|
636
645
|
renderBlendedTransparent,
|
package/lib/mol-gl/scene.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c) 2018-
|
|
2
|
+
* Copyright (c) 2018-2024 mol* contributors, licensed under MIT, See LICENSE file for more info.
|
|
3
3
|
*
|
|
4
4
|
* @author Alexander Rose <alexander.rose@weirdbyte.de>
|
|
5
5
|
* @author David Sehnal <david.sehnal@gmail.com>
|
|
@@ -31,6 +31,8 @@ interface Scene extends Object3D {
|
|
|
31
31
|
forEach: (callbackFn: (value: GraphicsRenderable, key: GraphicsRenderObject) => void) => void;
|
|
32
32
|
/** Marker average of primitive renderables */
|
|
33
33
|
readonly markerAverage: number;
|
|
34
|
+
/** Emissive average of primitive renderables */
|
|
35
|
+
readonly emissiveAverage: number;
|
|
34
36
|
/** Opacity average of primitive renderables */
|
|
35
37
|
readonly opacityAverage: number;
|
|
36
38
|
/** Is `true` if any primitive renderable (possibly) has any opaque part */
|
package/lib/mol-gl/scene.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c) 2018-
|
|
2
|
+
* Copyright (c) 2018-2024 mol* contributors, licensed under MIT, See LICENSE file for more info.
|
|
3
3
|
*
|
|
4
4
|
* @author Alexander Rose <alexander.rose@weirdbyte.de>
|
|
5
5
|
* @author David Sehnal <david.sehnal@gmail.com>
|
|
@@ -64,9 +64,11 @@ var Scene;
|
|
|
64
64
|
let boundingSphereDirty = true;
|
|
65
65
|
let boundingSphereVisibleDirty = true;
|
|
66
66
|
let markerAverageDirty = true;
|
|
67
|
+
let emissiveAverageDirty = true;
|
|
67
68
|
let opacityAverageDirty = true;
|
|
68
69
|
let hasOpaqueDirty = true;
|
|
69
70
|
let markerAverage = 0;
|
|
71
|
+
let emissiveAverage = 0;
|
|
70
72
|
let opacityAverage = 0;
|
|
71
73
|
let hasOpaque = false;
|
|
72
74
|
const object3d = Object3D.create();
|
|
@@ -123,6 +125,7 @@ var Scene;
|
|
|
123
125
|
}
|
|
124
126
|
renderables.sort(renderableSort);
|
|
125
127
|
markerAverageDirty = true;
|
|
128
|
+
emissiveAverageDirty = true;
|
|
126
129
|
opacityAverageDirty = true;
|
|
127
130
|
hasOpaqueDirty = true;
|
|
128
131
|
return true;
|
|
@@ -146,6 +149,7 @@ var Scene;
|
|
|
146
149
|
if (newVisibleHash !== visibleHash) {
|
|
147
150
|
boundingSphereVisibleDirty = true;
|
|
148
151
|
markerAverageDirty = true;
|
|
152
|
+
emissiveAverageDirty = true;
|
|
149
153
|
opacityAverageDirty = true;
|
|
150
154
|
hasOpaqueDirty = true;
|
|
151
155
|
visibleHash = newVisibleHash;
|
|
@@ -168,6 +172,19 @@ var Scene;
|
|
|
168
172
|
}
|
|
169
173
|
return count > 0 ? markerAverage / count : 0;
|
|
170
174
|
}
|
|
175
|
+
function calculateEmissiveAverage() {
|
|
176
|
+
if (primitives.length === 0)
|
|
177
|
+
return 0;
|
|
178
|
+
let count = 0;
|
|
179
|
+
let emissiveAverage = 0;
|
|
180
|
+
for (let i = 0, il = primitives.length; i < il; ++i) {
|
|
181
|
+
if (!primitives[i].state.visible)
|
|
182
|
+
continue;
|
|
183
|
+
emissiveAverage += primitives[i].values.emissiveAverage.ref.value + primitives[i].values.uEmissive.ref.value;
|
|
184
|
+
count += 1;
|
|
185
|
+
}
|
|
186
|
+
return count > 0 ? emissiveAverage / count : 0;
|
|
187
|
+
}
|
|
171
188
|
function calculateOpacityAverage() {
|
|
172
189
|
var _a, _b;
|
|
173
190
|
if (primitives.length === 0)
|
|
@@ -239,6 +256,7 @@ var Scene;
|
|
|
239
256
|
syncVisibility();
|
|
240
257
|
}
|
|
241
258
|
markerAverageDirty = true;
|
|
259
|
+
emissiveAverageDirty = true;
|
|
242
260
|
opacityAverageDirty = true;
|
|
243
261
|
hasOpaqueDirty = true;
|
|
244
262
|
},
|
|
@@ -288,6 +306,13 @@ var Scene;
|
|
|
288
306
|
}
|
|
289
307
|
return markerAverage;
|
|
290
308
|
},
|
|
309
|
+
get emissiveAverage() {
|
|
310
|
+
if (emissiveAverageDirty) {
|
|
311
|
+
emissiveAverage = calculateEmissiveAverage();
|
|
312
|
+
emissiveAverageDirty = false;
|
|
313
|
+
}
|
|
314
|
+
return emissiveAverage;
|
|
315
|
+
},
|
|
291
316
|
get opacityAverage() {
|
|
292
317
|
if (opacityAverageDirty) {
|
|
293
318
|
opacityAverage = calculateOpacityAverage();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const blur_frag = "\nprecision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\nuniform sampler2D tInput;\nuniform vec2 uTexSizeInv;\n\nuniform vec2 uDirection;\nuniform float uGaussianCoefficients[dKernelRadius];\n\nvoid main(void) {\n vec2 coords = gl_FragCoord.xy * uTexSizeInv;\n float weightSum = uGaussianCoefficients[0];\n vec4 diffuseSum = texture2D(tInput, coords) * weightSum;\n\n for(int i = 1; i < dKernelRadius; ++i) {\n float x = float(i);\n float w = uGaussianCoefficients[i];\n vec2 offset = uDirection * uTexSizeInv * x;\n vec4 sample1 = texture2D(tInput, coords + offset);\n vec4 sample2 = texture2D(tInput, coords - offset);\n diffuseSum += (sample1 + sample2) * w;\n weightSum += 2.0 * w;\n }\n\n gl_FragColor = diffuseSum / weightSum;\n}\n";
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export const blur_frag = `
|
|
2
|
+
precision highp float;
|
|
3
|
+
precision highp int;
|
|
4
|
+
precision highp sampler2D;
|
|
5
|
+
|
|
6
|
+
uniform sampler2D tInput;
|
|
7
|
+
uniform vec2 uTexSizeInv;
|
|
8
|
+
|
|
9
|
+
uniform vec2 uDirection;
|
|
10
|
+
uniform float uGaussianCoefficients[dKernelRadius];
|
|
11
|
+
|
|
12
|
+
void main(void) {
|
|
13
|
+
vec2 coords = gl_FragCoord.xy * uTexSizeInv;
|
|
14
|
+
float weightSum = uGaussianCoefficients[0];
|
|
15
|
+
vec4 diffuseSum = texture2D(tInput, coords) * weightSum;
|
|
16
|
+
|
|
17
|
+
for(int i = 1; i < dKernelRadius; ++i) {
|
|
18
|
+
float x = float(i);
|
|
19
|
+
float w = uGaussianCoefficients[i];
|
|
20
|
+
vec2 offset = uDirection * uTexSizeInv * x;
|
|
21
|
+
vec4 sample1 = texture2D(tInput, coords + offset);
|
|
22
|
+
vec4 sample2 = texture2D(tInput, coords - offset);
|
|
23
|
+
diffuseSum += (sample1 + sample2) * w;
|
|
24
|
+
weightSum += 2.0 * w;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
gl_FragColor = diffuseSum / weightSum;
|
|
28
|
+
}
|
|
29
|
+
`;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const composite_frag = "\nprecision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\nuniform vec2 uTexSizeInv;\n\nuniform sampler2D tBlur1;\nuniform sampler2D tBlur2;\nuniform sampler2D tBlur3;\nuniform sampler2D tBlur4;\nuniform sampler2D tBlur5;\nuniform float uBloomStrength;\nuniform float uBloomRadius;\nuniform float uBloomFactors[5];\nuniform vec3 uBloomTints[5];\n\nfloat lerpBloomFactor(const in float factor) {\n float mirrorFactor = 1.2 - factor;\n return mix(factor, mirrorFactor, uBloomRadius);\n}\n\nvoid main(void) {\n vec2 coords = gl_FragCoord.xy * uTexSizeInv;\n\n gl_FragColor = uBloomStrength * (\n lerpBloomFactor(uBloomFactors[0]) * vec4(uBloomTints[0], 1.0) * texture2D(tBlur1, coords) +\n lerpBloomFactor(uBloomFactors[1]) * vec4(uBloomTints[1], 1.0) * texture2D(tBlur2, coords) +\n lerpBloomFactor(uBloomFactors[2]) * vec4(uBloomTints[2], 1.0) * texture2D(tBlur3, coords) +\n lerpBloomFactor(uBloomFactors[3]) * vec4(uBloomTints[3], 1.0) * texture2D(tBlur4, coords) +\n lerpBloomFactor(uBloomFactors[4]) * vec4(uBloomTints[4], 1.0) * texture2D(tBlur5, coords)\n );\n}\n";
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export const composite_frag = `
|
|
2
|
+
precision highp float;
|
|
3
|
+
precision highp int;
|
|
4
|
+
precision highp sampler2D;
|
|
5
|
+
|
|
6
|
+
uniform vec2 uTexSizeInv;
|
|
7
|
+
|
|
8
|
+
uniform sampler2D tBlur1;
|
|
9
|
+
uniform sampler2D tBlur2;
|
|
10
|
+
uniform sampler2D tBlur3;
|
|
11
|
+
uniform sampler2D tBlur4;
|
|
12
|
+
uniform sampler2D tBlur5;
|
|
13
|
+
uniform float uBloomStrength;
|
|
14
|
+
uniform float uBloomRadius;
|
|
15
|
+
uniform float uBloomFactors[5];
|
|
16
|
+
uniform vec3 uBloomTints[5];
|
|
17
|
+
|
|
18
|
+
float lerpBloomFactor(const in float factor) {
|
|
19
|
+
float mirrorFactor = 1.2 - factor;
|
|
20
|
+
return mix(factor, mirrorFactor, uBloomRadius);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
void main(void) {
|
|
24
|
+
vec2 coords = gl_FragCoord.xy * uTexSizeInv;
|
|
25
|
+
|
|
26
|
+
gl_FragColor = uBloomStrength * (
|
|
27
|
+
lerpBloomFactor(uBloomFactors[0]) * vec4(uBloomTints[0], 1.0) * texture2D(tBlur1, coords) +
|
|
28
|
+
lerpBloomFactor(uBloomFactors[1]) * vec4(uBloomTints[1], 1.0) * texture2D(tBlur2, coords) +
|
|
29
|
+
lerpBloomFactor(uBloomFactors[2]) * vec4(uBloomTints[2], 1.0) * texture2D(tBlur3, coords) +
|
|
30
|
+
lerpBloomFactor(uBloomFactors[3]) * vec4(uBloomTints[3], 1.0) * texture2D(tBlur4, coords) +
|
|
31
|
+
lerpBloomFactor(uBloomFactors[4]) * vec4(uBloomTints[4], 1.0) * texture2D(tBlur5, coords)
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
`;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const luminosity_frag = "\nprecision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\nuniform sampler2D tColor;\nuniform sampler2D tEmissive;\nuniform sampler2D tDepth;\nuniform vec2 uTexSizeInv;\n\nuniform vec3 uDefaultColor;\nuniform float uDefaultOpacity;\nuniform float uLuminosityThreshold;\nuniform float uSmoothWidth;\n\n#include common\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\nbool isBackground(const in float depth) {\n return depth == 1.0;\n}\n\nvoid main(void) {\n vec2 coords = gl_FragCoord.xy * uTexSizeInv;\n vec4 texel = texture2D(tColor, coords);\n float emissive = texture2D(tEmissive, coords).a;\n float depth = getDepth(coords);\n\n if (isBackground(depth)) {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);\n return;\n }\n\n vec4 outputColor = vec4(uDefaultColor.rgb, uDefaultOpacity);\n\n #if defined(dMode_luminosity)\n vec3 luma = vec3(0.299, 0.587, 0.114);\n float v = dot(texel.xyz, luma);\n float alpha = smoothstep(uLuminosityThreshold, uLuminosityThreshold + uSmoothWidth, v);\n\n gl_FragColor = mix(outputColor, texel, alpha);\n #elif defined(dMode_emissive)\n gl_FragColor = mix(outputColor, texel, emissive);\n #endif\n}\n";
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export const luminosity_frag = `
|
|
2
|
+
precision highp float;
|
|
3
|
+
precision highp int;
|
|
4
|
+
precision highp sampler2D;
|
|
5
|
+
|
|
6
|
+
uniform sampler2D tColor;
|
|
7
|
+
uniform sampler2D tEmissive;
|
|
8
|
+
uniform sampler2D tDepth;
|
|
9
|
+
uniform vec2 uTexSizeInv;
|
|
10
|
+
|
|
11
|
+
uniform vec3 uDefaultColor;
|
|
12
|
+
uniform float uDefaultOpacity;
|
|
13
|
+
uniform float uLuminosityThreshold;
|
|
14
|
+
uniform float uSmoothWidth;
|
|
15
|
+
|
|
16
|
+
#include common
|
|
17
|
+
|
|
18
|
+
float getDepth(const in vec2 coords) {
|
|
19
|
+
#ifdef depthTextureSupport
|
|
20
|
+
return texture2D(tDepth, coords).r;
|
|
21
|
+
#else
|
|
22
|
+
return unpackRGBAToDepth(texture2D(tDepth, coords));
|
|
23
|
+
#endif
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
bool isBackground(const in float depth) {
|
|
27
|
+
return depth == 1.0;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
void main(void) {
|
|
31
|
+
vec2 coords = gl_FragCoord.xy * uTexSizeInv;
|
|
32
|
+
vec4 texel = texture2D(tColor, coords);
|
|
33
|
+
float emissive = texture2D(tEmissive, coords).a;
|
|
34
|
+
float depth = getDepth(coords);
|
|
35
|
+
|
|
36
|
+
if (isBackground(depth)) {
|
|
37
|
+
gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
vec4 outputColor = vec4(uDefaultColor.rgb, uDefaultOpacity);
|
|
42
|
+
|
|
43
|
+
#if defined(dMode_luminosity)
|
|
44
|
+
vec3 luma = vec3(0.299, 0.587, 0.114);
|
|
45
|
+
float v = dot(texel.xyz, luma);
|
|
46
|
+
float alpha = smoothstep(uLuminosityThreshold, uLuminosityThreshold + uSmoothWidth, v);
|
|
47
|
+
|
|
48
|
+
gl_FragColor = mix(outputColor, texel, alpha);
|
|
49
|
+
#elif defined(dMode_emissive)
|
|
50
|
+
gl_FragColor = mix(outputColor, texel, emissive);
|
|
51
|
+
#endif
|
|
52
|
+
}
|
|
53
|
+
`;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c) 2017-
|
|
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
5
|
*
|
|
6
6
|
* adapted from three.js (https://github.com/mrdoob/three.js/)
|
|
7
7
|
* which under the MIT License, Copyright © 2010-2021 three.js authors
|
|
8
8
|
*/
|
|
9
|
-
export declare const apply_light_color = "\n#
|
|
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 ReflectedLight reflectedLight = ReflectedLight(vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0));\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 GeometricContext geometry;\n geometry.position = -vViewPosition;\n geometry.normal = normal;\n geometry.viewDir = normalize(vViewPosition);\n\n IncidentLight directLight;\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 vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular;\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";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c) 2017-
|
|
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
5
|
*
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* which under the MIT License, Copyright © 2010-2021 three.js authors
|
|
8
8
|
*/
|
|
9
9
|
export const apply_light_color = `
|
|
10
|
-
#
|
|
10
|
+
#if defined(dIgnoreLight)
|
|
11
11
|
#ifdef bumpEnabled
|
|
12
12
|
if (uBumpFrequency > 0.0 && uBumpAmplitude > 0.0 && bumpiness > 0.0) {
|
|
13
13
|
material.rgb += fbm(vModelPosition * uBumpFrequency) * uBumpAmplitude * bumpiness;
|
|
@@ -15,6 +15,10 @@ export const apply_light_color = `
|
|
|
15
15
|
}
|
|
16
16
|
#endif
|
|
17
17
|
|
|
18
|
+
#if defined(dRenderVariant_color)
|
|
19
|
+
material.rgb += material.rgb * emissive;
|
|
20
|
+
#endif
|
|
21
|
+
|
|
18
22
|
gl_FragColor = material;
|
|
19
23
|
#else
|
|
20
24
|
#ifdef bumpEnabled
|
|
@@ -65,6 +69,10 @@ export const apply_light_color = `
|
|
|
65
69
|
vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular;
|
|
66
70
|
outgoingLight = clamp(outgoingLight, 0.01, 0.99); // prevents black artifacts on specular highlight with transparent background
|
|
67
71
|
|
|
72
|
+
#if defined(dRenderVariant_color)
|
|
73
|
+
outgoingLight += color.rgb * emissive;
|
|
74
|
+
#endif
|
|
75
|
+
|
|
68
76
|
gl_FragColor = vec4(outgoingLight, color.a);
|
|
69
77
|
#endif
|
|
70
78
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const assign_color_varying = "\n#if defined(dRenderVariant_color)\n #if defined(dColorType_attribute)\n vColor.rgb = aColor;\n #elif defined(dColorType_instance)\n vColor.rgb = readFromTexture(tColor, aInstance, uColorTexDim).rgb;\n #elif defined(dColorType_group)\n #if defined(dDualColor)\n vec4 color2;\n if (aColorMode == 2.0) {\n vColor.rgb = readFromTexture(tColor, group, uColorTexDim).rgb;\n } else {\n vColor.rgb = readFromTexture(tColor, group * 2.0, uColorTexDim).rgb;\n color2.rgb = readFromTexture(tColor, group * 2.0 + 1.0, uColorTexDim).rgb;\n }\n #else\n vColor.rgb = readFromTexture(tColor, group, uColorTexDim).rgb;\n #endif\n #elif defined(dColorType_groupInstance)\n #if defined(dDualColor)\n vec4 color2;\n if (aColorMode == 2.0) {\n vColor.rgb = readFromTexture(tColor, aInstance * float(uGroupCount) + group, uColorTexDim).rgb;\n } else {\n vColor.rgb = readFromTexture(tColor, (aInstance * float(uGroupCount) + group) * 2.0, uColorTexDim).rgb;\n color2.rgb = readFromTexture(tColor, (aInstance * float(uGroupCount) + group) * 2.0 + 1.0, uColorTexDim).rgb;\n }\n #else\n vColor.rgb = readFromTexture(tColor, aInstance * float(uGroupCount) + group, uColorTexDim).rgb;\n #endif\n #elif defined(dColorType_vertex)\n vColor.rgb = readFromTexture(tColor, VertexID, uColorTexDim).rgb;\n #elif defined(dColorType_vertexInstance)\n vColor.rgb = readFromTexture(tColor, int(aInstance) * uVertexCount + VertexID, uColorTexDim).rgb;\n #elif defined(dColorType_volume)\n vec3 cgridPos = (uColorGridTransform.w * (position - uColorGridTransform.xyz)) / uColorGridDim;\n vColor.rgb = texture3dFrom2dLinear(tColorGrid, cgridPos, uColorGridDim, uColorTexDim).rgb;\n #elif defined(dColorType_volumeInstance)\n vec3 cgridPos = (uColorGridTransform.w * (vModelPosition - uColorGridTransform.xyz)) / uColorGridDim;\n vColor.rgb = texture3dFrom2dLinear(tColorGrid, cgridPos, uColorGridDim, uColorTexDim).rgb;\n #endif\n\n #ifdef dUsePalette\n vPaletteV = ((vColor.r * 256.0 * 256.0 * 255.0 + vColor.g * 256.0 * 255.0 + vColor.b * 255.0) - 1.0) / 16777215.0;\n #endif\n\n #ifdef dOverpaint\n #if defined(dOverpaintType_instance)\n vOverpaint = readFromTexture(tOverpaint, aInstance, uOverpaintTexDim);\n #elif defined(dOverpaintType_groupInstance)\n vOverpaint = readFromTexture(tOverpaint, aInstance * float(uGroupCount) + group, uOverpaintTexDim);\n #elif defined(dOverpaintType_vertexInstance)\n vOverpaint = readFromTexture(tOverpaint, int(aInstance) * uVertexCount + VertexID, uOverpaintTexDim);\n #elif defined(dOverpaintType_volumeInstance)\n vec3 ogridPos = (uOverpaintGridTransform.w * (vModelPosition - uOverpaintGridTransform.xyz)) / uOverpaintGridDim;\n vOverpaint = texture3dFrom2dLinear(tOverpaintGrid, ogridPos, uOverpaintGridDim, uOverpaintTexDim);\n #endif\n\n // pre-mix to avoid darkening due to empty overpaint\n #ifdef dColorType_uniform\n vOverpaint.rgb = mix(uColor.rgb, vOverpaint.rgb, vOverpaint.a);\n #else\n vOverpaint.rgb = mix(vColor.rgb, vOverpaint.rgb, vOverpaint.a);\n #endif\n vOverpaint *= uOverpaintStrength;\n #endif\n\n #ifdef dSubstance\n #if defined(dSubstanceType_instance)\n vSubstance = readFromTexture(tSubstance, aInstance, uSubstanceTexDim);\n #elif defined(dSubstanceType_groupInstance)\n vSubstance = readFromTexture(tSubstance, aInstance * float(uGroupCount) + group, uSubstanceTexDim);\n #elif defined(dSubstanceType_vertexInstance)\n vSubstance = readFromTexture(tSubstance, int(aInstance) * uVertexCount + VertexID, uSubstanceTexDim);\n #elif defined(dSubstanceType_volumeInstance)\n vec3 sgridPos = (uSubstanceGridTransform.w * (vModelPosition - uSubstanceGridTransform.xyz)) / uSubstanceGridDim;\n vSubstance = texture3dFrom2dLinear(tSubstanceGrid, sgridPos, uSubstanceGridDim, uSubstanceTexDim);\n #endif\n\n // pre-mix to avoid artifacts due to empty substance\n vSubstance.rgb = mix(vec3(uMetalness, uRoughness, uBumpiness), vSubstance.rgb, vSubstance.a);\n vSubstance *= uSubstanceStrength;\n #endif\n#elif defined(dRenderVariant_pick)\n #ifdef requiredDrawBuffers\n vObject = vec4(packIntToRGB(float(uObjectId)), 1.0);\n vInstance = vec4(packIntToRGB(aInstance), 1.0);\n vGroup = vec4(packIntToRGB(group), 1.0);\n #else\n if (uPickType == 1) {\n vColor = vec4(packIntToRGB(float(uObjectId)), 1.0);\n } else if (uPickType == 2) {\n vColor = vec4(packIntToRGB(aInstance), 1.0);\n } else {\n vColor = vec4(packIntToRGB(group), 1.0);\n }\n #endif\n#endif\n\n#ifdef dTransparency\n #if defined(dTransparencyType_instance)\n vTransparency = readFromTexture(tTransparency, aInstance, uTransparencyTexDim).a;\n #elif defined(dTransparencyType_groupInstance)\n vTransparency = readFromTexture(tTransparency, aInstance * float(uGroupCount) + group, uTransparencyTexDim).a;\n #elif defined(dTransparencyType_vertexInstance)\n vTransparency = readFromTexture(tTransparency, int(aInstance) * uVertexCount + VertexID, uTransparencyTexDim).a;\n #elif defined(dTransparencyType_volumeInstance)\n vec3 tgridPos = (uTransparencyGridTransform.w * (vModelPosition - uTransparencyGridTransform.xyz)) / uTransparencyGridDim;\n vTransparency = texture3dFrom2dLinear(tTransparencyGrid, tgridPos, uTransparencyGridDim, uTransparencyTexDim).a;\n #endif\n vTransparency *= uTransparencyStrength;\n#endif\n";
|
|
1
|
+
export declare const assign_color_varying = "\n#if defined(dRenderVariant_color)\n #if defined(dColorType_attribute)\n vColor.rgb = aColor;\n #elif defined(dColorType_instance)\n vColor.rgb = readFromTexture(tColor, aInstance, uColorTexDim).rgb;\n #elif defined(dColorType_group)\n #if defined(dDualColor)\n vec4 color2;\n if (aColorMode == 2.0) {\n vColor.rgb = readFromTexture(tColor, group, uColorTexDim).rgb;\n } else {\n vColor.rgb = readFromTexture(tColor, group * 2.0, uColorTexDim).rgb;\n color2.rgb = readFromTexture(tColor, group * 2.0 + 1.0, uColorTexDim).rgb;\n }\n #else\n vColor.rgb = readFromTexture(tColor, group, uColorTexDim).rgb;\n #endif\n #elif defined(dColorType_groupInstance)\n #if defined(dDualColor)\n vec4 color2;\n if (aColorMode == 2.0) {\n vColor.rgb = readFromTexture(tColor, aInstance * float(uGroupCount) + group, uColorTexDim).rgb;\n } else {\n vColor.rgb = readFromTexture(tColor, (aInstance * float(uGroupCount) + group) * 2.0, uColorTexDim).rgb;\n color2.rgb = readFromTexture(tColor, (aInstance * float(uGroupCount) + group) * 2.0 + 1.0, uColorTexDim).rgb;\n }\n #else\n vColor.rgb = readFromTexture(tColor, aInstance * float(uGroupCount) + group, uColorTexDim).rgb;\n #endif\n #elif defined(dColorType_vertex)\n vColor.rgb = readFromTexture(tColor, VertexID, uColorTexDim).rgb;\n #elif defined(dColorType_vertexInstance)\n vColor.rgb = readFromTexture(tColor, int(aInstance) * uVertexCount + VertexID, uColorTexDim).rgb;\n #elif defined(dColorType_volume)\n vec3 cgridPos = (uColorGridTransform.w * (position - uColorGridTransform.xyz)) / uColorGridDim;\n vColor.rgb = texture3dFrom2dLinear(tColorGrid, cgridPos, uColorGridDim, uColorTexDim).rgb;\n #elif defined(dColorType_volumeInstance)\n vec3 cgridPos = (uColorGridTransform.w * (vModelPosition - uColorGridTransform.xyz)) / uColorGridDim;\n vColor.rgb = texture3dFrom2dLinear(tColorGrid, cgridPos, uColorGridDim, uColorTexDim).rgb;\n #endif\n\n #ifdef dUsePalette\n vPaletteV = ((vColor.r * 256.0 * 256.0 * 255.0 + vColor.g * 256.0 * 255.0 + vColor.b * 255.0) - 1.0) / 16777215.0;\n #endif\n\n #ifdef dOverpaint\n #if defined(dOverpaintType_instance)\n vOverpaint = readFromTexture(tOverpaint, aInstance, uOverpaintTexDim);\n #elif defined(dOverpaintType_groupInstance)\n vOverpaint = readFromTexture(tOverpaint, aInstance * float(uGroupCount) + group, uOverpaintTexDim);\n #elif defined(dOverpaintType_vertexInstance)\n vOverpaint = readFromTexture(tOverpaint, int(aInstance) * uVertexCount + VertexID, uOverpaintTexDim);\n #elif defined(dOverpaintType_volumeInstance)\n vec3 ogridPos = (uOverpaintGridTransform.w * (vModelPosition - uOverpaintGridTransform.xyz)) / uOverpaintGridDim;\n vOverpaint = texture3dFrom2dLinear(tOverpaintGrid, ogridPos, uOverpaintGridDim, uOverpaintTexDim);\n #endif\n\n // pre-mix to avoid darkening due to empty overpaint\n #ifdef dColorType_uniform\n vOverpaint.rgb = mix(uColor.rgb, vOverpaint.rgb, vOverpaint.a);\n #else\n vOverpaint.rgb = mix(vColor.rgb, vOverpaint.rgb, vOverpaint.a);\n #endif\n vOverpaint *= uOverpaintStrength;\n #endif\n\n #ifdef dEmissive\n #if defined(dEmissiveType_instance)\n vEmissive = readFromTexture(tEmissive, aInstance, uEmissiveTexDim).a;\n #elif defined(dEmissiveType_groupInstance)\n vEmissive = readFromTexture(tEmissive, aInstance * float(uGroupCount) + group, uEmissiveTexDim).a;\n #elif defined(dEmissiveType_vertexInstance)\n vEmissive = readFromTexture(tEmissive, int(aInstance) * uVertexCount + VertexID, uEmissiveTexDim).a;\n #elif defined(dEmissiveType_volumeInstance)\n vec3 egridPos = (uEmissiveGridTransform.w * (vModelPosition - uEmissiveGridTransform.xyz)) / uEmissiveGridDim;\n vEmissive = texture3dFrom2dLinear(tEmissiveGrid, egridPos, uEmissiveGridDim, uEmissiveTexDim).a;\n #endif\n vEmissive *= uEmissiveStrength;\n #endif\n\n #ifdef dSubstance\n #if defined(dSubstanceType_instance)\n vSubstance = readFromTexture(tSubstance, aInstance, uSubstanceTexDim);\n #elif defined(dSubstanceType_groupInstance)\n vSubstance = readFromTexture(tSubstance, aInstance * float(uGroupCount) + group, uSubstanceTexDim);\n #elif defined(dSubstanceType_vertexInstance)\n vSubstance = readFromTexture(tSubstance, int(aInstance) * uVertexCount + VertexID, uSubstanceTexDim);\n #elif defined(dSubstanceType_volumeInstance)\n vec3 sgridPos = (uSubstanceGridTransform.w * (vModelPosition - uSubstanceGridTransform.xyz)) / uSubstanceGridDim;\n vSubstance = texture3dFrom2dLinear(tSubstanceGrid, sgridPos, uSubstanceGridDim, uSubstanceTexDim);\n #endif\n\n // pre-mix to avoid artifacts due to empty substance\n vSubstance.rgb = mix(vec3(uMetalness, uRoughness, uBumpiness), vSubstance.rgb, vSubstance.a);\n vSubstance *= uSubstanceStrength;\n #endif\n#elif defined(dRenderVariant_emissive)\n #ifdef dEmissive\n #if defined(dEmissiveType_instance)\n vEmissive = readFromTexture(tEmissive, aInstance, uEmissiveTexDim).a;\n #elif defined(dEmissiveType_groupInstance)\n vEmissive = readFromTexture(tEmissive, aInstance * float(uGroupCount) + group, uEmissiveTexDim).a;\n #elif defined(dEmissiveType_vertexInstance)\n vEmissive = readFromTexture(tEmissive, int(aInstance) * uVertexCount + VertexID, uEmissiveTexDim).a;\n #elif defined(dEmissiveType_volumeInstance)\n vec3 egridPos = (uEmissiveGridTransform.w * (vModelPosition - uEmissiveGridTransform.xyz)) / uEmissiveGridDim;\n vEmissive = texture3dFrom2dLinear(tEmissiveGrid, egridPos, uEmissiveGridDim, uEmissiveTexDim).a;\n #endif\n vEmissive *= uEmissiveStrength;\n #endif\n#elif defined(dRenderVariant_pick)\n #ifdef requiredDrawBuffers\n vObject = vec4(packIntToRGB(float(uObjectId)), 1.0);\n vInstance = vec4(packIntToRGB(aInstance), 1.0);\n vGroup = vec4(packIntToRGB(group), 1.0);\n #else\n if (uPickType == 1) {\n vColor = vec4(packIntToRGB(float(uObjectId)), 1.0);\n } else if (uPickType == 2) {\n vColor = vec4(packIntToRGB(aInstance), 1.0);\n } else {\n vColor = vec4(packIntToRGB(group), 1.0);\n }\n #endif\n#endif\n\n#ifdef dTransparency\n #if defined(dTransparencyType_instance)\n vTransparency = readFromTexture(tTransparency, aInstance, uTransparencyTexDim).a;\n #elif defined(dTransparencyType_groupInstance)\n vTransparency = readFromTexture(tTransparency, aInstance * float(uGroupCount) + group, uTransparencyTexDim).a;\n #elif defined(dTransparencyType_vertexInstance)\n vTransparency = readFromTexture(tTransparency, int(aInstance) * uVertexCount + VertexID, uTransparencyTexDim).a;\n #elif defined(dTransparencyType_volumeInstance)\n vec3 tgridPos = (uTransparencyGridTransform.w * (vModelPosition - uTransparencyGridTransform.xyz)) / uTransparencyGridDim;\n vTransparency = texture3dFrom2dLinear(tTransparencyGrid, tgridPos, uTransparencyGridDim, uTransparencyTexDim).a;\n #endif\n vTransparency *= uTransparencyStrength;\n#endif\n";
|
|
@@ -65,6 +65,20 @@ export const assign_color_varying = `
|
|
|
65
65
|
vOverpaint *= uOverpaintStrength;
|
|
66
66
|
#endif
|
|
67
67
|
|
|
68
|
+
#ifdef dEmissive
|
|
69
|
+
#if defined(dEmissiveType_instance)
|
|
70
|
+
vEmissive = readFromTexture(tEmissive, aInstance, uEmissiveTexDim).a;
|
|
71
|
+
#elif defined(dEmissiveType_groupInstance)
|
|
72
|
+
vEmissive = readFromTexture(tEmissive, aInstance * float(uGroupCount) + group, uEmissiveTexDim).a;
|
|
73
|
+
#elif defined(dEmissiveType_vertexInstance)
|
|
74
|
+
vEmissive = readFromTexture(tEmissive, int(aInstance) * uVertexCount + VertexID, uEmissiveTexDim).a;
|
|
75
|
+
#elif defined(dEmissiveType_volumeInstance)
|
|
76
|
+
vec3 egridPos = (uEmissiveGridTransform.w * (vModelPosition - uEmissiveGridTransform.xyz)) / uEmissiveGridDim;
|
|
77
|
+
vEmissive = texture3dFrom2dLinear(tEmissiveGrid, egridPos, uEmissiveGridDim, uEmissiveTexDim).a;
|
|
78
|
+
#endif
|
|
79
|
+
vEmissive *= uEmissiveStrength;
|
|
80
|
+
#endif
|
|
81
|
+
|
|
68
82
|
#ifdef dSubstance
|
|
69
83
|
#if defined(dSubstanceType_instance)
|
|
70
84
|
vSubstance = readFromTexture(tSubstance, aInstance, uSubstanceTexDim);
|
|
@@ -81,6 +95,20 @@ export const assign_color_varying = `
|
|
|
81
95
|
vSubstance.rgb = mix(vec3(uMetalness, uRoughness, uBumpiness), vSubstance.rgb, vSubstance.a);
|
|
82
96
|
vSubstance *= uSubstanceStrength;
|
|
83
97
|
#endif
|
|
98
|
+
#elif defined(dRenderVariant_emissive)
|
|
99
|
+
#ifdef dEmissive
|
|
100
|
+
#if defined(dEmissiveType_instance)
|
|
101
|
+
vEmissive = readFromTexture(tEmissive, aInstance, uEmissiveTexDim).a;
|
|
102
|
+
#elif defined(dEmissiveType_groupInstance)
|
|
103
|
+
vEmissive = readFromTexture(tEmissive, aInstance * float(uGroupCount) + group, uEmissiveTexDim).a;
|
|
104
|
+
#elif defined(dEmissiveType_vertexInstance)
|
|
105
|
+
vEmissive = readFromTexture(tEmissive, int(aInstance) * uVertexCount + VertexID, uEmissiveTexDim).a;
|
|
106
|
+
#elif defined(dEmissiveType_volumeInstance)
|
|
107
|
+
vec3 egridPos = (uEmissiveGridTransform.w * (vModelPosition - uEmissiveGridTransform.xyz)) / uEmissiveGridDim;
|
|
108
|
+
vEmissive = texture3dFrom2dLinear(tEmissiveGrid, egridPos, uEmissiveGridDim, uEmissiveTexDim).a;
|
|
109
|
+
#endif
|
|
110
|
+
vEmissive *= uEmissiveStrength;
|
|
111
|
+
#endif
|
|
84
112
|
#elif defined(dRenderVariant_pick)
|
|
85
113
|
#ifdef requiredDrawBuffers
|
|
86
114
|
vObject = vec4(packIntToRGB(float(uObjectId)), 1.0);
|