molstar 3.8.2 → 3.9.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 (516) hide show
  1. package/build/viewer/index.html +4 -1
  2. package/build/viewer/molstar.js +1 -1
  3. package/lib/apps/viewer/app.d.ts +1 -1
  4. package/lib/apps/viewer/app.js +1 -1
  5. package/lib/apps/viewer/index.html +4 -1
  6. package/lib/cli/cif2bcif/converter.js +1 -1
  7. package/lib/commonjs/apps/viewer/app.d.ts +1 -1
  8. package/lib/commonjs/apps/viewer/app.js +2 -1
  9. package/lib/commonjs/cli/cif2bcif/converter.js +1 -1
  10. package/lib/commonjs/examples/alpha-orbitals/index.d.ts +1 -1
  11. package/lib/commonjs/examples/alpha-orbitals/index.js +4 -1
  12. package/lib/commonjs/examples/basic-wrapper/custom-theme.js +1 -1
  13. package/lib/commonjs/examples/proteopedia-wrapper/coloring.js +3 -3
  14. package/lib/commonjs/extensions/alpha-orbitals/density.d.ts +1 -1
  15. package/lib/commonjs/extensions/alpha-orbitals/density.js +6 -2
  16. package/lib/commonjs/extensions/alpha-orbitals/orbitals.d.ts +1 -1
  17. package/lib/commonjs/extensions/alpha-orbitals/orbitals.js +6 -3
  18. package/lib/commonjs/extensions/anvil/algorithm.js +1 -1
  19. package/lib/commonjs/extensions/cellpack/color/generate.js +1 -1
  20. package/lib/commonjs/extensions/cellpack/color/provided.js +1 -1
  21. package/lib/commonjs/extensions/cellpack/state.js +1 -1
  22. package/lib/commonjs/extensions/dnatco/confal-pyramids/color.js +1 -1
  23. package/lib/commonjs/extensions/g3d/model.js +1 -1
  24. package/lib/commonjs/extensions/model-archive/quality-assessment/color/plddt.js +1 -1
  25. package/lib/commonjs/extensions/model-archive/quality-assessment/color/qmean.js +1 -1
  26. package/lib/commonjs/extensions/pdbe/structure-quality-report/color.js +1 -1
  27. package/lib/commonjs/extensions/rcsb/assembly-symmetry/color.js +4 -4
  28. package/lib/commonjs/extensions/rcsb/validation-report/color/density-fit.js +1 -1
  29. package/lib/commonjs/extensions/rcsb/validation-report/color/geometry-quality.js +2 -2
  30. package/lib/commonjs/extensions/rcsb/validation-report/color/random-coil-index.js +1 -1
  31. package/lib/commonjs/extensions/rcsb/validation-report/representation.js +2 -2
  32. package/lib/commonjs/mol-canvas3d/canvas3d.js +4 -0
  33. package/lib/commonjs/mol-canvas3d/controls/trackball.js +7 -7
  34. package/lib/commonjs/mol-canvas3d/helper/camera-helper.js +14 -14
  35. package/lib/commonjs/mol-canvas3d/helper/interaction-events.js +5 -5
  36. package/lib/commonjs/mol-canvas3d/passes/draw.js +34 -5
  37. package/lib/commonjs/mol-canvas3d/passes/fxaa.js +5 -0
  38. package/lib/commonjs/mol-canvas3d/passes/marking.js +5 -0
  39. package/lib/commonjs/mol-canvas3d/passes/multi-sample.js +9 -0
  40. package/lib/commonjs/mol-canvas3d/passes/pick.d.ts +18 -5
  41. package/lib/commonjs/mol-canvas3d/passes/pick.js +125 -24
  42. package/lib/commonjs/mol-canvas3d/passes/postprocessing.js +5 -0
  43. package/lib/commonjs/mol-canvas3d/passes/smaa.js +4 -0
  44. package/lib/commonjs/mol-canvas3d/passes/wboit.js +4 -0
  45. package/lib/commonjs/mol-data/db/column.js +5 -5
  46. package/lib/commonjs/mol-data/db/table.js +2 -2
  47. package/lib/commonjs/mol-data/util/array.d.ts +1 -1
  48. package/lib/commonjs/mol-geo/geometry/texture-mesh/color-smoothing.js +13 -0
  49. package/lib/commonjs/mol-gl/compute/grid3d.d.ts +2 -2
  50. package/lib/commonjs/mol-gl/compute/grid3d.js +30 -8
  51. package/lib/commonjs/mol-gl/compute/histogram-pyramid/reduction.d.ts +1 -1
  52. package/lib/commonjs/mol-gl/compute/histogram-pyramid/reduction.js +6 -1
  53. package/lib/commonjs/mol-gl/compute/histogram-pyramid/sum.d.ts +1 -1
  54. package/lib/commonjs/mol-gl/compute/histogram-pyramid/sum.js +6 -1
  55. package/lib/commonjs/mol-gl/compute/marching-cubes/active-voxels.d.ts +1 -1
  56. package/lib/commonjs/mol-gl/compute/marching-cubes/active-voxels.js +6 -1
  57. package/lib/commonjs/mol-gl/compute/marching-cubes/isosurface.d.ts +1 -1
  58. package/lib/commonjs/mol-gl/compute/marching-cubes/isosurface.js +10 -10
  59. package/lib/commonjs/mol-gl/renderer.js +77 -32
  60. package/lib/commonjs/mol-gl/scene.js +2 -0
  61. package/lib/commonjs/mol-gl/shader/chunks/assign-color-varying.glsl.d.ts +1 -1
  62. package/lib/commonjs/mol-gl/shader/chunks/assign-color-varying.glsl.js +1 -1
  63. package/lib/commonjs/mol-gl/shader/chunks/assign-material-color.glsl.d.ts +1 -1
  64. package/lib/commonjs/mol-gl/shader/chunks/assign-material-color.glsl.js +1 -1
  65. package/lib/commonjs/mol-gl/shader/chunks/color-frag-params.glsl.d.ts +1 -1
  66. package/lib/commonjs/mol-gl/shader/chunks/color-frag-params.glsl.js +1 -1
  67. package/lib/commonjs/mol-gl/shader/chunks/color-vert-params.glsl.d.ts +1 -1
  68. package/lib/commonjs/mol-gl/shader/chunks/color-vert-params.glsl.js +1 -1
  69. package/lib/commonjs/mol-gl/shader/cylinders.frag.d.ts +1 -1
  70. package/lib/commonjs/mol-gl/shader/cylinders.frag.js +1 -1
  71. package/lib/commonjs/mol-gl/shader/direct-volume.frag.d.ts +1 -1
  72. package/lib/commonjs/mol-gl/shader/direct-volume.frag.js +1 -1
  73. package/lib/commonjs/mol-gl/shader/image.frag.d.ts +1 -1
  74. package/lib/commonjs/mol-gl/shader/image.frag.js +1 -1
  75. package/lib/commonjs/mol-gl/shader/lines.frag.d.ts +1 -1
  76. package/lib/commonjs/mol-gl/shader/lines.frag.js +1 -1
  77. package/lib/commonjs/mol-gl/shader/mesh.frag.d.ts +1 -1
  78. package/lib/commonjs/mol-gl/shader/mesh.frag.js +1 -1
  79. package/lib/commonjs/mol-gl/shader/points.frag.d.ts +1 -1
  80. package/lib/commonjs/mol-gl/shader/points.frag.js +1 -1
  81. package/lib/commonjs/mol-gl/shader/spheres.frag.d.ts +1 -1
  82. package/lib/commonjs/mol-gl/shader/spheres.frag.js +1 -1
  83. package/lib/commonjs/mol-gl/shader/text.frag.d.ts +1 -1
  84. package/lib/commonjs/mol-gl/shader/text.frag.js +1 -1
  85. package/lib/commonjs/mol-gl/shader-code.d.ts +1 -1
  86. package/lib/commonjs/mol-gl/shader-code.js +41 -9
  87. package/lib/commonjs/mol-gl/webgl/compat.d.ts +34 -1
  88. package/lib/commonjs/mol-gl/webgl/compat.js +50 -2
  89. package/lib/commonjs/mol-gl/webgl/context.d.ts +2 -0
  90. package/lib/commonjs/mol-gl/webgl/context.js +3 -0
  91. package/lib/commonjs/mol-gl/webgl/extensions.d.ts +3 -2
  92. package/lib/commonjs/mol-gl/webgl/extensions.js +6 -1
  93. package/lib/commonjs/mol-gl/webgl/timer.d.ts +22 -0
  94. package/lib/commonjs/mol-gl/webgl/timer.js +169 -0
  95. package/lib/commonjs/mol-io/common/binary-cif/array-encoder.js +18 -18
  96. package/lib/commonjs/mol-io/common/binary-cif/decoder.js +16 -16
  97. package/lib/commonjs/mol-io/common/binary-cif/encoding.js +9 -9
  98. package/lib/commonjs/mol-io/reader/cif/binary/field.js +3 -3
  99. package/lib/commonjs/mol-io/reader/cif/data-model.js +14 -14
  100. package/lib/commonjs/mol-io/reader/cif/schema.js +1 -1
  101. package/lib/commonjs/mol-io/reader/cif/text/parser.js +23 -23
  102. package/lib/commonjs/mol-io/reader/common/text/column/fixed.js +1 -1
  103. package/lib/commonjs/mol-io/reader/common/text/column/token.js +1 -1
  104. package/lib/commonjs/mol-io/reader/common/text/number-parser.js +6 -6
  105. package/lib/commonjs/mol-io/reader/csv/parser.js +8 -8
  106. package/lib/commonjs/mol-io/writer/cif/encoder/binary.js +10 -10
  107. package/lib/commonjs/mol-io/writer/cif/encoder/text.js +7 -7
  108. package/lib/commonjs/mol-io/writer/cif/encoder.js +8 -8
  109. package/lib/commonjs/mol-io/writer/mol2/encoder.js +4 -4
  110. package/lib/commonjs/mol-math/geometry/gaussian-density/gpu.js +13 -2
  111. package/lib/commonjs/mol-model/sequence/alignment/sequence.js +3 -3
  112. package/lib/commonjs/mol-model/sequence/sequence.js +9 -9
  113. package/lib/commonjs/mol-model/structure/export/categories/atom_site_operator_mapping.js +3 -3
  114. package/lib/commonjs/mol-model/structure/export/categories/secondary-structure.js +2 -2
  115. package/lib/commonjs/mol-model/structure/export/categories/utils.js +1 -1
  116. package/lib/commonjs/mol-model/structure/model/model.js +2 -2
  117. package/lib/commonjs/mol-model/structure/model/properties/custom/indexed.js +6 -6
  118. package/lib/commonjs/mol-model/structure/model/properties/utils/atomic-ranges.js +1 -1
  119. package/lib/commonjs/mol-model/structure/model/types.js +116 -116
  120. package/lib/commonjs/mol-model/structure/query/context.js +1 -1
  121. package/lib/commonjs/mol-model/structure/query/queries/generators.js +5 -5
  122. package/lib/commonjs/mol-model/structure/query/queries/internal.js +4 -4
  123. package/lib/commonjs/mol-model/structure/query/queries/modifiers.js +4 -4
  124. package/lib/commonjs/mol-model/structure/query/utils/structure-distance.d.ts +5 -54
  125. package/lib/commonjs/mol-model/structure/query/utils/structure-distance.js +9 -9
  126. package/lib/commonjs/mol-model/structure/structure/carbohydrates/constants.js +106 -106
  127. package/lib/commonjs/mol-model/structure/structure/element/loci.js +5 -5
  128. package/lib/commonjs/mol-model/structure/structure/element/stats.js +5 -5
  129. package/lib/commonjs/mol-model/structure/structure/properties.js +5 -5
  130. package/lib/commonjs/mol-model/structure/structure/structure.js +11 -11
  131. package/lib/commonjs/mol-model/structure/structure/unit/bonds/inter-compute.js +5 -5
  132. package/lib/commonjs/mol-model/structure/structure/unit/bonds/intra-compute.js +4 -4
  133. package/lib/commonjs/mol-model/structure/structure/unit/bonds.js +2 -2
  134. package/lib/commonjs/mol-model/structure/structure/unit/resonance.js +1 -1
  135. package/lib/commonjs/mol-model/structure/structure/unit/rings/compute.js +6 -6
  136. package/lib/commonjs/mol-model/structure/structure/unit/rings.js +6 -6
  137. package/lib/commonjs/mol-model/structure/structure/unit.js +16 -16
  138. package/lib/commonjs/mol-model/structure/structure/util/superposition-sifts-mapping.js +1 -1
  139. package/lib/commonjs/mol-model/structure/util.js +4 -4
  140. package/lib/commonjs/mol-model-formats/structure/basic/atomic.js +2 -2
  141. package/lib/commonjs/mol-model-formats/structure/basic/parser.js +4 -4
  142. package/lib/commonjs/mol-model-formats/structure/basic/properties.js +1 -1
  143. package/lib/commonjs/mol-model-formats/structure/basic/sort.js +1 -1
  144. package/lib/commonjs/mol-model-formats/structure/basic/util.js +1 -1
  145. package/lib/commonjs/mol-model-formats/structure/cif-core.js +6 -6
  146. package/lib/commonjs/mol-model-formats/structure/common/entity.js +1 -1
  147. package/lib/commonjs/mol-model-formats/structure/cube.js +1 -1
  148. package/lib/commonjs/mol-model-formats/structure/gro.js +1 -1
  149. package/lib/commonjs/mol-model-formats/structure/mol.js +1 -1
  150. package/lib/commonjs/mol-model-formats/structure/mol2.js +4 -4
  151. package/lib/commonjs/mol-model-formats/structure/prmtop.js +1 -1
  152. package/lib/commonjs/mol-model-formats/structure/property/bonds/chem_comp.js +3 -3
  153. package/lib/commonjs/mol-model-formats/structure/property/bonds/index-pair.js +1 -1
  154. package/lib/commonjs/mol-model-formats/structure/property/bonds/struct_conn.js +6 -6
  155. package/lib/commonjs/mol-model-formats/structure/property/secondary-structure.js +8 -8
  156. package/lib/commonjs/mol-model-formats/structure/psf.js +1 -1
  157. package/lib/commonjs/mol-model-formats/structure/top.js +1 -1
  158. package/lib/commonjs/mol-model-formats/structure/xyz.js +1 -1
  159. package/lib/commonjs/mol-model-props/computed/accessible-surface-area/shrake-rupley/radii.js +2 -2
  160. package/lib/commonjs/mol-model-props/computed/accessible-surface-area/shrake-rupley.js +3 -3
  161. package/lib/commonjs/mol-model-props/computed/accessible-surface-area.js +2 -2
  162. package/lib/commonjs/mol-model-props/computed/chemistry/functional-group.js +31 -31
  163. package/lib/commonjs/mol-model-props/computed/chemistry/geometry.js +22 -22
  164. package/lib/commonjs/mol-model-props/computed/chemistry/valence-model.js +32 -32
  165. package/lib/commonjs/mol-model-props/computed/interactions/charged.js +39 -39
  166. package/lib/commonjs/mol-model-props/computed/interactions/common.js +34 -34
  167. package/lib/commonjs/mol-model-props/computed/interactions/contacts-builder.js +1 -1
  168. package/lib/commonjs/mol-model-props/computed/interactions/contacts.js +1 -1
  169. package/lib/commonjs/mol-model-props/computed/interactions/halogen-bonds.js +12 -12
  170. package/lib/commonjs/mol-model-props/computed/interactions/hydrogen-bonds.js +32 -32
  171. package/lib/commonjs/mol-model-props/computed/interactions/hydrophobic.js +9 -9
  172. package/lib/commonjs/mol-model-props/computed/interactions/metal.js +26 -26
  173. package/lib/commonjs/mol-model-props/computed/interactions/refine.js +20 -20
  174. package/lib/commonjs/mol-model-props/computed/representations/interactions-inter-unit-cylinder.js +2 -2
  175. package/lib/commonjs/mol-model-props/computed/representations/interactions-intra-unit-cylinder.js +2 -2
  176. package/lib/commonjs/mol-model-props/computed/secondary-structure/dssp/bends.js +1 -1
  177. package/lib/commonjs/mol-model-props/computed/secondary-structure/dssp/bridges.js +12 -12
  178. package/lib/commonjs/mol-model-props/computed/secondary-structure/dssp/helices.js +6 -6
  179. package/lib/commonjs/mol-model-props/computed/secondary-structure/dssp/ladders.js +3 -3
  180. package/lib/commonjs/mol-model-props/computed/secondary-structure/dssp/sheets.js +11 -11
  181. package/lib/commonjs/mol-model-props/computed/secondary-structure/dssp/turns.js +3 -3
  182. package/lib/commonjs/mol-model-props/computed/secondary-structure/dssp.js +30 -30
  183. package/lib/commonjs/mol-model-props/computed/themes/accessible-surface-area.js +1 -1
  184. package/lib/commonjs/mol-model-props/computed/themes/interaction-type.js +10 -10
  185. package/lib/commonjs/mol-model-props/integrative/cross-link-restraint/color.js +1 -1
  186. package/lib/commonjs/mol-model-props/integrative/cross-link-restraint/format.js +3 -3
  187. package/lib/commonjs/mol-model-props/sequence/sifts-mapping.js +1 -1
  188. package/lib/commonjs/mol-model-props/sequence/themes/sifts-mapping.js +1 -1
  189. package/lib/commonjs/mol-plugin/animation-loop.d.ts +2 -1
  190. package/lib/commonjs/mol-plugin/animation-loop.js +18 -5
  191. package/lib/commonjs/mol-plugin/behavior/dynamic/camera.js +12 -12
  192. package/lib/commonjs/mol-plugin/behavior/dynamic/representation.js +7 -7
  193. package/lib/commonjs/mol-plugin/context.d.ts +2 -2
  194. package/lib/commonjs/mol-plugin/state.d.ts +1 -14
  195. package/lib/commonjs/mol-plugin-state/formats/volume.d.ts +12 -11
  196. package/lib/commonjs/mol-plugin-state/formats/volume.js +20 -13
  197. package/lib/commonjs/mol-plugin-state/helpers/structure-selection-query.js +5 -5
  198. package/lib/commonjs/mol-plugin-state/transforms/representation.js +2 -2
  199. package/lib/commonjs/mol-plugin-ui/controls/parameters.d.ts +1 -1
  200. package/lib/commonjs/mol-plugin-ui/sequence/polymer.js +1 -1
  201. package/lib/commonjs/mol-plugin-ui/sequence/sequence.js +1 -1
  202. package/lib/commonjs/mol-plugin-ui/structure/focus.js +1 -1
  203. package/lib/commonjs/mol-plugin-ui/viewport.d.ts +2 -2
  204. package/lib/commonjs/mol-repr/structure/visual/bond-inter-unit-cylinder.js +10 -10
  205. package/lib/commonjs/mol-repr/structure/visual/bond-inter-unit-line.js +10 -10
  206. package/lib/commonjs/mol-repr/structure/visual/bond-intra-unit-cylinder.js +12 -12
  207. package/lib/commonjs/mol-repr/structure/visual/bond-intra-unit-line.js +12 -12
  208. package/lib/commonjs/mol-repr/structure/visual/carbohydrate-symbol-mesh.js +16 -16
  209. package/lib/commonjs/mol-repr/structure/visual/carbohydrate-terminal-link-cylinder.js +1 -1
  210. package/lib/commonjs/mol-repr/structure/visual/gaussian-surface-mesh.js +9 -0
  211. package/lib/commonjs/mol-repr/structure/visual/orientation-ellipsoid-mesh.js +4 -4
  212. package/lib/commonjs/mol-repr/structure/visual/polymer-direction-wedge.js +1 -1
  213. package/lib/commonjs/mol-repr/structure/visual/polymer-trace-mesh.js +2 -2
  214. package/lib/commonjs/mol-repr/structure/visual/util/bond.js +2 -2
  215. package/lib/commonjs/mol-repr/structure/visual/util/common.js +3 -3
  216. package/lib/commonjs/mol-repr/structure/visual/util/link.js +30 -30
  217. package/lib/commonjs/mol-repr/structure/visual/util/polymer/backbone.js +6 -6
  218. package/lib/commonjs/mol-repr/structure/visual/util/polymer/gap-iterator.js +3 -3
  219. package/lib/commonjs/mol-repr/structure/visual/util/polymer/trace-iterator.js +20 -20
  220. package/lib/commonjs/mol-repr/structure/visual/util/polymer.js +6 -6
  221. package/lib/commonjs/mol-script/language/symbol-table/core.d.ts +2 -2
  222. package/lib/commonjs/mol-script/runtime/query/table.js +13 -13
  223. package/lib/commonjs/mol-state/object.d.ts +3 -3
  224. package/lib/commonjs/mol-task/util/user-timing.js +1 -1
  225. package/lib/commonjs/mol-theme/clipping.js +19 -19
  226. package/lib/commonjs/mol-theme/color/atom-id.js +1 -1
  227. package/lib/commonjs/mol-theme/color/carbohydrate-symbol.js +1 -1
  228. package/lib/commonjs/mol-theme/color/chain-id.js +4 -4
  229. package/lib/commonjs/mol-theme/color/element-index.js +1 -1
  230. package/lib/commonjs/mol-theme/color/element-symbol.js +1 -1
  231. package/lib/commonjs/mol-theme/color/entity-id.js +4 -4
  232. package/lib/commonjs/mol-theme/color/entity-source.js +5 -4
  233. package/lib/commonjs/mol-theme/color/hydrophobicity.js +1 -1
  234. package/lib/commonjs/mol-theme/color/illustrative.js +1 -1
  235. package/lib/commonjs/mol-theme/color/model-index.js +1 -1
  236. package/lib/commonjs/mol-theme/color/molecule-type.js +8 -8
  237. package/lib/commonjs/mol-theme/color/occupancy.js +1 -1
  238. package/lib/commonjs/mol-theme/color/operator-hkl.js +1 -1
  239. package/lib/commonjs/mol-theme/color/operator-name.js +1 -1
  240. package/lib/commonjs/mol-theme/color/partial-charge.js +1 -1
  241. package/lib/commonjs/mol-theme/color/polymer-id.js +4 -4
  242. package/lib/commonjs/mol-theme/color/polymer-index.js +1 -1
  243. package/lib/commonjs/mol-theme/color/residue-name.js +1 -1
  244. package/lib/commonjs/mol-theme/color/secondary-structure.js +12 -12
  245. package/lib/commonjs/mol-theme/color/sequence-id.js +7 -7
  246. package/lib/commonjs/mol-theme/color/shape-group.js +1 -1
  247. package/lib/commonjs/mol-theme/color/uncertainty.js +1 -1
  248. package/lib/commonjs/mol-theme/color/uniform.js +1 -1
  249. package/lib/commonjs/mol-theme/color/unit-index.js +1 -1
  250. package/lib/commonjs/mol-theme/color/volume-value.js +1 -1
  251. package/lib/commonjs/mol-theme/label.js +3 -3
  252. package/lib/commonjs/mol-util/binding.js +4 -4
  253. package/lib/commonjs/mol-util/debug.d.ts +6 -1
  254. package/lib/commonjs/mol-util/debug.js +11 -1
  255. package/lib/commonjs/mol-util/input/input-observer.js +20 -20
  256. package/lib/commonjs/mol-util/string-builder.js +1 -1
  257. package/lib/commonjs/servers/model/preprocess/converter.js +1 -1
  258. package/lib/commonjs/servers/model/server/query.js +1 -1
  259. package/lib/commonjs/servers/model/utils/fetch-retry.js +3 -2
  260. package/lib/commonjs/servers/volume/server/algebra/coordinate.js +6 -6
  261. package/lib/commonjs/servers/volume/server/query/encode.js +1 -1
  262. package/lib/examples/alpha-orbitals/index.d.ts +1 -1
  263. package/lib/examples/alpha-orbitals/index.html +11 -0
  264. package/lib/examples/alpha-orbitals/index.js +4 -1
  265. package/lib/examples/basic-wrapper/custom-theme.js +1 -1
  266. package/lib/examples/proteopedia-wrapper/coloring.js +3 -3
  267. package/lib/extensions/alpha-orbitals/density.d.ts +1 -1
  268. package/lib/extensions/alpha-orbitals/density.js +6 -2
  269. package/lib/extensions/alpha-orbitals/orbitals.d.ts +1 -1
  270. package/lib/extensions/alpha-orbitals/orbitals.js +6 -3
  271. package/lib/extensions/anvil/algorithm.js +1 -1
  272. package/lib/extensions/cellpack/color/generate.js +1 -1
  273. package/lib/extensions/cellpack/color/provided.js +1 -1
  274. package/lib/extensions/cellpack/state.js +1 -1
  275. package/lib/extensions/dnatco/confal-pyramids/color.js +1 -1
  276. package/lib/extensions/g3d/model.js +1 -1
  277. package/lib/extensions/model-archive/quality-assessment/color/plddt.js +1 -1
  278. package/lib/extensions/model-archive/quality-assessment/color/qmean.js +1 -1
  279. package/lib/extensions/pdbe/structure-quality-report/color.js +1 -1
  280. package/lib/extensions/rcsb/assembly-symmetry/color.js +4 -4
  281. package/lib/extensions/rcsb/validation-report/color/density-fit.js +1 -1
  282. package/lib/extensions/rcsb/validation-report/color/geometry-quality.js +2 -2
  283. package/lib/extensions/rcsb/validation-report/color/random-coil-index.js +1 -1
  284. package/lib/extensions/rcsb/validation-report/representation.js +2 -2
  285. package/lib/mol-canvas3d/canvas3d.js +5 -1
  286. package/lib/mol-canvas3d/controls/trackball.js +7 -7
  287. package/lib/mol-canvas3d/helper/camera-helper.js +14 -14
  288. package/lib/mol-canvas3d/helper/interaction-events.js +5 -5
  289. package/lib/mol-canvas3d/passes/draw.js +34 -5
  290. package/lib/mol-canvas3d/passes/fxaa.js +5 -0
  291. package/lib/mol-canvas3d/passes/marking.js +5 -0
  292. package/lib/mol-canvas3d/passes/multi-sample.js +9 -0
  293. package/lib/mol-canvas3d/passes/pick.d.ts +18 -5
  294. package/lib/mol-canvas3d/passes/pick.js +125 -24
  295. package/lib/mol-canvas3d/passes/postprocessing.js +5 -0
  296. package/lib/mol-canvas3d/passes/smaa.js +5 -1
  297. package/lib/mol-canvas3d/passes/wboit.js +5 -1
  298. package/lib/mol-data/db/column.js +5 -5
  299. package/lib/mol-data/db/table.js +2 -2
  300. package/lib/mol-data/util/array.d.ts +1 -1
  301. package/lib/mol-geo/geometry/texture-mesh/color-smoothing.js +13 -0
  302. package/lib/mol-gl/compute/grid3d.d.ts +2 -2
  303. package/lib/mol-gl/compute/grid3d.js +30 -8
  304. package/lib/mol-gl/compute/histogram-pyramid/reduction.d.ts +1 -1
  305. package/lib/mol-gl/compute/histogram-pyramid/reduction.js +6 -1
  306. package/lib/mol-gl/compute/histogram-pyramid/sum.d.ts +1 -1
  307. package/lib/mol-gl/compute/histogram-pyramid/sum.js +6 -1
  308. package/lib/mol-gl/compute/marching-cubes/active-voxels.d.ts +1 -1
  309. package/lib/mol-gl/compute/marching-cubes/active-voxels.js +6 -1
  310. package/lib/mol-gl/compute/marching-cubes/isosurface.d.ts +1 -1
  311. package/lib/mol-gl/compute/marching-cubes/isosurface.js +10 -10
  312. package/lib/mol-gl/renderer.js +77 -32
  313. package/lib/mol-gl/scene.js +2 -0
  314. package/lib/mol-gl/shader/chunks/assign-color-varying.glsl.d.ts +1 -1
  315. package/lib/mol-gl/shader/chunks/assign-color-varying.glsl.js +1 -1
  316. package/lib/mol-gl/shader/chunks/assign-material-color.glsl.d.ts +1 -1
  317. package/lib/mol-gl/shader/chunks/assign-material-color.glsl.js +1 -1
  318. package/lib/mol-gl/shader/chunks/color-frag-params.glsl.d.ts +1 -1
  319. package/lib/mol-gl/shader/chunks/color-frag-params.glsl.js +1 -1
  320. package/lib/mol-gl/shader/chunks/color-vert-params.glsl.d.ts +1 -1
  321. package/lib/mol-gl/shader/chunks/color-vert-params.glsl.js +1 -1
  322. package/lib/mol-gl/shader/cylinders.frag.d.ts +1 -1
  323. package/lib/mol-gl/shader/cylinders.frag.js +1 -1
  324. package/lib/mol-gl/shader/direct-volume.frag.d.ts +1 -1
  325. package/lib/mol-gl/shader/direct-volume.frag.js +1 -1
  326. package/lib/mol-gl/shader/image.frag.d.ts +1 -1
  327. package/lib/mol-gl/shader/image.frag.js +1 -1
  328. package/lib/mol-gl/shader/lines.frag.d.ts +1 -1
  329. package/lib/mol-gl/shader/lines.frag.js +1 -1
  330. package/lib/mol-gl/shader/mesh.frag.d.ts +1 -1
  331. package/lib/mol-gl/shader/mesh.frag.js +1 -1
  332. package/lib/mol-gl/shader/points.frag.d.ts +1 -1
  333. package/lib/mol-gl/shader/points.frag.js +1 -1
  334. package/lib/mol-gl/shader/spheres.frag.d.ts +1 -1
  335. package/lib/mol-gl/shader/spheres.frag.js +1 -1
  336. package/lib/mol-gl/shader/text.frag.d.ts +1 -1
  337. package/lib/mol-gl/shader/text.frag.js +1 -1
  338. package/lib/mol-gl/shader-code.d.ts +1 -1
  339. package/lib/mol-gl/shader-code.js +41 -9
  340. package/lib/mol-gl/webgl/compat.d.ts +34 -1
  341. package/lib/mol-gl/webgl/compat.js +48 -1
  342. package/lib/mol-gl/webgl/context.d.ts +2 -0
  343. package/lib/mol-gl/webgl/context.js +3 -0
  344. package/lib/mol-gl/webgl/extensions.d.ts +3 -2
  345. package/lib/mol-gl/webgl/extensions.js +7 -2
  346. package/lib/mol-gl/webgl/timer.d.ts +22 -0
  347. package/lib/mol-gl/webgl/timer.js +164 -0
  348. package/lib/mol-io/common/binary-cif/array-encoder.js +18 -18
  349. package/lib/mol-io/common/binary-cif/decoder.js +16 -16
  350. package/lib/mol-io/common/binary-cif/encoding.js +9 -9
  351. package/lib/mol-io/reader/cif/binary/field.js +3 -3
  352. package/lib/mol-io/reader/cif/data-model.js +14 -14
  353. package/lib/mol-io/reader/cif/schema.js +1 -1
  354. package/lib/mol-io/reader/cif/text/parser.js +23 -23
  355. package/lib/mol-io/reader/common/text/column/fixed.js +1 -1
  356. package/lib/mol-io/reader/common/text/column/token.js +1 -1
  357. package/lib/mol-io/reader/common/text/number-parser.js +6 -6
  358. package/lib/mol-io/reader/csv/parser.js +8 -8
  359. package/lib/mol-io/writer/cif/encoder/binary.js +10 -10
  360. package/lib/mol-io/writer/cif/encoder/text.js +7 -7
  361. package/lib/mol-io/writer/cif/encoder.js +8 -8
  362. package/lib/mol-io/writer/mol2/encoder.js +4 -4
  363. package/lib/mol-math/geometry/gaussian-density/gpu.js +13 -2
  364. package/lib/mol-model/sequence/alignment/sequence.js +3 -3
  365. package/lib/mol-model/sequence/sequence.js +9 -9
  366. package/lib/mol-model/structure/export/categories/atom_site_operator_mapping.js +3 -3
  367. package/lib/mol-model/structure/export/categories/secondary-structure.js +2 -2
  368. package/lib/mol-model/structure/export/categories/utils.js +1 -1
  369. package/lib/mol-model/structure/model/model.js +2 -2
  370. package/lib/mol-model/structure/model/properties/custom/indexed.js +6 -6
  371. package/lib/mol-model/structure/model/properties/utils/atomic-ranges.js +1 -1
  372. package/lib/mol-model/structure/model/types.js +116 -116
  373. package/lib/mol-model/structure/query/context.js +1 -1
  374. package/lib/mol-model/structure/query/queries/generators.js +5 -5
  375. package/lib/mol-model/structure/query/queries/internal.js +4 -4
  376. package/lib/mol-model/structure/query/queries/modifiers.js +4 -4
  377. package/lib/mol-model/structure/query/utils/structure-distance.d.ts +5 -54
  378. package/lib/mol-model/structure/query/utils/structure-distance.js +9 -9
  379. package/lib/mol-model/structure/structure/carbohydrates/constants.js +106 -106
  380. package/lib/mol-model/structure/structure/element/loci.js +5 -5
  381. package/lib/mol-model/structure/structure/element/stats.js +5 -5
  382. package/lib/mol-model/structure/structure/properties.js +5 -5
  383. package/lib/mol-model/structure/structure/structure.js +11 -11
  384. package/lib/mol-model/structure/structure/unit/bonds/inter-compute.js +5 -5
  385. package/lib/mol-model/structure/structure/unit/bonds/intra-compute.js +4 -4
  386. package/lib/mol-model/structure/structure/unit/bonds.js +2 -2
  387. package/lib/mol-model/structure/structure/unit/resonance.js +1 -1
  388. package/lib/mol-model/structure/structure/unit/rings/compute.js +6 -6
  389. package/lib/mol-model/structure/structure/unit/rings.js +6 -6
  390. package/lib/mol-model/structure/structure/unit.js +16 -16
  391. package/lib/mol-model/structure/structure/util/superposition-sifts-mapping.js +1 -1
  392. package/lib/mol-model/structure/util.js +4 -4
  393. package/lib/mol-model-formats/structure/basic/atomic.js +2 -2
  394. package/lib/mol-model-formats/structure/basic/parser.js +4 -4
  395. package/lib/mol-model-formats/structure/basic/properties.js +1 -1
  396. package/lib/mol-model-formats/structure/basic/sort.js +1 -1
  397. package/lib/mol-model-formats/structure/basic/util.js +1 -1
  398. package/lib/mol-model-formats/structure/cif-core.js +6 -6
  399. package/lib/mol-model-formats/structure/common/entity.js +1 -1
  400. package/lib/mol-model-formats/structure/cube.js +1 -1
  401. package/lib/mol-model-formats/structure/gro.js +1 -1
  402. package/lib/mol-model-formats/structure/mol.js +1 -1
  403. package/lib/mol-model-formats/structure/mol2.js +4 -4
  404. package/lib/mol-model-formats/structure/prmtop.js +1 -1
  405. package/lib/mol-model-formats/structure/property/bonds/chem_comp.js +3 -3
  406. package/lib/mol-model-formats/structure/property/bonds/index-pair.js +1 -1
  407. package/lib/mol-model-formats/structure/property/bonds/struct_conn.js +6 -6
  408. package/lib/mol-model-formats/structure/property/secondary-structure.js +8 -8
  409. package/lib/mol-model-formats/structure/psf.js +1 -1
  410. package/lib/mol-model-formats/structure/top.js +1 -1
  411. package/lib/mol-model-formats/structure/xyz.js +1 -1
  412. package/lib/mol-model-props/computed/accessible-surface-area/shrake-rupley/radii.js +2 -2
  413. package/lib/mol-model-props/computed/accessible-surface-area/shrake-rupley.js +3 -3
  414. package/lib/mol-model-props/computed/accessible-surface-area.js +2 -2
  415. package/lib/mol-model-props/computed/chemistry/functional-group.js +31 -31
  416. package/lib/mol-model-props/computed/chemistry/geometry.js +22 -22
  417. package/lib/mol-model-props/computed/chemistry/valence-model.js +32 -32
  418. package/lib/mol-model-props/computed/interactions/charged.js +39 -39
  419. package/lib/mol-model-props/computed/interactions/common.js +34 -34
  420. package/lib/mol-model-props/computed/interactions/contacts-builder.js +1 -1
  421. package/lib/mol-model-props/computed/interactions/contacts.js +1 -1
  422. package/lib/mol-model-props/computed/interactions/halogen-bonds.js +12 -12
  423. package/lib/mol-model-props/computed/interactions/hydrogen-bonds.js +32 -32
  424. package/lib/mol-model-props/computed/interactions/hydrophobic.js +9 -9
  425. package/lib/mol-model-props/computed/interactions/metal.js +26 -26
  426. package/lib/mol-model-props/computed/interactions/refine.js +20 -20
  427. package/lib/mol-model-props/computed/representations/interactions-inter-unit-cylinder.js +2 -2
  428. package/lib/mol-model-props/computed/representations/interactions-intra-unit-cylinder.js +2 -2
  429. package/lib/mol-model-props/computed/secondary-structure/dssp/bends.js +1 -1
  430. package/lib/mol-model-props/computed/secondary-structure/dssp/bridges.js +12 -12
  431. package/lib/mol-model-props/computed/secondary-structure/dssp/helices.js +6 -6
  432. package/lib/mol-model-props/computed/secondary-structure/dssp/ladders.js +3 -3
  433. package/lib/mol-model-props/computed/secondary-structure/dssp/sheets.js +11 -11
  434. package/lib/mol-model-props/computed/secondary-structure/dssp/turns.js +3 -3
  435. package/lib/mol-model-props/computed/secondary-structure/dssp.js +30 -30
  436. package/lib/mol-model-props/computed/themes/accessible-surface-area.js +1 -1
  437. package/lib/mol-model-props/computed/themes/interaction-type.js +10 -10
  438. package/lib/mol-model-props/integrative/cross-link-restraint/color.js +1 -1
  439. package/lib/mol-model-props/integrative/cross-link-restraint/format.js +3 -3
  440. package/lib/mol-model-props/sequence/sifts-mapping.js +1 -1
  441. package/lib/mol-model-props/sequence/themes/sifts-mapping.js +1 -1
  442. package/lib/mol-plugin/animation-loop.d.ts +2 -1
  443. package/lib/mol-plugin/animation-loop.js +18 -5
  444. package/lib/mol-plugin/behavior/dynamic/camera.js +12 -12
  445. package/lib/mol-plugin/behavior/dynamic/representation.js +7 -7
  446. package/lib/mol-plugin/context.d.ts +2 -2
  447. package/lib/mol-plugin/state.d.ts +1 -14
  448. package/lib/mol-plugin/version.js +2 -2
  449. package/lib/mol-plugin-state/formats/volume.d.ts +12 -11
  450. package/lib/mol-plugin-state/formats/volume.js +20 -13
  451. package/lib/mol-plugin-state/helpers/structure-selection-query.js +5 -5
  452. package/lib/mol-plugin-state/transforms/representation.js +2 -2
  453. package/lib/mol-plugin-ui/controls/parameters.d.ts +1 -1
  454. package/lib/mol-plugin-ui/sequence/polymer.js +1 -1
  455. package/lib/mol-plugin-ui/sequence/sequence.js +1 -1
  456. package/lib/mol-plugin-ui/structure/focus.js +1 -1
  457. package/lib/mol-plugin-ui/viewport.d.ts +2 -2
  458. package/lib/mol-repr/structure/visual/bond-inter-unit-cylinder.js +10 -10
  459. package/lib/mol-repr/structure/visual/bond-inter-unit-line.js +10 -10
  460. package/lib/mol-repr/structure/visual/bond-intra-unit-cylinder.js +12 -12
  461. package/lib/mol-repr/structure/visual/bond-intra-unit-line.js +12 -12
  462. package/lib/mol-repr/structure/visual/carbohydrate-symbol-mesh.js +16 -16
  463. package/lib/mol-repr/structure/visual/carbohydrate-terminal-link-cylinder.js +1 -1
  464. package/lib/mol-repr/structure/visual/gaussian-surface-mesh.js +9 -0
  465. package/lib/mol-repr/structure/visual/orientation-ellipsoid-mesh.js +4 -4
  466. package/lib/mol-repr/structure/visual/polymer-direction-wedge.js +1 -1
  467. package/lib/mol-repr/structure/visual/polymer-trace-mesh.js +2 -2
  468. package/lib/mol-repr/structure/visual/util/bond.js +2 -2
  469. package/lib/mol-repr/structure/visual/util/common.js +3 -3
  470. package/lib/mol-repr/structure/visual/util/link.js +30 -30
  471. package/lib/mol-repr/structure/visual/util/polymer/backbone.js +6 -6
  472. package/lib/mol-repr/structure/visual/util/polymer/gap-iterator.js +3 -3
  473. package/lib/mol-repr/structure/visual/util/polymer/trace-iterator.js +20 -20
  474. package/lib/mol-repr/structure/visual/util/polymer.js +6 -6
  475. package/lib/mol-script/language/symbol-table/core.d.ts +2 -2
  476. package/lib/mol-script/runtime/query/table.js +13 -13
  477. package/lib/mol-state/object.d.ts +3 -3
  478. package/lib/mol-task/util/user-timing.js +1 -1
  479. package/lib/mol-theme/clipping.js +19 -19
  480. package/lib/mol-theme/color/atom-id.js +1 -1
  481. package/lib/mol-theme/color/carbohydrate-symbol.js +1 -1
  482. package/lib/mol-theme/color/chain-id.js +4 -4
  483. package/lib/mol-theme/color/element-index.js +1 -1
  484. package/lib/mol-theme/color/element-symbol.js +1 -1
  485. package/lib/mol-theme/color/entity-id.js +4 -4
  486. package/lib/mol-theme/color/entity-source.js +5 -4
  487. package/lib/mol-theme/color/hydrophobicity.js +1 -1
  488. package/lib/mol-theme/color/illustrative.js +1 -1
  489. package/lib/mol-theme/color/model-index.js +1 -1
  490. package/lib/mol-theme/color/molecule-type.js +8 -8
  491. package/lib/mol-theme/color/occupancy.js +1 -1
  492. package/lib/mol-theme/color/operator-hkl.js +1 -1
  493. package/lib/mol-theme/color/operator-name.js +1 -1
  494. package/lib/mol-theme/color/partial-charge.js +1 -1
  495. package/lib/mol-theme/color/polymer-id.js +4 -4
  496. package/lib/mol-theme/color/polymer-index.js +1 -1
  497. package/lib/mol-theme/color/residue-name.js +1 -1
  498. package/lib/mol-theme/color/secondary-structure.js +12 -12
  499. package/lib/mol-theme/color/sequence-id.js +7 -7
  500. package/lib/mol-theme/color/shape-group.js +1 -1
  501. package/lib/mol-theme/color/uncertainty.js +1 -1
  502. package/lib/mol-theme/color/uniform.js +1 -1
  503. package/lib/mol-theme/color/unit-index.js +1 -1
  504. package/lib/mol-theme/color/volume-value.js +1 -1
  505. package/lib/mol-theme/label.js +3 -3
  506. package/lib/mol-util/binding.js +4 -4
  507. package/lib/mol-util/debug.d.ts +6 -1
  508. package/lib/mol-util/debug.js +9 -1
  509. package/lib/mol-util/input/input-observer.js +20 -20
  510. package/lib/mol-util/string-builder.js +1 -1
  511. package/lib/servers/model/preprocess/converter.js +1 -1
  512. package/lib/servers/model/server/query.js +1 -1
  513. package/lib/servers/model/utils/fetch-retry.js +3 -2
  514. package/lib/servers/volume/server/algebra/coordinate.js +6 -6
  515. package/lib/servers/volume/server/query/encode.js +1 -1
  516. package/package.json +8 -8
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2020 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 David Sehnal <david.sehnal@gmail.com>
5
5
  */
@@ -7,7 +7,7 @@ import { RenderableSchema, Values, UnboxedValues } from '../renderable/schema';
7
7
  import { WebGLContext } from '../webgl/context';
8
8
  import { RegularGrid3d } from '../../mol-math/geometry/common';
9
9
  import { RuntimeContext } from '../../mol-task';
10
- export declare function canComputeGrid3dOnGPU(webgl?: WebGLContext): boolean;
10
+ export declare function canComputeGrid3dOnGPU(webgl?: WebGLContext): webgl is WebGLContext;
11
11
  export interface Grid3DComputeRenderableSpec<S extends RenderableSchema, P, CS> {
12
12
  schema: S;
13
13
  loopBounds?: (keyof S)[];
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /**
3
- * Copyright (c) 2020 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 David Sehnal <david.sehnal@gmail.com>
6
6
  */
@@ -19,6 +19,7 @@ var util_1 = require("./util");
19
19
  var render_item_1 = require("../webgl/render-item");
20
20
  var renderable_1 = require("../renderable");
21
21
  var is_little_endian_1 = require("../../mol-util/is-little-endian");
22
+ var debug_1 = require("../../mol-util/debug");
22
23
  function canComputeGrid3dOnGPU(webgl) {
23
24
  return !!(webgl === null || webgl === void 0 ? void 0 : webgl.extensions.textureFloat);
24
25
  }
@@ -58,7 +59,7 @@ function createGrid3dComputeRenderable(spec) {
58
59
  .replace('{RETURN}', spec.returnCode);
59
60
  var shader = (0, shader_code_1.ShaderCode)(id, quad_vert_1.quad_vert, code);
60
61
  return function (ctx, webgl, grid, params) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
61
- var schema, _i, _a, b, framebuffer, tex, _b, nx, ny, nz, uWidth, values, renderable, cells, array, gl, states, yieldPeriod, i;
62
+ var schema, _i, _a, b, framebuffer, tex, _b, nx, ny, nz, uWidth, values, renderable, cells, array, gl, state, states, yieldPeriod, i;
62
63
  var _c;
63
64
  return tslib_1.__generator(this, function (_d) {
64
65
  switch (_d.label) {
@@ -120,23 +121,27 @@ function createGrid3dComputeRenderable(spec) {
120
121
  }
121
122
  array = new Uint8Array(uWidth * uWidth * 4);
122
123
  if (!spec.cumulative) return [3 /*break*/, 7];
123
- gl = webgl.gl;
124
+ gl = webgl.gl, state = webgl.state;
125
+ if (debug_1.isTimingMode)
126
+ webgl.timer.mark('Grid3dCompute.renderCumulative');
124
127
  states = spec.cumulative.states(params);
125
128
  tex[0].define(uWidth, uWidth);
126
129
  tex[1].define(uWidth, uWidth);
127
130
  resetGl(webgl, uWidth);
128
- gl.clearColor(0, 0, 0, 0);
131
+ state.clearColor(0, 0, 0, 0);
129
132
  tex[0].attachFramebuffer(framebuffer, 'color0');
130
133
  gl.clear(gl.COLOR_BUFFER_BIT);
131
134
  tex[1].attachFramebuffer(framebuffer, 'color0');
132
135
  gl.clear(gl.COLOR_BUFFER_BIT);
133
- if (!spec.cumulative.yieldPeriod) return [3 /*break*/, 2];
136
+ if (!(spec.cumulative.yieldPeriod && !debug_1.isTimingMode)) return [3 /*break*/, 2];
134
137
  return [4 /*yield*/, ctx.update({ message: 'Computing...', isIndeterminate: false, current: 0, max: states.length })];
135
138
  case 1:
136
139
  _d.sent();
137
140
  _d.label = 2;
138
141
  case 2:
139
142
  yieldPeriod = Math.max(1, (_c = spec.cumulative.yieldPeriod) !== null && _c !== void 0 ? _c : 1 | 0);
143
+ if (debug_1.isTimingMode)
144
+ webgl.timer.mark('Grid3dCompute.renderBatch');
140
145
  i = 0;
141
146
  _d.label = 3;
142
147
  case 3:
@@ -149,9 +154,13 @@ function createGrid3dComputeRenderable(spec) {
149
154
  renderable.render();
150
155
  if (!(spec.cumulative.yieldPeriod && i !== states.length - 1)) return [3 /*break*/, 5];
151
156
  if (i % yieldPeriod === yieldPeriod - 1) {
152
- webgl.readPixels(0, 0, 1, 1, array);
157
+ webgl.waitForGpuCommandsCompleteSync();
158
+ if (debug_1.isTimingMode)
159
+ webgl.timer.markEnd('Grid3dCompute.renderBatch');
160
+ if (debug_1.isTimingMode)
161
+ webgl.timer.mark('Grid3dCompute.renderBatch');
153
162
  }
154
- if (!ctx.shouldUpdate) return [3 /*break*/, 5];
163
+ if (!(ctx.shouldUpdate && !debug_1.isTimingMode)) return [3 /*break*/, 5];
155
164
  return [4 /*yield*/, ctx.update({ current: i + 1 })];
156
165
  case 4:
157
166
  _d.sent();
@@ -159,17 +168,30 @@ function createGrid3dComputeRenderable(spec) {
159
168
  case 5:
160
169
  i++;
161
170
  return [3 /*break*/, 3];
162
- case 6: return [3 /*break*/, 8];
171
+ case 6:
172
+ if (debug_1.isTimingMode)
173
+ webgl.timer.markEnd('Grid3dCompute.renderBatch');
174
+ if (debug_1.isTimingMode)
175
+ webgl.timer.markEnd('Grid3dCompute.renderCumulative');
176
+ return [3 /*break*/, 8];
163
177
  case 7:
178
+ if (debug_1.isTimingMode)
179
+ webgl.timer.mark('Grid3dCompute.render');
164
180
  tex[0].define(uWidth, uWidth);
165
181
  tex[0].attachFramebuffer(framebuffer, 'color0');
166
182
  framebuffer.bind();
167
183
  resetGl(webgl, uWidth);
168
184
  renderable.update();
169
185
  renderable.render();
186
+ if (debug_1.isTimingMode)
187
+ webgl.timer.markEnd('Grid3dCompute.render');
170
188
  _d.label = 8;
171
189
  case 8:
190
+ if (debug_1.isTimingMode)
191
+ webgl.timer.mark('Grid3dCompute.readPixels');
172
192
  webgl.readPixels(0, 0, uWidth, uWidth, array);
193
+ if (debug_1.isTimingMode)
194
+ webgl.timer.markEnd('Grid3dCompute.readPixels');
173
195
  return [2 /*return*/, new Float32Array(array.buffer, array.byteOffset, nx * ny * nz)];
174
196
  }
175
197
  });
@@ -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
  */
@@ -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,7 @@ var misc_1 = require("../../../mol-math/misc");
18
18
  var quad_vert_1 = require("../../../mol-gl/shader/quad.vert");
19
19
  var reduction_frag_1 = require("../../../mol-gl/shader/histogram-pyramid/reduction.frag");
20
20
  var compat_1 = require("../../webgl/compat");
21
+ var debug_1 = require("../../../mol-util/debug");
21
22
  var HistopyramidReductionSchema = tslib_1.__assign(tslib_1.__assign({}, util_1.QuadSchema), { tInputLevel: (0, schema_1.TextureSpec)('texture', 'rgba', 'float', 'nearest'), tPreviousLevel: (0, schema_1.TextureSpec)('texture', 'rgba', 'float', 'nearest'), uSize: (0, schema_1.UniformSpec)('f'), uTexSize: (0, schema_1.UniformSpec)('f'), uFirst: (0, schema_1.UniformSpec)('b') });
22
23
  var HistogramPyramidName = 'histogram-pyramid';
23
24
  function getHistopyramidReductionRenderable(ctx, inputLevel, previousLevel) {
@@ -82,6 +83,8 @@ function tryGetFramebuffer(name, webgl) {
82
83
  return webgl.namedFramebuffers[_name];
83
84
  }
84
85
  function createHistogramPyramid(ctx, inputTexture, scale, gridTexDim) {
86
+ if (debug_1.isTimingMode)
87
+ ctx.timer.mark('createHistogramPyramid');
85
88
  var gl = ctx.gl;
86
89
  var w = inputTexture.getWidth();
87
90
  var h = inputTexture.getHeight();
@@ -145,6 +148,8 @@ function createHistogramPyramid(ctx, inputTexture, scale, gridTexDim) {
145
148
  offset += size;
146
149
  }
147
150
  gl.finish();
151
+ if (debug_1.isTimingMode)
152
+ ctx.timer.markEnd('createHistogramPyramid');
148
153
  // printTexture(ctx, pyramidTex, 2)
149
154
  //
150
155
  // return at least a count of one to avoid issues downstram
@@ -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
  */
@@ -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
  */
@@ -17,6 +17,7 @@ var util_1 = require("../util");
17
17
  var quad_vert_1 = require("../../../mol-gl/shader/quad.vert");
18
18
  var sum_frag_1 = require("../../../mol-gl/shader/histogram-pyramid/sum.frag");
19
19
  var compat_1 = require("../../webgl/compat");
20
+ var debug_1 = require("../../../mol-util/debug");
20
21
  var HistopyramidSumSchema = tslib_1.__assign(tslib_1.__assign({}, util_1.QuadSchema), { tTexture: (0, schema_1.TextureSpec)('texture', 'rgba', 'float', 'nearest') });
21
22
  var HistopyramidSumName = 'histopyramid-sum';
22
23
  function getHistopyramidSumRenderable(ctx, texture) {
@@ -50,6 +51,8 @@ function setRenderingDefaults(ctx) {
50
51
  var sumBytes = new Uint8Array(4);
51
52
  var sumInts = new Int32Array(4);
52
53
  function getHistopyramidSum(ctx, pyramidTopTexture) {
54
+ if (debug_1.isTimingMode)
55
+ ctx.timer.mark('getHistopyramidSum');
53
56
  var gl = ctx.gl, resources = ctx.resources;
54
57
  var renderable = getHistopyramidSumRenderable(ctx, pyramidTopTexture);
55
58
  ctx.state.currentRenderItemId = -1;
@@ -71,6 +74,8 @@ function getHistopyramidSum(ctx, pyramidTopTexture) {
71
74
  gl.finish();
72
75
  ctx.readPixels(0, 0, 1, 1, (0, compat_1.isWebGL2)(gl) ? sumInts : sumBytes);
73
76
  ctx.unbindFramebuffer();
77
+ if (debug_1.isTimingMode)
78
+ ctx.timer.markEnd('getHistopyramidSum');
74
79
  return (0, compat_1.isWebGL2)(gl)
75
80
  ? sumInts[0]
76
81
  : (0, number_packing_1.unpackRGBToInt)(sumBytes[0], sumBytes[1], sumBytes[2]);
@@ -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
  */
@@ -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
  */
@@ -16,6 +16,7 @@ var util_1 = require("../util");
16
16
  var tables_1 = require("./tables");
17
17
  var quad_vert_1 = require("../../../mol-gl/shader/quad.vert");
18
18
  var active_voxels_frag_1 = require("../../../mol-gl/shader/marching-cubes/active-voxels.frag");
19
+ var debug_1 = require("../../../mol-util/debug");
19
20
  var ActiveVoxelsSchema = tslib_1.__assign(tslib_1.__assign({}, util_1.QuadSchema), { tTriCount: (0, schema_1.TextureSpec)('image-uint8', 'alpha', 'ubyte', 'nearest'), tVolumeData: (0, schema_1.TextureSpec)('texture', 'rgba', 'ubyte', 'nearest'), uIsoValue: (0, schema_1.UniformSpec)('f'), uGridDim: (0, schema_1.UniformSpec)('v3'), uGridTexDim: (0, schema_1.UniformSpec)('v3'), uScale: (0, schema_1.UniformSpec)('v2') });
20
21
  var ActiveVoxelsName = 'active-voxels';
21
22
  function getActiveVoxelsRenderable(ctx, volumeData, gridDim, gridTexDim, isoValue, scale) {
@@ -52,6 +53,8 @@ function setRenderingDefaults(ctx) {
52
53
  state.clearColor(0, 0, 0, 0);
53
54
  }
54
55
  function calcActiveVoxels(ctx, volumeData, gridDim, gridTexDim, isoValue, gridScale) {
56
+ if (debug_1.isTimingMode)
57
+ ctx.timer.mark('calcActiveVoxels');
55
58
  var gl = ctx.gl, resources = ctx.resources;
56
59
  var width = volumeData.getWidth();
57
60
  var height = volumeData.getHeight();
@@ -78,6 +81,8 @@ function calcActiveVoxels(ctx, volumeData, gridDim, gridTexDim, isoValue, gridSc
78
81
  // console.log('volumeData', volumeData);
79
82
  // console.log('at', readTexture(ctx, activeVoxelsTex));
80
83
  gl.finish();
84
+ if (debug_1.isTimingMode)
85
+ ctx.timer.markEnd('calcActiveVoxels');
81
86
  return activeVoxelsTex;
82
87
  }
83
88
  exports.calcActiveVoxels = calcActiveVoxels;
@@ -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
  */
@@ -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
  */
@@ -19,6 +19,7 @@ var quad_vert_1 = require("../../../mol-gl/shader/quad.vert");
19
19
  var isosurface_frag_1 = require("../../../mol-gl/shader/marching-cubes/isosurface.frag");
20
20
  var active_voxels_1 = require("./active-voxels");
21
21
  var compat_1 = require("../../webgl/compat");
22
+ var debug_1 = require("../../../mol-util/debug");
22
23
  var IsosurfaceSchema = tslib_1.__assign(tslib_1.__assign({}, util_1.QuadSchema), { tTriIndices: (0, schema_1.TextureSpec)('image-uint8', 'alpha', 'ubyte', 'nearest'), tActiveVoxelsPyramid: (0, schema_1.TextureSpec)('texture', 'rgba', 'float', 'nearest'), tActiveVoxelsBase: (0, schema_1.TextureSpec)('texture', 'rgba', 'float', 'nearest'), tVolumeData: (0, schema_1.TextureSpec)('texture', 'rgba', 'ubyte', 'nearest'), uIsoValue: (0, schema_1.UniformSpec)('f'), uSize: (0, schema_1.UniformSpec)('f'), uLevels: (0, schema_1.UniformSpec)('f'), uCount: (0, schema_1.UniformSpec)('f'), uInvert: (0, schema_1.UniformSpec)('b'), uGridDim: (0, schema_1.UniformSpec)('v3'), uGridTexDim: (0, schema_1.UniformSpec)('v3'), uGridTransform: (0, schema_1.UniformSpec)('m4'), uScale: (0, schema_1.UniformSpec)('v2'), dPackedGroup: (0, schema_1.DefineSpec)('boolean'), dAxisOrder: (0, schema_1.DefineSpec)('string', ['012', '021', '102', '120', '201', '210']) });
23
24
  var IsosurfaceName = 'isosurface';
24
25
  function getIsosurfaceRenderable(ctx, activeVoxelsPyramid, activeVoxelsBase, volumeData, gridDim, gridTexDim, transform, isoValue, levels, scale, count, invert, packedGroup, axisOrder) {
@@ -67,6 +68,8 @@ function createIsosurfaceBuffers(ctx, activeVoxelsBase, volumeData, histogramPyr
67
68
  var drawBuffers = ctx.extensions.drawBuffers;
68
69
  if (!drawBuffers)
69
70
  throw new Error('need WebGL draw buffers');
71
+ if (debug_1.isTimingMode)
72
+ ctx.timer.mark('createIsosurfaceBuffers');
70
73
  var gl = ctx.gl, resources = ctx.resources, extensions = ctx.extensions;
71
74
  var pyramidTex = histogramPyramid.pyramidTex, height = histogramPyramid.height, levels = histogramPyramid.levels, scale = histogramPyramid.scale, count = histogramPyramid.count;
72
75
  var width = pyramidTex.getWidth();
@@ -124,6 +127,8 @@ function createIsosurfaceBuffers(ctx, activeVoxelsBase, volumeData, histogramPyr
124
127
  gl.clear(gl.COLOR_BUFFER_BIT);
125
128
  renderable.render();
126
129
  gl.finish();
130
+ if (debug_1.isTimingMode)
131
+ ctx.timer.markEnd('createIsosurfaceBuffers');
127
132
  return { vertexTexture: vertexTexture, groupTexture: groupTexture, normalTexture: normalTexture, vertexCount: count };
128
133
  }
129
134
  exports.createIsosurfaceBuffers = createIsosurfaceBuffers;
@@ -138,18 +143,13 @@ exports.createIsosurfaceBuffers = createIsosurfaceBuffers;
138
143
  * Implementation based on http://www.miaumiau.cat/2016/10/stream-compaction-in-webgl/
139
144
  */
140
145
  function extractIsosurface(ctx, volumeData, gridDim, gridTexDim, gridTexScale, transform, isoValue, invert, packedGroup, axisOrder, vertexTexture, groupTexture, normalTexture) {
141
- // console.time('calcActiveVoxels');
146
+ if (debug_1.isTimingMode)
147
+ ctx.timer.mark('extractIsosurface');
142
148
  var activeVoxelsTex = (0, active_voxels_1.calcActiveVoxels)(ctx, volumeData, gridDim, gridTexDim, isoValue, gridTexScale);
143
- // ctx.waitForGpuCommandsCompleteSync();
144
- // console.timeEnd('calcActiveVoxels');
145
- // console.time('createHistogramPyramid');
146
149
  var compacted = (0, reduction_1.createHistogramPyramid)(ctx, activeVoxelsTex, gridTexScale, gridTexDim);
147
- // ctx.waitForGpuCommandsCompleteSync();
148
- // console.timeEnd('createHistogramPyramid');
149
- // console.time('createIsosurfaceBuffers');
150
150
  var gv = createIsosurfaceBuffers(ctx, activeVoxelsTex, volumeData, compacted, gridDim, gridTexDim, transform, isoValue, invert, packedGroup, axisOrder, vertexTexture, groupTexture, normalTexture);
151
- // ctx.waitForGpuCommandsCompleteSync();
152
- // console.timeEnd('createIsosurfaceBuffers');
151
+ if (debug_1.isTimingMode)
152
+ ctx.timer.markEnd('extractIsosurface');
153
153
  return gv;
154
154
  }
155
155
  exports.extractIsosurface = extractIsosurface;
@@ -14,6 +14,7 @@ var param_definition_1 = require("../mol-util/param-definition");
14
14
  var misc_1 = require("../mol-math/misc");
15
15
  var array_1 = require("../mol-util/array");
16
16
  var interpolate_1 = require("../mol-math/interpolate");
17
+ var debug_1 = require("../mol-util/debug");
17
18
  exports.RendererParams = {
18
19
  backgroundColor: param_definition_1.ParamDefinition.Color((0, color_1.Color)(0x000000), { description: 'Background color of the 3D canvas' }),
19
20
  pickingAlphaThreshold: param_definition_1.ParamDefinition.Numeric(0.5, { min: 0.0, max: 1.0, step: 0.01 }, { description: 'The minimum opacity value needed for an object to be pickable.' }),
@@ -108,8 +109,8 @@ var Renderer;
108
109
  uFogColor: mol_util_1.ValueCell.create(bgColor),
109
110
  uRenderMask: mol_util_1.ValueCell.create(0),
110
111
  uMarkingDepthTest: mol_util_1.ValueCell.create(false),
111
- uPickType: mol_util_1.ValueCell.create(0 /* None */),
112
- uMarkingType: mol_util_1.ValueCell.create(0 /* None */),
112
+ uPickType: mol_util_1.ValueCell.create(0 /* PickType.None */),
113
+ uMarkingType: mol_util_1.ValueCell.create(0 /* MarkingType.None */),
113
114
  uTransparentBackground: mol_util_1.ValueCell.create(false),
114
115
  uLightDirection: mol_util_1.ValueCell.create(light.direction),
115
116
  uLightColor: mol_util_1.ValueCell.create(light.color),
@@ -163,7 +164,7 @@ var Renderer;
163
164
  state.depthMask(false);
164
165
  }
165
166
  }
166
- else if (flag === 1 /* BlendedFront */) {
167
+ else if (flag === 1 /* Flag.BlendedFront */) {
167
168
  state.enable(gl.CULL_FACE);
168
169
  if ((_a = r.values.dFlipSided) === null || _a === void 0 ? void 0 : _a.ref.value) {
169
170
  state.frontFace(gl.CW);
@@ -174,7 +175,7 @@ var Renderer;
174
175
  state.cullFace(gl.BACK);
175
176
  }
176
177
  }
177
- else if (flag === 2 /* BlendedBack */) {
178
+ else if (flag === 2 /* Flag.BlendedBack */) {
178
179
  state.enable(gl.CULL_FACE);
179
180
  if ((_b = r.values.dFlipSided) === null || _b === void 0 ? void 0 : _b.ref.value) {
180
181
  state.frontFace(gl.CW);
@@ -243,83 +244,107 @@ var Renderer;
243
244
  state.currentRenderItemId = -1;
244
245
  };
245
246
  var renderPick = function (group, camera, variant, depthTexture, pickType) {
247
+ if (debug_1.isTimingMode)
248
+ ctx.timer.mark('Renderer.renderPick');
246
249
  state.disable(gl.BLEND);
247
250
  state.enable(gl.DEPTH_TEST);
248
251
  state.depthMask(true);
249
- updateInternal(group, camera, depthTexture, 0 /* All */, false);
252
+ updateInternal(group, camera, depthTexture, 0 /* Mask.All */, false);
250
253
  mol_util_1.ValueCell.updateIfChanged(globalUniforms.uPickType, pickType);
251
254
  var renderables = group.renderables;
252
255
  for (var i = 0, il = renderables.length; i < il; ++i) {
253
256
  if (!renderables[i].state.colorOnly) {
254
- renderObject(renderables[i], variant, 0 /* None */);
257
+ renderObject(renderables[i], variant, 0 /* Flag.None */);
255
258
  }
256
259
  }
260
+ if (debug_1.isTimingMode)
261
+ ctx.timer.markEnd('Renderer.renderPick');
257
262
  };
258
263
  var renderDepth = function (group, camera, depthTexture) {
264
+ if (debug_1.isTimingMode)
265
+ ctx.timer.mark('Renderer.renderDepth');
259
266
  state.disable(gl.BLEND);
260
267
  state.enable(gl.DEPTH_TEST);
261
268
  state.depthMask(true);
262
- updateInternal(group, camera, depthTexture, 0 /* All */, false);
269
+ updateInternal(group, camera, depthTexture, 0 /* Mask.All */, false);
263
270
  var renderables = group.renderables;
264
271
  for (var i = 0, il = renderables.length; i < il; ++i) {
265
- renderObject(renderables[i], 'depth', 0 /* None */);
272
+ renderObject(renderables[i], 'depth', 0 /* Flag.None */);
266
273
  }
274
+ if (debug_1.isTimingMode)
275
+ ctx.timer.markEnd('Renderer.renderDepth');
267
276
  };
268
277
  var renderDepthOpaque = function (group, camera, depthTexture) {
269
278
  var _a;
279
+ if (debug_1.isTimingMode)
280
+ ctx.timer.mark('Renderer.renderDepthOpaque');
270
281
  state.disable(gl.BLEND);
271
282
  state.enable(gl.DEPTH_TEST);
272
283
  state.depthMask(true);
273
- updateInternal(group, camera, depthTexture, 1 /* Opaque */, false);
284
+ updateInternal(group, camera, depthTexture, 1 /* Mask.Opaque */, false);
274
285
  var renderables = group.renderables;
275
286
  for (var i = 0, il = renderables.length; i < il; ++i) {
276
287
  var r = renderables[i];
277
288
  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 */);
289
+ renderObject(r, 'depth', 0 /* Flag.None */);
279
290
  }
280
291
  }
292
+ if (debug_1.isTimingMode)
293
+ ctx.timer.markEnd('Renderer.renderDepthOpaque');
281
294
  };
282
295
  var renderDepthTransparent = function (group, camera, depthTexture) {
283
296
  var _a;
297
+ if (debug_1.isTimingMode)
298
+ ctx.timer.mark('Renderer.renderDepthTransparent');
284
299
  state.disable(gl.BLEND);
285
300
  state.enable(gl.DEPTH_TEST);
286
301
  state.depthMask(true);
287
- updateInternal(group, camera, depthTexture, 2 /* Transparent */, false);
302
+ updateInternal(group, camera, depthTexture, 2 /* Mask.Transparent */, false);
288
303
  var renderables = group.renderables;
289
304
  for (var i = 0, il = renderables.length; i < il; ++i) {
290
305
  var r = renderables[i];
291
306
  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 */);
307
+ renderObject(r, 'depth', 0 /* Flag.None */);
293
308
  }
294
309
  }
310
+ if (debug_1.isTimingMode)
311
+ ctx.timer.markEnd('Renderer.renderDepthTransparent');
295
312
  };
296
313
  var renderMarkingDepth = function (group, camera, depthTexture) {
314
+ if (debug_1.isTimingMode)
315
+ ctx.timer.mark('Renderer.renderMarkingDepth');
297
316
  state.disable(gl.BLEND);
298
317
  state.enable(gl.DEPTH_TEST);
299
318
  state.depthMask(true);
300
- updateInternal(group, camera, depthTexture, 0 /* All */, false);
301
- mol_util_1.ValueCell.updateIfChanged(globalUniforms.uMarkingType, 1 /* Depth */);
319
+ updateInternal(group, camera, depthTexture, 0 /* Mask.All */, false);
320
+ mol_util_1.ValueCell.updateIfChanged(globalUniforms.uMarkingType, 1 /* MarkingType.Depth */);
302
321
  var renderables = group.renderables;
303
322
  for (var i = 0, il = renderables.length; i < il; ++i) {
304
323
  var r = renderables[i];
305
324
  if (r.values.markerAverage.ref.value !== 1) {
306
- renderObject(renderables[i], 'marking', 0 /* None */);
325
+ renderObject(renderables[i], 'marking', 0 /* Flag.None */);
307
326
  }
308
327
  }
328
+ if (debug_1.isTimingMode)
329
+ ctx.timer.markEnd('Renderer.renderMarkingDepth');
309
330
  };
310
331
  var renderMarkingMask = function (group, camera, depthTexture) {
332
+ if (debug_1.isTimingMode)
333
+ ctx.timer.mark('Renderer.renderMarkingMask');
311
334
  state.disable(gl.BLEND);
312
335
  state.enable(gl.DEPTH_TEST);
313
336
  state.depthMask(true);
314
- updateInternal(group, camera, depthTexture, 0 /* All */, !!depthTexture);
315
- mol_util_1.ValueCell.updateIfChanged(globalUniforms.uMarkingType, 2 /* Mask */);
337
+ updateInternal(group, camera, depthTexture, 0 /* Mask.All */, !!depthTexture);
338
+ mol_util_1.ValueCell.updateIfChanged(globalUniforms.uMarkingType, 2 /* MarkingType.Mask */);
316
339
  var renderables = group.renderables;
317
340
  for (var i = 0, il = renderables.length; i < il; ++i) {
318
341
  var r = renderables[i];
319
342
  if (r.values.markerAverage.ref.value > 0) {
320
- renderObject(renderables[i], 'marking', 0 /* None */);
343
+ renderObject(renderables[i], 'marking', 0 /* Flag.None */);
321
344
  }
322
345
  }
346
+ if (debug_1.isTimingMode)
347
+ ctx.timer.markEnd('Renderer.renderMarkingMask');
323
348
  };
324
349
  var renderBlended = function (group, camera, depthTexture) {
325
350
  renderBlendedOpaque(group, camera, depthTexture);
@@ -327,25 +352,31 @@ var Renderer;
327
352
  };
328
353
  var renderBlendedOpaque = function (group, camera, depthTexture) {
329
354
  var _a, _b;
355
+ if (debug_1.isTimingMode)
356
+ ctx.timer.mark('Renderer.renderBlendedOpaque');
330
357
  state.disable(gl.BLEND);
331
358
  state.enable(gl.DEPTH_TEST);
332
359
  state.depthMask(true);
333
- updateInternal(group, camera, depthTexture, 1 /* Opaque */, false);
360
+ updateInternal(group, camera, depthTexture, 1 /* Mask.Opaque */, false);
334
361
  var renderables = group.renderables;
335
362
  for (var i = 0, il = renderables.length; i < il; ++i) {
336
363
  var r = renderables[i];
337
364
  if (r.state.opaque) {
338
- renderObject(r, 'colorBlended', 0 /* None */);
365
+ renderObject(r, 'colorBlended', 0 /* Flag.None */);
339
366
  }
340
367
  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 */);
368
+ renderObject(r, 'colorBlended', 2 /* Flag.BlendedBack */);
342
369
  }
343
370
  }
371
+ if (debug_1.isTimingMode)
372
+ ctx.timer.markEnd('Renderer.renderBlendedOpaque');
344
373
  };
345
374
  var renderBlendedTransparent = function (group, camera, depthTexture) {
346
375
  var _a, _b;
376
+ if (debug_1.isTimingMode)
377
+ ctx.timer.mark('Renderer.renderBlendedTransparent');
347
378
  state.enable(gl.DEPTH_TEST);
348
- updateInternal(group, camera, depthTexture, 2 /* Transparent */, false);
379
+ updateInternal(group, camera, depthTexture, 2 /* Mask.Transparent */, false);
349
380
  var renderables = group.renderables;
350
381
  if (transparentBackground) {
351
382
  state.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
@@ -358,7 +389,7 @@ var Renderer;
358
389
  for (var i = 0, il = renderables.length; i < il; ++i) {
359
390
  var r = renderables[i];
360
391
  if (!r.state.opaque && r.state.writeDepth) {
361
- renderObject(r, 'colorBlended', 0 /* None */);
392
+ renderObject(r, 'colorBlended', 0 /* Flag.None */);
362
393
  }
363
394
  }
364
395
  state.depthMask(false);
@@ -368,34 +399,42 @@ var Renderer;
368
399
  if ((_a = r.values.uDoubleSided) === null || _a === void 0 ? void 0 : _a.ref.value) {
369
400
  // render frontfaces and backfaces separately to avoid artefacts
370
401
  if (((_b = r.values.dTransparentBackfaces) === null || _b === void 0 ? void 0 : _b.ref.value) !== 'opaque') {
371
- renderObject(r, 'colorBlended', 2 /* BlendedBack */);
402
+ renderObject(r, 'colorBlended', 2 /* Flag.BlendedBack */);
372
403
  }
373
- renderObject(r, 'colorBlended', 1 /* BlendedFront */);
404
+ renderObject(r, 'colorBlended', 1 /* Flag.BlendedFront */);
374
405
  }
375
406
  else {
376
- renderObject(r, 'colorBlended', 0 /* None */);
407
+ renderObject(r, 'colorBlended', 0 /* Flag.None */);
377
408
  }
378
409
  }
379
410
  }
411
+ if (debug_1.isTimingMode)
412
+ ctx.timer.markEnd('Renderer.renderBlendedTransparent');
380
413
  };
381
414
  var renderBlendedVolume = function (group, camera, depthTexture) {
415
+ if (debug_1.isTimingMode)
416
+ ctx.timer.mark('Renderer.renderBlendedVolume');
382
417
  state.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
383
418
  state.enable(gl.BLEND);
384
- updateInternal(group, camera, depthTexture, 2 /* Transparent */, false);
419
+ updateInternal(group, camera, depthTexture, 2 /* Mask.Transparent */, false);
385
420
  var renderables = group.renderables;
386
421
  for (var i = 0, il = renderables.length; i < il; ++i) {
387
422
  var r = renderables[i];
388
423
  if (r.values.dGeometryType.ref.value === 'directVolume') {
389
- renderObject(r, 'colorBlended', 0 /* None */);
424
+ renderObject(r, 'colorBlended', 0 /* Flag.None */);
390
425
  }
391
426
  }
427
+ if (debug_1.isTimingMode)
428
+ ctx.timer.markEnd('Renderer.renderBlendedVolume');
392
429
  };
393
430
  var renderWboitOpaque = function (group, camera, depthTexture) {
394
431
  var _a, _b, _c;
432
+ if (debug_1.isTimingMode)
433
+ ctx.timer.mark('Renderer.renderWboitOpaque');
395
434
  state.disable(gl.BLEND);
396
435
  state.enable(gl.DEPTH_TEST);
397
436
  state.depthMask(true);
398
- updateInternal(group, camera, depthTexture, 1 /* Opaque */, false);
437
+ updateInternal(group, camera, depthTexture, 1 /* Mask.Opaque */, false);
399
438
  var renderables = group.renderables;
400
439
  for (var i = 0, il = renderables.length; i < il; ++i) {
401
440
  var r = renderables[i];
@@ -403,13 +442,17 @@ var Renderer;
403
442
  // uAlpha is updated in "render" so we need to recompute it here
404
443
  var alpha = (0, interpolate_1.clamp)(r.values.alpha.ref.value * r.state.alphaFactor, 0, 1);
405
444
  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 */);
445
+ renderObject(r, 'colorWboit', 0 /* Flag.None */);
407
446
  }
408
447
  }
448
+ if (debug_1.isTimingMode)
449
+ ctx.timer.markEnd('Renderer.renderWboitOpaque');
409
450
  };
410
451
  var renderWboitTransparent = function (group, camera, depthTexture) {
411
452
  var _a, _b;
412
- updateInternal(group, camera, depthTexture, 2 /* Transparent */, false);
453
+ if (debug_1.isTimingMode)
454
+ ctx.timer.mark('Renderer.renderWboitTransparent');
455
+ updateInternal(group, camera, depthTexture, 2 /* Mask.Transparent */, false);
413
456
  var renderables = group.renderables;
414
457
  for (var i = 0, il = renderables.length; i < il; ++i) {
415
458
  var r = renderables[i];
@@ -417,9 +460,11 @@ var Renderer;
417
460
  // uAlpha is updated in "render" so we need to recompute it here
418
461
  var alpha = (0, interpolate_1.clamp)(r.values.alpha.ref.value * r.state.alphaFactor, 0, 1);
419
462
  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)) {
420
- renderObject(r, 'colorWboit', 0 /* None */);
463
+ renderObject(r, 'colorWboit', 0 /* Flag.None */);
421
464
  }
422
465
  }
466
+ if (debug_1.isTimingMode)
467
+ ctx.timer.markEnd('Renderer.renderWboitTransparent');
423
468
  };
424
469
  return {
425
470
  clear: function (toBackgroundColor, ignoreTransparentBackground) {
@@ -232,6 +232,8 @@ var Scene;
232
232
  renderables[i].dispose();
233
233
  }
234
234
  renderables.length = 0;
235
+ primitives.length = 0;
236
+ volumes.length = 0;
235
237
  renderableMap.clear();
236
238
  boundingSphereDirty = true;
237
239
  boundingSphereVisibleDirty = true;
@@ -1 +1 @@
1
- export declare const assign_color_varying = "\n#if defined(dRenderVariant_color)\n #if defined(dColorType_attribute)\n vColor.rgb = aColor;\n #elif defined(dColorType_instance)\n vColor.rgb = readFromTexture(tColor, aInstance, uColorTexDim).rgb;\n #elif defined(dColorType_group)\n vColor.rgb = readFromTexture(tColor, group, uColorTexDim).rgb;\n #elif defined(dColorType_groupInstance)\n vColor.rgb = readFromTexture(tColor, aInstance * float(uGroupCount) + group, uColorTexDim).rgb;\n #elif defined(dColorType_vertex)\n vColor.rgb = readFromTexture(tColor, VertexID, uColorTexDim).rgb;\n #elif defined(dColorType_vertexInstance)\n vColor.rgb = readFromTexture(tColor, int(aInstance) * uVertexCount + VertexID, uColorTexDim).rgb;\n #elif defined(dColorType_volume)\n vec3 cgridPos = (uColorGridTransform.w * (position - uColorGridTransform.xyz)) / uColorGridDim;\n vColor.rgb = texture3dFrom2dLinear(tColorGrid, cgridPos, uColorGridDim, uColorTexDim).rgb;\n #elif defined(dColorType_volumeInstance)\n vec3 cgridPos = (uColorGridTransform.w * (vModelPosition - uColorGridTransform.xyz)) / uColorGridDim;\n vColor.rgb = texture3dFrom2dLinear(tColorGrid, cgridPos, uColorGridDim, uColorTexDim).rgb;\n #endif\n\n #ifdef dUsePalette\n vPaletteV = ((vColor.r * 256.0 * 256.0 * 255.0 + vColor.g * 256.0 * 255.0 + vColor.b * 255.0) - 1.0) / 16777215.0;\n #endif\n\n #ifdef dOverpaint\n #if defined(dOverpaintType_groupInstance)\n vOverpaint = readFromTexture(tOverpaint, aInstance * float(uGroupCount) + group, uOverpaintTexDim);\n #elif defined(dOverpaintType_vertexInstance)\n vOverpaint = readFromTexture(tOverpaint, int(aInstance) * uVertexCount + VertexID, uOverpaintTexDim);\n #elif defined(dOverpaintType_volumeInstance)\n vec3 ogridPos = (uOverpaintGridTransform.w * (vModelPosition - uOverpaintGridTransform.xyz)) / uOverpaintGridDim;\n vOverpaint = texture3dFrom2dLinear(tOverpaintGrid, ogridPos, uOverpaintGridDim, uOverpaintTexDim);\n #endif\n\n // pre-mix to avoid darkening due to empty overpaint\n #ifdef dColorType_uniform\n vOverpaint.rgb = mix(uColor.rgb, vOverpaint.rgb, vOverpaint.a);\n #else\n vOverpaint.rgb = mix(vColor.rgb, vOverpaint.rgb, vOverpaint.a);\n #endif\n #endif\n\n #ifdef dSubstance\n #if defined(dSubstanceType_groupInstance)\n vSubstance = readFromTexture(tSubstance, aInstance * float(uGroupCount) + group, uSubstanceTexDim);\n #elif defined(dSubstanceType_vertexInstance)\n vSubstance = readFromTexture(tSubstance, int(aInstance) * uVertexCount + VertexID, uSubstanceTexDim);\n #elif defined(dSubstanceType_volumeInstance)\n vec3 sgridPos = (uSubstanceGridTransform.w * (vModelPosition - uSubstanceGridTransform.xyz)) / uSubstanceGridDim;\n vSubstance = texture3dFrom2dLinear(tSubstanceGrid, sgridPos, uSubstanceGridDim, uSubstanceTexDim);\n #endif\n\n // pre-mix to avoid artifacts due to empty substance\n vSubstance.rgb = mix(vec3(uMetalness, uRoughness, uBumpiness), vSubstance.rgb, vSubstance.a);\n #endif\n#elif defined(dRenderVariant_pick)\n if (uPickType == 1) {\n vColor = vec4(packIntToRGB(float(uObjectId)), 1.0);\n } else if (uPickType == 2) {\n vColor = vec4(packIntToRGB(aInstance), 1.0);\n } else {\n vColor = vec4(packIntToRGB(group), 1.0);\n }\n#endif\n\n#ifdef dTransparency\n vGroup = group;\n\n #if defined(dTransparencyType_groupInstance)\n vTransparency = readFromTexture(tTransparency, aInstance * float(uGroupCount) + group, uTransparencyTexDim).a;\n #elif defined(dTransparencyType_vertexInstance)\n vTransparency = readFromTexture(tTransparency, int(aInstance) * uVertexCount + VertexID, uTransparencyTexDim).a;\n #elif defined(dTransparencyType_volumeInstance)\n vec3 tgridPos = (uTransparencyGridTransform.w * (vModelPosition - uTransparencyGridTransform.xyz)) / uTransparencyGridDim;\n vTransparency = texture3dFrom2dLinear(tTransparencyGrid, tgridPos, uTransparencyGridDim, uTransparencyTexDim).a;\n #endif\n#endif\n";
1
+ export declare const assign_color_varying = "\n#if defined(dRenderVariant_color)\n #if defined(dColorType_attribute)\n vColor.rgb = aColor;\n #elif defined(dColorType_instance)\n vColor.rgb = readFromTexture(tColor, aInstance, uColorTexDim).rgb;\n #elif defined(dColorType_group)\n vColor.rgb = readFromTexture(tColor, group, uColorTexDim).rgb;\n #elif defined(dColorType_groupInstance)\n vColor.rgb = readFromTexture(tColor, aInstance * float(uGroupCount) + group, uColorTexDim).rgb;\n #elif defined(dColorType_vertex)\n vColor.rgb = readFromTexture(tColor, VertexID, uColorTexDim).rgb;\n #elif defined(dColorType_vertexInstance)\n vColor.rgb = readFromTexture(tColor, int(aInstance) * uVertexCount + VertexID, uColorTexDim).rgb;\n #elif defined(dColorType_volume)\n vec3 cgridPos = (uColorGridTransform.w * (position - uColorGridTransform.xyz)) / uColorGridDim;\n vColor.rgb = texture3dFrom2dLinear(tColorGrid, cgridPos, uColorGridDim, uColorTexDim).rgb;\n #elif defined(dColorType_volumeInstance)\n vec3 cgridPos = (uColorGridTransform.w * (vModelPosition - uColorGridTransform.xyz)) / uColorGridDim;\n vColor.rgb = texture3dFrom2dLinear(tColorGrid, cgridPos, uColorGridDim, uColorTexDim).rgb;\n #endif\n\n #ifdef dUsePalette\n vPaletteV = ((vColor.r * 256.0 * 256.0 * 255.0 + vColor.g * 256.0 * 255.0 + vColor.b * 255.0) - 1.0) / 16777215.0;\n #endif\n\n #ifdef dOverpaint\n #if defined(dOverpaintType_groupInstance)\n vOverpaint = readFromTexture(tOverpaint, aInstance * float(uGroupCount) + group, uOverpaintTexDim);\n #elif defined(dOverpaintType_vertexInstance)\n vOverpaint = readFromTexture(tOverpaint, int(aInstance) * uVertexCount + VertexID, uOverpaintTexDim);\n #elif defined(dOverpaintType_volumeInstance)\n vec3 ogridPos = (uOverpaintGridTransform.w * (vModelPosition - uOverpaintGridTransform.xyz)) / uOverpaintGridDim;\n vOverpaint = texture3dFrom2dLinear(tOverpaintGrid, ogridPos, uOverpaintGridDim, uOverpaintTexDim);\n #endif\n\n // pre-mix to avoid darkening due to empty overpaint\n #ifdef dColorType_uniform\n vOverpaint.rgb = mix(uColor.rgb, vOverpaint.rgb, vOverpaint.a);\n #else\n vOverpaint.rgb = mix(vColor.rgb, vOverpaint.rgb, vOverpaint.a);\n #endif\n #endif\n\n #ifdef dSubstance\n #if defined(dSubstanceType_groupInstance)\n vSubstance = readFromTexture(tSubstance, aInstance * float(uGroupCount) + group, uSubstanceTexDim);\n #elif defined(dSubstanceType_vertexInstance)\n vSubstance = readFromTexture(tSubstance, int(aInstance) * uVertexCount + VertexID, uSubstanceTexDim);\n #elif defined(dSubstanceType_volumeInstance)\n vec3 sgridPos = (uSubstanceGridTransform.w * (vModelPosition - uSubstanceGridTransform.xyz)) / uSubstanceGridDim;\n vSubstance = texture3dFrom2dLinear(tSubstanceGrid, sgridPos, uSubstanceGridDim, uSubstanceTexDim);\n #endif\n\n // pre-mix to avoid artifacts due to empty substance\n vSubstance.rgb = mix(vec3(uMetalness, uRoughness, uBumpiness), vSubstance.rgb, vSubstance.a);\n #endif\n#elif defined(dRenderVariant_pick)\n #ifdef requiredDrawBuffers\n vObject = vec4(packIntToRGB(float(uObjectId)), 1.0);\n vInstance = vec4(packIntToRGB(aInstance), 1.0);\n vGroup = vec4(packIntToRGB(group), 1.0);\n #else\n if (uPickType == 1) {\n vColor = vec4(packIntToRGB(float(uObjectId)), 1.0);\n } else if (uPickType == 2) {\n vColor = vec4(packIntToRGB(aInstance), 1.0);\n } else {\n vColor = vec4(packIntToRGB(group), 1.0);\n }\n #endif\n#endif\n\n#ifdef dTransparency\n vGroup = group;\n\n #if defined(dTransparencyType_groupInstance)\n vTransparency = readFromTexture(tTransparency, aInstance * float(uGroupCount) + group, uTransparencyTexDim).a;\n #elif defined(dTransparencyType_vertexInstance)\n vTransparency = readFromTexture(tTransparency, int(aInstance) * uVertexCount + VertexID, uTransparencyTexDim).a;\n #elif defined(dTransparencyType_volumeInstance)\n vec3 tgridPos = (uTransparencyGridTransform.w * (vModelPosition - uTransparencyGridTransform.xyz)) / uTransparencyGridDim;\n vTransparency = texture3dFrom2dLinear(tTransparencyGrid, tgridPos, uTransparencyGridDim, uTransparencyTexDim).a;\n #endif\n#endif\n";