molstar 3.6.0 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (410) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +202 -202
  3. package/build/viewer/embedded.html +43 -43
  4. package/build/viewer/index.html +106 -106
  5. package/build/viewer/molstar.css +1 -1
  6. package/build/viewer/molstar.js +1 -1
  7. package/build/viewer/molstar.js.LICENSE.txt +0 -15
  8. package/lib/apps/docking-viewer/index.html +36 -36
  9. package/lib/apps/viewer/embedded.html +43 -43
  10. package/lib/apps/viewer/index.html +106 -106
  11. package/lib/cli/chem-comp-dict/create-ions.d.ts +2 -1
  12. package/lib/cli/chem-comp-dict/create-ions.js +3 -2
  13. package/lib/cli/cifschema/index.js +1 -1
  14. package/lib/cli/cifschema/util/cif-dic.js +1 -0
  15. package/lib/commonjs/cli/chem-comp-dict/create-ions.d.ts +2 -1
  16. package/lib/commonjs/cli/chem-comp-dict/create-ions.js +3 -2
  17. package/lib/commonjs/cli/cifschema/index.js +1 -1
  18. package/lib/commonjs/cli/cifschema/util/cif-dic.js +1 -0
  19. package/lib/commonjs/examples/alpha-orbitals/index.js +20 -15
  20. package/lib/commonjs/examples/proteopedia-wrapper/coloring.d.ts +20 -5
  21. package/lib/commonjs/extensions/anvil/behavior.d.ts +1 -1
  22. package/lib/commonjs/extensions/anvil/representation.d.ts +4 -4
  23. package/lib/commonjs/extensions/cellpack/representation.d.ts +1 -1
  24. package/lib/commonjs/extensions/dnatco/confal-pyramids/representation.d.ts +3 -3
  25. package/lib/commonjs/extensions/rcsb/assembly-symmetry/behavior.d.ts +1 -1
  26. package/lib/commonjs/extensions/rcsb/assembly-symmetry/representation.d.ts +1 -1
  27. package/lib/commonjs/extensions/rcsb/graphql/types.d.ts +284 -0
  28. package/lib/commonjs/extensions/rcsb/validation-report/representation.d.ts +5 -5
  29. package/lib/commonjs/mol-canvas3d/canvas3d.d.ts +2 -2
  30. package/lib/commonjs/mol-canvas3d/helper/camera-helper.d.ts +1 -1
  31. package/lib/commonjs/mol-canvas3d/helper/handle-helper.d.ts +1 -1
  32. package/lib/commonjs/mol-canvas3d/helper/helper.d.ts +2 -2
  33. package/lib/commonjs/mol-canvas3d/passes/draw.d.ts +0 -2
  34. package/lib/commonjs/mol-canvas3d/passes/draw.js +35 -70
  35. package/lib/commonjs/mol-canvas3d/passes/image.d.ts +1 -1
  36. package/lib/commonjs/mol-canvas3d/passes/pick.d.ts +1 -1
  37. package/lib/commonjs/mol-canvas3d/passes/pick.js +1 -1
  38. package/lib/commonjs/mol-canvas3d/passes/postprocessing.d.ts +1 -0
  39. package/lib/commonjs/mol-canvas3d/passes/postprocessing.js +16 -11
  40. package/lib/commonjs/mol-geo/geometry/color-data.d.ts +7 -10
  41. package/lib/commonjs/mol-geo/geometry/color-data.js +7 -4
  42. package/lib/commonjs/mol-geo/geometry/cylinders/cylinders.d.ts +2 -2
  43. package/lib/commonjs/mol-geo/geometry/cylinders/cylinders.js +3 -2
  44. package/lib/commonjs/mol-geo/geometry/lines/lines.d.ts +1 -0
  45. package/lib/commonjs/mol-geo/geometry/mesh/mesh.d.ts +1 -1
  46. package/lib/commonjs/mol-geo/geometry/mesh/mesh.js +3 -2
  47. package/lib/commonjs/mol-geo/geometry/points/points.d.ts +1 -1
  48. package/lib/commonjs/mol-geo/geometry/spheres/spheres.d.ts +1 -1
  49. package/lib/commonjs/mol-geo/geometry/spheres/spheres.js +3 -2
  50. package/lib/commonjs/mol-geo/geometry/texture-mesh/texture-mesh.d.ts +1 -1
  51. package/lib/commonjs/mol-geo/geometry/texture-mesh/texture-mesh.js +15 -4
  52. package/lib/commonjs/mol-geo/geometry/transparency-data.d.ts +1 -1
  53. package/lib/commonjs/mol-geo/geometry/transparency-data.js +3 -1
  54. package/lib/commonjs/mol-gl/renderable/cylinders.d.ts +2 -1
  55. package/lib/commonjs/mol-gl/renderable/cylinders.js +2 -2
  56. package/lib/commonjs/mol-gl/renderable/mesh.d.ts +2 -1
  57. package/lib/commonjs/mol-gl/renderable/mesh.js +2 -2
  58. package/lib/commonjs/mol-gl/renderable/schema.d.ts +2 -2
  59. package/lib/commonjs/mol-gl/renderable/schema.js +2 -2
  60. package/lib/commonjs/mol-gl/renderable/spheres.d.ts +2 -1
  61. package/lib/commonjs/mol-gl/renderable/spheres.js +2 -2
  62. package/lib/commonjs/mol-gl/renderable/texture-mesh.d.ts +2 -1
  63. package/lib/commonjs/mol-gl/renderable/texture-mesh.js +2 -2
  64. package/lib/commonjs/mol-gl/renderer.d.ts +5 -5
  65. package/lib/commonjs/mol-gl/renderer.js +114 -64
  66. package/lib/commonjs/mol-gl/scene.d.ts +1 -0
  67. package/lib/commonjs/mol-gl/scene.js +26 -1
  68. package/lib/commonjs/mol-gl/shader/chunks/apply-interior-color.glsl.d.ts +1 -1
  69. package/lib/commonjs/mol-gl/shader/chunks/apply-interior-color.glsl.js +1 -1
  70. package/lib/commonjs/mol-gl/shader/chunks/assign-material-color.glsl.d.ts +1 -1
  71. package/lib/commonjs/mol-gl/shader/chunks/assign-material-color.glsl.js +1 -1
  72. package/lib/commonjs/mol-gl/shader/chunks/check-picking-alpha.glsl.d.ts +1 -1
  73. package/lib/commonjs/mol-gl/shader/chunks/check-picking-alpha.glsl.js +1 -1
  74. package/lib/commonjs/mol-gl/shader/chunks/color-vert-params.glsl.d.ts +1 -1
  75. package/lib/commonjs/mol-gl/shader/chunks/color-vert-params.glsl.js +1 -1
  76. package/lib/commonjs/mol-gl/shader/chunks/common-frag-params.glsl.d.ts +1 -1
  77. package/lib/commonjs/mol-gl/shader/chunks/common-frag-params.glsl.js +1 -1
  78. package/lib/commonjs/mol-gl/shader/chunks/common.glsl.d.ts +1 -1
  79. package/lib/commonjs/mol-gl/shader/chunks/common.glsl.js +1 -1
  80. package/lib/commonjs/mol-gl/shader/chunks/wboit-write.glsl.d.ts +1 -1
  81. package/lib/commonjs/mol-gl/shader/chunks/wboit-write.glsl.js +1 -1
  82. package/lib/commonjs/mol-gl/shader/direct-volume.frag.d.ts +1 -1
  83. package/lib/commonjs/mol-gl/shader/direct-volume.frag.js +1 -1
  84. package/lib/commonjs/mol-gl/shader/image.frag.d.ts +1 -1
  85. package/lib/commonjs/mol-gl/shader/image.frag.js +1 -1
  86. package/lib/commonjs/mol-gl/shader/outlines.frag.d.ts +3 -2
  87. package/lib/commonjs/mol-gl/shader/outlines.frag.js +3 -2
  88. package/lib/commonjs/mol-gl/shader/postprocessing.frag.d.ts +1 -1
  89. package/lib/commonjs/mol-gl/shader/postprocessing.frag.js +1 -1
  90. package/lib/commonjs/mol-gl/shader/ssao.frag.d.ts +2 -2
  91. package/lib/commonjs/mol-gl/shader/ssao.frag.js +2 -2
  92. package/lib/commonjs/mol-gl/webgl/render-target.d.ts +3 -1
  93. package/lib/commonjs/mol-gl/webgl/render-target.js +3 -1
  94. package/lib/commonjs/mol-gl/webgl/renderbuffer.d.ts +2 -1
  95. package/lib/commonjs/mol-gl/webgl/renderbuffer.js +8 -1
  96. package/lib/commonjs/mol-gl/webgl/state.d.ts +7 -1
  97. package/lib/commonjs/mol-gl/webgl/state.js +28 -1
  98. package/lib/commonjs/mol-gl/webgl/texture.js +3 -0
  99. package/lib/commonjs/mol-io/reader/cif/schema/bird.d.ts +1 -1
  100. package/lib/commonjs/mol-io/reader/cif/schema/bird.js +1 -1
  101. package/lib/commonjs/mol-io/reader/cif/schema/ccd.d.ts +1 -1
  102. package/lib/commonjs/mol-io/reader/cif/schema/ccd.js +1 -1
  103. package/lib/commonjs/mol-io/reader/cif/schema/cif-core.d.ts +1 -1
  104. package/lib/commonjs/mol-io/reader/cif/schema/cif-core.js +1 -1
  105. package/lib/commonjs/mol-io/reader/cif/schema/mmcif.d.ts +3 -4
  106. package/lib/commonjs/mol-io/reader/cif/schema/mmcif.js +2 -3
  107. package/lib/commonjs/mol-io/reader/dx/parser.js +1 -1
  108. package/lib/commonjs/mol-io/writer/ligand-encoder.d.ts +4 -2
  109. package/lib/commonjs/mol-io/writer/ligand-encoder.js +9 -4
  110. package/lib/commonjs/mol-io/writer/mol/encoder.js +16 -4
  111. package/lib/commonjs/mol-io/writer/mol2/encoder.js +17 -4
  112. package/lib/commonjs/mol-math/geometry/lookup3d/grid.d.ts +1 -1
  113. package/lib/commonjs/mol-math/geometry/lookup3d/grid.js +3 -3
  114. package/lib/commonjs/mol-model/structure/model/properties/seconday-structure.d.ts +4 -2
  115. package/lib/commonjs/mol-model/structure/model/properties/seconday-structure.js +2 -1
  116. package/lib/commonjs/mol-model/structure/model/types/ions.d.ts +2 -2
  117. package/lib/commonjs/mol-model/structure/model/types/ions.js +2 -2
  118. package/lib/commonjs/mol-model/structure/model/types/saccharides.js +1 -1
  119. package/lib/commonjs/mol-model/structure/model/types.d.ts +1 -1
  120. package/lib/commonjs/mol-model/structure/model/types.js +43 -41
  121. package/lib/commonjs/mol-model-formats/shape/ply.d.ts +2 -2
  122. package/lib/commonjs/mol-model-formats/structure/common/property.js +2 -0
  123. package/lib/commonjs/mol-model-formats/structure/property/secondary-structure.d.ts +1 -1
  124. package/lib/commonjs/mol-model-formats/structure/property/secondary-structure.js +2 -2
  125. package/lib/commonjs/mol-model-props/computed/representations/interactions-inter-unit-cylinder.d.ts +1 -1
  126. package/lib/commonjs/mol-model-props/computed/representations/interactions-intra-unit-cylinder.d.ts +1 -1
  127. package/lib/commonjs/mol-model-props/computed/representations/interactions.d.ts +3 -3
  128. package/lib/commonjs/mol-model-props/integrative/cross-link-restraint/representation.d.ts +4 -4
  129. package/lib/commonjs/mol-plugin/behavior/dynamic/volume-streaming/model.d.ts +3 -2
  130. package/lib/commonjs/mol-plugin/commands.d.ts +1 -1
  131. package/lib/commonjs/mol-plugin/util/viewport-screenshot.d.ts +3 -3
  132. package/lib/commonjs/mol-plugin-state/helpers/root-structure.js +3 -1
  133. package/lib/commonjs/mol-plugin-state/transforms/representation.d.ts +6 -6
  134. package/lib/commonjs/mol-plugin-ui/base.d.ts +3 -1
  135. package/lib/commonjs/mol-plugin-ui/controls/color.d.ts +1 -1
  136. package/lib/commonjs/mol-plugin-ui/controls/common.d.ts +2 -0
  137. package/lib/commonjs/mol-plugin-ui/hooks/use-behavior.d.ts +1 -1
  138. package/lib/commonjs/mol-plugin-ui/hooks/use-behavior.js +21 -7
  139. package/lib/commonjs/mol-plugin-ui/plugin.d.ts +2 -0
  140. package/lib/commonjs/mol-plugin-ui/plugin.js +2 -2
  141. package/lib/commonjs/mol-plugin-ui/spec.d.ts +1 -0
  142. package/lib/commonjs/mol-plugin-ui/state/common.js +6 -7
  143. package/lib/commonjs/mol-plugin-ui/task.d.ts +2 -21
  144. package/lib/commonjs/mol-plugin-ui/task.js +39 -43
  145. package/lib/commonjs/mol-plugin-ui/viewport/help.d.ts +4 -1
  146. package/lib/commonjs/mol-repr/shape/loci/angle.d.ts +1 -1
  147. package/lib/commonjs/mol-repr/shape/loci/dihedral.d.ts +1 -1
  148. package/lib/commonjs/mol-repr/shape/loci/orientation.d.ts +1 -1
  149. package/lib/commonjs/mol-repr/shape/loci/plane.d.ts +1 -1
  150. package/lib/commonjs/mol-repr/shape/model/unitcell.d.ts +1 -1
  151. package/lib/commonjs/mol-repr/structure/complex-visual.d.ts +3 -3
  152. package/lib/commonjs/mol-repr/structure/params.d.ts +4 -4
  153. package/lib/commonjs/mol-repr/structure/registry.d.ts +10 -10
  154. package/lib/commonjs/mol-repr/structure/representation/backbone.d.ts +3 -3
  155. package/lib/commonjs/mol-repr/structure/representation/ball-and-stick.d.ts +3 -3
  156. package/lib/commonjs/mol-repr/structure/representation/carbohydrate.d.ts +3 -3
  157. package/lib/commonjs/mol-repr/structure/representation/cartoon.d.ts +3 -3
  158. package/lib/commonjs/mol-repr/structure/representation/ellipsoid.d.ts +3 -3
  159. package/lib/commonjs/mol-repr/structure/representation/gaussian-surface.d.ts +3 -3
  160. package/lib/commonjs/mol-repr/structure/representation/molecular-surface.d.ts +3 -3
  161. package/lib/commonjs/mol-repr/structure/representation/orientation.d.ts +3 -3
  162. package/lib/commonjs/mol-repr/structure/representation/putty.d.ts +3 -3
  163. package/lib/commonjs/mol-repr/structure/representation/spacefill.d.ts +3 -3
  164. package/lib/commonjs/mol-repr/structure/units-visual.d.ts +4 -4
  165. package/lib/commonjs/mol-repr/structure/visual/bond-inter-unit-cylinder.d.ts +2 -2
  166. package/lib/commonjs/mol-repr/structure/visual/bond-intra-unit-cylinder.d.ts +2 -2
  167. package/lib/commonjs/mol-repr/structure/visual/carbohydrate-link-cylinder.d.ts +1 -1
  168. package/lib/commonjs/mol-repr/structure/visual/carbohydrate-symbol-mesh.d.ts +1 -1
  169. package/lib/commonjs/mol-repr/structure/visual/carbohydrate-terminal-link-cylinder.d.ts +1 -1
  170. package/lib/commonjs/mol-repr/structure/visual/element-sphere.d.ts +2 -2
  171. package/lib/commonjs/mol-repr/structure/visual/ellipsoid-mesh.d.ts +1 -1
  172. package/lib/commonjs/mol-repr/structure/visual/gaussian-surface-mesh.d.ts +4 -4
  173. package/lib/commonjs/mol-repr/structure/visual/molecular-surface-mesh.d.ts +1 -1
  174. package/lib/commonjs/mol-repr/structure/visual/nucleotide-block-mesh.d.ts +1 -1
  175. package/lib/commonjs/mol-repr/structure/visual/nucleotide-ring-mesh.d.ts +1 -1
  176. package/lib/commonjs/mol-repr/structure/visual/orientation-ellipsoid-mesh.d.ts +1 -1
  177. package/lib/commonjs/mol-repr/structure/visual/polymer-backbone-cylinder.d.ts +2 -2
  178. package/lib/commonjs/mol-repr/structure/visual/polymer-backbone-sphere.d.ts +2 -2
  179. package/lib/commonjs/mol-repr/structure/visual/polymer-direction-wedge.d.ts +1 -1
  180. package/lib/commonjs/mol-repr/structure/visual/polymer-gap-cylinder.d.ts +1 -1
  181. package/lib/commonjs/mol-repr/structure/visual/polymer-trace-mesh.d.ts +1 -1
  182. package/lib/commonjs/mol-repr/structure/visual/polymer-tube-mesh.d.ts +1 -1
  183. package/lib/commonjs/mol-repr/util.d.ts +1 -1
  184. package/lib/commonjs/mol-repr/util.js +1 -1
  185. package/lib/commonjs/mol-repr/volume/isosurface.d.ts +5 -5
  186. package/lib/commonjs/mol-repr/volume/registry.d.ts +1 -1
  187. package/lib/commonjs/mol-repr/volume/slice.js +1 -1
  188. package/lib/commonjs/mol-script/language/builder.d.ts +0 -1
  189. package/lib/commonjs/mol-theme/color/volume-value.d.ts +3 -2
  190. package/lib/commonjs/mol-theme/color/volume-value.js +1 -3
  191. package/lib/commonjs/mol-theme/color.d.ts +55 -39
  192. package/lib/commonjs/mol-theme/color.js +1 -1
  193. package/lib/commonjs/mol-theme/theme.d.ts +8 -7
  194. package/lib/commonjs/mol-theme/theme.js +1 -1
  195. package/lib/commonjs/servers/model/server/query.js +1 -3
  196. package/lib/commonjs/servers/model/version.d.ts +1 -1
  197. package/lib/commonjs/servers/model/version.js +1 -1
  198. package/lib/examples/alpha-orbitals/index.html +61 -61
  199. package/lib/examples/alpha-orbitals/index.js +20 -15
  200. package/lib/examples/basic-wrapper/index.html +137 -137
  201. package/lib/examples/lighting/index.html +88 -88
  202. package/lib/examples/proteopedia-wrapper/coloring.d.ts +20 -5
  203. package/lib/examples/proteopedia-wrapper/index.html +236 -236
  204. package/lib/extensions/anvil/behavior.d.ts +1 -1
  205. package/lib/extensions/anvil/representation.d.ts +4 -4
  206. package/lib/extensions/cellpack/representation.d.ts +1 -1
  207. package/lib/extensions/dnatco/confal-pyramids/representation.d.ts +3 -3
  208. package/lib/extensions/rcsb/assembly-symmetry/behavior.d.ts +1 -1
  209. package/lib/extensions/rcsb/assembly-symmetry/representation.d.ts +1 -1
  210. package/lib/extensions/rcsb/graphql/types.d.ts +284 -0
  211. package/lib/extensions/rcsb/validation-report/representation.d.ts +5 -5
  212. package/lib/mol-canvas3d/canvas3d.d.ts +2 -2
  213. package/lib/mol-canvas3d/helper/camera-helper.d.ts +1 -1
  214. package/lib/mol-canvas3d/helper/handle-helper.d.ts +1 -1
  215. package/lib/mol-canvas3d/helper/helper.d.ts +2 -2
  216. package/lib/mol-canvas3d/passes/draw.d.ts +0 -2
  217. package/lib/mol-canvas3d/passes/draw.js +32 -67
  218. package/lib/mol-canvas3d/passes/image.d.ts +1 -1
  219. package/lib/mol-canvas3d/passes/pick.d.ts +1 -1
  220. package/lib/mol-canvas3d/passes/pick.js +1 -1
  221. package/lib/mol-canvas3d/passes/postprocessing.d.ts +1 -0
  222. package/lib/mol-canvas3d/passes/postprocessing.js +16 -11
  223. package/lib/mol-geo/geometry/color-data.d.ts +7 -10
  224. package/lib/mol-geo/geometry/color-data.js +7 -4
  225. package/lib/mol-geo/geometry/cylinders/cylinders.d.ts +2 -2
  226. package/lib/mol-geo/geometry/cylinders/cylinders.js +3 -2
  227. package/lib/mol-geo/geometry/lines/lines.d.ts +1 -0
  228. package/lib/mol-geo/geometry/mesh/mesh.d.ts +1 -1
  229. package/lib/mol-geo/geometry/mesh/mesh.js +3 -2
  230. package/lib/mol-geo/geometry/points/points.d.ts +1 -1
  231. package/lib/mol-geo/geometry/spheres/spheres.d.ts +1 -1
  232. package/lib/mol-geo/geometry/spheres/spheres.js +3 -2
  233. package/lib/mol-geo/geometry/texture-mesh/texture-mesh.d.ts +1 -1
  234. package/lib/mol-geo/geometry/texture-mesh/texture-mesh.js +15 -4
  235. package/lib/mol-geo/geometry/transparency-data.d.ts +1 -1
  236. package/lib/mol-geo/geometry/transparency-data.js +3 -1
  237. package/lib/mol-gl/renderable/cylinders.d.ts +2 -1
  238. package/lib/mol-gl/renderable/cylinders.js +2 -2
  239. package/lib/mol-gl/renderable/mesh.d.ts +2 -1
  240. package/lib/mol-gl/renderable/mesh.js +2 -2
  241. package/lib/mol-gl/renderable/schema.d.ts +2 -2
  242. package/lib/mol-gl/renderable/schema.js +2 -2
  243. package/lib/mol-gl/renderable/spheres.d.ts +2 -1
  244. package/lib/mol-gl/renderable/spheres.js +2 -2
  245. package/lib/mol-gl/renderable/texture-mesh.d.ts +2 -1
  246. package/lib/mol-gl/renderable/texture-mesh.js +2 -2
  247. package/lib/mol-gl/renderer.d.ts +5 -5
  248. package/lib/mol-gl/renderer.js +114 -64
  249. package/lib/mol-gl/scene.d.ts +1 -0
  250. package/lib/mol-gl/scene.js +26 -1
  251. package/lib/mol-gl/shader/chunks/apply-interior-color.glsl.d.ts +1 -1
  252. package/lib/mol-gl/shader/chunks/apply-interior-color.glsl.js +1 -1
  253. package/lib/mol-gl/shader/chunks/assign-material-color.glsl.d.ts +1 -1
  254. package/lib/mol-gl/shader/chunks/assign-material-color.glsl.js +1 -1
  255. package/lib/mol-gl/shader/chunks/check-picking-alpha.glsl.d.ts +1 -1
  256. package/lib/mol-gl/shader/chunks/check-picking-alpha.glsl.js +1 -1
  257. package/lib/mol-gl/shader/chunks/color-vert-params.glsl.d.ts +1 -1
  258. package/lib/mol-gl/shader/chunks/color-vert-params.glsl.js +1 -1
  259. package/lib/mol-gl/shader/chunks/common-frag-params.glsl.d.ts +1 -1
  260. package/lib/mol-gl/shader/chunks/common-frag-params.glsl.js +1 -1
  261. package/lib/mol-gl/shader/chunks/common.glsl.d.ts +1 -1
  262. package/lib/mol-gl/shader/chunks/common.glsl.js +1 -1
  263. package/lib/mol-gl/shader/chunks/wboit-write.glsl.d.ts +1 -1
  264. package/lib/mol-gl/shader/chunks/wboit-write.glsl.js +1 -1
  265. package/lib/mol-gl/shader/direct-volume.frag.d.ts +1 -1
  266. package/lib/mol-gl/shader/direct-volume.frag.js +1 -1
  267. package/lib/mol-gl/shader/image.frag.d.ts +1 -1
  268. package/lib/mol-gl/shader/image.frag.js +1 -1
  269. package/lib/mol-gl/shader/outlines.frag.d.ts +3 -2
  270. package/lib/mol-gl/shader/outlines.frag.js +3 -2
  271. package/lib/mol-gl/shader/postprocessing.frag.d.ts +1 -1
  272. package/lib/mol-gl/shader/postprocessing.frag.js +1 -1
  273. package/lib/mol-gl/shader/ssao.frag.d.ts +2 -2
  274. package/lib/mol-gl/shader/ssao.frag.js +2 -2
  275. package/lib/mol-gl/webgl/render-target.d.ts +3 -1
  276. package/lib/mol-gl/webgl/render-target.js +3 -1
  277. package/lib/mol-gl/webgl/renderbuffer.d.ts +2 -1
  278. package/lib/mol-gl/webgl/renderbuffer.js +8 -1
  279. package/lib/mol-gl/webgl/state.d.ts +7 -1
  280. package/lib/mol-gl/webgl/state.js +28 -1
  281. package/lib/mol-gl/webgl/texture.js +3 -0
  282. package/lib/mol-io/reader/cif/schema/bird.d.ts +1 -1
  283. package/lib/mol-io/reader/cif/schema/bird.js +1 -1
  284. package/lib/mol-io/reader/cif/schema/ccd.d.ts +1 -1
  285. package/lib/mol-io/reader/cif/schema/ccd.js +1 -1
  286. package/lib/mol-io/reader/cif/schema/cif-core.d.ts +1 -1
  287. package/lib/mol-io/reader/cif/schema/cif-core.js +1 -1
  288. package/lib/mol-io/reader/cif/schema/mmcif.d.ts +3 -4
  289. package/lib/mol-io/reader/cif/schema/mmcif.js +2 -3
  290. package/lib/mol-io/reader/dx/parser.js +1 -1
  291. package/lib/mol-io/writer/ligand-encoder.d.ts +4 -2
  292. package/lib/mol-io/writer/ligand-encoder.js +9 -4
  293. package/lib/mol-io/writer/mol/encoder.js +16 -4
  294. package/lib/mol-io/writer/mol2/encoder.js +17 -4
  295. package/lib/mol-math/geometry/lookup3d/grid.d.ts +1 -1
  296. package/lib/mol-math/geometry/lookup3d/grid.js +3 -3
  297. package/lib/mol-model/structure/model/properties/seconday-structure.d.ts +4 -2
  298. package/lib/mol-model/structure/model/properties/seconday-structure.js +2 -1
  299. package/lib/mol-model/structure/model/types/ions.d.ts +2 -2
  300. package/lib/mol-model/structure/model/types/ions.js +2 -2
  301. package/lib/mol-model/structure/model/types/saccharides.js +1 -1
  302. package/lib/mol-model/structure/model/types.d.ts +1 -1
  303. package/lib/mol-model/structure/model/types.js +43 -41
  304. package/lib/mol-model-formats/shape/ply.d.ts +2 -2
  305. package/lib/mol-model-formats/structure/common/property.js +2 -0
  306. package/lib/mol-model-formats/structure/property/secondary-structure.d.ts +1 -1
  307. package/lib/mol-model-formats/structure/property/secondary-structure.js +2 -2
  308. package/lib/mol-model-props/computed/representations/interactions-inter-unit-cylinder.d.ts +1 -1
  309. package/lib/mol-model-props/computed/representations/interactions-intra-unit-cylinder.d.ts +1 -1
  310. package/lib/mol-model-props/computed/representations/interactions.d.ts +3 -3
  311. package/lib/mol-model-props/integrative/cross-link-restraint/representation.d.ts +4 -4
  312. package/lib/mol-plugin/behavior/dynamic/volume-streaming/model.d.ts +3 -2
  313. package/lib/mol-plugin/commands.d.ts +1 -1
  314. package/lib/mol-plugin/util/viewport-screenshot.d.ts +3 -3
  315. package/lib/mol-plugin/version.js +2 -2
  316. package/lib/mol-plugin-state/helpers/root-structure.js +3 -1
  317. package/lib/mol-plugin-state/transforms/representation.d.ts +6 -6
  318. package/lib/mol-plugin-ui/base.d.ts +3 -1
  319. package/lib/mol-plugin-ui/controls/color.d.ts +1 -1
  320. package/lib/mol-plugin-ui/controls/common.d.ts +2 -0
  321. package/lib/mol-plugin-ui/hooks/use-behavior.d.ts +1 -1
  322. package/lib/mol-plugin-ui/hooks/use-behavior.js +20 -7
  323. package/lib/mol-plugin-ui/plugin.d.ts +2 -0
  324. package/lib/mol-plugin-ui/plugin.js +2 -2
  325. package/lib/mol-plugin-ui/skin/base/base.scss +32 -32
  326. package/lib/mol-plugin-ui/skin/base/components/controls-base.scss +333 -333
  327. package/lib/mol-plugin-ui/skin/base/components/controls.scss +418 -418
  328. package/lib/mol-plugin-ui/skin/base/components/help.scss +27 -27
  329. package/lib/mol-plugin-ui/skin/base/components/line-graph.scss +67 -67
  330. package/lib/mol-plugin-ui/skin/base/components/log.scss +100 -100
  331. package/lib/mol-plugin-ui/skin/base/components/misc.scss +643 -643
  332. package/lib/mol-plugin-ui/skin/base/components/sequence.scss +125 -125
  333. package/lib/mol-plugin-ui/skin/base/components/slider.scss +165 -165
  334. package/lib/mol-plugin-ui/skin/base/components/tasks.scss +99 -99
  335. package/lib/mol-plugin-ui/skin/base/components/toast.scss +83 -83
  336. package/lib/mol-plugin-ui/skin/base/components/transformer.scss +163 -163
  337. package/lib/mol-plugin-ui/skin/base/components/viewport.scss +128 -128
  338. package/lib/mol-plugin-ui/skin/base/layout/common.scss +71 -71
  339. package/lib/mol-plugin-ui/skin/base/layout/controls-landscape.scss +89 -89
  340. package/lib/mol-plugin-ui/skin/base/layout/controls-outside.scss +98 -98
  341. package/lib/mol-plugin-ui/skin/base/layout/controls-portrait.scss +108 -108
  342. package/lib/mol-plugin-ui/skin/base/layout.scss +40 -40
  343. package/lib/mol-plugin-ui/skin/base/logo.scss +12 -12
  344. package/lib/mol-plugin-ui/skin/base/normalize.scss +209 -209
  345. package/lib/mol-plugin-ui/skin/base/ui.scss +40 -40
  346. package/lib/mol-plugin-ui/skin/base/variables.scss +85 -85
  347. package/lib/mol-plugin-ui/skin/blue.scss +1 -1
  348. package/lib/mol-plugin-ui/skin/colors/blue.scss +23 -23
  349. package/lib/mol-plugin-ui/skin/colors/dark.scss +23 -23
  350. package/lib/mol-plugin-ui/skin/colors/light.scss +29 -29
  351. package/lib/mol-plugin-ui/skin/dark.scss +1 -1
  352. package/lib/mol-plugin-ui/skin/light.scss +1 -1
  353. package/lib/mol-plugin-ui/spec.d.ts +1 -0
  354. package/lib/mol-plugin-ui/state/common.js +7 -8
  355. package/lib/mol-plugin-ui/task.d.ts +2 -21
  356. package/lib/mol-plugin-ui/task.js +40 -46
  357. package/lib/mol-plugin-ui/viewport/help.d.ts +4 -1
  358. package/lib/mol-repr/shape/loci/angle.d.ts +1 -1
  359. package/lib/mol-repr/shape/loci/dihedral.d.ts +1 -1
  360. package/lib/mol-repr/shape/loci/orientation.d.ts +1 -1
  361. package/lib/mol-repr/shape/loci/plane.d.ts +1 -1
  362. package/lib/mol-repr/shape/model/unitcell.d.ts +1 -1
  363. package/lib/mol-repr/structure/complex-visual.d.ts +3 -3
  364. package/lib/mol-repr/structure/params.d.ts +4 -4
  365. package/lib/mol-repr/structure/registry.d.ts +10 -10
  366. package/lib/mol-repr/structure/representation/backbone.d.ts +3 -3
  367. package/lib/mol-repr/structure/representation/ball-and-stick.d.ts +3 -3
  368. package/lib/mol-repr/structure/representation/carbohydrate.d.ts +3 -3
  369. package/lib/mol-repr/structure/representation/cartoon.d.ts +3 -3
  370. package/lib/mol-repr/structure/representation/ellipsoid.d.ts +3 -3
  371. package/lib/mol-repr/structure/representation/gaussian-surface.d.ts +3 -3
  372. package/lib/mol-repr/structure/representation/molecular-surface.d.ts +3 -3
  373. package/lib/mol-repr/structure/representation/orientation.d.ts +3 -3
  374. package/lib/mol-repr/structure/representation/putty.d.ts +3 -3
  375. package/lib/mol-repr/structure/representation/spacefill.d.ts +3 -3
  376. package/lib/mol-repr/structure/units-visual.d.ts +4 -4
  377. package/lib/mol-repr/structure/visual/bond-inter-unit-cylinder.d.ts +2 -2
  378. package/lib/mol-repr/structure/visual/bond-intra-unit-cylinder.d.ts +2 -2
  379. package/lib/mol-repr/structure/visual/carbohydrate-link-cylinder.d.ts +1 -1
  380. package/lib/mol-repr/structure/visual/carbohydrate-symbol-mesh.d.ts +1 -1
  381. package/lib/mol-repr/structure/visual/carbohydrate-terminal-link-cylinder.d.ts +1 -1
  382. package/lib/mol-repr/structure/visual/element-sphere.d.ts +2 -2
  383. package/lib/mol-repr/structure/visual/ellipsoid-mesh.d.ts +1 -1
  384. package/lib/mol-repr/structure/visual/gaussian-surface-mesh.d.ts +4 -4
  385. package/lib/mol-repr/structure/visual/molecular-surface-mesh.d.ts +1 -1
  386. package/lib/mol-repr/structure/visual/nucleotide-block-mesh.d.ts +1 -1
  387. package/lib/mol-repr/structure/visual/nucleotide-ring-mesh.d.ts +1 -1
  388. package/lib/mol-repr/structure/visual/orientation-ellipsoid-mesh.d.ts +1 -1
  389. package/lib/mol-repr/structure/visual/polymer-backbone-cylinder.d.ts +2 -2
  390. package/lib/mol-repr/structure/visual/polymer-backbone-sphere.d.ts +2 -2
  391. package/lib/mol-repr/structure/visual/polymer-direction-wedge.d.ts +1 -1
  392. package/lib/mol-repr/structure/visual/polymer-gap-cylinder.d.ts +1 -1
  393. package/lib/mol-repr/structure/visual/polymer-trace-mesh.d.ts +1 -1
  394. package/lib/mol-repr/structure/visual/polymer-tube-mesh.d.ts +1 -1
  395. package/lib/mol-repr/util.d.ts +1 -1
  396. package/lib/mol-repr/util.js +1 -1
  397. package/lib/mol-repr/volume/isosurface.d.ts +5 -5
  398. package/lib/mol-repr/volume/registry.d.ts +1 -1
  399. package/lib/mol-repr/volume/slice.js +1 -1
  400. package/lib/mol-script/language/builder.d.ts +0 -1
  401. package/lib/mol-theme/color/volume-value.d.ts +3 -2
  402. package/lib/mol-theme/color/volume-value.js +2 -4
  403. package/lib/mol-theme/color.d.ts +55 -39
  404. package/lib/mol-theme/color.js +1 -1
  405. package/lib/mol-theme/theme.d.ts +8 -7
  406. package/lib/mol-theme/theme.js +1 -1
  407. package/lib/servers/model/server/query.js +1 -3
  408. package/lib/servers/model/version.d.ts +1 -1
  409. package/lib/servers/model/version.js +1 -1
  410. package/package.json +162 -162
@@ -60,7 +60,7 @@ export declare const ImageParams: {
60
60
  flipSided: any;
61
61
  flatShaded: any;
62
62
  xrayShaded: any;
63
- allowTransparentBackfaces: any;
63
+ transparentBackfaces: any;
64
64
  bumpFrequency: any;
65
65
  bumpAmplitude: any;
66
66
  quality: any;
@@ -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
  */
@@ -38,6 +38,7 @@ export declare class PostprocessingPass {
38
38
  private webgl;
39
39
  private drawPass;
40
40
  static isEnabled(props: PostprocessingProps): boolean;
41
+ static isOutlineEnabled(props: PostprocessingProps): boolean;
41
42
  readonly target: RenderTarget;
42
43
  private readonly outlinesTarget;
43
44
  private readonly outlinesRenderable;
@@ -21,9 +21,11 @@ import { postprocessing_frag } from '../../mol-gl/shader/postprocessing.frag';
21
21
  import { Color } from '../../mol-util/color';
22
22
  import { FxaaParams, FxaaPass } from './fxaa';
23
23
  import { SmaaParams, SmaaPass } from './smaa';
24
- var OutlinesSchema = __assign(__assign({}, QuadSchema), { tDepth: TextureSpec('texture', 'rgba', 'ubyte', 'nearest'), uTexSize: UniformSpec('v2'), dOrthographic: DefineSpec('number'), uNear: UniformSpec('f'), uFar: UniformSpec('f'), uMaxPossibleViewZDiff: UniformSpec('f') });
25
- function getOutlinesRenderable(ctx, depthTexture) {
26
- var values = __assign(__assign({}, QuadValues), { tDepth: ValueCell.create(depthTexture), uTexSize: ValueCell.create(Vec2.create(depthTexture.getWidth(), depthTexture.getHeight())), dOrthographic: ValueCell.create(0), uNear: ValueCell.create(1), uFar: ValueCell.create(10000), uMaxPossibleViewZDiff: ValueCell.create(0.5) });
24
+ var OutlinesSchema = __assign(__assign({}, QuadSchema), { tDepthOpaque: TextureSpec('texture', 'rgba', 'ubyte', 'nearest'), tDepthTransparent: TextureSpec('texture', 'rgba', 'ubyte', 'nearest'), uTexSize: UniformSpec('v2'), dOrthographic: DefineSpec('number'), uNear: UniformSpec('f'), uFar: UniformSpec('f'), uMaxPossibleViewZDiff: UniformSpec('f') });
25
+ function getOutlinesRenderable(ctx, depthTextureOpaque, depthTextureTransparent) {
26
+ var width = depthTextureOpaque.getWidth();
27
+ var height = depthTextureOpaque.getHeight();
28
+ var values = __assign(__assign({}, QuadValues), { tDepthOpaque: ValueCell.create(depthTextureOpaque), tDepthTransparent: ValueCell.create(depthTextureTransparent), uTexSize: ValueCell.create(Vec2.create(width, height)), dOrthographic: ValueCell.create(0), uNear: ValueCell.create(1), uFar: ValueCell.create(10000), uMaxPossibleViewZDiff: ValueCell.create(0.5) });
27
29
  var schema = __assign({}, OutlinesSchema);
28
30
  var shaderCode = ShaderCode('outlines', quad_vert, outlines_frag);
29
31
  var renderItem = createComputeRenderItem(ctx, 'triangles', shaderCode, schema, values);
@@ -65,9 +67,9 @@ function getSamples(vectorSamples, nSamples) {
65
67
  }
66
68
  return samples;
67
69
  }
68
- var PostprocessingSchema = __assign(__assign({}, QuadSchema), { tSsaoDepth: TextureSpec('texture', 'rgba', 'ubyte', 'nearest'), tColor: TextureSpec('texture', 'rgba', 'ubyte', 'nearest'), tDepth: TextureSpec('texture', 'rgba', 'ubyte', 'nearest'), tOutlines: TextureSpec('texture', 'rgba', 'ubyte', 'nearest'), uTexSize: UniformSpec('v2'), dOrthographic: DefineSpec('number'), uNear: UniformSpec('f'), uFar: UniformSpec('f'), uFogNear: UniformSpec('f'), uFogFar: UniformSpec('f'), uFogColor: UniformSpec('v3'), uOutlineColor: UniformSpec('v3'), uTransparentBackground: UniformSpec('b'), uMaxPossibleViewZDiff: UniformSpec('f'), dOcclusionEnable: DefineSpec('boolean'), uOcclusionOffset: UniformSpec('v2'), dOutlineEnable: DefineSpec('boolean'), dOutlineScale: DefineSpec('number'), uOutlineThreshold: UniformSpec('f') });
69
- function getPostprocessingRenderable(ctx, colorTexture, depthTexture, outlinesTexture, ssaoDepthTexture) {
70
- var values = __assign(__assign({}, QuadValues), { tSsaoDepth: ValueCell.create(ssaoDepthTexture), tColor: ValueCell.create(colorTexture), tDepth: ValueCell.create(depthTexture), tOutlines: ValueCell.create(outlinesTexture), uTexSize: ValueCell.create(Vec2.create(colorTexture.getWidth(), colorTexture.getHeight())), dOrthographic: ValueCell.create(0), uNear: ValueCell.create(1), uFar: ValueCell.create(10000), uFogNear: ValueCell.create(10000), uFogFar: ValueCell.create(10000), uFogColor: ValueCell.create(Vec3.create(1, 1, 1)), uOutlineColor: ValueCell.create(Vec3.create(0, 0, 0)), uTransparentBackground: ValueCell.create(false), uMaxPossibleViewZDiff: ValueCell.create(0.5), dOcclusionEnable: ValueCell.create(true), uOcclusionOffset: ValueCell.create(Vec2.create(0, 0)), dOutlineEnable: ValueCell.create(false), dOutlineScale: ValueCell.create(1), uOutlineThreshold: ValueCell.create(0.33) });
70
+ var PostprocessingSchema = __assign(__assign({}, QuadSchema), { tSsaoDepth: TextureSpec('texture', 'rgba', 'ubyte', 'nearest'), tColor: TextureSpec('texture', 'rgba', 'ubyte', 'nearest'), tDepthOpaque: TextureSpec('texture', 'rgba', 'ubyte', 'nearest'), tDepthTransparent: TextureSpec('texture', 'rgba', 'ubyte', 'nearest'), tOutlines: TextureSpec('texture', 'rgba', 'ubyte', 'nearest'), uTexSize: UniformSpec('v2'), dOrthographic: DefineSpec('number'), uNear: UniformSpec('f'), uFar: UniformSpec('f'), uFogNear: UniformSpec('f'), uFogFar: UniformSpec('f'), uFogColor: UniformSpec('v3'), uOutlineColor: UniformSpec('v3'), uTransparentBackground: UniformSpec('b'), uMaxPossibleViewZDiff: UniformSpec('f'), dOcclusionEnable: DefineSpec('boolean'), uOcclusionOffset: UniformSpec('v2'), dOutlineEnable: DefineSpec('boolean'), dOutlineScale: DefineSpec('number'), uOutlineThreshold: UniformSpec('f') });
71
+ function getPostprocessingRenderable(ctx, colorTexture, depthTextureOpaque, depthTextureTransparent, outlinesTexture, ssaoDepthTexture) {
72
+ var values = __assign(__assign({}, QuadValues), { tSsaoDepth: ValueCell.create(ssaoDepthTexture), tColor: ValueCell.create(colorTexture), tDepthOpaque: ValueCell.create(depthTextureOpaque), tDepthTransparent: ValueCell.create(depthTextureTransparent), tOutlines: ValueCell.create(outlinesTexture), uTexSize: ValueCell.create(Vec2.create(colorTexture.getWidth(), colorTexture.getHeight())), dOrthographic: ValueCell.create(0), uNear: ValueCell.create(1), uFar: ValueCell.create(10000), uFogNear: ValueCell.create(10000), uFogFar: ValueCell.create(10000), uFogColor: ValueCell.create(Vec3.create(1, 1, 1)), uOutlineColor: ValueCell.create(Vec3.create(0, 0, 0)), uTransparentBackground: ValueCell.create(false), uMaxPossibleViewZDiff: ValueCell.create(0.5), dOcclusionEnable: ValueCell.create(true), uOcclusionOffset: ValueCell.create(Vec2.create(0, 0)), dOutlineEnable: ValueCell.create(false), dOutlineScale: ValueCell.create(1), uOutlineThreshold: ValueCell.create(0.33) });
71
73
  var schema = __assign({}, PostprocessingSchema);
72
74
  var shaderCode = ShaderCode('postprocessing', quad_vert, postprocessing_frag);
73
75
  var renderItem = createComputeRenderItem(ctx, 'triangles', shaderCode, schema, values);
@@ -103,7 +105,7 @@ var PostprocessingPass = /** @class */ (function () {
103
105
  this.webgl = webgl;
104
106
  this.drawPass = drawPass;
105
107
  this.occlusionOffset = [0, 0];
106
- var colorTarget = drawPass.colorTarget, depthTexture = drawPass.depthTexture;
108
+ var colorTarget = drawPass.colorTarget, depthTextureTransparent = drawPass.depthTexture, depthTextureOpaque = drawPass.depthTexturePrimitives;
107
109
  var width = colorTarget.getWidth();
108
110
  var height = colorTarget.getHeight();
109
111
  this.nSamples = 1;
@@ -113,7 +115,7 @@ var PostprocessingPass = /** @class */ (function () {
113
115
  // needs to be linear for anti-aliasing pass
114
116
  this.target = webgl.createRenderTarget(width, height, false, 'uint8', 'linear');
115
117
  this.outlinesTarget = webgl.createRenderTarget(width, height, false);
116
- this.outlinesRenderable = getOutlinesRenderable(webgl, depthTexture);
118
+ this.outlinesRenderable = getOutlinesRenderable(webgl, depthTextureOpaque, depthTextureTransparent);
117
119
  this.randomHemisphereVector = [];
118
120
  for (var i = 0; i < 256; i++) {
119
121
  var v = Vec3();
@@ -130,7 +132,7 @@ var PostprocessingPass = /** @class */ (function () {
130
132
  var sw = Math.floor(width * this.ssaoScale);
131
133
  var sh = Math.floor(height * this.ssaoScale);
132
134
  this.downsampledDepthTarget = webgl.createRenderTarget(sw, sh, false, 'uint8', 'linear');
133
- this.downsampleDepthRenderable = createCopyRenderable(webgl, depthTexture);
135
+ this.downsampleDepthRenderable = createCopyRenderable(webgl, depthTextureOpaque);
134
136
  this.ssaoDepthTexture = webgl.resources.texture('image-uint8', 'rgba', 'ubyte', 'linear');
135
137
  this.ssaoDepthTexture.define(sw, sh);
136
138
  this.ssaoDepthTexture.attachFramebuffer(this.ssaoFramebuffer, 'color0');
@@ -138,14 +140,17 @@ var PostprocessingPass = /** @class */ (function () {
138
140
  this.ssaoDepthBlurProxyTexture.define(sw, sh);
139
141
  this.ssaoDepthBlurProxyTexture.attachFramebuffer(this.ssaoBlurFirstPassFramebuffer, 'color0');
140
142
  this.ssaoDepthTexture.attachFramebuffer(this.ssaoBlurSecondPassFramebuffer, 'color0');
141
- this.ssaoRenderable = getSsaoRenderable(webgl, this.downsampleFactor === 1 ? depthTexture : this.downsampledDepthTarget.texture);
143
+ this.ssaoRenderable = getSsaoRenderable(webgl, this.downsampleFactor === 1 ? depthTextureOpaque : this.downsampledDepthTarget.texture);
142
144
  this.ssaoBlurFirstPassRenderable = getSsaoBlurRenderable(webgl, this.ssaoDepthTexture, 'horizontal');
143
145
  this.ssaoBlurSecondPassRenderable = getSsaoBlurRenderable(webgl, this.ssaoDepthBlurProxyTexture, 'vertical');
144
- this.renderable = getPostprocessingRenderable(webgl, colorTarget.texture, depthTexture, this.outlinesTarget.texture, this.ssaoDepthTexture);
146
+ this.renderable = getPostprocessingRenderable(webgl, colorTarget.texture, depthTextureOpaque, depthTextureTransparent, this.outlinesTarget.texture, this.ssaoDepthTexture);
145
147
  }
146
148
  PostprocessingPass.isEnabled = function (props) {
147
149
  return props.occlusion.name === 'on' || props.outline.name === 'on';
148
150
  };
151
+ PostprocessingPass.isOutlineEnabled = function (props) {
152
+ return props.outline.name === 'on';
153
+ };
149
154
  PostprocessingPass.prototype.calcSsaoScale = function () {
150
155
  // downscale ssao for high pixel-ratios
151
156
  return Math.min(1, 1 / this.webgl.pixelRatio) * this.downsampleFactor;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2018-2021 mol* contributors, licensed under MIT, See LICENSE file for more info.
2
+ * Copyright (c) 2018-2022 mol* contributors, licensed under MIT, See LICENSE file for more info.
3
3
  *
4
4
  * @author Alexander Rose <alexander.rose@weirdbyte.de>
5
5
  * @author David Sehnal <david.sehnal@gmail.com>
@@ -9,9 +9,12 @@ import { TextureImage } from '../../mol-gl/renderable/util';
9
9
  import { Color } from '../../mol-util/color';
10
10
  import { Vec2, Vec3, Vec4 } from '../../mol-math/linear-algebra';
11
11
  import { LocationIterator } from '../util/location-iterator';
12
- import { ColorTheme } from '../../mol-theme/color';
12
+ import { ColorTheme, ColorVolume } from '../../mol-theme/color';
13
13
  import { Texture } from '../../mol-gl/webgl/texture';
14
- export declare type ColorType = 'uniform' | 'instance' | 'group' | 'groupInstance' | 'vertex' | 'vertexInstance' | 'volume' | 'volumeInstance' | 'direct';
14
+ export declare type ColorTypeLocation = 'uniform' | 'instance' | 'group' | 'groupInstance' | 'vertex' | 'vertexInstance';
15
+ export declare type ColorTypeGrid = 'volume' | 'volumeInstance';
16
+ export declare type ColorTypeDirect = 'direct';
17
+ export declare type ColorType = ColorTypeLocation | ColorTypeGrid | ColorTypeDirect;
15
18
  export declare type ColorData = {
16
19
  uColor: ValueCell<Vec3>;
17
20
  tColor: ValueCell<TextureImage<Uint8Array>>;
@@ -23,13 +26,7 @@ export declare type ColorData = {
23
26
  dColorType: ValueCell<string>;
24
27
  dUsePalette: ValueCell<boolean>;
25
28
  };
26
- export declare function createColors(locationIt: LocationIterator, positionIt: LocationIterator, colorTheme: ColorTheme<any>, colorData?: ColorData): ColorData;
29
+ export declare function createColors(locationIt: LocationIterator, positionIt: LocationIterator, colorTheme: ColorTheme<any, any>, colorData?: ColorData): ColorData;
27
30
  export declare function createValueColor(value: Color, colorData?: ColorData): ColorData;
28
31
  export declare function createTextureColor(colors: TextureImage<Uint8Array>, type: ColorType, colorData?: ColorData): ColorData;
29
- interface ColorVolume {
30
- colors: Texture;
31
- dimension: Vec3;
32
- transform: Vec4;
33
- }
34
32
  export declare function createGridColor(grid: ColorVolume, type: ColorType, colorData?: ColorData): ColorData;
35
- export {};
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2018-2021 mol* contributors, licensed under MIT, See LICENSE file for more info.
2
+ * Copyright (c) 2018-2022 mol* contributors, licensed under MIT, See LICENSE file for more info.
3
3
  *
4
4
  * @author Alexander Rose <alexander.rose@weirdbyte.de>
5
5
  * @author David Sehnal <david.sehnal@gmail.com>
@@ -9,7 +9,6 @@ import { createTextureImage } from '../../mol-gl/renderable/util';
9
9
  import { Color } from '../../mol-util/color';
10
10
  import { Vec2, Vec3, Vec4 } from '../../mol-math/linear-algebra';
11
11
  import { NullLocation } from '../../mol-model/location';
12
- import { Geometry } from './geometry';
13
12
  import { createNullTexture } from '../../mol-gl/webgl/texture';
14
13
  export function createColors(locationIt, positionIt, colorTheme, colorData) {
15
14
  var data = _createColors(locationIt, positionIt, colorTheme, colorData);
@@ -23,9 +22,12 @@ export function createColors(locationIt, positionIt, colorTheme, colorData) {
23
22
  return data;
24
23
  }
25
24
  function _createColors(locationIt, positionIt, colorTheme, colorData) {
26
- switch (Geometry.getGranularity(locationIt, colorTheme.granularity)) {
25
+ switch (colorTheme.granularity) {
27
26
  case 'uniform': return createUniformColor(locationIt, colorTheme.color, colorData);
28
- case 'instance': return createInstanceColor(locationIt, colorTheme.color, colorData);
27
+ case 'instance':
28
+ return locationIt.nonInstanceable
29
+ ? createInstanceColor(locationIt, colorTheme.color, colorData)
30
+ : createGroupColor(locationIt, colorTheme.color, colorData);
29
31
  case 'group': return createGroupColor(locationIt, colorTheme.color, colorData);
30
32
  case 'groupInstance': return createGroupInstanceColor(locationIt, colorTheme.color, colorData);
31
33
  case 'vertex': return createVertexColor(positionIt, colorTheme.color, colorData);
@@ -178,6 +180,7 @@ function createVertexInstanceColor(locationIt, color, colorData) {
178
180
  }
179
181
  return createTextureColor(colors, 'vertexInstance', colorData);
180
182
  }
183
+ //
181
184
  export function createGridColor(grid, type, colorData) {
182
185
  var colors = grid.colors, dimension = grid.dimension, transform = grid.transform;
183
186
  var width = colors.getWidth();
@@ -43,15 +43,15 @@ export declare namespace Cylinders {
43
43
  doubleSided: PD.BooleanParam;
44
44
  ignoreLight: PD.BooleanParam;
45
45
  xrayShaded: PD.BooleanParam;
46
- allowTransparentBackfaces: PD.BooleanParam;
46
+ transparentBackfaces: PD.Select<string>;
47
47
  bumpFrequency: PD.Numeric;
48
48
  bumpAmplitude: PD.Numeric;
49
49
  alpha: PD.Numeric;
50
50
  quality: PD.Select<"auto" | "medium" | "high" | "low" | "custom" | "highest" | "higher" | "lower" | "lowest">;
51
51
  material: PD.Group<PD.Normalize<{
52
52
  metalness: number;
53
- roughness: number;
54
53
  /** Number of cylinders */
54
+ roughness: number;
55
55
  bumpiness: number;
56
56
  }>>;
57
57
  clip: PD.Group<PD.Normalize<{
@@ -107,7 +107,7 @@ export var Cylinders;
107
107
  }
108
108
  Cylinders.transform = transform;
109
109
  //
110
- Cylinders.Params = __assign(__assign({}, BaseGeometry.Params), { sizeFactor: PD.Numeric(1, { min: 0, max: 10, step: 0.1 }), sizeAspectRatio: PD.Numeric(1, { min: 0, max: 3, step: 0.01 }), doubleSided: PD.Boolean(false, BaseGeometry.CustomQualityParamInfo), ignoreLight: PD.Boolean(false, BaseGeometry.ShadingCategory), xrayShaded: PD.Boolean(false, BaseGeometry.ShadingCategory), allowTransparentBackfaces: PD.Boolean(false, BaseGeometry.ShadingCategory), bumpFrequency: PD.Numeric(0, { min: 0, max: 10, step: 0.1 }, BaseGeometry.ShadingCategory), bumpAmplitude: PD.Numeric(1, { min: 0, max: 5, step: 0.1 }, BaseGeometry.ShadingCategory) });
110
+ Cylinders.Params = __assign(__assign({}, BaseGeometry.Params), { sizeFactor: PD.Numeric(1, { min: 0, max: 10, step: 0.1 }), sizeAspectRatio: PD.Numeric(1, { min: 0, max: 3, step: 0.01 }), doubleSided: PD.Boolean(false, BaseGeometry.CustomQualityParamInfo), ignoreLight: PD.Boolean(false, BaseGeometry.ShadingCategory), xrayShaded: PD.Boolean(false, BaseGeometry.ShadingCategory), transparentBackfaces: PD.Select('off', PD.arrayToOptions(['off', 'on', 'opaque']), BaseGeometry.ShadingCategory), bumpFrequency: PD.Numeric(0, { min: 0, max: 10, step: 0.1 }, BaseGeometry.ShadingCategory), bumpAmplitude: PD.Numeric(1, { min: 0, max: 5, step: 0.1 }, BaseGeometry.ShadingCategory) });
111
111
  Cylinders.Utils = {
112
112
  Params: Cylinders.Params,
113
113
  createEmpty: createEmpty,
@@ -153,7 +153,7 @@ export var Cylinders;
153
153
  var padding = getMaxSize(size) * props.sizeFactor;
154
154
  var invariantBoundingSphere = Sphere3D.clone(cylinders.boundingSphere);
155
155
  var boundingSphere = calculateTransformBoundingSphere(invariantBoundingSphere, transform.aTransform.ref.value, instanceCount);
156
- return __assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({ dGeometryType: ValueCell.create('cylinders'), aMapping: cylinders.mappingBuffer, aGroup: cylinders.groupBuffer, aStart: cylinders.startBuffer, aEnd: cylinders.endBuffer, aScale: cylinders.scaleBuffer, aCap: cylinders.capBuffer, elements: cylinders.indexBuffer, boundingSphere: ValueCell.create(boundingSphere), invariantBoundingSphere: ValueCell.create(invariantBoundingSphere), uInvariantBoundingSphere: ValueCell.create(Vec4.ofSphere(invariantBoundingSphere)) }, color), size), marker), overpaint), transparency), material), clipping), transform), { padding: ValueCell.create(padding) }), BaseGeometry.createValues(props, counts)), { uSizeFactor: ValueCell.create(props.sizeFactor * props.sizeAspectRatio), uDoubleSided: ValueCell.create(props.doubleSided), dIgnoreLight: ValueCell.create(props.ignoreLight), dXrayShaded: ValueCell.create(props.xrayShaded), uBumpFrequency: ValueCell.create(props.bumpFrequency), uBumpAmplitude: ValueCell.create(props.bumpAmplitude) });
156
+ return __assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({ dGeometryType: ValueCell.create('cylinders'), aMapping: cylinders.mappingBuffer, aGroup: cylinders.groupBuffer, aStart: cylinders.startBuffer, aEnd: cylinders.endBuffer, aScale: cylinders.scaleBuffer, aCap: cylinders.capBuffer, elements: cylinders.indexBuffer, boundingSphere: ValueCell.create(boundingSphere), invariantBoundingSphere: ValueCell.create(invariantBoundingSphere), uInvariantBoundingSphere: ValueCell.create(Vec4.ofSphere(invariantBoundingSphere)) }, color), size), marker), overpaint), transparency), material), clipping), transform), { padding: ValueCell.create(padding) }), BaseGeometry.createValues(props, counts)), { uSizeFactor: ValueCell.create(props.sizeFactor * props.sizeAspectRatio), uDoubleSided: ValueCell.create(props.doubleSided), dIgnoreLight: ValueCell.create(props.ignoreLight), dXrayShaded: ValueCell.create(props.xrayShaded), dTransparentBackfaces: ValueCell.create(props.transparentBackfaces), uBumpFrequency: ValueCell.create(props.bumpFrequency), uBumpAmplitude: ValueCell.create(props.bumpAmplitude) });
157
157
  }
158
158
  function createValuesSimple(cylinders, props, colorValue, sizeValue, transform) {
159
159
  var s = BaseGeometry.createSimple(colorValue, sizeValue, transform);
@@ -166,6 +166,7 @@ export var Cylinders;
166
166
  ValueCell.updateIfChanged(values.uDoubleSided, props.doubleSided);
167
167
  ValueCell.updateIfChanged(values.dIgnoreLight, props.ignoreLight);
168
168
  ValueCell.updateIfChanged(values.dXrayShaded, props.xrayShaded);
169
+ ValueCell.updateIfChanged(values.dTransparentBackfaces, props.transparentBackfaces);
169
170
  ValueCell.updateIfChanged(values.uBumpFrequency, props.bumpFrequency);
170
171
  ValueCell.updateIfChanged(values.uBumpAmplitude, props.bumpAmplitude);
171
172
  }
@@ -44,6 +44,7 @@ export declare namespace Lines {
44
44
  material: PD.Group<PD.Normalize<{
45
45
  metalness: number;
46
46
  roughness: number;
47
+ /** Number of lines */
47
48
  bumpiness: number;
48
49
  }>>;
49
50
  clip: PD.Group<PD.Normalize<{
@@ -62,7 +62,7 @@ export declare namespace Mesh {
62
62
  flatShaded: PD.BooleanParam;
63
63
  ignoreLight: PD.BooleanParam;
64
64
  xrayShaded: PD.BooleanParam;
65
- allowTransparentBackfaces: PD.BooleanParam;
65
+ transparentBackfaces: PD.Select<string>;
66
66
  bumpFrequency: PD.Numeric;
67
67
  bumpAmplitude: PD.Numeric;
68
68
  alpha: PD.Numeric;
@@ -551,7 +551,7 @@ export var Mesh;
551
551
  }
552
552
  Mesh.smoothEdges = smoothEdges;
553
553
  //
554
- Mesh.Params = __assign(__assign({}, BaseGeometry.Params), { doubleSided: PD.Boolean(false, BaseGeometry.CustomQualityParamInfo), flipSided: PD.Boolean(false, BaseGeometry.ShadingCategory), flatShaded: PD.Boolean(false, BaseGeometry.ShadingCategory), ignoreLight: PD.Boolean(false, BaseGeometry.ShadingCategory), xrayShaded: PD.Boolean(false, BaseGeometry.ShadingCategory), allowTransparentBackfaces: PD.Boolean(false, BaseGeometry.ShadingCategory), bumpFrequency: PD.Numeric(0, { min: 0, max: 10, step: 0.1 }, BaseGeometry.ShadingCategory), bumpAmplitude: PD.Numeric(1, { min: 0, max: 5, step: 0.1 }, BaseGeometry.ShadingCategory) });
554
+ Mesh.Params = __assign(__assign({}, BaseGeometry.Params), { doubleSided: PD.Boolean(false, BaseGeometry.CustomQualityParamInfo), flipSided: PD.Boolean(false, BaseGeometry.ShadingCategory), flatShaded: PD.Boolean(false, BaseGeometry.ShadingCategory), ignoreLight: PD.Boolean(false, BaseGeometry.ShadingCategory), xrayShaded: PD.Boolean(false, BaseGeometry.ShadingCategory), transparentBackfaces: PD.Select('off', PD.arrayToOptions(['off', 'on', 'opaque']), BaseGeometry.ShadingCategory), bumpFrequency: PD.Numeric(0, { min: 0, max: 10, step: 0.1 }, BaseGeometry.ShadingCategory), bumpAmplitude: PD.Numeric(1, { min: 0, max: 5, step: 0.1 }, BaseGeometry.ShadingCategory) });
555
555
  Mesh.Utils = {
556
556
  Params: Mesh.Params,
557
557
  createEmpty: createEmpty,
@@ -593,7 +593,7 @@ export var Mesh;
593
593
  var counts = { drawCount: mesh.triangleCount * 3, vertexCount: mesh.vertexCount, groupCount: groupCount, instanceCount: instanceCount };
594
594
  var invariantBoundingSphere = Sphere3D.clone(mesh.boundingSphere);
595
595
  var boundingSphere = calculateTransformBoundingSphere(invariantBoundingSphere, transform.aTransform.ref.value, instanceCount);
596
- return __assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({ dGeometryType: ValueCell.create('mesh'), aPosition: mesh.vertexBuffer, aNormal: mesh.normalBuffer, aGroup: mesh.groupBuffer, elements: mesh.indexBuffer, boundingSphere: ValueCell.create(boundingSphere), invariantBoundingSphere: ValueCell.create(invariantBoundingSphere), uInvariantBoundingSphere: ValueCell.create(Vec4.ofSphere(invariantBoundingSphere)) }, color), marker), overpaint), transparency), material), clipping), transform), BaseGeometry.createValues(props, counts)), { uDoubleSided: ValueCell.create(props.doubleSided), dFlatShaded: ValueCell.create(props.flatShaded), dFlipSided: ValueCell.create(props.flipSided), dIgnoreLight: ValueCell.create(props.ignoreLight), dXrayShaded: ValueCell.create(props.xrayShaded), uBumpFrequency: ValueCell.create(props.bumpFrequency), uBumpAmplitude: ValueCell.create(props.bumpAmplitude), meta: ValueCell.create(mesh.meta) });
596
+ return __assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({ dGeometryType: ValueCell.create('mesh'), aPosition: mesh.vertexBuffer, aNormal: mesh.normalBuffer, aGroup: mesh.groupBuffer, elements: mesh.indexBuffer, boundingSphere: ValueCell.create(boundingSphere), invariantBoundingSphere: ValueCell.create(invariantBoundingSphere), uInvariantBoundingSphere: ValueCell.create(Vec4.ofSphere(invariantBoundingSphere)) }, color), marker), overpaint), transparency), material), clipping), transform), BaseGeometry.createValues(props, counts)), { uDoubleSided: ValueCell.create(props.doubleSided), dFlatShaded: ValueCell.create(props.flatShaded), dFlipSided: ValueCell.create(props.flipSided), dIgnoreLight: ValueCell.create(props.ignoreLight), dXrayShaded: ValueCell.create(props.xrayShaded), dTransparentBackfaces: ValueCell.create(props.transparentBackfaces), uBumpFrequency: ValueCell.create(props.bumpFrequency), uBumpAmplitude: ValueCell.create(props.bumpAmplitude), meta: ValueCell.create(mesh.meta) });
597
597
  }
598
598
  function createValuesSimple(mesh, props, colorValue, sizeValue, transform) {
599
599
  var s = BaseGeometry.createSimple(colorValue, sizeValue, transform);
@@ -607,6 +607,7 @@ export var Mesh;
607
607
  ValueCell.updateIfChanged(values.dFlipSided, props.flipSided);
608
608
  ValueCell.updateIfChanged(values.dIgnoreLight, props.ignoreLight);
609
609
  ValueCell.updateIfChanged(values.dXrayShaded, props.xrayShaded);
610
+ ValueCell.updateIfChanged(values.dTransparentBackfaces, props.transparentBackfaces);
610
611
  ValueCell.updateIfChanged(values.uBumpFrequency, props.bumpFrequency);
611
612
  ValueCell.updateIfChanged(values.uBumpAmplitude, props.bumpAmplitude);
612
613
  }
@@ -43,7 +43,7 @@ export declare namespace Points {
43
43
  quality: PD.Select<"auto" | "medium" | "high" | "low" | "custom" | "highest" | "higher" | "lower" | "lowest">;
44
44
  material: PD.Group<PD.Normalize<{
45
45
  metalness: number;
46
- roughness: number; /** Number of vertices in the point cloud */
46
+ roughness: number;
47
47
  bumpiness: number;
48
48
  }>>;
49
49
  clip: PD.Group<PD.Normalize<{
@@ -34,7 +34,7 @@ export declare namespace Spheres {
34
34
  doubleSided: PD.BooleanParam;
35
35
  ignoreLight: PD.BooleanParam;
36
36
  xrayShaded: PD.BooleanParam;
37
- allowTransparentBackfaces: PD.BooleanParam;
37
+ transparentBackfaces: PD.Select<string>;
38
38
  bumpFrequency: PD.Numeric;
39
39
  bumpAmplitude: PD.Numeric;
40
40
  alpha: PD.Numeric;
@@ -88,7 +88,7 @@ export var Spheres;
88
88
  ValueCell.update(spheres.groupBuffer, groups);
89
89
  return spheres;
90
90
  }
91
- Spheres.Params = __assign(__assign({}, BaseGeometry.Params), { sizeFactor: PD.Numeric(1, { min: 0, max: 10, step: 0.1 }), doubleSided: PD.Boolean(false, BaseGeometry.CustomQualityParamInfo), ignoreLight: PD.Boolean(false, BaseGeometry.ShadingCategory), xrayShaded: PD.Boolean(false, BaseGeometry.ShadingCategory), allowTransparentBackfaces: PD.Boolean(false, BaseGeometry.ShadingCategory), bumpFrequency: PD.Numeric(0, { min: 0, max: 10, step: 0.1 }, BaseGeometry.ShadingCategory), bumpAmplitude: PD.Numeric(1, { min: 0, max: 5, step: 0.1 }, BaseGeometry.ShadingCategory) });
91
+ Spheres.Params = __assign(__assign({}, BaseGeometry.Params), { sizeFactor: PD.Numeric(1, { min: 0, max: 10, step: 0.1 }), doubleSided: PD.Boolean(false, BaseGeometry.CustomQualityParamInfo), ignoreLight: PD.Boolean(false, BaseGeometry.ShadingCategory), xrayShaded: PD.Boolean(false, BaseGeometry.ShadingCategory), transparentBackfaces: PD.Select('off', PD.arrayToOptions(['off', 'on', 'opaque']), BaseGeometry.ShadingCategory), bumpFrequency: PD.Numeric(0, { min: 0, max: 10, step: 0.1 }, BaseGeometry.ShadingCategory), bumpAmplitude: PD.Numeric(1, { min: 0, max: 5, step: 0.1 }, BaseGeometry.ShadingCategory) });
92
92
  Spheres.Utils = {
93
93
  Params: Spheres.Params,
94
94
  createEmpty: createEmpty,
@@ -132,7 +132,7 @@ export var Spheres;
132
132
  var padding = spheres.boundingSphere.radius ? getMaxSize(size) * props.sizeFactor : 0;
133
133
  var invariantBoundingSphere = Sphere3D.expand(Sphere3D(), spheres.boundingSphere, padding);
134
134
  var boundingSphere = calculateTransformBoundingSphere(invariantBoundingSphere, transform.aTransform.ref.value, instanceCount);
135
- return __assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({ dGeometryType: ValueCell.create('spheres'), aPosition: spheres.centerBuffer, aMapping: spheres.mappingBuffer, aGroup: spheres.groupBuffer, elements: spheres.indexBuffer, boundingSphere: ValueCell.create(boundingSphere), invariantBoundingSphere: ValueCell.create(invariantBoundingSphere), uInvariantBoundingSphere: ValueCell.create(Vec4.ofSphere(invariantBoundingSphere)) }, color), size), marker), overpaint), transparency), material), clipping), transform), { padding: ValueCell.create(padding) }), BaseGeometry.createValues(props, counts)), { uSizeFactor: ValueCell.create(props.sizeFactor), uDoubleSided: ValueCell.create(props.doubleSided), dIgnoreLight: ValueCell.create(props.ignoreLight), dXrayShaded: ValueCell.create(props.xrayShaded), uBumpFrequency: ValueCell.create(props.bumpFrequency), uBumpAmplitude: ValueCell.create(props.bumpAmplitude) });
135
+ return __assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({ dGeometryType: ValueCell.create('spheres'), aPosition: spheres.centerBuffer, aMapping: spheres.mappingBuffer, aGroup: spheres.groupBuffer, elements: spheres.indexBuffer, boundingSphere: ValueCell.create(boundingSphere), invariantBoundingSphere: ValueCell.create(invariantBoundingSphere), uInvariantBoundingSphere: ValueCell.create(Vec4.ofSphere(invariantBoundingSphere)) }, color), size), marker), overpaint), transparency), material), clipping), transform), { padding: ValueCell.create(padding) }), BaseGeometry.createValues(props, counts)), { uSizeFactor: ValueCell.create(props.sizeFactor), uDoubleSided: ValueCell.create(props.doubleSided), dIgnoreLight: ValueCell.create(props.ignoreLight), dXrayShaded: ValueCell.create(props.xrayShaded), dTransparentBackfaces: ValueCell.create(props.transparentBackfaces), uBumpFrequency: ValueCell.create(props.bumpFrequency), uBumpAmplitude: ValueCell.create(props.bumpAmplitude) });
136
136
  }
137
137
  function createValuesSimple(spheres, props, colorValue, sizeValue, transform) {
138
138
  var s = BaseGeometry.createSimple(colorValue, sizeValue, transform);
@@ -145,6 +145,7 @@ export var Spheres;
145
145
  ValueCell.updateIfChanged(values.uDoubleSided, props.doubleSided);
146
146
  ValueCell.updateIfChanged(values.dIgnoreLight, props.ignoreLight);
147
147
  ValueCell.updateIfChanged(values.dXrayShaded, props.xrayShaded);
148
+ ValueCell.updateIfChanged(values.dTransparentBackfaces, props.transparentBackfaces);
148
149
  ValueCell.updateIfChanged(values.uBumpFrequency, props.bumpFrequency);
149
150
  ValueCell.updateIfChanged(values.uBumpAmplitude, props.bumpAmplitude);
150
151
  }
@@ -45,7 +45,7 @@ export declare namespace TextureMesh {
45
45
  flatShaded: PD.BooleanParam;
46
46
  ignoreLight: PD.BooleanParam;
47
47
  xrayShaded: PD.BooleanParam;
48
- allowTransparentBackfaces: PD.BooleanParam;
48
+ transparentBackfaces: PD.Select<string>;
49
49
  bumpFrequency: PD.Numeric;
50
50
  bumpAmplitude: PD.Numeric;
51
51
  alpha: PD.Numeric;
@@ -86,7 +86,7 @@ export var TextureMesh;
86
86
  return create(0, 0, vt, gt, nt, bs, textureMesh);
87
87
  }
88
88
  TextureMesh.createEmpty = createEmpty;
89
- TextureMesh.Params = __assign(__assign({}, BaseGeometry.Params), { doubleSided: PD.Boolean(false, BaseGeometry.CustomQualityParamInfo), flipSided: PD.Boolean(false, BaseGeometry.ShadingCategory), flatShaded: PD.Boolean(false, BaseGeometry.ShadingCategory), ignoreLight: PD.Boolean(false, BaseGeometry.ShadingCategory), xrayShaded: PD.Boolean(false, BaseGeometry.ShadingCategory), allowTransparentBackfaces: PD.Boolean(false, BaseGeometry.ShadingCategory), bumpFrequency: PD.Numeric(0, { min: 0, max: 10, step: 0.1 }, BaseGeometry.ShadingCategory), bumpAmplitude: PD.Numeric(1, { min: 0, max: 5, step: 0.1 }, BaseGeometry.ShadingCategory) });
89
+ TextureMesh.Params = __assign(__assign({}, BaseGeometry.Params), { doubleSided: PD.Boolean(false, BaseGeometry.CustomQualityParamInfo), flipSided: PD.Boolean(false, BaseGeometry.ShadingCategory), flatShaded: PD.Boolean(false, BaseGeometry.ShadingCategory), ignoreLight: PD.Boolean(false, BaseGeometry.ShadingCategory), xrayShaded: PD.Boolean(false, BaseGeometry.ShadingCategory), transparentBackfaces: PD.Select('off', PD.arrayToOptions(['off', 'on', 'opaque']), BaseGeometry.ShadingCategory), bumpFrequency: PD.Numeric(0, { min: 0, max: 10, step: 0.1 }, BaseGeometry.ShadingCategory), bumpAmplitude: PD.Numeric(1, { min: 0, max: 5, step: 0.1 }, BaseGeometry.ShadingCategory) });
90
90
  TextureMesh.Utils = {
91
91
  Params: TextureMesh.Params,
92
92
  createEmpty: createEmpty,
@@ -94,8 +94,8 @@ export var TextureMesh;
94
94
  createValuesSimple: createValuesSimple,
95
95
  updateValues: updateValues,
96
96
  updateBoundingSphere: updateBoundingSphere,
97
- createRenderableState: BaseGeometry.createRenderableState,
98
- updateRenderableState: BaseGeometry.updateRenderableState,
97
+ createRenderableState: createRenderableState,
98
+ updateRenderableState: updateRenderableState,
99
99
  createPositionIterator: function () { return LocationIterator(1, 1, 1, function () { return NullLocation; }); }
100
100
  };
101
101
  function createValues(textureMesh, transform, locationIt, theme, props) {
@@ -110,7 +110,7 @@ export var TextureMesh;
110
110
  var counts = { drawCount: textureMesh.vertexCount, vertexCount: textureMesh.vertexCount, groupCount: groupCount, instanceCount: instanceCount };
111
111
  var invariantBoundingSphere = Sphere3D.clone(textureMesh.boundingSphere);
112
112
  var boundingSphere = calculateTransformBoundingSphere(invariantBoundingSphere, transform.aTransform.ref.value, instanceCount);
113
- return __assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({ dGeometryType: ValueCell.create('textureMesh'), uGeoTexDim: textureMesh.geoTextureDim, tPosition: textureMesh.vertexTexture, tGroup: textureMesh.groupTexture, tNormal: textureMesh.normalTexture, boundingSphere: ValueCell.create(boundingSphere), invariantBoundingSphere: ValueCell.create(invariantBoundingSphere), uInvariantBoundingSphere: ValueCell.create(Vec4.ofSphere(invariantBoundingSphere)) }, color), marker), overpaint), transparency), substance), clipping), transform), BaseGeometry.createValues(props, counts)), { uDoubleSided: ValueCell.create(props.doubleSided), dFlatShaded: ValueCell.create(props.flatShaded), dFlipSided: ValueCell.create(props.flipSided), dIgnoreLight: ValueCell.create(props.ignoreLight), dXrayShaded: ValueCell.create(props.xrayShaded), uBumpFrequency: ValueCell.create(props.bumpFrequency), uBumpAmplitude: ValueCell.create(props.bumpAmplitude), meta: ValueCell.create(textureMesh.meta) });
113
+ return __assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({ dGeometryType: ValueCell.create('textureMesh'), uGeoTexDim: textureMesh.geoTextureDim, tPosition: textureMesh.vertexTexture, tGroup: textureMesh.groupTexture, tNormal: textureMesh.normalTexture, boundingSphere: ValueCell.create(boundingSphere), invariantBoundingSphere: ValueCell.create(invariantBoundingSphere), uInvariantBoundingSphere: ValueCell.create(Vec4.ofSphere(invariantBoundingSphere)) }, color), marker), overpaint), transparency), substance), clipping), transform), BaseGeometry.createValues(props, counts)), { uDoubleSided: ValueCell.create(props.doubleSided), dFlatShaded: ValueCell.create(props.flatShaded), dFlipSided: ValueCell.create(props.flipSided), dIgnoreLight: ValueCell.create(props.ignoreLight), dXrayShaded: ValueCell.create(props.xrayShaded), dTransparentBackfaces: ValueCell.create(props.transparentBackfaces), uBumpFrequency: ValueCell.create(props.bumpFrequency), uBumpAmplitude: ValueCell.create(props.bumpAmplitude), meta: ValueCell.create(textureMesh.meta) });
114
114
  }
115
115
  function createValuesSimple(textureMesh, props, colorValue, sizeValue, transform) {
116
116
  var s = BaseGeometry.createSimple(colorValue, sizeValue, transform);
@@ -124,6 +124,7 @@ export var TextureMesh;
124
124
  ValueCell.updateIfChanged(values.dFlipSided, props.flipSided);
125
125
  ValueCell.updateIfChanged(values.dIgnoreLight, props.ignoreLight);
126
126
  ValueCell.updateIfChanged(values.dXrayShaded, props.xrayShaded);
127
+ ValueCell.updateIfChanged(values.dTransparentBackfaces, props.transparentBackfaces);
127
128
  ValueCell.updateIfChanged(values.uBumpFrequency, props.bumpFrequency);
128
129
  ValueCell.updateIfChanged(values.uBumpAmplitude, props.bumpAmplitude);
129
130
  }
@@ -138,4 +139,14 @@ export var TextureMesh;
138
139
  ValueCell.update(values.uInvariantBoundingSphere, Vec4.fromSphere(values.uInvariantBoundingSphere.ref.value, invariantBoundingSphere));
139
140
  }
140
141
  }
142
+ function createRenderableState(props) {
143
+ var state = BaseGeometry.createRenderableState(props);
144
+ updateRenderableState(state, props);
145
+ return state;
146
+ }
147
+ function updateRenderableState(state, props) {
148
+ BaseGeometry.updateRenderableState(state, props);
149
+ state.opaque = state.opaque && !props.xrayShaded;
150
+ state.writeDepth = state.opaque;
151
+ }
141
152
  })(TextureMesh || (TextureMesh = {}));
@@ -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
  */
@@ -14,6 +14,8 @@ export function applyTransparencyValue(array, start, end, value) {
14
14
  return true;
15
15
  }
16
16
  export function getTransparencyAverage(array, count) {
17
+ if (count === 0 || array.length < count)
18
+ return 0;
17
19
  var sum = 0;
18
20
  for (var i = 0; i < count; ++i) {
19
21
  sum += array[i];
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2020-2021 mol* contributors, licensed under MIT, See LICENSE file for more info.
2
+ * Copyright (c) 2020-2022 mol* contributors, licensed under MIT, See LICENSE file for more info.
3
3
  *
4
4
  * @author Alexander Rose <alexander.rose@weirdbyte.de>
5
5
  */
@@ -19,6 +19,7 @@ export declare const CylindersSchema: {
19
19
  uDoubleSided: UniformSpec<"b">;
20
20
  dIgnoreLight: DefineSpec<"boolean">;
21
21
  dXrayShaded: DefineSpec<"boolean">;
22
+ dTransparentBackfaces: DefineSpec<"string">;
22
23
  uBumpFrequency: UniformSpec<"f">;
23
24
  uBumpAmplitude: UniformSpec<"f">;
24
25
  uSize: UniformSpec<"f">;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2020-2021 mol* contributors, licensed under MIT, See LICENSE file for more info.
2
+ * Copyright (c) 2020-2022 mol* contributors, licensed under MIT, See LICENSE file for more info.
3
3
  *
4
4
  * @author Alexander Rose <alexander.rose@weirdbyte.de>
5
5
  */
@@ -9,7 +9,7 @@ import { createGraphicsRenderItem } from '../webgl/render-item';
9
9
  import { GlobalUniformSchema, BaseSchema, AttributeSpec, InternalSchema, SizeSchema, ElementsSpec, ValueSpec, DefineSpec, GlobalTextureSchema, UniformSpec } from './schema';
10
10
  import { CylindersShaderCode } from '../shader-code';
11
11
  import { ValueCell } from '../../mol-util';
12
- export var CylindersSchema = __assign(__assign(__assign({}, BaseSchema), SizeSchema), { aGroup: AttributeSpec('float32', 1, 0), aStart: AttributeSpec('float32', 3, 0), aEnd: AttributeSpec('float32', 3, 0), aMapping: AttributeSpec('float32', 3, 0), aScale: AttributeSpec('float32', 1, 0), aCap: AttributeSpec('float32', 1, 0), elements: ElementsSpec('uint32'), padding: ValueSpec('number'), uDoubleSided: UniformSpec('b'), dIgnoreLight: DefineSpec('boolean'), dXrayShaded: DefineSpec('boolean'), uBumpFrequency: UniformSpec('f'), uBumpAmplitude: UniformSpec('f') });
12
+ export var CylindersSchema = __assign(__assign(__assign({}, BaseSchema), SizeSchema), { aGroup: AttributeSpec('float32', 1, 0), aStart: AttributeSpec('float32', 3, 0), aEnd: AttributeSpec('float32', 3, 0), aMapping: AttributeSpec('float32', 3, 0), aScale: AttributeSpec('float32', 1, 0), aCap: AttributeSpec('float32', 1, 0), elements: ElementsSpec('uint32'), padding: ValueSpec('number'), uDoubleSided: UniformSpec('b'), dIgnoreLight: DefineSpec('boolean'), dXrayShaded: DefineSpec('boolean'), dTransparentBackfaces: DefineSpec('string', ['off', 'on', 'opaque']), uBumpFrequency: UniformSpec('f'), uBumpAmplitude: UniformSpec('f') });
13
13
  export function CylindersRenderable(ctx, id, values, state, materialId, variants) {
14
14
  var schema = __assign(__assign(__assign(__assign({}, GlobalUniformSchema), GlobalTextureSchema), InternalSchema), CylindersSchema);
15
15
  var internalValues = {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2018-2021 mol* contributors, licensed under MIT, See LICENSE file for more info.
2
+ * Copyright (c) 2018-2022 mol* contributors, licensed under MIT, See LICENSE file for more info.
3
3
  *
4
4
  * @author Alexander Rose <alexander.rose@weirdbyte.de>
5
5
  */
@@ -17,6 +17,7 @@ export declare const MeshSchema: {
17
17
  readonly dFlipSided: DefineSpec<"boolean">;
18
18
  readonly dIgnoreLight: DefineSpec<"boolean">;
19
19
  readonly dXrayShaded: DefineSpec<"boolean">;
20
+ readonly dTransparentBackfaces: DefineSpec<"string">;
20
21
  readonly uBumpFrequency: UniformSpec<"f">;
21
22
  readonly uBumpAmplitude: UniformSpec<"f">;
22
23
  readonly meta: ValueSpec<"unknown">;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2018-2021 mol* contributors, licensed under MIT, See LICENSE file for more info.
2
+ * Copyright (c) 2018-2022 mol* contributors, licensed under MIT, See LICENSE file for more info.
3
3
  *
4
4
  * @author Alexander Rose <alexander.rose@weirdbyte.de>
5
5
  */
@@ -9,7 +9,7 @@ import { createGraphicsRenderItem } from '../webgl/render-item';
9
9
  import { GlobalUniformSchema, BaseSchema, AttributeSpec, ElementsSpec, DefineSpec, InternalSchema, GlobalTextureSchema, ValueSpec, UniformSpec } from './schema';
10
10
  import { MeshShaderCode } from '../shader-code';
11
11
  import { ValueCell } from '../../mol-util';
12
- export var MeshSchema = __assign(__assign({}, BaseSchema), { aGroup: AttributeSpec('float32', 1, 0), aPosition: AttributeSpec('float32', 3, 0), aNormal: AttributeSpec('float32', 3, 0), elements: ElementsSpec('uint32'), dFlatShaded: DefineSpec('boolean'), uDoubleSided: UniformSpec('b'), dFlipSided: DefineSpec('boolean'), dIgnoreLight: DefineSpec('boolean'), dXrayShaded: DefineSpec('boolean'), uBumpFrequency: UniformSpec('f'), uBumpAmplitude: UniformSpec('f'), meta: ValueSpec('unknown') });
12
+ export var MeshSchema = __assign(__assign({}, BaseSchema), { aGroup: AttributeSpec('float32', 1, 0), aPosition: AttributeSpec('float32', 3, 0), aNormal: AttributeSpec('float32', 3, 0), elements: ElementsSpec('uint32'), dFlatShaded: DefineSpec('boolean'), uDoubleSided: UniformSpec('b'), dFlipSided: DefineSpec('boolean'), dIgnoreLight: DefineSpec('boolean'), dXrayShaded: DefineSpec('boolean'), dTransparentBackfaces: DefineSpec('string', ['off', 'on', 'opaque']), uBumpFrequency: UniformSpec('f'), uBumpAmplitude: UniformSpec('f'), meta: ValueSpec('unknown') });
13
13
  export function MeshRenderable(ctx, id, values, state, materialId, variants) {
14
14
  var schema = __assign(__assign(__assign(__assign({}, GlobalUniformSchema), GlobalTextureSchema), InternalSchema), MeshSchema);
15
15
  var internalValues = {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2018-2021 mol* contributors, licensed under MIT, See LICENSE file for more info.
2
+ * Copyright (c) 2018-2022 mol* contributors, licensed under MIT, See LICENSE file for more info.
3
3
  *
4
4
  * @author Alexander Rose <alexander.rose@weirdbyte.de>
5
5
  */
@@ -119,7 +119,7 @@ export declare const GlobalUniformSchema: {
119
119
  readonly uSelectStrength: UniformSpec<"f">;
120
120
  readonly uMarkerPriority: UniformSpec<"i">;
121
121
  readonly uXrayEdgeFalloff: UniformSpec<"f">;
122
- readonly uRenderWboit: UniformSpec<"b">;
122
+ readonly uRenderMask: UniformSpec<"i">;
123
123
  readonly uMarkingDepthTest: UniformSpec<"b">;
124
124
  readonly uMarkingType: UniformSpec<"i">;
125
125
  readonly uPickType: UniformSpec<"i">;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2018-2021 mol* contributors, licensed under MIT, See LICENSE file for more info.
2
+ * Copyright (c) 2018-2022 mol* contributors, licensed under MIT, See LICENSE file for more info.
3
3
  *
4
4
  * @author Alexander Rose <alexander.rose@weirdbyte.de>
5
5
  */
@@ -94,7 +94,7 @@ export var GlobalUniformSchema = {
94
94
  uSelectStrength: UniformSpec('f'),
95
95
  uMarkerPriority: UniformSpec('i'),
96
96
  uXrayEdgeFalloff: UniformSpec('f'),
97
- uRenderWboit: UniformSpec('b'),
97
+ uRenderMask: UniformSpec('i'),
98
98
  uMarkingDepthTest: UniformSpec('b'),
99
99
  uMarkingType: UniformSpec('i'),
100
100
  uPickType: UniformSpec('i'),
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2019-2021 mol* contributors, licensed under MIT, See LICENSE file for more info.
2
+ * Copyright (c) 2019-2022 mol* contributors, licensed under MIT, See LICENSE file for more info.
3
3
  *
4
4
  * @author Alexander Rose <alexander.rose@weirdbyte.de>
5
5
  */
@@ -16,6 +16,7 @@ export declare const SpheresSchema: {
16
16
  uDoubleSided: UniformSpec<"b">;
17
17
  dIgnoreLight: DefineSpec<"boolean">;
18
18
  dXrayShaded: DefineSpec<"boolean">;
19
+ dTransparentBackfaces: DefineSpec<"string">;
19
20
  uBumpFrequency: UniformSpec<"f">;
20
21
  uBumpAmplitude: UniformSpec<"f">;
21
22
  uSize: UniformSpec<"f">;
@@ -1,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
  */
@@ -9,7 +9,7 @@ import { createGraphicsRenderItem } from '../webgl/render-item';
9
9
  import { GlobalUniformSchema, BaseSchema, AttributeSpec, InternalSchema, SizeSchema, ElementsSpec, ValueSpec, DefineSpec, GlobalTextureSchema, UniformSpec } from './schema';
10
10
  import { SpheresShaderCode } from '../shader-code';
11
11
  import { ValueCell } from '../../mol-util';
12
- export var SpheresSchema = __assign(__assign(__assign({}, BaseSchema), SizeSchema), { aGroup: AttributeSpec('float32', 1, 0), aPosition: AttributeSpec('float32', 3, 0), aMapping: AttributeSpec('float32', 2, 0), elements: ElementsSpec('uint32'), padding: ValueSpec('number'), uDoubleSided: UniformSpec('b'), dIgnoreLight: DefineSpec('boolean'), dXrayShaded: DefineSpec('boolean'), uBumpFrequency: UniformSpec('f'), uBumpAmplitude: UniformSpec('f') });
12
+ export var SpheresSchema = __assign(__assign(__assign({}, BaseSchema), SizeSchema), { aGroup: AttributeSpec('float32', 1, 0), aPosition: AttributeSpec('float32', 3, 0), aMapping: AttributeSpec('float32', 2, 0), elements: ElementsSpec('uint32'), padding: ValueSpec('number'), uDoubleSided: UniformSpec('b'), dIgnoreLight: DefineSpec('boolean'), dXrayShaded: DefineSpec('boolean'), dTransparentBackfaces: DefineSpec('string', ['off', 'on', 'opaque']), uBumpFrequency: UniformSpec('f'), uBumpAmplitude: UniformSpec('f') });
13
13
  export function SpheresRenderable(ctx, id, values, state, materialId, variants) {
14
14
  var schema = __assign(__assign(__assign(__assign({}, GlobalUniformSchema), GlobalTextureSchema), InternalSchema), SpheresSchema);
15
15
  var internalValues = {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2019-2021 mol* contributors, licensed under MIT, See LICENSE file for more info.
2
+ * Copyright (c) 2019-2022 mol* contributors, licensed under MIT, See LICENSE file for more info.
3
3
  *
4
4
  * @author Alexander Rose <alexander.rose@weirdbyte.de>
5
5
  */
@@ -17,6 +17,7 @@ export declare const TextureMeshSchema: {
17
17
  dFlipSided: DefineSpec<"boolean">;
18
18
  dIgnoreLight: DefineSpec<"boolean">;
19
19
  dXrayShaded: DefineSpec<"boolean">;
20
+ dTransparentBackfaces: DefineSpec<"string">;
20
21
  uBumpFrequency: UniformSpec<"f">;
21
22
  uBumpAmplitude: UniformSpec<"f">;
22
23
  meta: ValueSpec<"unknown">;
@@ -1,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
  */
@@ -9,7 +9,7 @@ import { createGraphicsRenderItem } from '../webgl/render-item';
9
9
  import { GlobalUniformSchema, BaseSchema, DefineSpec, InternalSchema, UniformSpec, TextureSpec, GlobalTextureSchema, ValueSpec } from './schema';
10
10
  import { MeshShaderCode } from '../shader-code';
11
11
  import { ValueCell } from '../../mol-util';
12
- export var TextureMeshSchema = __assign(__assign({}, BaseSchema), { uGeoTexDim: UniformSpec('v2', 'buffered'), tPosition: TextureSpec('texture', 'rgb', 'float', 'nearest'), tGroup: TextureSpec('texture', 'alpha', 'float', 'nearest'), tNormal: TextureSpec('texture', 'rgb', 'float', 'nearest'), dFlatShaded: DefineSpec('boolean'), uDoubleSided: UniformSpec('b'), dFlipSided: DefineSpec('boolean'), dIgnoreLight: DefineSpec('boolean'), dXrayShaded: DefineSpec('boolean'), uBumpFrequency: UniformSpec('f'), uBumpAmplitude: UniformSpec('f'), meta: ValueSpec('unknown') });
12
+ export var TextureMeshSchema = __assign(__assign({}, BaseSchema), { uGeoTexDim: UniformSpec('v2', 'buffered'), tPosition: TextureSpec('texture', 'rgb', 'float', 'nearest'), tGroup: TextureSpec('texture', 'alpha', 'float', 'nearest'), tNormal: TextureSpec('texture', 'rgb', 'float', 'nearest'), dFlatShaded: DefineSpec('boolean'), uDoubleSided: UniformSpec('b'), dFlipSided: DefineSpec('boolean'), dIgnoreLight: DefineSpec('boolean'), dXrayShaded: DefineSpec('boolean'), dTransparentBackfaces: DefineSpec('string', ['off', 'on', 'opaque']), uBumpFrequency: UniformSpec('f'), uBumpAmplitude: UniformSpec('f'), meta: ValueSpec('unknown') });
13
13
  export function TextureMeshRenderable(ctx, id, values, state, materialId, variants) {
14
14
  var schema = __assign(__assign(__assign(__assign({}, GlobalUniformSchema), GlobalTextureSchema), InternalSchema), TextureMeshSchema);
15
15
  var internalValues = {