molstar 3.6.0 → 3.8.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 (410) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +202 -202
  3. package/build/viewer/embedded.html +43 -43
  4. package/build/viewer/index.html +106 -106
  5. package/build/viewer/molstar.css +1 -1
  6. package/build/viewer/molstar.js +1 -1
  7. package/build/viewer/molstar.js.LICENSE.txt +0 -15
  8. package/lib/apps/docking-viewer/index.html +36 -36
  9. package/lib/apps/viewer/embedded.html +43 -43
  10. package/lib/apps/viewer/index.html +106 -106
  11. package/lib/cli/chem-comp-dict/create-ions.d.ts +2 -1
  12. package/lib/cli/chem-comp-dict/create-ions.js +3 -2
  13. package/lib/cli/cifschema/index.js +1 -1
  14. package/lib/cli/cifschema/util/cif-dic.js +1 -0
  15. package/lib/commonjs/cli/chem-comp-dict/create-ions.d.ts +2 -1
  16. package/lib/commonjs/cli/chem-comp-dict/create-ions.js +3 -2
  17. package/lib/commonjs/cli/cifschema/index.js +1 -1
  18. package/lib/commonjs/cli/cifschema/util/cif-dic.js +1 -0
  19. package/lib/commonjs/examples/alpha-orbitals/index.js +20 -15
  20. package/lib/commonjs/examples/proteopedia-wrapper/coloring.d.ts +20 -5
  21. package/lib/commonjs/extensions/anvil/behavior.d.ts +1 -1
  22. package/lib/commonjs/extensions/anvil/representation.d.ts +4 -4
  23. package/lib/commonjs/extensions/cellpack/representation.d.ts +1 -1
  24. package/lib/commonjs/extensions/dnatco/confal-pyramids/representation.d.ts +3 -3
  25. package/lib/commonjs/extensions/rcsb/assembly-symmetry/behavior.d.ts +1 -1
  26. package/lib/commonjs/extensions/rcsb/assembly-symmetry/representation.d.ts +1 -1
  27. package/lib/commonjs/extensions/rcsb/graphql/types.d.ts +284 -0
  28. package/lib/commonjs/extensions/rcsb/validation-report/representation.d.ts +5 -5
  29. package/lib/commonjs/mol-canvas3d/canvas3d.d.ts +2 -2
  30. package/lib/commonjs/mol-canvas3d/helper/camera-helper.d.ts +1 -1
  31. package/lib/commonjs/mol-canvas3d/helper/handle-helper.d.ts +1 -1
  32. package/lib/commonjs/mol-canvas3d/helper/helper.d.ts +2 -2
  33. package/lib/commonjs/mol-canvas3d/passes/draw.d.ts +0 -2
  34. package/lib/commonjs/mol-canvas3d/passes/draw.js +35 -70
  35. package/lib/commonjs/mol-canvas3d/passes/image.d.ts +1 -1
  36. package/lib/commonjs/mol-canvas3d/passes/pick.d.ts +1 -1
  37. package/lib/commonjs/mol-canvas3d/passes/pick.js +1 -1
  38. package/lib/commonjs/mol-canvas3d/passes/postprocessing.d.ts +1 -0
  39. package/lib/commonjs/mol-canvas3d/passes/postprocessing.js +16 -11
  40. package/lib/commonjs/mol-geo/geometry/color-data.d.ts +7 -10
  41. package/lib/commonjs/mol-geo/geometry/color-data.js +7 -4
  42. package/lib/commonjs/mol-geo/geometry/cylinders/cylinders.d.ts +2 -2
  43. package/lib/commonjs/mol-geo/geometry/cylinders/cylinders.js +3 -2
  44. package/lib/commonjs/mol-geo/geometry/lines/lines.d.ts +1 -0
  45. package/lib/commonjs/mol-geo/geometry/mesh/mesh.d.ts +1 -1
  46. package/lib/commonjs/mol-geo/geometry/mesh/mesh.js +3 -2
  47. package/lib/commonjs/mol-geo/geometry/points/points.d.ts +1 -1
  48. package/lib/commonjs/mol-geo/geometry/spheres/spheres.d.ts +1 -1
  49. package/lib/commonjs/mol-geo/geometry/spheres/spheres.js +3 -2
  50. package/lib/commonjs/mol-geo/geometry/texture-mesh/texture-mesh.d.ts +1 -1
  51. package/lib/commonjs/mol-geo/geometry/texture-mesh/texture-mesh.js +15 -4
  52. package/lib/commonjs/mol-geo/geometry/transparency-data.d.ts +1 -1
  53. package/lib/commonjs/mol-geo/geometry/transparency-data.js +3 -1
  54. package/lib/commonjs/mol-gl/renderable/cylinders.d.ts +2 -1
  55. package/lib/commonjs/mol-gl/renderable/cylinders.js +2 -2
  56. package/lib/commonjs/mol-gl/renderable/mesh.d.ts +2 -1
  57. package/lib/commonjs/mol-gl/renderable/mesh.js +2 -2
  58. package/lib/commonjs/mol-gl/renderable/schema.d.ts +2 -2
  59. package/lib/commonjs/mol-gl/renderable/schema.js +2 -2
  60. package/lib/commonjs/mol-gl/renderable/spheres.d.ts +2 -1
  61. package/lib/commonjs/mol-gl/renderable/spheres.js +2 -2
  62. package/lib/commonjs/mol-gl/renderable/texture-mesh.d.ts +2 -1
  63. package/lib/commonjs/mol-gl/renderable/texture-mesh.js +2 -2
  64. package/lib/commonjs/mol-gl/renderer.d.ts +5 -5
  65. package/lib/commonjs/mol-gl/renderer.js +114 -64
  66. package/lib/commonjs/mol-gl/scene.d.ts +1 -0
  67. package/lib/commonjs/mol-gl/scene.js +26 -1
  68. package/lib/commonjs/mol-gl/shader/chunks/apply-interior-color.glsl.d.ts +1 -1
  69. package/lib/commonjs/mol-gl/shader/chunks/apply-interior-color.glsl.js +1 -1
  70. package/lib/commonjs/mol-gl/shader/chunks/assign-material-color.glsl.d.ts +1 -1
  71. package/lib/commonjs/mol-gl/shader/chunks/assign-material-color.glsl.js +1 -1
  72. package/lib/commonjs/mol-gl/shader/chunks/check-picking-alpha.glsl.d.ts +1 -1
  73. package/lib/commonjs/mol-gl/shader/chunks/check-picking-alpha.glsl.js +1 -1
  74. package/lib/commonjs/mol-gl/shader/chunks/color-vert-params.glsl.d.ts +1 -1
  75. package/lib/commonjs/mol-gl/shader/chunks/color-vert-params.glsl.js +1 -1
  76. package/lib/commonjs/mol-gl/shader/chunks/common-frag-params.glsl.d.ts +1 -1
  77. package/lib/commonjs/mol-gl/shader/chunks/common-frag-params.glsl.js +1 -1
  78. package/lib/commonjs/mol-gl/shader/chunks/common.glsl.d.ts +1 -1
  79. package/lib/commonjs/mol-gl/shader/chunks/common.glsl.js +1 -1
  80. package/lib/commonjs/mol-gl/shader/chunks/wboit-write.glsl.d.ts +1 -1
  81. package/lib/commonjs/mol-gl/shader/chunks/wboit-write.glsl.js +1 -1
  82. package/lib/commonjs/mol-gl/shader/direct-volume.frag.d.ts +1 -1
  83. package/lib/commonjs/mol-gl/shader/direct-volume.frag.js +1 -1
  84. package/lib/commonjs/mol-gl/shader/image.frag.d.ts +1 -1
  85. package/lib/commonjs/mol-gl/shader/image.frag.js +1 -1
  86. package/lib/commonjs/mol-gl/shader/outlines.frag.d.ts +3 -2
  87. package/lib/commonjs/mol-gl/shader/outlines.frag.js +3 -2
  88. package/lib/commonjs/mol-gl/shader/postprocessing.frag.d.ts +1 -1
  89. package/lib/commonjs/mol-gl/shader/postprocessing.frag.js +1 -1
  90. package/lib/commonjs/mol-gl/shader/ssao.frag.d.ts +2 -2
  91. package/lib/commonjs/mol-gl/shader/ssao.frag.js +2 -2
  92. package/lib/commonjs/mol-gl/webgl/render-target.d.ts +3 -1
  93. package/lib/commonjs/mol-gl/webgl/render-target.js +3 -1
  94. package/lib/commonjs/mol-gl/webgl/renderbuffer.d.ts +2 -1
  95. package/lib/commonjs/mol-gl/webgl/renderbuffer.js +8 -1
  96. package/lib/commonjs/mol-gl/webgl/state.d.ts +7 -1
  97. package/lib/commonjs/mol-gl/webgl/state.js +28 -1
  98. package/lib/commonjs/mol-gl/webgl/texture.js +3 -0
  99. package/lib/commonjs/mol-io/reader/cif/schema/bird.d.ts +1 -1
  100. package/lib/commonjs/mol-io/reader/cif/schema/bird.js +1 -1
  101. package/lib/commonjs/mol-io/reader/cif/schema/ccd.d.ts +1 -1
  102. package/lib/commonjs/mol-io/reader/cif/schema/ccd.js +1 -1
  103. package/lib/commonjs/mol-io/reader/cif/schema/cif-core.d.ts +1 -1
  104. package/lib/commonjs/mol-io/reader/cif/schema/cif-core.js +1 -1
  105. package/lib/commonjs/mol-io/reader/cif/schema/mmcif.d.ts +3 -4
  106. package/lib/commonjs/mol-io/reader/cif/schema/mmcif.js +2 -3
  107. package/lib/commonjs/mol-io/reader/dx/parser.js +1 -1
  108. package/lib/commonjs/mol-io/writer/ligand-encoder.d.ts +4 -2
  109. package/lib/commonjs/mol-io/writer/ligand-encoder.js +9 -4
  110. package/lib/commonjs/mol-io/writer/mol/encoder.js +16 -4
  111. package/lib/commonjs/mol-io/writer/mol2/encoder.js +17 -4
  112. package/lib/commonjs/mol-math/geometry/lookup3d/grid.d.ts +1 -1
  113. package/lib/commonjs/mol-math/geometry/lookup3d/grid.js +3 -3
  114. package/lib/commonjs/mol-model/structure/model/properties/seconday-structure.d.ts +4 -2
  115. package/lib/commonjs/mol-model/structure/model/properties/seconday-structure.js +2 -1
  116. package/lib/commonjs/mol-model/structure/model/types/ions.d.ts +2 -2
  117. package/lib/commonjs/mol-model/structure/model/types/ions.js +2 -2
  118. package/lib/commonjs/mol-model/structure/model/types/saccharides.js +1 -1
  119. package/lib/commonjs/mol-model/structure/model/types.d.ts +1 -1
  120. package/lib/commonjs/mol-model/structure/model/types.js +43 -41
  121. package/lib/commonjs/mol-model-formats/shape/ply.d.ts +2 -2
  122. package/lib/commonjs/mol-model-formats/structure/common/property.js +2 -0
  123. package/lib/commonjs/mol-model-formats/structure/property/secondary-structure.d.ts +1 -1
  124. package/lib/commonjs/mol-model-formats/structure/property/secondary-structure.js +2 -2
  125. package/lib/commonjs/mol-model-props/computed/representations/interactions-inter-unit-cylinder.d.ts +1 -1
  126. package/lib/commonjs/mol-model-props/computed/representations/interactions-intra-unit-cylinder.d.ts +1 -1
  127. package/lib/commonjs/mol-model-props/computed/representations/interactions.d.ts +3 -3
  128. package/lib/commonjs/mol-model-props/integrative/cross-link-restraint/representation.d.ts +4 -4
  129. package/lib/commonjs/mol-plugin/behavior/dynamic/volume-streaming/model.d.ts +3 -2
  130. package/lib/commonjs/mol-plugin/commands.d.ts +1 -1
  131. package/lib/commonjs/mol-plugin/util/viewport-screenshot.d.ts +3 -3
  132. package/lib/commonjs/mol-plugin-state/helpers/root-structure.js +3 -1
  133. package/lib/commonjs/mol-plugin-state/transforms/representation.d.ts +6 -6
  134. package/lib/commonjs/mol-plugin-ui/base.d.ts +3 -1
  135. package/lib/commonjs/mol-plugin-ui/controls/color.d.ts +1 -1
  136. package/lib/commonjs/mol-plugin-ui/controls/common.d.ts +2 -0
  137. package/lib/commonjs/mol-plugin-ui/hooks/use-behavior.d.ts +1 -1
  138. package/lib/commonjs/mol-plugin-ui/hooks/use-behavior.js +21 -7
  139. package/lib/commonjs/mol-plugin-ui/plugin.d.ts +2 -0
  140. package/lib/commonjs/mol-plugin-ui/plugin.js +2 -2
  141. package/lib/commonjs/mol-plugin-ui/spec.d.ts +1 -0
  142. package/lib/commonjs/mol-plugin-ui/state/common.js +6 -7
  143. package/lib/commonjs/mol-plugin-ui/task.d.ts +2 -21
  144. package/lib/commonjs/mol-plugin-ui/task.js +39 -43
  145. package/lib/commonjs/mol-plugin-ui/viewport/help.d.ts +4 -1
  146. package/lib/commonjs/mol-repr/shape/loci/angle.d.ts +1 -1
  147. package/lib/commonjs/mol-repr/shape/loci/dihedral.d.ts +1 -1
  148. package/lib/commonjs/mol-repr/shape/loci/orientation.d.ts +1 -1
  149. package/lib/commonjs/mol-repr/shape/loci/plane.d.ts +1 -1
  150. package/lib/commonjs/mol-repr/shape/model/unitcell.d.ts +1 -1
  151. package/lib/commonjs/mol-repr/structure/complex-visual.d.ts +3 -3
  152. package/lib/commonjs/mol-repr/structure/params.d.ts +4 -4
  153. package/lib/commonjs/mol-repr/structure/registry.d.ts +10 -10
  154. package/lib/commonjs/mol-repr/structure/representation/backbone.d.ts +3 -3
  155. package/lib/commonjs/mol-repr/structure/representation/ball-and-stick.d.ts +3 -3
  156. package/lib/commonjs/mol-repr/structure/representation/carbohydrate.d.ts +3 -3
  157. package/lib/commonjs/mol-repr/structure/representation/cartoon.d.ts +3 -3
  158. package/lib/commonjs/mol-repr/structure/representation/ellipsoid.d.ts +3 -3
  159. package/lib/commonjs/mol-repr/structure/representation/gaussian-surface.d.ts +3 -3
  160. package/lib/commonjs/mol-repr/structure/representation/molecular-surface.d.ts +3 -3
  161. package/lib/commonjs/mol-repr/structure/representation/orientation.d.ts +3 -3
  162. package/lib/commonjs/mol-repr/structure/representation/putty.d.ts +3 -3
  163. package/lib/commonjs/mol-repr/structure/representation/spacefill.d.ts +3 -3
  164. package/lib/commonjs/mol-repr/structure/units-visual.d.ts +4 -4
  165. package/lib/commonjs/mol-repr/structure/visual/bond-inter-unit-cylinder.d.ts +2 -2
  166. package/lib/commonjs/mol-repr/structure/visual/bond-intra-unit-cylinder.d.ts +2 -2
  167. package/lib/commonjs/mol-repr/structure/visual/carbohydrate-link-cylinder.d.ts +1 -1
  168. package/lib/commonjs/mol-repr/structure/visual/carbohydrate-symbol-mesh.d.ts +1 -1
  169. package/lib/commonjs/mol-repr/structure/visual/carbohydrate-terminal-link-cylinder.d.ts +1 -1
  170. package/lib/commonjs/mol-repr/structure/visual/element-sphere.d.ts +2 -2
  171. package/lib/commonjs/mol-repr/structure/visual/ellipsoid-mesh.d.ts +1 -1
  172. package/lib/commonjs/mol-repr/structure/visual/gaussian-surface-mesh.d.ts +4 -4
  173. package/lib/commonjs/mol-repr/structure/visual/molecular-surface-mesh.d.ts +1 -1
  174. package/lib/commonjs/mol-repr/structure/visual/nucleotide-block-mesh.d.ts +1 -1
  175. package/lib/commonjs/mol-repr/structure/visual/nucleotide-ring-mesh.d.ts +1 -1
  176. package/lib/commonjs/mol-repr/structure/visual/orientation-ellipsoid-mesh.d.ts +1 -1
  177. package/lib/commonjs/mol-repr/structure/visual/polymer-backbone-cylinder.d.ts +2 -2
  178. package/lib/commonjs/mol-repr/structure/visual/polymer-backbone-sphere.d.ts +2 -2
  179. package/lib/commonjs/mol-repr/structure/visual/polymer-direction-wedge.d.ts +1 -1
  180. package/lib/commonjs/mol-repr/structure/visual/polymer-gap-cylinder.d.ts +1 -1
  181. package/lib/commonjs/mol-repr/structure/visual/polymer-trace-mesh.d.ts +1 -1
  182. package/lib/commonjs/mol-repr/structure/visual/polymer-tube-mesh.d.ts +1 -1
  183. package/lib/commonjs/mol-repr/util.d.ts +1 -1
  184. package/lib/commonjs/mol-repr/util.js +1 -1
  185. package/lib/commonjs/mol-repr/volume/isosurface.d.ts +5 -5
  186. package/lib/commonjs/mol-repr/volume/registry.d.ts +1 -1
  187. package/lib/commonjs/mol-repr/volume/slice.js +1 -1
  188. package/lib/commonjs/mol-script/language/builder.d.ts +0 -1
  189. package/lib/commonjs/mol-theme/color/volume-value.d.ts +3 -2
  190. package/lib/commonjs/mol-theme/color/volume-value.js +1 -3
  191. package/lib/commonjs/mol-theme/color.d.ts +55 -39
  192. package/lib/commonjs/mol-theme/color.js +1 -1
  193. package/lib/commonjs/mol-theme/theme.d.ts +8 -7
  194. package/lib/commonjs/mol-theme/theme.js +1 -1
  195. package/lib/commonjs/servers/model/server/query.js +1 -3
  196. package/lib/commonjs/servers/model/version.d.ts +1 -1
  197. package/lib/commonjs/servers/model/version.js +1 -1
  198. package/lib/examples/alpha-orbitals/index.html +61 -61
  199. package/lib/examples/alpha-orbitals/index.js +20 -15
  200. package/lib/examples/basic-wrapper/index.html +137 -137
  201. package/lib/examples/lighting/index.html +88 -88
  202. package/lib/examples/proteopedia-wrapper/coloring.d.ts +20 -5
  203. package/lib/examples/proteopedia-wrapper/index.html +236 -236
  204. package/lib/extensions/anvil/behavior.d.ts +1 -1
  205. package/lib/extensions/anvil/representation.d.ts +4 -4
  206. package/lib/extensions/cellpack/representation.d.ts +1 -1
  207. package/lib/extensions/dnatco/confal-pyramids/representation.d.ts +3 -3
  208. package/lib/extensions/rcsb/assembly-symmetry/behavior.d.ts +1 -1
  209. package/lib/extensions/rcsb/assembly-symmetry/representation.d.ts +1 -1
  210. package/lib/extensions/rcsb/graphql/types.d.ts +284 -0
  211. package/lib/extensions/rcsb/validation-report/representation.d.ts +5 -5
  212. package/lib/mol-canvas3d/canvas3d.d.ts +2 -2
  213. package/lib/mol-canvas3d/helper/camera-helper.d.ts +1 -1
  214. package/lib/mol-canvas3d/helper/handle-helper.d.ts +1 -1
  215. package/lib/mol-canvas3d/helper/helper.d.ts +2 -2
  216. package/lib/mol-canvas3d/passes/draw.d.ts +0 -2
  217. package/lib/mol-canvas3d/passes/draw.js +32 -67
  218. package/lib/mol-canvas3d/passes/image.d.ts +1 -1
  219. package/lib/mol-canvas3d/passes/pick.d.ts +1 -1
  220. package/lib/mol-canvas3d/passes/pick.js +1 -1
  221. package/lib/mol-canvas3d/passes/postprocessing.d.ts +1 -0
  222. package/lib/mol-canvas3d/passes/postprocessing.js +16 -11
  223. package/lib/mol-geo/geometry/color-data.d.ts +7 -10
  224. package/lib/mol-geo/geometry/color-data.js +7 -4
  225. package/lib/mol-geo/geometry/cylinders/cylinders.d.ts +2 -2
  226. package/lib/mol-geo/geometry/cylinders/cylinders.js +3 -2
  227. package/lib/mol-geo/geometry/lines/lines.d.ts +1 -0
  228. package/lib/mol-geo/geometry/mesh/mesh.d.ts +1 -1
  229. package/lib/mol-geo/geometry/mesh/mesh.js +3 -2
  230. package/lib/mol-geo/geometry/points/points.d.ts +1 -1
  231. package/lib/mol-geo/geometry/spheres/spheres.d.ts +1 -1
  232. package/lib/mol-geo/geometry/spheres/spheres.js +3 -2
  233. package/lib/mol-geo/geometry/texture-mesh/texture-mesh.d.ts +1 -1
  234. package/lib/mol-geo/geometry/texture-mesh/texture-mesh.js +15 -4
  235. package/lib/mol-geo/geometry/transparency-data.d.ts +1 -1
  236. package/lib/mol-geo/geometry/transparency-data.js +3 -1
  237. package/lib/mol-gl/renderable/cylinders.d.ts +2 -1
  238. package/lib/mol-gl/renderable/cylinders.js +2 -2
  239. package/lib/mol-gl/renderable/mesh.d.ts +2 -1
  240. package/lib/mol-gl/renderable/mesh.js +2 -2
  241. package/lib/mol-gl/renderable/schema.d.ts +2 -2
  242. package/lib/mol-gl/renderable/schema.js +2 -2
  243. package/lib/mol-gl/renderable/spheres.d.ts +2 -1
  244. package/lib/mol-gl/renderable/spheres.js +2 -2
  245. package/lib/mol-gl/renderable/texture-mesh.d.ts +2 -1
  246. package/lib/mol-gl/renderable/texture-mesh.js +2 -2
  247. package/lib/mol-gl/renderer.d.ts +5 -5
  248. package/lib/mol-gl/renderer.js +114 -64
  249. package/lib/mol-gl/scene.d.ts +1 -0
  250. package/lib/mol-gl/scene.js +26 -1
  251. package/lib/mol-gl/shader/chunks/apply-interior-color.glsl.d.ts +1 -1
  252. package/lib/mol-gl/shader/chunks/apply-interior-color.glsl.js +1 -1
  253. package/lib/mol-gl/shader/chunks/assign-material-color.glsl.d.ts +1 -1
  254. package/lib/mol-gl/shader/chunks/assign-material-color.glsl.js +1 -1
  255. package/lib/mol-gl/shader/chunks/check-picking-alpha.glsl.d.ts +1 -1
  256. package/lib/mol-gl/shader/chunks/check-picking-alpha.glsl.js +1 -1
  257. package/lib/mol-gl/shader/chunks/color-vert-params.glsl.d.ts +1 -1
  258. package/lib/mol-gl/shader/chunks/color-vert-params.glsl.js +1 -1
  259. package/lib/mol-gl/shader/chunks/common-frag-params.glsl.d.ts +1 -1
  260. package/lib/mol-gl/shader/chunks/common-frag-params.glsl.js +1 -1
  261. package/lib/mol-gl/shader/chunks/common.glsl.d.ts +1 -1
  262. package/lib/mol-gl/shader/chunks/common.glsl.js +1 -1
  263. package/lib/mol-gl/shader/chunks/wboit-write.glsl.d.ts +1 -1
  264. package/lib/mol-gl/shader/chunks/wboit-write.glsl.js +1 -1
  265. package/lib/mol-gl/shader/direct-volume.frag.d.ts +1 -1
  266. package/lib/mol-gl/shader/direct-volume.frag.js +1 -1
  267. package/lib/mol-gl/shader/image.frag.d.ts +1 -1
  268. package/lib/mol-gl/shader/image.frag.js +1 -1
  269. package/lib/mol-gl/shader/outlines.frag.d.ts +3 -2
  270. package/lib/mol-gl/shader/outlines.frag.js +3 -2
  271. package/lib/mol-gl/shader/postprocessing.frag.d.ts +1 -1
  272. package/lib/mol-gl/shader/postprocessing.frag.js +1 -1
  273. package/lib/mol-gl/shader/ssao.frag.d.ts +2 -2
  274. package/lib/mol-gl/shader/ssao.frag.js +2 -2
  275. package/lib/mol-gl/webgl/render-target.d.ts +3 -1
  276. package/lib/mol-gl/webgl/render-target.js +3 -1
  277. package/lib/mol-gl/webgl/renderbuffer.d.ts +2 -1
  278. package/lib/mol-gl/webgl/renderbuffer.js +8 -1
  279. package/lib/mol-gl/webgl/state.d.ts +7 -1
  280. package/lib/mol-gl/webgl/state.js +28 -1
  281. package/lib/mol-gl/webgl/texture.js +3 -0
  282. package/lib/mol-io/reader/cif/schema/bird.d.ts +1 -1
  283. package/lib/mol-io/reader/cif/schema/bird.js +1 -1
  284. package/lib/mol-io/reader/cif/schema/ccd.d.ts +1 -1
  285. package/lib/mol-io/reader/cif/schema/ccd.js +1 -1
  286. package/lib/mol-io/reader/cif/schema/cif-core.d.ts +1 -1
  287. package/lib/mol-io/reader/cif/schema/cif-core.js +1 -1
  288. package/lib/mol-io/reader/cif/schema/mmcif.d.ts +3 -4
  289. package/lib/mol-io/reader/cif/schema/mmcif.js +2 -3
  290. package/lib/mol-io/reader/dx/parser.js +1 -1
  291. package/lib/mol-io/writer/ligand-encoder.d.ts +4 -2
  292. package/lib/mol-io/writer/ligand-encoder.js +9 -4
  293. package/lib/mol-io/writer/mol/encoder.js +16 -4
  294. package/lib/mol-io/writer/mol2/encoder.js +17 -4
  295. package/lib/mol-math/geometry/lookup3d/grid.d.ts +1 -1
  296. package/lib/mol-math/geometry/lookup3d/grid.js +3 -3
  297. package/lib/mol-model/structure/model/properties/seconday-structure.d.ts +4 -2
  298. package/lib/mol-model/structure/model/properties/seconday-structure.js +2 -1
  299. package/lib/mol-model/structure/model/types/ions.d.ts +2 -2
  300. package/lib/mol-model/structure/model/types/ions.js +2 -2
  301. package/lib/mol-model/structure/model/types/saccharides.js +1 -1
  302. package/lib/mol-model/structure/model/types.d.ts +1 -1
  303. package/lib/mol-model/structure/model/types.js +43 -41
  304. package/lib/mol-model-formats/shape/ply.d.ts +2 -2
  305. package/lib/mol-model-formats/structure/common/property.js +2 -0
  306. package/lib/mol-model-formats/structure/property/secondary-structure.d.ts +1 -1
  307. package/lib/mol-model-formats/structure/property/secondary-structure.js +2 -2
  308. package/lib/mol-model-props/computed/representations/interactions-inter-unit-cylinder.d.ts +1 -1
  309. package/lib/mol-model-props/computed/representations/interactions-intra-unit-cylinder.d.ts +1 -1
  310. package/lib/mol-model-props/computed/representations/interactions.d.ts +3 -3
  311. package/lib/mol-model-props/integrative/cross-link-restraint/representation.d.ts +4 -4
  312. package/lib/mol-plugin/behavior/dynamic/volume-streaming/model.d.ts +3 -2
  313. package/lib/mol-plugin/commands.d.ts +1 -1
  314. package/lib/mol-plugin/util/viewport-screenshot.d.ts +3 -3
  315. package/lib/mol-plugin/version.js +2 -2
  316. package/lib/mol-plugin-state/helpers/root-structure.js +3 -1
  317. package/lib/mol-plugin-state/transforms/representation.d.ts +6 -6
  318. package/lib/mol-plugin-ui/base.d.ts +3 -1
  319. package/lib/mol-plugin-ui/controls/color.d.ts +1 -1
  320. package/lib/mol-plugin-ui/controls/common.d.ts +2 -0
  321. package/lib/mol-plugin-ui/hooks/use-behavior.d.ts +1 -1
  322. package/lib/mol-plugin-ui/hooks/use-behavior.js +20 -7
  323. package/lib/mol-plugin-ui/plugin.d.ts +2 -0
  324. package/lib/mol-plugin-ui/plugin.js +2 -2
  325. package/lib/mol-plugin-ui/skin/base/base.scss +32 -32
  326. package/lib/mol-plugin-ui/skin/base/components/controls-base.scss +333 -333
  327. package/lib/mol-plugin-ui/skin/base/components/controls.scss +418 -418
  328. package/lib/mol-plugin-ui/skin/base/components/help.scss +27 -27
  329. package/lib/mol-plugin-ui/skin/base/components/line-graph.scss +67 -67
  330. package/lib/mol-plugin-ui/skin/base/components/log.scss +100 -100
  331. package/lib/mol-plugin-ui/skin/base/components/misc.scss +643 -643
  332. package/lib/mol-plugin-ui/skin/base/components/sequence.scss +125 -125
  333. package/lib/mol-plugin-ui/skin/base/components/slider.scss +165 -165
  334. package/lib/mol-plugin-ui/skin/base/components/tasks.scss +99 -99
  335. package/lib/mol-plugin-ui/skin/base/components/toast.scss +83 -83
  336. package/lib/mol-plugin-ui/skin/base/components/transformer.scss +163 -163
  337. package/lib/mol-plugin-ui/skin/base/components/viewport.scss +128 -128
  338. package/lib/mol-plugin-ui/skin/base/layout/common.scss +71 -71
  339. package/lib/mol-plugin-ui/skin/base/layout/controls-landscape.scss +89 -89
  340. package/lib/mol-plugin-ui/skin/base/layout/controls-outside.scss +98 -98
  341. package/lib/mol-plugin-ui/skin/base/layout/controls-portrait.scss +108 -108
  342. package/lib/mol-plugin-ui/skin/base/layout.scss +40 -40
  343. package/lib/mol-plugin-ui/skin/base/logo.scss +12 -12
  344. package/lib/mol-plugin-ui/skin/base/normalize.scss +209 -209
  345. package/lib/mol-plugin-ui/skin/base/ui.scss +40 -40
  346. package/lib/mol-plugin-ui/skin/base/variables.scss +85 -85
  347. package/lib/mol-plugin-ui/skin/blue.scss +1 -1
  348. package/lib/mol-plugin-ui/skin/colors/blue.scss +23 -23
  349. package/lib/mol-plugin-ui/skin/colors/dark.scss +23 -23
  350. package/lib/mol-plugin-ui/skin/colors/light.scss +29 -29
  351. package/lib/mol-plugin-ui/skin/dark.scss +1 -1
  352. package/lib/mol-plugin-ui/skin/light.scss +1 -1
  353. package/lib/mol-plugin-ui/spec.d.ts +1 -0
  354. package/lib/mol-plugin-ui/state/common.js +7 -8
  355. package/lib/mol-plugin-ui/task.d.ts +2 -21
  356. package/lib/mol-plugin-ui/task.js +40 -46
  357. package/lib/mol-plugin-ui/viewport/help.d.ts +4 -1
  358. package/lib/mol-repr/shape/loci/angle.d.ts +1 -1
  359. package/lib/mol-repr/shape/loci/dihedral.d.ts +1 -1
  360. package/lib/mol-repr/shape/loci/orientation.d.ts +1 -1
  361. package/lib/mol-repr/shape/loci/plane.d.ts +1 -1
  362. package/lib/mol-repr/shape/model/unitcell.d.ts +1 -1
  363. package/lib/mol-repr/structure/complex-visual.d.ts +3 -3
  364. package/lib/mol-repr/structure/params.d.ts +4 -4
  365. package/lib/mol-repr/structure/registry.d.ts +10 -10
  366. package/lib/mol-repr/structure/representation/backbone.d.ts +3 -3
  367. package/lib/mol-repr/structure/representation/ball-and-stick.d.ts +3 -3
  368. package/lib/mol-repr/structure/representation/carbohydrate.d.ts +3 -3
  369. package/lib/mol-repr/structure/representation/cartoon.d.ts +3 -3
  370. package/lib/mol-repr/structure/representation/ellipsoid.d.ts +3 -3
  371. package/lib/mol-repr/structure/representation/gaussian-surface.d.ts +3 -3
  372. package/lib/mol-repr/structure/representation/molecular-surface.d.ts +3 -3
  373. package/lib/mol-repr/structure/representation/orientation.d.ts +3 -3
  374. package/lib/mol-repr/structure/representation/putty.d.ts +3 -3
  375. package/lib/mol-repr/structure/representation/spacefill.d.ts +3 -3
  376. package/lib/mol-repr/structure/units-visual.d.ts +4 -4
  377. package/lib/mol-repr/structure/visual/bond-inter-unit-cylinder.d.ts +2 -2
  378. package/lib/mol-repr/structure/visual/bond-intra-unit-cylinder.d.ts +2 -2
  379. package/lib/mol-repr/structure/visual/carbohydrate-link-cylinder.d.ts +1 -1
  380. package/lib/mol-repr/structure/visual/carbohydrate-symbol-mesh.d.ts +1 -1
  381. package/lib/mol-repr/structure/visual/carbohydrate-terminal-link-cylinder.d.ts +1 -1
  382. package/lib/mol-repr/structure/visual/element-sphere.d.ts +2 -2
  383. package/lib/mol-repr/structure/visual/ellipsoid-mesh.d.ts +1 -1
  384. package/lib/mol-repr/structure/visual/gaussian-surface-mesh.d.ts +4 -4
  385. package/lib/mol-repr/structure/visual/molecular-surface-mesh.d.ts +1 -1
  386. package/lib/mol-repr/structure/visual/nucleotide-block-mesh.d.ts +1 -1
  387. package/lib/mol-repr/structure/visual/nucleotide-ring-mesh.d.ts +1 -1
  388. package/lib/mol-repr/structure/visual/orientation-ellipsoid-mesh.d.ts +1 -1
  389. package/lib/mol-repr/structure/visual/polymer-backbone-cylinder.d.ts +2 -2
  390. package/lib/mol-repr/structure/visual/polymer-backbone-sphere.d.ts +2 -2
  391. package/lib/mol-repr/structure/visual/polymer-direction-wedge.d.ts +1 -1
  392. package/lib/mol-repr/structure/visual/polymer-gap-cylinder.d.ts +1 -1
  393. package/lib/mol-repr/structure/visual/polymer-trace-mesh.d.ts +1 -1
  394. package/lib/mol-repr/structure/visual/polymer-tube-mesh.d.ts +1 -1
  395. package/lib/mol-repr/util.d.ts +1 -1
  396. package/lib/mol-repr/util.js +1 -1
  397. package/lib/mol-repr/volume/isosurface.d.ts +5 -5
  398. package/lib/mol-repr/volume/registry.d.ts +1 -1
  399. package/lib/mol-repr/volume/slice.js +1 -1
  400. package/lib/mol-script/language/builder.d.ts +0 -1
  401. package/lib/mol-theme/color/volume-value.d.ts +3 -2
  402. package/lib/mol-theme/color/volume-value.js +2 -4
  403. package/lib/mol-theme/color.d.ts +55 -39
  404. package/lib/mol-theme/color.js +1 -1
  405. package/lib/mol-theme/theme.d.ts +8 -7
  406. package/lib/mol-theme/theme.js +1 -1
  407. package/lib/servers/model/server/query.js +1 -3
  408. package/lib/servers/model/version.d.ts +1 -1
  409. package/lib/servers/model/version.js +1 -1
  410. package/package.json +162 -162
@@ -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
  */
@@ -18,6 +18,8 @@ function applyTransparencyValue(array, start, end, value) {
18
18
  }
19
19
  exports.applyTransparencyValue = applyTransparencyValue;
20
20
  function getTransparencyAverage(array, count) {
21
+ if (count === 0 || array.length < count)
22
+ return 0;
21
23
  var sum = 0;
22
24
  for (var i = 0; i < count; ++i) {
23
25
  sum += array[i];
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2020-2021 mol* contributors, licensed under MIT, See LICENSE file for more info.
2
+ * Copyright (c) 2020-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
  */
@@ -19,6 +19,7 @@ export declare const CylindersSchema: {
19
19
  uDoubleSided: UniformSpec<"b">;
20
20
  dIgnoreLight: DefineSpec<"boolean">;
21
21
  dXrayShaded: DefineSpec<"boolean">;
22
+ dTransparentBackfaces: DefineSpec<"string">;
22
23
  uBumpFrequency: UniformSpec<"f">;
23
24
  uBumpAmplitude: UniformSpec<"f">;
24
25
  uSize: UniformSpec<"f">;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /**
3
- * Copyright (c) 2020-2021 mol* contributors, licensed under MIT, See LICENSE file for more info.
3
+ * Copyright (c) 2020-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.CylindersSchema = tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, schema_1.BaseSchema), schema_1.SizeSchema), { aGroup: (0, schema_1.AttributeSpec)('float32', 1, 0), aStart: (0, schema_1.AttributeSpec)('float32', 3, 0), aEnd: (0, schema_1.AttributeSpec)('float32', 3, 0), aMapping: (0, schema_1.AttributeSpec)('float32', 3, 0), aScale: (0, schema_1.AttributeSpec)('float32', 1, 0), aCap: (0, schema_1.AttributeSpec)('float32', 1, 0), elements: (0, schema_1.ElementsSpec)('uint32'), padding: (0, schema_1.ValueSpec)('number'), uDoubleSided: (0, schema_1.UniformSpec)('b'), dIgnoreLight: (0, schema_1.DefineSpec)('boolean'), dXrayShaded: (0, schema_1.DefineSpec)('boolean'), uBumpFrequency: (0, schema_1.UniformSpec)('f'), uBumpAmplitude: (0, schema_1.UniformSpec)('f') });
15
+ exports.CylindersSchema = tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, schema_1.BaseSchema), schema_1.SizeSchema), { aGroup: (0, schema_1.AttributeSpec)('float32', 1, 0), aStart: (0, schema_1.AttributeSpec)('float32', 3, 0), aEnd: (0, schema_1.AttributeSpec)('float32', 3, 0), aMapping: (0, schema_1.AttributeSpec)('float32', 3, 0), aScale: (0, schema_1.AttributeSpec)('float32', 1, 0), aCap: (0, schema_1.AttributeSpec)('float32', 1, 0), elements: (0, schema_1.ElementsSpec)('uint32'), padding: (0, schema_1.ValueSpec)('number'), uDoubleSided: (0, schema_1.UniformSpec)('b'), dIgnoreLight: (0, schema_1.DefineSpec)('boolean'), dXrayShaded: (0, schema_1.DefineSpec)('boolean'), dTransparentBackfaces: (0, schema_1.DefineSpec)('string', ['off', 'on', 'opaque']), uBumpFrequency: (0, schema_1.UniformSpec)('f'), uBumpAmplitude: (0, schema_1.UniformSpec)('f') });
16
16
  function CylindersRenderable(ctx, id, values, state, materialId, variants) {
17
17
  var schema = tslib_1.__assign(tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, schema_1.GlobalUniformSchema), schema_1.GlobalTextureSchema), schema_1.InternalSchema), exports.CylindersSchema);
18
18
  var internalValues = {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2018-2021 mol* contributors, licensed under MIT, See LICENSE file for more info.
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
  */
@@ -17,6 +17,7 @@ export declare const MeshSchema: {
17
17
  readonly dFlipSided: DefineSpec<"boolean">;
18
18
  readonly dIgnoreLight: DefineSpec<"boolean">;
19
19
  readonly dXrayShaded: DefineSpec<"boolean">;
20
+ readonly dTransparentBackfaces: DefineSpec<"string">;
20
21
  readonly uBumpFrequency: UniformSpec<"f">;
21
22
  readonly uBumpAmplitude: UniformSpec<"f">;
22
23
  readonly meta: ValueSpec<"unknown">;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /**
3
- * Copyright (c) 2018-2021 mol* contributors, licensed under MIT, See LICENSE file for more info.
3
+ * Copyright (c) 2018-2022 mol* contributors, licensed under MIT, See LICENSE file for more info.
4
4
  *
5
5
  * @author Alexander Rose <alexander.rose@weirdbyte.de>
6
6
  */
@@ -12,7 +12,7 @@ var render_item_1 = require("../webgl/render-item");
12
12
  var schema_1 = require("./schema");
13
13
  var shader_code_1 = require("../shader-code");
14
14
  var mol_util_1 = require("../../mol-util");
15
- exports.MeshSchema = tslib_1.__assign(tslib_1.__assign({}, schema_1.BaseSchema), { aGroup: (0, schema_1.AttributeSpec)('float32', 1, 0), aPosition: (0, schema_1.AttributeSpec)('float32', 3, 0), aNormal: (0, schema_1.AttributeSpec)('float32', 3, 0), elements: (0, schema_1.ElementsSpec)('uint32'), dFlatShaded: (0, schema_1.DefineSpec)('boolean'), uDoubleSided: (0, schema_1.UniformSpec)('b'), dFlipSided: (0, schema_1.DefineSpec)('boolean'), dIgnoreLight: (0, schema_1.DefineSpec)('boolean'), dXrayShaded: (0, schema_1.DefineSpec)('boolean'), uBumpFrequency: (0, schema_1.UniformSpec)('f'), uBumpAmplitude: (0, schema_1.UniformSpec)('f'), meta: (0, schema_1.ValueSpec)('unknown') });
15
+ exports.MeshSchema = tslib_1.__assign(tslib_1.__assign({}, schema_1.BaseSchema), { aGroup: (0, schema_1.AttributeSpec)('float32', 1, 0), aPosition: (0, schema_1.AttributeSpec)('float32', 3, 0), aNormal: (0, schema_1.AttributeSpec)('float32', 3, 0), elements: (0, schema_1.ElementsSpec)('uint32'), dFlatShaded: (0, schema_1.DefineSpec)('boolean'), uDoubleSided: (0, schema_1.UniformSpec)('b'), dFlipSided: (0, schema_1.DefineSpec)('boolean'), dIgnoreLight: (0, schema_1.DefineSpec)('boolean'), dXrayShaded: (0, schema_1.DefineSpec)('boolean'), dTransparentBackfaces: (0, schema_1.DefineSpec)('string', ['off', 'on', 'opaque']), uBumpFrequency: (0, schema_1.UniformSpec)('f'), uBumpAmplitude: (0, schema_1.UniformSpec)('f'), meta: (0, schema_1.ValueSpec)('unknown') });
16
16
  function MeshRenderable(ctx, id, values, state, materialId, variants) {
17
17
  var schema = tslib_1.__assign(tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, schema_1.GlobalUniformSchema), schema_1.GlobalTextureSchema), schema_1.InternalSchema), exports.MeshSchema);
18
18
  var internalValues = {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2018-2021 mol* contributors, licensed under MIT, See LICENSE file for more info.
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 uRenderWboit: UniformSpec<"b">;
122
+ readonly uRenderMask: UniformSpec<"i">;
123
123
  readonly uMarkingDepthTest: UniformSpec<"b">;
124
124
  readonly uMarkingType: UniformSpec<"i">;
125
125
  readonly uPickType: UniformSpec<"i">;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /**
3
- * Copyright (c) 2018-2021 mol* contributors, licensed under MIT, See LICENSE file for more info.
3
+ * Copyright (c) 2018-2022 mol* contributors, licensed under MIT, See LICENSE file for more info.
4
4
  *
5
5
  * @author Alexander Rose <alexander.rose@weirdbyte.de>
6
6
  */
@@ -105,7 +105,7 @@ exports.GlobalUniformSchema = {
105
105
  uSelectStrength: UniformSpec('f'),
106
106
  uMarkerPriority: UniformSpec('i'),
107
107
  uXrayEdgeFalloff: UniformSpec('f'),
108
- uRenderWboit: UniformSpec('b'),
108
+ uRenderMask: UniformSpec('i'),
109
109
  uMarkingDepthTest: UniformSpec('b'),
110
110
  uMarkingType: UniformSpec('i'),
111
111
  uPickType: UniformSpec('i'),
@@ -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
+ dTransparentBackfaces: DefineSpec<"string">;
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'), dTransparentBackfaces: (0, schema_1.DefineSpec)('string', ['off', 'on', 'opaque']), uBumpFrequency: (0, schema_1.UniformSpec)('f'), uBumpAmplitude: (0, schema_1.UniformSpec)('f') });
16
16
  function SpheresRenderable(ctx, id, values, state, materialId, variants) {
17
17
  var schema = tslib_1.__assign(tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, schema_1.GlobalUniformSchema), schema_1.GlobalTextureSchema), schema_1.InternalSchema), exports.SpheresSchema);
18
18
  var internalValues = {
@@ -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
+ dTransparentBackfaces: DefineSpec<"string">;
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'), dTransparentBackfaces: (0, schema_1.DefineSpec)('string', ['off', 'on', 'opaque']), uBumpFrequency: (0, schema_1.UniformSpec)('f'), uBumpAmplitude: (0, schema_1.UniformSpec)('f'), meta: (0, schema_1.ValueSpec)('unknown') });
16
16
  function TextureMeshRenderable(ctx, id, values, state, materialId, variants) {
17
17
  var schema = tslib_1.__assign(tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, schema_1.GlobalUniformSchema), schema_1.GlobalTextureSchema), schema_1.InternalSchema), exports.TextureMeshSchema);
18
18
  var internalValues = {
@@ -7,7 +7,6 @@ import { ICamera } from '../mol-canvas3d/camera';
7
7
  import { Scene } from './scene';
8
8
  import { WebGLContext } from './webgl/context';
9
9
  import { Color } from '../mol-util/color';
10
- import { GraphicsRenderVariant } from './webgl/render-item';
11
10
  import { ParamDefinition as PD } from '../mol-util/param-definition';
12
11
  import { Texture } from './webgl/texture';
13
12
  export interface RendererStats {
@@ -38,17 +37,18 @@ interface Renderer {
38
37
  readonly stats: RendererStats;
39
38
  readonly props: Readonly<RendererProps>;
40
39
  clear: (toBackgroundColor: boolean, ignoreTransparentBackground?: boolean) => void;
41
- clearDepth: () => void;
40
+ clearDepth: (packed?: boolean) => void;
42
41
  update: (camera: ICamera) => void;
43
- renderPick: (group: Scene.Group, camera: ICamera, variant: GraphicsRenderVariant, depthTexture: Texture | null, pickType: PickType) => void;
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
- renderBlendedVolumeOpaque: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void;
51
- renderBlendedVolumeTransparent: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void;
51
+ renderBlendedVolume: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void;
52
52
  renderWboitOpaque: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void;
53
53
  renderWboitTransparent: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void;
54
54
  setProps: (props: Partial<RendererProps>) => void;
@@ -67,7 +67,9 @@ var Renderer;
67
67
  var drawingBufferSize = linear_algebra_1.Vec2.create(gl.drawingBufferWidth, gl.drawingBufferHeight);
68
68
  var bgColor = color_1.Color.toVec3Normalized((0, linear_algebra_1.Vec3)(), p.backgroundColor);
69
69
  var transparentBackground = false;
70
- var emptyDepthTexture = ctx.resources.texture('image-depth', 'depth', 'ushort', 'nearest');
70
+ var emptyDepthTexture = ctx.resources.texture('image-uint8', 'rgba', 'ubyte', 'nearest');
71
+ emptyDepthTexture.define(1, 1);
72
+ emptyDepthTexture.load({ array: new Uint8Array([255, 255, 255, 255]), width: 1, height: 1 });
71
73
  var sharedTexturesList = [
72
74
  ['tDepth', emptyDepthTexture]
73
75
  ];
@@ -104,7 +106,7 @@ var Renderer;
104
106
  uFogNear: mol_util_1.ValueCell.create(1),
105
107
  uFogFar: mol_util_1.ValueCell.create(10000),
106
108
  uFogColor: mol_util_1.ValueCell.create(bgColor),
107
- uRenderWboit: mol_util_1.ValueCell.create(false),
109
+ uRenderMask: mol_util_1.ValueCell.create(0),
108
110
  uMarkingDepthTest: mol_util_1.ValueCell.create(false),
109
111
  uPickType: mol_util_1.ValueCell.create(0 /* None */),
110
112
  uMarkingType: mol_util_1.ValueCell.create(0 /* None */),
@@ -125,7 +127,8 @@ var Renderer;
125
127
  };
126
128
  var globalUniformList = Object.entries(globalUniforms);
127
129
  var globalUniformsNeedUpdate = true;
128
- var renderObject = function (r, variant) {
130
+ var renderObject = function (r, variant, flag) {
131
+ var _a, _b, _c;
129
132
  if (r.state.disposed || !r.state.visible || (!r.state.pickable && variant === 'pick')) {
130
133
  return;
131
134
  }
@@ -160,6 +163,28 @@ var Renderer;
160
163
  state.depthMask(false);
161
164
  }
162
165
  }
166
+ else if (flag === 1 /* BlendedFront */) {
167
+ state.enable(gl.CULL_FACE);
168
+ if ((_a = r.values.dFlipSided) === null || _a === void 0 ? void 0 : _a.ref.value) {
169
+ state.frontFace(gl.CW);
170
+ state.cullFace(gl.FRONT);
171
+ }
172
+ else {
173
+ state.frontFace(gl.CCW);
174
+ state.cullFace(gl.BACK);
175
+ }
176
+ }
177
+ else if (flag === 2 /* BlendedBack */) {
178
+ state.enable(gl.CULL_FACE);
179
+ if ((_b = r.values.dFlipSided) === null || _b === void 0 ? void 0 : _b.ref.value) {
180
+ state.frontFace(gl.CW);
181
+ state.cullFace(gl.BACK);
182
+ }
183
+ else {
184
+ state.frontFace(gl.CCW);
185
+ state.cullFace(gl.FRONT);
186
+ }
187
+ }
163
188
  else {
164
189
  if (r.values.uDoubleSided) {
165
190
  if (r.values.uDoubleSided.ref.value || r.values.hasReflection.ref.value) {
@@ -173,15 +198,9 @@ var Renderer;
173
198
  // webgl default
174
199
  state.disable(gl.CULL_FACE);
175
200
  }
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
- }
201
+ if ((_c = r.values.dFlipSided) === null || _c === void 0 ? void 0 : _c.ref.value) {
202
+ state.frontFace(gl.CW);
203
+ state.cullFace(gl.FRONT);
185
204
  }
186
205
  else {
187
206
  // webgl default
@@ -206,14 +225,14 @@ var Renderer;
206
225
  mol_util_1.ValueCell.updateIfChanged(globalUniforms.uFogNear, camera.fogNear);
207
226
  mol_util_1.ValueCell.updateIfChanged(globalUniforms.uTransparentBackground, transparentBackground);
208
227
  };
209
- var updateInternal = function (group, camera, depthTexture, renderWboit, markingDepthTest) {
228
+ var updateInternal = function (group, camera, depthTexture, renderMask, markingDepthTest) {
210
229
  (0, array_1.arrayMapUpsert)(sharedTexturesList, 'tDepth', depthTexture || emptyDepthTexture);
211
230
  mol_util_1.ValueCell.update(globalUniforms.uModel, group.view);
212
231
  mol_util_1.ValueCell.update(globalUniforms.uModelView, linear_algebra_1.Mat4.mul(modelView, group.view, camera.view));
213
232
  mol_util_1.ValueCell.update(globalUniforms.uInvModelView, linear_algebra_1.Mat4.invert(invModelView, modelView));
214
233
  mol_util_1.ValueCell.update(globalUniforms.uModelViewProjection, linear_algebra_1.Mat4.mul(modelViewProjection, modelView, camera.projection));
215
234
  mol_util_1.ValueCell.update(globalUniforms.uInvModelViewProjection, linear_algebra_1.Mat4.invert(invModelViewProjection, modelViewProjection));
216
- mol_util_1.ValueCell.updateIfChanged(globalUniforms.uRenderWboit, renderWboit);
235
+ mol_util_1.ValueCell.updateIfChanged(globalUniforms.uRenderMask, renderMask);
217
236
  mol_util_1.ValueCell.updateIfChanged(globalUniforms.uMarkingDepthTest, markingDepthTest);
218
237
  state.enable(gl.SCISSOR_TEST);
219
238
  state.colorMask(true, true, true, true);
@@ -227,12 +246,12 @@ var Renderer;
227
246
  state.disable(gl.BLEND);
228
247
  state.enable(gl.DEPTH_TEST);
229
248
  state.depthMask(true);
230
- updateInternal(group, camera, depthTexture, false, false);
249
+ updateInternal(group, camera, depthTexture, 0 /* All */, false);
231
250
  mol_util_1.ValueCell.updateIfChanged(globalUniforms.uPickType, pickType);
232
251
  var renderables = group.renderables;
233
252
  for (var i = 0, il = renderables.length; i < il; ++i) {
234
253
  if (!renderables[i].state.colorOnly) {
235
- renderObject(renderables[i], variant);
254
+ renderObject(renderables[i], variant, 0 /* None */);
236
255
  }
237
256
  }
238
257
  };
@@ -240,23 +259,51 @@ var Renderer;
240
259
  state.disable(gl.BLEND);
241
260
  state.enable(gl.DEPTH_TEST);
242
261
  state.depthMask(true);
243
- updateInternal(group, camera, depthTexture, false, false);
262
+ updateInternal(group, camera, depthTexture, 0 /* All */, false);
263
+ var renderables = group.renderables;
264
+ for (var i = 0, il = renderables.length; i < il; ++i) {
265
+ renderObject(renderables[i], 'depth', 0 /* None */);
266
+ }
267
+ };
268
+ var renderDepthOpaque = function (group, camera, depthTexture) {
269
+ var _a;
270
+ state.disable(gl.BLEND);
271
+ state.enable(gl.DEPTH_TEST);
272
+ state.depthMask(true);
273
+ updateInternal(group, camera, depthTexture, 1 /* Opaque */, false);
274
+ var renderables = group.renderables;
275
+ for (var i = 0, il = renderables.length; i < il; ++i) {
276
+ var r = renderables[i];
277
+ if (r.state.opaque && r.values.transparencyAverage.ref.value !== 1 && !((_a = r.values.dXrayShaded) === null || _a === void 0 ? void 0 : _a.ref.value)) {
278
+ renderObject(r, 'depth', 0 /* None */);
279
+ }
280
+ }
281
+ };
282
+ var renderDepthTransparent = function (group, camera, depthTexture) {
283
+ var _a;
284
+ state.disable(gl.BLEND);
285
+ state.enable(gl.DEPTH_TEST);
286
+ state.depthMask(true);
287
+ updateInternal(group, camera, depthTexture, 2 /* Transparent */, false);
244
288
  var renderables = group.renderables;
245
289
  for (var i = 0, il = renderables.length; i < il; ++i) {
246
- renderObject(renderables[i], 'depth');
290
+ var r = renderables[i];
291
+ if (!r.state.opaque || r.values.transparencyAverage.ref.value > 0 || ((_a = r.values.dXrayShaded) === null || _a === void 0 ? void 0 : _a.ref.value)) {
292
+ renderObject(r, 'depth', 0 /* None */);
293
+ }
247
294
  }
248
295
  };
249
296
  var renderMarkingDepth = function (group, camera, depthTexture) {
250
297
  state.disable(gl.BLEND);
251
298
  state.enable(gl.DEPTH_TEST);
252
299
  state.depthMask(true);
253
- updateInternal(group, camera, depthTexture, false, false);
300
+ updateInternal(group, camera, depthTexture, 0 /* All */, false);
254
301
  mol_util_1.ValueCell.updateIfChanged(globalUniforms.uMarkingType, 1 /* Depth */);
255
302
  var renderables = group.renderables;
256
303
  for (var i = 0, il = renderables.length; i < il; ++i) {
257
304
  var r = renderables[i];
258
305
  if (r.values.markerAverage.ref.value !== 1) {
259
- renderObject(renderables[i], 'marking');
306
+ renderObject(renderables[i], 'marking', 0 /* None */);
260
307
  }
261
308
  }
262
309
  };
@@ -264,13 +311,13 @@ var Renderer;
264
311
  state.disable(gl.BLEND);
265
312
  state.enable(gl.DEPTH_TEST);
266
313
  state.depthMask(true);
267
- updateInternal(group, camera, depthTexture, false, !!depthTexture);
314
+ updateInternal(group, camera, depthTexture, 0 /* All */, !!depthTexture);
268
315
  mol_util_1.ValueCell.updateIfChanged(globalUniforms.uMarkingType, 2 /* Mask */);
269
316
  var renderables = group.renderables;
270
317
  for (var i = 0, il = renderables.length; i < il; ++i) {
271
318
  var r = renderables[i];
272
319
  if (r.values.markerAverage.ref.value > 0) {
273
- renderObject(renderables[i], 'marking');
320
+ renderObject(renderables[i], 'marking', 0 /* None */);
274
321
  }
275
322
  }
276
323
  };
@@ -279,21 +326,26 @@ var Renderer;
279
326
  renderBlendedTransparent(group, camera, depthTexture);
280
327
  };
281
328
  var renderBlendedOpaque = function (group, camera, depthTexture) {
329
+ var _a, _b;
282
330
  state.disable(gl.BLEND);
283
331
  state.enable(gl.DEPTH_TEST);
284
332
  state.depthMask(true);
285
- updateInternal(group, camera, depthTexture, false, false);
333
+ updateInternal(group, camera, depthTexture, 1 /* Opaque */, false);
286
334
  var renderables = group.renderables;
287
335
  for (var i = 0, il = renderables.length; i < il; ++i) {
288
336
  var r = renderables[i];
289
337
  if (r.state.opaque) {
290
- renderObject(r, 'colorBlended');
338
+ renderObject(r, 'colorBlended', 0 /* None */);
339
+ }
340
+ else if (((_a = r.values.uDoubleSided) === null || _a === void 0 ? void 0 : _a.ref.value) && ((_b = r.values.dTransparentBackfaces) === null || _b === void 0 ? void 0 : _b.ref.value) === 'opaque') {
341
+ renderObject(r, 'colorBlended', 2 /* BlendedBack */);
291
342
  }
292
343
  }
293
344
  };
294
345
  var renderBlendedTransparent = function (group, camera, depthTexture) {
346
+ var _a, _b;
295
347
  state.enable(gl.DEPTH_TEST);
296
- updateInternal(group, camera, depthTexture, false, false);
348
+ updateInternal(group, camera, depthTexture, 2 /* Transparent */, false);
297
349
  var renderables = group.renderables;
298
350
  if (transparentBackground) {
299
351
  state.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
@@ -306,69 +358,58 @@ var Renderer;
306
358
  for (var i = 0, il = renderables.length; i < il; ++i) {
307
359
  var r = renderables[i];
308
360
  if (!r.state.opaque && r.state.writeDepth) {
309
- renderObject(r, 'colorBlended');
361
+ renderObject(r, 'colorBlended', 0 /* None */);
310
362
  }
311
363
  }
312
364
  state.depthMask(false);
313
365
  for (var i = 0, il = renderables.length; i < il; ++i) {
314
366
  var r = renderables[i];
315
- if (!r.state.opaque && !r.state.writeDepth) {
316
- renderObject(r, 'colorBlended');
317
- }
318
- }
319
- };
320
- var renderBlendedVolumeOpaque = function (group, camera, depthTexture) {
321
- var _a;
322
- state.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
323
- state.enable(gl.BLEND);
324
- updateInternal(group, camera, depthTexture, false, false);
325
- var renderables = group.renderables;
326
- for (var i = 0, il = renderables.length; i < il; ++i) {
327
- var r = renderables[i];
328
- // TODO: simplify, handle in renderable.state???
329
- // uAlpha is updated in "render" so we need to recompute it here
330
- var alpha = (0, interpolate_1.clamp)(r.values.alpha.ref.value * r.state.alphaFactor, 0, 1);
331
- 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');
367
+ if ((!r.state.opaque && !r.state.writeDepth) || r.values.transparencyAverage.ref.value > 0) {
368
+ if ((_a = r.values.uDoubleSided) === null || _a === void 0 ? void 0 : _a.ref.value) {
369
+ // render frontfaces and backfaces separately to avoid artefacts
370
+ if (((_b = r.values.dTransparentBackfaces) === null || _b === void 0 ? void 0 : _b.ref.value) !== 'opaque') {
371
+ renderObject(r, 'colorBlended', 2 /* BlendedBack */);
372
+ }
373
+ renderObject(r, 'colorBlended', 1 /* BlendedFront */);
374
+ }
375
+ else {
376
+ renderObject(r, 'colorBlended', 0 /* None */);
377
+ }
333
378
  }
334
379
  }
335
380
  };
336
- var renderBlendedVolumeTransparent = function (group, camera, depthTexture) {
337
- var _a;
381
+ var renderBlendedVolume = function (group, camera, depthTexture) {
338
382
  state.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
339
383
  state.enable(gl.BLEND);
340
- updateInternal(group, camera, depthTexture, false, false);
384
+ updateInternal(group, camera, depthTexture, 2 /* Transparent */, false);
341
385
  var renderables = group.renderables;
342
386
  for (var i = 0, il = renderables.length; i < il; ++i) {
343
387
  var r = renderables[i];
344
- // TODO: simplify, handle in renderable.state???
345
- // uAlpha is updated in "render" so we need to recompute it here
346
- var alpha = (0, interpolate_1.clamp)(r.values.alpha.ref.value * r.state.alphaFactor, 0, 1);
347
- 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');
388
+ if (r.values.dGeometryType.ref.value === 'directVolume') {
389
+ renderObject(r, 'colorBlended', 0 /* None */);
349
390
  }
350
391
  }
351
392
  };
352
393
  var renderWboitOpaque = function (group, camera, depthTexture) {
353
- var _a, _b;
394
+ var _a, _b, _c;
354
395
  state.disable(gl.BLEND);
355
396
  state.enable(gl.DEPTH_TEST);
356
397
  state.depthMask(true);
357
- updateInternal(group, camera, depthTexture, false, false);
398
+ updateInternal(group, camera, depthTexture, 1 /* Opaque */, false);
358
399
  var renderables = group.renderables;
359
400
  for (var i = 0, il = renderables.length; i < il; ++i) {
360
401
  var r = renderables[i];
361
402
  // TODO: simplify, handle in renderable.state???
362
403
  // uAlpha is updated in "render" so we need to recompute it here
363
404
  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');
405
+ if ((alpha === 1 && r.values.transparencyAverage.ref.value !== 1 && r.values.dGeometryType.ref.value !== 'directVolume' && ((_a = r.values.dPointStyle) === null || _a === void 0 ? void 0 : _a.ref.value) !== 'fuzzy' && !((_b = r.values.dXrayShaded) === null || _b === void 0 ? void 0 : _b.ref.value)) || ((_c = r.values.dTransparentBackfaces) === null || _c === void 0 ? void 0 : _c.ref.value) === 'opaque') {
406
+ renderObject(r, 'colorWboit', 0 /* None */);
366
407
  }
367
408
  }
368
409
  };
369
410
  var renderWboitTransparent = function (group, camera, depthTexture) {
370
411
  var _a, _b;
371
- updateInternal(group, camera, depthTexture, true, false);
412
+ updateInternal(group, camera, depthTexture, 2 /* Transparent */, false);
372
413
  var renderables = group.renderables;
373
414
  for (var i = 0, il = renderables.length; i < il; ++i) {
374
415
  var r = renderables[i];
@@ -376,7 +417,7 @@ var Renderer;
376
417
  // uAlpha is updated in "render" so we need to recompute it here
377
418
  var alpha = (0, interpolate_1.clamp)(r.values.alpha.ref.value * r.state.alphaFactor, 0, 1);
378
419
  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');
420
+ renderObject(r, 'colorWboit', 0 /* None */);
380
421
  }
381
422
  }
382
423
  };
@@ -397,22 +438,31 @@ var Renderer;
397
438
  }
398
439
  gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
399
440
  },
400
- clearDepth: function () {
441
+ clearDepth: function (packed) {
442
+ if (packed === void 0) { packed = false; }
401
443
  state.enable(gl.SCISSOR_TEST);
402
- state.enable(gl.DEPTH_TEST);
403
- state.depthMask(true);
404
- gl.clear(gl.DEPTH_BUFFER_BIT);
444
+ if (packed) {
445
+ state.colorMask(true, true, true, true);
446
+ state.clearColor(1, 1, 1, 1);
447
+ gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
448
+ }
449
+ else {
450
+ state.enable(gl.DEPTH_TEST);
451
+ state.depthMask(true);
452
+ gl.clear(gl.DEPTH_BUFFER_BIT);
453
+ }
405
454
  },
406
455
  update: update,
407
456
  renderPick: renderPick,
408
457
  renderDepth: renderDepth,
458
+ renderDepthOpaque: renderDepthOpaque,
459
+ renderDepthTransparent: renderDepthTransparent,
409
460
  renderMarkingDepth: renderMarkingDepth,
410
461
  renderMarkingMask: renderMarkingMask,
411
462
  renderBlended: renderBlended,
412
463
  renderBlendedOpaque: renderBlendedOpaque,
413
464
  renderBlendedTransparent: renderBlendedTransparent,
414
- renderBlendedVolumeOpaque: renderBlendedVolumeOpaque,
415
- renderBlendedVolumeTransparent: renderBlendedVolumeTransparent,
465
+ renderBlendedVolume: renderBlendedVolume,
416
466
  renderWboitOpaque: renderWboitOpaque,
417
467
  renderWboitTransparent: renderWboitTransparent,
418
468
  setProps: function (props) {
@@ -27,6 +27,7 @@ interface Scene extends Object3D {
27
27
  clear: () => void;
28
28
  forEach: (callbackFn: (value: GraphicsRenderable, key: GraphicsRenderObject) => void) => void;
29
29
  getMarkerAverage: () => number;
30
+ getOpacityAverage: () => number;
30
31
  }
31
32
  declare namespace Scene {
32
33
  interface Group extends Object3D {
@@ -16,6 +16,7 @@ var array_1 = require("../mol-util/array");
16
16
  var boundary_helper_1 = require("../mol-math/geometry/boundary-helper");
17
17
  var util_1 = require("../mol-data/util");
18
18
  var render_item_1 = require("./webgl/render-item");
19
+ var interpolate_1 = require("../mol-math/interpolate");
19
20
  var boundaryHelper = new boundary_helper_1.BoundaryHelper('98');
20
21
  function calculateBoundingSphere(renderables, boundingSphere, onlyVisible) {
21
22
  boundaryHelper.reset();
@@ -221,14 +222,38 @@ var Scene;
221
222
  getMarkerAverage: function () {
222
223
  if (primitives.length === 0 && volumes.length === 0)
223
224
  return 0;
225
+ var count = 0;
224
226
  var markerAverage = 0;
225
227
  for (var i = 0, il = primitives.length; i < il; ++i) {
228
+ if (!primitives[i].state.visible)
229
+ continue;
226
230
  markerAverage += primitives[i].values.markerAverage.ref.value;
231
+ count += 1;
227
232
  }
228
233
  for (var i = 0, il = volumes.length; i < il; ++i) {
234
+ if (!volumes[i].state.visible)
235
+ continue;
229
236
  markerAverage += volumes[i].values.markerAverage.ref.value;
237
+ count += 1;
230
238
  }
231
- return markerAverage / (primitives.length + volumes.length);
239
+ return count > 0 ? markerAverage / count : 0;
240
+ },
241
+ getOpacityAverage: function () {
242
+ if (primitives.length === 0)
243
+ return 0;
244
+ var count = 0;
245
+ var opacityAverage = 0;
246
+ for (var i = 0, il = primitives.length; i < il; ++i) {
247
+ var p = primitives[i];
248
+ if (!p.state.visible)
249
+ continue;
250
+ // TODO: simplify, handle in renderable.state???
251
+ // uAlpha is updated in "render" so we need to recompute it here
252
+ var alpha = (0, interpolate_1.clamp)(p.values.alpha.ref.value * p.state.alphaFactor, 0, 1);
253
+ opacityAverage += (1 - p.values.transparencyAverage.ref.value) * alpha;
254
+ count += 1;
255
+ }
256
+ return count > 0 ? opacityAverage / count : 0;
232
257
  },
233
258
  };
234
259
  }
@@ -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 dTransparentBackfaces_opaque\n gl_FragColor.a = 1.0;\n #endif\n}\n";