molstar 3.0.0-dev.7 → 3.0.0-dev.8

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 (245) hide show
  1. package/build/viewer/index.html +4 -0
  2. package/build/viewer/molstar.js +1 -1
  3. package/lib/apps/viewer/index.d.ts +1 -0
  4. package/lib/apps/viewer/index.html +4 -0
  5. package/lib/apps/viewer/index.js +2 -0
  6. package/lib/commonjs/apps/viewer/index.d.ts +1 -0
  7. package/lib/commonjs/apps/viewer/index.js +2 -0
  8. package/lib/commonjs/examples/alpha-orbitals/index.js +1 -1
  9. package/lib/commonjs/extensions/geo-export/mesh-exporter.js +4 -4
  10. package/lib/commonjs/extensions/rcsb/assembly-symmetry/behavior.d.ts +2 -2
  11. package/lib/commonjs/mol-canvas3d/canvas3d.d.ts +1 -1
  12. package/lib/commonjs/mol-canvas3d/canvas3d.js +33 -29
  13. package/lib/commonjs/mol-canvas3d/passes/draw.d.ts +13 -1
  14. package/lib/commonjs/mol-canvas3d/passes/draw.js +16 -15
  15. package/lib/commonjs/mol-canvas3d/passes/image.js +3 -2
  16. package/lib/commonjs/mol-canvas3d/passes/marking.js +1 -1
  17. package/lib/commonjs/mol-canvas3d/passes/multi-sample.d.ts +9 -2
  18. package/lib/commonjs/mol-canvas3d/passes/multi-sample.js +14 -12
  19. package/lib/commonjs/mol-canvas3d/passes/pick.js +3 -3
  20. package/lib/commonjs/mol-geo/geometry/color-data.d.ts +1 -1
  21. package/lib/commonjs/mol-geo/geometry/color-data.js +22 -0
  22. package/lib/commonjs/mol-geo/geometry/cylinders/cylinders.js +1 -1
  23. package/lib/commonjs/mol-geo/geometry/direct-volume/direct-volume.d.ts +5 -38
  24. package/lib/commonjs/mol-geo/geometry/direct-volume/direct-volume.js +21 -66
  25. package/lib/commonjs/mol-geo/geometry/direct-volume/transfer-function.d.ts +2 -4
  26. package/lib/commonjs/mol-geo/geometry/direct-volume/transfer-function.js +4 -7
  27. package/lib/commonjs/mol-geo/geometry/image/image.js +1 -1
  28. package/lib/commonjs/mol-geo/geometry/lines/lines.js +1 -1
  29. package/lib/commonjs/mol-geo/geometry/marker-data.js +13 -5
  30. package/lib/commonjs/mol-geo/geometry/mesh/mesh.js +1 -1
  31. package/lib/commonjs/mol-geo/geometry/points/points.js +1 -1
  32. package/lib/commonjs/mol-geo/geometry/size-data.js +5 -5
  33. package/lib/commonjs/mol-geo/geometry/spheres/spheres.js +1 -1
  34. package/lib/commonjs/mol-geo/geometry/text/text.js +1 -1
  35. package/lib/commonjs/mol-geo/geometry/texture-mesh/texture-mesh.js +1 -1
  36. package/lib/commonjs/mol-gl/compute/histogram-pyramid/sum.js +2 -2
  37. package/lib/commonjs/mol-gl/compute/marching-cubes/isosurface.d.ts +2 -2
  38. package/lib/commonjs/mol-gl/compute/marching-cubes/isosurface.js +10 -9
  39. package/lib/commonjs/mol-gl/renderable/cylinders.d.ts +1 -0
  40. package/lib/commonjs/mol-gl/renderable/direct-volume.d.ts +6 -10
  41. package/lib/commonjs/mol-gl/renderable/direct-volume.js +1 -1
  42. package/lib/commonjs/mol-gl/renderable/image.d.ts +1 -0
  43. package/lib/commonjs/mol-gl/renderable/lines.d.ts +1 -0
  44. package/lib/commonjs/mol-gl/renderable/mesh.d.ts +1 -0
  45. package/lib/commonjs/mol-gl/renderable/points.d.ts +1 -0
  46. package/lib/commonjs/mol-gl/renderable/schema.d.ts +1 -0
  47. package/lib/commonjs/mol-gl/renderable/schema.js +2 -2
  48. package/lib/commonjs/mol-gl/renderable/spheres.d.ts +1 -0
  49. package/lib/commonjs/mol-gl/renderable/text.d.ts +1 -0
  50. package/lib/commonjs/mol-gl/renderable/texture-mesh.d.ts +1 -1
  51. package/lib/commonjs/mol-gl/renderable/texture-mesh.js +1 -1
  52. package/lib/commonjs/mol-gl/renderer.js +12 -19
  53. package/lib/commonjs/mol-gl/shader/chunks/assign-color-varying.glsl.d.ts +1 -1
  54. package/lib/commonjs/mol-gl/shader/chunks/assign-color-varying.glsl.js +1 -1
  55. package/lib/commonjs/mol-gl/shader/chunks/assign-group.glsl.d.ts +1 -1
  56. package/lib/commonjs/mol-gl/shader/chunks/assign-group.glsl.js +1 -1
  57. package/lib/commonjs/mol-gl/shader/chunks/assign-position.glsl.d.ts +1 -1
  58. package/lib/commonjs/mol-gl/shader/chunks/assign-position.glsl.js +1 -1
  59. package/lib/commonjs/mol-gl/shader/chunks/assign-size.glsl.d.ts +1 -1
  60. package/lib/commonjs/mol-gl/shader/chunks/assign-size.glsl.js +1 -1
  61. package/lib/commonjs/mol-gl/shader/chunks/common.glsl.d.ts +1 -1
  62. package/lib/commonjs/mol-gl/shader/chunks/common.glsl.js +1 -1
  63. package/lib/commonjs/mol-gl/shader/chunks/wboit-write.glsl.d.ts +1 -1
  64. package/lib/commonjs/mol-gl/shader/chunks/wboit-write.glsl.js +1 -1
  65. package/lib/commonjs/mol-gl/shader/compute/color-smoothing/accumulate.vert.d.ts +1 -1
  66. package/lib/commonjs/mol-gl/shader/compute/color-smoothing/accumulate.vert.js +1 -1
  67. package/lib/commonjs/mol-gl/shader/direct-volume.frag.d.ts +1 -1
  68. package/lib/commonjs/mol-gl/shader/direct-volume.frag.js +1 -1
  69. package/lib/commonjs/mol-gl/shader/gaussian-density.frag.d.ts +1 -1
  70. package/lib/commonjs/mol-gl/shader/gaussian-density.frag.js +1 -1
  71. package/lib/commonjs/mol-gl/shader/histogram-pyramid/reduction.frag.d.ts +1 -1
  72. package/lib/commonjs/mol-gl/shader/histogram-pyramid/reduction.frag.js +1 -1
  73. package/lib/commonjs/mol-gl/shader/image.frag.d.ts +1 -1
  74. package/lib/commonjs/mol-gl/shader/image.frag.js +1 -1
  75. package/lib/commonjs/mol-gl/shader/marching-cubes/isosurface.frag.d.ts +1 -1
  76. package/lib/commonjs/mol-gl/shader/marching-cubes/isosurface.frag.js +1 -1
  77. package/lib/commonjs/mol-gl/shader/mesh.vert.d.ts +1 -1
  78. package/lib/commonjs/mol-gl/shader/mesh.vert.js +1 -1
  79. package/lib/commonjs/mol-gl/shader-code.js +1 -1
  80. package/lib/commonjs/mol-math/geometry/gaussian-density/gpu.js +2 -2
  81. package/lib/commonjs/mol-plugin/behavior/dynamic/representation.js +4 -6
  82. package/lib/commonjs/mol-plugin/config.d.ts +0 -1
  83. package/lib/commonjs/mol-plugin/config.js +4 -25
  84. package/lib/commonjs/mol-plugin/features.d.ts +9 -0
  85. package/lib/commonjs/mol-plugin/features.js +38 -0
  86. package/lib/commonjs/mol-plugin-state/builder/structure/representation-preset.d.ts +4 -4
  87. package/lib/commonjs/mol-plugin-state/manager/structure/selection.js +3 -1
  88. package/lib/commonjs/mol-plugin-state/transforms/representation.js +2 -2
  89. package/lib/commonjs/mol-repr/structure/complex-representation.js +1 -1
  90. package/lib/commonjs/mol-repr/structure/complex-visual.d.ts +1 -19
  91. package/lib/commonjs/mol-repr/structure/params.d.ts +1 -19
  92. package/lib/commonjs/mol-repr/structure/registry.d.ts +1 -19
  93. package/lib/commonjs/mol-repr/structure/representation/gaussian-surface.js +1 -1
  94. package/lib/commonjs/mol-repr/structure/representation/gaussian-volume.d.ts +4 -58
  95. package/lib/commonjs/mol-repr/structure/representation/gaussian-volume.js +2 -7
  96. package/lib/commonjs/mol-repr/structure/representation/label.js +1 -1
  97. package/lib/commonjs/mol-repr/structure/representation/molecular-surface.js +1 -1
  98. package/lib/commonjs/mol-repr/structure/units-representation.js +1 -1
  99. package/lib/commonjs/mol-repr/structure/units-visual.d.ts +1 -19
  100. package/lib/commonjs/mol-repr/structure/visual/gaussian-density-volume.d.ts +2 -38
  101. package/lib/commonjs/mol-repr/structure/visual/gaussian-density-volume.js +8 -6
  102. package/lib/commonjs/mol-repr/structure/visual/gaussian-surface-mesh.js +11 -8
  103. package/lib/commonjs/mol-repr/structure/visual/gaussian-surface-wireframe.js +1 -1
  104. package/lib/commonjs/mol-repr/structure/visual/label-text.js +1 -2
  105. package/lib/commonjs/mol-repr/structure/visual/molecular-surface-mesh.js +1 -1
  106. package/lib/commonjs/mol-repr/structure/visual/molecular-surface-wireframe.js +1 -1
  107. package/lib/commonjs/mol-repr/structure/visual/util/common.d.ts +3 -2
  108. package/lib/commonjs/mol-repr/structure/visual/util/common.js +2 -5
  109. package/lib/commonjs/mol-repr/structure/visual/util/gaussian.d.ts +7 -6
  110. package/lib/commonjs/mol-repr/structure/visual/util/gaussian.js +12 -12
  111. package/lib/commonjs/mol-repr/structure/visual/util/molecular-surface.d.ts +2 -1
  112. package/lib/commonjs/mol-repr/structure/visual/util/molecular-surface.js +4 -4
  113. package/lib/commonjs/mol-repr/volume/direct-volume.d.ts +3 -57
  114. package/lib/commonjs/mol-repr/volume/direct-volume.js +8 -12
  115. package/lib/commonjs/mol-repr/volume/isosurface.js +11 -2
  116. package/lib/commonjs/mol-repr/volume/registry.d.ts +1 -19
  117. package/lib/commonjs/mol-repr/volume/slice.js +2 -2
  118. package/lib/commonjs/mol-repr/volume/util.js +2 -2
  119. package/lib/commonjs/mol-theme/color/volume-value.d.ts +17 -0
  120. package/lib/commonjs/mol-theme/color/volume-value.js +57 -0
  121. package/lib/commonjs/mol-theme/color.d.ts +3 -0
  122. package/lib/commonjs/mol-theme/color.js +2 -0
  123. package/lib/commonjs/mol-util/number-packing.d.ts +11 -0
  124. package/lib/commonjs/mol-util/{float-packing.js → number-packing.js} +10 -19
  125. package/lib/examples/alpha-orbitals/index.js +1 -1
  126. package/lib/extensions/geo-export/mesh-exporter.js +4 -4
  127. package/lib/extensions/rcsb/assembly-symmetry/behavior.d.ts +2 -2
  128. package/lib/mol-canvas3d/canvas3d.d.ts +1 -1
  129. package/lib/mol-canvas3d/canvas3d.js +33 -29
  130. package/lib/mol-canvas3d/passes/draw.d.ts +13 -1
  131. package/lib/mol-canvas3d/passes/draw.js +16 -15
  132. package/lib/mol-canvas3d/passes/image.js +3 -2
  133. package/lib/mol-canvas3d/passes/marking.js +1 -1
  134. package/lib/mol-canvas3d/passes/multi-sample.d.ts +9 -2
  135. package/lib/mol-canvas3d/passes/multi-sample.js +14 -12
  136. package/lib/mol-canvas3d/passes/pick.js +2 -2
  137. package/lib/mol-geo/geometry/color-data.d.ts +1 -1
  138. package/lib/mol-geo/geometry/color-data.js +22 -0
  139. package/lib/mol-geo/geometry/cylinders/cylinders.js +1 -1
  140. package/lib/mol-geo/geometry/direct-volume/direct-volume.d.ts +5 -38
  141. package/lib/mol-geo/geometry/direct-volume/direct-volume.js +22 -67
  142. package/lib/mol-geo/geometry/direct-volume/transfer-function.d.ts +2 -4
  143. package/lib/mol-geo/geometry/direct-volume/transfer-function.js +4 -7
  144. package/lib/mol-geo/geometry/image/image.js +1 -1
  145. package/lib/mol-geo/geometry/lines/lines.js +1 -1
  146. package/lib/mol-geo/geometry/marker-data.js +13 -5
  147. package/lib/mol-geo/geometry/mesh/mesh.js +1 -1
  148. package/lib/mol-geo/geometry/points/points.js +1 -1
  149. package/lib/mol-geo/geometry/size-data.js +5 -5
  150. package/lib/mol-geo/geometry/spheres/spheres.js +1 -1
  151. package/lib/mol-geo/geometry/text/text.js +1 -1
  152. package/lib/mol-geo/geometry/texture-mesh/texture-mesh.js +1 -1
  153. package/lib/mol-gl/compute/histogram-pyramid/sum.js +2 -2
  154. package/lib/mol-gl/compute/marching-cubes/isosurface.d.ts +2 -2
  155. package/lib/mol-gl/compute/marching-cubes/isosurface.js +10 -9
  156. package/lib/mol-gl/renderable/cylinders.d.ts +1 -0
  157. package/lib/mol-gl/renderable/direct-volume.d.ts +6 -10
  158. package/lib/mol-gl/renderable/direct-volume.js +1 -1
  159. package/lib/mol-gl/renderable/image.d.ts +1 -0
  160. package/lib/mol-gl/renderable/lines.d.ts +1 -0
  161. package/lib/mol-gl/renderable/mesh.d.ts +1 -0
  162. package/lib/mol-gl/renderable/points.d.ts +1 -0
  163. package/lib/mol-gl/renderable/schema.d.ts +1 -0
  164. package/lib/mol-gl/renderable/schema.js +2 -2
  165. package/lib/mol-gl/renderable/spheres.d.ts +1 -0
  166. package/lib/mol-gl/renderable/text.d.ts +1 -0
  167. package/lib/mol-gl/renderable/texture-mesh.d.ts +1 -1
  168. package/lib/mol-gl/renderable/texture-mesh.js +1 -1
  169. package/lib/mol-gl/renderer.js +12 -19
  170. package/lib/mol-gl/shader/chunks/assign-color-varying.glsl.d.ts +1 -1
  171. package/lib/mol-gl/shader/chunks/assign-color-varying.glsl.js +1 -1
  172. package/lib/mol-gl/shader/chunks/assign-group.glsl.d.ts +1 -1
  173. package/lib/mol-gl/shader/chunks/assign-group.glsl.js +1 -1
  174. package/lib/mol-gl/shader/chunks/assign-position.glsl.d.ts +1 -1
  175. package/lib/mol-gl/shader/chunks/assign-position.glsl.js +1 -1
  176. package/lib/mol-gl/shader/chunks/assign-size.glsl.d.ts +1 -1
  177. package/lib/mol-gl/shader/chunks/assign-size.glsl.js +1 -1
  178. package/lib/mol-gl/shader/chunks/common.glsl.d.ts +1 -1
  179. package/lib/mol-gl/shader/chunks/common.glsl.js +1 -1
  180. package/lib/mol-gl/shader/chunks/wboit-write.glsl.d.ts +1 -1
  181. package/lib/mol-gl/shader/chunks/wboit-write.glsl.js +1 -1
  182. package/lib/mol-gl/shader/compute/color-smoothing/accumulate.vert.d.ts +1 -1
  183. package/lib/mol-gl/shader/compute/color-smoothing/accumulate.vert.js +1 -1
  184. package/lib/mol-gl/shader/direct-volume.frag.d.ts +1 -1
  185. package/lib/mol-gl/shader/direct-volume.frag.js +1 -1
  186. package/lib/mol-gl/shader/gaussian-density.frag.d.ts +1 -1
  187. package/lib/mol-gl/shader/gaussian-density.frag.js +1 -1
  188. package/lib/mol-gl/shader/histogram-pyramid/reduction.frag.d.ts +1 -1
  189. package/lib/mol-gl/shader/histogram-pyramid/reduction.frag.js +1 -1
  190. package/lib/mol-gl/shader/image.frag.d.ts +1 -1
  191. package/lib/mol-gl/shader/image.frag.js +1 -1
  192. package/lib/mol-gl/shader/marching-cubes/isosurface.frag.d.ts +1 -1
  193. package/lib/mol-gl/shader/marching-cubes/isosurface.frag.js +1 -1
  194. package/lib/mol-gl/shader/mesh.vert.d.ts +1 -1
  195. package/lib/mol-gl/shader/mesh.vert.js +1 -1
  196. package/lib/mol-gl/shader-code.js +1 -1
  197. package/lib/mol-math/geometry/gaussian-density/gpu.js +2 -2
  198. package/lib/mol-plugin/behavior/dynamic/representation.js +4 -6
  199. package/lib/mol-plugin/config.d.ts +0 -1
  200. package/lib/mol-plugin/config.js +3 -23
  201. package/lib/mol-plugin/features.d.ts +9 -0
  202. package/lib/mol-plugin/features.js +35 -0
  203. package/lib/mol-plugin/version.js +2 -2
  204. package/lib/mol-plugin-state/builder/structure/representation-preset.d.ts +4 -4
  205. package/lib/mol-plugin-state/manager/structure/selection.js +3 -1
  206. package/lib/mol-plugin-state/transforms/representation.js +2 -2
  207. package/lib/mol-repr/structure/complex-representation.js +1 -1
  208. package/lib/mol-repr/structure/complex-visual.d.ts +1 -19
  209. package/lib/mol-repr/structure/params.d.ts +1 -19
  210. package/lib/mol-repr/structure/registry.d.ts +1 -19
  211. package/lib/mol-repr/structure/representation/gaussian-surface.js +1 -1
  212. package/lib/mol-repr/structure/representation/gaussian-volume.d.ts +4 -58
  213. package/lib/mol-repr/structure/representation/gaussian-volume.js +2 -7
  214. package/lib/mol-repr/structure/representation/label.js +1 -1
  215. package/lib/mol-repr/structure/representation/molecular-surface.js +1 -1
  216. package/lib/mol-repr/structure/units-representation.js +1 -1
  217. package/lib/mol-repr/structure/units-visual.d.ts +1 -19
  218. package/lib/mol-repr/structure/visual/gaussian-density-volume.d.ts +2 -38
  219. package/lib/mol-repr/structure/visual/gaussian-density-volume.js +8 -6
  220. package/lib/mol-repr/structure/visual/gaussian-surface-mesh.js +11 -8
  221. package/lib/mol-repr/structure/visual/gaussian-surface-wireframe.js +1 -1
  222. package/lib/mol-repr/structure/visual/label-text.js +1 -2
  223. package/lib/mol-repr/structure/visual/molecular-surface-mesh.js +1 -1
  224. package/lib/mol-repr/structure/visual/molecular-surface-wireframe.js +1 -1
  225. package/lib/mol-repr/structure/visual/util/common.d.ts +3 -2
  226. package/lib/mol-repr/structure/visual/util/common.js +2 -5
  227. package/lib/mol-repr/structure/visual/util/gaussian.d.ts +7 -6
  228. package/lib/mol-repr/structure/visual/util/gaussian.js +12 -12
  229. package/lib/mol-repr/structure/visual/util/molecular-surface.d.ts +2 -1
  230. package/lib/mol-repr/structure/visual/util/molecular-surface.js +4 -4
  231. package/lib/mol-repr/volume/direct-volume.d.ts +3 -57
  232. package/lib/mol-repr/volume/direct-volume.js +8 -12
  233. package/lib/mol-repr/volume/isosurface.js +11 -2
  234. package/lib/mol-repr/volume/registry.d.ts +1 -19
  235. package/lib/mol-repr/volume/slice.js +2 -2
  236. package/lib/mol-repr/volume/util.js +2 -2
  237. package/lib/mol-theme/color/volume-value.d.ts +17 -0
  238. package/lib/mol-theme/color/volume-value.js +52 -0
  239. package/lib/mol-theme/color.d.ts +3 -0
  240. package/lib/mol-theme/color.js +2 -0
  241. package/lib/mol-util/number-packing.d.ts +11 -0
  242. package/lib/mol-util/{float-packing.js → number-packing.js} +7 -14
  243. package/package.json +1 -1
  244. package/lib/commonjs/mol-util/float-packing.d.ts +0 -15
  245. package/lib/mol-util/float-packing.d.ts +0 -15
@@ -39,6 +39,7 @@ declare const DefaultViewerOptions: {
39
39
  pickScale: number | undefined;
40
40
  pickPadding: number | undefined;
41
41
  enableWboit: boolean | undefined;
42
+ preferWebgl1: boolean | undefined;
42
43
  viewportShowExpand: boolean | undefined;
43
44
  viewportShowControls: boolean | undefined;
44
45
  viewportShowSettings: boolean | undefined;
@@ -56,6 +56,8 @@
56
56
  var pixelScale = getParam('pixel-scale', '[^&]+').trim();
57
57
  var pickScale = getParam('pick-scale', '[^&]+').trim();
58
58
  var pickPadding = getParam('pick-padding', '[^&]+').trim();
59
+ var disableWboit = getParam('disable-wboit', '[^&]+').trim() === '1';
60
+ var preferWebgl1 = getParam('prefer-webgl1', '[^&]+').trim() === '1';
59
61
 
60
62
  molstar.Viewer.create('app', {
61
63
  layoutShowControls: !hideControls,
@@ -69,6 +71,8 @@
69
71
  pixelScale: parseFloat(pixelScale) || 1,
70
72
  pickScale: parseFloat(pickScale) || 0.25,
71
73
  pickPadding: isNaN(parseFloat(pickPadding)) ? 1 : parseFloat(pickPadding),
74
+ enableWboit: !disableWboit,
75
+ preferWebgl1: preferWebgl1,
72
76
  }).then(viewer => {
73
77
  var snapshotId = getParam('snapshot-id', '[^&]+').trim();
74
78
  if (snapshotId) viewer.setRemoteSnapshot(snapshotId);
@@ -69,6 +69,7 @@ var DefaultViewerOptions = {
69
69
  pickScale: PluginConfig.General.PickScale.defaultValue,
70
70
  pickPadding: PluginConfig.General.PickPadding.defaultValue,
71
71
  enableWboit: PluginConfig.General.EnableWboit.defaultValue,
72
+ preferWebgl1: PluginConfig.General.PreferWebGl1.defaultValue,
72
73
  viewportShowExpand: PluginConfig.Viewport.ShowExpand.defaultValue,
73
74
  viewportShowControls: PluginConfig.Viewport.ShowControls.defaultValue,
74
75
  viewportShowSettings: PluginConfig.Viewport.ShowSettings.defaultValue,
@@ -120,6 +121,7 @@ var Viewer = /** @class */ (function () {
120
121
  [PluginConfig.General.PickScale, o.pickScale],
121
122
  [PluginConfig.General.PickPadding, o.pickPadding],
122
123
  [PluginConfig.General.EnableWboit, o.enableWboit],
124
+ [PluginConfig.General.PreferWebGl1, o.preferWebgl1],
123
125
  [PluginConfig.Viewport.ShowExpand, o.viewportShowExpand],
124
126
  [PluginConfig.Viewport.ShowControls, o.viewportShowControls],
125
127
  [PluginConfig.Viewport.ShowSettings, o.viewportShowSettings],
@@ -39,6 +39,7 @@ declare const DefaultViewerOptions: {
39
39
  pickScale: number | undefined;
40
40
  pickPadding: number | undefined;
41
41
  enableWboit: boolean | undefined;
42
+ preferWebgl1: boolean | undefined;
42
43
  viewportShowExpand: boolean | undefined;
43
44
  viewportShowControls: boolean | undefined;
44
45
  viewportShowSettings: boolean | undefined;
@@ -75,6 +75,7 @@ var DefaultViewerOptions = {
75
75
  pickScale: config_1.PluginConfig.General.PickScale.defaultValue,
76
76
  pickPadding: config_1.PluginConfig.General.PickPadding.defaultValue,
77
77
  enableWboit: config_1.PluginConfig.General.EnableWboit.defaultValue,
78
+ preferWebgl1: config_1.PluginConfig.General.PreferWebGl1.defaultValue,
78
79
  viewportShowExpand: config_1.PluginConfig.Viewport.ShowExpand.defaultValue,
79
80
  viewportShowControls: config_1.PluginConfig.Viewport.ShowControls.defaultValue,
80
81
  viewportShowSettings: config_1.PluginConfig.Viewport.ShowSettings.defaultValue,
@@ -126,6 +127,7 @@ var Viewer = /** @class */ (function () {
126
127
  [config_1.PluginConfig.General.PickScale, o.pickScale],
127
128
  [config_1.PluginConfig.General.PickPadding, o.pickPadding],
128
129
  [config_1.PluginConfig.General.EnableWboit, o.enableWboit],
130
+ [config_1.PluginConfig.General.PreferWebGl1, o.preferWebgl1],
129
131
  [config_1.PluginConfig.Viewport.ShowExpand, o.viewportShowExpand],
130
132
  [config_1.PluginConfig.Viewport.ShowControls, o.viewportShowControls],
131
133
  [config_1.PluginConfig.Viewport.ShowSettings, o.viewportShowSettings],
@@ -24,7 +24,7 @@ require('mol-plugin-ui/skin/light.scss');
24
24
  var AlphaOrbitalsExample = /** @class */ (function () {
25
25
  function AlphaOrbitalsExample() {
26
26
  this.params = new rxjs_1.BehaviorSubject({});
27
- this.state = new rxjs_1.BehaviorSubject({ show: { name: 'orbital', params: { index: 32 } }, isoValue: 1, gpuSurface: false });
27
+ this.state = new rxjs_1.BehaviorSubject({ show: { name: 'orbital', params: { index: 32 } }, isoValue: 1, gpuSurface: true });
28
28
  this.selectors = void 0;
29
29
  this.basis = void 0;
30
30
  this.currentParams = (0, tslib_1.__assign)({}, this.state.value);
@@ -17,7 +17,7 @@ var cylinder_1 = require("../../mol-geo/geometry/mesh/builder/cylinder");
17
17
  var size_data_1 = require("../../mol-geo/geometry/size-data");
18
18
  var linear_algebra_1 = require("../../mol-math/linear-algebra");
19
19
  var color_1 = require("../../mol-util/color/color");
20
- var float_packing_1 = require("../../mol-util/float-packing");
20
+ var number_packing_1 = require("../../mol-util/number-packing");
21
21
  var util_2 = require("../../mol-gl/compute/util");
22
22
  var GeoExportName = 'geo-export';
23
23
  // avoiding namespace lookup improved performance in Chrome (Aug 2020)
@@ -29,7 +29,7 @@ var MeshExporter = /** @class */ (function () {
29
29
  var r = tSize.array[i * 3];
30
30
  var g = tSize.array[i * 3 + 1];
31
31
  var b = tSize.array[i * 3 + 2];
32
- return (0, float_packing_1.decodeFloatRGB)(r, g, b) / size_data_1.sizeDataFactor;
32
+ return (0, number_packing_1.unpackRGBToInt)(r, g, b) / size_data_1.sizeDataFactor;
33
33
  };
34
34
  MeshExporter.getSize = function (values, instanceIndex, group) {
35
35
  var tSize = values.tSize.ref.value;
@@ -57,9 +57,9 @@ var MeshExporter = /** @class */ (function () {
57
57
  var g = groups[i4 + 1];
58
58
  var b = groups[i4 + 2];
59
59
  if (groups instanceof Float32Array) {
60
- return (0, float_packing_1.decodeFloatRGB)(r * 255 + 0.5, g * 255 + 0.5, b * 255 + 0.5);
60
+ return (0, number_packing_1.unpackRGBToInt)(r * 255 + 0.5, g * 255 + 0.5, b * 255 + 0.5);
61
61
  }
62
- return (0, float_packing_1.decodeFloatRGB)(r, g, b);
62
+ return (0, number_packing_1.unpackRGBToInt)(r, g, b);
63
63
  };
64
64
  MeshExporter.getInterpolatedColors = function (webgl, input) {
65
65
  var values = input.values, vertexCount = input.vertexCount, vertices = input.vertices, colorType = input.colorType, stride = input.stride;
@@ -45,9 +45,9 @@ export declare const AssemblySymmetryPresetParams: {
45
45
  ignoreHydrogens: PD.Base<boolean | undefined>;
46
46
  quality: PD.Base<"auto" | "medium" | "high" | "low" | "custom" | "highest" | "higher" | "lower" | "lowest" | undefined>;
47
47
  theme: PD.Base<PD.Normalize<{
48
- globalName: "uniform" | "occupancy" | "element-index" | "element-symbol" | "shape-group" | "uncertainty" | "carbohydrate-symbol" | "chain-id" | "operator-name" | "molecule-type" | "polymer-id" | "polymer-index" | "residue-name" | "secondary-structure" | "sequence-id" | "unit-index" | "entity-source" | "illustrative" | "hydrophobicity" | "model-index" | "operator-hkl" | "partial-charge" | "atom-id" | "entity-id" | undefined;
48
+ globalName: "uniform" | "occupancy" | "element-index" | "element-symbol" | "shape-group" | "uncertainty" | "carbohydrate-symbol" | "chain-id" | "operator-name" | "molecule-type" | "polymer-id" | "polymer-index" | "residue-name" | "secondary-structure" | "sequence-id" | "unit-index" | "entity-source" | "illustrative" | "hydrophobicity" | "model-index" | "operator-hkl" | "partial-charge" | "atom-id" | "entity-id" | "volume-value" | undefined;
49
49
  carbonColor: "element-symbol" | "chain-id" | "operator-name" | undefined;
50
- symmetryColor: "uniform" | "occupancy" | "element-index" | "element-symbol" | "shape-group" | "uncertainty" | "carbohydrate-symbol" | "chain-id" | "operator-name" | "molecule-type" | "polymer-id" | "polymer-index" | "residue-name" | "secondary-structure" | "sequence-id" | "unit-index" | "entity-source" | "illustrative" | "hydrophobicity" | "model-index" | "operator-hkl" | "partial-charge" | "atom-id" | "entity-id" | undefined;
50
+ symmetryColor: "uniform" | "occupancy" | "element-index" | "element-symbol" | "shape-group" | "uncertainty" | "carbohydrate-symbol" | "chain-id" | "operator-name" | "molecule-type" | "polymer-id" | "polymer-index" | "residue-name" | "secondary-structure" | "sequence-id" | "unit-index" | "entity-source" | "illustrative" | "hydrophobicity" | "model-index" | "operator-hkl" | "partial-charge" | "atom-id" | "entity-id" | "volume-value" | undefined;
51
51
  focus: PD.Normalize<{
52
52
  name: any;
53
53
  params: any;
@@ -374,7 +374,7 @@ interface Canvas3D {
374
374
  update(repr?: Representation.Any, keepBoundingSphere?: boolean): void;
375
375
  clear(): void;
376
376
  syncVisibility(): void;
377
- requestDraw(force?: boolean): void;
377
+ requestDraw(): void;
378
378
  /** Reset the timers, used by "animate" */
379
379
  resetTime(t: number): void;
380
380
  animate(): void;
@@ -255,16 +255,24 @@ var Canvas3D;
255
255
  changed = helper.camera.mark(loci, action) || changed;
256
256
  reprRenderObjects.forEach(function (_, _repr) { changed = _repr.mark(loci, action) || changed; });
257
257
  }
258
- if (changed && !noDraw) {
259
- scene.update(void 0, true);
260
- helper.handle.scene.update(void 0, true);
261
- helper.camera.scene.update(void 0, true);
262
- var prevPickDirty = pickHelper.dirty;
263
- draw(true);
264
- pickHelper.dirty = prevPickDirty; // marking does not change picking buffers
258
+ if (changed) {
259
+ if (noDraw) {
260
+ // Even with `noDraw` make sure changes will be rendered.
261
+ // Note that with this calling mark (with or without `noDraw`) multiple times
262
+ // during a JS event loop iteration will only result in a single render call.
263
+ forceNextRender = true;
264
+ }
265
+ else {
266
+ scene.update(void 0, true);
267
+ helper.handle.scene.update(void 0, true);
268
+ helper.camera.scene.update(void 0, true);
269
+ var prevPickDirty = pickHelper.dirty;
270
+ draw({ force: true, allowMulti: true });
271
+ pickHelper.dirty = prevPickDirty; // marking does not change picking buffers
272
+ }
265
273
  }
266
274
  }
267
- function render(force) {
275
+ function render(force, allowMulti) {
268
276
  if (webgl.isContextLost)
269
277
  return false;
270
278
  var resized = false;
@@ -288,17 +296,13 @@ var Canvas3D;
288
296
  stereoCamera.update();
289
297
  cam = stereoCamera;
290
298
  }
299
+ var ctx = { renderer: renderer, camera: cam, scene: scene, helper: helper };
291
300
  if (multi_sample_1.MultiSamplePass.isEnabled(p.multiSample)) {
292
- if (!cameraChanged) {
293
- while (!multiSampleHelper.render(renderer, cam, scene, helper, true, p.transparentBackground, p))
294
- ;
295
- }
296
- else {
297
- multiSampleHelper.render(renderer, cam, scene, helper, true, p.transparentBackground, p);
298
- }
301
+ var forceOn = !cameraChanged && allowMulti && !controls.props.spin;
302
+ multiSampleHelper.render(ctx, p, true, forceOn);
299
303
  }
300
304
  else {
301
- passes.draw.render(renderer, cam, scene, helper, true, p.transparentBackground, p.postprocessing, p.marking);
305
+ passes.draw.render(ctx, p, true);
302
306
  }
303
307
  pickHelper.dirty = true;
304
308
  didRender = true;
@@ -309,15 +313,15 @@ var Canvas3D;
309
313
  var forceDrawAfterAllCommited = false;
310
314
  var currentTime = 0;
311
315
  var drawPaused = false;
312
- function draw(force) {
316
+ function draw(options) {
313
317
  if (drawPaused)
314
318
  return;
315
- if (render(!!force) && notifyDidDraw) {
319
+ if (render(!!(options === null || options === void 0 ? void 0 : options.force), !!(options === null || options === void 0 ? void 0 : options.allowMulti)) && notifyDidDraw) {
316
320
  didDraw.next((0, now_1.now)() - startTime);
317
321
  }
318
322
  }
319
- function requestDraw(force) {
320
- forceNextRender = forceNextRender || !!force;
323
+ function requestDraw() {
324
+ forceNextRender = true;
321
325
  }
322
326
  var animationFrameHandle = 0;
323
327
  function tick(t, options) {
@@ -327,8 +331,8 @@ var Canvas3D;
327
331
  if (options === null || options === void 0 ? void 0 : options.manualDraw) {
328
332
  return;
329
333
  }
330
- draw(false);
331
- if (!camera.transition.inTransition && !webgl.isContextLost) {
334
+ draw();
335
+ if (!camera.transition.inTransition && !controls.props.spin && !webgl.isContextLost) {
332
336
  interactionHelper.tick(currentTime);
333
337
  }
334
338
  }
@@ -365,7 +369,7 @@ var Canvas3D;
365
369
  if (forceDrawAfterAllCommited) {
366
370
  if (helper.debug.isEnabled)
367
371
  helper.debug.update();
368
- draw(true);
372
+ draw({ force: true });
369
373
  forceDrawAfterAllCommited = false;
370
374
  }
371
375
  commited.next((0, now_1.now)());
@@ -534,11 +538,11 @@ var Canvas3D;
534
538
  }
535
539
  var contextRestoredSub = contextRestored.subscribe(function () {
536
540
  pickHelper.dirty = true;
537
- draw(true);
541
+ draw({ force: true });
538
542
  // Unclear why, but in Chrome with wboit enabled the first `draw` only clears
539
543
  // the drawingBuffer. Note that in Firefox the drawingBuffer is preserved after
540
544
  // context loss so it is unclear if it behaves the same.
541
- draw(true);
545
+ draw({ force: true });
542
546
  });
543
547
  var resized = new rxjs_1.BehaviorSubject(0);
544
548
  function handleResize(draw) {
@@ -547,7 +551,7 @@ var Canvas3D;
547
551
  updateViewport();
548
552
  syncViewport();
549
553
  if (draw)
550
- requestDraw(true);
554
+ requestDraw();
551
555
  resized.next(+new Date());
552
556
  }
553
557
  return {
@@ -572,7 +576,7 @@ var Canvas3D;
572
576
  reprRenderObjects.clear();
573
577
  scene.clear();
574
578
  helper.debug.clear();
575
- requestDraw(true);
579
+ requestDraw();
576
580
  reprCount.next(reprRenderObjects.size);
577
581
  },
578
582
  syncVisibility: function () {
@@ -584,7 +588,7 @@ var Canvas3D;
584
588
  if (helper.debug.isEnabled)
585
589
  helper.debug.update();
586
590
  }
587
- requestDraw(true);
591
+ requestDraw();
588
592
  },
589
593
  requestDraw: requestDraw,
590
594
  tick: tick,
@@ -681,7 +685,7 @@ var Canvas3D;
681
685
  p.camera.stereo.name = 'off';
682
686
  }
683
687
  if (!doNotRequestDraw) {
684
- requestDraw(true);
688
+ requestDraw();
685
689
  }
686
690
  },
687
691
  getImagePass: function (props) {
@@ -14,6 +14,17 @@ import { Helper } from '../helper/helper';
14
14
  import { StereoCamera } from '../camera/stereo';
15
15
  import { PostprocessingPass, PostprocessingProps } from './postprocessing';
16
16
  import { MarkingProps } from './marking';
17
+ declare type Props = {
18
+ postprocessing: PostprocessingProps;
19
+ marking: MarkingProps;
20
+ transparentBackground: boolean;
21
+ };
22
+ declare type RenderContext = {
23
+ renderer: Renderer;
24
+ camera: Camera | StereoCamera;
25
+ scene: Scene;
26
+ helper: Helper;
27
+ };
17
28
  export declare class DrawPass {
18
29
  private webgl;
19
30
  private readonly drawTarget;
@@ -40,6 +51,7 @@ export declare class DrawPass {
40
51
  private _renderWboit;
41
52
  private _renderBlended;
42
53
  private _render;
43
- render(renderer: Renderer, camera: Camera | StereoCamera, scene: Scene, helper: Helper, toDrawingBuffer: boolean, transparentBackground: boolean, postprocessingProps: PostprocessingProps, markingProps: MarkingProps): void;
54
+ render(ctx: RenderContext, props: Props, toDrawingBuffer: boolean): void;
44
55
  getColorTarget(postprocessingProps: PostprocessingProps): RenderTarget;
45
56
  }
57
+ export {};
@@ -197,23 +197,23 @@ var DrawPass = /** @class */ (function () {
197
197
  }
198
198
  renderer.renderBlendedTransparent(scene.primitives, camera, null);
199
199
  };
200
- DrawPass.prototype._render = function (renderer, camera, scene, helper, toDrawingBuffer, transparentBackground, postprocessingProps, markingProps) {
200
+ DrawPass.prototype._render = function (renderer, camera, scene, helper, toDrawingBuffer, props) {
201
201
  var volumeRendering = scene.volumes.renderables.length > 0;
202
- var postprocessingEnabled = postprocessing_1.PostprocessingPass.isEnabled(postprocessingProps);
203
- var antialiasingEnabled = postprocessing_1.AntialiasingPass.isEnabled(postprocessingProps);
204
- var markingEnabled = marking_1.MarkingPass.isEnabled(markingProps);
202
+ var postprocessingEnabled = postprocessing_1.PostprocessingPass.isEnabled(props.postprocessing);
203
+ var antialiasingEnabled = postprocessing_1.AntialiasingPass.isEnabled(props.postprocessing);
204
+ var markingEnabled = marking_1.MarkingPass.isEnabled(props.marking);
205
205
  var _a = camera.viewport, x = _a.x, y = _a.y, width = _a.width, height = _a.height;
206
206
  renderer.setViewport(x, y, width, height);
207
207
  renderer.update(camera);
208
- if (transparentBackground && !antialiasingEnabled && toDrawingBuffer) {
208
+ if (props.transparentBackground && !antialiasingEnabled && toDrawingBuffer) {
209
209
  this.drawTarget.bind();
210
210
  renderer.clear(false);
211
211
  }
212
212
  if (this.wboitEnabled) {
213
- this._renderWboit(renderer, camera, scene, transparentBackground, postprocessingProps);
213
+ this._renderWboit(renderer, camera, scene, props.transparentBackground, props.postprocessing);
214
214
  }
215
215
  else {
216
- this._renderBlended(renderer, camera, scene, !volumeRendering && !postprocessingEnabled && !antialiasingEnabled && toDrawingBuffer, transparentBackground, postprocessingProps);
216
+ this._renderBlended(renderer, camera, scene, !volumeRendering && !postprocessingEnabled && !antialiasingEnabled && toDrawingBuffer, props.transparentBackground, props.postprocessing);
217
217
  }
218
218
  if (postprocessingEnabled) {
219
219
  this.postprocessing.target.bind();
@@ -225,7 +225,7 @@ var DrawPass = /** @class */ (function () {
225
225
  this.drawTarget.bind();
226
226
  }
227
227
  if (markingEnabled) {
228
- var markingDepthTest = markingProps.ghostEdgeStrength < 1;
228
+ var markingDepthTest = props.marking.ghostEdgeStrength < 1;
229
229
  if (markingDepthTest) {
230
230
  this.marking.depthTarget.bind();
231
231
  renderer.clear(false);
@@ -234,7 +234,7 @@ var DrawPass = /** @class */ (function () {
234
234
  this.marking.maskTarget.bind();
235
235
  renderer.clear(false);
236
236
  renderer.renderMarkingMask(scene.primitives, camera, markingDepthTest ? this.marking.depthTarget.texture : null);
237
- this.marking.update(markingProps);
237
+ this.marking.update(props.marking);
238
238
  this.marking.render(camera.viewport, postprocessingEnabled ? this.postprocessing.target : this.colorTarget);
239
239
  }
240
240
  if (helper.debug.isEnabled) {
@@ -250,7 +250,7 @@ var DrawPass = /** @class */ (function () {
250
250
  renderer.renderBlended(helper.camera.scene, helper.camera.camera, null);
251
251
  }
252
252
  if (antialiasingEnabled) {
253
- this.antialiasing.render(camera, toDrawingBuffer, postprocessingProps);
253
+ this.antialiasing.render(camera, toDrawingBuffer, props.postprocessing);
254
254
  }
255
255
  else if (toDrawingBuffer) {
256
256
  this.drawTarget.bind();
@@ -264,16 +264,17 @@ var DrawPass = /** @class */ (function () {
264
264
  }
265
265
  this.webgl.gl.flush();
266
266
  };
267
- DrawPass.prototype.render = function (renderer, camera, scene, helper, toDrawingBuffer, transparentBackground, postprocessingProps, markingProps) {
268
- renderer.setTransparentBackground(transparentBackground);
267
+ DrawPass.prototype.render = function (ctx, props, toDrawingBuffer) {
268
+ var renderer = ctx.renderer, camera = ctx.camera, scene = ctx.scene, helper = ctx.helper;
269
+ renderer.setTransparentBackground(props.transparentBackground);
269
270
  renderer.setDrawingBufferSize(this.colorTarget.getWidth(), this.colorTarget.getHeight());
270
271
  renderer.setPixelRatio(this.webgl.pixelRatio);
271
272
  if (stereo_1.StereoCamera.is(camera)) {
272
- this._render(renderer, camera.left, scene, helper, toDrawingBuffer, transparentBackground, postprocessingProps, markingProps);
273
- this._render(renderer, camera.right, scene, helper, toDrawingBuffer, transparentBackground, postprocessingProps, markingProps);
273
+ this._render(renderer, camera.left, scene, helper, toDrawingBuffer, props);
274
+ this._render(renderer, camera.right, scene, helper, toDrawingBuffer, props);
274
275
  }
275
276
  else {
276
- this._render(renderer, camera, scene, helper, toDrawingBuffer, transparentBackground, postprocessingProps, markingProps);
277
+ this._render(renderer, camera, scene, helper, toDrawingBuffer, props);
277
278
  }
278
279
  };
279
280
  DrawPass.prototype.getColorTarget = function (postprocessingProps) {
@@ -76,12 +76,13 @@ var ImagePass = /** @class */ (function () {
76
76
  camera_1.Camera.copySnapshot(this._camera.state, this.camera.state);
77
77
  util_1.Viewport.set(this._camera.viewport, 0, 0, this._width, this._height);
78
78
  this._camera.update();
79
+ var ctx = { renderer: this.renderer, camera: this._camera, scene: this.scene, helper: this.helper };
79
80
  if (multi_sample_1.MultiSamplePass.isEnabled(this.props.multiSample)) {
80
- this.multiSampleHelper.render(this.renderer, this._camera, this.scene, this.helper, false, this.props.transparentBackground, this.props);
81
+ this.multiSampleHelper.render(ctx, this.props, false);
81
82
  this._colorTarget = this.multiSamplePass.colorTarget;
82
83
  }
83
84
  else {
84
- this.drawPass.render(this.renderer, this._camera, this.scene, this.helper, false, this.props.transparentBackground, this.props.postprocessing, this.props.marking);
85
+ this.drawPass.render(ctx, this.props, false);
85
86
  this._colorTarget = this.drawPass.getColorTarget(this.props.postprocessing);
86
87
  }
87
88
  };
@@ -20,7 +20,7 @@ var overlay_frag_1 = require("../../mol-gl/shader/marking/overlay.frag");
20
20
  var color_1 = require("../../mol-util/color");
21
21
  var edge_frag_1 = require("../../mol-gl/shader/marking/edge.frag");
22
22
  exports.MarkingParams = {
23
- enabled: param_definition_1.ParamDefinition.Boolean(false),
23
+ enabled: param_definition_1.ParamDefinition.Boolean(true),
24
24
  highlightEdgeColor: param_definition_1.ParamDefinition.Color(color_1.Color.darken(color_1.Color.fromNormalizedRgb(1.0, 0.4, 0.6), 1.0)),
25
25
  selectEdgeColor: param_definition_1.ParamDefinition.Color(color_1.Color.darken(color_1.Color.fromNormalizedRgb(0.2, 1.0, 0.1), 1.0)),
26
26
  edgeScale: param_definition_1.ParamDefinition.Numeric(1, { min: 1, max: 3, step: 1 }, { description: 'Thickness of the edge.' }),
@@ -23,6 +23,13 @@ declare type Props = {
23
23
  multiSample: MultiSampleProps;
24
24
  postprocessing: PostprocessingProps;
25
25
  marking: MarkingProps;
26
+ transparentBackground: boolean;
27
+ };
28
+ declare type RenderContext = {
29
+ renderer: Renderer;
30
+ camera: Camera | StereoCamera;
31
+ scene: Scene;
32
+ helper: Helper;
26
33
  };
27
34
  export declare class MultiSamplePass {
28
35
  private webgl;
@@ -34,7 +41,7 @@ export declare class MultiSamplePass {
34
41
  private compose;
35
42
  constructor(webgl: WebGLContext, drawPass: DrawPass);
36
43
  syncSize(): void;
37
- render(sampleIndex: number, renderer: Renderer, camera: Camera | StereoCamera, scene: Scene, helper: Helper, toDrawingBuffer: boolean, transparentBackground: boolean, props: Props): number;
44
+ render(sampleIndex: number, ctx: RenderContext, props: Props, toDrawingBuffer: boolean, forceOn: boolean): number;
38
45
  private bindOutputTarget;
39
46
  private renderMultiSample;
40
47
  private renderTemporalMultiSample;
@@ -44,7 +51,7 @@ export declare class MultiSampleHelper {
44
51
  private sampleIndex;
45
52
  update(changed: boolean, props: MultiSampleProps): boolean;
46
53
  /** Return `true` while more samples are needed */
47
- render(renderer: Renderer, camera: Camera | StereoCamera, scene: Scene, helper: Helper, toDrawingBuffer: boolean, transparentBackground: boolean, props: Props): boolean;
54
+ render(ctx: RenderContext, props: Props, toDrawingBuffer: boolean, forceOn?: boolean): boolean;
48
55
  constructor(multiSamplePass: MultiSamplePass);
49
56
  }
50
57
  export {};
@@ -58,13 +58,13 @@ var MultiSamplePass = /** @class */ (function () {
58
58
  mol_util_1.ValueCell.update(this.compose.values.uTexSize, linear_algebra_1.Vec2.set(this.compose.values.uTexSize.ref.value, width, height));
59
59
  }
60
60
  };
61
- MultiSamplePass.prototype.render = function (sampleIndex, renderer, camera, scene, helper, toDrawingBuffer, transparentBackground, props) {
62
- if (props.multiSample.mode === 'temporal') {
63
- return this.renderTemporalMultiSample(sampleIndex, renderer, camera, scene, helper, toDrawingBuffer, transparentBackground, props);
61
+ MultiSamplePass.prototype.render = function (sampleIndex, ctx, props, toDrawingBuffer, forceOn) {
62
+ if (props.multiSample.mode === 'temporal' && !forceOn) {
63
+ return this.renderTemporalMultiSample(sampleIndex, ctx, props, toDrawingBuffer);
64
64
  }
65
65
  else {
66
- this.renderMultiSample(renderer, camera, scene, helper, toDrawingBuffer, transparentBackground, props);
67
- return sampleIndex;
66
+ this.renderMultiSample(ctx, toDrawingBuffer, props);
67
+ return -2;
68
68
  }
69
69
  };
70
70
  MultiSamplePass.prototype.bindOutputTarget = function (toDrawingBuffer) {
@@ -75,7 +75,8 @@ var MultiSamplePass = /** @class */ (function () {
75
75
  this.colorTarget.bind();
76
76
  }
77
77
  };
78
- MultiSamplePass.prototype.renderMultiSample = function (renderer, camera, scene, helper, toDrawingBuffer, transparentBackground, props) {
78
+ MultiSamplePass.prototype.renderMultiSample = function (ctx, toDrawingBuffer, props) {
79
+ var camera = ctx.camera;
79
80
  var _a = this, compose = _a.compose, composeTarget = _a.composeTarget, drawPass = _a.drawPass, webgl = _a.webgl;
80
81
  var gl = webgl.gl, state = webgl.state;
81
82
  // based on the Multisample Anti-Aliasing Render Pass
@@ -103,7 +104,7 @@ var MultiSamplePass = /** @class */ (function () {
103
104
  var sampleWeight = baseSampleWeight + roundingRange * uniformCenteredDistribution;
104
105
  mol_util_1.ValueCell.update(compose.values.uWeight, sampleWeight);
105
106
  // render scene
106
- drawPass.render(renderer, camera, scene, helper, false, transparentBackground, props.postprocessing, props.marking);
107
+ drawPass.render(ctx, props, false);
107
108
  // compose rendered scene with compose target
108
109
  composeTarget.bind();
109
110
  state.enable(gl.BLEND);
@@ -130,7 +131,8 @@ var MultiSamplePass = /** @class */ (function () {
130
131
  camera.viewOffset.enabled = false;
131
132
  camera.update();
132
133
  };
133
- MultiSamplePass.prototype.renderTemporalMultiSample = function (sampleIndex, renderer, camera, scene, helper, toDrawingBuffer, transparentBackground, props) {
134
+ MultiSamplePass.prototype.renderTemporalMultiSample = function (sampleIndex, ctx, props, toDrawingBuffer) {
135
+ var camera = ctx.camera;
134
136
  var _a = this, compose = _a.compose, composeTarget = _a.composeTarget, holdTarget = _a.holdTarget, drawPass = _a.drawPass, webgl = _a.webgl;
135
137
  var gl = webgl.gl, state = webgl.state;
136
138
  // based on the Multisample Anti-Aliasing Render Pass
@@ -144,7 +146,7 @@ var MultiSamplePass = /** @class */ (function () {
144
146
  var _b = camera.viewport, x = _b.x, y = _b.y, width = _b.width, height = _b.height;
145
147
  var sampleWeight = 1.0 / offsetList.length;
146
148
  if (sampleIndex === -1) {
147
- drawPass.render(renderer, camera, scene, helper, false, transparentBackground, props.postprocessing, props.marking);
149
+ drawPass.render(ctx, props, false);
148
150
  mol_util_1.ValueCell.update(compose.values.uWeight, 1.0);
149
151
  mol_util_1.ValueCell.update(compose.values.tColor, drawPass.getColorTarget(props.postprocessing).texture);
150
152
  compose.update();
@@ -170,7 +172,7 @@ var MultiSamplePass = /** @class */ (function () {
170
172
  camera_1.Camera.setViewOffset(camera.viewOffset, width, height, offset[0], offset[1], width, height);
171
173
  camera.update();
172
174
  // render scene
173
- drawPass.render(renderer, camera, scene, helper, false, transparentBackground, props.postprocessing, props.marking);
175
+ drawPass.render(ctx, props, false);
174
176
  // compose rendered scene with compose target
175
177
  composeTarget.bind();
176
178
  state.enable(gl.BLEND);
@@ -267,8 +269,8 @@ var MultiSampleHelper = /** @class */ (function () {
267
269
  return props.mode === 'temporal' ? this.sampleIndex !== -2 : false;
268
270
  };
269
271
  /** Return `true` while more samples are needed */
270
- MultiSampleHelper.prototype.render = function (renderer, camera, scene, helper, toDrawingBuffer, transparentBackground, props) {
271
- this.sampleIndex = this.multiSamplePass.render(this.sampleIndex, renderer, camera, scene, helper, toDrawingBuffer, transparentBackground, props);
272
+ MultiSampleHelper.prototype.render = function (ctx, props, toDrawingBuffer, forceOn) {
273
+ this.sampleIndex = this.multiSamplePass.render(this.sampleIndex, ctx, props, toDrawingBuffer, !!forceOn);
272
274
  return this.sampleIndex < 0;
273
275
  };
274
276
  return MultiSampleHelper;
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
8
8
  exports.PickHelper = exports.PickPass = void 0;
9
9
  var linear_algebra_1 = require("../../mol-math/linear-algebra");
10
10
  var misc_1 = require("../../mol-math/misc");
11
- var float_packing_1 = require("../../mol-util/float-packing");
11
+ var number_packing_1 = require("../../mol-util/number-packing");
12
12
  var stereo_1 = require("../camera/stereo");
13
13
  var util_1 = require("../camera/util");
14
14
  var util_2 = require("../camera/util");
@@ -127,11 +127,11 @@ var PickHelper = /** @class */ (function () {
127
127
  PickHelper.prototype.getDepth = function (x, y) {
128
128
  var idx = this.getBufferIdx(x, y);
129
129
  var b = this.depthBuffer;
130
- return (0, float_packing_1.unpackRGBAToDepth)(b[idx], b[idx + 1], b[idx + 2], b[idx + 3]);
130
+ return (0, number_packing_1.unpackRGBAToDepth)(b[idx], b[idx + 1], b[idx + 2], b[idx + 3]);
131
131
  };
132
132
  PickHelper.prototype.getId = function (x, y, buffer) {
133
133
  var idx = this.getBufferIdx(x, y);
134
- return (0, float_packing_1.decodeFloatRGB)(buffer[idx], buffer[idx + 1], buffer[idx + 2]);
134
+ return (0, number_packing_1.unpackRGBToInt)(buffer[idx], buffer[idx + 1], buffer[idx + 2]);
135
135
  };
136
136
  PickHelper.prototype.render = function (camera) {
137
137
  var _a = this, pickX = _a.pickX, pickY = _a.pickY, pickWidth = _a.pickWidth, pickHeight = _a.pickHeight, halfPickWidth = _a.halfPickWidth;
@@ -11,7 +11,7 @@ import { Vec2, Vec3, Vec4 } from '../../mol-math/linear-algebra';
11
11
  import { LocationIterator } from '../util/location-iterator';
12
12
  import { ColorTheme } from '../../mol-theme/color';
13
13
  import { Texture } from '../../mol-gl/webgl/texture';
14
- export declare type ColorType = 'uniform' | 'instance' | 'group' | 'groupInstance' | 'vertex' | 'vertexInstance' | 'volume' | 'volumeInstance';
14
+ export declare type ColorType = 'uniform' | 'instance' | 'group' | 'groupInstance' | 'vertex' | 'vertexInstance' | 'volume' | 'volumeInstance' | 'direct';
15
15
  export declare type ColorData = {
16
16
  uColor: ValueCell<Vec3>;
17
17
  tColor: ValueCell<TextureImage<Uint8Array>>;
@@ -36,6 +36,7 @@ function _createColors(locationIt, positionIt, colorTheme, colorData) {
36
36
  case 'vertexInstance': return createVertexInstanceColor(positionIt, colorTheme.color, colorData);
37
37
  case 'volume': return createGridColor(colorTheme.grid, 'volume', colorData);
38
38
  case 'volumeInstance': return createGridColor(colorTheme.grid, 'volumeInstance', colorData);
39
+ case 'direct': return createDirectColor(colorData);
39
40
  }
40
41
  }
41
42
  function updatePaletteTexture(palette, cell) {
@@ -210,4 +211,25 @@ function createGridColor(grid, type, colorData) {
210
211
  }
211
212
  }
212
213
  exports.createGridColor = createGridColor;
214
+ //
215
+ /** Creates direct color */
216
+ function createDirectColor(colorData) {
217
+ if (colorData) {
218
+ mol_util_1.ValueCell.updateIfChanged(colorData.dColorType, 'direct');
219
+ return colorData;
220
+ }
221
+ else {
222
+ return {
223
+ uColor: mol_util_1.ValueCell.create((0, linear_algebra_1.Vec3)()),
224
+ tColor: mol_util_1.ValueCell.create({ array: new Uint8Array(3), width: 1, height: 1 }),
225
+ tColorGrid: mol_util_1.ValueCell.create((0, texture_1.createNullTexture)()),
226
+ tPalette: mol_util_1.ValueCell.create({ array: new Uint8Array(3), width: 1, height: 1 }),
227
+ uColorTexDim: mol_util_1.ValueCell.create(linear_algebra_1.Vec2.create(1, 1)),
228
+ uColorGridDim: mol_util_1.ValueCell.create(linear_algebra_1.Vec3.create(1, 1, 1)),
229
+ uColorGridTransform: mol_util_1.ValueCell.create(linear_algebra_1.Vec4.create(0, 0, 0, 1)),
230
+ dColorType: mol_util_1.ValueCell.create('direct'),
231
+ dUsePalette: mol_util_1.ValueCell.create(false),
232
+ };
233
+ }
234
+ }
213
235
  //# sourceMappingURL=color-data.js.map
@@ -156,7 +156,7 @@ var Cylinders;
156
156
  var padding = (0, size_data_1.getMaxSize)(size) * props.sizeFactor;
157
157
  var invariantBoundingSphere = geometry_1.Sphere3D.clone(cylinders.boundingSphere);
158
158
  var boundingSphere = (0, util_2.calculateTransformBoundingSphere)(invariantBoundingSphere, transform.aTransform.ref.value, instanceCount);
159
- return (0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)({ aMapping: cylinders.mappingBuffer, aGroup: cylinders.groupBuffer, aStart: cylinders.startBuffer, aEnd: cylinders.endBuffer, aScale: cylinders.scaleBuffer, aCap: cylinders.capBuffer, elements: cylinders.indexBuffer, boundingSphere: mol_util_1.ValueCell.create(boundingSphere), invariantBoundingSphere: mol_util_1.ValueCell.create(invariantBoundingSphere), uInvariantBoundingSphere: mol_util_1.ValueCell.create(linear_algebra_1.Vec4.ofSphere(invariantBoundingSphere)) }, color), size), marker), overpaint), transparency), material), clipping), transform), { padding: mol_util_1.ValueCell.create(padding) }), base_1.BaseGeometry.createValues(props, counts)), { uSizeFactor: mol_util_1.ValueCell.create(props.sizeFactor * props.sizeAspectRatio), uDoubleSided: mol_util_1.ValueCell.create(props.doubleSided), dIgnoreLight: mol_util_1.ValueCell.create(props.ignoreLight), dXrayShaded: mol_util_1.ValueCell.create(props.xrayShaded), uBumpFrequency: mol_util_1.ValueCell.create(props.bumpFrequency), uBumpAmplitude: mol_util_1.ValueCell.create(props.bumpAmplitude) });
159
+ return (0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)({ dGeometryType: mol_util_1.ValueCell.create('cylinders'), aMapping: cylinders.mappingBuffer, aGroup: cylinders.groupBuffer, aStart: cylinders.startBuffer, aEnd: cylinders.endBuffer, aScale: cylinders.scaleBuffer, aCap: cylinders.capBuffer, elements: cylinders.indexBuffer, boundingSphere: mol_util_1.ValueCell.create(boundingSphere), invariantBoundingSphere: mol_util_1.ValueCell.create(invariantBoundingSphere), uInvariantBoundingSphere: mol_util_1.ValueCell.create(linear_algebra_1.Vec4.ofSphere(invariantBoundingSphere)) }, color), size), marker), overpaint), transparency), material), clipping), transform), { padding: mol_util_1.ValueCell.create(padding) }), base_1.BaseGeometry.createValues(props, counts)), { uSizeFactor: mol_util_1.ValueCell.create(props.sizeFactor * props.sizeAspectRatio), uDoubleSided: mol_util_1.ValueCell.create(props.doubleSided), dIgnoreLight: mol_util_1.ValueCell.create(props.ignoreLight), dXrayShaded: mol_util_1.ValueCell.create(props.xrayShaded), uBumpFrequency: mol_util_1.ValueCell.create(props.bumpFrequency), uBumpAmplitude: mol_util_1.ValueCell.create(props.bumpAmplitude) });
160
160
  }
161
161
  function createValuesSimple(cylinders, props, colorValue, sizeValue, transform) {
162
162
  var s = base_1.BaseGeometry.createSimple(colorValue, sizeValue, transform);