molstar 3.7.0 → 3.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +20 -20
- package/README.md +202 -202
- package/build/viewer/embedded.html +43 -43
- package/build/viewer/index.html +106 -106
- package/build/viewer/molstar.js +1 -1
- package/build/viewer/molstar.js.LICENSE.txt +0 -15
- package/lib/apps/docking-viewer/index.html +36 -36
- package/lib/apps/viewer/embedded.html +43 -43
- package/lib/apps/viewer/index.html +106 -106
- package/lib/cli/chem-comp-dict/create-ions.d.ts +2 -1
- package/lib/cli/chem-comp-dict/create-ions.js +3 -2
- package/lib/cli/cifschema/index.js +1 -1
- package/lib/cli/cifschema/util/cif-dic.js +1 -0
- package/lib/commonjs/cli/chem-comp-dict/create-ions.d.ts +2 -1
- package/lib/commonjs/cli/chem-comp-dict/create-ions.js +3 -2
- package/lib/commonjs/cli/cifschema/index.js +1 -1
- package/lib/commonjs/cli/cifschema/util/cif-dic.js +1 -0
- package/lib/commonjs/examples/proteopedia-wrapper/coloring.d.ts +20 -5
- package/lib/commonjs/extensions/rcsb/graphql/types.d.ts +284 -0
- package/lib/commonjs/mol-canvas3d/canvas3d.d.ts +1 -1
- package/lib/commonjs/mol-canvas3d/canvas3d.js +4 -4
- package/lib/commonjs/mol-canvas3d/helper/camera-helper.d.ts +1 -1
- package/lib/commonjs/mol-canvas3d/helper/camera-helper.js +7 -5
- package/lib/commonjs/mol-canvas3d/helper/handle-helper.d.ts +1 -1
- package/lib/commonjs/mol-canvas3d/helper/handle-helper.js +7 -5
- package/lib/commonjs/mol-canvas3d/passes/draw.d.ts +4 -8
- package/lib/commonjs/mol-canvas3d/passes/draw.js +60 -103
- package/lib/commonjs/mol-canvas3d/passes/pick.d.ts +1 -1
- package/lib/commonjs/mol-canvas3d/passes/pick.js +1 -3
- package/lib/commonjs/mol-canvas3d/passes/postprocessing.d.ts +1 -0
- package/lib/commonjs/mol-canvas3d/passes/postprocessing.js +17 -12
- package/lib/commonjs/mol-geo/geometry/color-data.d.ts +5 -2
- package/lib/commonjs/mol-geo/geometry/color-data.js +7 -17
- package/lib/commonjs/mol-geo/geometry/cylinders/cylinders.d.ts +1 -1
- package/lib/commonjs/mol-geo/geometry/cylinders/cylinders.js +2 -2
- package/lib/commonjs/mol-geo/geometry/lines/lines.d.ts +1 -0
- package/lib/commonjs/mol-geo/geometry/mesh/mesh.js +2 -2
- package/lib/commonjs/mol-geo/geometry/points/points.d.ts +1 -1
- package/lib/commonjs/mol-geo/geometry/spheres/spheres.js +2 -2
- package/lib/commonjs/mol-geo/geometry/texture-mesh/texture-mesh.js +2 -2
- package/lib/commonjs/mol-geo/geometry/transparency-data.d.ts +1 -1
- package/lib/commonjs/mol-geo/geometry/transparency-data.js +3 -1
- package/lib/commonjs/mol-gl/renderable/cylinders.d.ts +1 -1
- package/lib/commonjs/mol-gl/renderable/cylinders.js +1 -1
- package/lib/commonjs/mol-gl/renderable/mesh.d.ts +1 -1
- package/lib/commonjs/mol-gl/renderable/mesh.js +1 -1
- package/lib/commonjs/mol-gl/renderable/schema.d.ts +2 -2
- package/lib/commonjs/mol-gl/renderable/schema.js +2 -2
- package/lib/commonjs/mol-gl/renderable/spheres.d.ts +1 -1
- package/lib/commonjs/mol-gl/renderable/spheres.js +1 -1
- package/lib/commonjs/mol-gl/renderable/texture-mesh.d.ts +1 -1
- package/lib/commonjs/mol-gl/renderable/texture-mesh.js +1 -1
- package/lib/commonjs/mol-gl/renderer.d.ts +5 -5
- package/lib/commonjs/mol-gl/renderer.js +64 -45
- package/lib/commonjs/mol-gl/scene.d.ts +2 -1
- package/lib/commonjs/mol-gl/scene.js +44 -11
- package/lib/commonjs/mol-gl/shader/chunks/apply-interior-color.glsl.d.ts +1 -1
- package/lib/commonjs/mol-gl/shader/chunks/apply-interior-color.glsl.js +1 -1
- 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 +1 -1
- package/lib/commonjs/mol-gl/shader/chunks/check-picking-alpha.glsl.d.ts +1 -1
- package/lib/commonjs/mol-gl/shader/chunks/check-picking-alpha.glsl.js +1 -1
- 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 -1
- package/lib/commonjs/mol-gl/shader/chunks/common.glsl.d.ts +1 -1
- package/lib/commonjs/mol-gl/shader/chunks/common.glsl.js +1 -1
- package/lib/commonjs/mol-gl/shader/chunks/wboit-write.glsl.d.ts +1 -1
- package/lib/commonjs/mol-gl/shader/chunks/wboit-write.glsl.js +1 -1
- package/lib/commonjs/mol-gl/shader/direct-volume.frag.d.ts +1 -1
- package/lib/commonjs/mol-gl/shader/direct-volume.frag.js +1 -1
- package/lib/commonjs/mol-gl/shader/image.frag.d.ts +1 -1
- package/lib/commonjs/mol-gl/shader/image.frag.js +1 -1
- package/lib/commonjs/mol-gl/shader/outlines.frag.d.ts +3 -2
- package/lib/commonjs/mol-gl/shader/outlines.frag.js +3 -2
- package/lib/commonjs/mol-gl/shader/postprocessing.frag.d.ts +1 -1
- package/lib/commonjs/mol-gl/shader/postprocessing.frag.js +1 -1
- package/lib/commonjs/mol-gl/shader/ssao.frag.d.ts +2 -2
- package/lib/commonjs/mol-gl/shader/ssao.frag.js +2 -2
- package/lib/commonjs/mol-gl/webgl/program.js +10 -1
- package/lib/commonjs/mol-gl/webgl/render-target.d.ts +3 -1
- package/lib/commonjs/mol-gl/webgl/render-target.js +3 -1
- package/lib/commonjs/mol-gl/webgl/renderbuffer.d.ts +2 -1
- package/lib/commonjs/mol-gl/webgl/renderbuffer.js +8 -1
- package/lib/commonjs/mol-gl/webgl/state.d.ts +7 -1
- package/lib/commonjs/mol-gl/webgl/state.js +28 -1
- package/lib/commonjs/mol-gl/webgl/texture.js +3 -0
- package/lib/commonjs/mol-gl/webgl/uniform.d.ts +1 -0
- package/lib/commonjs/mol-gl/webgl/uniform.js +5 -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/cif-core.d.ts +1 -1
- package/lib/commonjs/mol-io/reader/cif/schema/cif-core.js +1 -1
- package/lib/commonjs/mol-io/reader/cif/schema/mmcif.d.ts +3 -4
- package/lib/commonjs/mol-io/reader/cif/schema/mmcif.js +2 -3
- package/lib/commonjs/mol-io/reader/dx/parser.js +1 -1
- package/lib/commonjs/mol-math/geometry/lookup3d/grid.d.ts +1 -1
- package/lib/commonjs/mol-math/geometry/lookup3d/grid.js +3 -3
- package/lib/commonjs/mol-model/structure/model/properties/seconday-structure.d.ts +4 -2
- package/lib/commonjs/mol-model/structure/model/properties/seconday-structure.js +2 -1
- package/lib/commonjs/mol-model/structure/model/types/ions.d.ts +2 -2
- package/lib/commonjs/mol-model/structure/model/types/ions.js +2 -2
- package/lib/commonjs/mol-model/structure/model/types/saccharides.js +1 -1
- package/lib/commonjs/mol-model/structure/model/types.d.ts +1 -1
- package/lib/commonjs/mol-model/structure/model/types.js +43 -41
- package/lib/commonjs/mol-model-formats/structure/common/property.js +2 -0
- package/lib/commonjs/mol-model-formats/structure/property/secondary-structure.d.ts +1 -1
- package/lib/commonjs/mol-model-formats/structure/property/secondary-structure.js +2 -2
- package/lib/commonjs/mol-plugin/behavior/dynamic/volume-streaming/model.d.ts +3 -2
- package/lib/commonjs/mol-plugin-state/helpers/root-structure.js +3 -1
- package/lib/commonjs/mol-repr/volume/slice.js +1 -1
- package/lib/commonjs/mol-script/language/builder.d.ts +0 -1
- package/lib/commonjs/mol-theme/color/volume-value.d.ts +3 -2
- package/lib/commonjs/mol-theme/color/volume-value.js +1 -3
- package/lib/commonjs/mol-theme/color.d.ts +47 -38
- package/lib/commonjs/mol-theme/theme.d.ts +8 -7
- package/lib/commonjs/mol-theme/theme.js +1 -1
- package/lib/examples/alpha-orbitals/index.html +61 -61
- package/lib/examples/basic-wrapper/index.html +137 -137
- package/lib/examples/lighting/index.html +88 -88
- package/lib/examples/proteopedia-wrapper/coloring.d.ts +20 -5
- package/lib/examples/proteopedia-wrapper/index.html +236 -236
- package/lib/extensions/rcsb/graphql/types.d.ts +284 -0
- package/lib/mol-canvas3d/canvas3d.d.ts +1 -1
- package/lib/mol-canvas3d/canvas3d.js +4 -4
- package/lib/mol-canvas3d/helper/camera-helper.d.ts +1 -1
- package/lib/mol-canvas3d/helper/camera-helper.js +8 -6
- package/lib/mol-canvas3d/helper/handle-helper.d.ts +1 -1
- package/lib/mol-canvas3d/helper/handle-helper.js +8 -6
- package/lib/mol-canvas3d/passes/draw.d.ts +4 -8
- package/lib/mol-canvas3d/passes/draw.js +57 -100
- package/lib/mol-canvas3d/passes/pick.d.ts +1 -1
- package/lib/mol-canvas3d/passes/pick.js +1 -3
- package/lib/mol-canvas3d/passes/postprocessing.d.ts +1 -0
- package/lib/mol-canvas3d/passes/postprocessing.js +17 -12
- package/lib/mol-geo/geometry/color-data.d.ts +5 -2
- package/lib/mol-geo/geometry/color-data.js +7 -17
- package/lib/mol-geo/geometry/cylinders/cylinders.d.ts +1 -1
- package/lib/mol-geo/geometry/cylinders/cylinders.js +2 -2
- package/lib/mol-geo/geometry/lines/lines.d.ts +1 -0
- package/lib/mol-geo/geometry/mesh/mesh.js +2 -2
- package/lib/mol-geo/geometry/points/points.d.ts +1 -1
- package/lib/mol-geo/geometry/spheres/spheres.js +2 -2
- package/lib/mol-geo/geometry/texture-mesh/texture-mesh.js +2 -2
- package/lib/mol-geo/geometry/transparency-data.d.ts +1 -1
- package/lib/mol-geo/geometry/transparency-data.js +3 -1
- package/lib/mol-gl/renderable/cylinders.d.ts +1 -1
- package/lib/mol-gl/renderable/cylinders.js +1 -1
- package/lib/mol-gl/renderable/mesh.d.ts +1 -1
- package/lib/mol-gl/renderable/mesh.js +1 -1
- package/lib/mol-gl/renderable/schema.d.ts +2 -2
- package/lib/mol-gl/renderable/schema.js +2 -2
- package/lib/mol-gl/renderable/spheres.d.ts +1 -1
- package/lib/mol-gl/renderable/spheres.js +1 -1
- package/lib/mol-gl/renderable/texture-mesh.d.ts +1 -1
- package/lib/mol-gl/renderable/texture-mesh.js +1 -1
- package/lib/mol-gl/renderer.d.ts +5 -5
- package/lib/mol-gl/renderer.js +64 -45
- package/lib/mol-gl/scene.d.ts +2 -1
- package/lib/mol-gl/scene.js +44 -11
- package/lib/mol-gl/shader/chunks/apply-interior-color.glsl.d.ts +1 -1
- package/lib/mol-gl/shader/chunks/apply-interior-color.glsl.js +1 -1
- 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 +1 -1
- package/lib/mol-gl/shader/chunks/check-picking-alpha.glsl.d.ts +1 -1
- package/lib/mol-gl/shader/chunks/check-picking-alpha.glsl.js +1 -1
- 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 -1
- package/lib/mol-gl/shader/chunks/common.glsl.d.ts +1 -1
- package/lib/mol-gl/shader/chunks/common.glsl.js +1 -1
- package/lib/mol-gl/shader/chunks/wboit-write.glsl.d.ts +1 -1
- package/lib/mol-gl/shader/chunks/wboit-write.glsl.js +1 -1
- package/lib/mol-gl/shader/direct-volume.frag.d.ts +1 -1
- package/lib/mol-gl/shader/direct-volume.frag.js +1 -1
- package/lib/mol-gl/shader/image.frag.d.ts +1 -1
- package/lib/mol-gl/shader/image.frag.js +1 -1
- package/lib/mol-gl/shader/outlines.frag.d.ts +3 -2
- package/lib/mol-gl/shader/outlines.frag.js +3 -2
- package/lib/mol-gl/shader/postprocessing.frag.d.ts +1 -1
- package/lib/mol-gl/shader/postprocessing.frag.js +1 -1
- package/lib/mol-gl/shader/ssao.frag.d.ts +2 -2
- package/lib/mol-gl/shader/ssao.frag.js +2 -2
- package/lib/mol-gl/webgl/program.js +11 -2
- package/lib/mol-gl/webgl/render-target.d.ts +3 -1
- package/lib/mol-gl/webgl/render-target.js +3 -1
- package/lib/mol-gl/webgl/renderbuffer.d.ts +2 -1
- package/lib/mol-gl/webgl/renderbuffer.js +8 -1
- package/lib/mol-gl/webgl/state.d.ts +7 -1
- package/lib/mol-gl/webgl/state.js +28 -1
- package/lib/mol-gl/webgl/texture.js +3 -0
- package/lib/mol-gl/webgl/uniform.d.ts +1 -0
- package/lib/mol-gl/webgl/uniform.js +3 -0
- 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/cif-core.d.ts +1 -1
- package/lib/mol-io/reader/cif/schema/cif-core.js +1 -1
- package/lib/mol-io/reader/cif/schema/mmcif.d.ts +3 -4
- package/lib/mol-io/reader/cif/schema/mmcif.js +2 -3
- package/lib/mol-io/reader/dx/parser.js +1 -1
- package/lib/mol-math/geometry/lookup3d/grid.d.ts +1 -1
- package/lib/mol-math/geometry/lookup3d/grid.js +3 -3
- package/lib/mol-model/structure/model/properties/seconday-structure.d.ts +4 -2
- package/lib/mol-model/structure/model/properties/seconday-structure.js +2 -1
- package/lib/mol-model/structure/model/types/ions.d.ts +2 -2
- package/lib/mol-model/structure/model/types/ions.js +2 -2
- package/lib/mol-model/structure/model/types/saccharides.js +1 -1
- package/lib/mol-model/structure/model/types.d.ts +1 -1
- package/lib/mol-model/structure/model/types.js +43 -41
- package/lib/mol-model-formats/structure/common/property.js +2 -0
- package/lib/mol-model-formats/structure/property/secondary-structure.d.ts +1 -1
- package/lib/mol-model-formats/structure/property/secondary-structure.js +2 -2
- package/lib/mol-plugin/behavior/dynamic/volume-streaming/model.d.ts +3 -2
- package/lib/mol-plugin/version.js +2 -2
- package/lib/mol-plugin-state/helpers/root-structure.js +3 -1
- package/lib/mol-plugin-ui/skin/base/base.scss +32 -32
- package/lib/mol-plugin-ui/skin/base/components/controls-base.scss +333 -333
- package/lib/mol-plugin-ui/skin/base/components/controls.scss +418 -418
- package/lib/mol-plugin-ui/skin/base/components/help.scss +27 -27
- package/lib/mol-plugin-ui/skin/base/components/line-graph.scss +67 -67
- package/lib/mol-plugin-ui/skin/base/components/log.scss +100 -100
- package/lib/mol-plugin-ui/skin/base/components/misc.scss +643 -643
- package/lib/mol-plugin-ui/skin/base/components/sequence.scss +125 -125
- package/lib/mol-plugin-ui/skin/base/components/slider.scss +165 -165
- package/lib/mol-plugin-ui/skin/base/components/tasks.scss +99 -99
- package/lib/mol-plugin-ui/skin/base/components/toast.scss +83 -83
- package/lib/mol-plugin-ui/skin/base/components/transformer.scss +163 -163
- package/lib/mol-plugin-ui/skin/base/components/viewport.scss +128 -128
- package/lib/mol-plugin-ui/skin/base/layout/common.scss +71 -71
- package/lib/mol-plugin-ui/skin/base/layout/controls-landscape.scss +89 -89
- package/lib/mol-plugin-ui/skin/base/layout/controls-outside.scss +98 -98
- package/lib/mol-plugin-ui/skin/base/layout/controls-portrait.scss +108 -108
- package/lib/mol-plugin-ui/skin/base/layout.scss +40 -40
- package/lib/mol-plugin-ui/skin/base/logo.scss +12 -12
- package/lib/mol-plugin-ui/skin/base/normalize.scss +209 -209
- package/lib/mol-plugin-ui/skin/base/ui.scss +40 -40
- package/lib/mol-plugin-ui/skin/base/variables.scss +85 -85
- package/lib/mol-plugin-ui/skin/blue.scss +1 -1
- package/lib/mol-plugin-ui/skin/colors/blue.scss +23 -23
- package/lib/mol-plugin-ui/skin/colors/dark.scss +23 -23
- package/lib/mol-plugin-ui/skin/colors/light.scss +29 -29
- package/lib/mol-plugin-ui/skin/dark.scss +1 -1
- package/lib/mol-plugin-ui/skin/light.scss +1 -1
- package/lib/mol-repr/volume/slice.js +1 -1
- package/lib/mol-script/language/builder.d.ts +0 -1
- package/lib/mol-theme/color/volume-value.d.ts +3 -2
- package/lib/mol-theme/color/volume-value.js +2 -4
- package/lib/mol-theme/color.d.ts +47 -38
- package/lib/mol-theme/theme.d.ts +8 -7
- package/lib/mol-theme/theme.js +1 -1
- package/package.json +162 -162
|
@@ -12,7 +12,7 @@ var render_item_1 = require("../webgl/render-item");
|
|
|
12
12
|
var schema_1 = require("./schema");
|
|
13
13
|
var shader_code_1 = require("../shader-code");
|
|
14
14
|
var mol_util_1 = require("../../mol-util");
|
|
15
|
-
exports.CylindersSchema = tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, schema_1.BaseSchema), schema_1.SizeSchema), { aGroup: (0, schema_1.AttributeSpec)('float32', 1, 0), aStart: (0, schema_1.AttributeSpec)('float32', 3, 0), aEnd: (0, schema_1.AttributeSpec)('float32', 3, 0), aMapping: (0, schema_1.AttributeSpec)('float32', 3, 0), aScale: (0, schema_1.AttributeSpec)('float32', 1, 0), aCap: (0, schema_1.AttributeSpec)('float32', 1, 0), elements: (0, schema_1.ElementsSpec)('uint32'), padding: (0, schema_1.ValueSpec)('number'), uDoubleSided: (0, schema_1.UniformSpec)('b'), dIgnoreLight: (0, schema_1.DefineSpec)('boolean'), dXrayShaded: (0, schema_1.DefineSpec)('boolean'),
|
|
15
|
+
exports.CylindersSchema = tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, schema_1.BaseSchema), schema_1.SizeSchema), { aGroup: (0, schema_1.AttributeSpec)('float32', 1, 0), aStart: (0, schema_1.AttributeSpec)('float32', 3, 0), aEnd: (0, schema_1.AttributeSpec)('float32', 3, 0), aMapping: (0, schema_1.AttributeSpec)('float32', 3, 0), aScale: (0, schema_1.AttributeSpec)('float32', 1, 0), aCap: (0, schema_1.AttributeSpec)('float32', 1, 0), elements: (0, schema_1.ElementsSpec)('uint32'), padding: (0, schema_1.ValueSpec)('number'), uDoubleSided: (0, schema_1.UniformSpec)('b'), dIgnoreLight: (0, schema_1.DefineSpec)('boolean'), dXrayShaded: (0, schema_1.DefineSpec)('boolean'), dTransparentBackfaces: (0, schema_1.DefineSpec)('string', ['off', 'on', 'opaque']), uBumpFrequency: (0, schema_1.UniformSpec)('f'), uBumpAmplitude: (0, schema_1.UniformSpec)('f') });
|
|
16
16
|
function CylindersRenderable(ctx, id, values, state, materialId, variants) {
|
|
17
17
|
var schema = tslib_1.__assign(tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, schema_1.GlobalUniformSchema), schema_1.GlobalTextureSchema), schema_1.InternalSchema), exports.CylindersSchema);
|
|
18
18
|
var internalValues = {
|
|
@@ -17,7 +17,7 @@ export declare const MeshSchema: {
|
|
|
17
17
|
readonly dFlipSided: DefineSpec<"boolean">;
|
|
18
18
|
readonly dIgnoreLight: DefineSpec<"boolean">;
|
|
19
19
|
readonly dXrayShaded: DefineSpec<"boolean">;
|
|
20
|
-
readonly
|
|
20
|
+
readonly dTransparentBackfaces: DefineSpec<"string">;
|
|
21
21
|
readonly uBumpFrequency: UniformSpec<"f">;
|
|
22
22
|
readonly uBumpAmplitude: UniformSpec<"f">;
|
|
23
23
|
readonly meta: ValueSpec<"unknown">;
|
|
@@ -12,7 +12,7 @@ var render_item_1 = require("../webgl/render-item");
|
|
|
12
12
|
var schema_1 = require("./schema");
|
|
13
13
|
var shader_code_1 = require("../shader-code");
|
|
14
14
|
var mol_util_1 = require("../../mol-util");
|
|
15
|
-
exports.MeshSchema = tslib_1.__assign(tslib_1.__assign({}, schema_1.BaseSchema), { aGroup: (0, schema_1.AttributeSpec)('float32', 1, 0), aPosition: (0, schema_1.AttributeSpec)('float32', 3, 0), aNormal: (0, schema_1.AttributeSpec)('float32', 3, 0), elements: (0, schema_1.ElementsSpec)('uint32'), dFlatShaded: (0, schema_1.DefineSpec)('boolean'), uDoubleSided: (0, schema_1.UniformSpec)('b'), dFlipSided: (0, schema_1.DefineSpec)('boolean'), dIgnoreLight: (0, schema_1.DefineSpec)('boolean'), dXrayShaded: (0, schema_1.DefineSpec)('boolean'),
|
|
15
|
+
exports.MeshSchema = tslib_1.__assign(tslib_1.__assign({}, schema_1.BaseSchema), { aGroup: (0, schema_1.AttributeSpec)('float32', 1, 0), aPosition: (0, schema_1.AttributeSpec)('float32', 3, 0), aNormal: (0, schema_1.AttributeSpec)('float32', 3, 0), elements: (0, schema_1.ElementsSpec)('uint32'), dFlatShaded: (0, schema_1.DefineSpec)('boolean'), uDoubleSided: (0, schema_1.UniformSpec)('b'), dFlipSided: (0, schema_1.DefineSpec)('boolean'), dIgnoreLight: (0, schema_1.DefineSpec)('boolean'), dXrayShaded: (0, schema_1.DefineSpec)('boolean'), dTransparentBackfaces: (0, schema_1.DefineSpec)('string', ['off', 'on', 'opaque']), uBumpFrequency: (0, schema_1.UniformSpec)('f'), uBumpAmplitude: (0, schema_1.UniformSpec)('f'), meta: (0, schema_1.ValueSpec)('unknown') });
|
|
16
16
|
function MeshRenderable(ctx, id, values, state, materialId, variants) {
|
|
17
17
|
var schema = tslib_1.__assign(tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, schema_1.GlobalUniformSchema), schema_1.GlobalTextureSchema), schema_1.InternalSchema), exports.MeshSchema);
|
|
18
18
|
var internalValues = {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c) 2018-
|
|
2
|
+
* Copyright (c) 2018-2022 mol* contributors, licensed under MIT, See LICENSE file for more info.
|
|
3
3
|
*
|
|
4
4
|
* @author Alexander Rose <alexander.rose@weirdbyte.de>
|
|
5
5
|
*/
|
|
@@ -119,7 +119,7 @@ export declare const GlobalUniformSchema: {
|
|
|
119
119
|
readonly uSelectStrength: UniformSpec<"f">;
|
|
120
120
|
readonly uMarkerPriority: UniformSpec<"i">;
|
|
121
121
|
readonly uXrayEdgeFalloff: UniformSpec<"f">;
|
|
122
|
-
readonly
|
|
122
|
+
readonly uRenderMask: UniformSpec<"i">;
|
|
123
123
|
readonly uMarkingDepthTest: UniformSpec<"b">;
|
|
124
124
|
readonly uMarkingType: UniformSpec<"i">;
|
|
125
125
|
readonly uPickType: UniformSpec<"i">;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* Copyright (c) 2018-
|
|
3
|
+
* Copyright (c) 2018-2022 mol* contributors, licensed under MIT, See LICENSE file for more info.
|
|
4
4
|
*
|
|
5
5
|
* @author Alexander Rose <alexander.rose@weirdbyte.de>
|
|
6
6
|
*/
|
|
@@ -105,7 +105,7 @@ exports.GlobalUniformSchema = {
|
|
|
105
105
|
uSelectStrength: UniformSpec('f'),
|
|
106
106
|
uMarkerPriority: UniformSpec('i'),
|
|
107
107
|
uXrayEdgeFalloff: UniformSpec('f'),
|
|
108
|
-
|
|
108
|
+
uRenderMask: UniformSpec('i'),
|
|
109
109
|
uMarkingDepthTest: UniformSpec('b'),
|
|
110
110
|
uMarkingType: UniformSpec('i'),
|
|
111
111
|
uPickType: UniformSpec('i'),
|
|
@@ -16,7 +16,7 @@ export declare const SpheresSchema: {
|
|
|
16
16
|
uDoubleSided: UniformSpec<"b">;
|
|
17
17
|
dIgnoreLight: DefineSpec<"boolean">;
|
|
18
18
|
dXrayShaded: DefineSpec<"boolean">;
|
|
19
|
-
|
|
19
|
+
dTransparentBackfaces: DefineSpec<"string">;
|
|
20
20
|
uBumpFrequency: UniformSpec<"f">;
|
|
21
21
|
uBumpAmplitude: UniformSpec<"f">;
|
|
22
22
|
uSize: UniformSpec<"f">;
|
|
@@ -12,7 +12,7 @@ var render_item_1 = require("../webgl/render-item");
|
|
|
12
12
|
var schema_1 = require("./schema");
|
|
13
13
|
var shader_code_1 = require("../shader-code");
|
|
14
14
|
var mol_util_1 = require("../../mol-util");
|
|
15
|
-
exports.SpheresSchema = tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, schema_1.BaseSchema), schema_1.SizeSchema), { aGroup: (0, schema_1.AttributeSpec)('float32', 1, 0), aPosition: (0, schema_1.AttributeSpec)('float32', 3, 0), aMapping: (0, schema_1.AttributeSpec)('float32', 2, 0), elements: (0, schema_1.ElementsSpec)('uint32'), padding: (0, schema_1.ValueSpec)('number'), uDoubleSided: (0, schema_1.UniformSpec)('b'), dIgnoreLight: (0, schema_1.DefineSpec)('boolean'), dXrayShaded: (0, schema_1.DefineSpec)('boolean'),
|
|
15
|
+
exports.SpheresSchema = tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, schema_1.BaseSchema), schema_1.SizeSchema), { aGroup: (0, schema_1.AttributeSpec)('float32', 1, 0), aPosition: (0, schema_1.AttributeSpec)('float32', 3, 0), aMapping: (0, schema_1.AttributeSpec)('float32', 2, 0), elements: (0, schema_1.ElementsSpec)('uint32'), padding: (0, schema_1.ValueSpec)('number'), uDoubleSided: (0, schema_1.UniformSpec)('b'), dIgnoreLight: (0, schema_1.DefineSpec)('boolean'), dXrayShaded: (0, schema_1.DefineSpec)('boolean'), dTransparentBackfaces: (0, schema_1.DefineSpec)('string', ['off', 'on', 'opaque']), uBumpFrequency: (0, schema_1.UniformSpec)('f'), uBumpAmplitude: (0, schema_1.UniformSpec)('f') });
|
|
16
16
|
function SpheresRenderable(ctx, id, values, state, materialId, variants) {
|
|
17
17
|
var schema = tslib_1.__assign(tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, schema_1.GlobalUniformSchema), schema_1.GlobalTextureSchema), schema_1.InternalSchema), exports.SpheresSchema);
|
|
18
18
|
var internalValues = {
|
|
@@ -17,7 +17,7 @@ export declare const TextureMeshSchema: {
|
|
|
17
17
|
dFlipSided: DefineSpec<"boolean">;
|
|
18
18
|
dIgnoreLight: DefineSpec<"boolean">;
|
|
19
19
|
dXrayShaded: DefineSpec<"boolean">;
|
|
20
|
-
|
|
20
|
+
dTransparentBackfaces: DefineSpec<"string">;
|
|
21
21
|
uBumpFrequency: UniformSpec<"f">;
|
|
22
22
|
uBumpAmplitude: UniformSpec<"f">;
|
|
23
23
|
meta: ValueSpec<"unknown">;
|
|
@@ -12,7 +12,7 @@ var render_item_1 = require("../webgl/render-item");
|
|
|
12
12
|
var schema_1 = require("./schema");
|
|
13
13
|
var shader_code_1 = require("../shader-code");
|
|
14
14
|
var mol_util_1 = require("../../mol-util");
|
|
15
|
-
exports.TextureMeshSchema = tslib_1.__assign(tslib_1.__assign({}, schema_1.BaseSchema), { uGeoTexDim: (0, schema_1.UniformSpec)('v2', 'buffered'), tPosition: (0, schema_1.TextureSpec)('texture', 'rgb', 'float', 'nearest'), tGroup: (0, schema_1.TextureSpec)('texture', 'alpha', 'float', 'nearest'), tNormal: (0, schema_1.TextureSpec)('texture', 'rgb', 'float', 'nearest'), dFlatShaded: (0, schema_1.DefineSpec)('boolean'), uDoubleSided: (0, schema_1.UniformSpec)('b'), dFlipSided: (0, schema_1.DefineSpec)('boolean'), dIgnoreLight: (0, schema_1.DefineSpec)('boolean'), dXrayShaded: (0, schema_1.DefineSpec)('boolean'),
|
|
15
|
+
exports.TextureMeshSchema = tslib_1.__assign(tslib_1.__assign({}, schema_1.BaseSchema), { uGeoTexDim: (0, schema_1.UniformSpec)('v2', 'buffered'), tPosition: (0, schema_1.TextureSpec)('texture', 'rgb', 'float', 'nearest'), tGroup: (0, schema_1.TextureSpec)('texture', 'alpha', 'float', 'nearest'), tNormal: (0, schema_1.TextureSpec)('texture', 'rgb', 'float', 'nearest'), dFlatShaded: (0, schema_1.DefineSpec)('boolean'), uDoubleSided: (0, schema_1.UniformSpec)('b'), dFlipSided: (0, schema_1.DefineSpec)('boolean'), dIgnoreLight: (0, schema_1.DefineSpec)('boolean'), dXrayShaded: (0, schema_1.DefineSpec)('boolean'), dTransparentBackfaces: (0, schema_1.DefineSpec)('string', ['off', 'on', 'opaque']), uBumpFrequency: (0, schema_1.UniformSpec)('f'), uBumpAmplitude: (0, schema_1.UniformSpec)('f'), meta: (0, schema_1.ValueSpec)('unknown') });
|
|
16
16
|
function TextureMeshRenderable(ctx, id, values, state, materialId, variants) {
|
|
17
17
|
var schema = tslib_1.__assign(tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, schema_1.GlobalUniformSchema), schema_1.GlobalTextureSchema), schema_1.InternalSchema), exports.TextureMeshSchema);
|
|
18
18
|
var internalValues = {
|
|
@@ -7,7 +7,6 @@ import { ICamera } from '../mol-canvas3d/camera';
|
|
|
7
7
|
import { Scene } from './scene';
|
|
8
8
|
import { WebGLContext } from './webgl/context';
|
|
9
9
|
import { Color } from '../mol-util/color';
|
|
10
|
-
import { GraphicsRenderVariant } from './webgl/render-item';
|
|
11
10
|
import { ParamDefinition as PD } from '../mol-util/param-definition';
|
|
12
11
|
import { Texture } from './webgl/texture';
|
|
13
12
|
export interface RendererStats {
|
|
@@ -38,17 +37,18 @@ interface Renderer {
|
|
|
38
37
|
readonly stats: RendererStats;
|
|
39
38
|
readonly props: Readonly<RendererProps>;
|
|
40
39
|
clear: (toBackgroundColor: boolean, ignoreTransparentBackground?: boolean) => void;
|
|
41
|
-
clearDepth: () => void;
|
|
40
|
+
clearDepth: (packed?: boolean) => void;
|
|
42
41
|
update: (camera: ICamera) => void;
|
|
43
|
-
renderPick: (group: Scene.Group, camera: ICamera, variant:
|
|
42
|
+
renderPick: (group: Scene.Group, camera: ICamera, variant: 'pick' | 'depth', depthTexture: Texture | null, pickType: PickType) => void;
|
|
44
43
|
renderDepth: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void;
|
|
44
|
+
renderDepthOpaque: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void;
|
|
45
|
+
renderDepthTransparent: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void;
|
|
45
46
|
renderMarkingDepth: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void;
|
|
46
47
|
renderMarkingMask: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void;
|
|
47
48
|
renderBlended: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void;
|
|
48
49
|
renderBlendedOpaque: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void;
|
|
49
50
|
renderBlendedTransparent: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void;
|
|
50
|
-
|
|
51
|
-
renderBlendedVolumeTransparent: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void;
|
|
51
|
+
renderBlendedVolume: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void;
|
|
52
52
|
renderWboitOpaque: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void;
|
|
53
53
|
renderWboitTransparent: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void;
|
|
54
54
|
setProps: (props: Partial<RendererProps>) => void;
|
|
@@ -67,7 +67,9 @@ var Renderer;
|
|
|
67
67
|
var drawingBufferSize = linear_algebra_1.Vec2.create(gl.drawingBufferWidth, gl.drawingBufferHeight);
|
|
68
68
|
var bgColor = color_1.Color.toVec3Normalized((0, linear_algebra_1.Vec3)(), p.backgroundColor);
|
|
69
69
|
var transparentBackground = false;
|
|
70
|
-
var emptyDepthTexture = ctx.resources.texture('image-
|
|
70
|
+
var emptyDepthTexture = ctx.resources.texture('image-uint8', 'rgba', 'ubyte', 'nearest');
|
|
71
|
+
emptyDepthTexture.define(1, 1);
|
|
72
|
+
emptyDepthTexture.load({ array: new Uint8Array([255, 255, 255, 255]), width: 1, height: 1 });
|
|
71
73
|
var sharedTexturesList = [
|
|
72
74
|
['tDepth', emptyDepthTexture]
|
|
73
75
|
];
|
|
@@ -104,7 +106,7 @@ var Renderer;
|
|
|
104
106
|
uFogNear: mol_util_1.ValueCell.create(1),
|
|
105
107
|
uFogFar: mol_util_1.ValueCell.create(10000),
|
|
106
108
|
uFogColor: mol_util_1.ValueCell.create(bgColor),
|
|
107
|
-
|
|
109
|
+
uRenderMask: mol_util_1.ValueCell.create(0),
|
|
108
110
|
uMarkingDepthTest: mol_util_1.ValueCell.create(false),
|
|
109
111
|
uPickType: mol_util_1.ValueCell.create(0 /* None */),
|
|
110
112
|
uMarkingType: mol_util_1.ValueCell.create(0 /* None */),
|
|
@@ -223,14 +225,14 @@ var Renderer;
|
|
|
223
225
|
mol_util_1.ValueCell.updateIfChanged(globalUniforms.uFogNear, camera.fogNear);
|
|
224
226
|
mol_util_1.ValueCell.updateIfChanged(globalUniforms.uTransparentBackground, transparentBackground);
|
|
225
227
|
};
|
|
226
|
-
var updateInternal = function (group, camera, depthTexture,
|
|
228
|
+
var updateInternal = function (group, camera, depthTexture, renderMask, markingDepthTest) {
|
|
227
229
|
(0, array_1.arrayMapUpsert)(sharedTexturesList, 'tDepth', depthTexture || emptyDepthTexture);
|
|
228
230
|
mol_util_1.ValueCell.update(globalUniforms.uModel, group.view);
|
|
229
231
|
mol_util_1.ValueCell.update(globalUniforms.uModelView, linear_algebra_1.Mat4.mul(modelView, group.view, camera.view));
|
|
230
232
|
mol_util_1.ValueCell.update(globalUniforms.uInvModelView, linear_algebra_1.Mat4.invert(invModelView, modelView));
|
|
231
233
|
mol_util_1.ValueCell.update(globalUniforms.uModelViewProjection, linear_algebra_1.Mat4.mul(modelViewProjection, modelView, camera.projection));
|
|
232
234
|
mol_util_1.ValueCell.update(globalUniforms.uInvModelViewProjection, linear_algebra_1.Mat4.invert(invModelViewProjection, modelViewProjection));
|
|
233
|
-
mol_util_1.ValueCell.updateIfChanged(globalUniforms.
|
|
235
|
+
mol_util_1.ValueCell.updateIfChanged(globalUniforms.uRenderMask, renderMask);
|
|
234
236
|
mol_util_1.ValueCell.updateIfChanged(globalUniforms.uMarkingDepthTest, markingDepthTest);
|
|
235
237
|
state.enable(gl.SCISSOR_TEST);
|
|
236
238
|
state.colorMask(true, true, true, true);
|
|
@@ -244,7 +246,7 @@ var Renderer;
|
|
|
244
246
|
state.disable(gl.BLEND);
|
|
245
247
|
state.enable(gl.DEPTH_TEST);
|
|
246
248
|
state.depthMask(true);
|
|
247
|
-
updateInternal(group, camera, depthTexture,
|
|
249
|
+
updateInternal(group, camera, depthTexture, 0 /* All */, false);
|
|
248
250
|
mol_util_1.ValueCell.updateIfChanged(globalUniforms.uPickType, pickType);
|
|
249
251
|
var renderables = group.renderables;
|
|
250
252
|
for (var i = 0, il = renderables.length; i < il; ++i) {
|
|
@@ -257,17 +259,45 @@ var Renderer;
|
|
|
257
259
|
state.disable(gl.BLEND);
|
|
258
260
|
state.enable(gl.DEPTH_TEST);
|
|
259
261
|
state.depthMask(true);
|
|
260
|
-
updateInternal(group, camera, depthTexture,
|
|
262
|
+
updateInternal(group, camera, depthTexture, 0 /* All */, false);
|
|
261
263
|
var renderables = group.renderables;
|
|
262
264
|
for (var i = 0, il = renderables.length; i < il; ++i) {
|
|
263
265
|
renderObject(renderables[i], 'depth', 0 /* None */);
|
|
264
266
|
}
|
|
265
267
|
};
|
|
268
|
+
var renderDepthOpaque = function (group, camera, depthTexture) {
|
|
269
|
+
var _a;
|
|
270
|
+
state.disable(gl.BLEND);
|
|
271
|
+
state.enable(gl.DEPTH_TEST);
|
|
272
|
+
state.depthMask(true);
|
|
273
|
+
updateInternal(group, camera, depthTexture, 1 /* Opaque */, false);
|
|
274
|
+
var renderables = group.renderables;
|
|
275
|
+
for (var i = 0, il = renderables.length; i < il; ++i) {
|
|
276
|
+
var r = renderables[i];
|
|
277
|
+
if (r.state.opaque && r.values.transparencyAverage.ref.value !== 1 && !((_a = r.values.dXrayShaded) === null || _a === void 0 ? void 0 : _a.ref.value)) {
|
|
278
|
+
renderObject(r, 'depth', 0 /* None */);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
};
|
|
282
|
+
var renderDepthTransparent = function (group, camera, depthTexture) {
|
|
283
|
+
var _a;
|
|
284
|
+
state.disable(gl.BLEND);
|
|
285
|
+
state.enable(gl.DEPTH_TEST);
|
|
286
|
+
state.depthMask(true);
|
|
287
|
+
updateInternal(group, camera, depthTexture, 2 /* Transparent */, false);
|
|
288
|
+
var renderables = group.renderables;
|
|
289
|
+
for (var i = 0, il = renderables.length; i < il; ++i) {
|
|
290
|
+
var r = renderables[i];
|
|
291
|
+
if (!r.state.opaque || r.values.transparencyAverage.ref.value > 0 || ((_a = r.values.dXrayShaded) === null || _a === void 0 ? void 0 : _a.ref.value)) {
|
|
292
|
+
renderObject(r, 'depth', 0 /* None */);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
};
|
|
266
296
|
var renderMarkingDepth = function (group, camera, depthTexture) {
|
|
267
297
|
state.disable(gl.BLEND);
|
|
268
298
|
state.enable(gl.DEPTH_TEST);
|
|
269
299
|
state.depthMask(true);
|
|
270
|
-
updateInternal(group, camera, depthTexture,
|
|
300
|
+
updateInternal(group, camera, depthTexture, 0 /* All */, false);
|
|
271
301
|
mol_util_1.ValueCell.updateIfChanged(globalUniforms.uMarkingType, 1 /* Depth */);
|
|
272
302
|
var renderables = group.renderables;
|
|
273
303
|
for (var i = 0, il = renderables.length; i < il; ++i) {
|
|
@@ -281,7 +311,7 @@ var Renderer;
|
|
|
281
311
|
state.disable(gl.BLEND);
|
|
282
312
|
state.enable(gl.DEPTH_TEST);
|
|
283
313
|
state.depthMask(true);
|
|
284
|
-
updateInternal(group, camera, depthTexture,
|
|
314
|
+
updateInternal(group, camera, depthTexture, 0 /* All */, !!depthTexture);
|
|
285
315
|
mol_util_1.ValueCell.updateIfChanged(globalUniforms.uMarkingType, 2 /* Mask */);
|
|
286
316
|
var renderables = group.renderables;
|
|
287
317
|
for (var i = 0, il = renderables.length; i < il; ++i) {
|
|
@@ -300,14 +330,14 @@ var Renderer;
|
|
|
300
330
|
state.disable(gl.BLEND);
|
|
301
331
|
state.enable(gl.DEPTH_TEST);
|
|
302
332
|
state.depthMask(true);
|
|
303
|
-
updateInternal(group, camera, depthTexture,
|
|
333
|
+
updateInternal(group, camera, depthTexture, 1 /* Opaque */, false);
|
|
304
334
|
var renderables = group.renderables;
|
|
305
335
|
for (var i = 0, il = renderables.length; i < il; ++i) {
|
|
306
336
|
var r = renderables[i];
|
|
307
337
|
if (r.state.opaque) {
|
|
308
338
|
renderObject(r, 'colorBlended', 0 /* None */);
|
|
309
339
|
}
|
|
310
|
-
else if (((_a = r.values.uDoubleSided) === null || _a === void 0 ? void 0 : _a.ref.value) && ((_b = r.values.
|
|
340
|
+
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') {
|
|
311
341
|
renderObject(r, 'colorBlended', 2 /* BlendedBack */);
|
|
312
342
|
}
|
|
313
343
|
}
|
|
@@ -315,7 +345,7 @@ var Renderer;
|
|
|
315
345
|
var renderBlendedTransparent = function (group, camera, depthTexture) {
|
|
316
346
|
var _a, _b;
|
|
317
347
|
state.enable(gl.DEPTH_TEST);
|
|
318
|
-
updateInternal(group, camera, depthTexture,
|
|
348
|
+
updateInternal(group, camera, depthTexture, 2 /* Transparent */, false);
|
|
319
349
|
var renderables = group.renderables;
|
|
320
350
|
if (transparentBackground) {
|
|
321
351
|
state.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
|
|
@@ -334,10 +364,10 @@ var Renderer;
|
|
|
334
364
|
state.depthMask(false);
|
|
335
365
|
for (var i = 0, il = renderables.length; i < il; ++i) {
|
|
336
366
|
var r = renderables[i];
|
|
337
|
-
if (!r.state.opaque && !r.state.writeDepth) {
|
|
367
|
+
if ((!r.state.opaque && !r.state.writeDepth) || r.values.transparencyAverage.ref.value > 0) {
|
|
338
368
|
if ((_a = r.values.uDoubleSided) === null || _a === void 0 ? void 0 : _a.ref.value) {
|
|
339
369
|
// render frontfaces and backfaces separately to avoid artefacts
|
|
340
|
-
if (
|
|
370
|
+
if (((_b = r.values.dTransparentBackfaces) === null || _b === void 0 ? void 0 : _b.ref.value) !== 'opaque') {
|
|
341
371
|
renderObject(r, 'colorBlended', 2 /* BlendedBack */);
|
|
342
372
|
}
|
|
343
373
|
renderObject(r, 'colorBlended', 1 /* BlendedFront */);
|
|
@@ -348,34 +378,14 @@ var Renderer;
|
|
|
348
378
|
}
|
|
349
379
|
}
|
|
350
380
|
};
|
|
351
|
-
var
|
|
352
|
-
var _a;
|
|
381
|
+
var renderBlendedVolume = function (group, camera, depthTexture) {
|
|
353
382
|
state.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
|
|
354
383
|
state.enable(gl.BLEND);
|
|
355
|
-
updateInternal(group, camera, depthTexture,
|
|
384
|
+
updateInternal(group, camera, depthTexture, 2 /* Transparent */, false);
|
|
356
385
|
var renderables = group.renderables;
|
|
357
386
|
for (var i = 0, il = renderables.length; i < il; ++i) {
|
|
358
387
|
var r = renderables[i];
|
|
359
|
-
|
|
360
|
-
// uAlpha is updated in "render" so we need to recompute it here
|
|
361
|
-
var alpha = (0, interpolate_1.clamp)(r.values.alpha.ref.value * r.state.alphaFactor, 0, 1);
|
|
362
|
-
if (alpha === 1 && r.values.transparencyAverage.ref.value !== 1 && !((_a = r.values.dXrayShaded) === null || _a === void 0 ? void 0 : _a.ref.value)) {
|
|
363
|
-
renderObject(r, 'colorBlended', 0 /* None */);
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
};
|
|
367
|
-
var renderBlendedVolumeTransparent = function (group, camera, depthTexture) {
|
|
368
|
-
var _a;
|
|
369
|
-
state.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
|
|
370
|
-
state.enable(gl.BLEND);
|
|
371
|
-
updateInternal(group, camera, depthTexture, false, false);
|
|
372
|
-
var renderables = group.renderables;
|
|
373
|
-
for (var i = 0, il = renderables.length; i < il; ++i) {
|
|
374
|
-
var r = renderables[i];
|
|
375
|
-
// TODO: simplify, handle in renderable.state???
|
|
376
|
-
// uAlpha is updated in "render" so we need to recompute it here
|
|
377
|
-
var alpha = (0, interpolate_1.clamp)(r.values.alpha.ref.value * r.state.alphaFactor, 0, 1);
|
|
378
|
-
if (alpha < 1 || r.values.transparencyAverage.ref.value > 0 || ((_a = r.values.dXrayShaded) === null || _a === void 0 ? void 0 : _a.ref.value)) {
|
|
388
|
+
if (r.values.dGeometryType.ref.value === 'directVolume') {
|
|
379
389
|
renderObject(r, 'colorBlended', 0 /* None */);
|
|
380
390
|
}
|
|
381
391
|
}
|
|
@@ -385,21 +395,21 @@ var Renderer;
|
|
|
385
395
|
state.disable(gl.BLEND);
|
|
386
396
|
state.enable(gl.DEPTH_TEST);
|
|
387
397
|
state.depthMask(true);
|
|
388
|
-
updateInternal(group, camera, depthTexture,
|
|
398
|
+
updateInternal(group, camera, depthTexture, 1 /* Opaque */, false);
|
|
389
399
|
var renderables = group.renderables;
|
|
390
400
|
for (var i = 0, il = renderables.length; i < il; ++i) {
|
|
391
401
|
var r = renderables[i];
|
|
392
402
|
// TODO: simplify, handle in renderable.state???
|
|
393
403
|
// uAlpha is updated in "render" so we need to recompute it here
|
|
394
404
|
var alpha = (0, interpolate_1.clamp)(r.values.alpha.ref.value * r.state.alphaFactor, 0, 1);
|
|
395
|
-
if ((alpha === 1 && r.values.transparencyAverage.ref.value !== 1 && r.values.dGeometryType.ref.value !== 'directVolume' && ((_a = r.values.dPointStyle) === null || _a === void 0 ? void 0 : _a.ref.value) !== 'fuzzy' && !((_b = r.values.dXrayShaded) === null || _b === void 0 ? void 0 : _b.ref.value)) || ((_c = r.values.
|
|
405
|
+
if ((alpha === 1 && r.values.transparencyAverage.ref.value !== 1 && r.values.dGeometryType.ref.value !== 'directVolume' && ((_a = r.values.dPointStyle) === null || _a === void 0 ? void 0 : _a.ref.value) !== 'fuzzy' && !((_b = r.values.dXrayShaded) === null || _b === void 0 ? void 0 : _b.ref.value)) || ((_c = r.values.dTransparentBackfaces) === null || _c === void 0 ? void 0 : _c.ref.value) === 'opaque') {
|
|
396
406
|
renderObject(r, 'colorWboit', 0 /* None */);
|
|
397
407
|
}
|
|
398
408
|
}
|
|
399
409
|
};
|
|
400
410
|
var renderWboitTransparent = function (group, camera, depthTexture) {
|
|
401
411
|
var _a, _b;
|
|
402
|
-
updateInternal(group, camera, depthTexture,
|
|
412
|
+
updateInternal(group, camera, depthTexture, 2 /* Transparent */, false);
|
|
403
413
|
var renderables = group.renderables;
|
|
404
414
|
for (var i = 0, il = renderables.length; i < il; ++i) {
|
|
405
415
|
var r = renderables[i];
|
|
@@ -428,22 +438,31 @@ var Renderer;
|
|
|
428
438
|
}
|
|
429
439
|
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
|
|
430
440
|
},
|
|
431
|
-
clearDepth: function () {
|
|
441
|
+
clearDepth: function (packed) {
|
|
442
|
+
if (packed === void 0) { packed = false; }
|
|
432
443
|
state.enable(gl.SCISSOR_TEST);
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
444
|
+
if (packed) {
|
|
445
|
+
state.colorMask(true, true, true, true);
|
|
446
|
+
state.clearColor(1, 1, 1, 1);
|
|
447
|
+
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
|
|
448
|
+
}
|
|
449
|
+
else {
|
|
450
|
+
state.enable(gl.DEPTH_TEST);
|
|
451
|
+
state.depthMask(true);
|
|
452
|
+
gl.clear(gl.DEPTH_BUFFER_BIT);
|
|
453
|
+
}
|
|
436
454
|
},
|
|
437
455
|
update: update,
|
|
438
456
|
renderPick: renderPick,
|
|
439
457
|
renderDepth: renderDepth,
|
|
458
|
+
renderDepthOpaque: renderDepthOpaque,
|
|
459
|
+
renderDepthTransparent: renderDepthTransparent,
|
|
440
460
|
renderMarkingDepth: renderMarkingDepth,
|
|
441
461
|
renderMarkingMask: renderMarkingMask,
|
|
442
462
|
renderBlended: renderBlended,
|
|
443
463
|
renderBlendedOpaque: renderBlendedOpaque,
|
|
444
464
|
renderBlendedTransparent: renderBlendedTransparent,
|
|
445
|
-
|
|
446
|
-
renderBlendedVolumeTransparent: renderBlendedVolumeTransparent,
|
|
465
|
+
renderBlendedVolume: renderBlendedVolume,
|
|
447
466
|
renderWboitOpaque: renderWboitOpaque,
|
|
448
467
|
renderWboitTransparent: renderWboitTransparent,
|
|
449
468
|
setProps: function (props) {
|
|
@@ -26,7 +26,8 @@ interface Scene extends Object3D {
|
|
|
26
26
|
has: (o: GraphicsRenderObject) => boolean;
|
|
27
27
|
clear: () => void;
|
|
28
28
|
forEach: (callbackFn: (value: GraphicsRenderable, key: GraphicsRenderObject) => void) => void;
|
|
29
|
-
|
|
29
|
+
readonly markerAverage: number;
|
|
30
|
+
readonly opacityAverage: number;
|
|
30
31
|
}
|
|
31
32
|
declare namespace Scene {
|
|
32
33
|
interface Group extends Object3D {
|
|
@@ -16,6 +16,7 @@ var array_1 = require("../mol-util/array");
|
|
|
16
16
|
var boundary_helper_1 = require("../mol-math/geometry/boundary-helper");
|
|
17
17
|
var util_1 = require("../mol-data/util");
|
|
18
18
|
var render_item_1 = require("./webgl/render-item");
|
|
19
|
+
var interpolate_1 = require("../mol-math/interpolate");
|
|
19
20
|
var boundaryHelper = new boundary_helper_1.BoundaryHelper('98');
|
|
20
21
|
function calculateBoundingSphere(renderables, boundingSphere, onlyVisible) {
|
|
21
22
|
boundaryHelper.reset();
|
|
@@ -67,6 +68,8 @@ var Scene;
|
|
|
67
68
|
var volumes = [];
|
|
68
69
|
var boundingSphereDirty = true;
|
|
69
70
|
var boundingSphereVisibleDirty = true;
|
|
71
|
+
var markerAverage = 0;
|
|
72
|
+
var opacityAverage = 0;
|
|
70
73
|
var object3d = object3d_1.Object3D.create();
|
|
71
74
|
var view = object3d.view, position = object3d.position, direction = object3d.direction, up = object3d.up;
|
|
72
75
|
function add(o) {
|
|
@@ -122,6 +125,7 @@ var Scene;
|
|
|
122
125
|
return false;
|
|
123
126
|
}
|
|
124
127
|
renderables.sort(renderableSort);
|
|
128
|
+
opacityAverage = calculateOpacityAverage();
|
|
125
129
|
return true;
|
|
126
130
|
}
|
|
127
131
|
var commitQueue = new commit_queue_1.CommitQueue();
|
|
@@ -142,12 +146,45 @@ var Scene;
|
|
|
142
146
|
var newVisibleHash = computeVisibleHash();
|
|
143
147
|
if (newVisibleHash !== visibleHash) {
|
|
144
148
|
boundingSphereVisibleDirty = true;
|
|
149
|
+
opacityAverage = calculateOpacityAverage();
|
|
145
150
|
return true;
|
|
146
151
|
}
|
|
147
152
|
else {
|
|
148
153
|
return false;
|
|
149
154
|
}
|
|
150
155
|
}
|
|
156
|
+
function calculateMarkerAverage() {
|
|
157
|
+
if (primitives.length === 0)
|
|
158
|
+
return 0;
|
|
159
|
+
var count = 0;
|
|
160
|
+
var markerAverage = 0;
|
|
161
|
+
for (var i = 0, il = primitives.length; i < il; ++i) {
|
|
162
|
+
if (!primitives[i].state.visible)
|
|
163
|
+
continue;
|
|
164
|
+
markerAverage += primitives[i].values.markerAverage.ref.value;
|
|
165
|
+
count += 1;
|
|
166
|
+
}
|
|
167
|
+
return count > 0 ? markerAverage / count : 0;
|
|
168
|
+
}
|
|
169
|
+
function calculateOpacityAverage() {
|
|
170
|
+
var _a;
|
|
171
|
+
if (primitives.length === 0)
|
|
172
|
+
return 0;
|
|
173
|
+
var count = 0;
|
|
174
|
+
var opacityAverage = 0;
|
|
175
|
+
for (var i = 0, il = primitives.length; i < il; ++i) {
|
|
176
|
+
var p = primitives[i];
|
|
177
|
+
if (!p.state.visible)
|
|
178
|
+
continue;
|
|
179
|
+
// TODO: simplify, handle in renderable.state???
|
|
180
|
+
// uAlpha is updated in "render" so we need to recompute it here
|
|
181
|
+
var alpha = (0, interpolate_1.clamp)(p.values.alpha.ref.value * p.state.alphaFactor, 0, 1);
|
|
182
|
+
var xray = ((_a = p.values.dXrayShaded) === null || _a === void 0 ? void 0 : _a.ref.value) ? 0.5 : 1;
|
|
183
|
+
opacityAverage += (1 - p.values.transparencyAverage.ref.value) * alpha * xray;
|
|
184
|
+
count += 1;
|
|
185
|
+
}
|
|
186
|
+
return count > 0 ? opacityAverage / count : 0;
|
|
187
|
+
}
|
|
151
188
|
return {
|
|
152
189
|
view: view,
|
|
153
190
|
position: position,
|
|
@@ -177,6 +214,8 @@ var Scene;
|
|
|
177
214
|
else {
|
|
178
215
|
syncVisibility();
|
|
179
216
|
}
|
|
217
|
+
markerAverage = calculateMarkerAverage();
|
|
218
|
+
opacityAverage = calculateOpacityAverage();
|
|
180
219
|
},
|
|
181
220
|
add: function (o) { return commitQueue.add(o); },
|
|
182
221
|
remove: function (o) { return commitQueue.remove(o); },
|
|
@@ -218,17 +257,11 @@ var Scene;
|
|
|
218
257
|
}
|
|
219
258
|
return boundingSphereVisible;
|
|
220
259
|
},
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
markerAverage += primitives[i].values.markerAverage.ref.value;
|
|
227
|
-
}
|
|
228
|
-
for (var i = 0, il = volumes.length; i < il; ++i) {
|
|
229
|
-
markerAverage += volumes[i].values.markerAverage.ref.value;
|
|
230
|
-
}
|
|
231
|
-
return markerAverage / (primitives.length + volumes.length);
|
|
260
|
+
get markerAverage() {
|
|
261
|
+
return markerAverage;
|
|
262
|
+
},
|
|
263
|
+
get opacityAverage() {
|
|
264
|
+
return opacityAverage;
|
|
232
265
|
},
|
|
233
266
|
};
|
|
234
267
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const apply_interior_color = "\nif (interior) {\n if (uInteriorColorFlag) {\n gl_FragColor.rgb = uInteriorColor;\n } else {\n gl_FragColor.rgb *= 1.0 - uInteriorDarkening;\n }\n\n #ifdef
|
|
1
|
+
export declare const apply_interior_color = "\nif (interior) {\n if (uInteriorColorFlag) {\n gl_FragColor.rgb = uInteriorColor;\n } else {\n gl_FragColor.rgb *= 1.0 - uInteriorDarkening;\n }\n\n #ifdef dTransparentBackfaces_opaque\n gl_FragColor.a = 1.0;\n #endif\n}\n";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.apply_interior_color = void 0;
|
|
4
|
-
exports.apply_interior_color = "\nif (interior) {\n if (uInteriorColorFlag) {\n gl_FragColor.rgb = uInteriorColor;\n } else {\n gl_FragColor.rgb *= 1.0 - uInteriorDarkening;\n }\n\n #ifdef
|
|
4
|
+
exports.apply_interior_color = "\nif (interior) {\n if (uInteriorColorFlag) {\n gl_FragColor.rgb = uInteriorColor;\n } else {\n gl_FragColor.rgb *= 1.0 - uInteriorDarkening;\n }\n\n #ifdef dTransparentBackfaces_opaque\n gl_FragColor.a = 1.0;\n #endif\n}\n";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const assign_material_color = "\n#if defined(dRenderVariant_color) || defined(dRenderVariant_marking)\n float marker = uMarker;\n if (uMarker == -1.0) {\n marker = floor(vMarker * 255.0 + 0.5); // rounding required to work on some cards on win\n }\n#endif\n\n#if defined(dRenderVariant_color)\n #if defined(dUsePalette)\n vec4 material = vec4(texture2D(tPalette, vec2(vPaletteV, 0.5)).rgb, uAlpha);\n #elif defined(dColorType_uniform)\n vec4 material = vec4(uColor, uAlpha);\n #elif defined(dColorType_varying)\n vec4 material = vec4(vColor.rgb, uAlpha);\n #endif\n\n // mix material with overpaint\n #if defined(dOverpaint)\n material.rgb = mix(material.rgb, vOverpaint.rgb, vOverpaint.a);\n #endif\n\n float metalness = uMetalness;\n float roughness = uRoughness;\n float bumpiness = uBumpiness;\n #ifdef dSubstance\n metalness = mix(metalness, vSubstance.r, vSubstance.a);\n roughness = mix(roughness, vSubstance.g, vSubstance.a);\n bumpiness = mix(bumpiness, vSubstance.b, vSubstance.a);\n #endif\n#elif defined(dRenderVariant_pick)\n vec4 material = vColor;\n#elif defined(dRenderVariant_depth)\n #
|
|
1
|
+
export declare const assign_material_color = "\n#if defined(dRenderVariant_color) || defined(dRenderVariant_marking)\n float marker = uMarker;\n if (uMarker == -1.0) {\n marker = floor(vMarker * 255.0 + 0.5); // rounding required to work on some cards on win\n }\n#endif\n\n#if defined(dRenderVariant_color)\n #if defined(dUsePalette)\n vec4 material = vec4(texture2D(tPalette, vec2(vPaletteV, 0.5)).rgb, uAlpha);\n #elif defined(dColorType_uniform)\n vec4 material = vec4(uColor, uAlpha);\n #elif defined(dColorType_varying)\n vec4 material = vec4(vColor.rgb, uAlpha);\n #endif\n\n // mix material with overpaint\n #if defined(dOverpaint)\n material.rgb = mix(material.rgb, vOverpaint.rgb, vOverpaint.a);\n #endif\n\n float metalness = uMetalness;\n float roughness = uRoughness;\n float bumpiness = uBumpiness;\n #ifdef dSubstance\n metalness = mix(metalness, vSubstance.r, vSubstance.a);\n roughness = mix(roughness, vSubstance.g, vSubstance.a);\n bumpiness = mix(bumpiness, vSubstance.b, vSubstance.a);\n #endif\n#elif defined(dRenderVariant_pick)\n vec4 material = vColor;\n#elif defined(dRenderVariant_depth)\n if (fragmentDepth > getDepth(gl_FragCoord.xy / uDrawingBufferSize)) {\n discard;\n }\n\n #ifndef dXrayShaded\n #if defined(dTransparency)\n float dta = 1.0 - vTransparency;\n if (vTransparency < 0.2) dta = 1.0; // hard cutoff looks better\n\n if (uRenderMask == MaskTransparent && uAlpha * dta == 1.0) {\n discard;\n } else if (uRenderMask == MaskOpaque && uAlpha * dta < 1.0) {\n discard;\n }\n #else\n if (uRenderMask == MaskTransparent && uAlpha == 1.0) {\n discard;\n } else if (uRenderMask == MaskOpaque && uAlpha < 1.0) {\n discard;\n }\n #endif\n #else\n if (uRenderMask == MaskOpaque) {\n discard;\n }\n #endif\n\n vec4 material = packDepthToRGBA(fragmentDepth);\n#elif defined(dRenderVariant_marking)\n vec4 material;\n if(uMarkingType == 1) {\n if (marker > 0.0)\n discard;\n #ifdef enabledFragDepth\n material = packDepthToRGBA(gl_FragDepthEXT);\n #else\n material = packDepthToRGBA(gl_FragCoord.z);\n #endif\n } else {\n if (marker == 0.0)\n discard;\n float depthTest = 1.0;\n if (uMarkingDepthTest) {\n depthTest = (fragmentDepth >= getDepthPacked(gl_FragCoord.xy / uDrawingBufferSize)) ? 1.0 : 0.0;\n }\n bool isHighlight = intMod(marker, 2.0) > 0.1;\n float viewZ = depthToViewZ(uIsOrtho, fragmentDepth, uNear, uFar);\n float fogFactor = smoothstep(uFogNear, uFogFar, abs(viewZ));\n if (fogFactor == 1.0)\n discard;\n material = vec4(0.0, depthTest, isHighlight ? 1.0 : 0.0, 1.0 - fogFactor);\n }\n#endif\n\n// apply per-group transparency\n#if defined(dTransparency) && (defined(dRenderVariant_pick) || defined(dRenderVariant_color))\n float ta = 1.0 - vTransparency;\n if (vTransparency < 0.2) ta = 1.0; // hard cutoff looks better\n\n #if defined(dRenderVariant_pick)\n if (ta < uPickingAlphaThreshold)\n discard; // ignore so the element below can be picked\n #elif defined(dRenderVariant_color)\n material.a *= ta;\n\n #if defined(dRenderVariant_colorBlended)\n #if defined(dTransparentBackfaces_off)\n if ((uRenderMask == MaskOpaque && material.a < 1.0) ||\n (uRenderMask == MaskTransparent && material.a == 1.0) ||\n (interior && material.a < 1.0)\n ) {\n discard;\n }\n #elif defined(dTransparentBackfaces_on)\n if ((uRenderMask == MaskOpaque && material.a < 1.0) ||\n (uRenderMask == MaskTransparent && material.a == 1.0)\n ) {\n discard;\n }\n #elif defined(dTransparentBackfaces_opaque)\n if (interior) {\n material.a = 1.0;\n } else if (\n (uRenderMask == MaskOpaque && material.a < 1.0) ||\n (uRenderMask == MaskTransparent && material.a == 1.0)\n ) {\n discard;\n }\n #endif\n #endif\n #endif\n#endif\n";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.assign_material_color = void 0;
|
|
4
|
-
exports.assign_material_color = "\n#if defined(dRenderVariant_color) || defined(dRenderVariant_marking)\n float marker = uMarker;\n if (uMarker == -1.0) {\n marker = floor(vMarker * 255.0 + 0.5); // rounding required to work on some cards on win\n }\n#endif\n\n#if defined(dRenderVariant_color)\n #if defined(dUsePalette)\n vec4 material = vec4(texture2D(tPalette, vec2(vPaletteV, 0.5)).rgb, uAlpha);\n #elif defined(dColorType_uniform)\n vec4 material = vec4(uColor, uAlpha);\n #elif defined(dColorType_varying)\n vec4 material = vec4(vColor.rgb, uAlpha);\n #endif\n\n // mix material with overpaint\n #if defined(dOverpaint)\n material.rgb = mix(material.rgb, vOverpaint.rgb, vOverpaint.a);\n #endif\n\n float metalness = uMetalness;\n float roughness = uRoughness;\n float bumpiness = uBumpiness;\n #ifdef dSubstance\n metalness = mix(metalness, vSubstance.r, vSubstance.a);\n roughness = mix(roughness, vSubstance.g, vSubstance.a);\n bumpiness = mix(bumpiness, vSubstance.b, vSubstance.a);\n #endif\n#elif defined(dRenderVariant_pick)\n vec4 material = vColor;\n#elif defined(dRenderVariant_depth)\n #
|
|
4
|
+
exports.assign_material_color = "\n#if defined(dRenderVariant_color) || defined(dRenderVariant_marking)\n float marker = uMarker;\n if (uMarker == -1.0) {\n marker = floor(vMarker * 255.0 + 0.5); // rounding required to work on some cards on win\n }\n#endif\n\n#if defined(dRenderVariant_color)\n #if defined(dUsePalette)\n vec4 material = vec4(texture2D(tPalette, vec2(vPaletteV, 0.5)).rgb, uAlpha);\n #elif defined(dColorType_uniform)\n vec4 material = vec4(uColor, uAlpha);\n #elif defined(dColorType_varying)\n vec4 material = vec4(vColor.rgb, uAlpha);\n #endif\n\n // mix material with overpaint\n #if defined(dOverpaint)\n material.rgb = mix(material.rgb, vOverpaint.rgb, vOverpaint.a);\n #endif\n\n float metalness = uMetalness;\n float roughness = uRoughness;\n float bumpiness = uBumpiness;\n #ifdef dSubstance\n metalness = mix(metalness, vSubstance.r, vSubstance.a);\n roughness = mix(roughness, vSubstance.g, vSubstance.a);\n bumpiness = mix(bumpiness, vSubstance.b, vSubstance.a);\n #endif\n#elif defined(dRenderVariant_pick)\n vec4 material = vColor;\n#elif defined(dRenderVariant_depth)\n if (fragmentDepth > getDepth(gl_FragCoord.xy / uDrawingBufferSize)) {\n discard;\n }\n\n #ifndef dXrayShaded\n #if defined(dTransparency)\n float dta = 1.0 - vTransparency;\n if (vTransparency < 0.2) dta = 1.0; // hard cutoff looks better\n\n if (uRenderMask == MaskTransparent && uAlpha * dta == 1.0) {\n discard;\n } else if (uRenderMask == MaskOpaque && uAlpha * dta < 1.0) {\n discard;\n }\n #else\n if (uRenderMask == MaskTransparent && uAlpha == 1.0) {\n discard;\n } else if (uRenderMask == MaskOpaque && uAlpha < 1.0) {\n discard;\n }\n #endif\n #else\n if (uRenderMask == MaskOpaque) {\n discard;\n }\n #endif\n\n vec4 material = packDepthToRGBA(fragmentDepth);\n#elif defined(dRenderVariant_marking)\n vec4 material;\n if(uMarkingType == 1) {\n if (marker > 0.0)\n discard;\n #ifdef enabledFragDepth\n material = packDepthToRGBA(gl_FragDepthEXT);\n #else\n material = packDepthToRGBA(gl_FragCoord.z);\n #endif\n } else {\n if (marker == 0.0)\n discard;\n float depthTest = 1.0;\n if (uMarkingDepthTest) {\n depthTest = (fragmentDepth >= getDepthPacked(gl_FragCoord.xy / uDrawingBufferSize)) ? 1.0 : 0.0;\n }\n bool isHighlight = intMod(marker, 2.0) > 0.1;\n float viewZ = depthToViewZ(uIsOrtho, fragmentDepth, uNear, uFar);\n float fogFactor = smoothstep(uFogNear, uFogFar, abs(viewZ));\n if (fogFactor == 1.0)\n discard;\n material = vec4(0.0, depthTest, isHighlight ? 1.0 : 0.0, 1.0 - fogFactor);\n }\n#endif\n\n// apply per-group transparency\n#if defined(dTransparency) && (defined(dRenderVariant_pick) || defined(dRenderVariant_color))\n float ta = 1.0 - vTransparency;\n if (vTransparency < 0.2) ta = 1.0; // hard cutoff looks better\n\n #if defined(dRenderVariant_pick)\n if (ta < uPickingAlphaThreshold)\n discard; // ignore so the element below can be picked\n #elif defined(dRenderVariant_color)\n material.a *= ta;\n\n #if defined(dRenderVariant_colorBlended)\n #if defined(dTransparentBackfaces_off)\n if ((uRenderMask == MaskOpaque && material.a < 1.0) ||\n (uRenderMask == MaskTransparent && material.a == 1.0) ||\n (interior && material.a < 1.0)\n ) {\n discard;\n }\n #elif defined(dTransparentBackfaces_on)\n if ((uRenderMask == MaskOpaque && material.a < 1.0) ||\n (uRenderMask == MaskTransparent && material.a == 1.0)\n ) {\n discard;\n }\n #elif defined(dTransparentBackfaces_opaque)\n if (interior) {\n material.a = 1.0;\n } else if (\n (uRenderMask == MaskOpaque && material.a < 1.0) ||\n (uRenderMask == MaskTransparent && material.a == 1.0)\n ) {\n discard;\n }\n #endif\n #endif\n #endif\n#endif\n";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const check_picking_alpha = "\nfloat viewZ = depthToViewZ(uIsOrtho, fragmentDepth, uNear, uFar);\nfloat fogFactor = smoothstep(uFogNear, uFogFar, abs(viewZ));\nfloat alpha = (1.0 - fogFactor) * uAlpha;\n// if not opaque enough ignore so the element below can be picked\nif (uAlpha < uPickingAlphaThreshold || alpha < 0.1) {\n #ifdef
|
|
1
|
+
export declare const check_picking_alpha = "\nfloat viewZ = depthToViewZ(uIsOrtho, fragmentDepth, uNear, uFar);\nfloat fogFactor = smoothstep(uFogNear, uFogFar, abs(viewZ));\nfloat alpha = (1.0 - fogFactor) * uAlpha;\n// if not opaque enough ignore so the element below can be picked\nif (uAlpha < uPickingAlphaThreshold || alpha < 0.1) {\n #ifdef dTransparentBackfaces_opaque\n if (!interior) discard;\n #else\n discard;\n #endif\n}\n";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.check_picking_alpha = void 0;
|
|
4
|
-
exports.check_picking_alpha = "\nfloat viewZ = depthToViewZ(uIsOrtho, fragmentDepth, uNear, uFar);\nfloat fogFactor = smoothstep(uFogNear, uFogFar, abs(viewZ));\nfloat alpha = (1.0 - fogFactor) * uAlpha;\n// if not opaque enough ignore so the element below can be picked\nif (uAlpha < uPickingAlphaThreshold || alpha < 0.1) {\n #ifdef
|
|
4
|
+
exports.check_picking_alpha = "\nfloat viewZ = depthToViewZ(uIsOrtho, fragmentDepth, uNear, uFar);\nfloat fogFactor = smoothstep(uFogNear, uFogFar, abs(viewZ));\nfloat alpha = (1.0 - fogFactor) * uAlpha;\n// if not opaque enough ignore so the element below can be picked\nif (uAlpha < uPickingAlphaThreshold || alpha < 0.1) {\n #ifdef dTransparentBackfaces_opaque\n if (!interior) discard;\n #else\n discard;\n #endif\n}\n";
|
|
@@ -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\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\n varying float vClipping;\n #else\n flat in float vClipping;\n #endif\n #endif\n#endif\n\nuniform vec3 uHighlightColor;\nuniform vec3 uSelectColor;\nuniform float uHighlightStrength;\nuniform float uSelectStrength;\nuniform int uMarkerPriority;\n\n#if defined(dRenderVariant_color) || defined(dRenderVariant_marking)\n uniform float uMarker;\n #if __VERSION__ == 100\n varying float vMarker;\n #else\n flat in float vMarker;\n #endif\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 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;\n\nuniform mat4 uProjection;\n\nuniform
|
|
1
|
+
export declare const common_frag_params = "\nuniform int uObjectId;\nuniform int uInstanceCount;\nuniform int uGroupCount;\n\nuniform int uPickType;\nuniform int uMarkingType;\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\n varying float vClipping;\n #else\n flat in float vClipping;\n #endif\n #endif\n#endif\n\nuniform vec3 uHighlightColor;\nuniform vec3 uSelectColor;\nuniform float uHighlightStrength;\nuniform float uSelectStrength;\nuniform int uMarkerPriority;\n\n#if defined(dRenderVariant_color) || defined(dRenderVariant_marking)\n uniform float uMarker;\n #if __VERSION__ == 100\n varying float vMarker;\n #else\n flat in float vMarker;\n #endif\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 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;\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\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";
|