molstar 3.8.2 → 3.10.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 (596) 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 +109 -106
  5. package/build/viewer/molstar.js +1 -1
  6. package/lib/apps/docking-viewer/index.html +36 -36
  7. package/lib/apps/viewer/app.d.ts +5 -2
  8. package/lib/apps/viewer/app.js +11 -7
  9. package/lib/apps/viewer/embedded.html +43 -43
  10. package/lib/apps/viewer/index.html +109 -106
  11. package/lib/cli/cif2bcif/converter.js +1 -1
  12. package/lib/commonjs/apps/viewer/app.d.ts +5 -2
  13. package/lib/commonjs/apps/viewer/app.js +12 -7
  14. package/lib/commonjs/cli/cif2bcif/converter.js +1 -1
  15. package/lib/commonjs/examples/alpha-orbitals/index.d.ts +1 -1
  16. package/lib/commonjs/examples/alpha-orbitals/index.js +4 -1
  17. package/lib/commonjs/examples/basic-wrapper/custom-theme.js +1 -1
  18. package/lib/commonjs/examples/proteopedia-wrapper/coloring.js +3 -3
  19. package/lib/commonjs/extensions/alpha-orbitals/density.d.ts +1 -1
  20. package/lib/commonjs/extensions/alpha-orbitals/density.js +6 -2
  21. package/lib/commonjs/extensions/alpha-orbitals/orbitals.d.ts +1 -1
  22. package/lib/commonjs/extensions/alpha-orbitals/orbitals.js +6 -3
  23. package/lib/commonjs/extensions/anvil/algorithm.js +1 -1
  24. package/lib/commonjs/extensions/cellpack/color/generate.js +1 -1
  25. package/lib/commonjs/extensions/cellpack/color/provided.js +1 -1
  26. package/lib/commonjs/extensions/cellpack/state.js +1 -1
  27. package/lib/commonjs/extensions/dnatco/confal-pyramids/color.js +1 -1
  28. package/lib/commonjs/extensions/g3d/model.js +1 -1
  29. package/lib/commonjs/extensions/geo-export/ui.js +1 -0
  30. package/lib/commonjs/extensions/model-archive/quality-assessment/color/plddt.js +1 -1
  31. package/lib/commonjs/extensions/model-archive/quality-assessment/color/qmean.js +1 -1
  32. package/lib/commonjs/extensions/mp4-export/ui.js +1 -0
  33. package/lib/commonjs/extensions/pdbe/structure-quality-report/color.js +1 -1
  34. package/lib/commonjs/extensions/rcsb/assembly-symmetry/color.js +4 -4
  35. package/lib/commonjs/extensions/rcsb/validation-report/color/density-fit.js +1 -1
  36. package/lib/commonjs/extensions/rcsb/validation-report/color/geometry-quality.js +2 -2
  37. package/lib/commonjs/extensions/rcsb/validation-report/color/random-coil-index.js +1 -1
  38. package/lib/commonjs/extensions/rcsb/validation-report/representation.js +2 -2
  39. package/lib/commonjs/mol-canvas3d/canvas3d.js +4 -0
  40. package/lib/commonjs/mol-canvas3d/controls/trackball.js +7 -7
  41. package/lib/commonjs/mol-canvas3d/helper/camera-helper.js +14 -14
  42. package/lib/commonjs/mol-canvas3d/helper/interaction-events.js +5 -5
  43. package/lib/commonjs/mol-canvas3d/passes/draw.js +34 -5
  44. package/lib/commonjs/mol-canvas3d/passes/fxaa.js +5 -0
  45. package/lib/commonjs/mol-canvas3d/passes/marking.js +5 -0
  46. package/lib/commonjs/mol-canvas3d/passes/multi-sample.js +9 -0
  47. package/lib/commonjs/mol-canvas3d/passes/pick.d.ts +18 -5
  48. package/lib/commonjs/mol-canvas3d/passes/pick.js +125 -24
  49. package/lib/commonjs/mol-canvas3d/passes/postprocessing.js +5 -0
  50. package/lib/commonjs/mol-canvas3d/passes/smaa.js +4 -0
  51. package/lib/commonjs/mol-canvas3d/passes/wboit.js +4 -0
  52. package/lib/commonjs/mol-data/db/column.js +5 -5
  53. package/lib/commonjs/mol-data/db/table.js +2 -2
  54. package/lib/commonjs/mol-data/util/array.d.ts +1 -1
  55. package/lib/commonjs/mol-geo/geometry/cylinders/cylinders.d.ts +1 -1
  56. package/lib/commonjs/mol-geo/geometry/lines/lines.d.ts +0 -1
  57. package/lib/commonjs/mol-geo/geometry/points/points.d.ts +1 -1
  58. package/lib/commonjs/mol-geo/geometry/texture-mesh/color-smoothing.js +13 -0
  59. package/lib/commonjs/mol-gl/compute/grid3d.d.ts +2 -2
  60. package/lib/commonjs/mol-gl/compute/grid3d.js +30 -8
  61. package/lib/commonjs/mol-gl/compute/histogram-pyramid/reduction.d.ts +1 -1
  62. package/lib/commonjs/mol-gl/compute/histogram-pyramid/reduction.js +6 -1
  63. package/lib/commonjs/mol-gl/compute/histogram-pyramid/sum.d.ts +1 -1
  64. package/lib/commonjs/mol-gl/compute/histogram-pyramid/sum.js +6 -1
  65. package/lib/commonjs/mol-gl/compute/marching-cubes/active-voxels.d.ts +1 -1
  66. package/lib/commonjs/mol-gl/compute/marching-cubes/active-voxels.js +6 -1
  67. package/lib/commonjs/mol-gl/compute/marching-cubes/isosurface.d.ts +1 -1
  68. package/lib/commonjs/mol-gl/compute/marching-cubes/isosurface.js +10 -10
  69. package/lib/commonjs/mol-gl/renderer.js +77 -32
  70. package/lib/commonjs/mol-gl/scene.js +2 -0
  71. package/lib/commonjs/mol-gl/shader/chunks/assign-color-varying.glsl.d.ts +1 -1
  72. package/lib/commonjs/mol-gl/shader/chunks/assign-color-varying.glsl.js +1 -1
  73. package/lib/commonjs/mol-gl/shader/chunks/assign-material-color.glsl.d.ts +1 -1
  74. package/lib/commonjs/mol-gl/shader/chunks/assign-material-color.glsl.js +1 -1
  75. package/lib/commonjs/mol-gl/shader/chunks/color-frag-params.glsl.d.ts +1 -1
  76. package/lib/commonjs/mol-gl/shader/chunks/color-frag-params.glsl.js +1 -1
  77. package/lib/commonjs/mol-gl/shader/chunks/color-vert-params.glsl.d.ts +1 -1
  78. package/lib/commonjs/mol-gl/shader/chunks/color-vert-params.glsl.js +1 -1
  79. package/lib/commonjs/mol-gl/shader/cylinders.frag.d.ts +1 -1
  80. package/lib/commonjs/mol-gl/shader/cylinders.frag.js +1 -1
  81. package/lib/commonjs/mol-gl/shader/direct-volume.frag.d.ts +1 -1
  82. package/lib/commonjs/mol-gl/shader/direct-volume.frag.js +1 -1
  83. package/lib/commonjs/mol-gl/shader/image.frag.d.ts +1 -1
  84. package/lib/commonjs/mol-gl/shader/image.frag.js +1 -1
  85. package/lib/commonjs/mol-gl/shader/lines.frag.d.ts +1 -1
  86. package/lib/commonjs/mol-gl/shader/lines.frag.js +1 -1
  87. package/lib/commonjs/mol-gl/shader/mesh.frag.d.ts +1 -1
  88. package/lib/commonjs/mol-gl/shader/mesh.frag.js +1 -1
  89. package/lib/commonjs/mol-gl/shader/points.frag.d.ts +1 -1
  90. package/lib/commonjs/mol-gl/shader/points.frag.js +1 -1
  91. package/lib/commonjs/mol-gl/shader/spheres.frag.d.ts +1 -1
  92. package/lib/commonjs/mol-gl/shader/spheres.frag.js +1 -1
  93. package/lib/commonjs/mol-gl/shader/text.frag.d.ts +1 -1
  94. package/lib/commonjs/mol-gl/shader/text.frag.js +1 -1
  95. package/lib/commonjs/mol-gl/shader-code.d.ts +1 -1
  96. package/lib/commonjs/mol-gl/shader-code.js +41 -9
  97. package/lib/commonjs/mol-gl/webgl/compat.d.ts +34 -1
  98. package/lib/commonjs/mol-gl/webgl/compat.js +50 -2
  99. package/lib/commonjs/mol-gl/webgl/context.d.ts +2 -0
  100. package/lib/commonjs/mol-gl/webgl/context.js +3 -0
  101. package/lib/commonjs/mol-gl/webgl/extensions.d.ts +3 -2
  102. package/lib/commonjs/mol-gl/webgl/extensions.js +6 -1
  103. package/lib/commonjs/mol-gl/webgl/timer.d.ts +22 -0
  104. package/lib/commonjs/mol-gl/webgl/timer.js +169 -0
  105. package/lib/commonjs/mol-io/common/binary-cif/array-encoder.js +18 -18
  106. package/lib/commonjs/mol-io/common/binary-cif/decoder.js +16 -16
  107. package/lib/commonjs/mol-io/common/binary-cif/encoding.js +9 -9
  108. package/lib/commonjs/mol-io/reader/cif/binary/field.js +3 -3
  109. package/lib/commonjs/mol-io/reader/cif/data-model.js +14 -14
  110. package/lib/commonjs/mol-io/reader/cif/schema.js +1 -1
  111. package/lib/commonjs/mol-io/reader/cif/text/parser.js +23 -23
  112. package/lib/commonjs/mol-io/reader/common/text/column/fixed.js +1 -1
  113. package/lib/commonjs/mol-io/reader/common/text/column/token.js +1 -1
  114. package/lib/commonjs/mol-io/reader/common/text/number-parser.js +6 -6
  115. package/lib/commonjs/mol-io/reader/csv/parser.js +8 -8
  116. package/lib/commonjs/mol-io/writer/cif/encoder/binary.js +10 -10
  117. package/lib/commonjs/mol-io/writer/cif/encoder/text.js +7 -7
  118. package/lib/commonjs/mol-io/writer/cif/encoder.js +8 -8
  119. package/lib/commonjs/mol-io/writer/mol2/encoder.js +4 -4
  120. package/lib/commonjs/mol-math/geometry/gaussian-density/gpu.js +13 -2
  121. package/lib/commonjs/mol-model/sequence/alignment/sequence.js +3 -3
  122. package/lib/commonjs/mol-model/sequence/sequence.js +9 -9
  123. package/lib/commonjs/mol-model/structure/export/categories/atom_site_operator_mapping.js +3 -3
  124. package/lib/commonjs/mol-model/structure/export/categories/secondary-structure.js +2 -2
  125. package/lib/commonjs/mol-model/structure/export/categories/utils.js +1 -1
  126. package/lib/commonjs/mol-model/structure/model/model.js +2 -2
  127. package/lib/commonjs/mol-model/structure/model/properties/custom/indexed.js +6 -6
  128. package/lib/commonjs/mol-model/structure/model/properties/utils/atomic-ranges.js +1 -1
  129. package/lib/commonjs/mol-model/structure/model/types.js +116 -116
  130. package/lib/commonjs/mol-model/structure/query/context.js +1 -1
  131. package/lib/commonjs/mol-model/structure/query/queries/generators.js +5 -5
  132. package/lib/commonjs/mol-model/structure/query/queries/internal.js +4 -4
  133. package/lib/commonjs/mol-model/structure/query/queries/modifiers.js +4 -4
  134. package/lib/commonjs/mol-model/structure/query/utils/structure-distance.d.ts +5 -54
  135. package/lib/commonjs/mol-model/structure/query/utils/structure-distance.js +9 -9
  136. package/lib/commonjs/mol-model/structure/structure/carbohydrates/constants.d.ts +3 -1
  137. package/lib/commonjs/mol-model/structure/structure/carbohydrates/constants.js +192 -108
  138. package/lib/commonjs/mol-model/structure/structure/element/loci.js +5 -5
  139. package/lib/commonjs/mol-model/structure/structure/element/stats.js +5 -5
  140. package/lib/commonjs/mol-model/structure/structure/properties.js +5 -5
  141. package/lib/commonjs/mol-model/structure/structure/structure.js +11 -11
  142. package/lib/commonjs/mol-model/structure/structure/unit/bonds/inter-compute.js +5 -5
  143. package/lib/commonjs/mol-model/structure/structure/unit/bonds/intra-compute.js +4 -4
  144. package/lib/commonjs/mol-model/structure/structure/unit/bonds.js +2 -2
  145. package/lib/commonjs/mol-model/structure/structure/unit/resonance.js +1 -1
  146. package/lib/commonjs/mol-model/structure/structure/unit/rings/compute.js +6 -6
  147. package/lib/commonjs/mol-model/structure/structure/unit/rings.js +6 -6
  148. package/lib/commonjs/mol-model/structure/structure/unit.js +16 -16
  149. package/lib/commonjs/mol-model/structure/structure/util/superposition-sifts-mapping.js +1 -1
  150. package/lib/commonjs/mol-model/structure/util.js +4 -4
  151. package/lib/commonjs/mol-model-formats/structure/basic/atomic.js +2 -2
  152. package/lib/commonjs/mol-model-formats/structure/basic/parser.js +4 -4
  153. package/lib/commonjs/mol-model-formats/structure/basic/properties.js +1 -1
  154. package/lib/commonjs/mol-model-formats/structure/basic/sort.js +1 -1
  155. package/lib/commonjs/mol-model-formats/structure/basic/util.js +1 -1
  156. package/lib/commonjs/mol-model-formats/structure/cif-core.js +6 -6
  157. package/lib/commonjs/mol-model-formats/structure/common/entity.js +1 -1
  158. package/lib/commonjs/mol-model-formats/structure/cube.js +1 -1
  159. package/lib/commonjs/mol-model-formats/structure/gro.js +1 -1
  160. package/lib/commonjs/mol-model-formats/structure/mol.js +1 -1
  161. package/lib/commonjs/mol-model-formats/structure/mol2.js +4 -4
  162. package/lib/commonjs/mol-model-formats/structure/prmtop.js +1 -1
  163. package/lib/commonjs/mol-model-formats/structure/property/bonds/chem_comp.js +3 -3
  164. package/lib/commonjs/mol-model-formats/structure/property/bonds/index-pair.js +1 -1
  165. package/lib/commonjs/mol-model-formats/structure/property/bonds/struct_conn.js +6 -6
  166. package/lib/commonjs/mol-model-formats/structure/property/secondary-structure.js +8 -8
  167. package/lib/commonjs/mol-model-formats/structure/psf.js +1 -1
  168. package/lib/commonjs/mol-model-formats/structure/top.js +1 -1
  169. package/lib/commonjs/mol-model-formats/structure/xyz.js +1 -1
  170. package/lib/commonjs/mol-model-props/computed/accessible-surface-area/shrake-rupley/radii.js +2 -2
  171. package/lib/commonjs/mol-model-props/computed/accessible-surface-area/shrake-rupley.js +3 -3
  172. package/lib/commonjs/mol-model-props/computed/accessible-surface-area.js +2 -2
  173. package/lib/commonjs/mol-model-props/computed/chemistry/functional-group.js +31 -31
  174. package/lib/commonjs/mol-model-props/computed/chemistry/geometry.js +22 -22
  175. package/lib/commonjs/mol-model-props/computed/chemistry/valence-model.js +32 -32
  176. package/lib/commonjs/mol-model-props/computed/interactions/charged.js +39 -39
  177. package/lib/commonjs/mol-model-props/computed/interactions/common.js +34 -34
  178. package/lib/commonjs/mol-model-props/computed/interactions/contacts-builder.js +1 -1
  179. package/lib/commonjs/mol-model-props/computed/interactions/contacts.js +1 -1
  180. package/lib/commonjs/mol-model-props/computed/interactions/halogen-bonds.js +12 -12
  181. package/lib/commonjs/mol-model-props/computed/interactions/hydrogen-bonds.js +32 -32
  182. package/lib/commonjs/mol-model-props/computed/interactions/hydrophobic.js +9 -9
  183. package/lib/commonjs/mol-model-props/computed/interactions/metal.js +26 -26
  184. package/lib/commonjs/mol-model-props/computed/interactions/refine.js +20 -20
  185. package/lib/commonjs/mol-model-props/computed/representations/interactions-inter-unit-cylinder.js +2 -2
  186. package/lib/commonjs/mol-model-props/computed/representations/interactions-intra-unit-cylinder.js +2 -2
  187. package/lib/commonjs/mol-model-props/computed/secondary-structure/dssp/bends.js +1 -1
  188. package/lib/commonjs/mol-model-props/computed/secondary-structure/dssp/bridges.js +12 -12
  189. package/lib/commonjs/mol-model-props/computed/secondary-structure/dssp/helices.js +6 -6
  190. package/lib/commonjs/mol-model-props/computed/secondary-structure/dssp/ladders.js +3 -3
  191. package/lib/commonjs/mol-model-props/computed/secondary-structure/dssp/sheets.js +11 -11
  192. package/lib/commonjs/mol-model-props/computed/secondary-structure/dssp/turns.js +3 -3
  193. package/lib/commonjs/mol-model-props/computed/secondary-structure/dssp.js +30 -30
  194. package/lib/commonjs/mol-model-props/computed/themes/accessible-surface-area.js +1 -1
  195. package/lib/commonjs/mol-model-props/computed/themes/interaction-type.js +10 -10
  196. package/lib/commonjs/mol-model-props/integrative/cross-link-restraint/color.js +1 -1
  197. package/lib/commonjs/mol-model-props/integrative/cross-link-restraint/format.js +3 -3
  198. package/lib/commonjs/mol-model-props/sequence/sifts-mapping.js +1 -1
  199. package/lib/commonjs/mol-model-props/sequence/themes/sifts-mapping.js +1 -1
  200. package/lib/commonjs/mol-plugin/animation-loop.d.ts +2 -1
  201. package/lib/commonjs/mol-plugin/animation-loop.js +18 -5
  202. package/lib/commonjs/mol-plugin/behavior/dynamic/camera.js +12 -12
  203. package/lib/commonjs/mol-plugin/behavior/dynamic/representation.js +7 -7
  204. package/lib/commonjs/mol-plugin/behavior/dynamic/volume-streaming/model.d.ts +2 -3
  205. package/lib/commonjs/mol-plugin/config.d.ts +3 -0
  206. package/lib/commonjs/mol-plugin/config.js +3 -1
  207. package/lib/commonjs/mol-plugin/context.d.ts +2 -2
  208. package/lib/commonjs/mol-plugin/context.js +3 -0
  209. package/lib/commonjs/mol-plugin/state.d.ts +1 -14
  210. package/lib/commonjs/mol-plugin-state/formats/volume.d.ts +12 -11
  211. package/lib/commonjs/mol-plugin-state/formats/volume.js +20 -13
  212. package/lib/commonjs/mol-plugin-state/helpers/structure-selection-query.js +5 -5
  213. package/lib/commonjs/mol-plugin-state/transforms/representation.js +2 -2
  214. package/lib/commonjs/mol-plugin-ui/controls/parameters.d.ts +1 -1
  215. package/lib/commonjs/mol-plugin-ui/controls.js +1 -1
  216. package/lib/commonjs/mol-plugin-ui/sequence/polymer.js +1 -1
  217. package/lib/commonjs/mol-plugin-ui/sequence/sequence.js +1 -1
  218. package/lib/commonjs/mol-plugin-ui/state/snapshots.js +1 -0
  219. package/lib/commonjs/mol-plugin-ui/structure/focus.js +1 -1
  220. package/lib/commonjs/mol-plugin-ui/viewport/screenshot.js +1 -0
  221. package/lib/commonjs/mol-plugin-ui/viewport.d.ts +2 -2
  222. package/lib/commonjs/mol-repr/shape/representation.d.ts +1 -1
  223. package/lib/commonjs/mol-repr/shape/representation.js +2 -1
  224. package/lib/commonjs/mol-repr/structure/complex-visual.d.ts +1 -1
  225. package/lib/commonjs/mol-repr/structure/complex-visual.js +2 -1
  226. package/lib/commonjs/mol-repr/structure/units-visual.d.ts +1 -1
  227. package/lib/commonjs/mol-repr/structure/units-visual.js +2 -1
  228. package/lib/commonjs/mol-repr/structure/visual/bond-inter-unit-cylinder.js +10 -10
  229. package/lib/commonjs/mol-repr/structure/visual/bond-inter-unit-line.js +10 -10
  230. package/lib/commonjs/mol-repr/structure/visual/bond-intra-unit-cylinder.js +12 -15
  231. package/lib/commonjs/mol-repr/structure/visual/bond-intra-unit-line.js +12 -15
  232. package/lib/commonjs/mol-repr/structure/visual/carbohydrate-symbol-mesh.js +16 -16
  233. package/lib/commonjs/mol-repr/structure/visual/carbohydrate-terminal-link-cylinder.js +1 -1
  234. package/lib/commonjs/mol-repr/structure/visual/gaussian-surface-mesh.js +9 -0
  235. package/lib/commonjs/mol-repr/structure/visual/orientation-ellipsoid-mesh.js +4 -4
  236. package/lib/commonjs/mol-repr/structure/visual/polymer-direction-wedge.js +1 -1
  237. package/lib/commonjs/mol-repr/structure/visual/polymer-trace-mesh.js +2 -2
  238. package/lib/commonjs/mol-repr/structure/visual/util/bond.js +2 -2
  239. package/lib/commonjs/mol-repr/structure/visual/util/common.js +3 -3
  240. package/lib/commonjs/mol-repr/structure/visual/util/link.js +30 -30
  241. package/lib/commonjs/mol-repr/structure/visual/util/polymer/backbone.js +6 -6
  242. package/lib/commonjs/mol-repr/structure/visual/util/polymer/gap-iterator.js +3 -3
  243. package/lib/commonjs/mol-repr/structure/visual/util/polymer/trace-iterator.js +20 -20
  244. package/lib/commonjs/mol-repr/structure/visual/util/polymer.js +6 -6
  245. package/lib/commonjs/mol-repr/volume/representation.d.ts +1 -1
  246. package/lib/commonjs/mol-repr/volume/representation.js +2 -1
  247. package/lib/commonjs/mol-script/language/builder.d.ts +1 -0
  248. package/lib/commonjs/mol-script/language/symbol-table/core.d.ts +2 -2
  249. package/lib/commonjs/mol-script/runtime/query/table.js +13 -13
  250. package/lib/commonjs/mol-state/object.d.ts +3 -3
  251. package/lib/commonjs/mol-task/util/user-timing.js +1 -1
  252. package/lib/commonjs/mol-theme/clipping.js +19 -19
  253. package/lib/commonjs/mol-theme/color/atom-id.js +1 -1
  254. package/lib/commonjs/mol-theme/color/carbohydrate-symbol.js +1 -1
  255. package/lib/commonjs/mol-theme/color/chain-id.js +4 -4
  256. package/lib/commonjs/mol-theme/color/element-index.js +1 -1
  257. package/lib/commonjs/mol-theme/color/element-symbol.js +1 -1
  258. package/lib/commonjs/mol-theme/color/entity-id.js +4 -4
  259. package/lib/commonjs/mol-theme/color/entity-source.js +5 -4
  260. package/lib/commonjs/mol-theme/color/hydrophobicity.js +1 -1
  261. package/lib/commonjs/mol-theme/color/illustrative.js +1 -1
  262. package/lib/commonjs/mol-theme/color/model-index.js +1 -1
  263. package/lib/commonjs/mol-theme/color/molecule-type.js +8 -8
  264. package/lib/commonjs/mol-theme/color/occupancy.js +1 -1
  265. package/lib/commonjs/mol-theme/color/operator-hkl.js +1 -1
  266. package/lib/commonjs/mol-theme/color/operator-name.js +1 -1
  267. package/lib/commonjs/mol-theme/color/partial-charge.js +1 -1
  268. package/lib/commonjs/mol-theme/color/polymer-id.js +4 -4
  269. package/lib/commonjs/mol-theme/color/polymer-index.js +1 -1
  270. package/lib/commonjs/mol-theme/color/residue-name.js +1 -1
  271. package/lib/commonjs/mol-theme/color/secondary-structure.js +12 -12
  272. package/lib/commonjs/mol-theme/color/sequence-id.js +7 -7
  273. package/lib/commonjs/mol-theme/color/shape-group.js +1 -1
  274. package/lib/commonjs/mol-theme/color/uncertainty.js +1 -1
  275. package/lib/commonjs/mol-theme/color/uniform.js +1 -1
  276. package/lib/commonjs/mol-theme/color/unit-index.js +1 -1
  277. package/lib/commonjs/mol-theme/color/volume-value.js +1 -1
  278. package/lib/commonjs/mol-theme/label.js +3 -3
  279. package/lib/commonjs/mol-util/binding.js +4 -4
  280. package/lib/commonjs/mol-util/debug.d.ts +6 -1
  281. package/lib/commonjs/mol-util/debug.js +11 -1
  282. package/lib/commonjs/mol-util/input/input-observer.js +20 -20
  283. package/lib/commonjs/mol-util/string-builder.js +1 -1
  284. package/lib/commonjs/servers/model/preprocess/converter.js +1 -1
  285. package/lib/commonjs/servers/model/server/query.js +1 -1
  286. package/lib/commonjs/servers/model/utils/fetch-retry.js +3 -2
  287. package/lib/commonjs/servers/volume/server/algebra/coordinate.js +6 -6
  288. package/lib/commonjs/servers/volume/server/query/encode.js +1 -1
  289. package/lib/examples/alpha-orbitals/index.d.ts +1 -1
  290. package/lib/examples/alpha-orbitals/index.html +72 -61
  291. package/lib/examples/alpha-orbitals/index.js +4 -1
  292. package/lib/examples/basic-wrapper/custom-theme.js +1 -1
  293. package/lib/examples/basic-wrapper/index.html +137 -137
  294. package/lib/examples/lighting/index.html +88 -88
  295. package/lib/examples/proteopedia-wrapper/coloring.js +3 -3
  296. package/lib/examples/proteopedia-wrapper/index.html +236 -236
  297. package/lib/extensions/alpha-orbitals/density.d.ts +1 -1
  298. package/lib/extensions/alpha-orbitals/density.js +6 -2
  299. package/lib/extensions/alpha-orbitals/orbitals.d.ts +1 -1
  300. package/lib/extensions/alpha-orbitals/orbitals.js +6 -3
  301. package/lib/extensions/anvil/algorithm.js +1 -1
  302. package/lib/extensions/cellpack/color/generate.js +1 -1
  303. package/lib/extensions/cellpack/color/provided.js +1 -1
  304. package/lib/extensions/cellpack/state.js +1 -1
  305. package/lib/extensions/dnatco/confal-pyramids/color.js +1 -1
  306. package/lib/extensions/g3d/model.js +1 -1
  307. package/lib/extensions/geo-export/ui.js +1 -0
  308. package/lib/extensions/model-archive/quality-assessment/color/plddt.js +1 -1
  309. package/lib/extensions/model-archive/quality-assessment/color/qmean.js +1 -1
  310. package/lib/extensions/mp4-export/ui.js +1 -0
  311. package/lib/extensions/pdbe/structure-quality-report/color.js +1 -1
  312. package/lib/extensions/rcsb/assembly-symmetry/color.js +4 -4
  313. package/lib/extensions/rcsb/validation-report/color/density-fit.js +1 -1
  314. package/lib/extensions/rcsb/validation-report/color/geometry-quality.js +2 -2
  315. package/lib/extensions/rcsb/validation-report/color/random-coil-index.js +1 -1
  316. package/lib/extensions/rcsb/validation-report/representation.js +2 -2
  317. package/lib/mol-canvas3d/canvas3d.js +5 -1
  318. package/lib/mol-canvas3d/controls/trackball.js +7 -7
  319. package/lib/mol-canvas3d/helper/camera-helper.js +14 -14
  320. package/lib/mol-canvas3d/helper/interaction-events.js +5 -5
  321. package/lib/mol-canvas3d/passes/draw.js +34 -5
  322. package/lib/mol-canvas3d/passes/fxaa.js +5 -0
  323. package/lib/mol-canvas3d/passes/marking.js +5 -0
  324. package/lib/mol-canvas3d/passes/multi-sample.js +9 -0
  325. package/lib/mol-canvas3d/passes/pick.d.ts +18 -5
  326. package/lib/mol-canvas3d/passes/pick.js +125 -24
  327. package/lib/mol-canvas3d/passes/postprocessing.js +5 -0
  328. package/lib/mol-canvas3d/passes/smaa.js +5 -1
  329. package/lib/mol-canvas3d/passes/wboit.js +5 -1
  330. package/lib/mol-data/db/column.js +5 -5
  331. package/lib/mol-data/db/table.js +2 -2
  332. package/lib/mol-data/util/array.d.ts +1 -1
  333. package/lib/mol-geo/geometry/cylinders/cylinders.d.ts +1 -1
  334. package/lib/mol-geo/geometry/lines/lines.d.ts +0 -1
  335. package/lib/mol-geo/geometry/points/points.d.ts +1 -1
  336. package/lib/mol-geo/geometry/texture-mesh/color-smoothing.js +13 -0
  337. package/lib/mol-gl/compute/grid3d.d.ts +2 -2
  338. package/lib/mol-gl/compute/grid3d.js +30 -8
  339. package/lib/mol-gl/compute/histogram-pyramid/reduction.d.ts +1 -1
  340. package/lib/mol-gl/compute/histogram-pyramid/reduction.js +6 -1
  341. package/lib/mol-gl/compute/histogram-pyramid/sum.d.ts +1 -1
  342. package/lib/mol-gl/compute/histogram-pyramid/sum.js +6 -1
  343. package/lib/mol-gl/compute/marching-cubes/active-voxels.d.ts +1 -1
  344. package/lib/mol-gl/compute/marching-cubes/active-voxels.js +6 -1
  345. package/lib/mol-gl/compute/marching-cubes/isosurface.d.ts +1 -1
  346. package/lib/mol-gl/compute/marching-cubes/isosurface.js +10 -10
  347. package/lib/mol-gl/renderer.js +77 -32
  348. package/lib/mol-gl/scene.js +2 -0
  349. package/lib/mol-gl/shader/chunks/assign-color-varying.glsl.d.ts +1 -1
  350. package/lib/mol-gl/shader/chunks/assign-color-varying.glsl.js +1 -1
  351. package/lib/mol-gl/shader/chunks/assign-material-color.glsl.d.ts +1 -1
  352. package/lib/mol-gl/shader/chunks/assign-material-color.glsl.js +1 -1
  353. package/lib/mol-gl/shader/chunks/color-frag-params.glsl.d.ts +1 -1
  354. package/lib/mol-gl/shader/chunks/color-frag-params.glsl.js +1 -1
  355. package/lib/mol-gl/shader/chunks/color-vert-params.glsl.d.ts +1 -1
  356. package/lib/mol-gl/shader/chunks/color-vert-params.glsl.js +1 -1
  357. package/lib/mol-gl/shader/cylinders.frag.d.ts +1 -1
  358. package/lib/mol-gl/shader/cylinders.frag.js +1 -1
  359. package/lib/mol-gl/shader/direct-volume.frag.d.ts +1 -1
  360. package/lib/mol-gl/shader/direct-volume.frag.js +1 -1
  361. package/lib/mol-gl/shader/image.frag.d.ts +1 -1
  362. package/lib/mol-gl/shader/image.frag.js +1 -1
  363. package/lib/mol-gl/shader/lines.frag.d.ts +1 -1
  364. package/lib/mol-gl/shader/lines.frag.js +1 -1
  365. package/lib/mol-gl/shader/mesh.frag.d.ts +1 -1
  366. package/lib/mol-gl/shader/mesh.frag.js +1 -1
  367. package/lib/mol-gl/shader/points.frag.d.ts +1 -1
  368. package/lib/mol-gl/shader/points.frag.js +1 -1
  369. package/lib/mol-gl/shader/spheres.frag.d.ts +1 -1
  370. package/lib/mol-gl/shader/spheres.frag.js +1 -1
  371. package/lib/mol-gl/shader/text.frag.d.ts +1 -1
  372. package/lib/mol-gl/shader/text.frag.js +1 -1
  373. package/lib/mol-gl/shader-code.d.ts +1 -1
  374. package/lib/mol-gl/shader-code.js +41 -9
  375. package/lib/mol-gl/webgl/compat.d.ts +34 -1
  376. package/lib/mol-gl/webgl/compat.js +48 -1
  377. package/lib/mol-gl/webgl/context.d.ts +2 -0
  378. package/lib/mol-gl/webgl/context.js +3 -0
  379. package/lib/mol-gl/webgl/extensions.d.ts +3 -2
  380. package/lib/mol-gl/webgl/extensions.js +7 -2
  381. package/lib/mol-gl/webgl/timer.d.ts +22 -0
  382. package/lib/mol-gl/webgl/timer.js +164 -0
  383. package/lib/mol-io/common/binary-cif/array-encoder.js +18 -18
  384. package/lib/mol-io/common/binary-cif/decoder.js +16 -16
  385. package/lib/mol-io/common/binary-cif/encoding.js +9 -9
  386. package/lib/mol-io/reader/cif/binary/field.js +3 -3
  387. package/lib/mol-io/reader/cif/data-model.js +14 -14
  388. package/lib/mol-io/reader/cif/schema.js +1 -1
  389. package/lib/mol-io/reader/cif/text/parser.js +23 -23
  390. package/lib/mol-io/reader/common/text/column/fixed.js +1 -1
  391. package/lib/mol-io/reader/common/text/column/token.js +1 -1
  392. package/lib/mol-io/reader/common/text/number-parser.js +6 -6
  393. package/lib/mol-io/reader/csv/parser.js +8 -8
  394. package/lib/mol-io/writer/cif/encoder/binary.js +10 -10
  395. package/lib/mol-io/writer/cif/encoder/text.js +7 -7
  396. package/lib/mol-io/writer/cif/encoder.js +8 -8
  397. package/lib/mol-io/writer/mol2/encoder.js +4 -4
  398. package/lib/mol-math/geometry/gaussian-density/gpu.js +13 -2
  399. package/lib/mol-model/sequence/alignment/sequence.js +3 -3
  400. package/lib/mol-model/sequence/sequence.js +9 -9
  401. package/lib/mol-model/structure/export/categories/atom_site_operator_mapping.js +3 -3
  402. package/lib/mol-model/structure/export/categories/secondary-structure.js +2 -2
  403. package/lib/mol-model/structure/export/categories/utils.js +1 -1
  404. package/lib/mol-model/structure/model/model.js +2 -2
  405. package/lib/mol-model/structure/model/properties/custom/indexed.js +6 -6
  406. package/lib/mol-model/structure/model/properties/utils/atomic-ranges.js +1 -1
  407. package/lib/mol-model/structure/model/types.js +116 -116
  408. package/lib/mol-model/structure/query/context.js +1 -1
  409. package/lib/mol-model/structure/query/queries/generators.js +5 -5
  410. package/lib/mol-model/structure/query/queries/internal.js +4 -4
  411. package/lib/mol-model/structure/query/queries/modifiers.js +4 -4
  412. package/lib/mol-model/structure/query/utils/structure-distance.d.ts +5 -54
  413. package/lib/mol-model/structure/query/utils/structure-distance.js +9 -9
  414. package/lib/mol-model/structure/structure/carbohydrates/constants.d.ts +3 -1
  415. package/lib/mol-model/structure/structure/carbohydrates/constants.js +190 -107
  416. package/lib/mol-model/structure/structure/element/loci.js +5 -5
  417. package/lib/mol-model/structure/structure/element/stats.js +5 -5
  418. package/lib/mol-model/structure/structure/properties.js +5 -5
  419. package/lib/mol-model/structure/structure/structure.js +11 -11
  420. package/lib/mol-model/structure/structure/unit/bonds/inter-compute.js +5 -5
  421. package/lib/mol-model/structure/structure/unit/bonds/intra-compute.js +4 -4
  422. package/lib/mol-model/structure/structure/unit/bonds.js +2 -2
  423. package/lib/mol-model/structure/structure/unit/resonance.js +1 -1
  424. package/lib/mol-model/structure/structure/unit/rings/compute.js +6 -6
  425. package/lib/mol-model/structure/structure/unit/rings.js +6 -6
  426. package/lib/mol-model/structure/structure/unit.js +16 -16
  427. package/lib/mol-model/structure/structure/util/superposition-sifts-mapping.js +1 -1
  428. package/lib/mol-model/structure/util.js +4 -4
  429. package/lib/mol-model-formats/structure/basic/atomic.js +2 -2
  430. package/lib/mol-model-formats/structure/basic/parser.js +4 -4
  431. package/lib/mol-model-formats/structure/basic/properties.js +1 -1
  432. package/lib/mol-model-formats/structure/basic/sort.js +1 -1
  433. package/lib/mol-model-formats/structure/basic/util.js +1 -1
  434. package/lib/mol-model-formats/structure/cif-core.js +6 -6
  435. package/lib/mol-model-formats/structure/common/entity.js +1 -1
  436. package/lib/mol-model-formats/structure/cube.js +1 -1
  437. package/lib/mol-model-formats/structure/gro.js +1 -1
  438. package/lib/mol-model-formats/structure/mol.js +1 -1
  439. package/lib/mol-model-formats/structure/mol2.js +4 -4
  440. package/lib/mol-model-formats/structure/prmtop.js +1 -1
  441. package/lib/mol-model-formats/structure/property/bonds/chem_comp.js +3 -3
  442. package/lib/mol-model-formats/structure/property/bonds/index-pair.js +1 -1
  443. package/lib/mol-model-formats/structure/property/bonds/struct_conn.js +6 -6
  444. package/lib/mol-model-formats/structure/property/secondary-structure.js +8 -8
  445. package/lib/mol-model-formats/structure/psf.js +1 -1
  446. package/lib/mol-model-formats/structure/top.js +1 -1
  447. package/lib/mol-model-formats/structure/xyz.js +1 -1
  448. package/lib/mol-model-props/computed/accessible-surface-area/shrake-rupley/radii.js +2 -2
  449. package/lib/mol-model-props/computed/accessible-surface-area/shrake-rupley.js +3 -3
  450. package/lib/mol-model-props/computed/accessible-surface-area.js +2 -2
  451. package/lib/mol-model-props/computed/chemistry/functional-group.js +31 -31
  452. package/lib/mol-model-props/computed/chemistry/geometry.js +22 -22
  453. package/lib/mol-model-props/computed/chemistry/valence-model.js +32 -32
  454. package/lib/mol-model-props/computed/interactions/charged.js +39 -39
  455. package/lib/mol-model-props/computed/interactions/common.js +34 -34
  456. package/lib/mol-model-props/computed/interactions/contacts-builder.js +1 -1
  457. package/lib/mol-model-props/computed/interactions/contacts.js +1 -1
  458. package/lib/mol-model-props/computed/interactions/halogen-bonds.js +12 -12
  459. package/lib/mol-model-props/computed/interactions/hydrogen-bonds.js +32 -32
  460. package/lib/mol-model-props/computed/interactions/hydrophobic.js +9 -9
  461. package/lib/mol-model-props/computed/interactions/metal.js +26 -26
  462. package/lib/mol-model-props/computed/interactions/refine.js +20 -20
  463. package/lib/mol-model-props/computed/representations/interactions-inter-unit-cylinder.js +2 -2
  464. package/lib/mol-model-props/computed/representations/interactions-intra-unit-cylinder.js +2 -2
  465. package/lib/mol-model-props/computed/secondary-structure/dssp/bends.js +1 -1
  466. package/lib/mol-model-props/computed/secondary-structure/dssp/bridges.js +12 -12
  467. package/lib/mol-model-props/computed/secondary-structure/dssp/helices.js +6 -6
  468. package/lib/mol-model-props/computed/secondary-structure/dssp/ladders.js +3 -3
  469. package/lib/mol-model-props/computed/secondary-structure/dssp/sheets.js +11 -11
  470. package/lib/mol-model-props/computed/secondary-structure/dssp/turns.js +3 -3
  471. package/lib/mol-model-props/computed/secondary-structure/dssp.js +30 -30
  472. package/lib/mol-model-props/computed/themes/accessible-surface-area.js +1 -1
  473. package/lib/mol-model-props/computed/themes/interaction-type.js +10 -10
  474. package/lib/mol-model-props/integrative/cross-link-restraint/color.js +1 -1
  475. package/lib/mol-model-props/integrative/cross-link-restraint/format.js +3 -3
  476. package/lib/mol-model-props/sequence/sifts-mapping.js +1 -1
  477. package/lib/mol-model-props/sequence/themes/sifts-mapping.js +1 -1
  478. package/lib/mol-plugin/animation-loop.d.ts +2 -1
  479. package/lib/mol-plugin/animation-loop.js +18 -5
  480. package/lib/mol-plugin/behavior/dynamic/camera.js +12 -12
  481. package/lib/mol-plugin/behavior/dynamic/representation.js +7 -7
  482. package/lib/mol-plugin/behavior/dynamic/volume-streaming/model.d.ts +2 -3
  483. package/lib/mol-plugin/config.d.ts +3 -0
  484. package/lib/mol-plugin/config.js +3 -1
  485. package/lib/mol-plugin/context.d.ts +2 -2
  486. package/lib/mol-plugin/context.js +3 -0
  487. package/lib/mol-plugin/state.d.ts +1 -14
  488. package/lib/mol-plugin/version.js +2 -2
  489. package/lib/mol-plugin-state/formats/volume.d.ts +12 -11
  490. package/lib/mol-plugin-state/formats/volume.js +20 -13
  491. package/lib/mol-plugin-state/helpers/structure-selection-query.js +5 -5
  492. package/lib/mol-plugin-state/transforms/representation.js +2 -2
  493. package/lib/mol-plugin-ui/controls/parameters.d.ts +1 -1
  494. package/lib/mol-plugin-ui/controls.js +1 -1
  495. package/lib/mol-plugin-ui/sequence/polymer.js +1 -1
  496. package/lib/mol-plugin-ui/sequence/sequence.js +1 -1
  497. package/lib/mol-plugin-ui/skin/base/base.scss +32 -32
  498. package/lib/mol-plugin-ui/skin/base/components/controls-base.scss +333 -333
  499. package/lib/mol-plugin-ui/skin/base/components/controls.scss +418 -418
  500. package/lib/mol-plugin-ui/skin/base/components/help.scss +27 -27
  501. package/lib/mol-plugin-ui/skin/base/components/line-graph.scss +67 -67
  502. package/lib/mol-plugin-ui/skin/base/components/log.scss +100 -100
  503. package/lib/mol-plugin-ui/skin/base/components/misc.scss +643 -643
  504. package/lib/mol-plugin-ui/skin/base/components/sequence.scss +125 -125
  505. package/lib/mol-plugin-ui/skin/base/components/slider.scss +165 -165
  506. package/lib/mol-plugin-ui/skin/base/components/tasks.scss +99 -99
  507. package/lib/mol-plugin-ui/skin/base/components/toast.scss +83 -83
  508. package/lib/mol-plugin-ui/skin/base/components/transformer.scss +163 -163
  509. package/lib/mol-plugin-ui/skin/base/components/viewport.scss +128 -128
  510. package/lib/mol-plugin-ui/skin/base/layout/common.scss +71 -71
  511. package/lib/mol-plugin-ui/skin/base/layout/controls-landscape.scss +89 -89
  512. package/lib/mol-plugin-ui/skin/base/layout/controls-outside.scss +98 -98
  513. package/lib/mol-plugin-ui/skin/base/layout/controls-portrait.scss +108 -108
  514. package/lib/mol-plugin-ui/skin/base/layout.scss +40 -40
  515. package/lib/mol-plugin-ui/skin/base/logo.scss +12 -12
  516. package/lib/mol-plugin-ui/skin/base/normalize.scss +209 -209
  517. package/lib/mol-plugin-ui/skin/base/ui.scss +40 -40
  518. package/lib/mol-plugin-ui/skin/base/variables.scss +85 -85
  519. package/lib/mol-plugin-ui/skin/blue.scss +1 -1
  520. package/lib/mol-plugin-ui/skin/colors/blue.scss +23 -23
  521. package/lib/mol-plugin-ui/skin/colors/dark.scss +23 -23
  522. package/lib/mol-plugin-ui/skin/colors/light.scss +29 -29
  523. package/lib/mol-plugin-ui/skin/dark.scss +1 -1
  524. package/lib/mol-plugin-ui/skin/light.scss +1 -1
  525. package/lib/mol-plugin-ui/state/snapshots.js +1 -0
  526. package/lib/mol-plugin-ui/structure/focus.js +1 -1
  527. package/lib/mol-plugin-ui/viewport/screenshot.js +1 -0
  528. package/lib/mol-plugin-ui/viewport.d.ts +2 -2
  529. package/lib/mol-repr/shape/representation.d.ts +1 -1
  530. package/lib/mol-repr/shape/representation.js +2 -1
  531. package/lib/mol-repr/structure/complex-visual.d.ts +1 -1
  532. package/lib/mol-repr/structure/complex-visual.js +2 -1
  533. package/lib/mol-repr/structure/units-visual.d.ts +1 -1
  534. package/lib/mol-repr/structure/units-visual.js +2 -1
  535. package/lib/mol-repr/structure/visual/bond-inter-unit-cylinder.js +10 -10
  536. package/lib/mol-repr/structure/visual/bond-inter-unit-line.js +10 -10
  537. package/lib/mol-repr/structure/visual/bond-intra-unit-cylinder.js +12 -15
  538. package/lib/mol-repr/structure/visual/bond-intra-unit-line.js +12 -15
  539. package/lib/mol-repr/structure/visual/carbohydrate-symbol-mesh.js +16 -16
  540. package/lib/mol-repr/structure/visual/carbohydrate-terminal-link-cylinder.js +1 -1
  541. package/lib/mol-repr/structure/visual/gaussian-surface-mesh.js +9 -0
  542. package/lib/mol-repr/structure/visual/orientation-ellipsoid-mesh.js +4 -4
  543. package/lib/mol-repr/structure/visual/polymer-direction-wedge.js +1 -1
  544. package/lib/mol-repr/structure/visual/polymer-trace-mesh.js +2 -2
  545. package/lib/mol-repr/structure/visual/util/bond.js +2 -2
  546. package/lib/mol-repr/structure/visual/util/common.js +3 -3
  547. package/lib/mol-repr/structure/visual/util/link.js +30 -30
  548. package/lib/mol-repr/structure/visual/util/polymer/backbone.js +6 -6
  549. package/lib/mol-repr/structure/visual/util/polymer/gap-iterator.js +3 -3
  550. package/lib/mol-repr/structure/visual/util/polymer/trace-iterator.js +20 -20
  551. package/lib/mol-repr/structure/visual/util/polymer.js +6 -6
  552. package/lib/mol-repr/volume/representation.d.ts +1 -1
  553. package/lib/mol-repr/volume/representation.js +2 -1
  554. package/lib/mol-script/language/builder.d.ts +1 -0
  555. package/lib/mol-script/language/symbol-table/core.d.ts +2 -2
  556. package/lib/mol-script/runtime/query/table.js +13 -13
  557. package/lib/mol-state/object.d.ts +3 -3
  558. package/lib/mol-task/util/user-timing.js +1 -1
  559. package/lib/mol-theme/clipping.js +19 -19
  560. package/lib/mol-theme/color/atom-id.js +1 -1
  561. package/lib/mol-theme/color/carbohydrate-symbol.js +1 -1
  562. package/lib/mol-theme/color/chain-id.js +4 -4
  563. package/lib/mol-theme/color/element-index.js +1 -1
  564. package/lib/mol-theme/color/element-symbol.js +1 -1
  565. package/lib/mol-theme/color/entity-id.js +4 -4
  566. package/lib/mol-theme/color/entity-source.js +5 -4
  567. package/lib/mol-theme/color/hydrophobicity.js +1 -1
  568. package/lib/mol-theme/color/illustrative.js +1 -1
  569. package/lib/mol-theme/color/model-index.js +1 -1
  570. package/lib/mol-theme/color/molecule-type.js +8 -8
  571. package/lib/mol-theme/color/occupancy.js +1 -1
  572. package/lib/mol-theme/color/operator-hkl.js +1 -1
  573. package/lib/mol-theme/color/operator-name.js +1 -1
  574. package/lib/mol-theme/color/partial-charge.js +1 -1
  575. package/lib/mol-theme/color/polymer-id.js +4 -4
  576. package/lib/mol-theme/color/polymer-index.js +1 -1
  577. package/lib/mol-theme/color/residue-name.js +1 -1
  578. package/lib/mol-theme/color/secondary-structure.js +12 -12
  579. package/lib/mol-theme/color/sequence-id.js +7 -7
  580. package/lib/mol-theme/color/shape-group.js +1 -1
  581. package/lib/mol-theme/color/uncertainty.js +1 -1
  582. package/lib/mol-theme/color/uniform.js +1 -1
  583. package/lib/mol-theme/color/unit-index.js +1 -1
  584. package/lib/mol-theme/color/volume-value.js +1 -1
  585. package/lib/mol-theme/label.js +3 -3
  586. package/lib/mol-util/binding.js +4 -4
  587. package/lib/mol-util/debug.d.ts +6 -1
  588. package/lib/mol-util/debug.js +9 -1
  589. package/lib/mol-util/input/input-observer.js +20 -20
  590. package/lib/mol-util/string-builder.js +1 -1
  591. package/lib/servers/model/preprocess/converter.js +1 -1
  592. package/lib/servers/model/server/query.js +1 -1
  593. package/lib/servers/model/utils/fetch-retry.js +3 -2
  594. package/lib/servers/volume/server/algebra/coordinate.js +6 -6
  595. package/lib/servers/volume/server/query/encode.js +1 -1
  596. package/package.json +162 -162
@@ -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
  */
@@ -14,6 +14,7 @@ import { QuadSchema, QuadValues } from '../util';
14
14
  import { quad_vert } from '../../../mol-gl/shader/quad.vert';
15
15
  import { sum_frag } from '../../../mol-gl/shader/histogram-pyramid/sum.frag';
16
16
  import { isWebGL2 } from '../../webgl/compat';
17
+ import { isTimingMode } from '../../../mol-util/debug';
17
18
  var HistopyramidSumSchema = __assign(__assign({}, QuadSchema), { tTexture: TextureSpec('texture', 'rgba', 'float', 'nearest') });
18
19
  var HistopyramidSumName = 'histopyramid-sum';
19
20
  function getHistopyramidSumRenderable(ctx, texture) {
@@ -47,6 +48,8 @@ function setRenderingDefaults(ctx) {
47
48
  var sumBytes = new Uint8Array(4);
48
49
  var sumInts = new Int32Array(4);
49
50
  export function getHistopyramidSum(ctx, pyramidTopTexture) {
51
+ if (isTimingMode)
52
+ ctx.timer.mark('getHistopyramidSum');
50
53
  var gl = ctx.gl, resources = ctx.resources;
51
54
  var renderable = getHistopyramidSumRenderable(ctx, pyramidTopTexture);
52
55
  ctx.state.currentRenderItemId = -1;
@@ -68,6 +71,8 @@ export function getHistopyramidSum(ctx, pyramidTopTexture) {
68
71
  gl.finish();
69
72
  ctx.readPixels(0, 0, 1, 1, isWebGL2(gl) ? sumInts : sumBytes);
70
73
  ctx.unbindFramebuffer();
74
+ if (isTimingMode)
75
+ ctx.timer.markEnd('getHistopyramidSum');
71
76
  return isWebGL2(gl)
72
77
  ? sumInts[0]
73
78
  : 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,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
  */
@@ -13,6 +13,7 @@ import { QuadSchema, QuadValues } from '../util';
13
13
  import { getTriCount } from './tables';
14
14
  import { quad_vert } from '../../../mol-gl/shader/quad.vert';
15
15
  import { activeVoxels_frag } from '../../../mol-gl/shader/marching-cubes/active-voxels.frag';
16
+ import { isTimingMode } from '../../../mol-util/debug';
16
17
  var ActiveVoxelsSchema = __assign(__assign({}, QuadSchema), { tTriCount: TextureSpec('image-uint8', 'alpha', 'ubyte', 'nearest'), tVolumeData: TextureSpec('texture', 'rgba', 'ubyte', 'nearest'), uIsoValue: UniformSpec('f'), uGridDim: UniformSpec('v3'), uGridTexDim: UniformSpec('v3'), uScale: UniformSpec('v2') });
17
18
  var ActiveVoxelsName = 'active-voxels';
18
19
  function getActiveVoxelsRenderable(ctx, volumeData, gridDim, gridTexDim, isoValue, scale) {
@@ -49,6 +50,8 @@ function setRenderingDefaults(ctx) {
49
50
  state.clearColor(0, 0, 0, 0);
50
51
  }
51
52
  export function calcActiveVoxels(ctx, volumeData, gridDim, gridTexDim, isoValue, gridScale) {
53
+ if (isTimingMode)
54
+ ctx.timer.mark('calcActiveVoxels');
52
55
  var gl = ctx.gl, resources = ctx.resources;
53
56
  var width = volumeData.getWidth();
54
57
  var height = volumeData.getHeight();
@@ -75,5 +78,7 @@ export function calcActiveVoxels(ctx, volumeData, gridDim, gridTexDim, isoValue,
75
78
  // console.log('volumeData', volumeData);
76
79
  // console.log('at', readTexture(ctx, activeVoxelsTex));
77
80
  gl.finish();
81
+ if (isTimingMode)
82
+ ctx.timer.markEnd('calcActiveVoxels');
78
83
  return activeVoxelsTex;
79
84
  }
@@ -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,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 @@ import { quad_vert } from '../../../mol-gl/shader/quad.vert';
16
16
  import { isosurface_frag } from '../../../mol-gl/shader/marching-cubes/isosurface.frag';
17
17
  import { calcActiveVoxels } from './active-voxels';
18
18
  import { isWebGL2 } from '../../webgl/compat';
19
+ import { isTimingMode } from '../../../mol-util/debug';
19
20
  var IsosurfaceSchema = __assign(__assign({}, QuadSchema), { tTriIndices: TextureSpec('image-uint8', 'alpha', 'ubyte', 'nearest'), tActiveVoxelsPyramid: TextureSpec('texture', 'rgba', 'float', 'nearest'), tActiveVoxelsBase: TextureSpec('texture', 'rgba', 'float', 'nearest'), tVolumeData: TextureSpec('texture', 'rgba', 'ubyte', 'nearest'), uIsoValue: UniformSpec('f'), uSize: UniformSpec('f'), uLevels: UniformSpec('f'), uCount: UniformSpec('f'), uInvert: UniformSpec('b'), uGridDim: UniformSpec('v3'), uGridTexDim: UniformSpec('v3'), uGridTransform: UniformSpec('m4'), uScale: UniformSpec('v2'), dPackedGroup: DefineSpec('boolean'), dAxisOrder: DefineSpec('string', ['012', '021', '102', '120', '201', '210']) });
20
21
  var IsosurfaceName = 'isosurface';
21
22
  function getIsosurfaceRenderable(ctx, activeVoxelsPyramid, activeVoxelsBase, volumeData, gridDim, gridTexDim, transform, isoValue, levels, scale, count, invert, packedGroup, axisOrder) {
@@ -64,6 +65,8 @@ export function createIsosurfaceBuffers(ctx, activeVoxelsBase, volumeData, histo
64
65
  var drawBuffers = ctx.extensions.drawBuffers;
65
66
  if (!drawBuffers)
66
67
  throw new Error('need WebGL draw buffers');
68
+ if (isTimingMode)
69
+ ctx.timer.mark('createIsosurfaceBuffers');
67
70
  var gl = ctx.gl, resources = ctx.resources, extensions = ctx.extensions;
68
71
  var pyramidTex = histogramPyramid.pyramidTex, height = histogramPyramid.height, levels = histogramPyramid.levels, scale = histogramPyramid.scale, count = histogramPyramid.count;
69
72
  var width = pyramidTex.getWidth();
@@ -121,6 +124,8 @@ export function createIsosurfaceBuffers(ctx, activeVoxelsBase, volumeData, histo
121
124
  gl.clear(gl.COLOR_BUFFER_BIT);
122
125
  renderable.render();
123
126
  gl.finish();
127
+ if (isTimingMode)
128
+ ctx.timer.markEnd('createIsosurfaceBuffers');
124
129
  return { vertexTexture: vertexTexture, groupTexture: groupTexture, normalTexture: normalTexture, vertexCount: count };
125
130
  }
126
131
  //
@@ -134,17 +139,12 @@ export function createIsosurfaceBuffers(ctx, activeVoxelsBase, volumeData, histo
134
139
  * Implementation based on http://www.miaumiau.cat/2016/10/stream-compaction-in-webgl/
135
140
  */
136
141
  export function extractIsosurface(ctx, volumeData, gridDim, gridTexDim, gridTexScale, transform, isoValue, invert, packedGroup, axisOrder, vertexTexture, groupTexture, normalTexture) {
137
- // console.time('calcActiveVoxels');
142
+ if (isTimingMode)
143
+ ctx.timer.mark('extractIsosurface');
138
144
  var activeVoxelsTex = calcActiveVoxels(ctx, volumeData, gridDim, gridTexDim, isoValue, gridTexScale);
139
- // ctx.waitForGpuCommandsCompleteSync();
140
- // console.timeEnd('calcActiveVoxels');
141
- // console.time('createHistogramPyramid');
142
145
  var compacted = createHistogramPyramid(ctx, activeVoxelsTex, gridTexScale, gridTexDim);
143
- // ctx.waitForGpuCommandsCompleteSync();
144
- // console.timeEnd('createHistogramPyramid');
145
- // console.time('createIsosurfaceBuffers');
146
146
  var gv = createIsosurfaceBuffers(ctx, activeVoxelsTex, volumeData, compacted, gridDim, gridTexDim, transform, isoValue, invert, packedGroup, axisOrder, vertexTexture, groupTexture, normalTexture);
147
- // ctx.waitForGpuCommandsCompleteSync();
148
- // console.timeEnd('createIsosurfaceBuffers');
147
+ if (isTimingMode)
148
+ ctx.timer.markEnd('extractIsosurface');
149
149
  return gv;
150
150
  }
@@ -11,6 +11,7 @@ import { ParamDefinition as PD } from '../mol-util/param-definition';
11
11
  import { degToRad } from '../mol-math/misc';
12
12
  import { arrayMapUpsert } from '../mol-util/array';
13
13
  import { clamp } from '../mol-math/interpolate';
14
+ import { isTimingMode } from '../mol-util/debug';
14
15
  export var RendererParams = {
15
16
  backgroundColor: PD.Color(Color(0x000000), { description: 'Background color of the 3D canvas' }),
16
17
  pickingAlphaThreshold: PD.Numeric(0.5, { min: 0.0, max: 1.0, step: 0.01 }, { description: 'The minimum opacity value needed for an object to be pickable.' }),
@@ -105,8 +106,8 @@ var Renderer;
105
106
  uFogColor: ValueCell.create(bgColor),
106
107
  uRenderMask: ValueCell.create(0),
107
108
  uMarkingDepthTest: ValueCell.create(false),
108
- uPickType: ValueCell.create(0 /* None */),
109
- uMarkingType: ValueCell.create(0 /* None */),
109
+ uPickType: ValueCell.create(0 /* PickType.None */),
110
+ uMarkingType: ValueCell.create(0 /* MarkingType.None */),
110
111
  uTransparentBackground: ValueCell.create(false),
111
112
  uLightDirection: ValueCell.create(light.direction),
112
113
  uLightColor: ValueCell.create(light.color),
@@ -160,7 +161,7 @@ var Renderer;
160
161
  state.depthMask(false);
161
162
  }
162
163
  }
163
- else if (flag === 1 /* BlendedFront */) {
164
+ else if (flag === 1 /* Flag.BlendedFront */) {
164
165
  state.enable(gl.CULL_FACE);
165
166
  if ((_a = r.values.dFlipSided) === null || _a === void 0 ? void 0 : _a.ref.value) {
166
167
  state.frontFace(gl.CW);
@@ -171,7 +172,7 @@ var Renderer;
171
172
  state.cullFace(gl.BACK);
172
173
  }
173
174
  }
174
- else if (flag === 2 /* BlendedBack */) {
175
+ else if (flag === 2 /* Flag.BlendedBack */) {
175
176
  state.enable(gl.CULL_FACE);
176
177
  if ((_b = r.values.dFlipSided) === null || _b === void 0 ? void 0 : _b.ref.value) {
177
178
  state.frontFace(gl.CW);
@@ -240,83 +241,107 @@ var Renderer;
240
241
  state.currentRenderItemId = -1;
241
242
  };
242
243
  var renderPick = function (group, camera, variant, depthTexture, pickType) {
244
+ if (isTimingMode)
245
+ ctx.timer.mark('Renderer.renderPick');
243
246
  state.disable(gl.BLEND);
244
247
  state.enable(gl.DEPTH_TEST);
245
248
  state.depthMask(true);
246
- updateInternal(group, camera, depthTexture, 0 /* All */, false);
249
+ updateInternal(group, camera, depthTexture, 0 /* Mask.All */, false);
247
250
  ValueCell.updateIfChanged(globalUniforms.uPickType, pickType);
248
251
  var renderables = group.renderables;
249
252
  for (var i = 0, il = renderables.length; i < il; ++i) {
250
253
  if (!renderables[i].state.colorOnly) {
251
- renderObject(renderables[i], variant, 0 /* None */);
254
+ renderObject(renderables[i], variant, 0 /* Flag.None */);
252
255
  }
253
256
  }
257
+ if (isTimingMode)
258
+ ctx.timer.markEnd('Renderer.renderPick');
254
259
  };
255
260
  var renderDepth = function (group, camera, depthTexture) {
261
+ if (isTimingMode)
262
+ ctx.timer.mark('Renderer.renderDepth');
256
263
  state.disable(gl.BLEND);
257
264
  state.enable(gl.DEPTH_TEST);
258
265
  state.depthMask(true);
259
- updateInternal(group, camera, depthTexture, 0 /* All */, false);
266
+ updateInternal(group, camera, depthTexture, 0 /* Mask.All */, false);
260
267
  var renderables = group.renderables;
261
268
  for (var i = 0, il = renderables.length; i < il; ++i) {
262
- renderObject(renderables[i], 'depth', 0 /* None */);
269
+ renderObject(renderables[i], 'depth', 0 /* Flag.None */);
263
270
  }
271
+ if (isTimingMode)
272
+ ctx.timer.markEnd('Renderer.renderDepth');
264
273
  };
265
274
  var renderDepthOpaque = function (group, camera, depthTexture) {
266
275
  var _a;
276
+ if (isTimingMode)
277
+ ctx.timer.mark('Renderer.renderDepthOpaque');
267
278
  state.disable(gl.BLEND);
268
279
  state.enable(gl.DEPTH_TEST);
269
280
  state.depthMask(true);
270
- updateInternal(group, camera, depthTexture, 1 /* Opaque */, false);
281
+ updateInternal(group, camera, depthTexture, 1 /* Mask.Opaque */, false);
271
282
  var renderables = group.renderables;
272
283
  for (var i = 0, il = renderables.length; i < il; ++i) {
273
284
  var r = renderables[i];
274
285
  if (r.state.opaque && r.values.transparencyAverage.ref.value !== 1 && !((_a = r.values.dXrayShaded) === null || _a === void 0 ? void 0 : _a.ref.value)) {
275
- renderObject(r, 'depth', 0 /* None */);
286
+ renderObject(r, 'depth', 0 /* Flag.None */);
276
287
  }
277
288
  }
289
+ if (isTimingMode)
290
+ ctx.timer.markEnd('Renderer.renderDepthOpaque');
278
291
  };
279
292
  var renderDepthTransparent = function (group, camera, depthTexture) {
280
293
  var _a;
294
+ if (isTimingMode)
295
+ ctx.timer.mark('Renderer.renderDepthTransparent');
281
296
  state.disable(gl.BLEND);
282
297
  state.enable(gl.DEPTH_TEST);
283
298
  state.depthMask(true);
284
- updateInternal(group, camera, depthTexture, 2 /* Transparent */, false);
299
+ updateInternal(group, camera, depthTexture, 2 /* Mask.Transparent */, false);
285
300
  var renderables = group.renderables;
286
301
  for (var i = 0, il = renderables.length; i < il; ++i) {
287
302
  var r = renderables[i];
288
303
  if (!r.state.opaque || r.values.transparencyAverage.ref.value > 0 || ((_a = r.values.dXrayShaded) === null || _a === void 0 ? void 0 : _a.ref.value)) {
289
- renderObject(r, 'depth', 0 /* None */);
304
+ renderObject(r, 'depth', 0 /* Flag.None */);
290
305
  }
291
306
  }
307
+ if (isTimingMode)
308
+ ctx.timer.markEnd('Renderer.renderDepthTransparent');
292
309
  };
293
310
  var renderMarkingDepth = function (group, camera, depthTexture) {
311
+ if (isTimingMode)
312
+ ctx.timer.mark('Renderer.renderMarkingDepth');
294
313
  state.disable(gl.BLEND);
295
314
  state.enable(gl.DEPTH_TEST);
296
315
  state.depthMask(true);
297
- updateInternal(group, camera, depthTexture, 0 /* All */, false);
298
- ValueCell.updateIfChanged(globalUniforms.uMarkingType, 1 /* Depth */);
316
+ updateInternal(group, camera, depthTexture, 0 /* Mask.All */, false);
317
+ ValueCell.updateIfChanged(globalUniforms.uMarkingType, 1 /* MarkingType.Depth */);
299
318
  var renderables = group.renderables;
300
319
  for (var i = 0, il = renderables.length; i < il; ++i) {
301
320
  var r = renderables[i];
302
321
  if (r.values.markerAverage.ref.value !== 1) {
303
- renderObject(renderables[i], 'marking', 0 /* None */);
322
+ renderObject(renderables[i], 'marking', 0 /* Flag.None */);
304
323
  }
305
324
  }
325
+ if (isTimingMode)
326
+ ctx.timer.markEnd('Renderer.renderMarkingDepth');
306
327
  };
307
328
  var renderMarkingMask = function (group, camera, depthTexture) {
329
+ if (isTimingMode)
330
+ ctx.timer.mark('Renderer.renderMarkingMask');
308
331
  state.disable(gl.BLEND);
309
332
  state.enable(gl.DEPTH_TEST);
310
333
  state.depthMask(true);
311
- updateInternal(group, camera, depthTexture, 0 /* All */, !!depthTexture);
312
- ValueCell.updateIfChanged(globalUniforms.uMarkingType, 2 /* Mask */);
334
+ updateInternal(group, camera, depthTexture, 0 /* Mask.All */, !!depthTexture);
335
+ ValueCell.updateIfChanged(globalUniforms.uMarkingType, 2 /* MarkingType.Mask */);
313
336
  var renderables = group.renderables;
314
337
  for (var i = 0, il = renderables.length; i < il; ++i) {
315
338
  var r = renderables[i];
316
339
  if (r.values.markerAverage.ref.value > 0) {
317
- renderObject(renderables[i], 'marking', 0 /* None */);
340
+ renderObject(renderables[i], 'marking', 0 /* Flag.None */);
318
341
  }
319
342
  }
343
+ if (isTimingMode)
344
+ ctx.timer.markEnd('Renderer.renderMarkingMask');
320
345
  };
321
346
  var renderBlended = function (group, camera, depthTexture) {
322
347
  renderBlendedOpaque(group, camera, depthTexture);
@@ -324,25 +349,31 @@ var Renderer;
324
349
  };
325
350
  var renderBlendedOpaque = function (group, camera, depthTexture) {
326
351
  var _a, _b;
352
+ if (isTimingMode)
353
+ ctx.timer.mark('Renderer.renderBlendedOpaque');
327
354
  state.disable(gl.BLEND);
328
355
  state.enable(gl.DEPTH_TEST);
329
356
  state.depthMask(true);
330
- updateInternal(group, camera, depthTexture, 1 /* Opaque */, false);
357
+ updateInternal(group, camera, depthTexture, 1 /* Mask.Opaque */, false);
331
358
  var renderables = group.renderables;
332
359
  for (var i = 0, il = renderables.length; i < il; ++i) {
333
360
  var r = renderables[i];
334
361
  if (r.state.opaque) {
335
- renderObject(r, 'colorBlended', 0 /* None */);
362
+ renderObject(r, 'colorBlended', 0 /* Flag.None */);
336
363
  }
337
364
  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') {
338
- renderObject(r, 'colorBlended', 2 /* BlendedBack */);
365
+ renderObject(r, 'colorBlended', 2 /* Flag.BlendedBack */);
339
366
  }
340
367
  }
368
+ if (isTimingMode)
369
+ ctx.timer.markEnd('Renderer.renderBlendedOpaque');
341
370
  };
342
371
  var renderBlendedTransparent = function (group, camera, depthTexture) {
343
372
  var _a, _b;
373
+ if (isTimingMode)
374
+ ctx.timer.mark('Renderer.renderBlendedTransparent');
344
375
  state.enable(gl.DEPTH_TEST);
345
- updateInternal(group, camera, depthTexture, 2 /* Transparent */, false);
376
+ updateInternal(group, camera, depthTexture, 2 /* Mask.Transparent */, false);
346
377
  var renderables = group.renderables;
347
378
  if (transparentBackground) {
348
379
  state.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
@@ -355,7 +386,7 @@ var Renderer;
355
386
  for (var i = 0, il = renderables.length; i < il; ++i) {
356
387
  var r = renderables[i];
357
388
  if (!r.state.opaque && r.state.writeDepth) {
358
- renderObject(r, 'colorBlended', 0 /* None */);
389
+ renderObject(r, 'colorBlended', 0 /* Flag.None */);
359
390
  }
360
391
  }
361
392
  state.depthMask(false);
@@ -365,34 +396,42 @@ var Renderer;
365
396
  if ((_a = r.values.uDoubleSided) === null || _a === void 0 ? void 0 : _a.ref.value) {
366
397
  // render frontfaces and backfaces separately to avoid artefacts
367
398
  if (((_b = r.values.dTransparentBackfaces) === null || _b === void 0 ? void 0 : _b.ref.value) !== 'opaque') {
368
- renderObject(r, 'colorBlended', 2 /* BlendedBack */);
399
+ renderObject(r, 'colorBlended', 2 /* Flag.BlendedBack */);
369
400
  }
370
- renderObject(r, 'colorBlended', 1 /* BlendedFront */);
401
+ renderObject(r, 'colorBlended', 1 /* Flag.BlendedFront */);
371
402
  }
372
403
  else {
373
- renderObject(r, 'colorBlended', 0 /* None */);
404
+ renderObject(r, 'colorBlended', 0 /* Flag.None */);
374
405
  }
375
406
  }
376
407
  }
408
+ if (isTimingMode)
409
+ ctx.timer.markEnd('Renderer.renderBlendedTransparent');
377
410
  };
378
411
  var renderBlendedVolume = function (group, camera, depthTexture) {
412
+ if (isTimingMode)
413
+ ctx.timer.mark('Renderer.renderBlendedVolume');
379
414
  state.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
380
415
  state.enable(gl.BLEND);
381
- updateInternal(group, camera, depthTexture, 2 /* Transparent */, false);
416
+ updateInternal(group, camera, depthTexture, 2 /* Mask.Transparent */, false);
382
417
  var renderables = group.renderables;
383
418
  for (var i = 0, il = renderables.length; i < il; ++i) {
384
419
  var r = renderables[i];
385
420
  if (r.values.dGeometryType.ref.value === 'directVolume') {
386
- renderObject(r, 'colorBlended', 0 /* None */);
421
+ renderObject(r, 'colorBlended', 0 /* Flag.None */);
387
422
  }
388
423
  }
424
+ if (isTimingMode)
425
+ ctx.timer.markEnd('Renderer.renderBlendedVolume');
389
426
  };
390
427
  var renderWboitOpaque = function (group, camera, depthTexture) {
391
428
  var _a, _b, _c;
429
+ if (isTimingMode)
430
+ ctx.timer.mark('Renderer.renderWboitOpaque');
392
431
  state.disable(gl.BLEND);
393
432
  state.enable(gl.DEPTH_TEST);
394
433
  state.depthMask(true);
395
- updateInternal(group, camera, depthTexture, 1 /* Opaque */, false);
434
+ updateInternal(group, camera, depthTexture, 1 /* Mask.Opaque */, false);
396
435
  var renderables = group.renderables;
397
436
  for (var i = 0, il = renderables.length; i < il; ++i) {
398
437
  var r = renderables[i];
@@ -400,13 +439,17 @@ var Renderer;
400
439
  // uAlpha is updated in "render" so we need to recompute it here
401
440
  var alpha = clamp(r.values.alpha.ref.value * r.state.alphaFactor, 0, 1);
402
441
  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') {
403
- renderObject(r, 'colorWboit', 0 /* None */);
442
+ renderObject(r, 'colorWboit', 0 /* Flag.None */);
404
443
  }
405
444
  }
445
+ if (isTimingMode)
446
+ ctx.timer.markEnd('Renderer.renderWboitOpaque');
406
447
  };
407
448
  var renderWboitTransparent = function (group, camera, depthTexture) {
408
449
  var _a, _b;
409
- updateInternal(group, camera, depthTexture, 2 /* Transparent */, false);
450
+ if (isTimingMode)
451
+ ctx.timer.mark('Renderer.renderWboitTransparent');
452
+ updateInternal(group, camera, depthTexture, 2 /* Mask.Transparent */, false);
410
453
  var renderables = group.renderables;
411
454
  for (var i = 0, il = renderables.length; i < il; ++i) {
412
455
  var r = renderables[i];
@@ -414,9 +457,11 @@ var Renderer;
414
457
  // uAlpha is updated in "render" so we need to recompute it here
415
458
  var alpha = clamp(r.values.alpha.ref.value * r.state.alphaFactor, 0, 1);
416
459
  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)) {
417
- renderObject(r, 'colorWboit', 0 /* None */);
460
+ renderObject(r, 'colorWboit', 0 /* Flag.None */);
418
461
  }
419
462
  }
463
+ if (isTimingMode)
464
+ ctx.timer.markEnd('Renderer.renderWboitTransparent');
420
465
  };
421
466
  return {
422
467
  clear: function (toBackgroundColor, ignoreTransparentBackground) {
@@ -229,6 +229,8 @@ var Scene;
229
229
  renderables[i].dispose();
230
230
  }
231
231
  renderables.length = 0;
232
+ primitives.length = 0;
233
+ volumes.length = 0;
232
234
  renderableMap.clear();
233
235
  boundingSphereDirty = true;
234
236
  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";
@@ -1 +1 @@
1
- export var 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 var 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";
@@ -1 +1 @@
1
- export declare const assign_material_color = "\n#if defined(dRenderVariant_color) || defined(dRenderVariant_marking)\n float marker = uMarker;\n if (uMarker == -1.0) {\n marker = floor(vMarker * 255.0 + 0.5); // rounding required to work on some cards on win\n }\n#endif\n\n#if defined(dRenderVariant_color)\n #if defined(dUsePalette)\n vec4 material = vec4(texture2D(tPalette, vec2(vPaletteV, 0.5)).rgb, uAlpha);\n #elif defined(dColorType_uniform)\n vec4 material = vec4(uColor, uAlpha);\n #elif defined(dColorType_varying)\n vec4 material = vec4(vColor.rgb, uAlpha);\n #endif\n\n // mix material with overpaint\n #if defined(dOverpaint)\n material.rgb = mix(material.rgb, vOverpaint.rgb, vOverpaint.a);\n #endif\n\n float metalness = uMetalness;\n float roughness = uRoughness;\n float bumpiness = uBumpiness;\n #ifdef dSubstance\n metalness = mix(metalness, vSubstance.r, vSubstance.a);\n roughness = mix(roughness, vSubstance.g, vSubstance.a);\n bumpiness = mix(bumpiness, vSubstance.b, vSubstance.a);\n #endif\n#elif defined(dRenderVariant_pick)\n vec4 material = vColor;\n#elif defined(dRenderVariant_depth)\n if (fragmentDepth > getDepth(gl_FragCoord.xy / uDrawingBufferSize)) {\n discard;\n }\n\n #ifndef dXrayShaded\n #if defined(dTransparency)\n float dta = 1.0 - vTransparency;\n if (vTransparency < 0.2) dta = 1.0; // hard cutoff looks better\n\n if (uRenderMask == MaskTransparent && uAlpha * dta == 1.0) {\n discard;\n } else if (uRenderMask == MaskOpaque && uAlpha * dta < 1.0) {\n discard;\n }\n #else\n if (uRenderMask == MaskTransparent && uAlpha == 1.0) {\n discard;\n } else if (uRenderMask == MaskOpaque && uAlpha < 1.0) {\n discard;\n }\n #endif\n #else\n if (uRenderMask == MaskOpaque) {\n discard;\n }\n #endif\n\n vec4 material = packDepthToRGBA(fragmentDepth);\n#elif defined(dRenderVariant_marking)\n vec4 material;\n if(uMarkingType == 1) {\n if (marker > 0.0)\n discard;\n #ifdef enabledFragDepth\n material = packDepthToRGBA(gl_FragDepthEXT);\n #else\n material = packDepthToRGBA(gl_FragCoord.z);\n #endif\n } else {\n if (marker == 0.0)\n discard;\n float depthTest = 1.0;\n if (uMarkingDepthTest) {\n depthTest = (fragmentDepth >= getDepthPacked(gl_FragCoord.xy / uDrawingBufferSize)) ? 1.0 : 0.0;\n }\n bool isHighlight = intMod(marker, 2.0) > 0.1;\n float viewZ = depthToViewZ(uIsOrtho, fragmentDepth, uNear, uFar);\n float fogFactor = smoothstep(uFogNear, uFogFar, abs(viewZ));\n if (fogFactor == 1.0)\n discard;\n material = vec4(0.0, depthTest, isHighlight ? 1.0 : 0.0, 1.0 - fogFactor);\n }\n#endif\n\n// apply per-group transparency\n#if defined(dTransparency) && (defined(dRenderVariant_pick) || defined(dRenderVariant_color))\n float ta = 1.0 - vTransparency;\n if (vTransparency < 0.2) ta = 1.0; // hard cutoff looks better\n\n #if defined(dRenderVariant_pick)\n if (ta < uPickingAlphaThreshold)\n discard; // ignore so the element below can be picked\n #elif defined(dRenderVariant_color)\n material.a *= ta;\n\n #if defined(dRenderVariant_colorBlended)\n #if defined(dTransparentBackfaces_off)\n if ((uRenderMask == MaskOpaque && material.a < 1.0) ||\n (uRenderMask == MaskTransparent && material.a == 1.0) ||\n (interior && material.a < 1.0)\n ) {\n discard;\n }\n #elif defined(dTransparentBackfaces_on)\n if ((uRenderMask == MaskOpaque && material.a < 1.0) ||\n (uRenderMask == MaskTransparent && material.a == 1.0)\n ) {\n discard;\n }\n #elif defined(dTransparentBackfaces_opaque)\n if (interior) {\n material.a = 1.0;\n } else if (\n (uRenderMask == MaskOpaque && material.a < 1.0) ||\n (uRenderMask == MaskTransparent && material.a == 1.0)\n ) {\n discard;\n }\n #endif\n #endif\n #endif\n#endif\n";
1
+ export declare const assign_material_color = "\n#if defined(dRenderVariant_color) || defined(dRenderVariant_marking)\n float marker = uMarker;\n if (uMarker == -1.0) {\n marker = floor(vMarker * 255.0 + 0.5); // rounding required to work on some cards on win\n }\n#endif\n\n#if defined(dRenderVariant_color)\n #if defined(dUsePalette)\n vec4 material = vec4(texture2D(tPalette, vec2(vPaletteV, 0.5)).rgb, uAlpha);\n #elif defined(dColorType_uniform)\n vec4 material = vec4(uColor, uAlpha);\n #elif defined(dColorType_varying)\n vec4 material = vec4(vColor.rgb, uAlpha);\n #endif\n\n // mix material with overpaint\n #if defined(dOverpaint)\n material.rgb = mix(material.rgb, vOverpaint.rgb, vOverpaint.a);\n #endif\n\n float metalness = uMetalness;\n float roughness = uRoughness;\n float bumpiness = uBumpiness;\n #ifdef dSubstance\n metalness = mix(metalness, vSubstance.r, vSubstance.a);\n roughness = mix(roughness, vSubstance.g, vSubstance.a);\n bumpiness = mix(bumpiness, vSubstance.b, vSubstance.a);\n #endif\n#elif defined(dRenderVariant_depth)\n if (fragmentDepth > getDepth(gl_FragCoord.xy / uDrawingBufferSize)) {\n discard;\n }\n\n #ifndef dXrayShaded\n #if defined(dTransparency)\n float dta = 1.0 - vTransparency;\n if (vTransparency < 0.2) dta = 1.0; // hard cutoff looks better\n\n if (uRenderMask == MaskTransparent && uAlpha * dta == 1.0) {\n discard;\n } else if (uRenderMask == MaskOpaque && uAlpha * dta < 1.0) {\n discard;\n }\n #else\n if (uRenderMask == MaskTransparent && uAlpha == 1.0) {\n discard;\n } else if (uRenderMask == MaskOpaque && uAlpha < 1.0) {\n discard;\n }\n #endif\n #else\n if (uRenderMask == MaskOpaque) {\n discard;\n }\n #endif\n\n vec4 material = packDepthToRGBA(fragmentDepth);\n#elif defined(dRenderVariant_marking)\n vec4 material;\n if(uMarkingType == 1) {\n if (marker > 0.0)\n discard;\n #ifdef enabledFragDepth\n material = packDepthToRGBA(gl_FragDepthEXT);\n #else\n material = packDepthToRGBA(gl_FragCoord.z);\n #endif\n } else {\n if (marker == 0.0)\n discard;\n float depthTest = 1.0;\n if (uMarkingDepthTest) {\n depthTest = (fragmentDepth >= getDepthPacked(gl_FragCoord.xy / uDrawingBufferSize)) ? 1.0 : 0.0;\n }\n bool isHighlight = intMod(marker, 2.0) > 0.1;\n float viewZ = depthToViewZ(uIsOrtho, fragmentDepth, uNear, uFar);\n float fogFactor = smoothstep(uFogNear, uFogFar, abs(viewZ));\n if (fogFactor == 1.0)\n discard;\n material = vec4(0.0, depthTest, isHighlight ? 1.0 : 0.0, 1.0 - fogFactor);\n }\n#endif\n\n// apply per-group transparency\n#if defined(dTransparency) && (defined(dRenderVariant_pick) || defined(dRenderVariant_color))\n float ta = 1.0 - vTransparency;\n if (vTransparency < 0.2) ta = 1.0; // hard cutoff looks better\n\n #if defined(dRenderVariant_pick)\n if (ta < uPickingAlphaThreshold)\n discard; // ignore so the element below can be picked\n #elif defined(dRenderVariant_color)\n material.a *= ta;\n\n #if defined(dRenderVariant_colorBlended)\n #if defined(dTransparentBackfaces_off)\n if ((uRenderMask == MaskOpaque && material.a < 1.0) ||\n (uRenderMask == MaskTransparent && material.a == 1.0) ||\n (interior && material.a < 1.0)\n ) {\n discard;\n }\n #elif defined(dTransparentBackfaces_on)\n if ((uRenderMask == MaskOpaque && material.a < 1.0) ||\n (uRenderMask == MaskTransparent && material.a == 1.0)\n ) {\n discard;\n }\n #elif defined(dTransparentBackfaces_opaque)\n if (interior) {\n material.a = 1.0;\n } else if (\n (uRenderMask == MaskOpaque && material.a < 1.0) ||\n (uRenderMask == MaskTransparent && material.a == 1.0)\n ) {\n discard;\n }\n #endif\n #endif\n #endif\n#endif\n";
@@ -1 +1 @@
1
- export var assign_material_color = "\n#if defined(dRenderVariant_color) || defined(dRenderVariant_marking)\n float marker = uMarker;\n if (uMarker == -1.0) {\n marker = floor(vMarker * 255.0 + 0.5); // rounding required to work on some cards on win\n }\n#endif\n\n#if defined(dRenderVariant_color)\n #if defined(dUsePalette)\n vec4 material = vec4(texture2D(tPalette, vec2(vPaletteV, 0.5)).rgb, uAlpha);\n #elif defined(dColorType_uniform)\n vec4 material = vec4(uColor, uAlpha);\n #elif defined(dColorType_varying)\n vec4 material = vec4(vColor.rgb, uAlpha);\n #endif\n\n // mix material with overpaint\n #if defined(dOverpaint)\n material.rgb = mix(material.rgb, vOverpaint.rgb, vOverpaint.a);\n #endif\n\n float metalness = uMetalness;\n float roughness = uRoughness;\n float bumpiness = uBumpiness;\n #ifdef dSubstance\n metalness = mix(metalness, vSubstance.r, vSubstance.a);\n roughness = mix(roughness, vSubstance.g, vSubstance.a);\n bumpiness = mix(bumpiness, vSubstance.b, vSubstance.a);\n #endif\n#elif defined(dRenderVariant_pick)\n vec4 material = vColor;\n#elif defined(dRenderVariant_depth)\n if (fragmentDepth > getDepth(gl_FragCoord.xy / uDrawingBufferSize)) {\n discard;\n }\n\n #ifndef dXrayShaded\n #if defined(dTransparency)\n float dta = 1.0 - vTransparency;\n if (vTransparency < 0.2) dta = 1.0; // hard cutoff looks better\n\n if (uRenderMask == MaskTransparent && uAlpha * dta == 1.0) {\n discard;\n } else if (uRenderMask == MaskOpaque && uAlpha * dta < 1.0) {\n discard;\n }\n #else\n if (uRenderMask == MaskTransparent && uAlpha == 1.0) {\n discard;\n } else if (uRenderMask == MaskOpaque && uAlpha < 1.0) {\n discard;\n }\n #endif\n #else\n if (uRenderMask == MaskOpaque) {\n discard;\n }\n #endif\n\n vec4 material = packDepthToRGBA(fragmentDepth);\n#elif defined(dRenderVariant_marking)\n vec4 material;\n if(uMarkingType == 1) {\n if (marker > 0.0)\n discard;\n #ifdef enabledFragDepth\n material = packDepthToRGBA(gl_FragDepthEXT);\n #else\n material = packDepthToRGBA(gl_FragCoord.z);\n #endif\n } else {\n if (marker == 0.0)\n discard;\n float depthTest = 1.0;\n if (uMarkingDepthTest) {\n depthTest = (fragmentDepth >= getDepthPacked(gl_FragCoord.xy / uDrawingBufferSize)) ? 1.0 : 0.0;\n }\n bool isHighlight = intMod(marker, 2.0) > 0.1;\n float viewZ = depthToViewZ(uIsOrtho, fragmentDepth, uNear, uFar);\n float fogFactor = smoothstep(uFogNear, uFogFar, abs(viewZ));\n if (fogFactor == 1.0)\n discard;\n material = vec4(0.0, depthTest, isHighlight ? 1.0 : 0.0, 1.0 - fogFactor);\n }\n#endif\n\n// apply per-group transparency\n#if defined(dTransparency) && (defined(dRenderVariant_pick) || defined(dRenderVariant_color))\n float ta = 1.0 - vTransparency;\n if (vTransparency < 0.2) ta = 1.0; // hard cutoff looks better\n\n #if defined(dRenderVariant_pick)\n if (ta < uPickingAlphaThreshold)\n discard; // ignore so the element below can be picked\n #elif defined(dRenderVariant_color)\n material.a *= ta;\n\n #if defined(dRenderVariant_colorBlended)\n #if defined(dTransparentBackfaces_off)\n if ((uRenderMask == MaskOpaque && material.a < 1.0) ||\n (uRenderMask == MaskTransparent && material.a == 1.0) ||\n (interior && material.a < 1.0)\n ) {\n discard;\n }\n #elif defined(dTransparentBackfaces_on)\n if ((uRenderMask == MaskOpaque && material.a < 1.0) ||\n (uRenderMask == MaskTransparent && material.a == 1.0)\n ) {\n discard;\n }\n #elif defined(dTransparentBackfaces_opaque)\n if (interior) {\n material.a = 1.0;\n } else if (\n (uRenderMask == MaskOpaque && material.a < 1.0) ||\n (uRenderMask == MaskTransparent && material.a == 1.0)\n ) {\n discard;\n }\n #endif\n #endif\n #endif\n#endif\n";
1
+ export var assign_material_color = "\n#if defined(dRenderVariant_color) || defined(dRenderVariant_marking)\n float marker = uMarker;\n if (uMarker == -1.0) {\n marker = floor(vMarker * 255.0 + 0.5); // rounding required to work on some cards on win\n }\n#endif\n\n#if defined(dRenderVariant_color)\n #if defined(dUsePalette)\n vec4 material = vec4(texture2D(tPalette, vec2(vPaletteV, 0.5)).rgb, uAlpha);\n #elif defined(dColorType_uniform)\n vec4 material = vec4(uColor, uAlpha);\n #elif defined(dColorType_varying)\n vec4 material = vec4(vColor.rgb, uAlpha);\n #endif\n\n // mix material with overpaint\n #if defined(dOverpaint)\n material.rgb = mix(material.rgb, vOverpaint.rgb, vOverpaint.a);\n #endif\n\n float metalness = uMetalness;\n float roughness = uRoughness;\n float bumpiness = uBumpiness;\n #ifdef dSubstance\n metalness = mix(metalness, vSubstance.r, vSubstance.a);\n roughness = mix(roughness, vSubstance.g, vSubstance.a);\n bumpiness = mix(bumpiness, vSubstance.b, vSubstance.a);\n #endif\n#elif defined(dRenderVariant_depth)\n if (fragmentDepth > getDepth(gl_FragCoord.xy / uDrawingBufferSize)) {\n discard;\n }\n\n #ifndef dXrayShaded\n #if defined(dTransparency)\n float dta = 1.0 - vTransparency;\n if (vTransparency < 0.2) dta = 1.0; // hard cutoff looks better\n\n if (uRenderMask == MaskTransparent && uAlpha * dta == 1.0) {\n discard;\n } else if (uRenderMask == MaskOpaque && uAlpha * dta < 1.0) {\n discard;\n }\n #else\n if (uRenderMask == MaskTransparent && uAlpha == 1.0) {\n discard;\n } else if (uRenderMask == MaskOpaque && uAlpha < 1.0) {\n discard;\n }\n #endif\n #else\n if (uRenderMask == MaskOpaque) {\n discard;\n }\n #endif\n\n vec4 material = packDepthToRGBA(fragmentDepth);\n#elif defined(dRenderVariant_marking)\n vec4 material;\n if(uMarkingType == 1) {\n if (marker > 0.0)\n discard;\n #ifdef enabledFragDepth\n material = packDepthToRGBA(gl_FragDepthEXT);\n #else\n material = packDepthToRGBA(gl_FragCoord.z);\n #endif\n } else {\n if (marker == 0.0)\n discard;\n float depthTest = 1.0;\n if (uMarkingDepthTest) {\n depthTest = (fragmentDepth >= getDepthPacked(gl_FragCoord.xy / uDrawingBufferSize)) ? 1.0 : 0.0;\n }\n bool isHighlight = intMod(marker, 2.0) > 0.1;\n float viewZ = depthToViewZ(uIsOrtho, fragmentDepth, uNear, uFar);\n float fogFactor = smoothstep(uFogNear, uFogFar, abs(viewZ));\n if (fogFactor == 1.0)\n discard;\n material = vec4(0.0, depthTest, isHighlight ? 1.0 : 0.0, 1.0 - fogFactor);\n }\n#endif\n\n// apply per-group transparency\n#if defined(dTransparency) && (defined(dRenderVariant_pick) || defined(dRenderVariant_color))\n float ta = 1.0 - vTransparency;\n if (vTransparency < 0.2) ta = 1.0; // hard cutoff looks better\n\n #if defined(dRenderVariant_pick)\n if (ta < uPickingAlphaThreshold)\n discard; // ignore so the element below can be picked\n #elif defined(dRenderVariant_color)\n material.a *= ta;\n\n #if defined(dRenderVariant_colorBlended)\n #if defined(dTransparentBackfaces_off)\n if ((uRenderMask == MaskOpaque && material.a < 1.0) ||\n (uRenderMask == MaskTransparent && material.a == 1.0) ||\n (interior && material.a < 1.0)\n ) {\n discard;\n }\n #elif defined(dTransparentBackfaces_on)\n if ((uRenderMask == MaskOpaque && material.a < 1.0) ||\n (uRenderMask == MaskTransparent && material.a == 1.0)\n ) {\n discard;\n }\n #elif defined(dTransparentBackfaces_opaque)\n if (interior) {\n material.a = 1.0;\n } else if (\n (uRenderMask == MaskOpaque && material.a < 1.0) ||\n (uRenderMask == MaskTransparent && material.a == 1.0)\n ) {\n discard;\n }\n #endif\n #endif\n #endif\n#endif\n";
@@ -1 +1 @@
1
- export declare const color_frag_params = "\nuniform float uMetalness;\nuniform float uRoughness;\nuniform float uBumpiness;\n#ifdef bumpEnabled\n uniform float uBumpFrequency;\n uniform float uBumpAmplitude;\n#endif\n\n#if defined(dRenderVariant_color)\n #if defined(dColorType_uniform)\n uniform vec3 uColor;\n #elif defined(dColorType_varying)\n varying vec4 vColor;\n #endif\n\n #ifdef dUsePalette\n uniform sampler2D tPalette;\n varying float vPaletteV;\n #endif\n\n #ifdef dOverpaint\n varying vec4 vOverpaint;\n #endif\n\n #ifdef dSubstance\n varying vec4 vSubstance;\n #endif\n#elif defined(dRenderVariant_pick)\n #if __VERSION__ == 100\n varying vec4 vColor;\n #else\n flat in vec4 vColor;\n #endif\n#endif\n\n#ifdef dTransparency\n varying float vGroup;\n varying float vTransparency;\n#endif\n";
1
+ export declare const color_frag_params = "\nuniform float uMetalness;\nuniform float uRoughness;\nuniform float uBumpiness;\n#ifdef bumpEnabled\n uniform float uBumpFrequency;\n uniform float uBumpAmplitude;\n#endif\n\n#if defined(dRenderVariant_color)\n #if defined(dColorType_uniform)\n uniform vec3 uColor;\n #elif defined(dColorType_varying)\n varying vec4 vColor;\n #endif\n\n #ifdef dUsePalette\n uniform sampler2D tPalette;\n varying float vPaletteV;\n #endif\n\n #ifdef dOverpaint\n varying vec4 vOverpaint;\n #endif\n\n #ifdef dSubstance\n varying vec4 vSubstance;\n #endif\n#elif defined(dRenderVariant_pick)\n #if __VERSION__ == 100\n #ifdef requiredDrawBuffers\n varying vec4 vObject;\n varying vec4 vInstance;\n varying vec4 vGroup;\n #else\n varying vec4 vColor;\n #endif\n #else\n #ifdef requiredDrawBuffers\n flat in vec4 vObject;\n flat in vec4 vInstance;\n flat in vec4 vGroup;\n #else\n flat in vec4 vColor;\n #endif\n #endif\n#endif\n\n#ifdef dTransparency\n varying float vGroup;\n varying float vTransparency;\n#endif\n";
@@ -1 +1 @@
1
- export var color_frag_params = "\nuniform float uMetalness;\nuniform float uRoughness;\nuniform float uBumpiness;\n#ifdef bumpEnabled\n uniform float uBumpFrequency;\n uniform float uBumpAmplitude;\n#endif\n\n#if defined(dRenderVariant_color)\n #if defined(dColorType_uniform)\n uniform vec3 uColor;\n #elif defined(dColorType_varying)\n varying vec4 vColor;\n #endif\n\n #ifdef dUsePalette\n uniform sampler2D tPalette;\n varying float vPaletteV;\n #endif\n\n #ifdef dOverpaint\n varying vec4 vOverpaint;\n #endif\n\n #ifdef dSubstance\n varying vec4 vSubstance;\n #endif\n#elif defined(dRenderVariant_pick)\n #if __VERSION__ == 100\n varying vec4 vColor;\n #else\n flat in vec4 vColor;\n #endif\n#endif\n\n#ifdef dTransparency\n varying float vGroup;\n varying float vTransparency;\n#endif\n";
1
+ export var color_frag_params = "\nuniform float uMetalness;\nuniform float uRoughness;\nuniform float uBumpiness;\n#ifdef bumpEnabled\n uniform float uBumpFrequency;\n uniform float uBumpAmplitude;\n#endif\n\n#if defined(dRenderVariant_color)\n #if defined(dColorType_uniform)\n uniform vec3 uColor;\n #elif defined(dColorType_varying)\n varying vec4 vColor;\n #endif\n\n #ifdef dUsePalette\n uniform sampler2D tPalette;\n varying float vPaletteV;\n #endif\n\n #ifdef dOverpaint\n varying vec4 vOverpaint;\n #endif\n\n #ifdef dSubstance\n varying vec4 vSubstance;\n #endif\n#elif defined(dRenderVariant_pick)\n #if __VERSION__ == 100\n #ifdef requiredDrawBuffers\n varying vec4 vObject;\n varying vec4 vInstance;\n varying vec4 vGroup;\n #else\n varying vec4 vColor;\n #endif\n #else\n #ifdef requiredDrawBuffers\n flat in vec4 vObject;\n flat in vec4 vInstance;\n flat in vec4 vGroup;\n #else\n flat in vec4 vColor;\n #endif\n #endif\n#endif\n\n#ifdef dTransparency\n varying float vGroup;\n varying float vTransparency;\n#endif\n";
@@ -1 +1 @@
1
- export declare const color_vert_params = "\nuniform float uMetalness;\nuniform float uRoughness;\nuniform float uBumpiness;\n\n#if defined(dRenderVariant_color)\n #if defined(dColorType_uniform)\n uniform vec3 uColor;\n #elif defined(dColorType_attribute)\n varying vec4 vColor;\n attribute vec3 aColor;\n #elif defined(dColorType_texture)\n varying vec4 vColor;\n uniform vec2 uColorTexDim;\n uniform sampler2D tColor;\n #elif defined(dColorType_grid)\n varying vec4 vColor;\n uniform vec2 uColorTexDim;\n uniform vec3 uColorGridDim;\n uniform vec4 uColorGridTransform;\n uniform sampler2D tColorGrid;\n #elif defined(dColorType_direct)\n varying vec4 vColor;\n #endif\n\n #ifdef dUsePalette\n varying float vPaletteV;\n #endif\n\n #ifdef dOverpaint\n #if defined(dOverpaintType_groupInstance) || defined(dOverpaintType_vertexInstance)\n varying vec4 vOverpaint;\n uniform vec2 uOverpaintTexDim;\n uniform sampler2D tOverpaint;\n #elif defined(dOverpaintType_volumeInstance)\n varying vec4 vOverpaint;\n uniform vec2 uOverpaintTexDim;\n uniform vec3 uOverpaintGridDim;\n uniform vec4 uOverpaintGridTransform;\n uniform sampler2D tOverpaintGrid;\n #endif\n #endif\n\n #ifdef dSubstance\n #if defined(dSubstanceType_groupInstance) || defined(dSubstanceType_vertexInstance)\n varying vec4 vSubstance;\n uniform vec2 uSubstanceTexDim;\n uniform sampler2D tSubstance;\n #elif defined(dSubstanceType_volumeInstance)\n varying vec4 vSubstance;\n uniform vec2 uSubstanceTexDim;\n uniform vec3 uSubstanceGridDim;\n uniform vec4 uSubstanceGridTransform;\n uniform sampler2D tSubstanceGrid;\n #endif\n #endif\n#elif defined(dRenderVariant_pick)\n #if __VERSION__ == 100\n varying vec4 vColor;\n #else\n flat out vec4 vColor;\n #endif\n#endif\n\n#ifdef dTransparency\n varying float vGroup;\n #if defined(dTransparencyType_groupInstance) || defined(dTransparencyType_vertexInstance)\n varying float vTransparency;\n uniform vec2 uTransparencyTexDim;\n uniform sampler2D tTransparency;\n #elif defined(dTransparencyType_volumeInstance)\n varying float vTransparency;\n uniform vec2 uTransparencyTexDim;\n uniform vec3 uTransparencyGridDim;\n uniform vec4 uTransparencyGridTransform;\n uniform sampler2D tTransparencyGrid;\n #endif\n#endif\n";
1
+ export declare const color_vert_params = "\nuniform float uMetalness;\nuniform float uRoughness;\nuniform float uBumpiness;\n\n#if defined(dRenderVariant_color)\n #if defined(dColorType_uniform)\n uniform vec3 uColor;\n #elif defined(dColorType_attribute)\n varying vec4 vColor;\n attribute vec3 aColor;\n #elif defined(dColorType_texture)\n varying vec4 vColor;\n uniform vec2 uColorTexDim;\n uniform sampler2D tColor;\n #elif defined(dColorType_grid)\n varying vec4 vColor;\n uniform vec2 uColorTexDim;\n uniform vec3 uColorGridDim;\n uniform vec4 uColorGridTransform;\n uniform sampler2D tColorGrid;\n #elif defined(dColorType_direct)\n varying vec4 vColor;\n #endif\n\n #ifdef dUsePalette\n varying float vPaletteV;\n #endif\n\n #ifdef dOverpaint\n #if defined(dOverpaintType_groupInstance) || defined(dOverpaintType_vertexInstance)\n varying vec4 vOverpaint;\n uniform vec2 uOverpaintTexDim;\n uniform sampler2D tOverpaint;\n #elif defined(dOverpaintType_volumeInstance)\n varying vec4 vOverpaint;\n uniform vec2 uOverpaintTexDim;\n uniform vec3 uOverpaintGridDim;\n uniform vec4 uOverpaintGridTransform;\n uniform sampler2D tOverpaintGrid;\n #endif\n #endif\n\n #ifdef dSubstance\n #if defined(dSubstanceType_groupInstance) || defined(dSubstanceType_vertexInstance)\n varying vec4 vSubstance;\n uniform vec2 uSubstanceTexDim;\n uniform sampler2D tSubstance;\n #elif defined(dSubstanceType_volumeInstance)\n varying vec4 vSubstance;\n uniform vec2 uSubstanceTexDim;\n uniform vec3 uSubstanceGridDim;\n uniform vec4 uSubstanceGridTransform;\n uniform sampler2D tSubstanceGrid;\n #endif\n #endif\n#elif defined(dRenderVariant_pick)\n #if __VERSION__ == 100\n #ifdef requiredDrawBuffers\n varying vec4 vObject;\n varying vec4 vInstance;\n varying vec4 vGroup;\n #else\n varying vec4 vColor;\n #endif\n #else\n #ifdef requiredDrawBuffers\n flat out vec4 vObject;\n flat out vec4 vInstance;\n flat out vec4 vGroup;\n #else\n flat out vec4 vColor;\n #endif\n #endif\n#endif\n\n#ifdef dTransparency\n varying float vGroup;\n #if defined(dTransparencyType_groupInstance) || defined(dTransparencyType_vertexInstance)\n varying float vTransparency;\n uniform vec2 uTransparencyTexDim;\n uniform sampler2D tTransparency;\n #elif defined(dTransparencyType_volumeInstance)\n varying float vTransparency;\n uniform vec2 uTransparencyTexDim;\n uniform vec3 uTransparencyGridDim;\n uniform vec4 uTransparencyGridTransform;\n uniform sampler2D tTransparencyGrid;\n #endif\n#endif\n";
@@ -1 +1 @@
1
- export var color_vert_params = "\nuniform float uMetalness;\nuniform float uRoughness;\nuniform float uBumpiness;\n\n#if defined(dRenderVariant_color)\n #if defined(dColorType_uniform)\n uniform vec3 uColor;\n #elif defined(dColorType_attribute)\n varying vec4 vColor;\n attribute vec3 aColor;\n #elif defined(dColorType_texture)\n varying vec4 vColor;\n uniform vec2 uColorTexDim;\n uniform sampler2D tColor;\n #elif defined(dColorType_grid)\n varying vec4 vColor;\n uniform vec2 uColorTexDim;\n uniform vec3 uColorGridDim;\n uniform vec4 uColorGridTransform;\n uniform sampler2D tColorGrid;\n #elif defined(dColorType_direct)\n varying vec4 vColor;\n #endif\n\n #ifdef dUsePalette\n varying float vPaletteV;\n #endif\n\n #ifdef dOverpaint\n #if defined(dOverpaintType_groupInstance) || defined(dOverpaintType_vertexInstance)\n varying vec4 vOverpaint;\n uniform vec2 uOverpaintTexDim;\n uniform sampler2D tOverpaint;\n #elif defined(dOverpaintType_volumeInstance)\n varying vec4 vOverpaint;\n uniform vec2 uOverpaintTexDim;\n uniform vec3 uOverpaintGridDim;\n uniform vec4 uOverpaintGridTransform;\n uniform sampler2D tOverpaintGrid;\n #endif\n #endif\n\n #ifdef dSubstance\n #if defined(dSubstanceType_groupInstance) || defined(dSubstanceType_vertexInstance)\n varying vec4 vSubstance;\n uniform vec2 uSubstanceTexDim;\n uniform sampler2D tSubstance;\n #elif defined(dSubstanceType_volumeInstance)\n varying vec4 vSubstance;\n uniform vec2 uSubstanceTexDim;\n uniform vec3 uSubstanceGridDim;\n uniform vec4 uSubstanceGridTransform;\n uniform sampler2D tSubstanceGrid;\n #endif\n #endif\n#elif defined(dRenderVariant_pick)\n #if __VERSION__ == 100\n varying vec4 vColor;\n #else\n flat out vec4 vColor;\n #endif\n#endif\n\n#ifdef dTransparency\n varying float vGroup;\n #if defined(dTransparencyType_groupInstance) || defined(dTransparencyType_vertexInstance)\n varying float vTransparency;\n uniform vec2 uTransparencyTexDim;\n uniform sampler2D tTransparency;\n #elif defined(dTransparencyType_volumeInstance)\n varying float vTransparency;\n uniform vec2 uTransparencyTexDim;\n uniform vec3 uTransparencyGridDim;\n uniform vec4 uTransparencyGridTransform;\n uniform sampler2D tTransparencyGrid;\n #endif\n#endif\n";
1
+ export var color_vert_params = "\nuniform float uMetalness;\nuniform float uRoughness;\nuniform float uBumpiness;\n\n#if defined(dRenderVariant_color)\n #if defined(dColorType_uniform)\n uniform vec3 uColor;\n #elif defined(dColorType_attribute)\n varying vec4 vColor;\n attribute vec3 aColor;\n #elif defined(dColorType_texture)\n varying vec4 vColor;\n uniform vec2 uColorTexDim;\n uniform sampler2D tColor;\n #elif defined(dColorType_grid)\n varying vec4 vColor;\n uniform vec2 uColorTexDim;\n uniform vec3 uColorGridDim;\n uniform vec4 uColorGridTransform;\n uniform sampler2D tColorGrid;\n #elif defined(dColorType_direct)\n varying vec4 vColor;\n #endif\n\n #ifdef dUsePalette\n varying float vPaletteV;\n #endif\n\n #ifdef dOverpaint\n #if defined(dOverpaintType_groupInstance) || defined(dOverpaintType_vertexInstance)\n varying vec4 vOverpaint;\n uniform vec2 uOverpaintTexDim;\n uniform sampler2D tOverpaint;\n #elif defined(dOverpaintType_volumeInstance)\n varying vec4 vOverpaint;\n uniform vec2 uOverpaintTexDim;\n uniform vec3 uOverpaintGridDim;\n uniform vec4 uOverpaintGridTransform;\n uniform sampler2D tOverpaintGrid;\n #endif\n #endif\n\n #ifdef dSubstance\n #if defined(dSubstanceType_groupInstance) || defined(dSubstanceType_vertexInstance)\n varying vec4 vSubstance;\n uniform vec2 uSubstanceTexDim;\n uniform sampler2D tSubstance;\n #elif defined(dSubstanceType_volumeInstance)\n varying vec4 vSubstance;\n uniform vec2 uSubstanceTexDim;\n uniform vec3 uSubstanceGridDim;\n uniform vec4 uSubstanceGridTransform;\n uniform sampler2D tSubstanceGrid;\n #endif\n #endif\n#elif defined(dRenderVariant_pick)\n #if __VERSION__ == 100\n #ifdef requiredDrawBuffers\n varying vec4 vObject;\n varying vec4 vInstance;\n varying vec4 vGroup;\n #else\n varying vec4 vColor;\n #endif\n #else\n #ifdef requiredDrawBuffers\n flat out vec4 vObject;\n flat out vec4 vInstance;\n flat out vec4 vGroup;\n #else\n flat out vec4 vColor;\n #endif\n #endif\n#endif\n\n#ifdef dTransparency\n varying float vGroup;\n #if defined(dTransparencyType_groupInstance) || defined(dTransparencyType_vertexInstance)\n varying float vTransparency;\n uniform vec2 uTransparencyTexDim;\n uniform sampler2D tTransparency;\n #elif defined(dTransparencyType_volumeInstance)\n varying float vTransparency;\n uniform vec2 uTransparencyTexDim;\n uniform vec3 uTransparencyGridDim;\n uniform vec4 uTransparencyGridTransform;\n uniform sampler2D tTransparencyGrid;\n #endif\n#endif\n";
@@ -3,4 +3,4 @@
3
3
  *
4
4
  * @author Alexander Rose <alexander.rose@weirdbyte.de>
5
5
  */
6
- export declare const cylinders_frag = "\nprecision highp float;\nprecision highp int;\n\n#define bumpEnabled\n\nuniform mat4 uView;\n\nvarying mat4 vTransform;\nvarying vec3 vStart;\nvarying vec3 vEnd;\nvarying float vSize;\nvarying float vCap;\n\nuniform vec3 uCameraDir;\nuniform vec3 uCameraPosition;\nuniform mat4 uInvView;\n\n#include common\n#include common_frag_params\n#include color_frag_params\n#include light_frag_params\n#include common_clip\n\n// adapted from https://www.shadertoy.com/view/4lcSRn\n// The MIT License, Copyright 2016 Inigo Quilez\nbool CylinderImpostor(\n in vec3 rayOrigin, in vec3 rayDir,\n in vec3 start, in vec3 end, in float radius,\n out vec4 intersection, out bool interior\n){\n vec3 ba = end - start;\n vec3 oc = rayOrigin - start;\n\n float baba = dot(ba, ba);\n float bard = dot(ba, rayDir);\n float baoc = dot(ba, oc);\n\n float k2 = baba - bard*bard;\n float k1 = baba * dot(oc, rayDir) - baoc * bard;\n float k0 = baba * dot(oc, oc) - baoc * baoc - radius * radius * baba;\n\n float h = k1 * k1 - k2 * k0;\n if (h < 0.0) return false;\n\n bool topCap = (vCap > 0.9 && vCap < 1.1) || vCap >= 2.9;\n bool bottomCap = (vCap > 1.9 && vCap < 2.1) || vCap >= 2.9;\n\n // body outside\n h = sqrt(h);\n float t = (-k1 - h) / k2;\n float y = baoc + t * bard;\n if (y > 0.0 && y < baba) {\n interior = false;\n intersection = vec4(t, (oc + t * rayDir - ba * y / baba) / radius);\n return true;\n }\n\n if (topCap && y < 0.0) {\n // top cap\n t = -baoc / bard;\n if (abs(k1 + k2 * t) < h) {\n interior = false;\n intersection = vec4(t, ba * sign(y) / baba);\n return true;\n }\n } else if(bottomCap && y >= 0.0) {\n // bottom cap\n t = (baba - baoc) / bard;\n if (abs(k1 + k2 * t) < h) {\n interior = false;\n intersection = vec4(t, ba * sign(y) / baba);\n return true;\n }\n }\n\n if (uDoubleSided) {\n // body inside\n h = -h;\n t = (-k1 - h) / k2;\n y = baoc + t * bard;\n if (y > 0.0 && y < baba) {\n interior = true;\n intersection = vec4(t, (oc + t * rayDir - ba * y / baba) / radius);\n return true;\n }\n\n // TODO: handle inside caps???\n }\n\n return false;\n}\n\nvoid main() {\n #include clip_pixel\n\n vec3 rayDir = mix(normalize(vModelPosition - uCameraPosition), uCameraDir, uIsOrtho);\n\n vec4 intersection;\n bool interior;\n bool hit = CylinderImpostor(vModelPosition, rayDir, vStart, vEnd, vSize, intersection, interior);\n if (!hit) discard;\n\n vec3 vViewPosition = vModelPosition + intersection.x * rayDir;\n vViewPosition = (uView * vec4(vViewPosition, 1.0)).xyz;\n gl_FragDepthEXT = calcDepth(vViewPosition);\n\n vec3 vModelPosition = (uInvView * vec4(vViewPosition, 1.0)).xyz;\n\n if (gl_FragDepthEXT < 0.0) discard;\n if (gl_FragDepthEXT > 1.0) discard;\n\n float fragmentDepth = gl_FragDepthEXT;\n #include assign_material_color\n\n #if defined(dRenderVariant_pick)\n #include check_picking_alpha\n gl_FragColor = material;\n #elif defined(dRenderVariant_depth)\n gl_FragColor = material;\n #elif defined(dRenderVariant_marking)\n gl_FragColor = material;\n #elif defined(dRenderVariant_color)\n mat3 normalMatrix = transpose3(inverse3(mat3(uView)));\n vec3 normal = normalize(normalMatrix * -normalize(intersection.yzw));\n #include apply_light_color\n\n #include apply_interior_color\n #include apply_marker_color\n #include apply_fog\n #include wboit_write\n #endif\n}\n";
6
+ export declare const cylinders_frag = "\nprecision highp float;\nprecision highp int;\n\n#define bumpEnabled\n\nuniform mat4 uView;\n\nvarying mat4 vTransform;\nvarying vec3 vStart;\nvarying vec3 vEnd;\nvarying float vSize;\nvarying float vCap;\n\nuniform vec3 uCameraDir;\nuniform vec3 uCameraPosition;\nuniform mat4 uInvView;\n\n#include common\n#include common_frag_params\n#include color_frag_params\n#include light_frag_params\n#include common_clip\n\n// adapted from https://www.shadertoy.com/view/4lcSRn\n// The MIT License, Copyright 2016 Inigo Quilez\nbool CylinderImpostor(\n in vec3 rayOrigin, in vec3 rayDir,\n in vec3 start, in vec3 end, in float radius,\n out vec4 intersection, out bool interior\n){\n vec3 ba = end - start;\n vec3 oc = rayOrigin - start;\n\n float baba = dot(ba, ba);\n float bard = dot(ba, rayDir);\n float baoc = dot(ba, oc);\n\n float k2 = baba - bard*bard;\n float k1 = baba * dot(oc, rayDir) - baoc * bard;\n float k0 = baba * dot(oc, oc) - baoc * baoc - radius * radius * baba;\n\n float h = k1 * k1 - k2 * k0;\n if (h < 0.0) return false;\n\n bool topCap = (vCap > 0.9 && vCap < 1.1) || vCap >= 2.9;\n bool bottomCap = (vCap > 1.9 && vCap < 2.1) || vCap >= 2.9;\n\n // body outside\n h = sqrt(h);\n float t = (-k1 - h) / k2;\n float y = baoc + t * bard;\n if (y > 0.0 && y < baba) {\n interior = false;\n intersection = vec4(t, (oc + t * rayDir - ba * y / baba) / radius);\n return true;\n }\n\n if (topCap && y < 0.0) {\n // top cap\n t = -baoc / bard;\n if (abs(k1 + k2 * t) < h) {\n interior = false;\n intersection = vec4(t, ba * sign(y) / baba);\n return true;\n }\n } else if(bottomCap && y >= 0.0) {\n // bottom cap\n t = (baba - baoc) / bard;\n if (abs(k1 + k2 * t) < h) {\n interior = false;\n intersection = vec4(t, ba * sign(y) / baba);\n return true;\n }\n }\n\n if (uDoubleSided) {\n // body inside\n h = -h;\n t = (-k1 - h) / k2;\n y = baoc + t * bard;\n if (y > 0.0 && y < baba) {\n interior = true;\n intersection = vec4(t, (oc + t * rayDir - ba * y / baba) / radius);\n return true;\n }\n\n // TODO: handle inside caps???\n }\n\n return false;\n}\n\nvoid main() {\n #include clip_pixel\n\n vec3 rayDir = mix(normalize(vModelPosition - uCameraPosition), uCameraDir, uIsOrtho);\n\n vec4 intersection;\n bool interior;\n bool hit = CylinderImpostor(vModelPosition, rayDir, vStart, vEnd, vSize, intersection, interior);\n if (!hit) discard;\n\n vec3 vViewPosition = vModelPosition + intersection.x * rayDir;\n vViewPosition = (uView * vec4(vViewPosition, 1.0)).xyz;\n gl_FragDepthEXT = calcDepth(vViewPosition);\n\n vec3 vModelPosition = (uInvView * vec4(vViewPosition, 1.0)).xyz;\n\n if (gl_FragDepthEXT < 0.0) discard;\n if (gl_FragDepthEXT > 1.0) discard;\n\n float fragmentDepth = gl_FragDepthEXT;\n #include assign_material_color\n\n #if defined(dRenderVariant_pick)\n #include check_picking_alpha\n #ifdef requiredDrawBuffers\n gl_FragColor = vObject;\n gl_FragData[1] = vInstance;\n gl_FragData[2] = vGroup;\n gl_FragData[3] = packDepthToRGBA(fragmentDepth);\n #else\n gl_FragColor = vColor;\n #endif\n #elif defined(dRenderVariant_depth)\n gl_FragColor = material;\n #elif defined(dRenderVariant_marking)\n gl_FragColor = material;\n #elif defined(dRenderVariant_color)\n mat3 normalMatrix = transpose3(inverse3(mat3(uView)));\n vec3 normal = normalize(normalMatrix * -normalize(intersection.yzw));\n #include apply_light_color\n\n #include apply_interior_color\n #include apply_marker_color\n #include apply_fog\n #include wboit_write\n #endif\n}\n";