molstar 3.0.0-dev.5 → 3.0.0-dev.9

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 (688) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +187 -187
  3. package/build/viewer/embedded.html +43 -43
  4. package/build/viewer/index.html +106 -95
  5. package/build/viewer/molstar.js +1 -1
  6. package/lib/apps/docking-viewer/index.d.ts +2 -1
  7. package/lib/apps/docking-viewer/index.html +36 -36
  8. package/lib/apps/docking-viewer/index.js +87 -74
  9. package/lib/apps/viewer/app.d.ts +230 -0
  10. package/lib/apps/viewer/app.js +515 -0
  11. package/lib/apps/viewer/embedded.html +43 -43
  12. package/lib/apps/viewer/index.d.ts +2 -403
  13. package/lib/apps/viewer/index.html +106 -95
  14. package/lib/apps/viewer/index.js +2 -420
  15. package/lib/cli/cifschema/index.d.ts +1 -1
  16. package/lib/cli/cifschema/index.js +15 -35
  17. package/lib/commonjs/apps/docking-viewer/index.d.ts +2 -1
  18. package/lib/commonjs/apps/docking-viewer/index.js +86 -73
  19. package/lib/commonjs/apps/viewer/app.d.ts +230 -0
  20. package/lib/commonjs/apps/viewer/app.js +521 -0
  21. package/lib/commonjs/apps/viewer/index.d.ts +2 -403
  22. package/lib/commonjs/apps/viewer/index.js +2 -423
  23. package/lib/commonjs/cli/cifschema/index.d.ts +1 -1
  24. package/lib/commonjs/cli/cifschema/index.js +15 -35
  25. package/lib/commonjs/examples/alpha-orbitals/index.js +3 -4
  26. package/lib/commonjs/examples/basic-wrapper/index.js +23 -11
  27. package/lib/commonjs/examples/lighting/index.d.ts +1 -1
  28. package/lib/commonjs/examples/lighting/index.js +57 -41
  29. package/lib/commonjs/examples/proteopedia-wrapper/index.js +26 -14
  30. package/lib/commonjs/extensions/alpha-orbitals/transforms.d.ts +0 -1
  31. package/lib/commonjs/extensions/alpha-orbitals/transforms.js +1 -14
  32. package/lib/commonjs/extensions/anvil/behavior.d.ts +4 -0
  33. package/lib/commonjs/extensions/anvil/representation.d.ts +50 -0
  34. package/lib/commonjs/extensions/cellpack/representation.d.ts +10 -0
  35. package/lib/commonjs/extensions/dnatco/confal-pyramids/representation.d.ts +30 -0
  36. package/lib/commonjs/extensions/geo-export/mesh-exporter.js +4 -4
  37. package/lib/commonjs/extensions/model-archive/quality-assessment/behavior.d.ts +68 -0
  38. package/lib/commonjs/extensions/model-archive/quality-assessment/behavior.js +236 -0
  39. package/lib/commonjs/extensions/model-archive/quality-assessment/color/plddt.d.ts +14 -0
  40. package/lib/commonjs/extensions/model-archive/quality-assessment/color/plddt.js +125 -0
  41. package/lib/commonjs/extensions/model-archive/quality-assessment/color/qmean.d.ts +12 -0
  42. package/lib/commonjs/extensions/model-archive/quality-assessment/color/qmean.js +111 -0
  43. package/lib/commonjs/extensions/model-archive/quality-assessment/prop.d.ts +28 -0
  44. package/lib/commonjs/extensions/model-archive/quality-assessment/prop.js +130 -0
  45. package/lib/commonjs/extensions/pdbe/structure-quality-report/prop.js +1 -1
  46. package/lib/commonjs/extensions/rcsb/assembly-symmetry/behavior.d.ts +6 -2
  47. package/lib/commonjs/extensions/rcsb/assembly-symmetry/prop.js +1 -1
  48. package/lib/commonjs/extensions/rcsb/assembly-symmetry/representation.d.ts +10 -0
  49. package/lib/commonjs/extensions/rcsb/validation-report/prop.js +1 -1
  50. package/lib/commonjs/extensions/rcsb/validation-report/representation.d.ts +50 -0
  51. package/lib/commonjs/mol-canvas3d/canvas3d.d.ts +3 -9
  52. package/lib/commonjs/mol-canvas3d/canvas3d.js +34 -23
  53. package/lib/commonjs/mol-canvas3d/helper/bounding-sphere-helper.js +3 -2
  54. package/lib/commonjs/mol-canvas3d/helper/camera-helper.d.ts +4 -0
  55. package/lib/commonjs/mol-canvas3d/helper/camera-helper.js +2 -2
  56. package/lib/commonjs/mol-canvas3d/helper/handle-helper.d.ts +4 -0
  57. package/lib/commonjs/mol-canvas3d/helper/handle-helper.js +2 -2
  58. package/lib/commonjs/mol-canvas3d/helper/helper.d.ts +2 -0
  59. package/lib/commonjs/mol-canvas3d/passes/draw.d.ts +13 -1
  60. package/lib/commonjs/mol-canvas3d/passes/draw.js +16 -15
  61. package/lib/commonjs/mol-canvas3d/passes/image.d.ts +1 -0
  62. package/lib/commonjs/mol-canvas3d/passes/image.js +3 -2
  63. package/lib/commonjs/mol-canvas3d/passes/marking.js +1 -1
  64. package/lib/commonjs/mol-canvas3d/passes/multi-sample.d.ts +10 -2
  65. package/lib/commonjs/mol-canvas3d/passes/multi-sample.js +18 -14
  66. package/lib/commonjs/mol-canvas3d/passes/pick.js +12 -12
  67. package/lib/commonjs/mol-canvas3d/passes/postprocessing.js +3 -3
  68. package/lib/commonjs/mol-canvas3d/passes/smaa.js +1 -1
  69. package/lib/commonjs/mol-geo/geometry/base.d.ts +18 -0
  70. package/lib/commonjs/mol-geo/geometry/base.js +18 -1
  71. package/lib/commonjs/mol-geo/geometry/clipping-data.d.ts +1 -3
  72. package/lib/commonjs/mol-geo/geometry/clipping-data.js +3 -8
  73. package/lib/commonjs/mol-geo/geometry/color-data.d.ts +1 -1
  74. package/lib/commonjs/mol-geo/geometry/color-data.js +22 -0
  75. package/lib/commonjs/mol-geo/geometry/cylinders/cylinders.d.ts +12 -2
  76. package/lib/commonjs/mol-geo/geometry/cylinders/cylinders.js +2 -2
  77. package/lib/commonjs/mol-geo/geometry/direct-volume/direct-volume.d.ts +15 -38
  78. package/lib/commonjs/mol-geo/geometry/direct-volume/direct-volume.js +21 -66
  79. package/lib/commonjs/mol-geo/geometry/direct-volume/transfer-function.d.ts +2 -4
  80. package/lib/commonjs/mol-geo/geometry/direct-volume/transfer-function.js +4 -7
  81. package/lib/commonjs/mol-geo/geometry/image/image.d.ts +10 -0
  82. package/lib/commonjs/mol-geo/geometry/image/image.js +1 -1
  83. package/lib/commonjs/mol-geo/geometry/lines/lines.d.ts +11 -0
  84. package/lib/commonjs/mol-geo/geometry/lines/lines.js +1 -1
  85. package/lib/commonjs/mol-geo/geometry/marker-data.d.ts +0 -1
  86. package/lib/commonjs/mol-geo/geometry/marker-data.js +13 -9
  87. package/lib/commonjs/mol-geo/geometry/mesh/mesh.d.ts +10 -0
  88. package/lib/commonjs/mol-geo/geometry/mesh/mesh.js +2 -2
  89. package/lib/commonjs/mol-geo/geometry/points/points.d.ts +11 -1
  90. package/lib/commonjs/mol-geo/geometry/points/points.js +1 -1
  91. package/lib/commonjs/mol-geo/geometry/size-data.js +5 -5
  92. package/lib/commonjs/mol-geo/geometry/spheres/spheres.d.ts +10 -0
  93. package/lib/commonjs/mol-geo/geometry/spheres/spheres.js +2 -2
  94. package/lib/commonjs/mol-geo/geometry/text/text.d.ts +10 -0
  95. package/lib/commonjs/mol-geo/geometry/text/text.js +1 -1
  96. package/lib/commonjs/mol-geo/geometry/texture-mesh/texture-mesh.d.ts +10 -0
  97. package/lib/commonjs/mol-geo/geometry/texture-mesh/texture-mesh.js +2 -2
  98. package/lib/commonjs/mol-gl/compute/histogram-pyramid/sum.js +2 -2
  99. package/lib/commonjs/mol-gl/compute/marching-cubes/isosurface.d.ts +2 -2
  100. package/lib/commonjs/mol-gl/compute/marching-cubes/isosurface.js +10 -9
  101. package/lib/commonjs/mol-gl/render-object.d.ts +2 -1
  102. package/lib/commonjs/mol-gl/render-object.js +10 -10
  103. package/lib/commonjs/mol-gl/renderable/cylinders.d.ts +11 -5
  104. package/lib/commonjs/mol-gl/renderable/cylinders.js +3 -3
  105. package/lib/commonjs/mol-gl/renderable/direct-volume.d.ts +15 -14
  106. package/lib/commonjs/mol-gl/renderable/direct-volume.js +3 -3
  107. package/lib/commonjs/mol-gl/renderable/image.d.ts +10 -4
  108. package/lib/commonjs/mol-gl/renderable/image.js +2 -2
  109. package/lib/commonjs/mol-gl/renderable/lines.d.ts +39 -33
  110. package/lib/commonjs/mol-gl/renderable/lines.js +3 -3
  111. package/lib/commonjs/mol-gl/renderable/mesh.d.ts +11 -5
  112. package/lib/commonjs/mol-gl/renderable/mesh.js +3 -3
  113. package/lib/commonjs/mol-gl/renderable/points.d.ts +10 -4
  114. package/lib/commonjs/mol-gl/renderable/points.js +2 -2
  115. package/lib/commonjs/mol-gl/renderable/schema.d.ts +10 -11
  116. package/lib/commonjs/mol-gl/renderable/schema.js +4 -10
  117. package/lib/commonjs/mol-gl/renderable/spheres.d.ts +11 -5
  118. package/lib/commonjs/mol-gl/renderable/spheres.js +3 -3
  119. package/lib/commonjs/mol-gl/renderable/text.d.ts +10 -4
  120. package/lib/commonjs/mol-gl/renderable/text.js +2 -2
  121. package/lib/commonjs/mol-gl/renderable/texture-mesh.d.ts +11 -6
  122. package/lib/commonjs/mol-gl/renderable/texture-mesh.js +3 -3
  123. package/lib/commonjs/mol-gl/renderable.d.ts +0 -1
  124. package/lib/commonjs/mol-gl/renderer.d.ts +12 -12
  125. package/lib/commonjs/mol-gl/renderer.js +23 -92
  126. package/lib/commonjs/mol-gl/scene.d.ts +2 -2
  127. package/lib/commonjs/mol-gl/scene.js +7 -5
  128. package/lib/commonjs/mol-gl/shader/chunks/apply-light-color.glsl.d.ts +1 -1
  129. package/lib/commonjs/mol-gl/shader/chunks/apply-light-color.glsl.js +1 -1
  130. package/lib/commonjs/mol-gl/shader/chunks/assign-color-varying.glsl.d.ts +1 -1
  131. package/lib/commonjs/mol-gl/shader/chunks/assign-color-varying.glsl.js +1 -1
  132. package/lib/commonjs/mol-gl/shader/chunks/assign-group.glsl.d.ts +1 -1
  133. package/lib/commonjs/mol-gl/shader/chunks/assign-group.glsl.js +1 -1
  134. package/lib/commonjs/mol-gl/shader/chunks/assign-marker-varying.glsl.d.ts +1 -1
  135. package/lib/commonjs/mol-gl/shader/chunks/assign-marker-varying.glsl.js +1 -1
  136. package/lib/commonjs/mol-gl/shader/chunks/assign-material-color.glsl.d.ts +1 -1
  137. package/lib/commonjs/mol-gl/shader/chunks/assign-material-color.glsl.js +1 -1
  138. package/lib/commonjs/mol-gl/shader/chunks/assign-position.glsl.d.ts +1 -1
  139. package/lib/commonjs/mol-gl/shader/chunks/assign-position.glsl.js +1 -1
  140. package/lib/commonjs/mol-gl/shader/chunks/assign-size.glsl.d.ts +1 -1
  141. package/lib/commonjs/mol-gl/shader/chunks/assign-size.glsl.js +1 -1
  142. package/lib/commonjs/mol-gl/shader/chunks/color-frag-params.glsl.d.ts +1 -1
  143. package/lib/commonjs/mol-gl/shader/chunks/color-frag-params.glsl.js +1 -1
  144. package/lib/commonjs/mol-gl/shader/chunks/color-vert-params.glsl.d.ts +1 -1
  145. package/lib/commonjs/mol-gl/shader/chunks/color-vert-params.glsl.js +1 -1
  146. package/lib/commonjs/mol-gl/shader/chunks/common-frag-params.glsl.d.ts +1 -1
  147. package/lib/commonjs/mol-gl/shader/chunks/common-frag-params.glsl.js +1 -1
  148. package/lib/commonjs/mol-gl/shader/chunks/common-vert-params.glsl.d.ts +1 -1
  149. package/lib/commonjs/mol-gl/shader/chunks/common-vert-params.glsl.js +1 -1
  150. package/lib/commonjs/mol-gl/shader/chunks/common.glsl.d.ts +1 -1
  151. package/lib/commonjs/mol-gl/shader/chunks/common.glsl.js +1 -1
  152. package/lib/commonjs/mol-gl/shader/chunks/wboit-write.glsl.d.ts +1 -1
  153. package/lib/commonjs/mol-gl/shader/chunks/wboit-write.glsl.js +1 -1
  154. package/lib/commonjs/mol-gl/shader/compute/color-smoothing/accumulate.vert.d.ts +1 -1
  155. package/lib/commonjs/mol-gl/shader/compute/color-smoothing/accumulate.vert.js +1 -1
  156. package/lib/commonjs/mol-gl/shader/cylinders.frag.d.ts +1 -1
  157. package/lib/commonjs/mol-gl/shader/cylinders.frag.js +1 -1
  158. package/lib/commonjs/mol-gl/shader/direct-volume.frag.d.ts +1 -1
  159. package/lib/commonjs/mol-gl/shader/direct-volume.frag.js +1 -1
  160. package/lib/commonjs/mol-gl/shader/gaussian-density.frag.d.ts +1 -1
  161. package/lib/commonjs/mol-gl/shader/gaussian-density.frag.js +1 -1
  162. package/lib/commonjs/mol-gl/shader/histogram-pyramid/reduction.frag.d.ts +1 -1
  163. package/lib/commonjs/mol-gl/shader/histogram-pyramid/reduction.frag.js +1 -1
  164. package/lib/commonjs/mol-gl/shader/image.frag.d.ts +1 -1
  165. package/lib/commonjs/mol-gl/shader/image.frag.js +1 -1
  166. package/lib/commonjs/mol-gl/shader/marching-cubes/isosurface.frag.d.ts +1 -1
  167. package/lib/commonjs/mol-gl/shader/marching-cubes/isosurface.frag.js +1 -1
  168. package/lib/commonjs/mol-gl/shader/mesh.frag.d.ts +1 -1
  169. package/lib/commonjs/mol-gl/shader/mesh.frag.js +1 -1
  170. package/lib/commonjs/mol-gl/shader/mesh.vert.d.ts +1 -1
  171. package/lib/commonjs/mol-gl/shader/mesh.vert.js +1 -1
  172. package/lib/commonjs/mol-gl/shader/spheres.frag.d.ts +1 -1
  173. package/lib/commonjs/mol-gl/shader/spheres.frag.js +1 -1
  174. package/lib/commonjs/mol-gl/shader-code.d.ts +3 -1
  175. package/lib/commonjs/mol-gl/shader-code.js +43 -14
  176. package/lib/commonjs/mol-gl/webgl/render-item.d.ts +7 -6
  177. package/lib/commonjs/mol-gl/webgl/render-item.js +10 -8
  178. package/lib/commonjs/mol-gl/webgl/resources.js +8 -1
  179. package/lib/commonjs/mol-io/reader/cif/schema/mmcif.d.ts +326 -1
  180. package/lib/commonjs/mol-io/reader/cif/schema/mmcif.js +326 -1
  181. package/lib/commonjs/mol-io/reader/mol2/parser.d.ts +1 -1
  182. package/lib/commonjs/mol-io/reader/mol2/parser.js +33 -3
  183. package/lib/commonjs/mol-io/reader/mol2/schema.d.ts +12 -1
  184. package/lib/commonjs/mol-io/reader/mol2/schema.js +1 -1
  185. package/lib/commonjs/mol-math/geometry/gaussian-density/gpu.js +2 -2
  186. package/lib/commonjs/mol-math/geometry/symmetry-operator.js +3 -2
  187. package/lib/commonjs/mol-math/linear-algebra/3d/quat.d.ts +9 -1
  188. package/lib/commonjs/mol-math/linear-algebra/3d/quat.js +20 -1
  189. package/lib/commonjs/mol-model/structure/model/model.d.ts +1 -0
  190. package/lib/commonjs/mol-model/structure/model/model.js +8 -2
  191. package/lib/commonjs/mol-model/structure/model/properties/atomic/hierarchy.d.ts +6 -1
  192. package/lib/commonjs/mol-model/structure/model/properties/atomic/hierarchy.js +1 -1
  193. package/lib/commonjs/mol-model/structure/model/properties/utils/atomic-derived.d.ts +1 -1
  194. package/lib/commonjs/mol-model/structure/model/properties/utils/atomic-derived.js +4 -1
  195. package/lib/commonjs/mol-model/structure/model/properties/utils/atomic-index.d.ts +1 -1
  196. package/lib/commonjs/mol-model/structure/model/properties/utils/atomic-index.js +12 -1
  197. package/lib/commonjs/mol-model/structure/model/types.js +9 -0
  198. package/lib/commonjs/mol-model/structure/structure/element/stats.js +8 -0
  199. package/lib/commonjs/mol-model/structure/structure/unit/bonds/common.d.ts +2 -1
  200. package/lib/commonjs/mol-model/structure/structure/unit/bonds/common.js +11 -2
  201. package/lib/commonjs/mol-model/structure/structure/unit/bonds/inter-compute.d.ts +1 -1
  202. package/lib/commonjs/mol-model/structure/structure/unit/bonds/inter-compute.js +20 -10
  203. package/lib/commonjs/mol-model/structure/structure/unit/bonds/intra-compute.d.ts +1 -1
  204. package/lib/commonjs/mol-model/structure/structure/unit/bonds/intra-compute.js +21 -11
  205. package/lib/commonjs/mol-model/structure/structure/unit/rings.js +2 -0
  206. package/lib/commonjs/mol-model-formats/shape/ply.d.ts +20 -0
  207. package/lib/commonjs/mol-model-formats/structure/mol2.d.ts +1 -1
  208. package/lib/commonjs/mol-model-formats/structure/mol2.js +37 -7
  209. package/lib/commonjs/mol-model-formats/structure/property/bonds/index-pair.d.ts +18 -1
  210. package/lib/commonjs/mol-model-formats/structure/property/bonds/index-pair.js +18 -5
  211. package/lib/commonjs/mol-model-props/computed/representations/interactions-inter-unit-cylinder.d.ts +10 -0
  212. package/lib/commonjs/mol-model-props/computed/representations/interactions-intra-unit-cylinder.d.ts +10 -0
  213. package/lib/commonjs/mol-model-props/computed/representations/interactions.d.ts +30 -0
  214. package/lib/commonjs/mol-model-props/integrative/cross-link-restraint/representation.d.ts +40 -0
  215. package/lib/commonjs/mol-plugin/behavior/dynamic/representation.js +4 -6
  216. package/lib/commonjs/mol-plugin/behavior/dynamic/selection/structure-focus-representation.d.ts +11 -0
  217. package/lib/commonjs/mol-plugin/behavior/dynamic/selection/structure-focus-representation.js +3 -1
  218. package/lib/commonjs/mol-plugin/behavior/dynamic/volume-streaming/model.d.ts +3 -2
  219. package/lib/commonjs/mol-plugin/commands.d.ts +1 -4
  220. package/lib/commonjs/mol-plugin/config.d.ts +2 -2
  221. package/lib/commonjs/mol-plugin/config.js +5 -25
  222. package/lib/commonjs/mol-plugin/features.d.ts +9 -0
  223. package/lib/commonjs/mol-plugin/features.js +38 -0
  224. package/lib/commonjs/mol-plugin/spec.js +1 -0
  225. package/lib/commonjs/mol-plugin/util/viewport-screenshot.d.ts +12 -0
  226. package/lib/commonjs/mol-plugin-state/actions/structure.d.ts +8 -1
  227. package/lib/commonjs/mol-plugin-state/actions/structure.js +183 -72
  228. package/lib/commonjs/mol-plugin-state/builder/structure/hierarchy-preset.d.ts +5 -355
  229. package/lib/commonjs/mol-plugin-state/builder/structure/hierarchy-preset.js +13 -8
  230. package/lib/commonjs/mol-plugin-state/builder/structure/hierarchy.d.ts +1 -71
  231. package/lib/commonjs/mol-plugin-state/builder/structure/representation-preset.d.ts +4 -4
  232. package/lib/commonjs/mol-plugin-state/helpers/structure-clipping.d.ts +1 -1
  233. package/lib/commonjs/mol-plugin-state/helpers/structure-clipping.js +1 -1
  234. package/lib/commonjs/mol-plugin-state/helpers/structure-selection-query.js +33 -19
  235. package/lib/commonjs/mol-plugin-state/manager/structure/component.d.ts +13 -1
  236. package/lib/commonjs/mol-plugin-state/manager/structure/component.js +13 -8
  237. package/lib/commonjs/mol-plugin-state/manager/structure/selection.js +3 -1
  238. package/lib/commonjs/mol-plugin-state/transforms/representation.d.ts +32 -0
  239. package/lib/commonjs/mol-plugin-state/transforms/representation.js +2 -2
  240. package/lib/commonjs/mol-plugin-ui/index.d.ts +4 -4
  241. package/lib/commonjs/mol-plugin-ui/index.js +13 -16
  242. package/lib/commonjs/mol-plugin-ui/plugin.js +1 -1
  243. package/lib/commonjs/mol-plugin-ui/viewport/simple-settings.js +2 -6
  244. package/lib/commonjs/mol-repr/shape/loci/angle.d.ts +10 -0
  245. package/lib/commonjs/mol-repr/shape/loci/common.d.ts +10 -0
  246. package/lib/commonjs/mol-repr/shape/loci/dihedral.d.ts +10 -0
  247. package/lib/commonjs/mol-repr/shape/loci/distance.d.ts +10 -0
  248. package/lib/commonjs/mol-repr/shape/loci/label.d.ts +10 -0
  249. package/lib/commonjs/mol-repr/shape/loci/orientation.d.ts +10 -0
  250. package/lib/commonjs/mol-repr/shape/loci/plane.d.ts +10 -0
  251. package/lib/commonjs/mol-repr/shape/model/unitcell.d.ts +10 -0
  252. package/lib/commonjs/mol-repr/structure/complex-representation.js +1 -1
  253. package/lib/commonjs/mol-repr/structure/complex-visual.d.ts +61 -19
  254. package/lib/commonjs/mol-repr/structure/params.d.ts +81 -19
  255. package/lib/commonjs/mol-repr/structure/registry.d.ts +141 -19
  256. package/lib/commonjs/mol-repr/structure/representation/backbone.d.ts +30 -0
  257. package/lib/commonjs/mol-repr/structure/representation/ball-and-stick.d.ts +30 -0
  258. package/lib/commonjs/mol-repr/structure/representation/carbohydrate.d.ts +30 -0
  259. package/lib/commonjs/mol-repr/structure/representation/cartoon.d.ts +30 -0
  260. package/lib/commonjs/mol-repr/structure/representation/ellipsoid.d.ts +30 -0
  261. package/lib/commonjs/mol-repr/structure/representation/gaussian-surface.d.ts +30 -0
  262. package/lib/commonjs/mol-repr/structure/representation/gaussian-surface.js +1 -1
  263. package/lib/commonjs/mol-repr/structure/representation/gaussian-volume.d.ts +34 -58
  264. package/lib/commonjs/mol-repr/structure/representation/gaussian-volume.js +2 -7
  265. package/lib/commonjs/mol-repr/structure/representation/label.d.ts +30 -0
  266. package/lib/commonjs/mol-repr/structure/representation/label.js +1 -1
  267. package/lib/commonjs/mol-repr/structure/representation/line.d.ts +30 -0
  268. package/lib/commonjs/mol-repr/structure/representation/molecular-surface.d.ts +30 -0
  269. package/lib/commonjs/mol-repr/structure/representation/molecular-surface.js +1 -1
  270. package/lib/commonjs/mol-repr/structure/representation/orientation.d.ts +30 -0
  271. package/lib/commonjs/mol-repr/structure/representation/point.d.ts +30 -0
  272. package/lib/commonjs/mol-repr/structure/representation/putty.d.ts +30 -0
  273. package/lib/commonjs/mol-repr/structure/representation/spacefill.d.ts +30 -0
  274. package/lib/commonjs/mol-repr/structure/units-representation.js +1 -1
  275. package/lib/commonjs/mol-repr/structure/units-visual.d.ts +81 -19
  276. package/lib/commonjs/mol-repr/structure/visual/bond-inter-unit-cylinder.d.ts +20 -0
  277. package/lib/commonjs/mol-repr/structure/visual/bond-inter-unit-line.d.ts +10 -0
  278. package/lib/commonjs/mol-repr/structure/visual/bond-intra-unit-cylinder.d.ts +20 -0
  279. package/lib/commonjs/mol-repr/structure/visual/bond-intra-unit-cylinder.js +2 -2
  280. package/lib/commonjs/mol-repr/structure/visual/bond-intra-unit-line.d.ts +10 -0
  281. package/lib/commonjs/mol-repr/structure/visual/bond-intra-unit-line.js +2 -2
  282. package/lib/commonjs/mol-repr/structure/visual/carbohydrate-link-cylinder.d.ts +10 -0
  283. package/lib/commonjs/mol-repr/structure/visual/carbohydrate-symbol-mesh.d.ts +10 -0
  284. package/lib/commonjs/mol-repr/structure/visual/carbohydrate-terminal-link-cylinder.d.ts +10 -0
  285. package/lib/commonjs/mol-repr/structure/visual/element-cross.d.ts +10 -0
  286. package/lib/commonjs/mol-repr/structure/visual/element-point.d.ts +10 -0
  287. package/lib/commonjs/mol-repr/structure/visual/element-sphere.d.ts +20 -0
  288. package/lib/commonjs/mol-repr/structure/visual/ellipsoid-mesh.d.ts +10 -0
  289. package/lib/commonjs/mol-repr/structure/visual/gaussian-density-volume.d.ts +22 -38
  290. package/lib/commonjs/mol-repr/structure/visual/gaussian-density-volume.js +8 -6
  291. package/lib/commonjs/mol-repr/structure/visual/gaussian-surface-mesh.d.ts +40 -0
  292. package/lib/commonjs/mol-repr/structure/visual/gaussian-surface-mesh.js +11 -8
  293. package/lib/commonjs/mol-repr/structure/visual/gaussian-surface-wireframe.d.ts +10 -0
  294. package/lib/commonjs/mol-repr/structure/visual/gaussian-surface-wireframe.js +1 -1
  295. package/lib/commonjs/mol-repr/structure/visual/label-text.d.ts +10 -0
  296. package/lib/commonjs/mol-repr/structure/visual/label-text.js +1 -2
  297. package/lib/commonjs/mol-repr/structure/visual/molecular-surface-mesh.d.ts +10 -0
  298. package/lib/commonjs/mol-repr/structure/visual/molecular-surface-mesh.js +1 -1
  299. package/lib/commonjs/mol-repr/structure/visual/molecular-surface-wireframe.d.ts +10 -0
  300. package/lib/commonjs/mol-repr/structure/visual/molecular-surface-wireframe.js +1 -1
  301. package/lib/commonjs/mol-repr/structure/visual/nucleotide-block-mesh.d.ts +10 -0
  302. package/lib/commonjs/mol-repr/structure/visual/nucleotide-ring-mesh.d.ts +10 -0
  303. package/lib/commonjs/mol-repr/structure/visual/orientation-ellipsoid-mesh.d.ts +10 -0
  304. package/lib/commonjs/mol-repr/structure/visual/polymer-backbone-cylinder.d.ts +20 -0
  305. package/lib/commonjs/mol-repr/structure/visual/polymer-backbone-sphere.d.ts +20 -0
  306. package/lib/commonjs/mol-repr/structure/visual/polymer-direction-wedge.d.ts +10 -0
  307. package/lib/commonjs/mol-repr/structure/visual/polymer-gap-cylinder.d.ts +10 -0
  308. package/lib/commonjs/mol-repr/structure/visual/polymer-trace-mesh.d.ts +10 -0
  309. package/lib/commonjs/mol-repr/structure/visual/polymer-trace-mesh.js +1 -1
  310. package/lib/commonjs/mol-repr/structure/visual/polymer-tube-mesh.d.ts +10 -0
  311. package/lib/commonjs/mol-repr/structure/visual/util/bond.js +1 -1
  312. package/lib/commonjs/mol-repr/structure/visual/util/common.d.ts +3 -2
  313. package/lib/commonjs/mol-repr/structure/visual/util/common.js +2 -5
  314. package/lib/commonjs/mol-repr/structure/visual/util/gaussian.d.ts +7 -6
  315. package/lib/commonjs/mol-repr/structure/visual/util/gaussian.js +12 -12
  316. package/lib/commonjs/mol-repr/structure/visual/util/molecular-surface.d.ts +2 -1
  317. package/lib/commonjs/mol-repr/structure/visual/util/molecular-surface.js +4 -4
  318. package/lib/commonjs/mol-repr/visual.js +11 -7
  319. package/lib/commonjs/mol-repr/volume/direct-volume.d.ts +33 -57
  320. package/lib/commonjs/mol-repr/volume/direct-volume.js +8 -12
  321. package/lib/commonjs/mol-repr/volume/isosurface.d.ts +60 -0
  322. package/lib/commonjs/mol-repr/volume/isosurface.js +11 -2
  323. package/lib/commonjs/mol-repr/volume/registry.d.ts +31 -19
  324. package/lib/commonjs/mol-repr/volume/representation.d.ts +10 -0
  325. package/lib/commonjs/mol-repr/volume/slice.d.ts +30 -0
  326. package/lib/commonjs/mol-repr/volume/slice.js +2 -2
  327. package/lib/commonjs/mol-repr/volume/util.js +2 -2
  328. package/lib/commonjs/mol-script/language/builder.d.ts +0 -1
  329. package/lib/commonjs/mol-theme/clipping.d.ts +7 -15
  330. package/lib/commonjs/mol-theme/clipping.js +5 -12
  331. package/lib/commonjs/mol-theme/color/volume-value.d.ts +17 -0
  332. package/lib/commonjs/mol-theme/color/volume-value.js +57 -0
  333. package/lib/commonjs/mol-theme/color.d.ts +3 -0
  334. package/lib/commonjs/mol-theme/color.js +2 -0
  335. package/lib/commonjs/mol-util/clip.d.ts +49 -0
  336. package/lib/commonjs/mol-util/clip.js +97 -0
  337. package/lib/commonjs/mol-util/number-packing.d.ts +11 -0
  338. package/lib/commonjs/mol-util/{float-packing.js → number-packing.js} +10 -19
  339. package/lib/examples/alpha-orbitals/index.html +61 -60
  340. package/lib/examples/alpha-orbitals/index.js +4 -5
  341. package/lib/examples/basic-wrapper/index.html +137 -136
  342. package/lib/examples/basic-wrapper/index.js +24 -12
  343. package/lib/examples/lighting/index.d.ts +1 -1
  344. package/lib/examples/lighting/index.html +88 -86
  345. package/lib/examples/lighting/index.js +58 -42
  346. package/lib/examples/proteopedia-wrapper/index.html +236 -235
  347. package/lib/examples/proteopedia-wrapper/index.js +27 -15
  348. package/lib/extensions/alpha-orbitals/transforms.d.ts +0 -1
  349. package/lib/extensions/alpha-orbitals/transforms.js +1 -14
  350. package/lib/extensions/anvil/behavior.d.ts +4 -0
  351. package/lib/extensions/anvil/representation.d.ts +50 -0
  352. package/lib/extensions/cellpack/representation.d.ts +10 -0
  353. package/lib/extensions/dnatco/confal-pyramids/representation.d.ts +30 -0
  354. package/lib/extensions/geo-export/mesh-exporter.js +4 -4
  355. package/lib/extensions/model-archive/quality-assessment/behavior.d.ts +68 -0
  356. package/lib/extensions/model-archive/quality-assessment/behavior.js +233 -0
  357. package/lib/extensions/model-archive/quality-assessment/color/plddt.d.ts +14 -0
  358. package/lib/extensions/model-archive/quality-assessment/color/plddt.js +120 -0
  359. package/lib/extensions/model-archive/quality-assessment/color/qmean.d.ts +12 -0
  360. package/lib/extensions/model-archive/quality-assessment/color/qmean.js +106 -0
  361. package/lib/extensions/model-archive/quality-assessment/prop.d.ts +28 -0
  362. package/lib/extensions/model-archive/quality-assessment/prop.js +127 -0
  363. package/lib/extensions/pdbe/structure-quality-report/prop.js +1 -1
  364. package/lib/extensions/rcsb/assembly-symmetry/behavior.d.ts +6 -2
  365. package/lib/extensions/rcsb/assembly-symmetry/prop.js +1 -1
  366. package/lib/extensions/rcsb/assembly-symmetry/representation.d.ts +10 -0
  367. package/lib/extensions/rcsb/validation-report/prop.js +1 -1
  368. package/lib/extensions/rcsb/validation-report/representation.d.ts +50 -0
  369. package/lib/mol-canvas3d/canvas3d.d.ts +3 -9
  370. package/lib/mol-canvas3d/canvas3d.js +34 -23
  371. package/lib/mol-canvas3d/helper/bounding-sphere-helper.js +3 -2
  372. package/lib/mol-canvas3d/helper/camera-helper.d.ts +4 -0
  373. package/lib/mol-canvas3d/helper/camera-helper.js +2 -2
  374. package/lib/mol-canvas3d/helper/handle-helper.d.ts +4 -0
  375. package/lib/mol-canvas3d/helper/handle-helper.js +2 -2
  376. package/lib/mol-canvas3d/helper/helper.d.ts +2 -0
  377. package/lib/mol-canvas3d/passes/draw.d.ts +13 -1
  378. package/lib/mol-canvas3d/passes/draw.js +16 -15
  379. package/lib/mol-canvas3d/passes/image.d.ts +1 -0
  380. package/lib/mol-canvas3d/passes/image.js +3 -2
  381. package/lib/mol-canvas3d/passes/marking.js +1 -1
  382. package/lib/mol-canvas3d/passes/multi-sample.d.ts +10 -2
  383. package/lib/mol-canvas3d/passes/multi-sample.js +18 -14
  384. package/lib/mol-canvas3d/passes/pick.js +11 -11
  385. package/lib/mol-canvas3d/passes/postprocessing.js +3 -3
  386. package/lib/mol-canvas3d/passes/smaa.js +1 -1
  387. package/lib/mol-geo/geometry/base.d.ts +18 -0
  388. package/lib/mol-geo/geometry/base.js +18 -1
  389. package/lib/mol-geo/geometry/clipping-data.d.ts +1 -3
  390. package/lib/mol-geo/geometry/clipping-data.js +3 -8
  391. package/lib/mol-geo/geometry/color-data.d.ts +1 -1
  392. package/lib/mol-geo/geometry/color-data.js +22 -0
  393. package/lib/mol-geo/geometry/cylinders/cylinders.d.ts +12 -2
  394. package/lib/mol-geo/geometry/cylinders/cylinders.js +2 -2
  395. package/lib/mol-geo/geometry/direct-volume/direct-volume.d.ts +15 -38
  396. package/lib/mol-geo/geometry/direct-volume/direct-volume.js +22 -67
  397. package/lib/mol-geo/geometry/direct-volume/transfer-function.d.ts +2 -4
  398. package/lib/mol-geo/geometry/direct-volume/transfer-function.js +4 -7
  399. package/lib/mol-geo/geometry/image/image.d.ts +10 -0
  400. package/lib/mol-geo/geometry/image/image.js +1 -1
  401. package/lib/mol-geo/geometry/lines/lines.d.ts +11 -0
  402. package/lib/mol-geo/geometry/lines/lines.js +1 -1
  403. package/lib/mol-geo/geometry/marker-data.d.ts +0 -1
  404. package/lib/mol-geo/geometry/marker-data.js +13 -9
  405. package/lib/mol-geo/geometry/mesh/mesh.d.ts +10 -0
  406. package/lib/mol-geo/geometry/mesh/mesh.js +2 -2
  407. package/lib/mol-geo/geometry/points/points.d.ts +11 -1
  408. package/lib/mol-geo/geometry/points/points.js +1 -1
  409. package/lib/mol-geo/geometry/size-data.js +5 -5
  410. package/lib/mol-geo/geometry/spheres/spheres.d.ts +10 -0
  411. package/lib/mol-geo/geometry/spheres/spheres.js +2 -2
  412. package/lib/mol-geo/geometry/text/text.d.ts +10 -0
  413. package/lib/mol-geo/geometry/text/text.js +1 -1
  414. package/lib/mol-geo/geometry/texture-mesh/texture-mesh.d.ts +10 -0
  415. package/lib/mol-geo/geometry/texture-mesh/texture-mesh.js +2 -2
  416. package/lib/mol-gl/compute/histogram-pyramid/sum.js +2 -2
  417. package/lib/mol-gl/compute/marching-cubes/isosurface.d.ts +2 -2
  418. package/lib/mol-gl/compute/marching-cubes/isosurface.js +10 -9
  419. package/lib/mol-gl/render-object.d.ts +2 -1
  420. package/lib/mol-gl/render-object.js +10 -10
  421. package/lib/mol-gl/renderable/cylinders.d.ts +11 -5
  422. package/lib/mol-gl/renderable/cylinders.js +3 -3
  423. package/lib/mol-gl/renderable/direct-volume.d.ts +15 -14
  424. package/lib/mol-gl/renderable/direct-volume.js +3 -3
  425. package/lib/mol-gl/renderable/image.d.ts +10 -4
  426. package/lib/mol-gl/renderable/image.js +2 -2
  427. package/lib/mol-gl/renderable/lines.d.ts +39 -33
  428. package/lib/mol-gl/renderable/lines.js +4 -4
  429. package/lib/mol-gl/renderable/mesh.d.ts +11 -5
  430. package/lib/mol-gl/renderable/mesh.js +3 -3
  431. package/lib/mol-gl/renderable/points.d.ts +10 -4
  432. package/lib/mol-gl/renderable/points.js +2 -2
  433. package/lib/mol-gl/renderable/schema.d.ts +10 -11
  434. package/lib/mol-gl/renderable/schema.js +4 -10
  435. package/lib/mol-gl/renderable/spheres.d.ts +11 -5
  436. package/lib/mol-gl/renderable/spheres.js +3 -3
  437. package/lib/mol-gl/renderable/text.d.ts +10 -4
  438. package/lib/mol-gl/renderable/text.js +2 -2
  439. package/lib/mol-gl/renderable/texture-mesh.d.ts +11 -6
  440. package/lib/mol-gl/renderable/texture-mesh.js +3 -3
  441. package/lib/mol-gl/renderable.d.ts +0 -1
  442. package/lib/mol-gl/renderer.d.ts +12 -12
  443. package/lib/mol-gl/renderer.js +24 -93
  444. package/lib/mol-gl/scene.d.ts +2 -2
  445. package/lib/mol-gl/scene.js +7 -5
  446. package/lib/mol-gl/shader/chunks/apply-light-color.glsl.d.ts +1 -1
  447. package/lib/mol-gl/shader/chunks/apply-light-color.glsl.js +1 -1
  448. package/lib/mol-gl/shader/chunks/assign-color-varying.glsl.d.ts +1 -1
  449. package/lib/mol-gl/shader/chunks/assign-color-varying.glsl.js +1 -1
  450. package/lib/mol-gl/shader/chunks/assign-group.glsl.d.ts +1 -1
  451. package/lib/mol-gl/shader/chunks/assign-group.glsl.js +1 -1
  452. package/lib/mol-gl/shader/chunks/assign-marker-varying.glsl.d.ts +1 -1
  453. package/lib/mol-gl/shader/chunks/assign-marker-varying.glsl.js +1 -1
  454. package/lib/mol-gl/shader/chunks/assign-material-color.glsl.d.ts +1 -1
  455. package/lib/mol-gl/shader/chunks/assign-material-color.glsl.js +1 -1
  456. package/lib/mol-gl/shader/chunks/assign-position.glsl.d.ts +1 -1
  457. package/lib/mol-gl/shader/chunks/assign-position.glsl.js +1 -1
  458. package/lib/mol-gl/shader/chunks/assign-size.glsl.d.ts +1 -1
  459. package/lib/mol-gl/shader/chunks/assign-size.glsl.js +1 -1
  460. package/lib/mol-gl/shader/chunks/color-frag-params.glsl.d.ts +1 -1
  461. package/lib/mol-gl/shader/chunks/color-frag-params.glsl.js +1 -1
  462. package/lib/mol-gl/shader/chunks/color-vert-params.glsl.d.ts +1 -1
  463. package/lib/mol-gl/shader/chunks/color-vert-params.glsl.js +1 -1
  464. package/lib/mol-gl/shader/chunks/common-frag-params.glsl.d.ts +1 -1
  465. package/lib/mol-gl/shader/chunks/common-frag-params.glsl.js +1 -1
  466. package/lib/mol-gl/shader/chunks/common-vert-params.glsl.d.ts +1 -1
  467. package/lib/mol-gl/shader/chunks/common-vert-params.glsl.js +1 -1
  468. package/lib/mol-gl/shader/chunks/common.glsl.d.ts +1 -1
  469. package/lib/mol-gl/shader/chunks/common.glsl.js +1 -1
  470. package/lib/mol-gl/shader/chunks/wboit-write.glsl.d.ts +1 -1
  471. package/lib/mol-gl/shader/chunks/wboit-write.glsl.js +1 -1
  472. package/lib/mol-gl/shader/compute/color-smoothing/accumulate.vert.d.ts +1 -1
  473. package/lib/mol-gl/shader/compute/color-smoothing/accumulate.vert.js +1 -1
  474. package/lib/mol-gl/shader/cylinders.frag.d.ts +1 -1
  475. package/lib/mol-gl/shader/cylinders.frag.js +1 -1
  476. package/lib/mol-gl/shader/direct-volume.frag.d.ts +1 -1
  477. package/lib/mol-gl/shader/direct-volume.frag.js +1 -1
  478. package/lib/mol-gl/shader/gaussian-density.frag.d.ts +1 -1
  479. package/lib/mol-gl/shader/gaussian-density.frag.js +1 -1
  480. package/lib/mol-gl/shader/histogram-pyramid/reduction.frag.d.ts +1 -1
  481. package/lib/mol-gl/shader/histogram-pyramid/reduction.frag.js +1 -1
  482. package/lib/mol-gl/shader/image.frag.d.ts +1 -1
  483. package/lib/mol-gl/shader/image.frag.js +1 -1
  484. package/lib/mol-gl/shader/marching-cubes/isosurface.frag.d.ts +1 -1
  485. package/lib/mol-gl/shader/marching-cubes/isosurface.frag.js +1 -1
  486. package/lib/mol-gl/shader/mesh.frag.d.ts +1 -1
  487. package/lib/mol-gl/shader/mesh.frag.js +1 -1
  488. package/lib/mol-gl/shader/mesh.vert.d.ts +1 -1
  489. package/lib/mol-gl/shader/mesh.vert.js +1 -1
  490. package/lib/mol-gl/shader/spheres.frag.d.ts +1 -1
  491. package/lib/mol-gl/shader/spheres.frag.js +1 -1
  492. package/lib/mol-gl/shader-code.d.ts +3 -1
  493. package/lib/mol-gl/shader-code.js +43 -14
  494. package/lib/mol-gl/webgl/render-item.d.ts +7 -6
  495. package/lib/mol-gl/webgl/render-item.js +8 -6
  496. package/lib/mol-gl/webgl/resources.js +8 -1
  497. package/lib/mol-io/reader/cif/schema/mmcif.d.ts +326 -1
  498. package/lib/mol-io/reader/cif/schema/mmcif.js +326 -1
  499. package/lib/mol-io/reader/mol2/parser.d.ts +1 -1
  500. package/lib/mol-io/reader/mol2/parser.js +33 -3
  501. package/lib/mol-io/reader/mol2/schema.d.ts +12 -1
  502. package/lib/mol-io/reader/mol2/schema.js +1 -1
  503. package/lib/mol-math/geometry/gaussian-density/gpu.js +2 -2
  504. package/lib/mol-math/geometry/symmetry-operator.js +3 -2
  505. package/lib/mol-math/linear-algebra/3d/quat.d.ts +9 -1
  506. package/lib/mol-math/linear-algebra/3d/quat.js +20 -1
  507. package/lib/mol-model/structure/model/model.d.ts +1 -0
  508. package/lib/mol-model/structure/model/model.js +8 -2
  509. package/lib/mol-model/structure/model/properties/atomic/hierarchy.d.ts +6 -1
  510. package/lib/mol-model/structure/model/properties/atomic/hierarchy.js +1 -1
  511. package/lib/mol-model/structure/model/properties/utils/atomic-derived.d.ts +1 -1
  512. package/lib/mol-model/structure/model/properties/utils/atomic-derived.js +5 -2
  513. package/lib/mol-model/structure/model/properties/utils/atomic-index.d.ts +1 -1
  514. package/lib/mol-model/structure/model/properties/utils/atomic-index.js +12 -1
  515. package/lib/mol-model/structure/model/types.js +9 -0
  516. package/lib/mol-model/structure/structure/element/stats.js +8 -0
  517. package/lib/mol-model/structure/structure/unit/bonds/common.d.ts +2 -1
  518. package/lib/mol-model/structure/structure/unit/bonds/common.js +9 -1
  519. package/lib/mol-model/structure/structure/unit/bonds/inter-compute.d.ts +1 -1
  520. package/lib/mol-model/structure/structure/unit/bonds/inter-compute.js +21 -11
  521. package/lib/mol-model/structure/structure/unit/bonds/intra-compute.d.ts +1 -1
  522. package/lib/mol-model/structure/structure/unit/bonds/intra-compute.js +22 -12
  523. package/lib/mol-model/structure/structure/unit/rings.js +2 -0
  524. package/lib/mol-model-formats/shape/ply.d.ts +20 -0
  525. package/lib/mol-model-formats/structure/mol2.d.ts +1 -1
  526. package/lib/mol-model-formats/structure/mol2.js +37 -7
  527. package/lib/mol-model-formats/structure/property/bonds/index-pair.d.ts +18 -1
  528. package/lib/mol-model-formats/structure/property/bonds/index-pair.js +18 -5
  529. package/lib/mol-model-props/computed/representations/interactions-inter-unit-cylinder.d.ts +10 -0
  530. package/lib/mol-model-props/computed/representations/interactions-intra-unit-cylinder.d.ts +10 -0
  531. package/lib/mol-model-props/computed/representations/interactions.d.ts +30 -0
  532. package/lib/mol-model-props/integrative/cross-link-restraint/representation.d.ts +40 -0
  533. package/lib/mol-plugin/behavior/dynamic/representation.js +4 -6
  534. package/lib/mol-plugin/behavior/dynamic/selection/structure-focus-representation.d.ts +11 -0
  535. package/lib/mol-plugin/behavior/dynamic/selection/structure-focus-representation.js +3 -1
  536. package/lib/mol-plugin/behavior/dynamic/volume-streaming/model.d.ts +3 -2
  537. package/lib/mol-plugin/commands.d.ts +1 -4
  538. package/lib/mol-plugin/config.d.ts +2 -2
  539. package/lib/mol-plugin/config.js +4 -23
  540. package/lib/mol-plugin/features.d.ts +9 -0
  541. package/lib/mol-plugin/features.js +35 -0
  542. package/lib/mol-plugin/spec.js +1 -0
  543. package/lib/mol-plugin/util/viewport-screenshot.d.ts +12 -0
  544. package/lib/mol-plugin/version.js +2 -2
  545. package/lib/mol-plugin-state/actions/structure.d.ts +8 -1
  546. package/lib/mol-plugin-state/actions/structure.js +183 -72
  547. package/lib/mol-plugin-state/builder/structure/hierarchy-preset.d.ts +5 -355
  548. package/lib/mol-plugin-state/builder/structure/hierarchy-preset.js +14 -9
  549. package/lib/mol-plugin-state/builder/structure/hierarchy.d.ts +1 -71
  550. package/lib/mol-plugin-state/builder/structure/representation-preset.d.ts +4 -4
  551. package/lib/mol-plugin-state/helpers/structure-clipping.d.ts +1 -1
  552. package/lib/mol-plugin-state/helpers/structure-clipping.js +1 -1
  553. package/lib/mol-plugin-state/helpers/structure-selection-query.js +34 -20
  554. package/lib/mol-plugin-state/manager/structure/component.d.ts +13 -1
  555. package/lib/mol-plugin-state/manager/structure/component.js +14 -9
  556. package/lib/mol-plugin-state/manager/structure/selection.js +3 -1
  557. package/lib/mol-plugin-state/transforms/representation.d.ts +32 -0
  558. package/lib/mol-plugin-state/transforms/representation.js +2 -2
  559. package/lib/mol-plugin-ui/index.d.ts +4 -4
  560. package/lib/mol-plugin-ui/index.js +11 -13
  561. package/lib/mol-plugin-ui/plugin.js +1 -1
  562. package/lib/mol-plugin-ui/skin/base/base.scss +32 -32
  563. package/lib/mol-plugin-ui/skin/base/components/controls-base.scss +333 -333
  564. package/lib/mol-plugin-ui/skin/base/components/controls.scss +418 -418
  565. package/lib/mol-plugin-ui/skin/base/components/help.scss +27 -27
  566. package/lib/mol-plugin-ui/skin/base/components/line-graph.scss +67 -67
  567. package/lib/mol-plugin-ui/skin/base/components/log.scss +100 -100
  568. package/lib/mol-plugin-ui/skin/base/components/misc.scss +643 -643
  569. package/lib/mol-plugin-ui/skin/base/components/sequence.scss +125 -125
  570. package/lib/mol-plugin-ui/skin/base/components/slider.scss +165 -165
  571. package/lib/mol-plugin-ui/skin/base/components/tasks.scss +99 -99
  572. package/lib/mol-plugin-ui/skin/base/components/toast.scss +83 -83
  573. package/lib/mol-plugin-ui/skin/base/components/transformer.scss +163 -163
  574. package/lib/mol-plugin-ui/skin/base/components/viewport.scss +127 -127
  575. package/lib/mol-plugin-ui/skin/base/layout/common.scss +71 -71
  576. package/lib/mol-plugin-ui/skin/base/layout/controls-landscape.scss +89 -89
  577. package/lib/mol-plugin-ui/skin/base/layout/controls-outside.scss +98 -98
  578. package/lib/mol-plugin-ui/skin/base/layout/controls-portrait.scss +108 -108
  579. package/lib/mol-plugin-ui/skin/base/layout.scss +40 -40
  580. package/lib/mol-plugin-ui/skin/base/logo.scss +12 -12
  581. package/lib/mol-plugin-ui/skin/base/normalize.scss +209 -209
  582. package/lib/mol-plugin-ui/skin/base/ui.scss +40 -40
  583. package/lib/mol-plugin-ui/skin/base/variables.scss +85 -85
  584. package/lib/mol-plugin-ui/skin/blue.scss +1 -1
  585. package/lib/mol-plugin-ui/skin/colors/blue.scss +23 -23
  586. package/lib/mol-plugin-ui/skin/colors/dark.scss +23 -23
  587. package/lib/mol-plugin-ui/skin/colors/light.scss +29 -29
  588. package/lib/mol-plugin-ui/skin/dark.scss +1 -1
  589. package/lib/mol-plugin-ui/skin/light.scss +1 -1
  590. package/lib/mol-plugin-ui/viewport/simple-settings.js +2 -6
  591. package/lib/mol-repr/shape/loci/angle.d.ts +10 -0
  592. package/lib/mol-repr/shape/loci/common.d.ts +10 -0
  593. package/lib/mol-repr/shape/loci/dihedral.d.ts +10 -0
  594. package/lib/mol-repr/shape/loci/distance.d.ts +10 -0
  595. package/lib/mol-repr/shape/loci/label.d.ts +10 -0
  596. package/lib/mol-repr/shape/loci/orientation.d.ts +10 -0
  597. package/lib/mol-repr/shape/loci/plane.d.ts +10 -0
  598. package/lib/mol-repr/shape/model/unitcell.d.ts +10 -0
  599. package/lib/mol-repr/structure/complex-representation.js +1 -1
  600. package/lib/mol-repr/structure/complex-visual.d.ts +61 -19
  601. package/lib/mol-repr/structure/params.d.ts +81 -19
  602. package/lib/mol-repr/structure/registry.d.ts +141 -19
  603. package/lib/mol-repr/structure/representation/backbone.d.ts +30 -0
  604. package/lib/mol-repr/structure/representation/ball-and-stick.d.ts +30 -0
  605. package/lib/mol-repr/structure/representation/carbohydrate.d.ts +30 -0
  606. package/lib/mol-repr/structure/representation/cartoon.d.ts +30 -0
  607. package/lib/mol-repr/structure/representation/ellipsoid.d.ts +30 -0
  608. package/lib/mol-repr/structure/representation/gaussian-surface.d.ts +30 -0
  609. package/lib/mol-repr/structure/representation/gaussian-surface.js +1 -1
  610. package/lib/mol-repr/structure/representation/gaussian-volume.d.ts +34 -58
  611. package/lib/mol-repr/structure/representation/gaussian-volume.js +2 -7
  612. package/lib/mol-repr/structure/representation/label.d.ts +30 -0
  613. package/lib/mol-repr/structure/representation/label.js +1 -1
  614. package/lib/mol-repr/structure/representation/line.d.ts +30 -0
  615. package/lib/mol-repr/structure/representation/molecular-surface.d.ts +30 -0
  616. package/lib/mol-repr/structure/representation/molecular-surface.js +1 -1
  617. package/lib/mol-repr/structure/representation/orientation.d.ts +30 -0
  618. package/lib/mol-repr/structure/representation/point.d.ts +30 -0
  619. package/lib/mol-repr/structure/representation/putty.d.ts +30 -0
  620. package/lib/mol-repr/structure/representation/spacefill.d.ts +30 -0
  621. package/lib/mol-repr/structure/units-representation.js +1 -1
  622. package/lib/mol-repr/structure/units-visual.d.ts +81 -19
  623. package/lib/mol-repr/structure/visual/bond-inter-unit-cylinder.d.ts +20 -0
  624. package/lib/mol-repr/structure/visual/bond-inter-unit-line.d.ts +10 -0
  625. package/lib/mol-repr/structure/visual/bond-intra-unit-cylinder.d.ts +20 -0
  626. package/lib/mol-repr/structure/visual/bond-intra-unit-cylinder.js +2 -2
  627. package/lib/mol-repr/structure/visual/bond-intra-unit-line.d.ts +10 -0
  628. package/lib/mol-repr/structure/visual/bond-intra-unit-line.js +2 -2
  629. package/lib/mol-repr/structure/visual/carbohydrate-link-cylinder.d.ts +10 -0
  630. package/lib/mol-repr/structure/visual/carbohydrate-symbol-mesh.d.ts +10 -0
  631. package/lib/mol-repr/structure/visual/carbohydrate-terminal-link-cylinder.d.ts +10 -0
  632. package/lib/mol-repr/structure/visual/element-cross.d.ts +10 -0
  633. package/lib/mol-repr/structure/visual/element-point.d.ts +10 -0
  634. package/lib/mol-repr/structure/visual/element-sphere.d.ts +20 -0
  635. package/lib/mol-repr/structure/visual/ellipsoid-mesh.d.ts +10 -0
  636. package/lib/mol-repr/structure/visual/gaussian-density-volume.d.ts +22 -38
  637. package/lib/mol-repr/structure/visual/gaussian-density-volume.js +8 -6
  638. package/lib/mol-repr/structure/visual/gaussian-surface-mesh.d.ts +40 -0
  639. package/lib/mol-repr/structure/visual/gaussian-surface-mesh.js +11 -8
  640. package/lib/mol-repr/structure/visual/gaussian-surface-wireframe.d.ts +10 -0
  641. package/lib/mol-repr/structure/visual/gaussian-surface-wireframe.js +1 -1
  642. package/lib/mol-repr/structure/visual/label-text.d.ts +10 -0
  643. package/lib/mol-repr/structure/visual/label-text.js +1 -2
  644. package/lib/mol-repr/structure/visual/molecular-surface-mesh.d.ts +10 -0
  645. package/lib/mol-repr/structure/visual/molecular-surface-mesh.js +1 -1
  646. package/lib/mol-repr/structure/visual/molecular-surface-wireframe.d.ts +10 -0
  647. package/lib/mol-repr/structure/visual/molecular-surface-wireframe.js +1 -1
  648. package/lib/mol-repr/structure/visual/nucleotide-block-mesh.d.ts +10 -0
  649. package/lib/mol-repr/structure/visual/nucleotide-ring-mesh.d.ts +10 -0
  650. package/lib/mol-repr/structure/visual/orientation-ellipsoid-mesh.d.ts +10 -0
  651. package/lib/mol-repr/structure/visual/polymer-backbone-cylinder.d.ts +20 -0
  652. package/lib/mol-repr/structure/visual/polymer-backbone-sphere.d.ts +20 -0
  653. package/lib/mol-repr/structure/visual/polymer-direction-wedge.d.ts +10 -0
  654. package/lib/mol-repr/structure/visual/polymer-gap-cylinder.d.ts +10 -0
  655. package/lib/mol-repr/structure/visual/polymer-trace-mesh.d.ts +10 -0
  656. package/lib/mol-repr/structure/visual/polymer-trace-mesh.js +1 -1
  657. package/lib/mol-repr/structure/visual/polymer-tube-mesh.d.ts +10 -0
  658. package/lib/mol-repr/structure/visual/util/bond.js +1 -1
  659. package/lib/mol-repr/structure/visual/util/common.d.ts +3 -2
  660. package/lib/mol-repr/structure/visual/util/common.js +2 -5
  661. package/lib/mol-repr/structure/visual/util/gaussian.d.ts +7 -6
  662. package/lib/mol-repr/structure/visual/util/gaussian.js +12 -12
  663. package/lib/mol-repr/structure/visual/util/molecular-surface.d.ts +2 -1
  664. package/lib/mol-repr/structure/visual/util/molecular-surface.js +4 -4
  665. package/lib/mol-repr/visual.js +11 -7
  666. package/lib/mol-repr/volume/direct-volume.d.ts +33 -57
  667. package/lib/mol-repr/volume/direct-volume.js +8 -12
  668. package/lib/mol-repr/volume/isosurface.d.ts +60 -0
  669. package/lib/mol-repr/volume/isosurface.js +11 -2
  670. package/lib/mol-repr/volume/registry.d.ts +31 -19
  671. package/lib/mol-repr/volume/representation.d.ts +10 -0
  672. package/lib/mol-repr/volume/slice.d.ts +30 -0
  673. package/lib/mol-repr/volume/slice.js +2 -2
  674. package/lib/mol-repr/volume/util.js +2 -2
  675. package/lib/mol-script/language/builder.d.ts +0 -1
  676. package/lib/mol-theme/clipping.d.ts +7 -15
  677. package/lib/mol-theme/clipping.js +5 -12
  678. package/lib/mol-theme/color/volume-value.d.ts +17 -0
  679. package/lib/mol-theme/color/volume-value.js +52 -0
  680. package/lib/mol-theme/color.d.ts +3 -0
  681. package/lib/mol-theme/color.js +2 -0
  682. package/lib/mol-util/clip.d.ts +49 -0
  683. package/lib/mol-util/clip.js +93 -0
  684. package/lib/mol-util/number-packing.d.ts +11 -0
  685. package/lib/mol-util/{float-packing.js → number-packing.js} +7 -14
  686. package/package.json +162 -162
  687. package/lib/commonjs/mol-util/float-packing.d.ts +0 -15
  688. package/lib/mol-util/float-packing.d.ts +0 -15
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isosurface_frag = void 0;
4
- exports.isosurface_frag = "\nprecision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\n#if __VERSION__ == 100\n uniform sampler2D tActiveVoxelsPyramid;\n#else\n precision highp isampler2D;\n uniform isampler2D tActiveVoxelsPyramid;\n#endif\n\nuniform sampler2D tActiveVoxelsBase;\nuniform sampler2D tVolumeData;\nuniform sampler2D tTriIndices;\n\nuniform float uIsoValue;\nuniform float uLevels;\nuniform float uSize;\nuniform float uCount;\nuniform bool uInvert;\n\nuniform vec3 uGridDim;\nuniform vec3 uGridTexDim;\nuniform mat4 uGridTransform;\n\n// scale to volume data coord\nuniform vec2 uScale;\n\n#include common\n\n// cube corners (excluding origin)\nconst vec3 c1 = vec3(1., 0., 0.);\nconst vec3 c2 = vec3(1., 1., 0.);\nconst vec3 c3 = vec3(0., 1., 0.);\nconst vec3 c4 = vec3(0., 0., 1.);\nconst vec3 c5 = vec3(1., 0., 1.);\nconst vec3 c6 = vec3(1., 1., 1.);\nconst vec3 c7 = vec3(0., 1., 1.);\n\nvec3 index3dFrom2d(vec2 coord) {\n vec2 gridTexPos = coord * uGridTexDim.xy;\n vec2 columnRow = ivec2Div(gridTexPos, uGridDim.xy);\n vec2 posXY = gridTexPos - columnRow * uGridDim.xy;\n float posZ = columnRow.y * intDiv(uGridTexDim.x, uGridDim.x) + columnRow.x;\n return vec3(posXY, posZ);\n}\n\nvec4 texture3dFrom2dNearest(sampler2D tex, vec3 pos, vec3 gridDim, vec2 texDim) {\n float zSlice = floor(pos.z * gridDim.z + 0.5); // round to nearest z-slice\n float column = intDiv(intMod(zSlice * gridDim.x, texDim.x), gridDim.x);\n float row = intDiv(zSlice * gridDim.x, texDim.x);\n vec2 coord = (vec2(column * gridDim.x, row * gridDim.y) + (pos.xy * gridDim.xy)) / (texDim / uScale);\n return texture2D(tex, coord + 0.5 / (texDim / uScale));\n}\n\nvec4 voxel(vec3 pos) {\n pos = min(max(vec3(0.0), pos), uGridDim - vec3(1.0));\n return texture3dFrom2dNearest(tVolumeData, pos / uGridDim, uGridDim, uGridTexDim.xy);\n}\n\nvec4 voxelPadded(vec3 pos) {\n pos = min(max(vec3(0.0), pos), uGridDim - vec3(vec2(2.0), 1.0)); // remove xy padding\n return texture3dFrom2dNearest(tVolumeData, pos / uGridDim, uGridDim, uGridTexDim.xy);\n}\n\nint idot2(const in ivec2 a, const in ivec2 b) {\n return a.x * b.x + a.y * b.y;\n}\n\nint idot4(const in ivec4 a, const in ivec4 b) {\n return a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w;\n}\n\n#if __VERSION__ == 100\n int pyramidVoxel(vec2 pos) {\n return int(decodeFloatRGB(texture2D(tActiveVoxelsPyramid, pos / (vec2(1.0, 0.5) * uSize)).rgb));\n }\n#else\n int pyramidVoxel(vec2 pos) {\n return texture2D(tActiveVoxelsPyramid, pos / (vec2(1.0, 0.5) * uSize)).r;\n }\n#endif\n\nvec4 baseVoxel(vec2 pos) {\n return texture2D(tActiveVoxelsBase, pos / uSize);\n}\n\nvoid main(void) {\n // get 1D index\n int vI = int(gl_FragCoord.x) + int(gl_FragCoord.y) * int(uSize);\n\n // ignore 1D indices outside of the grid\n if(vI >= int(uCount)) discard;\n\n ivec2 offset = ivec2(int(uSize) - 2, 0);\n\n int start = 0;\n ivec4 starts = ivec4(0);\n ivec4 ends = ivec4(0);\n int diff = 2;\n ivec4 m = ivec4(0);\n ivec2 position = ivec2(0);\n ivec4 vI4 = ivec4(vI);\n\n ivec2 relativePosition = ivec2(0);\n int end = 0;\n ivec2 pos1 = ivec2(0);\n ivec2 pos2 = ivec2(0);\n ivec2 pos3 = ivec2(0);\n ivec2 pos4 = ivec2(0);\n ivec3 vI3 = ivec3(vI);\n ivec3 mask = ivec3(0);\n\n // traverse the different levels of the pyramid\n for(int i = 1; i < 14; i++) {\n if(float(i) >= uLevels) break;\n\n offset.x -= diff;\n diff *= 2;\n relativePosition = position + offset;\n\n end = start + pyramidVoxel(vec2(relativePosition));\n pos1 = ivec2(relativePosition);\n starts.x = start;\n ends.x = end;\n pos2 = ivec2(relativePosition + ivec2(1, 0));\n starts.y = ends.x;\n ends.y = ends.x + pyramidVoxel(vec2(pos2));\n pos3 = relativePosition + ivec2(0, 1);\n starts.z = ends.y;\n ends.z = ends.y + pyramidVoxel(vec2(pos3));\n pos4 = relativePosition + ivec2(1, 1);\n starts.w = ends.z;\n mask = ivec3(greaterThanEqual(vI3, starts.rgb)) * ivec3(lessThan(vI3, ends.rgb));\n m = ivec4(mask, 1 - int(any(bvec3(mask))));\n\n relativePosition = m.x * pos1 + m.y * pos2 + m.z * pos3 + m.w * pos4;\n start = idot4(m, starts);\n position = 2 * (relativePosition - offset);\n }\n\n end = start + int(baseVoxel(vec2(position)).r * 255.0);\n pos1 = position;\n starts.x = start;\n ends.x = end;\n pos2 = position + ivec2(1, 0);\n starts.y = ends.x;\n ends.y = ends.x + int(baseVoxel(vec2(pos2)).r * 255.0);\n pos3 = position + ivec2(0, 1);\n starts.z = ends.y;\n ends.z = ends.y + int(baseVoxel(vec2(pos3)).r * 255.0);\n pos4 = position + ivec2(1, 1);\n starts.w = ends.z;\n mask = ivec3(greaterThanEqual(vI3, starts.rgb)) * ivec3(lessThan(vI3, ends.rgb));\n m = ivec4(mask, 1 - int(any(bvec3(mask))));\n position = m.x * pos1 + m.y * pos2 + m.z * pos3 + m.w * pos4;\n\n vec2 coord2d = (vec2(position) / uSize) / uScale;\n vec3 coord3d = floor(index3dFrom2d(coord2d) + 0.5);\n\n float edgeIndex = floor(baseVoxel(vec2(position)).a * 255.0 + 0.5);\n\n // current vertex for the up to 15 MC cases\n int currentVertex = vI - idot4(m, starts);\n\n // ensure winding-order is the same for negative and positive iso-levels\n if (uInvert) {\n int v = imod(currentVertex + 1, 3);\n if (v == 1) currentVertex += 2;\n else if (v == 0) currentVertex -= 2;\n }\n\n // get index into triIndices table\n int mcIndex = 16 * int(edgeIndex) + currentVertex;\n vec4 mcData = texture2D(tTriIndices, vec2(imod(mcIndex, 64), mcIndex / 64) / 64.);\n\n // bit mask to avoid conditionals (see comment below) for getting MC case corner\n vec4 m0 = vec4(floor(mcData.a * 255.0 + 0.5));\n\n // get edge value masks\n vec4 m1 = vec4(equal(m0, vec4(0., 1., 2., 3.)));\n vec4 m2 = vec4(equal(m0, vec4(4., 5., 6., 7.)));\n vec4 m3 = vec4(equal(m0, vec4(8., 9., 10., 11.)));\n\n // apply bit masks\n vec3 b0 = coord3d +\n m1.y * c1 +\n m1.z * c2 +\n m1.w * c3 +\n m2.x * c4 +\n m2.y * c5 +\n m2.z * c6 +\n m2.w * c7 +\n m3.y * c1 +\n m3.z * c2 +\n m3.w * c3;\n vec3 b1 = coord3d +\n m1.x * c1 +\n m1.y * c2 +\n m1.z * c3 +\n m2.x * c5 +\n m2.y * c6 +\n m2.z * c7 +\n m2.w * c4 +\n m3.x * c4 +\n m3.y * c5 +\n m3.z * c6 +\n m3.w * c7;\n\n // the conditionals that are avoided by above bitmasks\n // vec3 b0 = coord3d;\n // vec3 b1 = coord3d;\n // if (mcIndex == 0.0) {\n // b1 += c1;\n // } else if (mcIndex == 1.0) {\n // b0 += c1; b1 += c2;\n // } else if (mcIndex == 2.0) {\n // b0 += c2; b1 += c3;\n // } else if (mcIndex == 3.0) {\n // b0 += c3;\n // } else if (mcIndex == 4.0) {\n // b0 += c4; b1 += c5;\n // } else if (mcIndex == 5.0) {\n // b0 += c5; b1 += c6;\n // } else if (mcIndex == 6.0) {\n // b0 += c6; b1 += c7;\n // } else if (mcIndex == 7.0) {\n // b0 += c7; b1 += c4;\n // } else if (mcIndex == 8.0) {\n // b1 += c4;\n // } else if (mcIndex == 9.0) {\n // b0 += c1; b1 += c5;\n // } else if (mcIndex == 10.0) {\n // b0 += c2; b1 += c6;\n // } else if (mcIndex == 11.0) {\n // b0 += c3; b1 += c7;\n // }\n // b0 = floor(b0 + 0.5);\n // b1 = floor(b1 + 0.5);\n\n vec4 d0 = voxel(b0);\n vec4 d1 = voxel(b1);\n\n float v0 = d0.a;\n float v1 = d1.a;\n\n float t = (uIsoValue - v0) / (v0 - v1);\n gl_FragData[0].xyz = (uGridTransform * vec4(b0 + t * (b0 - b1), 1.0)).xyz;\n\n // group id\n #if __VERSION__ == 100\n // webgl1 does not support 'flat' interpolation (i.e. no interpolation)\n // so we ensure a constant group id per triangle here\n #ifdef dPackedGroup\n gl_FragData[1] = vec4(voxel(coord3d).rgb, 1.0);\n #else\n vec3 gridDim = uGridDim - vec3(1.0, 1.0, 0.0); // remove xy padding\n float group = coord3d.z + coord3d.y * gridDim.z + coord3d.x * gridDim.z * gridDim.y;\n gl_FragData[1] = vec4(group > 16777215.5 ? vec3(1.0) : encodeFloatRGB(group), 1.0);\n #endif\n #else\n #ifdef dPackedGroup\n gl_FragData[1] = vec4(t < 0.5 ? d0.rgb : d1.rgb, 1.0);\n #else\n vec3 b = t < 0.5 ? b0 : b1;\n vec3 gridDim = uGridDim - vec3(1.0, 1.0, 0.0); // remove xy padding\n float group = b.z + b.y * gridDim.z + b.x * gridDim.z * gridDim.y;\n gl_FragData[1] = vec4(group > 16777215.5 ? vec3(1.0) : encodeFloatRGB(group), 1.0);\n #endif\n #endif\n\n // normals from gradients\n vec3 n0 = -normalize(vec3(\n voxelPadded(b0 - c1).a - voxelPadded(b0 + c1).a,\n voxelPadded(b0 - c3).a - voxelPadded(b0 + c3).a,\n voxelPadded(b0 - c4).a - voxelPadded(b0 + c4).a\n ));\n vec3 n1 = -normalize(vec3(\n voxelPadded(b1 - c1).a - voxelPadded(b1 + c1).a,\n voxelPadded(b1 - c3).a - voxelPadded(b1 + c3).a,\n voxelPadded(b1 - c4).a - voxelPadded(b1 + c4).a\n ));\n gl_FragData[2].xyz = -vec3(\n n0.x + t * (n0.x - n1.x),\n n0.y + t * (n0.y - n1.y),\n n0.z + t * (n0.z - n1.z)\n );\n\n // ensure normal-direction is the same for negative and positive iso-levels\n if (uInvert) {\n gl_FragData[2].xyz *= -1.0;\n }\n\n // apply normal matrix\n gl_FragData[2].xyz *= transpose3(inverse3(mat3(uGridTransform)));\n}\n";
4
+ exports.isosurface_frag = "\nprecision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\n#if __VERSION__ == 100\n uniform sampler2D tActiveVoxelsPyramid;\n#else\n precision highp isampler2D;\n uniform isampler2D tActiveVoxelsPyramid;\n#endif\n\nuniform sampler2D tActiveVoxelsBase;\nuniform sampler2D tVolumeData;\nuniform sampler2D tTriIndices;\n\nuniform float uIsoValue;\nuniform float uLevels;\nuniform float uSize;\nuniform float uCount;\nuniform bool uInvert;\n\nuniform vec3 uGridDim;\nuniform vec3 uGridTexDim;\nuniform mat4 uGridTransform;\n\n// scale to volume data coord\nuniform vec2 uScale;\n\n#include common\n\n// cube corners (excluding origin)\nconst vec3 c1 = vec3(1., 0., 0.);\nconst vec3 c2 = vec3(1., 1., 0.);\nconst vec3 c3 = vec3(0., 1., 0.);\nconst vec3 c4 = vec3(0., 0., 1.);\nconst vec3 c5 = vec3(1., 0., 1.);\nconst vec3 c6 = vec3(1., 1., 1.);\nconst vec3 c7 = vec3(0., 1., 1.);\n\nvec3 index3dFrom2d(vec2 coord) {\n vec2 gridTexPos = coord * uGridTexDim.xy;\n vec2 columnRow = ivec2Div(gridTexPos, uGridDim.xy);\n vec2 posXY = gridTexPos - columnRow * uGridDim.xy;\n float posZ = columnRow.y * intDiv(uGridTexDim.x, uGridDim.x) + columnRow.x;\n return vec3(posXY, posZ);\n}\n\nvec4 texture3dFrom2dNearest(sampler2D tex, vec3 pos, vec3 gridDim, vec2 texDim) {\n float zSlice = floor(pos.z * gridDim.z + 0.5); // round to nearest z-slice\n float column = intDiv(intMod(zSlice * gridDim.x, texDim.x), gridDim.x);\n float row = intDiv(zSlice * gridDim.x, texDim.x);\n vec2 coord = (vec2(column * gridDim.x, row * gridDim.y) + (pos.xy * gridDim.xy)) / (texDim / uScale);\n return texture2D(tex, coord + 0.5 / (texDim / uScale));\n}\n\nvec4 voxel(vec3 pos) {\n pos = min(max(vec3(0.0), pos), uGridDim - vec3(1.0));\n return texture3dFrom2dNearest(tVolumeData, pos / uGridDim, uGridDim, uGridTexDim.xy);\n}\n\nvec4 voxelPadded(vec3 pos) {\n pos = min(max(vec3(0.0), pos), uGridDim - vec3(vec2(2.0), 1.0)); // remove xy padding\n return texture3dFrom2dNearest(tVolumeData, pos / uGridDim, uGridDim, uGridTexDim.xy);\n}\n\nint idot2(const in ivec2 a, const in ivec2 b) {\n return a.x * b.x + a.y * b.y;\n}\n\nint idot4(const in ivec4 a, const in ivec4 b) {\n return a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w;\n}\n\n#if __VERSION__ == 100\n int pyramidVoxel(vec2 pos) {\n return int(unpackRGBToInt(texture2D(tActiveVoxelsPyramid, pos / (vec2(1.0, 0.5) * uSize)).rgb));\n }\n#else\n int pyramidVoxel(vec2 pos) {\n return texture2D(tActiveVoxelsPyramid, pos / (vec2(1.0, 0.5) * uSize)).r;\n }\n#endif\n\nvec4 baseVoxel(vec2 pos) {\n return texture2D(tActiveVoxelsBase, pos / uSize);\n}\n\nvec4 getGroup(const in vec3 p) {\n vec3 gridDim = uGridDim - vec3(1.0, 1.0, 0.0); // remove xy padding\n // note that we swap x and z because the texture is flipped around y\n #if defined(dAxisOrder_012)\n float group = p.z + p.y * gridDim.z + p.x * gridDim.z * gridDim.y; // 210\n #elif defined(dAxisOrder_021)\n float group = p.y + p.z * gridDim.y + p.x * gridDim.y * gridDim.z; // 120\n #elif defined(dAxisOrder_102)\n float group = p.z + p.x * gridDim.z + p.y * gridDim.z * gridDim.x; // 201\n #elif defined(dAxisOrder_120)\n float group = p.x + p.z * gridDim.x + p.y * gridDim.x * gridDim.z; // 021\n #elif defined(dAxisOrder_201)\n float group = p.y + p.x * gridDim.y + p.z * gridDim.y * gridDim.x; // 102\n #elif defined(dAxisOrder_210)\n float group = p.x + p.y * gridDim.x + p.z * gridDim.x * gridDim.y; // 012\n #endif\n return vec4(group > 16777215.5 ? vec3(1.0) : packIntToRGB(group), 1.0);\n}\n\nvoid main(void) {\n // get 1D index\n int vI = int(gl_FragCoord.x) + int(gl_FragCoord.y) * int(uSize);\n\n // ignore 1D indices outside of the grid\n if(vI >= int(uCount)) discard;\n\n ivec2 offset = ivec2(int(uSize) - 2, 0);\n\n int start = 0;\n ivec4 starts = ivec4(0);\n ivec4 ends = ivec4(0);\n int diff = 2;\n ivec4 m = ivec4(0);\n ivec2 position = ivec2(0);\n ivec4 vI4 = ivec4(vI);\n\n ivec2 relativePosition = ivec2(0);\n int end = 0;\n ivec2 pos1 = ivec2(0);\n ivec2 pos2 = ivec2(0);\n ivec2 pos3 = ivec2(0);\n ivec2 pos4 = ivec2(0);\n ivec3 vI3 = ivec3(vI);\n ivec3 mask = ivec3(0);\n\n // traverse the different levels of the pyramid\n for(int i = 1; i < 14; i++) {\n if(float(i) >= uLevels) break;\n\n offset.x -= diff;\n diff *= 2;\n relativePosition = position + offset;\n\n end = start + pyramidVoxel(vec2(relativePosition));\n pos1 = ivec2(relativePosition);\n starts.x = start;\n ends.x = end;\n pos2 = ivec2(relativePosition + ivec2(1, 0));\n starts.y = ends.x;\n ends.y = ends.x + pyramidVoxel(vec2(pos2));\n pos3 = relativePosition + ivec2(0, 1);\n starts.z = ends.y;\n ends.z = ends.y + pyramidVoxel(vec2(pos3));\n pos4 = relativePosition + ivec2(1, 1);\n starts.w = ends.z;\n mask = ivec3(greaterThanEqual(vI3, starts.rgb)) * ivec3(lessThan(vI3, ends.rgb));\n m = ivec4(mask, 1 - int(any(bvec3(mask))));\n\n relativePosition = m.x * pos1 + m.y * pos2 + m.z * pos3 + m.w * pos4;\n start = idot4(m, starts);\n position = 2 * (relativePosition - offset);\n }\n\n end = start + int(baseVoxel(vec2(position)).r * 255.0);\n pos1 = position;\n starts.x = start;\n ends.x = end;\n pos2 = position + ivec2(1, 0);\n starts.y = ends.x;\n ends.y = ends.x + int(baseVoxel(vec2(pos2)).r * 255.0);\n pos3 = position + ivec2(0, 1);\n starts.z = ends.y;\n ends.z = ends.y + int(baseVoxel(vec2(pos3)).r * 255.0);\n pos4 = position + ivec2(1, 1);\n starts.w = ends.z;\n mask = ivec3(greaterThanEqual(vI3, starts.rgb)) * ivec3(lessThan(vI3, ends.rgb));\n m = ivec4(mask, 1 - int(any(bvec3(mask))));\n position = m.x * pos1 + m.y * pos2 + m.z * pos3 + m.w * pos4;\n\n vec2 coord2d = (vec2(position) / uSize) / uScale;\n vec3 coord3d = floor(index3dFrom2d(coord2d) + 0.5);\n\n float edgeIndex = floor(baseVoxel(vec2(position)).a * 255.0 + 0.5);\n\n // current vertex for the up to 15 MC cases\n int currentVertex = vI - idot4(m, starts);\n\n // ensure winding-order is the same for negative and positive iso-levels\n if (uInvert) {\n int v = imod(currentVertex + 1, 3);\n if (v == 1) currentVertex += 2;\n else if (v == 0) currentVertex -= 2;\n }\n\n // get index into triIndices table\n int mcIndex = 16 * int(edgeIndex) + currentVertex;\n vec4 mcData = texture2D(tTriIndices, vec2(imod(mcIndex, 64), mcIndex / 64) / 64.);\n\n // bit mask to avoid conditionals (see comment below) for getting MC case corner\n vec4 m0 = vec4(floor(mcData.a * 255.0 + 0.5));\n\n // get edge value masks\n vec4 m1 = vec4(equal(m0, vec4(0., 1., 2., 3.)));\n vec4 m2 = vec4(equal(m0, vec4(4., 5., 6., 7.)));\n vec4 m3 = vec4(equal(m0, vec4(8., 9., 10., 11.)));\n\n // apply bit masks\n vec3 b0 = coord3d +\n m1.y * c1 +\n m1.z * c2 +\n m1.w * c3 +\n m2.x * c4 +\n m2.y * c5 +\n m2.z * c6 +\n m2.w * c7 +\n m3.y * c1 +\n m3.z * c2 +\n m3.w * c3;\n vec3 b1 = coord3d +\n m1.x * c1 +\n m1.y * c2 +\n m1.z * c3 +\n m2.x * c5 +\n m2.y * c6 +\n m2.z * c7 +\n m2.w * c4 +\n m3.x * c4 +\n m3.y * c5 +\n m3.z * c6 +\n m3.w * c7;\n\n // the conditionals that are avoided by above bitmasks\n // vec3 b0 = coord3d;\n // vec3 b1 = coord3d;\n // if (mcIndex == 0.0) {\n // b1 += c1;\n // } else if (mcIndex == 1.0) {\n // b0 += c1; b1 += c2;\n // } else if (mcIndex == 2.0) {\n // b0 += c2; b1 += c3;\n // } else if (mcIndex == 3.0) {\n // b0 += c3;\n // } else if (mcIndex == 4.0) {\n // b0 += c4; b1 += c5;\n // } else if (mcIndex == 5.0) {\n // b0 += c5; b1 += c6;\n // } else if (mcIndex == 6.0) {\n // b0 += c6; b1 += c7;\n // } else if (mcIndex == 7.0) {\n // b0 += c7; b1 += c4;\n // } else if (mcIndex == 8.0) {\n // b1 += c4;\n // } else if (mcIndex == 9.0) {\n // b0 += c1; b1 += c5;\n // } else if (mcIndex == 10.0) {\n // b0 += c2; b1 += c6;\n // } else if (mcIndex == 11.0) {\n // b0 += c3; b1 += c7;\n // }\n // b0 = floor(b0 + 0.5);\n // b1 = floor(b1 + 0.5);\n\n vec4 d0 = voxel(b0);\n vec4 d1 = voxel(b1);\n\n float v0 = d0.a;\n float v1 = d1.a;\n\n float t = (uIsoValue - v0) / (v0 - v1);\n gl_FragData[0].xyz = (uGridTransform * vec4(b0 + t * (b0 - b1), 1.0)).xyz;\n\n // group id\n #if __VERSION__ == 100\n // webgl1 does not support 'flat' interpolation (i.e. no interpolation)\n // so we ensure a constant group id per triangle here\n #ifdef dPackedGroup\n gl_FragData[1] = vec4(voxel(coord3d).rgb, 1.0);\n #else\n gl_FragData[1] = getGroup(coord3d);\n #endif\n #else\n #ifdef dPackedGroup\n gl_FragData[1] = vec4(t < 0.5 ? d0.rgb : d1.rgb, 1.0);\n #else\n gl_FragData[1] = getGroup(t < 0.5 ? b0 : b1);\n #endif\n #endif\n\n // normals from gradients\n vec3 n0 = -normalize(vec3(\n voxelPadded(b0 - c1).a - voxelPadded(b0 + c1).a,\n voxelPadded(b0 - c3).a - voxelPadded(b0 + c3).a,\n voxelPadded(b0 - c4).a - voxelPadded(b0 + c4).a\n ));\n vec3 n1 = -normalize(vec3(\n voxelPadded(b1 - c1).a - voxelPadded(b1 + c1).a,\n voxelPadded(b1 - c3).a - voxelPadded(b1 + c3).a,\n voxelPadded(b1 - c4).a - voxelPadded(b1 + c4).a\n ));\n gl_FragData[2].xyz = -vec3(\n n0.x + t * (n0.x - n1.x),\n n0.y + t * (n0.y - n1.y),\n n0.z + t * (n0.z - n1.z)\n );\n\n // ensure normal-direction is the same for negative and positive iso-levels\n if (uInvert) {\n gl_FragData[2].xyz *= -1.0;\n }\n\n // apply normal matrix\n gl_FragData[2].xyz *= transpose3(inverse3(mat3(uGridTransform)));\n}\n";
5
5
  //# sourceMappingURL=isosurface.frag.js.map
@@ -3,4 +3,4 @@
3
3
  *
4
4
  * @author Alexander Rose <alexander.rose@weirdbyte.de>
5
5
  */
6
- export declare const mesh_frag = "\nprecision highp float;\nprecision highp int;\n\n#define bumpEnabled\n\n#include common\n#include common_frag_params\n#include color_frag_params\n#include light_frag_params\n#include normal_frag_params\n#include common_clip\n\nvoid main() {\n #include clip_pixel\n\n // Workaround for buggy gl_FrontFacing (e.g. on some integrated Intel GPUs)\n vec3 fdx = dFdx(vViewPosition);\n vec3 fdy = dFdy(vViewPosition);\n vec3 faceNormal = normalize(cross(fdx,fdy));\n bool frontFacing = dot(vNormal, faceNormal) > 0.0;\n\n #if defined(dFlipSided)\n interior = frontFacing;\n #else\n interior = !frontFacing;\n #endif\n\n float fragmentDepth = gl_FragCoord.z;\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 #ifdef dIgnoreLight\n gl_FragColor = material;\n #else\n #if defined(dFlatShaded)\n vec3 normal = -faceNormal;\n #else\n vec3 normal = -normalize(vNormal);\n #ifdef dDoubleSided\n normal = normal * (float(frontFacing) * 2.0 - 1.0);\n #endif\n #endif\n #include apply_light_color\n #endif\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 mesh_frag = "\nprecision highp float;\nprecision highp int;\n\n#define bumpEnabled\n\n#include common\n#include common_frag_params\n#include color_frag_params\n#include light_frag_params\n#include normal_frag_params\n#include common_clip\n\nvoid main() {\n #include clip_pixel\n\n // Workaround for buggy gl_FrontFacing (e.g. on some integrated Intel GPUs)\n vec3 fdx = dFdx(vViewPosition);\n vec3 fdy = dFdy(vViewPosition);\n vec3 faceNormal = normalize(cross(fdx,fdy));\n bool frontFacing = dot(vNormal, faceNormal) > 0.0;\n\n #if defined(dFlipSided)\n interior = frontFacing;\n #else\n interior = !frontFacing;\n #endif\n\n float fragmentDepth = gl_FragCoord.z;\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 #ifdef dIgnoreLight\n gl_FragColor = material;\n #else\n #if defined(dFlatShaded)\n vec3 normal = -faceNormal;\n #else\n vec3 normal = -normalize(vNormal);\n if (uDoubleSided) normal *= float(frontFacing) * 2.0 - 1.0;\n #endif\n #include apply_light_color\n #endif\n\n #include apply_interior_color\n #include apply_marker_color\n #include apply_fog\n #include wboit_write\n #endif\n}\n";
@@ -6,5 +6,5 @@
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
8
  exports.mesh_frag = void 0;
9
- exports.mesh_frag = "\nprecision highp float;\nprecision highp int;\n\n#define bumpEnabled\n\n#include common\n#include common_frag_params\n#include color_frag_params\n#include light_frag_params\n#include normal_frag_params\n#include common_clip\n\nvoid main() {\n #include clip_pixel\n\n // Workaround for buggy gl_FrontFacing (e.g. on some integrated Intel GPUs)\n vec3 fdx = dFdx(vViewPosition);\n vec3 fdy = dFdy(vViewPosition);\n vec3 faceNormal = normalize(cross(fdx,fdy));\n bool frontFacing = dot(vNormal, faceNormal) > 0.0;\n\n #if defined(dFlipSided)\n interior = frontFacing;\n #else\n interior = !frontFacing;\n #endif\n\n float fragmentDepth = gl_FragCoord.z;\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 #ifdef dIgnoreLight\n gl_FragColor = material;\n #else\n #if defined(dFlatShaded)\n vec3 normal = -faceNormal;\n #else\n vec3 normal = -normalize(vNormal);\n #ifdef dDoubleSided\n normal = normal * (float(frontFacing) * 2.0 - 1.0);\n #endif\n #endif\n #include apply_light_color\n #endif\n\n #include apply_interior_color\n #include apply_marker_color\n #include apply_fog\n #include wboit_write\n #endif\n}\n";
9
+ exports.mesh_frag = "\nprecision highp float;\nprecision highp int;\n\n#define bumpEnabled\n\n#include common\n#include common_frag_params\n#include color_frag_params\n#include light_frag_params\n#include normal_frag_params\n#include common_clip\n\nvoid main() {\n #include clip_pixel\n\n // Workaround for buggy gl_FrontFacing (e.g. on some integrated Intel GPUs)\n vec3 fdx = dFdx(vViewPosition);\n vec3 fdy = dFdy(vViewPosition);\n vec3 faceNormal = normalize(cross(fdx,fdy));\n bool frontFacing = dot(vNormal, faceNormal) > 0.0;\n\n #if defined(dFlipSided)\n interior = frontFacing;\n #else\n interior = !frontFacing;\n #endif\n\n float fragmentDepth = gl_FragCoord.z;\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 #ifdef dIgnoreLight\n gl_FragColor = material;\n #else\n #if defined(dFlatShaded)\n vec3 normal = -faceNormal;\n #else\n vec3 normal = -normalize(vNormal);\n if (uDoubleSided) normal *= float(frontFacing) * 2.0 - 1.0;\n #endif\n #include apply_light_color\n #endif\n\n #include apply_interior_color\n #include apply_marker_color\n #include apply_fog\n #include wboit_write\n #endif\n}\n";
10
10
  //# sourceMappingURL=mesh.frag.js.map
@@ -3,4 +3,4 @@
3
3
  *
4
4
  * @author Alexander Rose <alexander.rose@weirdbyte.de>
5
5
  */
6
- export declare const mesh_vert = "\nprecision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\n#include common\n#include read_from_texture\n#include common_vert_params\n#include color_vert_params\n#include common_clip\n#include texture3d_from_2d_linear\n\n#ifdef dGeoTexture\n uniform vec2 uGeoTexDim;\n uniform sampler2D tPosition;\n uniform sampler2D tGroup;\n uniform sampler2D tNormal;\n#else\n attribute vec3 aPosition;\n attribute float aGroup;\n attribute vec3 aNormal;\n#endif\nattribute mat4 aTransform;\nattribute float aInstance;\n\nvarying vec3 vNormal;\n\nvoid main(){\n #include assign_group\n #include assign_marker_varying\n #include assign_clipping_varying\n #include assign_position\n #include assign_color_varying\n #include clip_instance\n\n #ifdef dGeoTexture\n vec3 normal = readFromTexture(tNormal, VertexID, uGeoTexDim).xyz;\n #else\n vec3 normal = aNormal;\n #endif\n mat3 normalMatrix = transpose3(inverse3(mat3(modelView)));\n vec3 transformedNormal = normalize(normalMatrix * normalize(normal));\n #if defined(dFlipSided) && !defined(dDoubleSided) // TODO checking dDoubleSided should not be required, ASR\n transformedNormal = -transformedNormal;\n #endif\n vNormal = transformedNormal;\n}\n";
6
+ export declare const mesh_vert = "\nprecision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\n#include common\n#include read_from_texture\n#include common_vert_params\n#include color_vert_params\n#include common_clip\n#include texture3d_from_2d_linear\n\n#ifdef dGeometryType_textureMesh\n uniform vec2 uGeoTexDim;\n uniform sampler2D tPosition;\n uniform sampler2D tGroup;\n uniform sampler2D tNormal;\n#else\n attribute vec3 aPosition;\n attribute float aGroup;\n attribute vec3 aNormal;\n#endif\nattribute mat4 aTransform;\nattribute float aInstance;\n\nvarying vec3 vNormal;\n\nvoid main(){\n #include assign_group\n #include assign_marker_varying\n #include assign_clipping_varying\n #include assign_position\n #include assign_color_varying\n #include clip_instance\n\n #ifdef dGeometryType_textureMesh\n vec3 normal = readFromTexture(tNormal, VertexID, uGeoTexDim).xyz;\n #else\n vec3 normal = aNormal;\n #endif\n mat3 normalMatrix = transpose3(inverse3(mat3(modelView)));\n vec3 transformedNormal = normalize(normalMatrix * normalize(normal));\n #if defined(dFlipSided)\n if (!uDoubleSided) { // TODO checking uDoubleSided should not be required, ASR\n transformedNormal = -transformedNormal;\n }\n #endif\n vNormal = transformedNormal;\n}\n";
@@ -6,5 +6,5 @@
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
8
  exports.mesh_vert = void 0;
9
- exports.mesh_vert = "\nprecision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\n#include common\n#include read_from_texture\n#include common_vert_params\n#include color_vert_params\n#include common_clip\n#include texture3d_from_2d_linear\n\n#ifdef dGeoTexture\n uniform vec2 uGeoTexDim;\n uniform sampler2D tPosition;\n uniform sampler2D tGroup;\n uniform sampler2D tNormal;\n#else\n attribute vec3 aPosition;\n attribute float aGroup;\n attribute vec3 aNormal;\n#endif\nattribute mat4 aTransform;\nattribute float aInstance;\n\nvarying vec3 vNormal;\n\nvoid main(){\n #include assign_group\n #include assign_marker_varying\n #include assign_clipping_varying\n #include assign_position\n #include assign_color_varying\n #include clip_instance\n\n #ifdef dGeoTexture\n vec3 normal = readFromTexture(tNormal, VertexID, uGeoTexDim).xyz;\n #else\n vec3 normal = aNormal;\n #endif\n mat3 normalMatrix = transpose3(inverse3(mat3(modelView)));\n vec3 transformedNormal = normalize(normalMatrix * normalize(normal));\n #if defined(dFlipSided) && !defined(dDoubleSided) // TODO checking dDoubleSided should not be required, ASR\n transformedNormal = -transformedNormal;\n #endif\n vNormal = transformedNormal;\n}\n";
9
+ exports.mesh_vert = "\nprecision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\n#include common\n#include read_from_texture\n#include common_vert_params\n#include color_vert_params\n#include common_clip\n#include texture3d_from_2d_linear\n\n#ifdef dGeometryType_textureMesh\n uniform vec2 uGeoTexDim;\n uniform sampler2D tPosition;\n uniform sampler2D tGroup;\n uniform sampler2D tNormal;\n#else\n attribute vec3 aPosition;\n attribute float aGroup;\n attribute vec3 aNormal;\n#endif\nattribute mat4 aTransform;\nattribute float aInstance;\n\nvarying vec3 vNormal;\n\nvoid main(){\n #include assign_group\n #include assign_marker_varying\n #include assign_clipping_varying\n #include assign_position\n #include assign_color_varying\n #include clip_instance\n\n #ifdef dGeometryType_textureMesh\n vec3 normal = readFromTexture(tNormal, VertexID, uGeoTexDim).xyz;\n #else\n vec3 normal = aNormal;\n #endif\n mat3 normalMatrix = transpose3(inverse3(mat3(modelView)));\n vec3 transformedNormal = normalize(normalMatrix * normalize(normal));\n #if defined(dFlipSided)\n if (!uDoubleSided) { // TODO checking uDoubleSided should not be required, ASR\n transformedNormal = -transformedNormal;\n }\n #endif\n vNormal = transformedNormal;\n}\n";
10
10
  //# sourceMappingURL=mesh.vert.js.map
@@ -3,4 +3,4 @@
3
3
  *
4
4
  * @author Alexander Rose <alexander.rose@weirdbyte.de>
5
5
  */
6
- export declare const spheres_frag = "\nprecision highp float;\nprecision highp int;\n\n#define bumpEnabled\n\n#include common\n#include common_frag_params\n#include color_frag_params\n#include light_frag_params\n#include common_clip\n\nuniform mat4 uInvView;\n\nvarying float vRadius;\nvarying float vRadiusSq;\nvarying vec3 vPoint;\nvarying vec3 vPointViewPosition;\n\nvec3 cameraPos;\nvec3 cameraNormal;\n\nbool Impostor(out vec3 cameraPos, out vec3 cameraNormal){\n vec3 cameraSpherePos = -vPointViewPosition;\n cameraSpherePos.z += vRadius;\n\n vec3 rayOrigin = mix(vec3(0.0, 0.0, 0.0), vPoint, uIsOrtho);\n vec3 rayDirection = mix(normalize(vPoint), vec3(0.0, 0.0, 1.0), uIsOrtho);\n vec3 cameraSphereDir = mix(cameraSpherePos, rayOrigin - cameraSpherePos, uIsOrtho);\n\n float B = dot(rayDirection, cameraSphereDir);\n float det = B * B + vRadiusSq - dot(cameraSphereDir, cameraSphereDir);\n\n if (det < 0.0){\n discard;\n return false;\n }\n\n float sqrtDet = sqrt(det);\n float posT = mix(B + sqrtDet, B + sqrtDet, uIsOrtho);\n float negT = mix(B - sqrtDet, sqrtDet - B, uIsOrtho);\n\n cameraPos = rayDirection * negT + rayOrigin;\n\n\n if (calcDepth(cameraPos) <= 0.0) {\n cameraPos = rayDirection * posT + rayOrigin;\n interior = true;\n } else {\n interior = false;\n }\n\n cameraNormal = normalize(cameraPos - cameraSpherePos);\n cameraNormal *= float(!interior) * 2.0 - 1.0;\n\n return !interior;\n}\n\nvoid main(void){\n #include clip_pixel\n\n bool flag = Impostor(cameraPos, cameraNormal);\n #ifndef dDoubleSided\n if (interior)\n discard;\n #endif\n\n vec3 vViewPosition = cameraPos;\n gl_FragDepthEXT = calcDepth(vViewPosition);\n if (!flag && gl_FragDepthEXT >= 0.0) {\n gl_FragDepthEXT = 0.0 + (0.0000001 / vRadius);\n }\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 #ifdef dIgnoreLight\n gl_FragColor = material;\n #else\n vec3 normal = -cameraNormal;\n #include apply_light_color\n #endif\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 spheres_frag = "\nprecision highp float;\nprecision highp int;\n\n#define bumpEnabled\n\n#include common\n#include common_frag_params\n#include color_frag_params\n#include light_frag_params\n#include common_clip\n\nuniform mat4 uInvView;\n\nvarying float vRadius;\nvarying float vRadiusSq;\nvarying vec3 vPoint;\nvarying vec3 vPointViewPosition;\n\nvec3 cameraPos;\nvec3 cameraNormal;\n\nbool Impostor(out vec3 cameraPos, out vec3 cameraNormal){\n vec3 cameraSpherePos = -vPointViewPosition;\n cameraSpherePos.z += vRadius;\n\n vec3 rayOrigin = mix(vec3(0.0, 0.0, 0.0), vPoint, uIsOrtho);\n vec3 rayDirection = mix(normalize(vPoint), vec3(0.0, 0.0, 1.0), uIsOrtho);\n vec3 cameraSphereDir = mix(cameraSpherePos, rayOrigin - cameraSpherePos, uIsOrtho);\n\n float B = dot(rayDirection, cameraSphereDir);\n float det = B * B + vRadiusSq - dot(cameraSphereDir, cameraSphereDir);\n\n if (det < 0.0){\n discard;\n return false;\n }\n\n float sqrtDet = sqrt(det);\n float posT = mix(B + sqrtDet, B + sqrtDet, uIsOrtho);\n float negT = mix(B - sqrtDet, sqrtDet - B, uIsOrtho);\n\n cameraPos = rayDirection * negT + rayOrigin;\n\n\n if (calcDepth(cameraPos) <= 0.0) {\n cameraPos = rayDirection * posT + rayOrigin;\n interior = true;\n } else {\n interior = false;\n }\n\n cameraNormal = normalize(cameraPos - cameraSpherePos);\n cameraNormal *= float(!interior) * 2.0 - 1.0;\n\n return !interior;\n}\n\nvoid main(void){\n #include clip_pixel\n\n bool flag = Impostor(cameraPos, cameraNormal);\n if (!uDoubleSided) {\n if (interior) discard;\n }\n\n vec3 vViewPosition = cameraPos;\n gl_FragDepthEXT = calcDepth(vViewPosition);\n if (!flag && gl_FragDepthEXT >= 0.0) {\n gl_FragDepthEXT = 0.0 + (0.0000001 / vRadius);\n }\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 #ifdef dIgnoreLight\n gl_FragColor = material;\n #else\n vec3 normal = -cameraNormal;\n #include apply_light_color\n #endif\n\n #include apply_interior_color\n #include apply_marker_color\n #include apply_fog\n #include wboit_write\n #endif\n}\n";
@@ -6,5 +6,5 @@
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
8
  exports.spheres_frag = void 0;
9
- exports.spheres_frag = "\nprecision highp float;\nprecision highp int;\n\n#define bumpEnabled\n\n#include common\n#include common_frag_params\n#include color_frag_params\n#include light_frag_params\n#include common_clip\n\nuniform mat4 uInvView;\n\nvarying float vRadius;\nvarying float vRadiusSq;\nvarying vec3 vPoint;\nvarying vec3 vPointViewPosition;\n\nvec3 cameraPos;\nvec3 cameraNormal;\n\nbool Impostor(out vec3 cameraPos, out vec3 cameraNormal){\n vec3 cameraSpherePos = -vPointViewPosition;\n cameraSpherePos.z += vRadius;\n\n vec3 rayOrigin = mix(vec3(0.0, 0.0, 0.0), vPoint, uIsOrtho);\n vec3 rayDirection = mix(normalize(vPoint), vec3(0.0, 0.0, 1.0), uIsOrtho);\n vec3 cameraSphereDir = mix(cameraSpherePos, rayOrigin - cameraSpherePos, uIsOrtho);\n\n float B = dot(rayDirection, cameraSphereDir);\n float det = B * B + vRadiusSq - dot(cameraSphereDir, cameraSphereDir);\n\n if (det < 0.0){\n discard;\n return false;\n }\n\n float sqrtDet = sqrt(det);\n float posT = mix(B + sqrtDet, B + sqrtDet, uIsOrtho);\n float negT = mix(B - sqrtDet, sqrtDet - B, uIsOrtho);\n\n cameraPos = rayDirection * negT + rayOrigin;\n\n\n if (calcDepth(cameraPos) <= 0.0) {\n cameraPos = rayDirection * posT + rayOrigin;\n interior = true;\n } else {\n interior = false;\n }\n\n cameraNormal = normalize(cameraPos - cameraSpherePos);\n cameraNormal *= float(!interior) * 2.0 - 1.0;\n\n return !interior;\n}\n\nvoid main(void){\n #include clip_pixel\n\n bool flag = Impostor(cameraPos, cameraNormal);\n #ifndef dDoubleSided\n if (interior)\n discard;\n #endif\n\n vec3 vViewPosition = cameraPos;\n gl_FragDepthEXT = calcDepth(vViewPosition);\n if (!flag && gl_FragDepthEXT >= 0.0) {\n gl_FragDepthEXT = 0.0 + (0.0000001 / vRadius);\n }\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 #ifdef dIgnoreLight\n gl_FragColor = material;\n #else\n vec3 normal = -cameraNormal;\n #include apply_light_color\n #endif\n\n #include apply_interior_color\n #include apply_marker_color\n #include apply_fog\n #include wboit_write\n #endif\n}\n";
9
+ exports.spheres_frag = "\nprecision highp float;\nprecision highp int;\n\n#define bumpEnabled\n\n#include common\n#include common_frag_params\n#include color_frag_params\n#include light_frag_params\n#include common_clip\n\nuniform mat4 uInvView;\n\nvarying float vRadius;\nvarying float vRadiusSq;\nvarying vec3 vPoint;\nvarying vec3 vPointViewPosition;\n\nvec3 cameraPos;\nvec3 cameraNormal;\n\nbool Impostor(out vec3 cameraPos, out vec3 cameraNormal){\n vec3 cameraSpherePos = -vPointViewPosition;\n cameraSpherePos.z += vRadius;\n\n vec3 rayOrigin = mix(vec3(0.0, 0.0, 0.0), vPoint, uIsOrtho);\n vec3 rayDirection = mix(normalize(vPoint), vec3(0.0, 0.0, 1.0), uIsOrtho);\n vec3 cameraSphereDir = mix(cameraSpherePos, rayOrigin - cameraSpherePos, uIsOrtho);\n\n float B = dot(rayDirection, cameraSphereDir);\n float det = B * B + vRadiusSq - dot(cameraSphereDir, cameraSphereDir);\n\n if (det < 0.0){\n discard;\n return false;\n }\n\n float sqrtDet = sqrt(det);\n float posT = mix(B + sqrtDet, B + sqrtDet, uIsOrtho);\n float negT = mix(B - sqrtDet, sqrtDet - B, uIsOrtho);\n\n cameraPos = rayDirection * negT + rayOrigin;\n\n\n if (calcDepth(cameraPos) <= 0.0) {\n cameraPos = rayDirection * posT + rayOrigin;\n interior = true;\n } else {\n interior = false;\n }\n\n cameraNormal = normalize(cameraPos - cameraSpherePos);\n cameraNormal *= float(!interior) * 2.0 - 1.0;\n\n return !interior;\n}\n\nvoid main(void){\n #include clip_pixel\n\n bool flag = Impostor(cameraPos, cameraNormal);\n if (!uDoubleSided) {\n if (interior) discard;\n }\n\n vec3 vViewPosition = cameraPos;\n gl_FragDepthEXT = calcDepth(vViewPosition);\n if (!flag && gl_FragDepthEXT >= 0.0) {\n gl_FragDepthEXT = 0.0 + (0.0000001 / vRadius);\n }\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 #ifdef dIgnoreLight\n gl_FragColor = material;\n #else\n vec3 normal = -cameraNormal;\n #include apply_light_color\n #endif\n\n #include apply_interior_color\n #include apply_marker_color\n #include apply_fog\n #include wboit_write\n #endif\n}\n";
10
10
  //# sourceMappingURL=spheres.frag.js.map
@@ -20,6 +20,7 @@ export interface ShaderExtensions {
20
20
  declare type FragOutTypes = {
21
21
  [k in number]: 'vec4' | 'ivec4';
22
22
  };
23
+ declare type IgnoreDefine = (name: string, variant: string, defines: ShaderDefines) => boolean;
23
24
  export interface ShaderCode {
24
25
  readonly id: number;
25
26
  readonly name: string;
@@ -28,8 +29,9 @@ export interface ShaderCode {
28
29
  readonly extensions: ShaderExtensions;
29
30
  /** Fragment shader output type only applicable for webgl2 */
30
31
  readonly outTypes: FragOutTypes;
32
+ readonly ignoreDefine?: IgnoreDefine;
31
33
  }
32
- export declare function ShaderCode(name: string, vert: string, frag: string, extensions?: ShaderExtensions, outTypes?: FragOutTypes): ShaderCode;
34
+ export declare function ShaderCode(name: string, vert: string, frag: string, extensions?: ShaderExtensions, outTypes?: FragOutTypes, ignoreDefine?: IgnoreDefine): ShaderCode;
33
35
  export declare const PointsShaderCode: ShaderCode;
34
36
  export declare const SpheresShaderCode: ShaderCode;
35
37
  export declare const CylindersShaderCode: ShaderCode;
@@ -113,42 +113,70 @@ function replaceCounts(str, defines) {
113
113
  function preprocess(str, defines) {
114
114
  return unrollLoops(replaceCounts(str, defines));
115
115
  }
116
- function ShaderCode(name, vert, frag, extensions, outTypes) {
116
+ function ShaderCode(name, vert, frag, extensions, outTypes, ignoreDefine) {
117
117
  if (extensions === void 0) { extensions = {}; }
118
118
  if (outTypes === void 0) { outTypes = {}; }
119
- return { id: shaderCodeId(), name: name, vert: addIncludes(vert), frag: addIncludes(frag), extensions: extensions, outTypes: outTypes };
119
+ return { id: shaderCodeId(), name: name, vert: addIncludes(vert), frag: addIncludes(frag), extensions: extensions, outTypes: outTypes, ignoreDefine: ignoreDefine };
120
120
  }
121
121
  exports.ShaderCode = ShaderCode;
122
122
  // Note: `drawBuffers` need to be 'optional' for wboit
123
+ function ignoreDefine(name, variant, defines) {
124
+ var _a;
125
+ if (variant.startsWith('color')) {
126
+ if (name === 'dLightCount') {
127
+ return !!((_a = defines.dIgnoreLight) === null || _a === void 0 ? void 0 : _a.ref.value);
128
+ }
129
+ }
130
+ else {
131
+ return [
132
+ 'dColorType', 'dUsePalette',
133
+ 'dLightCount',
134
+ 'dOverpaintType', 'dOverpaint',
135
+ 'dSubstanceType', 'dSubstance',
136
+ ].includes(name);
137
+ }
138
+ return false;
139
+ }
140
+ ;
141
+ function ignoreDefineUnlit(name, variant, defines) {
142
+ if (name === 'dLightCount')
143
+ return true;
144
+ return ignoreDefine(name, variant, defines);
145
+ }
146
+ ;
123
147
  var points_vert_1 = require("./shader/points.vert");
124
148
  var points_frag_1 = require("./shader/points.frag");
125
- exports.PointsShaderCode = ShaderCode('points', points_vert_1.points_vert, points_frag_1.points_frag, { drawBuffers: 'optional' });
149
+ exports.PointsShaderCode = ShaderCode('points', points_vert_1.points_vert, points_frag_1.points_frag, { drawBuffers: 'optional' }, {}, ignoreDefineUnlit);
126
150
  var spheres_vert_1 = require("./shader/spheres.vert");
127
151
  var spheres_frag_1 = require("./shader/spheres.frag");
128
- exports.SpheresShaderCode = ShaderCode('spheres', spheres_vert_1.spheres_vert, spheres_frag_1.spheres_frag, { fragDepth: 'required', drawBuffers: 'optional' });
152
+ exports.SpheresShaderCode = ShaderCode('spheres', spheres_vert_1.spheres_vert, spheres_frag_1.spheres_frag, { fragDepth: 'required', drawBuffers: 'optional' }, {}, ignoreDefine);
129
153
  var cylinders_vert_1 = require("./shader/cylinders.vert");
130
154
  var cylinders_frag_1 = require("./shader/cylinders.frag");
131
- exports.CylindersShaderCode = ShaderCode('cylinders', cylinders_vert_1.cylinders_vert, cylinders_frag_1.cylinders_frag, { fragDepth: 'required', drawBuffers: 'optional' });
155
+ exports.CylindersShaderCode = ShaderCode('cylinders', cylinders_vert_1.cylinders_vert, cylinders_frag_1.cylinders_frag, { fragDepth: 'required', drawBuffers: 'optional' }, {}, ignoreDefine);
132
156
  var text_vert_1 = require("./shader/text.vert");
133
157
  var text_frag_1 = require("./shader/text.frag");
134
- exports.TextShaderCode = ShaderCode('text', text_vert_1.text_vert, text_frag_1.text_frag, { drawBuffers: 'optional' });
158
+ exports.TextShaderCode = ShaderCode('text', text_vert_1.text_vert, text_frag_1.text_frag, { drawBuffers: 'optional' }, {}, ignoreDefineUnlit);
135
159
  var lines_vert_1 = require("./shader/lines.vert");
136
160
  var lines_frag_1 = require("./shader/lines.frag");
137
- exports.LinesShaderCode = ShaderCode('lines', lines_vert_1.lines_vert, lines_frag_1.lines_frag, { drawBuffers: 'optional' });
161
+ exports.LinesShaderCode = ShaderCode('lines', lines_vert_1.lines_vert, lines_frag_1.lines_frag, { drawBuffers: 'optional' }, {}, ignoreDefineUnlit);
138
162
  var mesh_vert_1 = require("./shader/mesh.vert");
139
163
  var mesh_frag_1 = require("./shader/mesh.frag");
140
- exports.MeshShaderCode = ShaderCode('mesh', mesh_vert_1.mesh_vert, mesh_frag_1.mesh_frag, { drawBuffers: 'optional' });
164
+ exports.MeshShaderCode = ShaderCode('mesh', mesh_vert_1.mesh_vert, mesh_frag_1.mesh_frag, { drawBuffers: 'optional' }, {}, ignoreDefine);
141
165
  var direct_volume_vert_1 = require("./shader/direct-volume.vert");
142
166
  var direct_volume_frag_1 = require("./shader/direct-volume.frag");
143
- exports.DirectVolumeShaderCode = ShaderCode('direct-volume', direct_volume_vert_1.directVolume_vert, direct_volume_frag_1.directVolume_frag, { fragDepth: 'optional', drawBuffers: 'optional' });
167
+ exports.DirectVolumeShaderCode = ShaderCode('direct-volume', direct_volume_vert_1.directVolume_vert, direct_volume_frag_1.directVolume_frag, { fragDepth: 'optional', drawBuffers: 'optional' }, {}, ignoreDefine);
144
168
  var image_vert_1 = require("./shader/image.vert");
145
169
  var image_frag_1 = require("./shader/image.frag");
146
- exports.ImageShaderCode = ShaderCode('image', image_vert_1.image_vert, image_frag_1.image_frag, { drawBuffers: 'optional' });
147
- function getDefinesCode(defines) {
170
+ exports.ImageShaderCode = ShaderCode('image', image_vert_1.image_vert, image_frag_1.image_frag, { drawBuffers: 'optional' }, {}, ignoreDefineUnlit);
171
+ function getDefinesCode(defines, ignore) {
172
+ var _a;
148
173
  if (defines === undefined)
149
174
  return '';
175
+ var variant = (((_a = defines.dRenderVariant) === null || _a === void 0 ? void 0 : _a.ref.value) || '');
150
176
  var lines = [];
151
177
  for (var name_1 in defines) {
178
+ if (ignore === null || ignore === void 0 ? void 0 : ignore(name_1, variant, defines))
179
+ continue;
152
180
  var define = defines[name_1];
153
181
  var v = define.ref.value;
154
182
  if (v !== undefined) {
@@ -233,7 +261,8 @@ function transformGlsl300Frag(frag) {
233
261
  return frag.replace(/gl_FragData\[([0-9]+)\]/g, 'out_FragData$1');
234
262
  }
235
263
  function addShaderDefines(gl, extensions, defines, shaders) {
236
- var header = getDefinesCode(defines);
264
+ var vertHeader = getDefinesCode(defines, shaders.ignoreDefine);
265
+ var fragHeader = getDefinesCode(defines, shaders.ignoreDefine);
237
266
  var vertPrefix = (0, compat_1.isWebGL2)(gl) ? glsl300VertPrefix : '';
238
267
  var fragPrefix = (0, compat_1.isWebGL2)(gl)
239
268
  ? getGlsl300FragPrefix(gl, extensions, shaders.extensions, shaders.outTypes)
@@ -242,8 +271,8 @@ function addShaderDefines(gl, extensions, defines, shaders) {
242
271
  return {
243
272
  id: shaderCodeId(),
244
273
  name: shaders.name,
245
- vert: "".concat(vertPrefix).concat(header).concat(preprocess(shaders.vert, defines)),
246
- frag: "".concat(fragPrefix).concat(header).concat(preprocess(frag, defines)),
274
+ vert: "".concat(vertPrefix).concat(vertHeader).concat(preprocess(shaders.vert, defines)),
275
+ frag: "".concat(fragPrefix).concat(fragHeader).concat(preprocess(frag, defines)),
247
276
  extensions: shaders.extensions,
248
277
  outTypes: shaders.outTypes
249
278
  };
@@ -21,18 +21,19 @@ export interface RenderItem<T extends string> {
21
21
  declare const GraphicsRenderVariant: {
22
22
  colorBlended: string;
23
23
  colorWboit: string;
24
- pickObject: string;
25
- pickInstance: string;
26
- pickGroup: string;
24
+ pick: string;
27
25
  depth: string;
28
- markingDepth: string;
29
- markingMask: string;
26
+ marking: string;
30
27
  };
31
28
  export declare type GraphicsRenderVariant = keyof typeof GraphicsRenderVariant;
29
+ export declare const GraphicsRenderVariants: ("depth" | "colorBlended" | "colorWboit" | "pick" | "marking")[];
30
+ export declare const GraphicsRenderVariantsBlended: ("depth" | "colorBlended" | "colorWboit" | "pick" | "marking")[];
31
+ export declare const GraphicsRenderVariantsWboit: ("depth" | "colorBlended" | "colorWboit" | "pick" | "marking")[];
32
32
  declare const ComputeRenderVariant: {
33
33
  compute: string;
34
34
  };
35
35
  export declare type ComputeRenderVariant = keyof typeof ComputeRenderVariant;
36
+ export declare const ComputeRenderVariants: "compute"[];
36
37
  declare function createValueChanges(): {
37
38
  attributes: boolean;
38
39
  defines: boolean;
@@ -41,7 +42,7 @@ declare function createValueChanges(): {
41
42
  };
42
43
  declare type ValueChanges = ReturnType<typeof createValueChanges>;
43
44
  export declare type GraphicsRenderItem = RenderItem<GraphicsRenderVariant>;
44
- export declare function createGraphicsRenderItem(ctx: WebGLContext, drawMode: DrawMode, shaderCode: ShaderCode, schema: RenderableSchema, values: RenderableValues, materialId: number): RenderItem<"depth" | "colorBlended" | "colorWboit" | "pickObject" | "pickInstance" | "pickGroup" | "markingDepth" | "markingMask">;
45
+ export declare function createGraphicsRenderItem(ctx: WebGLContext, drawMode: DrawMode, shaderCode: ShaderCode, schema: RenderableSchema, values: RenderableValues, materialId: number, variants: GraphicsRenderVariant[]): RenderItem<"depth" | "colorBlended" | "colorWboit" | "pick" | "marking">;
45
46
  export declare type ComputeRenderItem = RenderItem<ComputeRenderVariant>;
46
47
  export declare function createComputeRenderItem(ctx: WebGLContext, drawMode: DrawMode, shaderCode: ShaderCode, schema: RenderableSchema, values: RenderableValues, materialId?: number): RenderItem<"compute">;
47
48
  /**
@@ -5,7 +5,7 @@
5
5
  * @author Alexander Rose <alexander.rose@weirdbyte.de>
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.createRenderItem = exports.createComputeRenderItem = exports.createGraphicsRenderItem = exports.getDrawMode = void 0;
8
+ exports.createRenderItem = exports.createComputeRenderItem = exports.createGraphicsRenderItem = exports.ComputeRenderVariants = exports.GraphicsRenderVariantsWboit = exports.GraphicsRenderVariantsBlended = exports.GraphicsRenderVariants = exports.getDrawMode = void 0;
9
9
  var tslib_1 = require("tslib");
10
10
  var buffer_1 = require("./buffer");
11
11
  var texture_1 = require("./texture");
@@ -33,10 +33,12 @@ function getDrawMode(ctx, drawMode) {
33
33
  }
34
34
  exports.getDrawMode = getDrawMode;
35
35
  //
36
- var GraphicsRenderVariant = { 'colorBlended': '', 'colorWboit': '', 'pickObject': '', 'pickInstance': '', 'pickGroup': '', 'depth': '', 'markingDepth': '', 'markingMask': '' };
37
- var GraphicsRenderVariants = Object.keys(GraphicsRenderVariant);
38
- var ComputeRenderVariant = { 'compute': '' };
39
- var ComputeRenderVariants = Object.keys(ComputeRenderVariant);
36
+ var GraphicsRenderVariant = { colorBlended: '', colorWboit: '', pick: '', depth: '', marking: '' };
37
+ exports.GraphicsRenderVariants = Object.keys(GraphicsRenderVariant);
38
+ exports.GraphicsRenderVariantsBlended = exports.GraphicsRenderVariants.filter(function (v) { return v !== 'colorWboit'; });
39
+ exports.GraphicsRenderVariantsWboit = exports.GraphicsRenderVariants.filter(function (v) { return v !== 'colorBlended'; });
40
+ var ComputeRenderVariant = { compute: '' };
41
+ exports.ComputeRenderVariants = Object.keys(ComputeRenderVariant);
40
42
  function createProgramVariant(ctx, variant, defineValues, shaderCode, schema) {
41
43
  defineValues = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, defineValues), { dRenderVariant: mol_util_1.ValueCell.create(variant) });
42
44
  if (schema.dRenderVariant === undefined) {
@@ -58,13 +60,13 @@ function resetValueChanges(valueChanges) {
58
60
  valueChanges.elements = false;
59
61
  valueChanges.textures = false;
60
62
  }
61
- function createGraphicsRenderItem(ctx, drawMode, shaderCode, schema, values, materialId) {
62
- return createRenderItem(ctx, drawMode, shaderCode, schema, values, materialId, GraphicsRenderVariants);
63
+ function createGraphicsRenderItem(ctx, drawMode, shaderCode, schema, values, materialId, variants) {
64
+ return createRenderItem(ctx, drawMode, shaderCode, schema, values, materialId, variants);
63
65
  }
64
66
  exports.createGraphicsRenderItem = createGraphicsRenderItem;
65
67
  function createComputeRenderItem(ctx, drawMode, shaderCode, schema, values, materialId) {
66
68
  if (materialId === void 0) { materialId = -1; }
67
- return createRenderItem(ctx, drawMode, shaderCode, schema, values, materialId, ComputeRenderVariants);
69
+ return createRenderItem(ctx, drawMode, shaderCode, schema, values, materialId, exports.ComputeRenderVariants);
68
70
  }
69
71
  exports.createComputeRenderItem = createComputeRenderItem;
70
72
  /**
@@ -51,8 +51,15 @@ function createResources(gl, state, stats, extensions) {
51
51
  return wrapCached(shaderCache.get({ type: type, source: source }));
52
52
  }
53
53
  var programCache = (0, reference_cache_1.createReferenceCache)(function (props) {
54
+ var _a;
54
55
  var array = [props.shaderCode.id];
55
- Object.keys(props.defineValues).forEach(function (k) { return array.push((0, util_1.hashString)(k), defineValueHash(props.defineValues[k].ref.value)); });
56
+ var variant = (((_a = props.defineValues.dRenderVariant) === null || _a === void 0 ? void 0 : _a.ref.value) || '');
57
+ Object.keys(props.defineValues).forEach(function (k) {
58
+ var _a, _b;
59
+ if (!((_b = (_a = props.shaderCode).ignoreDefine) === null || _b === void 0 ? void 0 : _b.call(_a, k, variant, props.defineValues))) {
60
+ array.push((0, util_1.hashString)(k), defineValueHash(props.defineValues[k].ref.value));
61
+ }
62
+ });
56
63
  return (0, util_1.hashFnv32a)(array).toString();
57
64
  }, function (props) { return wrap('program', (0, program_1.createProgram)(gl, state, extensions, getShader, props)); }, function (program) { program.destroy(); });
58
65
  return {