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
|
@@ -9,7 +9,7 @@ import { createGraphicsRenderItem } from '../webgl/render-item';
|
|
|
9
9
|
import { GlobalUniformSchema, BaseSchema, AttributeSpec, ElementsSpec, DefineSpec, InternalSchema, GlobalTextureSchema, ValueSpec, UniformSpec } from './schema';
|
|
10
10
|
import { MeshShaderCode } from '../shader-code';
|
|
11
11
|
import { ValueCell } from '../../mol-util';
|
|
12
|
-
export var MeshSchema = __assign(__assign({}, BaseSchema), { aGroup: AttributeSpec('float32', 1, 0), aPosition: AttributeSpec('float32', 3, 0), aNormal: AttributeSpec('float32', 3, 0), elements: ElementsSpec('uint32'), dFlatShaded: DefineSpec('boolean'), uDoubleSided: UniformSpec('b'), dFlipSided: DefineSpec('boolean'), dIgnoreLight: DefineSpec('boolean'), dXrayShaded: DefineSpec('boolean'),
|
|
12
|
+
export var MeshSchema = __assign(__assign({}, BaseSchema), { aGroup: AttributeSpec('float32', 1, 0), aPosition: AttributeSpec('float32', 3, 0), aNormal: AttributeSpec('float32', 3, 0), elements: ElementsSpec('uint32'), dFlatShaded: DefineSpec('boolean'), uDoubleSided: UniformSpec('b'), dFlipSided: DefineSpec('boolean'), dIgnoreLight: DefineSpec('boolean'), dXrayShaded: DefineSpec('boolean'), dTransparentBackfaces: DefineSpec('string', ['off', 'on', 'opaque']), uBumpFrequency: UniformSpec('f'), uBumpAmplitude: UniformSpec('f'), meta: ValueSpec('unknown') });
|
|
13
13
|
export function MeshRenderable(ctx, id, values, state, materialId, variants) {
|
|
14
14
|
var schema = __assign(__assign(__assign(__assign({}, GlobalUniformSchema), GlobalTextureSchema), InternalSchema), MeshSchema);
|
|
15
15
|
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,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
|
*/
|
|
@@ -94,7 +94,7 @@ export var GlobalUniformSchema = {
|
|
|
94
94
|
uSelectStrength: UniformSpec('f'),
|
|
95
95
|
uMarkerPriority: UniformSpec('i'),
|
|
96
96
|
uXrayEdgeFalloff: UniformSpec('f'),
|
|
97
|
-
|
|
97
|
+
uRenderMask: UniformSpec('i'),
|
|
98
98
|
uMarkingDepthTest: UniformSpec('b'),
|
|
99
99
|
uMarkingType: UniformSpec('i'),
|
|
100
100
|
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">;
|
|
@@ -9,7 +9,7 @@ import { createGraphicsRenderItem } from '../webgl/render-item';
|
|
|
9
9
|
import { GlobalUniformSchema, BaseSchema, AttributeSpec, InternalSchema, SizeSchema, ElementsSpec, ValueSpec, DefineSpec, GlobalTextureSchema, UniformSpec } from './schema';
|
|
10
10
|
import { SpheresShaderCode } from '../shader-code';
|
|
11
11
|
import { ValueCell } from '../../mol-util';
|
|
12
|
-
export var SpheresSchema = __assign(__assign(__assign({}, BaseSchema), SizeSchema), { aGroup: AttributeSpec('float32', 1, 0), aPosition: AttributeSpec('float32', 3, 0), aMapping: AttributeSpec('float32', 2, 0), elements: ElementsSpec('uint32'), padding: ValueSpec('number'), uDoubleSided: UniformSpec('b'), dIgnoreLight: DefineSpec('boolean'), dXrayShaded: DefineSpec('boolean'),
|
|
12
|
+
export var SpheresSchema = __assign(__assign(__assign({}, BaseSchema), SizeSchema), { aGroup: AttributeSpec('float32', 1, 0), aPosition: AttributeSpec('float32', 3, 0), aMapping: AttributeSpec('float32', 2, 0), elements: ElementsSpec('uint32'), padding: ValueSpec('number'), uDoubleSided: UniformSpec('b'), dIgnoreLight: DefineSpec('boolean'), dXrayShaded: DefineSpec('boolean'), dTransparentBackfaces: DefineSpec('string', ['off', 'on', 'opaque']), uBumpFrequency: UniformSpec('f'), uBumpAmplitude: UniformSpec('f') });
|
|
13
13
|
export function SpheresRenderable(ctx, id, values, state, materialId, variants) {
|
|
14
14
|
var schema = __assign(__assign(__assign(__assign({}, GlobalUniformSchema), GlobalTextureSchema), InternalSchema), SpheresSchema);
|
|
15
15
|
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">;
|
|
@@ -9,7 +9,7 @@ import { createGraphicsRenderItem } from '../webgl/render-item';
|
|
|
9
9
|
import { GlobalUniformSchema, BaseSchema, DefineSpec, InternalSchema, UniformSpec, TextureSpec, GlobalTextureSchema, ValueSpec } from './schema';
|
|
10
10
|
import { MeshShaderCode } from '../shader-code';
|
|
11
11
|
import { ValueCell } from '../../mol-util';
|
|
12
|
-
export var TextureMeshSchema = __assign(__assign({}, BaseSchema), { uGeoTexDim: UniformSpec('v2', 'buffered'), tPosition: TextureSpec('texture', 'rgb', 'float', 'nearest'), tGroup: TextureSpec('texture', 'alpha', 'float', 'nearest'), tNormal: TextureSpec('texture', 'rgb', 'float', 'nearest'), dFlatShaded: DefineSpec('boolean'), uDoubleSided: UniformSpec('b'), dFlipSided: DefineSpec('boolean'), dIgnoreLight: DefineSpec('boolean'), dXrayShaded: DefineSpec('boolean'),
|
|
12
|
+
export var TextureMeshSchema = __assign(__assign({}, BaseSchema), { uGeoTexDim: UniformSpec('v2', 'buffered'), tPosition: TextureSpec('texture', 'rgb', 'float', 'nearest'), tGroup: TextureSpec('texture', 'alpha', 'float', 'nearest'), tNormal: TextureSpec('texture', 'rgb', 'float', 'nearest'), dFlatShaded: DefineSpec('boolean'), uDoubleSided: UniformSpec('b'), dFlipSided: DefineSpec('boolean'), dIgnoreLight: DefineSpec('boolean'), dXrayShaded: DefineSpec('boolean'), dTransparentBackfaces: DefineSpec('string', ['off', 'on', 'opaque']), uBumpFrequency: UniformSpec('f'), uBumpAmplitude: UniformSpec('f'), meta: ValueSpec('unknown') });
|
|
13
13
|
export function TextureMeshRenderable(ctx, id, values, state, materialId, variants) {
|
|
14
14
|
var schema = __assign(__assign(__assign(__assign({}, GlobalUniformSchema), GlobalTextureSchema), InternalSchema), TextureMeshSchema);
|
|
15
15
|
var internalValues = {
|
package/lib/mol-gl/renderer.d.ts
CHANGED
|
@@ -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;
|
package/lib/mol-gl/renderer.js
CHANGED
|
@@ -64,7 +64,9 @@ var Renderer;
|
|
|
64
64
|
var drawingBufferSize = Vec2.create(gl.drawingBufferWidth, gl.drawingBufferHeight);
|
|
65
65
|
var bgColor = Color.toVec3Normalized(Vec3(), p.backgroundColor);
|
|
66
66
|
var transparentBackground = false;
|
|
67
|
-
var emptyDepthTexture = ctx.resources.texture('image-
|
|
67
|
+
var emptyDepthTexture = ctx.resources.texture('image-uint8', 'rgba', 'ubyte', 'nearest');
|
|
68
|
+
emptyDepthTexture.define(1, 1);
|
|
69
|
+
emptyDepthTexture.load({ array: new Uint8Array([255, 255, 255, 255]), width: 1, height: 1 });
|
|
68
70
|
var sharedTexturesList = [
|
|
69
71
|
['tDepth', emptyDepthTexture]
|
|
70
72
|
];
|
|
@@ -101,7 +103,7 @@ var Renderer;
|
|
|
101
103
|
uFogNear: ValueCell.create(1),
|
|
102
104
|
uFogFar: ValueCell.create(10000),
|
|
103
105
|
uFogColor: ValueCell.create(bgColor),
|
|
104
|
-
|
|
106
|
+
uRenderMask: ValueCell.create(0),
|
|
105
107
|
uMarkingDepthTest: ValueCell.create(false),
|
|
106
108
|
uPickType: ValueCell.create(0 /* None */),
|
|
107
109
|
uMarkingType: ValueCell.create(0 /* None */),
|
|
@@ -220,14 +222,14 @@ var Renderer;
|
|
|
220
222
|
ValueCell.updateIfChanged(globalUniforms.uFogNear, camera.fogNear);
|
|
221
223
|
ValueCell.updateIfChanged(globalUniforms.uTransparentBackground, transparentBackground);
|
|
222
224
|
};
|
|
223
|
-
var updateInternal = function (group, camera, depthTexture,
|
|
225
|
+
var updateInternal = function (group, camera, depthTexture, renderMask, markingDepthTest) {
|
|
224
226
|
arrayMapUpsert(sharedTexturesList, 'tDepth', depthTexture || emptyDepthTexture);
|
|
225
227
|
ValueCell.update(globalUniforms.uModel, group.view);
|
|
226
228
|
ValueCell.update(globalUniforms.uModelView, Mat4.mul(modelView, group.view, camera.view));
|
|
227
229
|
ValueCell.update(globalUniforms.uInvModelView, Mat4.invert(invModelView, modelView));
|
|
228
230
|
ValueCell.update(globalUniforms.uModelViewProjection, Mat4.mul(modelViewProjection, modelView, camera.projection));
|
|
229
231
|
ValueCell.update(globalUniforms.uInvModelViewProjection, Mat4.invert(invModelViewProjection, modelViewProjection));
|
|
230
|
-
ValueCell.updateIfChanged(globalUniforms.
|
|
232
|
+
ValueCell.updateIfChanged(globalUniforms.uRenderMask, renderMask);
|
|
231
233
|
ValueCell.updateIfChanged(globalUniforms.uMarkingDepthTest, markingDepthTest);
|
|
232
234
|
state.enable(gl.SCISSOR_TEST);
|
|
233
235
|
state.colorMask(true, true, true, true);
|
|
@@ -241,7 +243,7 @@ var Renderer;
|
|
|
241
243
|
state.disable(gl.BLEND);
|
|
242
244
|
state.enable(gl.DEPTH_TEST);
|
|
243
245
|
state.depthMask(true);
|
|
244
|
-
updateInternal(group, camera, depthTexture,
|
|
246
|
+
updateInternal(group, camera, depthTexture, 0 /* All */, false);
|
|
245
247
|
ValueCell.updateIfChanged(globalUniforms.uPickType, pickType);
|
|
246
248
|
var renderables = group.renderables;
|
|
247
249
|
for (var i = 0, il = renderables.length; i < il; ++i) {
|
|
@@ -254,17 +256,45 @@ var Renderer;
|
|
|
254
256
|
state.disable(gl.BLEND);
|
|
255
257
|
state.enable(gl.DEPTH_TEST);
|
|
256
258
|
state.depthMask(true);
|
|
257
|
-
updateInternal(group, camera, depthTexture,
|
|
259
|
+
updateInternal(group, camera, depthTexture, 0 /* All */, false);
|
|
258
260
|
var renderables = group.renderables;
|
|
259
261
|
for (var i = 0, il = renderables.length; i < il; ++i) {
|
|
260
262
|
renderObject(renderables[i], 'depth', 0 /* None */);
|
|
261
263
|
}
|
|
262
264
|
};
|
|
265
|
+
var renderDepthOpaque = function (group, camera, depthTexture) {
|
|
266
|
+
var _a;
|
|
267
|
+
state.disable(gl.BLEND);
|
|
268
|
+
state.enable(gl.DEPTH_TEST);
|
|
269
|
+
state.depthMask(true);
|
|
270
|
+
updateInternal(group, camera, depthTexture, 1 /* Opaque */, false);
|
|
271
|
+
var renderables = group.renderables;
|
|
272
|
+
for (var i = 0, il = renderables.length; i < il; ++i) {
|
|
273
|
+
var r = renderables[i];
|
|
274
|
+
if (r.state.opaque && r.values.transparencyAverage.ref.value !== 1 && !((_a = r.values.dXrayShaded) === null || _a === void 0 ? void 0 : _a.ref.value)) {
|
|
275
|
+
renderObject(r, 'depth', 0 /* None */);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
};
|
|
279
|
+
var renderDepthTransparent = function (group, camera, depthTexture) {
|
|
280
|
+
var _a;
|
|
281
|
+
state.disable(gl.BLEND);
|
|
282
|
+
state.enable(gl.DEPTH_TEST);
|
|
283
|
+
state.depthMask(true);
|
|
284
|
+
updateInternal(group, camera, depthTexture, 2 /* Transparent */, false);
|
|
285
|
+
var renderables = group.renderables;
|
|
286
|
+
for (var i = 0, il = renderables.length; i < il; ++i) {
|
|
287
|
+
var r = renderables[i];
|
|
288
|
+
if (!r.state.opaque || r.values.transparencyAverage.ref.value > 0 || ((_a = r.values.dXrayShaded) === null || _a === void 0 ? void 0 : _a.ref.value)) {
|
|
289
|
+
renderObject(r, 'depth', 0 /* None */);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
};
|
|
263
293
|
var renderMarkingDepth = function (group, camera, depthTexture) {
|
|
264
294
|
state.disable(gl.BLEND);
|
|
265
295
|
state.enable(gl.DEPTH_TEST);
|
|
266
296
|
state.depthMask(true);
|
|
267
|
-
updateInternal(group, camera, depthTexture,
|
|
297
|
+
updateInternal(group, camera, depthTexture, 0 /* All */, false);
|
|
268
298
|
ValueCell.updateIfChanged(globalUniforms.uMarkingType, 1 /* Depth */);
|
|
269
299
|
var renderables = group.renderables;
|
|
270
300
|
for (var i = 0, il = renderables.length; i < il; ++i) {
|
|
@@ -278,7 +308,7 @@ var Renderer;
|
|
|
278
308
|
state.disable(gl.BLEND);
|
|
279
309
|
state.enable(gl.DEPTH_TEST);
|
|
280
310
|
state.depthMask(true);
|
|
281
|
-
updateInternal(group, camera, depthTexture,
|
|
311
|
+
updateInternal(group, camera, depthTexture, 0 /* All */, !!depthTexture);
|
|
282
312
|
ValueCell.updateIfChanged(globalUniforms.uMarkingType, 2 /* Mask */);
|
|
283
313
|
var renderables = group.renderables;
|
|
284
314
|
for (var i = 0, il = renderables.length; i < il; ++i) {
|
|
@@ -297,14 +327,14 @@ var Renderer;
|
|
|
297
327
|
state.disable(gl.BLEND);
|
|
298
328
|
state.enable(gl.DEPTH_TEST);
|
|
299
329
|
state.depthMask(true);
|
|
300
|
-
updateInternal(group, camera, depthTexture,
|
|
330
|
+
updateInternal(group, camera, depthTexture, 1 /* Opaque */, false);
|
|
301
331
|
var renderables = group.renderables;
|
|
302
332
|
for (var i = 0, il = renderables.length; i < il; ++i) {
|
|
303
333
|
var r = renderables[i];
|
|
304
334
|
if (r.state.opaque) {
|
|
305
335
|
renderObject(r, 'colorBlended', 0 /* None */);
|
|
306
336
|
}
|
|
307
|
-
else if (((_a = r.values.uDoubleSided) === null || _a === void 0 ? void 0 : _a.ref.value) && ((_b = r.values.
|
|
337
|
+
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') {
|
|
308
338
|
renderObject(r, 'colorBlended', 2 /* BlendedBack */);
|
|
309
339
|
}
|
|
310
340
|
}
|
|
@@ -312,7 +342,7 @@ var Renderer;
|
|
|
312
342
|
var renderBlendedTransparent = function (group, camera, depthTexture) {
|
|
313
343
|
var _a, _b;
|
|
314
344
|
state.enable(gl.DEPTH_TEST);
|
|
315
|
-
updateInternal(group, camera, depthTexture,
|
|
345
|
+
updateInternal(group, camera, depthTexture, 2 /* Transparent */, false);
|
|
316
346
|
var renderables = group.renderables;
|
|
317
347
|
if (transparentBackground) {
|
|
318
348
|
state.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
|
|
@@ -331,10 +361,10 @@ var Renderer;
|
|
|
331
361
|
state.depthMask(false);
|
|
332
362
|
for (var i = 0, il = renderables.length; i < il; ++i) {
|
|
333
363
|
var r = renderables[i];
|
|
334
|
-
if (!r.state.opaque && !r.state.writeDepth) {
|
|
364
|
+
if ((!r.state.opaque && !r.state.writeDepth) || r.values.transparencyAverage.ref.value > 0) {
|
|
335
365
|
if ((_a = r.values.uDoubleSided) === null || _a === void 0 ? void 0 : _a.ref.value) {
|
|
336
366
|
// render frontfaces and backfaces separately to avoid artefacts
|
|
337
|
-
if (
|
|
367
|
+
if (((_b = r.values.dTransparentBackfaces) === null || _b === void 0 ? void 0 : _b.ref.value) !== 'opaque') {
|
|
338
368
|
renderObject(r, 'colorBlended', 2 /* BlendedBack */);
|
|
339
369
|
}
|
|
340
370
|
renderObject(r, 'colorBlended', 1 /* BlendedFront */);
|
|
@@ -345,34 +375,14 @@ var Renderer;
|
|
|
345
375
|
}
|
|
346
376
|
}
|
|
347
377
|
};
|
|
348
|
-
var
|
|
349
|
-
var _a;
|
|
378
|
+
var renderBlendedVolume = function (group, camera, depthTexture) {
|
|
350
379
|
state.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
|
|
351
380
|
state.enable(gl.BLEND);
|
|
352
|
-
updateInternal(group, camera, depthTexture,
|
|
381
|
+
updateInternal(group, camera, depthTexture, 2 /* Transparent */, false);
|
|
353
382
|
var renderables = group.renderables;
|
|
354
383
|
for (var i = 0, il = renderables.length; i < il; ++i) {
|
|
355
384
|
var r = renderables[i];
|
|
356
|
-
|
|
357
|
-
// uAlpha is updated in "render" so we need to recompute it here
|
|
358
|
-
var alpha = clamp(r.values.alpha.ref.value * r.state.alphaFactor, 0, 1);
|
|
359
|
-
if (alpha === 1 && r.values.transparencyAverage.ref.value !== 1 && !((_a = r.values.dXrayShaded) === null || _a === void 0 ? void 0 : _a.ref.value)) {
|
|
360
|
-
renderObject(r, 'colorBlended', 0 /* None */);
|
|
361
|
-
}
|
|
362
|
-
}
|
|
363
|
-
};
|
|
364
|
-
var renderBlendedVolumeTransparent = function (group, camera, depthTexture) {
|
|
365
|
-
var _a;
|
|
366
|
-
state.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
|
|
367
|
-
state.enable(gl.BLEND);
|
|
368
|
-
updateInternal(group, camera, depthTexture, false, false);
|
|
369
|
-
var renderables = group.renderables;
|
|
370
|
-
for (var i = 0, il = renderables.length; i < il; ++i) {
|
|
371
|
-
var r = renderables[i];
|
|
372
|
-
// TODO: simplify, handle in renderable.state???
|
|
373
|
-
// uAlpha is updated in "render" so we need to recompute it here
|
|
374
|
-
var alpha = clamp(r.values.alpha.ref.value * r.state.alphaFactor, 0, 1);
|
|
375
|
-
if (alpha < 1 || r.values.transparencyAverage.ref.value > 0 || ((_a = r.values.dXrayShaded) === null || _a === void 0 ? void 0 : _a.ref.value)) {
|
|
385
|
+
if (r.values.dGeometryType.ref.value === 'directVolume') {
|
|
376
386
|
renderObject(r, 'colorBlended', 0 /* None */);
|
|
377
387
|
}
|
|
378
388
|
}
|
|
@@ -382,21 +392,21 @@ var Renderer;
|
|
|
382
392
|
state.disable(gl.BLEND);
|
|
383
393
|
state.enable(gl.DEPTH_TEST);
|
|
384
394
|
state.depthMask(true);
|
|
385
|
-
updateInternal(group, camera, depthTexture,
|
|
395
|
+
updateInternal(group, camera, depthTexture, 1 /* Opaque */, false);
|
|
386
396
|
var renderables = group.renderables;
|
|
387
397
|
for (var i = 0, il = renderables.length; i < il; ++i) {
|
|
388
398
|
var r = renderables[i];
|
|
389
399
|
// TODO: simplify, handle in renderable.state???
|
|
390
400
|
// uAlpha is updated in "render" so we need to recompute it here
|
|
391
401
|
var alpha = clamp(r.values.alpha.ref.value * r.state.alphaFactor, 0, 1);
|
|
392
|
-
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.
|
|
402
|
+
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') {
|
|
393
403
|
renderObject(r, 'colorWboit', 0 /* None */);
|
|
394
404
|
}
|
|
395
405
|
}
|
|
396
406
|
};
|
|
397
407
|
var renderWboitTransparent = function (group, camera, depthTexture) {
|
|
398
408
|
var _a, _b;
|
|
399
|
-
updateInternal(group, camera, depthTexture,
|
|
409
|
+
updateInternal(group, camera, depthTexture, 2 /* Transparent */, false);
|
|
400
410
|
var renderables = group.renderables;
|
|
401
411
|
for (var i = 0, il = renderables.length; i < il; ++i) {
|
|
402
412
|
var r = renderables[i];
|
|
@@ -425,22 +435,31 @@ var Renderer;
|
|
|
425
435
|
}
|
|
426
436
|
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
|
|
427
437
|
},
|
|
428
|
-
clearDepth: function () {
|
|
438
|
+
clearDepth: function (packed) {
|
|
439
|
+
if (packed === void 0) { packed = false; }
|
|
429
440
|
state.enable(gl.SCISSOR_TEST);
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
441
|
+
if (packed) {
|
|
442
|
+
state.colorMask(true, true, true, true);
|
|
443
|
+
state.clearColor(1, 1, 1, 1);
|
|
444
|
+
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
|
|
445
|
+
}
|
|
446
|
+
else {
|
|
447
|
+
state.enable(gl.DEPTH_TEST);
|
|
448
|
+
state.depthMask(true);
|
|
449
|
+
gl.clear(gl.DEPTH_BUFFER_BIT);
|
|
450
|
+
}
|
|
433
451
|
},
|
|
434
452
|
update: update,
|
|
435
453
|
renderPick: renderPick,
|
|
436
454
|
renderDepth: renderDepth,
|
|
455
|
+
renderDepthOpaque: renderDepthOpaque,
|
|
456
|
+
renderDepthTransparent: renderDepthTransparent,
|
|
437
457
|
renderMarkingDepth: renderMarkingDepth,
|
|
438
458
|
renderMarkingMask: renderMarkingMask,
|
|
439
459
|
renderBlended: renderBlended,
|
|
440
460
|
renderBlendedOpaque: renderBlendedOpaque,
|
|
441
461
|
renderBlendedTransparent: renderBlendedTransparent,
|
|
442
|
-
|
|
443
|
-
renderBlendedVolumeTransparent: renderBlendedVolumeTransparent,
|
|
462
|
+
renderBlendedVolume: renderBlendedVolume,
|
|
444
463
|
renderWboitOpaque: renderWboitOpaque,
|
|
445
464
|
renderWboitTransparent: renderWboitTransparent,
|
|
446
465
|
setProps: function (props) {
|
package/lib/mol-gl/scene.d.ts
CHANGED
|
@@ -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 {
|
package/lib/mol-gl/scene.js
CHANGED
|
@@ -13,6 +13,7 @@ import { arraySetRemove } from '../mol-util/array';
|
|
|
13
13
|
import { BoundaryHelper } from '../mol-math/geometry/boundary-helper';
|
|
14
14
|
import { hash1 } from '../mol-data/util';
|
|
15
15
|
import { GraphicsRenderVariants } from './webgl/render-item';
|
|
16
|
+
import { clamp } from '../mol-math/interpolate';
|
|
16
17
|
var boundaryHelper = new BoundaryHelper('98');
|
|
17
18
|
function calculateBoundingSphere(renderables, boundingSphere, onlyVisible) {
|
|
18
19
|
boundaryHelper.reset();
|
|
@@ -64,6 +65,8 @@ var Scene;
|
|
|
64
65
|
var volumes = [];
|
|
65
66
|
var boundingSphereDirty = true;
|
|
66
67
|
var boundingSphereVisibleDirty = true;
|
|
68
|
+
var markerAverage = 0;
|
|
69
|
+
var opacityAverage = 0;
|
|
67
70
|
var object3d = Object3D.create();
|
|
68
71
|
var view = object3d.view, position = object3d.position, direction = object3d.direction, up = object3d.up;
|
|
69
72
|
function add(o) {
|
|
@@ -119,6 +122,7 @@ var Scene;
|
|
|
119
122
|
return false;
|
|
120
123
|
}
|
|
121
124
|
renderables.sort(renderableSort);
|
|
125
|
+
opacityAverage = calculateOpacityAverage();
|
|
122
126
|
return true;
|
|
123
127
|
}
|
|
124
128
|
var commitQueue = new CommitQueue();
|
|
@@ -139,12 +143,45 @@ var Scene;
|
|
|
139
143
|
var newVisibleHash = computeVisibleHash();
|
|
140
144
|
if (newVisibleHash !== visibleHash) {
|
|
141
145
|
boundingSphereVisibleDirty = true;
|
|
146
|
+
opacityAverage = calculateOpacityAverage();
|
|
142
147
|
return true;
|
|
143
148
|
}
|
|
144
149
|
else {
|
|
145
150
|
return false;
|
|
146
151
|
}
|
|
147
152
|
}
|
|
153
|
+
function calculateMarkerAverage() {
|
|
154
|
+
if (primitives.length === 0)
|
|
155
|
+
return 0;
|
|
156
|
+
var count = 0;
|
|
157
|
+
var markerAverage = 0;
|
|
158
|
+
for (var i = 0, il = primitives.length; i < il; ++i) {
|
|
159
|
+
if (!primitives[i].state.visible)
|
|
160
|
+
continue;
|
|
161
|
+
markerAverage += primitives[i].values.markerAverage.ref.value;
|
|
162
|
+
count += 1;
|
|
163
|
+
}
|
|
164
|
+
return count > 0 ? markerAverage / count : 0;
|
|
165
|
+
}
|
|
166
|
+
function calculateOpacityAverage() {
|
|
167
|
+
var _a;
|
|
168
|
+
if (primitives.length === 0)
|
|
169
|
+
return 0;
|
|
170
|
+
var count = 0;
|
|
171
|
+
var opacityAverage = 0;
|
|
172
|
+
for (var i = 0, il = primitives.length; i < il; ++i) {
|
|
173
|
+
var p = primitives[i];
|
|
174
|
+
if (!p.state.visible)
|
|
175
|
+
continue;
|
|
176
|
+
// TODO: simplify, handle in renderable.state???
|
|
177
|
+
// uAlpha is updated in "render" so we need to recompute it here
|
|
178
|
+
var alpha = clamp(p.values.alpha.ref.value * p.state.alphaFactor, 0, 1);
|
|
179
|
+
var xray = ((_a = p.values.dXrayShaded) === null || _a === void 0 ? void 0 : _a.ref.value) ? 0.5 : 1;
|
|
180
|
+
opacityAverage += (1 - p.values.transparencyAverage.ref.value) * alpha * xray;
|
|
181
|
+
count += 1;
|
|
182
|
+
}
|
|
183
|
+
return count > 0 ? opacityAverage / count : 0;
|
|
184
|
+
}
|
|
148
185
|
return {
|
|
149
186
|
view: view,
|
|
150
187
|
position: position,
|
|
@@ -174,6 +211,8 @@ var Scene;
|
|
|
174
211
|
else {
|
|
175
212
|
syncVisibility();
|
|
176
213
|
}
|
|
214
|
+
markerAverage = calculateMarkerAverage();
|
|
215
|
+
opacityAverage = calculateOpacityAverage();
|
|
177
216
|
},
|
|
178
217
|
add: function (o) { return commitQueue.add(o); },
|
|
179
218
|
remove: function (o) { return commitQueue.remove(o); },
|
|
@@ -215,17 +254,11 @@ var Scene;
|
|
|
215
254
|
}
|
|
216
255
|
return boundingSphereVisible;
|
|
217
256
|
},
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
markerAverage += primitives[i].values.markerAverage.ref.value;
|
|
224
|
-
}
|
|
225
|
-
for (var i = 0, il = volumes.length; i < il; ++i) {
|
|
226
|
-
markerAverage += volumes[i].values.markerAverage.ref.value;
|
|
227
|
-
}
|
|
228
|
-
return markerAverage / (primitives.length + volumes.length);
|
|
257
|
+
get markerAverage() {
|
|
258
|
+
return markerAverage;
|
|
259
|
+
},
|
|
260
|
+
get opacityAverage() {
|
|
261
|
+
return opacityAverage;
|
|
229
262
|
},
|
|
230
263
|
};
|
|
231
264
|
}
|
|
@@ -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 +1 @@
|
|
|
1
|
-
export var 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 var 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 +1 @@
|
|
|
1
|
-
export var 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 var 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 +1 @@
|
|
|
1
|
-
export var 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 var 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";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export var 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 var 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";
|