molstar 3.6.1 → 3.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. package/build/viewer/molstar.css +1 -1
  2. package/build/viewer/molstar.js +1 -1
  3. package/lib/commonjs/examples/alpha-orbitals/index.js +20 -15
  4. package/lib/commonjs/extensions/anvil/behavior.d.ts +1 -1
  5. package/lib/commonjs/extensions/anvil/representation.d.ts +4 -4
  6. package/lib/commonjs/extensions/cellpack/representation.d.ts +1 -1
  7. package/lib/commonjs/extensions/dnatco/confal-pyramids/representation.d.ts +3 -3
  8. package/lib/commonjs/extensions/rcsb/assembly-symmetry/behavior.d.ts +1 -1
  9. package/lib/commonjs/extensions/rcsb/assembly-symmetry/representation.d.ts +1 -1
  10. package/lib/commonjs/extensions/rcsb/validation-report/representation.d.ts +5 -5
  11. package/lib/commonjs/mol-canvas3d/canvas3d.d.ts +2 -2
  12. package/lib/commonjs/mol-canvas3d/helper/camera-helper.d.ts +1 -1
  13. package/lib/commonjs/mol-canvas3d/helper/handle-helper.d.ts +1 -1
  14. package/lib/commonjs/mol-canvas3d/helper/helper.d.ts +2 -2
  15. package/lib/commonjs/mol-canvas3d/passes/image.d.ts +1 -1
  16. package/lib/commonjs/mol-geo/geometry/color-data.d.ts +2 -8
  17. package/lib/commonjs/mol-geo/geometry/color-data.js +16 -3
  18. package/lib/commonjs/mol-geo/geometry/cylinders/cylinders.d.ts +1 -1
  19. package/lib/commonjs/mol-geo/geometry/cylinders/cylinders.js +3 -2
  20. package/lib/commonjs/mol-geo/geometry/mesh/mesh.d.ts +1 -1
  21. package/lib/commonjs/mol-geo/geometry/mesh/mesh.js +3 -2
  22. package/lib/commonjs/mol-geo/geometry/spheres/spheres.d.ts +1 -1
  23. package/lib/commonjs/mol-geo/geometry/spheres/spheres.js +3 -2
  24. package/lib/commonjs/mol-geo/geometry/texture-mesh/texture-mesh.d.ts +1 -1
  25. package/lib/commonjs/mol-geo/geometry/texture-mesh/texture-mesh.js +15 -4
  26. package/lib/commonjs/mol-gl/renderable/cylinders.d.ts +2 -1
  27. package/lib/commonjs/mol-gl/renderable/cylinders.js +2 -2
  28. package/lib/commonjs/mol-gl/renderable/mesh.d.ts +2 -1
  29. package/lib/commonjs/mol-gl/renderable/mesh.js +2 -2
  30. package/lib/commonjs/mol-gl/renderable/spheres.d.ts +2 -1
  31. package/lib/commonjs/mol-gl/renderable/spheres.js +2 -2
  32. package/lib/commonjs/mol-gl/renderable/texture-mesh.d.ts +2 -1
  33. package/lib/commonjs/mol-gl/renderable/texture-mesh.js +2 -2
  34. package/lib/commonjs/mol-gl/renderer.js +54 -23
  35. package/lib/commonjs/mol-gl/shader/chunks/apply-interior-color.glsl.d.ts +1 -1
  36. package/lib/commonjs/mol-gl/shader/chunks/apply-interior-color.glsl.js +1 -1
  37. package/lib/commonjs/mol-gl/shader/chunks/check-picking-alpha.glsl.d.ts +1 -1
  38. package/lib/commonjs/mol-gl/shader/chunks/check-picking-alpha.glsl.js +1 -1
  39. package/lib/commonjs/mol-gl/shader/chunks/color-vert-params.glsl.d.ts +1 -1
  40. package/lib/commonjs/mol-gl/shader/chunks/color-vert-params.glsl.js +1 -1
  41. package/lib/commonjs/mol-io/writer/ligand-encoder.d.ts +4 -2
  42. package/lib/commonjs/mol-io/writer/ligand-encoder.js +9 -4
  43. package/lib/commonjs/mol-io/writer/mol/encoder.js +16 -4
  44. package/lib/commonjs/mol-io/writer/mol2/encoder.js +17 -4
  45. package/lib/commonjs/mol-model-formats/shape/ply.d.ts +2 -2
  46. package/lib/commonjs/mol-model-props/computed/representations/interactions-inter-unit-cylinder.d.ts +1 -1
  47. package/lib/commonjs/mol-model-props/computed/representations/interactions-intra-unit-cylinder.d.ts +1 -1
  48. package/lib/commonjs/mol-model-props/computed/representations/interactions.d.ts +3 -3
  49. package/lib/commonjs/mol-model-props/integrative/cross-link-restraint/representation.d.ts +4 -4
  50. package/lib/commonjs/mol-plugin/behavior/dynamic/volume-streaming/util.js +0 -1
  51. package/lib/commonjs/mol-plugin/commands.d.ts +1 -1
  52. package/lib/commonjs/mol-plugin/util/viewport-screenshot.d.ts +3 -3
  53. package/lib/commonjs/mol-plugin-state/transforms/representation.d.ts +6 -6
  54. package/lib/commonjs/mol-plugin-ui/base.d.ts +3 -1
  55. package/lib/commonjs/mol-plugin-ui/controls/color.d.ts +1 -1
  56. package/lib/commonjs/mol-plugin-ui/controls/common.d.ts +2 -0
  57. package/lib/commonjs/mol-plugin-ui/hooks/use-behavior.d.ts +1 -1
  58. package/lib/commonjs/mol-plugin-ui/hooks/use-behavior.js +21 -7
  59. package/lib/commonjs/mol-plugin-ui/plugin.d.ts +2 -0
  60. package/lib/commonjs/mol-plugin-ui/plugin.js +2 -2
  61. package/lib/commonjs/mol-plugin-ui/spec.d.ts +1 -0
  62. package/lib/commonjs/mol-plugin-ui/viewport/help.d.ts +4 -1
  63. package/lib/commonjs/mol-repr/shape/loci/angle.d.ts +1 -1
  64. package/lib/commonjs/mol-repr/shape/loci/dihedral.d.ts +1 -1
  65. package/lib/commonjs/mol-repr/shape/loci/orientation.d.ts +1 -1
  66. package/lib/commonjs/mol-repr/shape/loci/plane.d.ts +1 -1
  67. package/lib/commonjs/mol-repr/shape/model/unitcell.d.ts +1 -1
  68. package/lib/commonjs/mol-repr/structure/complex-visual.d.ts +3 -3
  69. package/lib/commonjs/mol-repr/structure/params.d.ts +4 -4
  70. package/lib/commonjs/mol-repr/structure/registry.d.ts +10 -10
  71. package/lib/commonjs/mol-repr/structure/representation/backbone.d.ts +3 -3
  72. package/lib/commonjs/mol-repr/structure/representation/ball-and-stick.d.ts +3 -3
  73. package/lib/commonjs/mol-repr/structure/representation/carbohydrate.d.ts +3 -3
  74. package/lib/commonjs/mol-repr/structure/representation/cartoon.d.ts +3 -3
  75. package/lib/commonjs/mol-repr/structure/representation/ellipsoid.d.ts +3 -3
  76. package/lib/commonjs/mol-repr/structure/representation/gaussian-surface.d.ts +3 -3
  77. package/lib/commonjs/mol-repr/structure/representation/molecular-surface.d.ts +3 -3
  78. package/lib/commonjs/mol-repr/structure/representation/orientation.d.ts +3 -3
  79. package/lib/commonjs/mol-repr/structure/representation/putty.d.ts +3 -3
  80. package/lib/commonjs/mol-repr/structure/representation/spacefill.d.ts +3 -3
  81. package/lib/commonjs/mol-repr/structure/units-visual.d.ts +4 -4
  82. package/lib/commonjs/mol-repr/structure/visual/bond-inter-unit-cylinder.d.ts +2 -2
  83. package/lib/commonjs/mol-repr/structure/visual/bond-intra-unit-cylinder.d.ts +2 -2
  84. package/lib/commonjs/mol-repr/structure/visual/carbohydrate-link-cylinder.d.ts +1 -1
  85. package/lib/commonjs/mol-repr/structure/visual/carbohydrate-symbol-mesh.d.ts +1 -1
  86. package/lib/commonjs/mol-repr/structure/visual/carbohydrate-terminal-link-cylinder.d.ts +1 -1
  87. package/lib/commonjs/mol-repr/structure/visual/element-sphere.d.ts +2 -2
  88. package/lib/commonjs/mol-repr/structure/visual/ellipsoid-mesh.d.ts +1 -1
  89. package/lib/commonjs/mol-repr/structure/visual/gaussian-surface-mesh.d.ts +4 -4
  90. package/lib/commonjs/mol-repr/structure/visual/molecular-surface-mesh.d.ts +1 -1
  91. package/lib/commonjs/mol-repr/structure/visual/nucleotide-block-mesh.d.ts +1 -1
  92. package/lib/commonjs/mol-repr/structure/visual/nucleotide-ring-mesh.d.ts +1 -1
  93. package/lib/commonjs/mol-repr/structure/visual/orientation-ellipsoid-mesh.d.ts +1 -1
  94. package/lib/commonjs/mol-repr/structure/visual/polymer-backbone-cylinder.d.ts +2 -2
  95. package/lib/commonjs/mol-repr/structure/visual/polymer-backbone-sphere.d.ts +2 -2
  96. package/lib/commonjs/mol-repr/structure/visual/polymer-direction-wedge.d.ts +1 -1
  97. package/lib/commonjs/mol-repr/structure/visual/polymer-gap-cylinder.d.ts +1 -1
  98. package/lib/commonjs/mol-repr/structure/visual/polymer-trace-mesh.d.ts +1 -1
  99. package/lib/commonjs/mol-repr/structure/visual/polymer-tube-mesh.d.ts +1 -1
  100. package/lib/commonjs/mol-repr/util.d.ts +1 -1
  101. package/lib/commonjs/mol-repr/util.js +1 -1
  102. package/lib/commonjs/mol-repr/volume/isosurface.d.ts +5 -5
  103. package/lib/commonjs/mol-repr/volume/registry.d.ts +1 -1
  104. package/lib/commonjs/mol-theme/color.d.ts +9 -2
  105. package/lib/commonjs/mol-theme/color.js +1 -1
  106. package/lib/commonjs/servers/model/server/query.js +1 -3
  107. package/lib/commonjs/servers/model/version.d.ts +1 -1
  108. package/lib/commonjs/servers/model/version.js +1 -1
  109. package/lib/examples/alpha-orbitals/index.js +20 -15
  110. package/lib/extensions/anvil/behavior.d.ts +1 -1
  111. package/lib/extensions/anvil/representation.d.ts +4 -4
  112. package/lib/extensions/cellpack/representation.d.ts +1 -1
  113. package/lib/extensions/dnatco/confal-pyramids/representation.d.ts +3 -3
  114. package/lib/extensions/rcsb/assembly-symmetry/behavior.d.ts +1 -1
  115. package/lib/extensions/rcsb/assembly-symmetry/representation.d.ts +1 -1
  116. package/lib/extensions/rcsb/validation-report/representation.d.ts +5 -5
  117. package/lib/mol-canvas3d/canvas3d.d.ts +2 -2
  118. package/lib/mol-canvas3d/helper/camera-helper.d.ts +1 -1
  119. package/lib/mol-canvas3d/helper/handle-helper.d.ts +1 -1
  120. package/lib/mol-canvas3d/helper/helper.d.ts +2 -2
  121. package/lib/mol-canvas3d/passes/image.d.ts +1 -1
  122. package/lib/mol-geo/geometry/color-data.d.ts +2 -8
  123. package/lib/mol-geo/geometry/color-data.js +16 -3
  124. package/lib/mol-geo/geometry/cylinders/cylinders.d.ts +1 -1
  125. package/lib/mol-geo/geometry/cylinders/cylinders.js +3 -2
  126. package/lib/mol-geo/geometry/mesh/mesh.d.ts +1 -1
  127. package/lib/mol-geo/geometry/mesh/mesh.js +3 -2
  128. package/lib/mol-geo/geometry/spheres/spheres.d.ts +1 -1
  129. package/lib/mol-geo/geometry/spheres/spheres.js +3 -2
  130. package/lib/mol-geo/geometry/texture-mesh/texture-mesh.d.ts +1 -1
  131. package/lib/mol-geo/geometry/texture-mesh/texture-mesh.js +15 -4
  132. package/lib/mol-gl/renderable/cylinders.d.ts +2 -1
  133. package/lib/mol-gl/renderable/cylinders.js +2 -2
  134. package/lib/mol-gl/renderable/mesh.d.ts +2 -1
  135. package/lib/mol-gl/renderable/mesh.js +2 -2
  136. package/lib/mol-gl/renderable/spheres.d.ts +2 -1
  137. package/lib/mol-gl/renderable/spheres.js +2 -2
  138. package/lib/mol-gl/renderable/texture-mesh.d.ts +2 -1
  139. package/lib/mol-gl/renderable/texture-mesh.js +2 -2
  140. package/lib/mol-gl/renderer.js +54 -23
  141. package/lib/mol-gl/shader/chunks/apply-interior-color.glsl.d.ts +1 -1
  142. package/lib/mol-gl/shader/chunks/apply-interior-color.glsl.js +1 -1
  143. package/lib/mol-gl/shader/chunks/check-picking-alpha.glsl.d.ts +1 -1
  144. package/lib/mol-gl/shader/chunks/check-picking-alpha.glsl.js +1 -1
  145. package/lib/mol-gl/shader/chunks/color-vert-params.glsl.d.ts +1 -1
  146. package/lib/mol-gl/shader/chunks/color-vert-params.glsl.js +1 -1
  147. package/lib/mol-io/writer/ligand-encoder.d.ts +4 -2
  148. package/lib/mol-io/writer/ligand-encoder.js +9 -4
  149. package/lib/mol-io/writer/mol/encoder.js +16 -4
  150. package/lib/mol-io/writer/mol2/encoder.js +17 -4
  151. package/lib/mol-model-formats/shape/ply.d.ts +2 -2
  152. package/lib/mol-model-props/computed/representations/interactions-inter-unit-cylinder.d.ts +1 -1
  153. package/lib/mol-model-props/computed/representations/interactions-intra-unit-cylinder.d.ts +1 -1
  154. package/lib/mol-model-props/computed/representations/interactions.d.ts +3 -3
  155. package/lib/mol-model-props/integrative/cross-link-restraint/representation.d.ts +4 -4
  156. package/lib/mol-plugin/behavior/dynamic/volume-streaming/util.js +0 -1
  157. package/lib/mol-plugin/commands.d.ts +1 -1
  158. package/lib/mol-plugin/util/viewport-screenshot.d.ts +3 -3
  159. package/lib/mol-plugin/version.js +2 -2
  160. package/lib/mol-plugin-state/transforms/representation.d.ts +6 -6
  161. package/lib/mol-plugin-ui/base.d.ts +3 -1
  162. package/lib/mol-plugin-ui/controls/color.d.ts +1 -1
  163. package/lib/mol-plugin-ui/controls/common.d.ts +2 -0
  164. package/lib/mol-plugin-ui/hooks/use-behavior.d.ts +1 -1
  165. package/lib/mol-plugin-ui/hooks/use-behavior.js +20 -7
  166. package/lib/mol-plugin-ui/plugin.d.ts +2 -0
  167. package/lib/mol-plugin-ui/plugin.js +2 -2
  168. package/lib/mol-plugin-ui/spec.d.ts +1 -0
  169. package/lib/mol-plugin-ui/viewport/help.d.ts +4 -1
  170. package/lib/mol-repr/shape/loci/angle.d.ts +1 -1
  171. package/lib/mol-repr/shape/loci/dihedral.d.ts +1 -1
  172. package/lib/mol-repr/shape/loci/orientation.d.ts +1 -1
  173. package/lib/mol-repr/shape/loci/plane.d.ts +1 -1
  174. package/lib/mol-repr/shape/model/unitcell.d.ts +1 -1
  175. package/lib/mol-repr/structure/complex-visual.d.ts +3 -3
  176. package/lib/mol-repr/structure/params.d.ts +4 -4
  177. package/lib/mol-repr/structure/registry.d.ts +10 -10
  178. package/lib/mol-repr/structure/representation/backbone.d.ts +3 -3
  179. package/lib/mol-repr/structure/representation/ball-and-stick.d.ts +3 -3
  180. package/lib/mol-repr/structure/representation/carbohydrate.d.ts +3 -3
  181. package/lib/mol-repr/structure/representation/cartoon.d.ts +3 -3
  182. package/lib/mol-repr/structure/representation/ellipsoid.d.ts +3 -3
  183. package/lib/mol-repr/structure/representation/gaussian-surface.d.ts +3 -3
  184. package/lib/mol-repr/structure/representation/molecular-surface.d.ts +3 -3
  185. package/lib/mol-repr/structure/representation/orientation.d.ts +3 -3
  186. package/lib/mol-repr/structure/representation/putty.d.ts +3 -3
  187. package/lib/mol-repr/structure/representation/spacefill.d.ts +3 -3
  188. package/lib/mol-repr/structure/units-visual.d.ts +4 -4
  189. package/lib/mol-repr/structure/visual/bond-inter-unit-cylinder.d.ts +2 -2
  190. package/lib/mol-repr/structure/visual/bond-intra-unit-cylinder.d.ts +2 -2
  191. package/lib/mol-repr/structure/visual/carbohydrate-link-cylinder.d.ts +1 -1
  192. package/lib/mol-repr/structure/visual/carbohydrate-symbol-mesh.d.ts +1 -1
  193. package/lib/mol-repr/structure/visual/carbohydrate-terminal-link-cylinder.d.ts +1 -1
  194. package/lib/mol-repr/structure/visual/element-sphere.d.ts +2 -2
  195. package/lib/mol-repr/structure/visual/ellipsoid-mesh.d.ts +1 -1
  196. package/lib/mol-repr/structure/visual/gaussian-surface-mesh.d.ts +4 -4
  197. package/lib/mol-repr/structure/visual/molecular-surface-mesh.d.ts +1 -1
  198. package/lib/mol-repr/structure/visual/nucleotide-block-mesh.d.ts +1 -1
  199. package/lib/mol-repr/structure/visual/nucleotide-ring-mesh.d.ts +1 -1
  200. package/lib/mol-repr/structure/visual/orientation-ellipsoid-mesh.d.ts +1 -1
  201. package/lib/mol-repr/structure/visual/polymer-backbone-cylinder.d.ts +2 -2
  202. package/lib/mol-repr/structure/visual/polymer-backbone-sphere.d.ts +2 -2
  203. package/lib/mol-repr/structure/visual/polymer-direction-wedge.d.ts +1 -1
  204. package/lib/mol-repr/structure/visual/polymer-gap-cylinder.d.ts +1 -1
  205. package/lib/mol-repr/structure/visual/polymer-trace-mesh.d.ts +1 -1
  206. package/lib/mol-repr/structure/visual/polymer-tube-mesh.d.ts +1 -1
  207. package/lib/mol-repr/util.d.ts +1 -1
  208. package/lib/mol-repr/util.js +1 -1
  209. package/lib/mol-repr/volume/isosurface.d.ts +5 -5
  210. package/lib/mol-repr/volume/registry.d.ts +1 -1
  211. package/lib/mol-theme/color.d.ts +9 -2
  212. package/lib/mol-theme/color.js +1 -1
  213. package/lib/servers/model/server/query.js +1 -3
  214. package/lib/servers/model/version.d.ts +1 -1
  215. package/lib/servers/model/version.js +1 -1
  216. package/package.json +16 -16
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2019-2021 mol* contributors, licensed under MIT, See LICENSE file for more info.
2
+ * Copyright (c) 2019-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
  */
@@ -16,6 +16,7 @@ export declare const SpheresSchema: {
16
16
  uDoubleSided: UniformSpec<"b">;
17
17
  dIgnoreLight: DefineSpec<"boolean">;
18
18
  dXrayShaded: DefineSpec<"boolean">;
19
+ dOpaqueBackfaces: DefineSpec<"boolean">;
19
20
  uBumpFrequency: UniformSpec<"f">;
20
21
  uBumpAmplitude: UniformSpec<"f">;
21
22
  uSize: UniformSpec<"f">;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /**
3
- * Copyright (c) 2019-2021 mol* contributors, licensed under MIT, See LICENSE file for more info.
3
+ * Copyright (c) 2019-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
  */
@@ -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'), uBumpFrequency: (0, schema_1.UniformSpec)('f'), uBumpAmplitude: (0, schema_1.UniformSpec)('f') });
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'), dOpaqueBackfaces: (0, schema_1.DefineSpec)('boolean'), 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 = {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2019-2021 mol* contributors, licensed under MIT, See LICENSE file for more info.
2
+ * Copyright (c) 2019-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
  */
@@ -17,6 +17,7 @@ export declare const TextureMeshSchema: {
17
17
  dFlipSided: DefineSpec<"boolean">;
18
18
  dIgnoreLight: DefineSpec<"boolean">;
19
19
  dXrayShaded: DefineSpec<"boolean">;
20
+ dOpaqueBackfaces: DefineSpec<"boolean">;
20
21
  uBumpFrequency: UniformSpec<"f">;
21
22
  uBumpAmplitude: UniformSpec<"f">;
22
23
  meta: ValueSpec<"unknown">;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /**
3
- * Copyright (c) 2019-2021 mol* contributors, licensed under MIT, See LICENSE file for more info.
3
+ * Copyright (c) 2019-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
  */
@@ -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'), uBumpFrequency: (0, schema_1.UniformSpec)('f'), uBumpAmplitude: (0, schema_1.UniformSpec)('f'), meta: (0, schema_1.ValueSpec)('unknown') });
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'), dOpaqueBackfaces: (0, schema_1.DefineSpec)('boolean'), 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 = {
@@ -125,7 +125,8 @@ var Renderer;
125
125
  };
126
126
  var globalUniformList = Object.entries(globalUniforms);
127
127
  var globalUniformsNeedUpdate = true;
128
- var renderObject = function (r, variant) {
128
+ var renderObject = function (r, variant, flag) {
129
+ var _a, _b, _c;
129
130
  if (r.state.disposed || !r.state.visible || (!r.state.pickable && variant === 'pick')) {
130
131
  return;
131
132
  }
@@ -160,6 +161,28 @@ var Renderer;
160
161
  state.depthMask(false);
161
162
  }
162
163
  }
164
+ else if (flag === 1 /* BlendedFront */) {
165
+ state.enable(gl.CULL_FACE);
166
+ if ((_a = r.values.dFlipSided) === null || _a === void 0 ? void 0 : _a.ref.value) {
167
+ state.frontFace(gl.CW);
168
+ state.cullFace(gl.FRONT);
169
+ }
170
+ else {
171
+ state.frontFace(gl.CCW);
172
+ state.cullFace(gl.BACK);
173
+ }
174
+ }
175
+ else if (flag === 2 /* BlendedBack */) {
176
+ state.enable(gl.CULL_FACE);
177
+ if ((_b = r.values.dFlipSided) === null || _b === void 0 ? void 0 : _b.ref.value) {
178
+ state.frontFace(gl.CW);
179
+ state.cullFace(gl.BACK);
180
+ }
181
+ else {
182
+ state.frontFace(gl.CCW);
183
+ state.cullFace(gl.FRONT);
184
+ }
185
+ }
163
186
  else {
164
187
  if (r.values.uDoubleSided) {
165
188
  if (r.values.uDoubleSided.ref.value || r.values.hasReflection.ref.value) {
@@ -173,15 +196,9 @@ var Renderer;
173
196
  // webgl default
174
197
  state.disable(gl.CULL_FACE);
175
198
  }
176
- if (r.values.dFlipSided) {
177
- if (r.values.dFlipSided.ref.value) {
178
- state.frontFace(gl.CW);
179
- state.cullFace(gl.FRONT);
180
- }
181
- else {
182
- state.frontFace(gl.CCW);
183
- state.cullFace(gl.BACK);
184
- }
199
+ if ((_c = r.values.dFlipSided) === null || _c === void 0 ? void 0 : _c.ref.value) {
200
+ state.frontFace(gl.CW);
201
+ state.cullFace(gl.FRONT);
185
202
  }
186
203
  else {
187
204
  // webgl default
@@ -232,7 +249,7 @@ var Renderer;
232
249
  var renderables = group.renderables;
233
250
  for (var i = 0, il = renderables.length; i < il; ++i) {
234
251
  if (!renderables[i].state.colorOnly) {
235
- renderObject(renderables[i], variant);
252
+ renderObject(renderables[i], variant, 0 /* None */);
236
253
  }
237
254
  }
238
255
  };
@@ -243,7 +260,7 @@ var Renderer;
243
260
  updateInternal(group, camera, depthTexture, false, false);
244
261
  var renderables = group.renderables;
245
262
  for (var i = 0, il = renderables.length; i < il; ++i) {
246
- renderObject(renderables[i], 'depth');
263
+ renderObject(renderables[i], 'depth', 0 /* None */);
247
264
  }
248
265
  };
249
266
  var renderMarkingDepth = function (group, camera, depthTexture) {
@@ -256,7 +273,7 @@ var Renderer;
256
273
  for (var i = 0, il = renderables.length; i < il; ++i) {
257
274
  var r = renderables[i];
258
275
  if (r.values.markerAverage.ref.value !== 1) {
259
- renderObject(renderables[i], 'marking');
276
+ renderObject(renderables[i], 'marking', 0 /* None */);
260
277
  }
261
278
  }
262
279
  };
@@ -270,7 +287,7 @@ var Renderer;
270
287
  for (var i = 0, il = renderables.length; i < il; ++i) {
271
288
  var r = renderables[i];
272
289
  if (r.values.markerAverage.ref.value > 0) {
273
- renderObject(renderables[i], 'marking');
290
+ renderObject(renderables[i], 'marking', 0 /* None */);
274
291
  }
275
292
  }
276
293
  };
@@ -279,6 +296,7 @@ var Renderer;
279
296
  renderBlendedTransparent(group, camera, depthTexture);
280
297
  };
281
298
  var renderBlendedOpaque = function (group, camera, depthTexture) {
299
+ var _a, _b;
282
300
  state.disable(gl.BLEND);
283
301
  state.enable(gl.DEPTH_TEST);
284
302
  state.depthMask(true);
@@ -287,11 +305,15 @@ var Renderer;
287
305
  for (var i = 0, il = renderables.length; i < il; ++i) {
288
306
  var r = renderables[i];
289
307
  if (r.state.opaque) {
290
- renderObject(r, 'colorBlended');
308
+ renderObject(r, 'colorBlended', 0 /* None */);
309
+ }
310
+ else if (((_a = r.values.uDoubleSided) === null || _a === void 0 ? void 0 : _a.ref.value) && ((_b = r.values.dOpaqueBackfaces) === null || _b === void 0 ? void 0 : _b.ref.value)) {
311
+ renderObject(r, 'colorBlended', 2 /* BlendedBack */);
291
312
  }
292
313
  }
293
314
  };
294
315
  var renderBlendedTransparent = function (group, camera, depthTexture) {
316
+ var _a, _b;
295
317
  state.enable(gl.DEPTH_TEST);
296
318
  updateInternal(group, camera, depthTexture, false, false);
297
319
  var renderables = group.renderables;
@@ -306,14 +328,23 @@ var Renderer;
306
328
  for (var i = 0, il = renderables.length; i < il; ++i) {
307
329
  var r = renderables[i];
308
330
  if (!r.state.opaque && r.state.writeDepth) {
309
- renderObject(r, 'colorBlended');
331
+ renderObject(r, 'colorBlended', 0 /* None */);
310
332
  }
311
333
  }
312
334
  state.depthMask(false);
313
335
  for (var i = 0, il = renderables.length; i < il; ++i) {
314
336
  var r = renderables[i];
315
337
  if (!r.state.opaque && !r.state.writeDepth) {
316
- renderObject(r, 'colorBlended');
338
+ if ((_a = r.values.uDoubleSided) === null || _a === void 0 ? void 0 : _a.ref.value) {
339
+ // render frontfaces and backfaces separately to avoid artefacts
340
+ if (!((_b = r.values.dOpaqueBackfaces) === null || _b === void 0 ? void 0 : _b.ref.value)) {
341
+ renderObject(r, 'colorBlended', 2 /* BlendedBack */);
342
+ }
343
+ renderObject(r, 'colorBlended', 1 /* BlendedFront */);
344
+ }
345
+ else {
346
+ renderObject(r, 'colorBlended', 0 /* None */);
347
+ }
317
348
  }
318
349
  }
319
350
  };
@@ -329,7 +360,7 @@ var Renderer;
329
360
  // uAlpha is updated in "render" so we need to recompute it here
330
361
  var alpha = (0, interpolate_1.clamp)(r.values.alpha.ref.value * r.state.alphaFactor, 0, 1);
331
362
  if (alpha === 1 && r.values.transparencyAverage.ref.value !== 1 && !((_a = r.values.dXrayShaded) === null || _a === void 0 ? void 0 : _a.ref.value)) {
332
- renderObject(r, 'colorBlended');
363
+ renderObject(r, 'colorBlended', 0 /* None */);
333
364
  }
334
365
  }
335
366
  };
@@ -345,12 +376,12 @@ var Renderer;
345
376
  // uAlpha is updated in "render" so we need to recompute it here
346
377
  var alpha = (0, interpolate_1.clamp)(r.values.alpha.ref.value * r.state.alphaFactor, 0, 1);
347
378
  if (alpha < 1 || r.values.transparencyAverage.ref.value > 0 || ((_a = r.values.dXrayShaded) === null || _a === void 0 ? void 0 : _a.ref.value)) {
348
- renderObject(r, 'colorBlended');
379
+ renderObject(r, 'colorBlended', 0 /* None */);
349
380
  }
350
381
  }
351
382
  };
352
383
  var renderWboitOpaque = function (group, camera, depthTexture) {
353
- var _a, _b;
384
+ var _a, _b, _c;
354
385
  state.disable(gl.BLEND);
355
386
  state.enable(gl.DEPTH_TEST);
356
387
  state.depthMask(true);
@@ -361,8 +392,8 @@ var Renderer;
361
392
  // TODO: simplify, handle in renderable.state???
362
393
  // uAlpha is updated in "render" so we need to recompute it here
363
394
  var alpha = (0, interpolate_1.clamp)(r.values.alpha.ref.value * r.state.alphaFactor, 0, 1);
364
- 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)) {
365
- renderObject(r, 'colorWboit');
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.dOpaqueBackfaces) === null || _c === void 0 ? void 0 : _c.ref.value)) {
396
+ renderObject(r, 'colorWboit', 0 /* None */);
366
397
  }
367
398
  }
368
399
  };
@@ -376,7 +407,7 @@ var Renderer;
376
407
  // uAlpha is updated in "render" so we need to recompute it here
377
408
  var alpha = (0, interpolate_1.clamp)(r.values.alpha.ref.value * r.state.alphaFactor, 0, 1);
378
409
  if (alpha < 1 || r.values.transparencyAverage.ref.value > 0 || r.values.dGeometryType.ref.value === 'directVolume' || ((_a = r.values.dPointStyle) === null || _a === void 0 ? void 0 : _a.ref.value) === 'fuzzy' || !!r.values.uBackgroundColor || ((_b = r.values.dXrayShaded) === null || _b === void 0 ? void 0 : _b.ref.value)) {
379
- renderObject(r, 'colorWboit');
410
+ renderObject(r, 'colorWboit', 0 /* None */);
380
411
  }
381
412
  }
382
413
  };
@@ -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";
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 dOpaqueBackfaces\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";
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 dOpaqueBackfaces\n gl_FragColor.a = 1.0;\n #endif\n}\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;\nif (uAlpha < uPickingAlphaThreshold || alpha < 0.1)\n discard; // ignore so the element below can be picked\n";
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 dOpaqueBackfaces\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;\nif (uAlpha < uPickingAlphaThreshold || alpha < 0.1)\n discard; // ignore so the element below can be picked\n";
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 dOpaqueBackfaces\n if (!interior) discard;\n #else\n discard;\n #endif\n}\n";
@@ -1 +1 @@
1
- export declare const color_vert_params = "\nuniform float uMetalness;\nuniform float uRoughness;\nuniform float uBumpiness;\n\n#if defined(dRenderVariant_color)\n #if defined(dColorType_uniform)\n uniform vec3 uColor;\n #elif defined(dColorType_attribute)\n varying vec4 vColor;\n attribute vec3 aColor;\n #elif defined(dColorType_texture)\n varying vec4 vColor;\n uniform vec2 uColorTexDim;\n uniform sampler2D tColor;\n #elif defined(dColorType_grid)\n varying vec4 vColor;\n uniform vec2 uColorTexDim;\n uniform vec3 uColorGridDim;\n uniform vec4 uColorGridTransform;\n uniform sampler2D tColorGrid;\n #endif\n\n #ifdef dUsePalette\n varying float vPaletteV;\n #endif\n\n #ifdef dOverpaint\n #if defined(dOverpaintType_groupInstance) || defined(dOverpaintType_vertexInstance)\n varying vec4 vOverpaint;\n uniform vec2 uOverpaintTexDim;\n uniform sampler2D tOverpaint;\n #elif defined(dOverpaintType_volumeInstance)\n varying vec4 vOverpaint;\n uniform vec2 uOverpaintTexDim;\n uniform vec3 uOverpaintGridDim;\n uniform vec4 uOverpaintGridTransform;\n uniform sampler2D tOverpaintGrid;\n #endif\n #endif\n\n #ifdef dSubstance\n #if defined(dSubstanceType_groupInstance) || defined(dSubstanceType_vertexInstance)\n varying vec4 vSubstance;\n uniform vec2 uSubstanceTexDim;\n uniform sampler2D tSubstance;\n #elif defined(dSubstanceType_volumeInstance)\n varying vec4 vSubstance;\n uniform vec2 uSubstanceTexDim;\n uniform vec3 uSubstanceGridDim;\n uniform vec4 uSubstanceGridTransform;\n uniform sampler2D tSubstanceGrid;\n #endif\n #endif\n#elif defined(dRenderVariant_pick)\n #if __VERSION__ == 100\n varying vec4 vColor;\n #else\n flat out vec4 vColor;\n #endif\n#endif\n\n#ifdef dTransparency\n varying float vGroup;\n #if defined(dTransparencyType_groupInstance) || defined(dTransparencyType_vertexInstance)\n varying float vTransparency;\n uniform vec2 uTransparencyTexDim;\n uniform sampler2D tTransparency;\n #elif defined(dTransparencyType_volumeInstance)\n varying float vTransparency;\n uniform vec2 uTransparencyTexDim;\n uniform vec3 uTransparencyGridDim;\n uniform vec4 uTransparencyGridTransform;\n uniform sampler2D tTransparencyGrid;\n #endif\n#endif\n";
1
+ export declare const color_vert_params = "\nuniform float uMetalness;\nuniform float uRoughness;\nuniform float uBumpiness;\n\n#if defined(dRenderVariant_color)\n #if defined(dColorType_uniform)\n uniform vec3 uColor;\n #elif defined(dColorType_attribute)\n varying vec4 vColor;\n attribute vec3 aColor;\n #elif defined(dColorType_texture)\n varying vec4 vColor;\n uniform vec2 uColorTexDim;\n uniform sampler2D tColor;\n #elif defined(dColorType_grid)\n varying vec4 vColor;\n uniform vec2 uColorTexDim;\n uniform vec3 uColorGridDim;\n uniform vec4 uColorGridTransform;\n uniform sampler2D tColorGrid;\n #elif defined(dColorType_direct)\n varying vec4 vColor;\n #endif\n\n #ifdef dUsePalette\n varying float vPaletteV;\n #endif\n\n #ifdef dOverpaint\n #if defined(dOverpaintType_groupInstance) || defined(dOverpaintType_vertexInstance)\n varying vec4 vOverpaint;\n uniform vec2 uOverpaintTexDim;\n uniform sampler2D tOverpaint;\n #elif defined(dOverpaintType_volumeInstance)\n varying vec4 vOverpaint;\n uniform vec2 uOverpaintTexDim;\n uniform vec3 uOverpaintGridDim;\n uniform vec4 uOverpaintGridTransform;\n uniform sampler2D tOverpaintGrid;\n #endif\n #endif\n\n #ifdef dSubstance\n #if defined(dSubstanceType_groupInstance) || defined(dSubstanceType_vertexInstance)\n varying vec4 vSubstance;\n uniform vec2 uSubstanceTexDim;\n uniform sampler2D tSubstance;\n #elif defined(dSubstanceType_volumeInstance)\n varying vec4 vSubstance;\n uniform vec2 uSubstanceTexDim;\n uniform vec3 uSubstanceGridDim;\n uniform vec4 uSubstanceGridTransform;\n uniform sampler2D tSubstanceGrid;\n #endif\n #endif\n#elif defined(dRenderVariant_pick)\n #if __VERSION__ == 100\n varying vec4 vColor;\n #else\n flat out vec4 vColor;\n #endif\n#endif\n\n#ifdef dTransparency\n varying float vGroup;\n #if defined(dTransparencyType_groupInstance) || defined(dTransparencyType_vertexInstance)\n varying float vTransparency;\n uniform vec2 uTransparencyTexDim;\n uniform sampler2D tTransparency;\n #elif defined(dTransparencyType_volumeInstance)\n varying float vTransparency;\n uniform vec2 uTransparencyTexDim;\n uniform vec3 uTransparencyGridDim;\n uniform vec4 uTransparencyGridTransform;\n uniform sampler2D tTransparencyGrid;\n #endif\n#endif\n";
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.color_vert_params = void 0;
4
- exports.color_vert_params = "\nuniform float uMetalness;\nuniform float uRoughness;\nuniform float uBumpiness;\n\n#if defined(dRenderVariant_color)\n #if defined(dColorType_uniform)\n uniform vec3 uColor;\n #elif defined(dColorType_attribute)\n varying vec4 vColor;\n attribute vec3 aColor;\n #elif defined(dColorType_texture)\n varying vec4 vColor;\n uniform vec2 uColorTexDim;\n uniform sampler2D tColor;\n #elif defined(dColorType_grid)\n varying vec4 vColor;\n uniform vec2 uColorTexDim;\n uniform vec3 uColorGridDim;\n uniform vec4 uColorGridTransform;\n uniform sampler2D tColorGrid;\n #endif\n\n #ifdef dUsePalette\n varying float vPaletteV;\n #endif\n\n #ifdef dOverpaint\n #if defined(dOverpaintType_groupInstance) || defined(dOverpaintType_vertexInstance)\n varying vec4 vOverpaint;\n uniform vec2 uOverpaintTexDim;\n uniform sampler2D tOverpaint;\n #elif defined(dOverpaintType_volumeInstance)\n varying vec4 vOverpaint;\n uniform vec2 uOverpaintTexDim;\n uniform vec3 uOverpaintGridDim;\n uniform vec4 uOverpaintGridTransform;\n uniform sampler2D tOverpaintGrid;\n #endif\n #endif\n\n #ifdef dSubstance\n #if defined(dSubstanceType_groupInstance) || defined(dSubstanceType_vertexInstance)\n varying vec4 vSubstance;\n uniform vec2 uSubstanceTexDim;\n uniform sampler2D tSubstance;\n #elif defined(dSubstanceType_volumeInstance)\n varying vec4 vSubstance;\n uniform vec2 uSubstanceTexDim;\n uniform vec3 uSubstanceGridDim;\n uniform vec4 uSubstanceGridTransform;\n uniform sampler2D tSubstanceGrid;\n #endif\n #endif\n#elif defined(dRenderVariant_pick)\n #if __VERSION__ == 100\n varying vec4 vColor;\n #else\n flat out vec4 vColor;\n #endif\n#endif\n\n#ifdef dTransparency\n varying float vGroup;\n #if defined(dTransparencyType_groupInstance) || defined(dTransparencyType_vertexInstance)\n varying float vTransparency;\n uniform vec2 uTransparencyTexDim;\n uniform sampler2D tTransparency;\n #elif defined(dTransparencyType_volumeInstance)\n varying float vTransparency;\n uniform vec2 uTransparencyTexDim;\n uniform vec3 uTransparencyGridDim;\n uniform vec4 uTransparencyGridTransform;\n uniform sampler2D tTransparencyGrid;\n #endif\n#endif\n";
4
+ exports.color_vert_params = "\nuniform float uMetalness;\nuniform float uRoughness;\nuniform float uBumpiness;\n\n#if defined(dRenderVariant_color)\n #if defined(dColorType_uniform)\n uniform vec3 uColor;\n #elif defined(dColorType_attribute)\n varying vec4 vColor;\n attribute vec3 aColor;\n #elif defined(dColorType_texture)\n varying vec4 vColor;\n uniform vec2 uColorTexDim;\n uniform sampler2D tColor;\n #elif defined(dColorType_grid)\n varying vec4 vColor;\n uniform vec2 uColorTexDim;\n uniform vec3 uColorGridDim;\n uniform vec4 uColorGridTransform;\n uniform sampler2D tColorGrid;\n #elif defined(dColorType_direct)\n varying vec4 vColor;\n #endif\n\n #ifdef dUsePalette\n varying float vPaletteV;\n #endif\n\n #ifdef dOverpaint\n #if defined(dOverpaintType_groupInstance) || defined(dOverpaintType_vertexInstance)\n varying vec4 vOverpaint;\n uniform vec2 uOverpaintTexDim;\n uniform sampler2D tOverpaint;\n #elif defined(dOverpaintType_volumeInstance)\n varying vec4 vOverpaint;\n uniform vec2 uOverpaintTexDim;\n uniform vec3 uOverpaintGridDim;\n uniform vec4 uOverpaintGridTransform;\n uniform sampler2D tOverpaintGrid;\n #endif\n #endif\n\n #ifdef dSubstance\n #if defined(dSubstanceType_groupInstance) || defined(dSubstanceType_vertexInstance)\n varying vec4 vSubstance;\n uniform vec2 uSubstanceTexDim;\n uniform sampler2D tSubstance;\n #elif defined(dSubstanceType_volumeInstance)\n varying vec4 vSubstance;\n uniform vec2 uSubstanceTexDim;\n uniform vec3 uSubstanceGridDim;\n uniform vec4 uSubstanceGridTransform;\n uniform sampler2D tSubstanceGrid;\n #endif\n #endif\n#elif defined(dRenderVariant_pick)\n #if __VERSION__ == 100\n varying vec4 vColor;\n #else\n flat out vec4 vColor;\n #endif\n#endif\n\n#ifdef dTransparency\n varying float vGroup;\n #if defined(dTransparencyType_groupInstance) || defined(dTransparencyType_vertexInstance)\n varying float vTransparency;\n uniform vec2 uTransparencyTexDim;\n uniform sampler2D tTransparency;\n #elif defined(dTransparencyType_volumeInstance)\n varying float vTransparency;\n uniform vec2 uTransparencyTexDim;\n uniform vec3 uTransparencyGridDim;\n uniform vec4 uTransparencyGridTransform;\n uniform sampler2D tTransparencyGrid;\n #endif\n#endif\n";
@@ -8,11 +8,12 @@ import { Writer } from './writer';
8
8
  import { Encoder, Category } from './cif/encoder';
9
9
  import { ComponentAtom } from '../../mol-model-formats/structure/property/atoms/chem_comp';
10
10
  import { ComponentBond } from '../../mol-model-formats/structure/property/bonds/chem_comp';
11
+ import { ElementSymbol } from '../../mol-model/structure/model/types';
11
12
  interface Atom {
12
13
  Cartn_x: number;
13
14
  Cartn_y: number;
14
15
  Cartn_z: number;
15
- type_symbol: string;
16
+ type_symbol: ElementSymbol;
16
17
  index: number;
17
18
  }
18
19
  declare function Atom(partial: any): Atom;
@@ -39,7 +40,8 @@ export declare abstract class LigandEncoder implements Encoder<string> {
39
40
  getData(): string;
40
41
  protected getAtoms<Ctx>(instance: Category.Instance<Ctx>, source: any): Map<string, Atom>;
41
42
  private _getAtoms;
42
- protected skipHydrogen(type_symbol: string): boolean;
43
+ protected skipHydrogen(type_symbol: ElementSymbol): boolean;
44
+ protected isHydrogen(type_symbol: ElementSymbol): boolean;
43
45
  private getSortedFields;
44
46
  private getField;
45
47
  protected getName<Ctx>(instance: Category.Instance<Ctx>, source: any): string;
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
8
8
  exports.LigandEncoder = void 0;
9
9
  var tslib_1 = require("tslib");
10
10
  var mol_util_1 = require("../../mol-util");
11
+ var common_1 = require("../../mol-model/structure/structure/unit/bonds/common");
11
12
  function Atom(partial) {
12
13
  return tslib_1.__assign({}, partial);
13
14
  }
@@ -80,11 +81,12 @@ var LigandEncoder = /** @class */ (function () {
80
81
  while (it_1.hasNext) {
81
82
  var key = it_1.move();
82
83
  var lai = label_atom_id.value(key, data, index);
84
+ // ignore all alternate locations after the first
85
+ if (atoms.has(lai))
86
+ continue;
83
87
  var ts = type_symbol.value(key, data, index);
84
- if (this.skipHydrogen(ts)) {
85
- index++;
88
+ if (this.skipHydrogen(ts))
86
89
  continue;
87
- }
88
90
  var a = {};
89
91
  for (var _f = 0, _fl = fields.length; _f < _fl; _f++) {
90
92
  var f = fields[_f];
@@ -102,7 +104,10 @@ var LigandEncoder = /** @class */ (function () {
102
104
  if (this.hydrogens) {
103
105
  return false;
104
106
  }
105
- return type_symbol === 'H';
107
+ return this.isHydrogen(type_symbol);
108
+ };
109
+ LigandEncoder.prototype.isHydrogen = function (type_symbol) {
110
+ return (0, common_1.isHydrogen)((0, common_1.getElementIdx)(type_symbol));
106
111
  };
107
112
  LigandEncoder.prototype.getSortedFields = function (instance, names) {
108
113
  var _this = this;
@@ -36,13 +36,25 @@ var MolEncoder = /** @class */ (function (_super) {
36
36
  mol_util_1.StringBuilder.writeSafe(this.builder, "".concat(name, "\n ").concat(this.encoder, "\n\n"));
37
37
  var atomMap = this.componentAtomData.entries.get(name);
38
38
  var bondMap = this.componentBondData.entries.get(name);
39
+ // happens for the unknown ligands (UNL)
40
+ if (!atomMap)
41
+ throw Error("The Chemical Component Dictionary doesn't hold any atom data for ".concat(name));
39
42
  var bondCount = 0;
40
43
  var chiral = false;
41
44
  // traverse once to determine all actually present atoms
42
45
  var atoms = this.getAtoms(instance, source);
43
46
  atoms.forEach(function (atom1, label_atom_id1) {
44
- var i1 = atom1.index;
45
- var _a = atomMap.map.get(label_atom_id1), charge = _a.charge, stereo_config = _a.stereo_config;
47
+ var i1 = atom1.index, type_symbol1 = atom1.type_symbol;
48
+ var atomMapData1 = atomMap.map.get(label_atom_id1);
49
+ if (!atomMapData1) {
50
+ if (_this.isHydrogen(type_symbol1)) {
51
+ return;
52
+ }
53
+ else {
54
+ throw Error("Unknown atom ".concat(label_atom_id1, " for component ").concat(name));
55
+ }
56
+ }
57
+ var charge = atomMapData1.charge, stereo_config = atomMapData1.stereo_config;
46
58
  mol_util_1.StringBuilder.writePadLeft(ctab, atom1.Cartn_x.toFixed(4), 10);
47
59
  mol_util_1.StringBuilder.writePadLeft(ctab, atom1.Cartn_y.toFixed(4), 10);
48
60
  mol_util_1.StringBuilder.writePadLeft(ctab, atom1.Cartn_z.toFixed(4), 10);
@@ -60,8 +72,8 @@ var MolEncoder = /** @class */ (function (_super) {
60
72
  var atom2 = atoms.get(label_atom_id2);
61
73
  if (!atom2)
62
74
  return;
63
- var i2 = atom2.index, type_symbol2 = atom2.type_symbol;
64
- if (i1 < i2 && !_this.skipHydrogen(type_symbol2)) {
75
+ var i2 = atom2.index;
76
+ if (i1 < i2) {
65
77
  var order = bond.order;
66
78
  mol_util_1.StringBuilder.writeIntegerPadLeft(bonds, i1 + 1, 3);
67
79
  mol_util_1.StringBuilder.writeIntegerPadLeft(bonds, i2 + 1, 3);
@@ -30,20 +30,33 @@ var Mol2Encoder = /** @class */ (function (_super) {
30
30
  // write header
31
31
  var name = this.getName(instance, source);
32
32
  mol_util_1.StringBuilder.writeSafe(this.builder, "# Name: ".concat(name, "\n# Created by ").concat(this.encoder, "\n\n"));
33
+ var atomMap = this.componentAtomData.entries.get(name);
33
34
  var bondMap = this.componentBondData.entries.get(name);
35
+ // happens for the unknown ligands (UNL)
36
+ if (!atomMap)
37
+ throw Error("The Chemical Component Dictionary doesn't hold any atom data for ".concat(name));
34
38
  var bondCount = 0;
35
39
  var atoms = this.getAtoms(instance, source);
36
40
  mol_util_1.StringBuilder.writeSafe(a, '@<TRIPOS>ATOM\n');
37
41
  mol_util_1.StringBuilder.writeSafe(b, '@<TRIPOS>BOND\n');
38
42
  atoms.forEach(function (atom1, label_atom_id1) {
39
- var i1 = atom1.index;
43
+ var i1 = atom1.index, type_symbol1 = atom1.type_symbol;
44
+ var atomMapData1 = atomMap.map.get(label_atom_id1);
45
+ if (!atomMapData1) {
46
+ if (_this.isHydrogen(type_symbol1)) {
47
+ return;
48
+ }
49
+ else {
50
+ throw Error("Unknown atom ".concat(label_atom_id1, " for component ").concat(name));
51
+ }
52
+ }
40
53
  if (bondMap === null || bondMap === void 0 ? void 0 : bondMap.map) {
41
54
  bondMap.map.get(label_atom_id1).forEach(function (bond, label_atom_id2) {
42
55
  var atom2 = atoms.get(label_atom_id2);
43
56
  if (!atom2)
44
57
  return;
45
- var i2 = atom2.index, type_symbol2 = atom2.type_symbol;
46
- if (i1 < i2 && !_this.skipHydrogen(type_symbol2)) {
58
+ var i2 = atom2.index;
59
+ if (i1 < i2) {
47
60
  var order = bond.order, flags = bond.flags;
48
61
  var ar = types_1.BondType.is(16 /* Aromatic */, flags);
49
62
  mol_util_1.StringBuilder.writeSafe(b, "".concat(++bondCount, " ").concat(i1 + 1, " ").concat(i2 + 1, " ").concat(ar ? 'ar' : order));
@@ -51,7 +64,7 @@ var Mol2Encoder = /** @class */ (function (_super) {
51
64
  }
52
65
  });
53
66
  }
54
- var sybyl = (bondMap === null || bondMap === void 0 ? void 0 : bondMap.map) ? _this.mapToSybyl(label_atom_id1, atom1.type_symbol, bondMap) : atom1.type_symbol;
67
+ var sybyl = (bondMap === null || bondMap === void 0 ? void 0 : bondMap.map) ? _this.mapToSybyl(label_atom_id1, type_symbol1, bondMap) : type_symbol1;
55
68
  mol_util_1.StringBuilder.writeSafe(a, "".concat(i1 + 1, " ").concat(label_atom_id1, " ").concat(atom1.Cartn_x.toFixed(3), " ").concat(atom1.Cartn_y.toFixed(3), " ").concat(atom1.Cartn_z.toFixed(3), " ").concat(sybyl, " 1 ").concat(name, " 0.000\n"));
56
69
  });
57
70
  // could write something like 'SMALL\nNO_CHARGES', for now let's write **** indicating non-optional, yet missing, string values
@@ -30,7 +30,7 @@ export declare const PlyShapeParams: {
30
30
  flatShaded: PD.BooleanParam;
31
31
  ignoreLight: PD.BooleanParam;
32
32
  xrayShaded: PD.BooleanParam;
33
- allowTransparentBackfaces: PD.BooleanParam;
33
+ transparentBackfaces: PD.Select<string>;
34
34
  bumpFrequency: PD.Numeric;
35
35
  bumpAmplitude: PD.Numeric;
36
36
  alpha: PD.Numeric;
@@ -72,7 +72,7 @@ export declare function shapeFromPly(source: PlyFile, params?: {}): Task<ShapePr
72
72
  flatShaded: PD.BooleanParam;
73
73
  ignoreLight: PD.BooleanParam;
74
74
  xrayShaded: PD.BooleanParam;
75
- allowTransparentBackfaces: PD.BooleanParam;
75
+ transparentBackfaces: PD.Select<string>;
76
76
  bumpFrequency: PD.Numeric;
77
77
  bumpAmplitude: PD.Numeric;
78
78
  alpha: PD.Numeric;
@@ -25,7 +25,7 @@ export declare const InteractionsInterUnitParams: {
25
25
  flatShaded: PD.BooleanParam;
26
26
  ignoreLight: PD.BooleanParam;
27
27
  xrayShaded: PD.BooleanParam;
28
- allowTransparentBackfaces: PD.BooleanParam;
28
+ transparentBackfaces: PD.Select<string>;
29
29
  bumpFrequency: PD.Numeric;
30
30
  bumpAmplitude: PD.Numeric;
31
31
  alpha: PD.Numeric;
@@ -25,7 +25,7 @@ export declare const InteractionsIntraUnitParams: {
25
25
  flatShaded: PD.BooleanParam;
26
26
  ignoreLight: PD.BooleanParam;
27
27
  xrayShaded: PD.BooleanParam;
28
- allowTransparentBackfaces: PD.BooleanParam;
28
+ transparentBackfaces: PD.Select<string>;
29
29
  bumpFrequency: PD.Numeric;
30
30
  bumpAmplitude: PD.Numeric;
31
31
  alpha: PD.Numeric;
@@ -29,7 +29,7 @@ export declare const InteractionsParams: {
29
29
  flatShaded: PD.BooleanParam;
30
30
  ignoreLight: PD.BooleanParam;
31
31
  xrayShaded: PD.BooleanParam;
32
- allowTransparentBackfaces: PD.BooleanParam;
32
+ transparentBackfaces: PD.Select<string>;
33
33
  bumpFrequency: PD.Numeric;
34
34
  bumpAmplitude: PD.Numeric;
35
35
  alpha: PD.Numeric;
@@ -72,7 +72,7 @@ export declare function getInteractionParams(ctx: ThemeRegistryContext, structur
72
72
  flatShaded: PD.BooleanParam;
73
73
  ignoreLight: PD.BooleanParam;
74
74
  xrayShaded: PD.BooleanParam;
75
- allowTransparentBackfaces: PD.BooleanParam;
75
+ transparentBackfaces: PD.Select<string>;
76
76
  bumpFrequency: PD.Numeric;
77
77
  bumpAmplitude: PD.Numeric;
78
78
  alpha: PD.Numeric;
@@ -116,7 +116,7 @@ export declare const InteractionsRepresentationProvider: StructureRepresentation
116
116
  flatShaded: PD.BooleanParam;
117
117
  ignoreLight: PD.BooleanParam;
118
118
  xrayShaded: PD.BooleanParam;
119
- allowTransparentBackfaces: PD.BooleanParam;
119
+ transparentBackfaces: PD.Select<string>;
120
120
  bumpFrequency: PD.Numeric;
121
121
  bumpAmplitude: PD.Numeric;
122
122
  alpha: PD.Numeric;
@@ -30,7 +30,7 @@ export declare const CrossLinkRestraintCylinderParams: {
30
30
  flatShaded: PD.BooleanParam;
31
31
  ignoreLight: PD.BooleanParam;
32
32
  xrayShaded: PD.BooleanParam;
33
- allowTransparentBackfaces: PD.BooleanParam;
33
+ transparentBackfaces: PD.Select<string>;
34
34
  bumpFrequency: PD.Numeric;
35
35
  bumpAmplitude: PD.Numeric;
36
36
  alpha: PD.Numeric;
@@ -73,7 +73,7 @@ export declare const CrossLinkRestraintParams: {
73
73
  flatShaded: PD.BooleanParam;
74
74
  ignoreLight: PD.BooleanParam;
75
75
  xrayShaded: PD.BooleanParam;
76
- allowTransparentBackfaces: PD.BooleanParam;
76
+ transparentBackfaces: PD.Select<string>;
77
77
  bumpFrequency: PD.Numeric;
78
78
  bumpAmplitude: PD.Numeric;
79
79
  alpha: PD.Numeric;
@@ -115,7 +115,7 @@ export declare function getCrossLinkRestraintParams(ctx: ThemeRegistryContext, s
115
115
  flatShaded: PD.BooleanParam;
116
116
  ignoreLight: PD.BooleanParam;
117
117
  xrayShaded: PD.BooleanParam;
118
- allowTransparentBackfaces: PD.BooleanParam;
118
+ transparentBackfaces: PD.Select<string>;
119
119
  bumpFrequency: PD.Numeric;
120
120
  bumpAmplitude: PD.Numeric;
121
121
  alpha: PD.Numeric;
@@ -158,7 +158,7 @@ export declare const CrossLinkRestraintRepresentationProvider: StructureRepresen
158
158
  flatShaded: PD.BooleanParam;
159
159
  ignoreLight: PD.BooleanParam;
160
160
  xrayShaded: PD.BooleanParam;
161
- allowTransparentBackfaces: PD.BooleanParam;
161
+ transparentBackfaces: PD.Select<string>;
162
162
  bumpFrequency: PD.Numeric;
163
163
  bumpAmplitude: PD.Numeric;
164
164
  alpha: PD.Numeric;
@@ -94,7 +94,6 @@ function getContourLevelEmdb(plugin, taskCtx, emdbId) {
94
94
  }
95
95
  }
96
96
  contourLevel = parseFloat(primaryContour.getElementsByTagName('level')[0].textContent);
97
- console.log({ contourLevel: contourLevel });
98
97
  return [2 /*return*/, contourLevel];
99
98
  }
100
99
  });
@@ -331,7 +331,7 @@ export declare const PluginCommands: {
331
331
  flipSided: any;
332
332
  flatShaded: any;
333
333
  xrayShaded: any;
334
- allowTransparentBackfaces: any;
334
+ transparentBackfaces: any;
335
335
  bumpFrequency: any;
336
336
  bumpAmplitude: any;
337
337
  quality: any;
@@ -37,7 +37,7 @@ declare class ViewportScreenshotHelper extends PluginComponent {
37
37
  flipSided: boolean;
38
38
  flatShaded: boolean;
39
39
  xrayShaded: boolean;
40
- allowTransparentBackfaces: boolean;
40
+ transparentBackfaces: string;
41
41
  bumpFrequency: number;
42
42
  bumpAmplitude: number;
43
43
  quality: "auto" | "medium" | "high" | "low" | "custom" | "highest" | "higher" | "lower" | "lowest";
@@ -70,7 +70,7 @@ declare class ViewportScreenshotHelper extends PluginComponent {
70
70
  flipSided: boolean;
71
71
  flatShaded: boolean;
72
72
  xrayShaded: boolean;
73
- allowTransparentBackfaces: boolean;
73
+ transparentBackfaces: string;
74
74
  bumpFrequency: number;
75
75
  bumpAmplitude: number;
76
76
  quality: "auto" | "medium" | "high" | "low" | "custom" | "highest" | "higher" | "lower" | "lowest";
@@ -111,7 +111,7 @@ declare class ViewportScreenshotHelper extends PluginComponent {
111
111
  flipSided: boolean;
112
112
  flatShaded: boolean;
113
113
  xrayShaded: boolean;
114
- allowTransparentBackfaces: boolean;
114
+ transparentBackfaces: string;
115
115
  bumpFrequency: number;
116
116
  bumpAmplitude: number;
117
117
  quality: "auto" | "medium" | "high" | "low" | "custom" | "highest" | "higher" | "lower" | "lowest";