molstar 4.2.0 → 4.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (339) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +197 -197
  3. package/build/viewer/embedded.html +52 -52
  4. package/build/viewer/index.html +129 -129
  5. package/build/viewer/molstar.js +1 -1
  6. package/build/viewer/molstar.js.LICENSE.txt +9 -0
  7. package/lib/apps/docking-viewer/index.html +36 -36
  8. package/lib/apps/mesoscale-explorer/index.html +100 -100
  9. package/lib/apps/mesoscale-explorer/style.scss +33 -33
  10. package/lib/apps/viewer/app.d.ts +2 -1
  11. package/lib/apps/viewer/app.js +2 -1
  12. package/lib/apps/viewer/embedded.html +52 -52
  13. package/lib/apps/viewer/index.html +129 -129
  14. package/lib/cli/chem-comp-dict/create-ions.js +9 -9
  15. package/lib/cli/chem-comp-dict/create-saccharides.js +9 -9
  16. package/lib/cli/cifschema/util/generate.js +12 -12
  17. package/lib/cli/lipid-params/index.js +9 -9
  18. package/lib/commonjs/apps/viewer/app.d.ts +2 -1
  19. package/lib/commonjs/apps/viewer/app.js +1 -0
  20. package/lib/commonjs/cli/chem-comp-dict/create-ions.js +9 -9
  21. package/lib/commonjs/cli/chem-comp-dict/create-saccharides.js +9 -9
  22. package/lib/commonjs/cli/cifschema/util/generate.js +12 -12
  23. package/lib/commonjs/cli/lipid-params/index.js +9 -9
  24. package/lib/commonjs/examples/alpha-orbitals/example-data.js +160 -160
  25. package/lib/commonjs/extensions/alpha-orbitals/gpu/shader.frag.js +136 -136
  26. package/lib/commonjs/extensions/assembly-symmetry/prop.js +24 -24
  27. package/lib/commonjs/extensions/dnatco/confal-pyramids/behavior.js +5 -5
  28. package/lib/commonjs/extensions/dnatco/ntc-tube/behavior.js +5 -5
  29. package/lib/commonjs/extensions/geo-export/usdz-exporter.js +41 -41
  30. package/lib/commonjs/extensions/meshes/mesh-extension.d.ts +1 -0
  31. package/lib/commonjs/extensions/mp4-export/encoder.js +1 -1
  32. package/lib/commonjs/extensions/mvs/components/annotation-label/representation.d.ts +0 -2
  33. package/lib/commonjs/extensions/mvs/components/custom-label/representation.d.ts +2 -2
  34. package/lib/commonjs/extensions/mvs/tree/mvs/mvs-builder.d.ts +8 -2
  35. package/lib/commonjs/extensions/sb-ncbr/index.d.ts +8 -0
  36. package/lib/commonjs/extensions/sb-ncbr/index.js +14 -1
  37. package/lib/commonjs/extensions/sb-ncbr/tunnels/actions.d.ts +20 -0
  38. package/lib/commonjs/extensions/sb-ncbr/tunnels/actions.js +89 -0
  39. package/lib/commonjs/extensions/sb-ncbr/tunnels/algorithm.d.ts +26 -0
  40. package/lib/commonjs/extensions/sb-ncbr/tunnels/algorithm.js +474 -0
  41. package/lib/commonjs/extensions/sb-ncbr/tunnels/behavior.d.ts +40 -0
  42. package/lib/commonjs/extensions/sb-ncbr/tunnels/behavior.js +96 -0
  43. package/lib/commonjs/extensions/sb-ncbr/tunnels/data-model.d.ts +146 -0
  44. package/lib/commonjs/extensions/sb-ncbr/tunnels/data-model.js +28 -0
  45. package/lib/commonjs/extensions/sb-ncbr/tunnels/examples.d.ts +12 -0
  46. package/lib/commonjs/extensions/sb-ncbr/tunnels/examples.js +54 -0
  47. package/lib/commonjs/extensions/sb-ncbr/tunnels/props.d.ts +19 -0
  48. package/lib/commonjs/extensions/sb-ncbr/tunnels/props.js +26 -0
  49. package/lib/commonjs/extensions/sb-ncbr/tunnels/representation.d.ts +29 -0
  50. package/lib/commonjs/extensions/sb-ncbr/tunnels/representation.js +99 -0
  51. package/lib/commonjs/mol-canvas3d/canvas3d.d.ts +17 -0
  52. package/lib/commonjs/mol-canvas3d/canvas3d.js +4 -0
  53. package/lib/commonjs/mol-canvas3d/passes/dof.d.ts +34 -0
  54. package/lib/commonjs/mol-canvas3d/passes/dof.js +167 -0
  55. package/lib/commonjs/mol-canvas3d/passes/draw.d.ts +2 -0
  56. package/lib/commonjs/mol-canvas3d/passes/draw.js +31 -8
  57. package/lib/commonjs/mol-canvas3d/passes/image.d.ts +8 -0
  58. package/lib/commonjs/mol-canvas3d/passes/postprocessing.d.ts +8 -0
  59. package/lib/commonjs/mol-canvas3d/passes/postprocessing.js +5 -0
  60. package/lib/commonjs/mol-geo/geometry/lines/lines.d.ts +0 -1
  61. package/lib/commonjs/mol-gl/shader/background.frag.js +95 -95
  62. package/lib/commonjs/mol-gl/shader/background.vert.js +11 -11
  63. package/lib/commonjs/mol-gl/shader/blend-back-dpoit.frag.js +13 -13
  64. package/lib/commonjs/mol-gl/shader/bloom/blur.frag.js +28 -28
  65. package/lib/commonjs/mol-gl/shader/bloom/composite.frag.js +33 -33
  66. package/lib/commonjs/mol-gl/shader/bloom/luminosity.frag.js +52 -52
  67. package/lib/commonjs/mol-gl/shader/cas.frag.js +144 -144
  68. package/lib/commonjs/mol-gl/shader/chunks/apply-fog.glsl.js +31 -31
  69. package/lib/commonjs/mol-gl/shader/chunks/apply-interior-color.glsl.js +12 -12
  70. package/lib/commonjs/mol-gl/shader/chunks/apply-light-color.glsl.js +77 -77
  71. package/lib/commonjs/mol-gl/shader/chunks/apply-marker-color.glsl.js +16 -16
  72. package/lib/commonjs/mol-gl/shader/chunks/assign-clipping-varying.glsl.js +8 -8
  73. package/lib/commonjs/mol-gl/shader/chunks/assign-color-varying.glsl.js +140 -140
  74. package/lib/commonjs/mol-gl/shader/chunks/assign-group.glsl.js +6 -6
  75. package/lib/commonjs/mol-gl/shader/chunks/assign-marker-varying.glsl.js +8 -8
  76. package/lib/commonjs/mol-gl/shader/chunks/assign-material-color.glsl.js +112 -112
  77. package/lib/commonjs/mol-gl/shader/chunks/assign-position.glsl.js +14 -14
  78. package/lib/commonjs/mol-gl/shader/chunks/assign-size.glsl.js +18 -18
  79. package/lib/commonjs/mol-gl/shader/chunks/check-picking-alpha.glsl.js +12 -12
  80. package/lib/commonjs/mol-gl/shader/chunks/check-transparency.glsl.js +16 -16
  81. package/lib/commonjs/mol-gl/shader/chunks/clip-instance.glsl.js +7 -7
  82. package/lib/commonjs/mol-gl/shader/chunks/clip-pixel.glsl.js +5 -5
  83. package/lib/commonjs/mol-gl/shader/chunks/color-frag-params.glsl.js +60 -60
  84. package/lib/commonjs/mol-gl/shader/chunks/color-vert-params.glsl.js +122 -122
  85. package/lib/commonjs/mol-gl/shader/chunks/common-clip.glsl.js +104 -104
  86. package/lib/commonjs/mol-gl/shader/chunks/common-frag-params.glsl.js +150 -150
  87. package/lib/commonjs/mol-gl/shader/chunks/common-vert-params.glsl.js +61 -61
  88. package/lib/commonjs/mol-gl/shader/chunks/common.glsl.js +234 -234
  89. package/lib/commonjs/mol-gl/shader/chunks/dpoit-write.glsl.js +62 -62
  90. package/lib/commonjs/mol-gl/shader/chunks/fade-lod.glsl.js +42 -42
  91. package/lib/commonjs/mol-gl/shader/chunks/float-to-rgba.glsl.js +39 -39
  92. package/lib/commonjs/mol-gl/shader/chunks/light-frag-params.glsl.js +127 -127
  93. package/lib/commonjs/mol-gl/shader/chunks/matrix-scale.glsl.js +5 -5
  94. package/lib/commonjs/mol-gl/shader/chunks/normal-frag-params.glsl.js +2 -2
  95. package/lib/commonjs/mol-gl/shader/chunks/read-from-texture.glsl.js +14 -14
  96. package/lib/commonjs/mol-gl/shader/chunks/rgba-to-float.glsl.js +84 -84
  97. package/lib/commonjs/mol-gl/shader/chunks/size-vert-params.glsl.js +11 -11
  98. package/lib/commonjs/mol-gl/shader/chunks/texture3d-from-1d-trilinear.glsl.js +23 -23
  99. package/lib/commonjs/mol-gl/shader/chunks/texture3d-from-2d-linear.glsl.js +17 -17
  100. package/lib/commonjs/mol-gl/shader/chunks/texture3d-from-2d-nearest.glsl.js +8 -8
  101. package/lib/commonjs/mol-gl/shader/chunks/wboit-write.glsl.js +25 -25
  102. package/lib/commonjs/mol-gl/shader/compose.frag.js +12 -12
  103. package/lib/commonjs/mol-gl/shader/compute/color-smoothing/accumulate.frag.js +23 -23
  104. package/lib/commonjs/mol-gl/shader/compute/color-smoothing/accumulate.vert.js +43 -43
  105. package/lib/commonjs/mol-gl/shader/compute/color-smoothing/normalize.frag.js +15 -15
  106. package/lib/commonjs/mol-gl/shader/copy.frag.js +11 -11
  107. package/lib/commonjs/mol-gl/shader/cylinders.frag.js +266 -266
  108. package/lib/commonjs/mol-gl/shader/cylinders.vert.js +89 -89
  109. package/lib/commonjs/mol-gl/shader/depth-merge.frag.js +23 -23
  110. package/lib/commonjs/mol-gl/shader/direct-volume.frag.js +362 -362
  111. package/lib/commonjs/mol-gl/shader/direct-volume.vert.js +41 -41
  112. package/lib/commonjs/mol-gl/shader/dof.frag.d.ts +7 -0
  113. package/lib/commonjs/mol-gl/shader/dof.frag.js +122 -0
  114. package/lib/commonjs/mol-gl/shader/evaluate-dpoit.frag.js +10 -10
  115. package/lib/commonjs/mol-gl/shader/evaluate-wboit.frag.js +17 -17
  116. package/lib/commonjs/mol-gl/shader/fxaa.frag.js +228 -228
  117. package/lib/commonjs/mol-gl/shader/gaussian-density.frag.js +49 -49
  118. package/lib/commonjs/mol-gl/shader/gaussian-density.vert.js +27 -27
  119. package/lib/commonjs/mol-gl/shader/hi-z.frag.js +18 -18
  120. package/lib/commonjs/mol-gl/shader/histogram-pyramid/reduction.frag.js +58 -58
  121. package/lib/commonjs/mol-gl/shader/histogram-pyramid/sum.frag.js +19 -19
  122. package/lib/commonjs/mol-gl/shader/image.frag.js +169 -169
  123. package/lib/commonjs/mol-gl/shader/image.vert.js +21 -21
  124. package/lib/commonjs/mol-gl/shader/lines.frag.js +42 -42
  125. package/lib/commonjs/mol-gl/shader/lines.vert.js +117 -117
  126. package/lib/commonjs/mol-gl/shader/marching-cubes/active-voxels.frag.js +70 -70
  127. package/lib/commonjs/mol-gl/shader/marching-cubes/isosurface.frag.js +311 -311
  128. package/lib/commonjs/mol-gl/shader/marking/edge.frag.js +28 -28
  129. package/lib/commonjs/mol-gl/shader/marking/overlay.frag.js +26 -26
  130. package/lib/commonjs/mol-gl/shader/mesh.frag.js +65 -65
  131. package/lib/commonjs/mol-gl/shader/mesh.vert.js +49 -49
  132. package/lib/commonjs/mol-gl/shader/outlines.frag.js +95 -95
  133. package/lib/commonjs/mol-gl/shader/points.frag.js +59 -59
  134. package/lib/commonjs/mol-gl/shader/points.vert.js +38 -38
  135. package/lib/commonjs/mol-gl/shader/postprocessing.frag.js +150 -150
  136. package/lib/commonjs/mol-gl/shader/quad.vert.js +10 -10
  137. package/lib/commonjs/mol-gl/shader/shadows.frag.js +123 -123
  138. package/lib/commonjs/mol-gl/shader/smaa/blend.frag.js +56 -56
  139. package/lib/commonjs/mol-gl/shader/smaa/blend.vert.js +25 -25
  140. package/lib/commonjs/mol-gl/shader/smaa/edges.frag.js +66 -66
  141. package/lib/commonjs/mol-gl/shader/smaa/edges.vert.js +26 -26
  142. package/lib/commonjs/mol-gl/shader/smaa/weights.frag.js +206 -206
  143. package/lib/commonjs/mol-gl/shader/smaa/weights.vert.js +32 -32
  144. package/lib/commonjs/mol-gl/shader/spheres.frag.js +148 -148
  145. package/lib/commonjs/mol-gl/shader/spheres.vert.js +132 -132
  146. package/lib/commonjs/mol-gl/shader/ssao-blur.frag.js +97 -97
  147. package/lib/commonjs/mol-gl/shader/ssao.frag.js +211 -211
  148. package/lib/commonjs/mol-gl/shader/text.frag.js +85 -85
  149. package/lib/commonjs/mol-gl/shader/text.vert.js +85 -85
  150. package/lib/commonjs/mol-gl/shader/util/grid3d-template.frag.js +46 -46
  151. package/lib/commonjs/mol-gl/shader-code.js +15 -15
  152. package/lib/commonjs/mol-gl/webgl/compat.js +12 -12
  153. package/lib/commonjs/mol-gl/webgl/context.js +1 -0
  154. package/lib/commonjs/mol-gl/webgl/timer.d.ts +1 -1
  155. package/lib/commonjs/mol-gl/webgl/timer.js +8 -1
  156. package/lib/commonjs/mol-math/linear-algebra/3d/minimize-rmsd.js +2 -1
  157. package/lib/commonjs/mol-plugin/animation-loop.d.ts +1 -0
  158. package/lib/commonjs/mol-plugin/behavior/dynamic/volume-streaming/behavior.d.ts +6 -6
  159. package/lib/commonjs/mol-plugin/behavior/dynamic/volume-streaming/model.d.ts +1 -1
  160. package/lib/commonjs/mol-plugin/behavior/dynamic/volume-streaming/transformers.d.ts +3 -3
  161. package/lib/commonjs/mol-plugin-state/animation/built-in/state-snapshots.js +7 -3
  162. package/lib/commonjs/mol-plugin-ui/viewport/simple-settings.js +3 -0
  163. package/lib/commonjs/servers/common/swagger-ui/indexTemplate.js +66 -66
  164. package/lib/commonjs/servers/volume/config.js +5 -5
  165. package/lib/examples/alpha-orbitals/example-data.js +160 -160
  166. package/lib/examples/alpha-orbitals/index.html +72 -72
  167. package/lib/examples/basic-wrapper/index.html +137 -137
  168. package/lib/examples/lighting/index.html +88 -88
  169. package/lib/examples/proteopedia-wrapper/index.html +236 -236
  170. package/lib/extensions/alpha-orbitals/gpu/shader.frag.js +136 -136
  171. package/lib/extensions/assembly-symmetry/prop.js +24 -24
  172. package/lib/extensions/dnatco/confal-pyramids/behavior.js +5 -5
  173. package/lib/extensions/dnatco/ntc-tube/behavior.js +5 -5
  174. package/lib/extensions/geo-export/usdz-exporter.js +41 -41
  175. package/lib/extensions/meshes/mesh-extension.d.ts +1 -0
  176. package/lib/extensions/mp4-export/encoder.js +1 -1
  177. package/lib/extensions/mvs/components/annotation-label/representation.d.ts +0 -2
  178. package/lib/extensions/mvs/components/custom-label/representation.d.ts +2 -2
  179. package/lib/extensions/mvs/tree/mvs/mvs-builder.d.ts +8 -2
  180. package/lib/extensions/sb-ncbr/index.d.ts +8 -0
  181. package/lib/extensions/sb-ncbr/index.js +8 -0
  182. package/lib/extensions/sb-ncbr/tunnels/actions.d.ts +20 -0
  183. package/lib/extensions/sb-ncbr/tunnels/actions.js +86 -0
  184. package/lib/extensions/sb-ncbr/tunnels/algorithm.d.ts +26 -0
  185. package/lib/extensions/sb-ncbr/tunnels/algorithm.js +469 -0
  186. package/lib/extensions/sb-ncbr/tunnels/behavior.d.ts +40 -0
  187. package/lib/extensions/sb-ncbr/tunnels/behavior.js +92 -0
  188. package/lib/extensions/sb-ncbr/tunnels/data-model.d.ts +146 -0
  189. package/lib/extensions/sb-ncbr/tunnels/data-model.js +23 -0
  190. package/lib/extensions/sb-ncbr/tunnels/examples.d.ts +12 -0
  191. package/lib/extensions/sb-ncbr/tunnels/examples.js +49 -0
  192. package/lib/extensions/sb-ncbr/tunnels/props.d.ts +19 -0
  193. package/lib/extensions/sb-ncbr/tunnels/props.js +22 -0
  194. package/lib/extensions/sb-ncbr/tunnels/representation.d.ts +29 -0
  195. package/lib/extensions/sb-ncbr/tunnels/representation.js +96 -0
  196. package/lib/mol-canvas3d/canvas3d.d.ts +17 -0
  197. package/lib/mol-canvas3d/canvas3d.js +4 -0
  198. package/lib/mol-canvas3d/passes/dof.d.ts +34 -0
  199. package/lib/mol-canvas3d/passes/dof.js +163 -0
  200. package/lib/mol-canvas3d/passes/draw.d.ts +2 -0
  201. package/lib/mol-canvas3d/passes/draw.js +31 -8
  202. package/lib/mol-canvas3d/passes/image.d.ts +8 -0
  203. package/lib/mol-canvas3d/passes/postprocessing.d.ts +8 -0
  204. package/lib/mol-canvas3d/passes/postprocessing.js +5 -0
  205. package/lib/mol-geo/geometry/lines/lines.d.ts +0 -1
  206. package/lib/mol-gl/shader/background.frag.js +95 -95
  207. package/lib/mol-gl/shader/background.vert.js +11 -11
  208. package/lib/mol-gl/shader/blend-back-dpoit.frag.js +13 -13
  209. package/lib/mol-gl/shader/bloom/blur.frag.js +28 -28
  210. package/lib/mol-gl/shader/bloom/composite.frag.js +33 -33
  211. package/lib/mol-gl/shader/bloom/luminosity.frag.js +52 -52
  212. package/lib/mol-gl/shader/cas.frag.js +144 -144
  213. package/lib/mol-gl/shader/chunks/apply-fog.glsl.js +31 -31
  214. package/lib/mol-gl/shader/chunks/apply-interior-color.glsl.js +12 -12
  215. package/lib/mol-gl/shader/chunks/apply-light-color.glsl.js +77 -77
  216. package/lib/mol-gl/shader/chunks/apply-marker-color.glsl.js +16 -16
  217. package/lib/mol-gl/shader/chunks/assign-clipping-varying.glsl.js +8 -8
  218. package/lib/mol-gl/shader/chunks/assign-color-varying.glsl.js +140 -140
  219. package/lib/mol-gl/shader/chunks/assign-group.glsl.js +6 -6
  220. package/lib/mol-gl/shader/chunks/assign-marker-varying.glsl.js +8 -8
  221. package/lib/mol-gl/shader/chunks/assign-material-color.glsl.js +112 -112
  222. package/lib/mol-gl/shader/chunks/assign-position.glsl.js +14 -14
  223. package/lib/mol-gl/shader/chunks/assign-size.glsl.js +18 -18
  224. package/lib/mol-gl/shader/chunks/check-picking-alpha.glsl.js +12 -12
  225. package/lib/mol-gl/shader/chunks/check-transparency.glsl.js +16 -16
  226. package/lib/mol-gl/shader/chunks/clip-instance.glsl.js +7 -7
  227. package/lib/mol-gl/shader/chunks/clip-pixel.glsl.js +5 -5
  228. package/lib/mol-gl/shader/chunks/color-frag-params.glsl.js +60 -60
  229. package/lib/mol-gl/shader/chunks/color-vert-params.glsl.js +122 -122
  230. package/lib/mol-gl/shader/chunks/common-clip.glsl.js +104 -104
  231. package/lib/mol-gl/shader/chunks/common-frag-params.glsl.js +150 -150
  232. package/lib/mol-gl/shader/chunks/common-vert-params.glsl.js +61 -61
  233. package/lib/mol-gl/shader/chunks/common.glsl.js +234 -234
  234. package/lib/mol-gl/shader/chunks/dpoit-write.glsl.js +62 -62
  235. package/lib/mol-gl/shader/chunks/fade-lod.glsl.js +42 -42
  236. package/lib/mol-gl/shader/chunks/float-to-rgba.glsl.js +39 -39
  237. package/lib/mol-gl/shader/chunks/light-frag-params.glsl.js +127 -127
  238. package/lib/mol-gl/shader/chunks/matrix-scale.glsl.js +5 -5
  239. package/lib/mol-gl/shader/chunks/normal-frag-params.glsl.js +2 -2
  240. package/lib/mol-gl/shader/chunks/read-from-texture.glsl.js +14 -14
  241. package/lib/mol-gl/shader/chunks/rgba-to-float.glsl.js +84 -84
  242. package/lib/mol-gl/shader/chunks/size-vert-params.glsl.js +11 -11
  243. package/lib/mol-gl/shader/chunks/texture3d-from-1d-trilinear.glsl.js +23 -23
  244. package/lib/mol-gl/shader/chunks/texture3d-from-2d-linear.glsl.js +17 -17
  245. package/lib/mol-gl/shader/chunks/texture3d-from-2d-nearest.glsl.js +8 -8
  246. package/lib/mol-gl/shader/chunks/wboit-write.glsl.js +25 -25
  247. package/lib/mol-gl/shader/compose.frag.js +12 -12
  248. package/lib/mol-gl/shader/compute/color-smoothing/accumulate.frag.js +23 -23
  249. package/lib/mol-gl/shader/compute/color-smoothing/accumulate.vert.js +43 -43
  250. package/lib/mol-gl/shader/compute/color-smoothing/normalize.frag.js +15 -15
  251. package/lib/mol-gl/shader/copy.frag.js +11 -11
  252. package/lib/mol-gl/shader/cylinders.frag.js +266 -266
  253. package/lib/mol-gl/shader/cylinders.vert.js +89 -89
  254. package/lib/mol-gl/shader/depth-merge.frag.js +23 -23
  255. package/lib/mol-gl/shader/direct-volume.frag.js +362 -362
  256. package/lib/mol-gl/shader/direct-volume.vert.js +41 -41
  257. package/lib/mol-gl/shader/dof.frag.d.ts +7 -0
  258. package/lib/mol-gl/shader/dof.frag.js +119 -0
  259. package/lib/mol-gl/shader/evaluate-dpoit.frag.js +10 -10
  260. package/lib/mol-gl/shader/evaluate-wboit.frag.js +17 -17
  261. package/lib/mol-gl/shader/fxaa.frag.js +228 -228
  262. package/lib/mol-gl/shader/gaussian-density.frag.js +49 -49
  263. package/lib/mol-gl/shader/gaussian-density.vert.js +27 -27
  264. package/lib/mol-gl/shader/hi-z.frag.js +18 -18
  265. package/lib/mol-gl/shader/histogram-pyramid/reduction.frag.js +58 -58
  266. package/lib/mol-gl/shader/histogram-pyramid/sum.frag.js +19 -19
  267. package/lib/mol-gl/shader/image.frag.js +169 -169
  268. package/lib/mol-gl/shader/image.vert.js +21 -21
  269. package/lib/mol-gl/shader/lines.frag.js +42 -42
  270. package/lib/mol-gl/shader/lines.vert.js +117 -117
  271. package/lib/mol-gl/shader/marching-cubes/active-voxels.frag.js +70 -70
  272. package/lib/mol-gl/shader/marching-cubes/isosurface.frag.js +311 -311
  273. package/lib/mol-gl/shader/marking/edge.frag.js +28 -28
  274. package/lib/mol-gl/shader/marking/overlay.frag.js +26 -26
  275. package/lib/mol-gl/shader/mesh.frag.js +65 -65
  276. package/lib/mol-gl/shader/mesh.vert.js +49 -49
  277. package/lib/mol-gl/shader/outlines.frag.js +95 -95
  278. package/lib/mol-gl/shader/points.frag.js +59 -59
  279. package/lib/mol-gl/shader/points.vert.js +38 -38
  280. package/lib/mol-gl/shader/postprocessing.frag.js +150 -150
  281. package/lib/mol-gl/shader/quad.vert.js +10 -10
  282. package/lib/mol-gl/shader/shadows.frag.js +123 -123
  283. package/lib/mol-gl/shader/smaa/blend.frag.js +56 -56
  284. package/lib/mol-gl/shader/smaa/blend.vert.js +25 -25
  285. package/lib/mol-gl/shader/smaa/edges.frag.js +66 -66
  286. package/lib/mol-gl/shader/smaa/edges.vert.js +26 -26
  287. package/lib/mol-gl/shader/smaa/weights.frag.js +206 -206
  288. package/lib/mol-gl/shader/smaa/weights.vert.js +32 -32
  289. package/lib/mol-gl/shader/spheres.frag.js +148 -148
  290. package/lib/mol-gl/shader/spheres.vert.js +132 -132
  291. package/lib/mol-gl/shader/ssao-blur.frag.js +97 -97
  292. package/lib/mol-gl/shader/ssao.frag.js +211 -211
  293. package/lib/mol-gl/shader/text.frag.js +85 -85
  294. package/lib/mol-gl/shader/text.vert.js +85 -85
  295. package/lib/mol-gl/shader/util/grid3d-template.frag.js +46 -46
  296. package/lib/mol-gl/shader-code.js +15 -15
  297. package/lib/mol-gl/webgl/compat.js +12 -12
  298. package/lib/mol-gl/webgl/context.js +1 -0
  299. package/lib/mol-gl/webgl/timer.d.ts +1 -1
  300. package/lib/mol-gl/webgl/timer.js +8 -1
  301. package/lib/mol-math/linear-algebra/3d/minimize-rmsd.js +2 -1
  302. package/lib/mol-plugin/animation-loop.d.ts +1 -0
  303. package/lib/mol-plugin/behavior/dynamic/volume-streaming/behavior.d.ts +6 -6
  304. package/lib/mol-plugin/behavior/dynamic/volume-streaming/model.d.ts +1 -1
  305. package/lib/mol-plugin/behavior/dynamic/volume-streaming/transformers.d.ts +3 -3
  306. package/lib/mol-plugin/version.js +2 -2
  307. package/lib/mol-plugin-state/animation/built-in/state-snapshots.js +7 -3
  308. package/lib/mol-plugin-ui/skin/base/base.scss +37 -37
  309. package/lib/mol-plugin-ui/skin/base/components/controls-base.scss +333 -333
  310. package/lib/mol-plugin-ui/skin/base/components/controls.scss +445 -445
  311. package/lib/mol-plugin-ui/skin/base/components/help.scss +27 -27
  312. package/lib/mol-plugin-ui/skin/base/components/line-graph.scss +67 -67
  313. package/lib/mol-plugin-ui/skin/base/components/log.scss +100 -100
  314. package/lib/mol-plugin-ui/skin/base/components/misc.scss +663 -663
  315. package/lib/mol-plugin-ui/skin/base/components/sequence.scss +125 -125
  316. package/lib/mol-plugin-ui/skin/base/components/slider.scss +165 -165
  317. package/lib/mol-plugin-ui/skin/base/components/tasks.scss +99 -99
  318. package/lib/mol-plugin-ui/skin/base/components/toast.scss +83 -83
  319. package/lib/mol-plugin-ui/skin/base/components/transformer.scss +163 -163
  320. package/lib/mol-plugin-ui/skin/base/components/viewport.scss +194 -194
  321. package/lib/mol-plugin-ui/skin/base/layout/common.scss +71 -71
  322. package/lib/mol-plugin-ui/skin/base/layout/controls-landscape.scss +89 -89
  323. package/lib/mol-plugin-ui/skin/base/layout/controls-outside.scss +98 -98
  324. package/lib/mol-plugin-ui/skin/base/layout/controls-portrait.scss +108 -108
  325. package/lib/mol-plugin-ui/skin/base/layout.scss +40 -40
  326. package/lib/mol-plugin-ui/skin/base/logo.scss +12 -12
  327. package/lib/mol-plugin-ui/skin/base/normalize.scss +209 -209
  328. package/lib/mol-plugin-ui/skin/base/ui.scss +40 -40
  329. package/lib/mol-plugin-ui/skin/base/variables.scss +88 -88
  330. package/lib/mol-plugin-ui/skin/blue.scss +1 -1
  331. package/lib/mol-plugin-ui/skin/colors/blue.scss +23 -23
  332. package/lib/mol-plugin-ui/skin/colors/dark.scss +23 -23
  333. package/lib/mol-plugin-ui/skin/colors/light.scss +29 -29
  334. package/lib/mol-plugin-ui/skin/dark.scss +1 -1
  335. package/lib/mol-plugin-ui/skin/light.scss +1 -1
  336. package/lib/mol-plugin-ui/viewport/simple-settings.js +3 -0
  337. package/lib/servers/common/swagger-ui/indexTemplate.js +66 -66
  338. package/lib/servers/volume/config.js +5 -5
  339. package/package.json +196 -195
@@ -7,366 +7,366 @@
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.directVolume_frag = void 0;
10
- exports.directVolume_frag = `
11
- precision highp float;
12
- precision highp int;
13
-
14
- #include common
15
- #include light_frag_params
16
-
17
- #if dClipObjectCount != 0
18
- uniform int uClipObjectType[dClipObjectCount];
19
- uniform bool uClipObjectInvert[dClipObjectCount];
20
- uniform vec3 uClipObjectPosition[dClipObjectCount];
21
- uniform vec4 uClipObjectRotation[dClipObjectCount];
22
- uniform vec3 uClipObjectScale[dClipObjectCount];
23
- #endif
24
- #include common_clip
25
-
26
- #include read_from_texture
27
- #include texture3d_from_1d_trilinear
28
- #include texture3d_from_2d_nearest
29
- #include texture3d_from_2d_linear
30
-
31
- uniform mat4 uProjection, uTransform, uModelView, uModel, uView;
32
- uniform vec3 uCameraDir;
33
-
34
- uniform sampler2D tDepth;
35
- uniform vec2 uDrawingBufferSize;
36
-
37
- varying vec3 vOrigPos;
38
- varying float vInstance;
39
- varying vec4 vBoundingSphere;
40
- varying mat4 vTransform;
41
-
42
- uniform mat4 uInvView;
43
- uniform vec3 uGridDim;
44
- uniform vec3 uBboxSize;
45
- uniform sampler2D tTransferTex;
46
- uniform float uTransferScale;
47
- uniform float uStepScale;
48
- uniform float uJumpLength;
49
-
50
- uniform int uObjectId;
51
- uniform int uVertexCount;
52
- uniform int uInstanceCount;
53
- uniform int uGroupCount;
54
-
55
- #if defined(dColorMarker)
56
- uniform vec3 uHighlightColor;
57
- uniform vec3 uSelectColor;
58
- uniform vec3 uDimColor;
59
- uniform float uHighlightStrength;
60
- uniform float uSelectStrength;
61
- uniform float uDimStrength;
62
- uniform int uMarkerPriority;
63
- uniform float uMarkerAverage;
64
-
65
- uniform float uMarker;
66
- uniform vec2 uMarkerTexDim;
67
- uniform sampler2D tMarker;
68
- #endif
69
-
70
- uniform float uMetalness;
71
- uniform float uRoughness;
72
- uniform float uEmissive;
73
-
74
- uniform bool uFog;
75
- uniform float uFogNear;
76
- uniform float uFogFar;
77
- uniform vec3 uFogColor;
78
-
79
- uniform float uAlpha;
80
- uniform bool uTransparentBackground;
81
- uniform float uXrayEdgeFalloff;
82
- uniform float uExposure;
83
-
84
- uniform int uRenderMask;
85
-
86
- uniform float uNear;
87
- uniform float uFar;
88
- uniform float uIsOrtho;
89
-
90
- uniform vec3 uCellDim;
91
- uniform vec3 uCameraPosition;
92
- uniform mat4 uCartnToUnit;
93
-
94
- #if __VERSION__ != 100
95
- // for webgl1 this is given as a 'define'
96
- uniform int uMaxSteps;
97
- #endif
98
-
99
- #if defined(dGridTexType_2d)
100
- precision highp sampler2D;
101
- uniform sampler2D tGridTex;
102
- uniform vec3 uGridTexDim;
103
- #elif defined(dGridTexType_3d)
104
- precision highp sampler3D;
105
- uniform sampler3D tGridTex;
106
- #endif
107
-
108
- #if defined(dColorType_uniform)
109
- uniform vec3 uColor;
110
- #elif defined(dColorType_texture)
111
- uniform vec2 uColorTexDim;
112
- uniform sampler2D tColor;
113
- #endif
114
-
115
- #ifdef dOverpaint
116
- #if defined(dOverpaintType_groupInstance) || defined(dOverpaintType_vertexInstance)
117
- uniform vec2 uOverpaintTexDim;
118
- uniform sampler2D tOverpaint;
119
- #endif
120
- #endif
121
-
122
- #ifdef dUsePalette
123
- uniform sampler2D tPalette;
124
- #endif
125
-
126
- #if defined(dGridTexType_2d)
127
- vec4 textureVal(vec3 pos) {
128
- return texture3dFrom2dLinear(tGridTex, pos + (vec3(0.5, 0.5, 0.0) / uGridDim), uGridDim, uGridTexDim.xy);
129
- }
130
- vec4 textureGroup(vec3 pos) {
131
- return texture3dFrom2dNearest(tGridTex, pos + (vec3(0.5, 0.5, 0.0) / uGridDim), uGridDim, uGridTexDim.xy);
132
- }
133
- #elif defined(dGridTexType_3d)
134
- vec4 textureVal(vec3 pos) {
135
- return texture(tGridTex, pos + (vec3(0.5) / uGridDim));
136
- }
137
- vec4 textureGroup(vec3 pos) {
138
- return texelFetch(tGridTex, ivec3(pos * uGridDim), 0);
139
- }
140
- #endif
141
-
142
- float calcDepth(const in vec3 pos) {
143
- vec2 clipZW = pos.z * uProjection[2].zw + uProjection[3].zw;
144
- return 0.5 + 0.5 * clipZW.x / clipZW.y;
145
- }
146
-
147
- float transferFunction(float value) {
148
- return texture2D(tTransferTex, vec2(value, 0.0)).a;
149
- }
150
-
151
- float getDepth(const in vec2 coords) {
152
- #ifdef depthTextureSupport
153
- return texture2D(tDepth, coords).r;
154
- #else
155
- return unpackRGBAToDepth(texture2D(tDepth, coords));
156
- #endif
157
- }
158
-
159
- const float gradOffset = 0.5;
160
-
161
- vec3 v3m4(vec3 p, mat4 m) {
162
- return (m * vec4(p, 1.0)).xyz;
163
- }
164
-
165
- float preFogAlphaBlended = 0.0;
166
-
167
- vec4 raymarch(vec3 startLoc, vec3 step, vec3 rayDir) {
168
- mat3 normalMatrix = transpose3(inverse3(mat3(uModelView * vTransform)));
169
- mat4 cartnToUnit = uCartnToUnit * inverse4(vTransform);
170
- #if defined(dClipVariant_pixel) && dClipObjectCount != 0
171
- mat4 modelTransform = uModel * vTransform * uTransform;
172
- #endif
173
- mat4 modelViewTransform = uModelView * vTransform * uTransform;
174
-
175
- vec3 scaleVol = vec3(1.0) / uGridDim;
176
- vec3 pos = startLoc;
177
- vec4 cell;
178
- float prevValue = -1.0;
179
- float value = 0.0;
180
- vec4 src = vec4(0.0);
181
- vec4 dst = vec4(0.0);
182
- float fragmentDepth;
183
-
184
- vec3 posMin = vec3(0.0);
185
- vec3 posMax = vec3(1.0) - vec3(1.0) / uGridDim;
186
-
187
- vec3 unitPos;
188
-
189
- vec3 nextPos;
190
- float nextValue;
191
-
192
- vec4 material;
193
- vec4 overpaint;
194
- float metalness = uMetalness;
195
- float roughness = uRoughness;
196
- float emissive = uEmissive;
197
-
198
- vec3 gradient = vec3(1.0);
199
- vec3 dx = vec3(gradOffset * scaleVol.x, 0.0, 0.0);
200
- vec3 dy = vec3(0.0, gradOffset * scaleVol.y, 0.0);
201
- vec3 dz = vec3(0.0, 0.0, gradOffset * scaleVol.z);
202
-
203
- float maxDist = min(vBoundingSphere.w * 2.0, uFar - uNear);
204
- float maxDistSq = maxDist * maxDist;
205
-
206
- for (int i = 0; i < uMaxSteps; ++i) {
207
- // break when beyond bounding-sphere or far-plane
208
- vec3 distVec = startLoc - pos;
209
- if (dot(distVec, distVec) > maxDistSq) break;
210
-
211
- unitPos = v3m4(pos, cartnToUnit);
212
-
213
- // continue when outside of grid
214
- if (unitPos.x > posMax.x || unitPos.y > posMax.y || unitPos.z > posMax.z ||
215
- unitPos.x < posMin.x || unitPos.y < posMin.y || unitPos.z < posMin.z
216
- ) {
217
- prevValue = value;
218
- pos += step;
219
- continue;
220
- }
221
-
222
- cell = textureVal(unitPos);
223
- value = cell.a; // current voxel value
224
-
225
- if (uJumpLength > 0.0 && value < 0.01) {
226
- nextPos = pos + rayDir * uJumpLength;
227
- nextValue = textureVal(v3m4(nextPos, cartnToUnit)).a;
228
- if (nextValue < 0.01) {
229
- prevValue = nextValue;
230
- pos = nextPos;
231
- continue;
232
- }
233
- }
234
-
235
- vec4 mvPosition = modelViewTransform * vec4(unitPos * uGridDim, 1.0);
236
- if (calcDepth(mvPosition.xyz) > getDepth(gl_FragCoord.xy / uDrawingBufferSize))
237
- break;
238
-
239
- #if defined(dClipVariant_pixel) && dClipObjectCount != 0
240
- vec3 vModelPosition = v3m4(unitPos * uGridDim, modelTransform);
241
- if (clipTest(vec4(vModelPosition, 0.0))) {
242
- prevValue = value;
243
- pos += step;
244
- continue;
245
- }
246
- #endif
247
-
248
- vec3 vViewPosition = mvPosition.xyz;
249
- material.a = transferFunction(value);
250
-
251
- #ifdef dPackedGroup
252
- float group = unpackRGBToInt(textureGroup(floor(unitPos * uGridDim + 0.5) / uGridDim).rgb);
253
- #else
254
- vec3 g = floor(unitPos * uGridDim + 0.5);
255
- // note that we swap x and z because the texture is flipped around y
256
- #if defined(dAxisOrder_012)
257
- float group = g.z + g.y * uGridDim.z + g.x * uGridDim.z * uGridDim.y; // 210
258
- #elif defined(dAxisOrder_021)
259
- float group = g.y + g.z * uGridDim.y + g.x * uGridDim.y * uGridDim.z; // 120
260
- #elif defined(dAxisOrder_102)
261
- float group = g.z + g.x * uGridDim.z + g.y * uGridDim.z * uGridDim.x; // 201
262
- #elif defined(dAxisOrder_120)
263
- float group = g.x + g.z * uGridDim.x + g.y * uGridDim.x * uGridDim.z; // 021
264
- #elif defined(dAxisOrder_201)
265
- float group = g.y + g.x * uGridDim.y + g.z * uGridDim.y * uGridDim.x; // 102
266
- #elif defined(dAxisOrder_210)
267
- float group = g.x + g.y * uGridDim.x + g.z * uGridDim.x * uGridDim.y; // 012
268
- #endif
269
- #endif
270
-
271
- #if defined(dColorType_direct) && defined(dUsePalette)
272
- material.rgb = texture2D(tPalette, vec2(value, 0.0)).rgb;
273
- #elif defined(dColorType_uniform)
274
- material.rgb = uColor;
275
- #elif defined(dColorType_instance)
276
- material.rgb = readFromTexture(tColor, vInstance, uColorTexDim).rgb;
277
- #elif defined(dColorType_group)
278
- material.rgb = readFromTexture(tColor, group, uColorTexDim).rgb;
279
- #elif defined(dColorType_groupInstance)
280
- material.rgb = readFromTexture(tColor, vInstance * float(uGroupCount) + group, uColorTexDim).rgb;
281
- #elif defined(dColorType_vertex)
282
- material.rgb = texture3dFrom1dTrilinear(tColor, unitPos, uGridDim, uColorTexDim, 0.0).rgb;
283
- #elif defined(dColorType_vertexInstance)
284
- material.rgb = texture3dFrom1dTrilinear(tColor, unitPos, uGridDim, uColorTexDim, vInstance * float(uVertexCount)).rgb;
285
- #endif
286
-
287
- #ifdef dOverpaint
288
- #if defined(dOverpaintType_groupInstance)
289
- overpaint = readFromTexture(tOverpaint, vInstance * float(uGroupCount) + group, uOverpaintTexDim);
290
- #elif defined(dOverpaintType_vertexInstance)
291
- overpaint = texture3dFrom1dTrilinear(tOverpaint, unitPos, uGridDim, uOverpaintTexDim, vInstance * float(uVertexCount));
292
- #endif
293
-
294
- material.rgb = mix(material.rgb, overpaint.rgb, overpaint.a);
295
- #endif
296
-
297
- #if defined(dIgnoreLight)
298
- gl_FragColor.rgb = material.rgb;
299
- #else
300
- if (material.a >= 0.01) {
301
- #ifdef dPackedGroup
302
- // compute gradient by central differences
303
- gradient.x = textureVal(unitPos - dx).a - textureVal(unitPos + dx).a;
304
- gradient.y = textureVal(unitPos - dy).a - textureVal(unitPos + dy).a;
305
- gradient.z = textureVal(unitPos - dz).a - textureVal(unitPos + dz).a;
306
- #else
307
- gradient = cell.xyz * 2.0 - 1.0;
308
- #endif
309
- vec3 normal = -normalize(normalMatrix * normalize(gradient));
310
- #include apply_light_color
311
- } else {
312
- gl_FragColor.rgb = material.rgb;
313
- }
314
- #endif
315
-
316
- gl_FragColor.a = material.a * uAlpha * uTransferScale;
317
-
318
- #if defined(dColorMarker)
319
- float marker = uMarker;
320
- if (uMarker == -1.0) {
321
- marker = readFromTexture(tMarker, vInstance * float(uGroupCount) + group, uMarkerTexDim).a;
322
- marker = floor(marker * 255.0 + 0.5); // rounding required to work on some cards on win
323
- }
324
- #endif
325
- #include apply_marker_color
326
-
327
- preFogAlphaBlended = (1.0 - preFogAlphaBlended) * gl_FragColor.a + preFogAlphaBlended;
328
- fragmentDepth = calcDepth(mvPosition.xyz);
329
- #include apply_fog
330
-
331
- src = gl_FragColor;
332
-
333
- if (!uTransparentBackground) {
334
- // done in 'apply_fog' otherwise
335
- src.rgb *= src.a;
336
- }
337
- dst = (1.0 - dst.a) * src + dst; // standard blending
338
-
339
- // break if the color is opaque enough
340
- if (dst.a > 0.95)
341
- break;
342
-
343
- pos += step;
344
- }
345
-
346
- return dst;
347
- }
348
-
349
- // TODO: support float texture for higher precision values???
350
- // TODO: support clipping exclusion texture support
351
-
352
- void main() {
353
- #if defined(dRenderVariant_emissive)
354
- discard;
355
- #else
356
- if (gl_FrontFacing)
357
- discard;
358
-
359
- vec3 rayDir = mix(normalize(vOrigPos - uCameraPosition), uCameraDir, uIsOrtho);
360
- vec3 step = rayDir * uStepScale;
361
-
362
- float boundingSphereNear = distance(vBoundingSphere.xyz, uCameraPosition) - vBoundingSphere.w;
363
- float d = max(uNear, boundingSphereNear) - mix(0.0, distance(vOrigPos, uCameraPosition), uIsOrtho);
364
- vec3 start = mix(uCameraPosition, vOrigPos, uIsOrtho) + (d * rayDir);
365
- gl_FragColor = raymarch(start, step, rayDir);
366
-
367
- float fragmentDepth = calcDepth((uModelView * vec4(start, 1.0)).xyz);
368
- float preFogAlpha = clamp(preFogAlphaBlended, 0.0, 1.0);
369
- #include wboit_write
370
- #endif
371
- }
10
+ exports.directVolume_frag = `
11
+ precision highp float;
12
+ precision highp int;
13
+
14
+ #include common
15
+ #include light_frag_params
16
+
17
+ #if dClipObjectCount != 0
18
+ uniform int uClipObjectType[dClipObjectCount];
19
+ uniform bool uClipObjectInvert[dClipObjectCount];
20
+ uniform vec3 uClipObjectPosition[dClipObjectCount];
21
+ uniform vec4 uClipObjectRotation[dClipObjectCount];
22
+ uniform vec3 uClipObjectScale[dClipObjectCount];
23
+ #endif
24
+ #include common_clip
25
+
26
+ #include read_from_texture
27
+ #include texture3d_from_1d_trilinear
28
+ #include texture3d_from_2d_nearest
29
+ #include texture3d_from_2d_linear
30
+
31
+ uniform mat4 uProjection, uTransform, uModelView, uModel, uView;
32
+ uniform vec3 uCameraDir;
33
+
34
+ uniform sampler2D tDepth;
35
+ uniform vec2 uDrawingBufferSize;
36
+
37
+ varying vec3 vOrigPos;
38
+ varying float vInstance;
39
+ varying vec4 vBoundingSphere;
40
+ varying mat4 vTransform;
41
+
42
+ uniform mat4 uInvView;
43
+ uniform vec3 uGridDim;
44
+ uniform vec3 uBboxSize;
45
+ uniform sampler2D tTransferTex;
46
+ uniform float uTransferScale;
47
+ uniform float uStepScale;
48
+ uniform float uJumpLength;
49
+
50
+ uniform int uObjectId;
51
+ uniform int uVertexCount;
52
+ uniform int uInstanceCount;
53
+ uniform int uGroupCount;
54
+
55
+ #if defined(dColorMarker)
56
+ uniform vec3 uHighlightColor;
57
+ uniform vec3 uSelectColor;
58
+ uniform vec3 uDimColor;
59
+ uniform float uHighlightStrength;
60
+ uniform float uSelectStrength;
61
+ uniform float uDimStrength;
62
+ uniform int uMarkerPriority;
63
+ uniform float uMarkerAverage;
64
+
65
+ uniform float uMarker;
66
+ uniform vec2 uMarkerTexDim;
67
+ uniform sampler2D tMarker;
68
+ #endif
69
+
70
+ uniform float uMetalness;
71
+ uniform float uRoughness;
72
+ uniform float uEmissive;
73
+
74
+ uniform bool uFog;
75
+ uniform float uFogNear;
76
+ uniform float uFogFar;
77
+ uniform vec3 uFogColor;
78
+
79
+ uniform float uAlpha;
80
+ uniform bool uTransparentBackground;
81
+ uniform float uXrayEdgeFalloff;
82
+ uniform float uExposure;
83
+
84
+ uniform int uRenderMask;
85
+
86
+ uniform float uNear;
87
+ uniform float uFar;
88
+ uniform float uIsOrtho;
89
+
90
+ uniform vec3 uCellDim;
91
+ uniform vec3 uCameraPosition;
92
+ uniform mat4 uCartnToUnit;
93
+
94
+ #if __VERSION__ != 100
95
+ // for webgl1 this is given as a 'define'
96
+ uniform int uMaxSteps;
97
+ #endif
98
+
99
+ #if defined(dGridTexType_2d)
100
+ precision highp sampler2D;
101
+ uniform sampler2D tGridTex;
102
+ uniform vec3 uGridTexDim;
103
+ #elif defined(dGridTexType_3d)
104
+ precision highp sampler3D;
105
+ uniform sampler3D tGridTex;
106
+ #endif
107
+
108
+ #if defined(dColorType_uniform)
109
+ uniform vec3 uColor;
110
+ #elif defined(dColorType_texture)
111
+ uniform vec2 uColorTexDim;
112
+ uniform sampler2D tColor;
113
+ #endif
114
+
115
+ #ifdef dOverpaint
116
+ #if defined(dOverpaintType_groupInstance) || defined(dOverpaintType_vertexInstance)
117
+ uniform vec2 uOverpaintTexDim;
118
+ uniform sampler2D tOverpaint;
119
+ #endif
120
+ #endif
121
+
122
+ #ifdef dUsePalette
123
+ uniform sampler2D tPalette;
124
+ #endif
125
+
126
+ #if defined(dGridTexType_2d)
127
+ vec4 textureVal(vec3 pos) {
128
+ return texture3dFrom2dLinear(tGridTex, pos + (vec3(0.5, 0.5, 0.0) / uGridDim), uGridDim, uGridTexDim.xy);
129
+ }
130
+ vec4 textureGroup(vec3 pos) {
131
+ return texture3dFrom2dNearest(tGridTex, pos + (vec3(0.5, 0.5, 0.0) / uGridDim), uGridDim, uGridTexDim.xy);
132
+ }
133
+ #elif defined(dGridTexType_3d)
134
+ vec4 textureVal(vec3 pos) {
135
+ return texture(tGridTex, pos + (vec3(0.5) / uGridDim));
136
+ }
137
+ vec4 textureGroup(vec3 pos) {
138
+ return texelFetch(tGridTex, ivec3(pos * uGridDim), 0);
139
+ }
140
+ #endif
141
+
142
+ float calcDepth(const in vec3 pos) {
143
+ vec2 clipZW = pos.z * uProjection[2].zw + uProjection[3].zw;
144
+ return 0.5 + 0.5 * clipZW.x / clipZW.y;
145
+ }
146
+
147
+ float transferFunction(float value) {
148
+ return texture2D(tTransferTex, vec2(value, 0.0)).a;
149
+ }
150
+
151
+ float getDepth(const in vec2 coords) {
152
+ #ifdef depthTextureSupport
153
+ return texture2D(tDepth, coords).r;
154
+ #else
155
+ return unpackRGBAToDepth(texture2D(tDepth, coords));
156
+ #endif
157
+ }
158
+
159
+ const float gradOffset = 0.5;
160
+
161
+ vec3 v3m4(vec3 p, mat4 m) {
162
+ return (m * vec4(p, 1.0)).xyz;
163
+ }
164
+
165
+ float preFogAlphaBlended = 0.0;
166
+
167
+ vec4 raymarch(vec3 startLoc, vec3 step, vec3 rayDir) {
168
+ mat3 normalMatrix = transpose3(inverse3(mat3(uModelView * vTransform)));
169
+ mat4 cartnToUnit = uCartnToUnit * inverse4(vTransform);
170
+ #if defined(dClipVariant_pixel) && dClipObjectCount != 0
171
+ mat4 modelTransform = uModel * vTransform * uTransform;
172
+ #endif
173
+ mat4 modelViewTransform = uModelView * vTransform * uTransform;
174
+
175
+ vec3 scaleVol = vec3(1.0) / uGridDim;
176
+ vec3 pos = startLoc;
177
+ vec4 cell;
178
+ float prevValue = -1.0;
179
+ float value = 0.0;
180
+ vec4 src = vec4(0.0);
181
+ vec4 dst = vec4(0.0);
182
+ float fragmentDepth;
183
+
184
+ vec3 posMin = vec3(0.0);
185
+ vec3 posMax = vec3(1.0) - vec3(1.0) / uGridDim;
186
+
187
+ vec3 unitPos;
188
+
189
+ vec3 nextPos;
190
+ float nextValue;
191
+
192
+ vec4 material;
193
+ vec4 overpaint;
194
+ float metalness = uMetalness;
195
+ float roughness = uRoughness;
196
+ float emissive = uEmissive;
197
+
198
+ vec3 gradient = vec3(1.0);
199
+ vec3 dx = vec3(gradOffset * scaleVol.x, 0.0, 0.0);
200
+ vec3 dy = vec3(0.0, gradOffset * scaleVol.y, 0.0);
201
+ vec3 dz = vec3(0.0, 0.0, gradOffset * scaleVol.z);
202
+
203
+ float maxDist = min(vBoundingSphere.w * 2.0, uFar - uNear);
204
+ float maxDistSq = maxDist * maxDist;
205
+
206
+ for (int i = 0; i < uMaxSteps; ++i) {
207
+ // break when beyond bounding-sphere or far-plane
208
+ vec3 distVec = startLoc - pos;
209
+ if (dot(distVec, distVec) > maxDistSq) break;
210
+
211
+ unitPos = v3m4(pos, cartnToUnit);
212
+
213
+ // continue when outside of grid
214
+ if (unitPos.x > posMax.x || unitPos.y > posMax.y || unitPos.z > posMax.z ||
215
+ unitPos.x < posMin.x || unitPos.y < posMin.y || unitPos.z < posMin.z
216
+ ) {
217
+ prevValue = value;
218
+ pos += step;
219
+ continue;
220
+ }
221
+
222
+ cell = textureVal(unitPos);
223
+ value = cell.a; // current voxel value
224
+
225
+ if (uJumpLength > 0.0 && value < 0.01) {
226
+ nextPos = pos + rayDir * uJumpLength;
227
+ nextValue = textureVal(v3m4(nextPos, cartnToUnit)).a;
228
+ if (nextValue < 0.01) {
229
+ prevValue = nextValue;
230
+ pos = nextPos;
231
+ continue;
232
+ }
233
+ }
234
+
235
+ vec4 mvPosition = modelViewTransform * vec4(unitPos * uGridDim, 1.0);
236
+ if (calcDepth(mvPosition.xyz) > getDepth(gl_FragCoord.xy / uDrawingBufferSize))
237
+ break;
238
+
239
+ #if defined(dClipVariant_pixel) && dClipObjectCount != 0
240
+ vec3 vModelPosition = v3m4(unitPos * uGridDim, modelTransform);
241
+ if (clipTest(vec4(vModelPosition, 0.0))) {
242
+ prevValue = value;
243
+ pos += step;
244
+ continue;
245
+ }
246
+ #endif
247
+
248
+ vec3 vViewPosition = mvPosition.xyz;
249
+ material.a = transferFunction(value);
250
+
251
+ #ifdef dPackedGroup
252
+ float group = unpackRGBToInt(textureGroup(floor(unitPos * uGridDim + 0.5) / uGridDim).rgb);
253
+ #else
254
+ vec3 g = floor(unitPos * uGridDim + 0.5);
255
+ // note that we swap x and z because the texture is flipped around y
256
+ #if defined(dAxisOrder_012)
257
+ float group = g.z + g.y * uGridDim.z + g.x * uGridDim.z * uGridDim.y; // 210
258
+ #elif defined(dAxisOrder_021)
259
+ float group = g.y + g.z * uGridDim.y + g.x * uGridDim.y * uGridDim.z; // 120
260
+ #elif defined(dAxisOrder_102)
261
+ float group = g.z + g.x * uGridDim.z + g.y * uGridDim.z * uGridDim.x; // 201
262
+ #elif defined(dAxisOrder_120)
263
+ float group = g.x + g.z * uGridDim.x + g.y * uGridDim.x * uGridDim.z; // 021
264
+ #elif defined(dAxisOrder_201)
265
+ float group = g.y + g.x * uGridDim.y + g.z * uGridDim.y * uGridDim.x; // 102
266
+ #elif defined(dAxisOrder_210)
267
+ float group = g.x + g.y * uGridDim.x + g.z * uGridDim.x * uGridDim.y; // 012
268
+ #endif
269
+ #endif
270
+
271
+ #if defined(dColorType_direct) && defined(dUsePalette)
272
+ material.rgb = texture2D(tPalette, vec2(value, 0.0)).rgb;
273
+ #elif defined(dColorType_uniform)
274
+ material.rgb = uColor;
275
+ #elif defined(dColorType_instance)
276
+ material.rgb = readFromTexture(tColor, vInstance, uColorTexDim).rgb;
277
+ #elif defined(dColorType_group)
278
+ material.rgb = readFromTexture(tColor, group, uColorTexDim).rgb;
279
+ #elif defined(dColorType_groupInstance)
280
+ material.rgb = readFromTexture(tColor, vInstance * float(uGroupCount) + group, uColorTexDim).rgb;
281
+ #elif defined(dColorType_vertex)
282
+ material.rgb = texture3dFrom1dTrilinear(tColor, unitPos, uGridDim, uColorTexDim, 0.0).rgb;
283
+ #elif defined(dColorType_vertexInstance)
284
+ material.rgb = texture3dFrom1dTrilinear(tColor, unitPos, uGridDim, uColorTexDim, vInstance * float(uVertexCount)).rgb;
285
+ #endif
286
+
287
+ #ifdef dOverpaint
288
+ #if defined(dOverpaintType_groupInstance)
289
+ overpaint = readFromTexture(tOverpaint, vInstance * float(uGroupCount) + group, uOverpaintTexDim);
290
+ #elif defined(dOverpaintType_vertexInstance)
291
+ overpaint = texture3dFrom1dTrilinear(tOverpaint, unitPos, uGridDim, uOverpaintTexDim, vInstance * float(uVertexCount));
292
+ #endif
293
+
294
+ material.rgb = mix(material.rgb, overpaint.rgb, overpaint.a);
295
+ #endif
296
+
297
+ #if defined(dIgnoreLight)
298
+ gl_FragColor.rgb = material.rgb;
299
+ #else
300
+ if (material.a >= 0.01) {
301
+ #ifdef dPackedGroup
302
+ // compute gradient by central differences
303
+ gradient.x = textureVal(unitPos - dx).a - textureVal(unitPos + dx).a;
304
+ gradient.y = textureVal(unitPos - dy).a - textureVal(unitPos + dy).a;
305
+ gradient.z = textureVal(unitPos - dz).a - textureVal(unitPos + dz).a;
306
+ #else
307
+ gradient = cell.xyz * 2.0 - 1.0;
308
+ #endif
309
+ vec3 normal = -normalize(normalMatrix * normalize(gradient));
310
+ #include apply_light_color
311
+ } else {
312
+ gl_FragColor.rgb = material.rgb;
313
+ }
314
+ #endif
315
+
316
+ gl_FragColor.a = material.a * uAlpha * uTransferScale;
317
+
318
+ #if defined(dColorMarker)
319
+ float marker = uMarker;
320
+ if (uMarker == -1.0) {
321
+ marker = readFromTexture(tMarker, vInstance * float(uGroupCount) + group, uMarkerTexDim).a;
322
+ marker = floor(marker * 255.0 + 0.5); // rounding required to work on some cards on win
323
+ }
324
+ #endif
325
+ #include apply_marker_color
326
+
327
+ preFogAlphaBlended = (1.0 - preFogAlphaBlended) * gl_FragColor.a + preFogAlphaBlended;
328
+ fragmentDepth = calcDepth(mvPosition.xyz);
329
+ #include apply_fog
330
+
331
+ src = gl_FragColor;
332
+
333
+ if (!uTransparentBackground) {
334
+ // done in 'apply_fog' otherwise
335
+ src.rgb *= src.a;
336
+ }
337
+ dst = (1.0 - dst.a) * src + dst; // standard blending
338
+
339
+ // break if the color is opaque enough
340
+ if (dst.a > 0.95)
341
+ break;
342
+
343
+ pos += step;
344
+ }
345
+
346
+ return dst;
347
+ }
348
+
349
+ // TODO: support float texture for higher precision values???
350
+ // TODO: support clipping exclusion texture support
351
+
352
+ void main() {
353
+ #if defined(dRenderVariant_emissive)
354
+ discard;
355
+ #else
356
+ if (gl_FrontFacing)
357
+ discard;
358
+
359
+ vec3 rayDir = mix(normalize(vOrigPos - uCameraPosition), uCameraDir, uIsOrtho);
360
+ vec3 step = rayDir * uStepScale;
361
+
362
+ float boundingSphereNear = distance(vBoundingSphere.xyz, uCameraPosition) - vBoundingSphere.w;
363
+ float d = max(uNear, boundingSphereNear) - mix(0.0, distance(vOrigPos, uCameraPosition), uIsOrtho);
364
+ vec3 start = mix(uCameraPosition, vOrigPos, uIsOrtho) + (d * rayDir);
365
+ gl_FragColor = raymarch(start, step, rayDir);
366
+
367
+ float fragmentDepth = calcDepth((uModelView * vec4(start, 1.0)).xyz);
368
+ float preFogAlpha = clamp(preFogAlphaBlended, 0.0, 1.0);
369
+ #include wboit_write
370
+ #endif
371
+ }
372
372
  `;