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
@@ -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;
@@ -253,16 +253,24 @@ var Canvas3D;
253
253
  changed = helper.camera.mark(loci, action) || changed;
254
254
  reprRenderObjects.forEach(function (_, _repr) { changed = _repr.mark(loci, action) || changed; });
255
255
  }
256
- if (changed && !noDraw) {
257
- scene.update(void 0, true);
258
- helper.handle.scene.update(void 0, true);
259
- helper.camera.scene.update(void 0, true);
260
- var prevPickDirty = pickHelper.dirty;
261
- draw(true);
262
- pickHelper.dirty = prevPickDirty; // marking does not change picking buffers
256
+ if (changed) {
257
+ if (noDraw) {
258
+ // Even with `noDraw` make sure changes will be rendered.
259
+ // Note that with this calling mark (with or without `noDraw`) multiple times
260
+ // during a JS event loop iteration will only result in a single render call.
261
+ forceNextRender = true;
262
+ }
263
+ else {
264
+ scene.update(void 0, true);
265
+ helper.handle.scene.update(void 0, true);
266
+ helper.camera.scene.update(void 0, true);
267
+ var prevPickDirty = pickHelper.dirty;
268
+ draw({ force: true, allowMulti: true });
269
+ pickHelper.dirty = prevPickDirty; // marking does not change picking buffers
270
+ }
263
271
  }
264
272
  }
265
- function render(force) {
273
+ function render(force, allowMulti) {
266
274
  if (webgl.isContextLost)
267
275
  return false;
268
276
  var resized = false;
@@ -286,17 +294,13 @@ var Canvas3D;
286
294
  stereoCamera.update();
287
295
  cam = stereoCamera;
288
296
  }
297
+ var ctx = { renderer: renderer, camera: cam, scene: scene, helper: helper };
289
298
  if (MultiSamplePass.isEnabled(p.multiSample)) {
290
- if (!cameraChanged) {
291
- while (!multiSampleHelper.render(renderer, cam, scene, helper, true, p.transparentBackground, p))
292
- ;
293
- }
294
- else {
295
- multiSampleHelper.render(renderer, cam, scene, helper, true, p.transparentBackground, p);
296
- }
299
+ var forceOn = !cameraChanged && allowMulti && !controls.props.spin;
300
+ multiSampleHelper.render(ctx, p, true, forceOn);
297
301
  }
298
302
  else {
299
- passes.draw.render(renderer, cam, scene, helper, true, p.transparentBackground, p.postprocessing, p.marking);
303
+ passes.draw.render(ctx, p, true);
300
304
  }
301
305
  pickHelper.dirty = true;
302
306
  didRender = true;
@@ -307,15 +311,15 @@ var Canvas3D;
307
311
  var forceDrawAfterAllCommited = false;
308
312
  var currentTime = 0;
309
313
  var drawPaused = false;
310
- function draw(force) {
314
+ function draw(options) {
311
315
  if (drawPaused)
312
316
  return;
313
- if (render(!!force) && notifyDidDraw) {
317
+ if (render(!!(options === null || options === void 0 ? void 0 : options.force), !!(options === null || options === void 0 ? void 0 : options.allowMulti)) && notifyDidDraw) {
314
318
  didDraw.next(now() - startTime);
315
319
  }
316
320
  }
317
- function requestDraw(force) {
318
- forceNextRender = forceNextRender || !!force;
321
+ function requestDraw() {
322
+ forceNextRender = true;
319
323
  }
320
324
  var animationFrameHandle = 0;
321
325
  function tick(t, options) {
@@ -325,8 +329,8 @@ var Canvas3D;
325
329
  if (options === null || options === void 0 ? void 0 : options.manualDraw) {
326
330
  return;
327
331
  }
328
- draw(false);
329
- if (!camera.transition.inTransition && !webgl.isContextLost) {
332
+ draw();
333
+ if (!camera.transition.inTransition && !controls.props.spin && !webgl.isContextLost) {
330
334
  interactionHelper.tick(currentTime);
331
335
  }
332
336
  }
@@ -363,7 +367,7 @@ var Canvas3D;
363
367
  if (forceDrawAfterAllCommited) {
364
368
  if (helper.debug.isEnabled)
365
369
  helper.debug.update();
366
- draw(true);
370
+ draw({ force: true });
367
371
  forceDrawAfterAllCommited = false;
368
372
  }
369
373
  commited.next(now());
@@ -532,11 +536,11 @@ var Canvas3D;
532
536
  }
533
537
  var contextRestoredSub = contextRestored.subscribe(function () {
534
538
  pickHelper.dirty = true;
535
- draw(true);
539
+ draw({ force: true });
536
540
  // Unclear why, but in Chrome with wboit enabled the first `draw` only clears
537
541
  // the drawingBuffer. Note that in Firefox the drawingBuffer is preserved after
538
542
  // context loss so it is unclear if it behaves the same.
539
- draw(true);
543
+ draw({ force: true });
540
544
  });
541
545
  var resized = new BehaviorSubject(0);
542
546
  function handleResize(draw) {
@@ -545,7 +549,7 @@ var Canvas3D;
545
549
  updateViewport();
546
550
  syncViewport();
547
551
  if (draw)
548
- requestDraw(true);
552
+ requestDraw();
549
553
  resized.next(+new Date());
550
554
  }
551
555
  return {
@@ -570,7 +574,7 @@ var Canvas3D;
570
574
  reprRenderObjects.clear();
571
575
  scene.clear();
572
576
  helper.debug.clear();
573
- requestDraw(true);
577
+ requestDraw();
574
578
  reprCount.next(reprRenderObjects.size);
575
579
  },
576
580
  syncVisibility: function () {
@@ -582,7 +586,7 @@ var Canvas3D;
582
586
  if (helper.debug.isEnabled)
583
587
  helper.debug.update();
584
588
  }
585
- requestDraw(true);
589
+ requestDraw();
586
590
  },
587
591
  requestDraw: requestDraw,
588
592
  tick: tick,
@@ -679,7 +683,7 @@ var Canvas3D;
679
683
  p.camera.stereo.name = 'off';
680
684
  }
681
685
  if (!doNotRequestDraw) {
682
- requestDraw(true);
686
+ requestDraw();
683
687
  }
684
688
  },
685
689
  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 {};
@@ -194,23 +194,23 @@ var DrawPass = /** @class */ (function () {
194
194
  }
195
195
  renderer.renderBlendedTransparent(scene.primitives, camera, null);
196
196
  };
197
- DrawPass.prototype._render = function (renderer, camera, scene, helper, toDrawingBuffer, transparentBackground, postprocessingProps, markingProps) {
197
+ DrawPass.prototype._render = function (renderer, camera, scene, helper, toDrawingBuffer, props) {
198
198
  var volumeRendering = scene.volumes.renderables.length > 0;
199
- var postprocessingEnabled = PostprocessingPass.isEnabled(postprocessingProps);
200
- var antialiasingEnabled = AntialiasingPass.isEnabled(postprocessingProps);
201
- var markingEnabled = MarkingPass.isEnabled(markingProps);
199
+ var postprocessingEnabled = PostprocessingPass.isEnabled(props.postprocessing);
200
+ var antialiasingEnabled = AntialiasingPass.isEnabled(props.postprocessing);
201
+ var markingEnabled = MarkingPass.isEnabled(props.marking);
202
202
  var _a = camera.viewport, x = _a.x, y = _a.y, width = _a.width, height = _a.height;
203
203
  renderer.setViewport(x, y, width, height);
204
204
  renderer.update(camera);
205
- if (transparentBackground && !antialiasingEnabled && toDrawingBuffer) {
205
+ if (props.transparentBackground && !antialiasingEnabled && toDrawingBuffer) {
206
206
  this.drawTarget.bind();
207
207
  renderer.clear(false);
208
208
  }
209
209
  if (this.wboitEnabled) {
210
- this._renderWboit(renderer, camera, scene, transparentBackground, postprocessingProps);
210
+ this._renderWboit(renderer, camera, scene, props.transparentBackground, props.postprocessing);
211
211
  }
212
212
  else {
213
- this._renderBlended(renderer, camera, scene, !volumeRendering && !postprocessingEnabled && !antialiasingEnabled && toDrawingBuffer, transparentBackground, postprocessingProps);
213
+ this._renderBlended(renderer, camera, scene, !volumeRendering && !postprocessingEnabled && !antialiasingEnabled && toDrawingBuffer, props.transparentBackground, props.postprocessing);
214
214
  }
215
215
  if (postprocessingEnabled) {
216
216
  this.postprocessing.target.bind();
@@ -222,7 +222,7 @@ var DrawPass = /** @class */ (function () {
222
222
  this.drawTarget.bind();
223
223
  }
224
224
  if (markingEnabled) {
225
- var markingDepthTest = markingProps.ghostEdgeStrength < 1;
225
+ var markingDepthTest = props.marking.ghostEdgeStrength < 1;
226
226
  if (markingDepthTest) {
227
227
  this.marking.depthTarget.bind();
228
228
  renderer.clear(false);
@@ -231,7 +231,7 @@ var DrawPass = /** @class */ (function () {
231
231
  this.marking.maskTarget.bind();
232
232
  renderer.clear(false);
233
233
  renderer.renderMarkingMask(scene.primitives, camera, markingDepthTest ? this.marking.depthTarget.texture : null);
234
- this.marking.update(markingProps);
234
+ this.marking.update(props.marking);
235
235
  this.marking.render(camera.viewport, postprocessingEnabled ? this.postprocessing.target : this.colorTarget);
236
236
  }
237
237
  if (helper.debug.isEnabled) {
@@ -247,7 +247,7 @@ var DrawPass = /** @class */ (function () {
247
247
  renderer.renderBlended(helper.camera.scene, helper.camera.camera, null);
248
248
  }
249
249
  if (antialiasingEnabled) {
250
- this.antialiasing.render(camera, toDrawingBuffer, postprocessingProps);
250
+ this.antialiasing.render(camera, toDrawingBuffer, props.postprocessing);
251
251
  }
252
252
  else if (toDrawingBuffer) {
253
253
  this.drawTarget.bind();
@@ -261,16 +261,17 @@ var DrawPass = /** @class */ (function () {
261
261
  }
262
262
  this.webgl.gl.flush();
263
263
  };
264
- DrawPass.prototype.render = function (renderer, camera, scene, helper, toDrawingBuffer, transparentBackground, postprocessingProps, markingProps) {
265
- renderer.setTransparentBackground(transparentBackground);
264
+ DrawPass.prototype.render = function (ctx, props, toDrawingBuffer) {
265
+ var renderer = ctx.renderer, camera = ctx.camera, scene = ctx.scene, helper = ctx.helper;
266
+ renderer.setTransparentBackground(props.transparentBackground);
266
267
  renderer.setDrawingBufferSize(this.colorTarget.getWidth(), this.colorTarget.getHeight());
267
268
  renderer.setPixelRatio(this.webgl.pixelRatio);
268
269
  if (StereoCamera.is(camera)) {
269
- this._render(renderer, camera.left, scene, helper, toDrawingBuffer, transparentBackground, postprocessingProps, markingProps);
270
- this._render(renderer, camera.right, scene, helper, toDrawingBuffer, transparentBackground, postprocessingProps, markingProps);
270
+ this._render(renderer, camera.left, scene, helper, toDrawingBuffer, props);
271
+ this._render(renderer, camera.right, scene, helper, toDrawingBuffer, props);
271
272
  }
272
273
  else {
273
- this._render(renderer, camera, scene, helper, toDrawingBuffer, transparentBackground, postprocessingProps, markingProps);
274
+ this._render(renderer, camera, scene, helper, toDrawingBuffer, props);
274
275
  }
275
276
  };
276
277
  DrawPass.prototype.getColorTarget = function (postprocessingProps) {
@@ -73,12 +73,13 @@ var ImagePass = /** @class */ (function () {
73
73
  Camera.copySnapshot(this._camera.state, this.camera.state);
74
74
  Viewport.set(this._camera.viewport, 0, 0, this._width, this._height);
75
75
  this._camera.update();
76
+ var ctx = { renderer: this.renderer, camera: this._camera, scene: this.scene, helper: this.helper };
76
77
  if (MultiSamplePass.isEnabled(this.props.multiSample)) {
77
- this.multiSampleHelper.render(this.renderer, this._camera, this.scene, this.helper, false, this.props.transparentBackground, this.props);
78
+ this.multiSampleHelper.render(ctx, this.props, false);
78
79
  this._colorTarget = this.multiSamplePass.colorTarget;
79
80
  }
80
81
  else {
81
- this.drawPass.render(this.renderer, this._camera, this.scene, this.helper, false, this.props.transparentBackground, this.props.postprocessing, this.props.marking);
82
+ this.drawPass.render(ctx, this.props, false);
82
83
  this._colorTarget = this.drawPass.getColorTarget(this.props.postprocessing);
83
84
  }
84
85
  };
@@ -17,7 +17,7 @@ import { overlay_frag } from '../../mol-gl/shader/marking/overlay.frag';
17
17
  import { Color } from '../../mol-util/color';
18
18
  import { edge_frag } from '../../mol-gl/shader/marking/edge.frag';
19
19
  export var MarkingParams = {
20
- enabled: PD.Boolean(false),
20
+ enabled: PD.Boolean(true),
21
21
  highlightEdgeColor: PD.Color(Color.darken(Color.fromNormalizedRgb(1.0, 0.4, 0.6), 1.0)),
22
22
  selectEdgeColor: PD.Color(Color.darken(Color.fromNormalizedRgb(0.2, 1.0, 0.1), 1.0)),
23
23
  edgeScale: PD.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 {};
@@ -55,13 +55,13 @@ var MultiSamplePass = /** @class */ (function () {
55
55
  ValueCell.update(this.compose.values.uTexSize, Vec2.set(this.compose.values.uTexSize.ref.value, width, height));
56
56
  }
57
57
  };
58
- MultiSamplePass.prototype.render = function (sampleIndex, renderer, camera, scene, helper, toDrawingBuffer, transparentBackground, props) {
59
- if (props.multiSample.mode === 'temporal') {
60
- return this.renderTemporalMultiSample(sampleIndex, renderer, camera, scene, helper, toDrawingBuffer, transparentBackground, props);
58
+ MultiSamplePass.prototype.render = function (sampleIndex, ctx, props, toDrawingBuffer, forceOn) {
59
+ if (props.multiSample.mode === 'temporal' && !forceOn) {
60
+ return this.renderTemporalMultiSample(sampleIndex, ctx, props, toDrawingBuffer);
61
61
  }
62
62
  else {
63
- this.renderMultiSample(renderer, camera, scene, helper, toDrawingBuffer, transparentBackground, props);
64
- return sampleIndex;
63
+ this.renderMultiSample(ctx, toDrawingBuffer, props);
64
+ return -2;
65
65
  }
66
66
  };
67
67
  MultiSamplePass.prototype.bindOutputTarget = function (toDrawingBuffer) {
@@ -72,7 +72,8 @@ var MultiSamplePass = /** @class */ (function () {
72
72
  this.colorTarget.bind();
73
73
  }
74
74
  };
75
- MultiSamplePass.prototype.renderMultiSample = function (renderer, camera, scene, helper, toDrawingBuffer, transparentBackground, props) {
75
+ MultiSamplePass.prototype.renderMultiSample = function (ctx, toDrawingBuffer, props) {
76
+ var camera = ctx.camera;
76
77
  var _a = this, compose = _a.compose, composeTarget = _a.composeTarget, drawPass = _a.drawPass, webgl = _a.webgl;
77
78
  var gl = webgl.gl, state = webgl.state;
78
79
  // based on the Multisample Anti-Aliasing Render Pass
@@ -100,7 +101,7 @@ var MultiSamplePass = /** @class */ (function () {
100
101
  var sampleWeight = baseSampleWeight + roundingRange * uniformCenteredDistribution;
101
102
  ValueCell.update(compose.values.uWeight, sampleWeight);
102
103
  // render scene
103
- drawPass.render(renderer, camera, scene, helper, false, transparentBackground, props.postprocessing, props.marking);
104
+ drawPass.render(ctx, props, false);
104
105
  // compose rendered scene with compose target
105
106
  composeTarget.bind();
106
107
  state.enable(gl.BLEND);
@@ -127,7 +128,8 @@ var MultiSamplePass = /** @class */ (function () {
127
128
  camera.viewOffset.enabled = false;
128
129
  camera.update();
129
130
  };
130
- MultiSamplePass.prototype.renderTemporalMultiSample = function (sampleIndex, renderer, camera, scene, helper, toDrawingBuffer, transparentBackground, props) {
131
+ MultiSamplePass.prototype.renderTemporalMultiSample = function (sampleIndex, ctx, props, toDrawingBuffer) {
132
+ var camera = ctx.camera;
131
133
  var _a = this, compose = _a.compose, composeTarget = _a.composeTarget, holdTarget = _a.holdTarget, drawPass = _a.drawPass, webgl = _a.webgl;
132
134
  var gl = webgl.gl, state = webgl.state;
133
135
  // based on the Multisample Anti-Aliasing Render Pass
@@ -141,7 +143,7 @@ var MultiSamplePass = /** @class */ (function () {
141
143
  var _b = camera.viewport, x = _b.x, y = _b.y, width = _b.width, height = _b.height;
142
144
  var sampleWeight = 1.0 / offsetList.length;
143
145
  if (sampleIndex === -1) {
144
- drawPass.render(renderer, camera, scene, helper, false, transparentBackground, props.postprocessing, props.marking);
146
+ drawPass.render(ctx, props, false);
145
147
  ValueCell.update(compose.values.uWeight, 1.0);
146
148
  ValueCell.update(compose.values.tColor, drawPass.getColorTarget(props.postprocessing).texture);
147
149
  compose.update();
@@ -167,7 +169,7 @@ var MultiSamplePass = /** @class */ (function () {
167
169
  Camera.setViewOffset(camera.viewOffset, width, height, offset[0], offset[1], width, height);
168
170
  camera.update();
169
171
  // render scene
170
- drawPass.render(renderer, camera, scene, helper, false, transparentBackground, props.postprocessing, props.marking);
172
+ drawPass.render(ctx, props, false);
171
173
  // compose rendered scene with compose target
172
174
  composeTarget.bind();
173
175
  state.enable(gl.BLEND);
@@ -264,8 +266,8 @@ var MultiSampleHelper = /** @class */ (function () {
264
266
  return props.mode === 'temporal' ? this.sampleIndex !== -2 : false;
265
267
  };
266
268
  /** Return `true` while more samples are needed */
267
- MultiSampleHelper.prototype.render = function (renderer, camera, scene, helper, toDrawingBuffer, transparentBackground, props) {
268
- this.sampleIndex = this.multiSamplePass.render(this.sampleIndex, renderer, camera, scene, helper, toDrawingBuffer, transparentBackground, props);
269
+ MultiSampleHelper.prototype.render = function (ctx, props, toDrawingBuffer, forceOn) {
270
+ this.sampleIndex = this.multiSamplePass.render(this.sampleIndex, ctx, props, toDrawingBuffer, !!forceOn);
269
271
  return this.sampleIndex < 0;
270
272
  };
271
273
  return MultiSampleHelper;
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import { Vec3 } from '../../mol-math/linear-algebra';
7
7
  import { spiral2d } from '../../mol-math/misc';
8
- import { decodeFloatRGB, unpackRGBAToDepth } from '../../mol-util/float-packing';
8
+ import { unpackRGBToInt, unpackRGBAToDepth } from '../../mol-util/number-packing';
9
9
  import { StereoCamera } from '../camera/stereo';
10
10
  import { cameraUnproject } from '../camera/util';
11
11
  import { Viewport } from '../camera/util';
@@ -128,7 +128,7 @@ var PickHelper = /** @class */ (function () {
128
128
  };
129
129
  PickHelper.prototype.getId = function (x, y, buffer) {
130
130
  var idx = this.getBufferIdx(x, y);
131
- return decodeFloatRGB(buffer[idx], buffer[idx + 1], buffer[idx + 2]);
131
+ return unpackRGBToInt(buffer[idx], buffer[idx + 1], buffer[idx + 2]);
132
132
  };
133
133
  PickHelper.prototype.render = function (camera) {
134
134
  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>>;
@@ -32,6 +32,7 @@ function _createColors(locationIt, positionIt, colorTheme, colorData) {
32
32
  case 'vertexInstance': return createVertexInstanceColor(positionIt, colorTheme.color, colorData);
33
33
  case 'volume': return createGridColor(colorTheme.grid, 'volume', colorData);
34
34
  case 'volumeInstance': return createGridColor(colorTheme.grid, 'volumeInstance', colorData);
35
+ case 'direct': return createDirectColor(colorData);
35
36
  }
36
37
  }
37
38
  function updatePaletteTexture(palette, cell) {
@@ -203,4 +204,25 @@ export function createGridColor(grid, type, colorData) {
203
204
  };
204
205
  }
205
206
  }
207
+ //
208
+ /** Creates direct color */
209
+ function createDirectColor(colorData) {
210
+ if (colorData) {
211
+ ValueCell.updateIfChanged(colorData.dColorType, 'direct');
212
+ return colorData;
213
+ }
214
+ else {
215
+ return {
216
+ uColor: ValueCell.create(Vec3()),
217
+ tColor: ValueCell.create({ array: new Uint8Array(3), width: 1, height: 1 }),
218
+ tColorGrid: ValueCell.create(createNullTexture()),
219
+ tPalette: ValueCell.create({ array: new Uint8Array(3), width: 1, height: 1 }),
220
+ uColorTexDim: ValueCell.create(Vec2.create(1, 1)),
221
+ uColorGridDim: ValueCell.create(Vec3.create(1, 1, 1)),
222
+ uColorGridTransform: ValueCell.create(Vec4.create(0, 0, 0, 1)),
223
+ dColorType: ValueCell.create('direct'),
224
+ dUsePalette: ValueCell.create(false),
225
+ };
226
+ }
227
+ }
206
228
  //# sourceMappingURL=color-data.js.map
@@ -153,7 +153,7 @@ export var Cylinders;
153
153
  var padding = getMaxSize(size) * props.sizeFactor;
154
154
  var invariantBoundingSphere = Sphere3D.clone(cylinders.boundingSphere);
155
155
  var boundingSphere = calculateTransformBoundingSphere(invariantBoundingSphere, transform.aTransform.ref.value, instanceCount);
156
- return __assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({ aMapping: cylinders.mappingBuffer, aGroup: cylinders.groupBuffer, aStart: cylinders.startBuffer, aEnd: cylinders.endBuffer, aScale: cylinders.scaleBuffer, aCap: cylinders.capBuffer, elements: cylinders.indexBuffer, boundingSphere: ValueCell.create(boundingSphere), invariantBoundingSphere: ValueCell.create(invariantBoundingSphere), uInvariantBoundingSphere: ValueCell.create(Vec4.ofSphere(invariantBoundingSphere)) }, color), size), marker), overpaint), transparency), material), clipping), transform), { padding: ValueCell.create(padding) }), BaseGeometry.createValues(props, counts)), { uSizeFactor: ValueCell.create(props.sizeFactor * props.sizeAspectRatio), uDoubleSided: ValueCell.create(props.doubleSided), dIgnoreLight: ValueCell.create(props.ignoreLight), dXrayShaded: ValueCell.create(props.xrayShaded), uBumpFrequency: ValueCell.create(props.bumpFrequency), uBumpAmplitude: ValueCell.create(props.bumpAmplitude) });
156
+ return __assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({ dGeometryType: ValueCell.create('cylinders'), aMapping: cylinders.mappingBuffer, aGroup: cylinders.groupBuffer, aStart: cylinders.startBuffer, aEnd: cylinders.endBuffer, aScale: cylinders.scaleBuffer, aCap: cylinders.capBuffer, elements: cylinders.indexBuffer, boundingSphere: ValueCell.create(boundingSphere), invariantBoundingSphere: ValueCell.create(invariantBoundingSphere), uInvariantBoundingSphere: ValueCell.create(Vec4.ofSphere(invariantBoundingSphere)) }, color), size), marker), overpaint), transparency), material), clipping), transform), { padding: ValueCell.create(padding) }), BaseGeometry.createValues(props, counts)), { uSizeFactor: ValueCell.create(props.sizeFactor * props.sizeAspectRatio), uDoubleSided: ValueCell.create(props.doubleSided), dIgnoreLight: ValueCell.create(props.ignoreLight), dXrayShaded: ValueCell.create(props.xrayShaded), uBumpFrequency: ValueCell.create(props.bumpFrequency), uBumpAmplitude: ValueCell.create(props.bumpAmplitude) });
157
157
  }
158
158
  function createValuesSimple(cylinders, props, colorValue, sizeValue, transform) {
159
159
  var s = BaseGeometry.createSimple(colorValue, sizeValue, transform);
@@ -1,11 +1,11 @@
1
1
  /**
2
- * Copyright (c) 2018-2020 mol* contributors, licensed under MIT, See LICENSE file for more info.
2
+ * Copyright (c) 2018-2021 mol* contributors, licensed under MIT, See LICENSE file for more info.
3
3
  *
4
4
  * @author Alexander Rose <alexander.rose@weirdbyte.de>
5
5
  */
6
6
  import { Texture } from '../../../mol-gl/webgl/texture';
7
7
  import { Box3D, Sphere3D } from '../../../mol-math/geometry';
8
- import { Mat4, Vec2, Vec3, Vec4 } from '../../../mol-math/linear-algebra';
8
+ import { Mat4, Vec3, Vec4 } from '../../../mol-math/linear-algebra';
9
9
  import { ValueCell } from '../../../mol-util';
10
10
  import { ParamDefinition as PD } from '../../../mol-util/param-definition';
11
11
  import { GeometryUtils } from '../geometry';
@@ -24,51 +24,18 @@ export interface DirectVolume {
24
24
  readonly unitToCartn: ValueCell<Mat4>;
25
25
  readonly cartnToUnit: ValueCell<Mat4>;
26
26
  readonly packedGroup: ValueCell<boolean>;
27
+ readonly axisOrder: ValueCell<Vec3>;
27
28
  /** Bounding sphere of the volume */
28
29
  readonly boundingSphere: Sphere3D;
29
30
  setBoundingSphere(boundingSphere: Sphere3D): void;
30
31
  }
31
32
  export declare namespace DirectVolume {
32
- function create(bbox: Box3D, gridDimension: Vec3, transform: Mat4, unitToCartn: Mat4, cellDim: Vec3, texture: Texture, stats: Grid['stats'], packedGroup: boolean, directVolume?: DirectVolume): DirectVolume;
33
+ function create(bbox: Box3D, gridDimension: Vec3, transform: Mat4, unitToCartn: Mat4, cellDim: Vec3, texture: Texture, stats: Grid['stats'], packedGroup: boolean, axisOrder: Vec3, directVolume?: DirectVolume): DirectVolume;
33
34
  function createEmpty(directVolume?: DirectVolume): DirectVolume;
34
- function createRenderModeParam(stats?: Grid['stats']): PD.Mapped<PD.NamedParams<PD.Normalize<{
35
- controlPoints: Vec2[];
36
- list: {
37
- kind: "set" | "interpolate";
38
- colors: import("../../../mol-util/color/color").ColorListEntry[];
39
- };
40
- }>, "volume"> | PD.NamedParams<PD.Normalize<{
41
- isoValue: Readonly<{
42
- kind: "absolute";
43
- absoluteValue: number;
44
- }> | Readonly<{
45
- kind: "relative";
46
- relativeValue: number;
47
- }>;
48
- singleLayer: boolean;
49
- }>, "isosurface">>;
50
35
  const Params: {
51
- doubleSided: PD.BooleanParam;
52
- flipSided: PD.BooleanParam;
53
- flatShaded: PD.BooleanParam;
54
36
  ignoreLight: PD.BooleanParam;
55
37
  xrayShaded: PD.BooleanParam;
56
- renderMode: PD.Mapped<PD.NamedParams<PD.Normalize<{
57
- controlPoints: Vec2[];
58
- list: {
59
- kind: "set" | "interpolate";
60
- colors: import("../../../mol-util/color/color").ColorListEntry[];
61
- };
62
- }>, "volume"> | PD.NamedParams<PD.Normalize<{
63
- isoValue: Readonly<{
64
- kind: "absolute";
65
- absoluteValue: number;
66
- }> | Readonly<{
67
- kind: "relative";
68
- relativeValue: number;
69
- }>;
70
- singleLayer: boolean;
71
- }>, "isosurface">>;
38
+ controlPoints: PD.LineGraph;
72
39
  stepsPerCell: PD.Numeric;
73
40
  jumpLength: PD.Numeric;
74
41
  alpha: PD.Numeric;