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
@@ -4,366 +4,366 @@
4
4
  * @author Alexander Rose <alexander.rose@weirdbyte.de>
5
5
  * @author Michael Krone <michael.krone@uni-tuebingen.de>
6
6
  */
7
- export const directVolume_frag = `
8
- precision highp float;
9
- precision highp int;
10
-
11
- #include common
12
- #include light_frag_params
13
-
14
- #if dClipObjectCount != 0
15
- uniform int uClipObjectType[dClipObjectCount];
16
- uniform bool uClipObjectInvert[dClipObjectCount];
17
- uniform vec3 uClipObjectPosition[dClipObjectCount];
18
- uniform vec4 uClipObjectRotation[dClipObjectCount];
19
- uniform vec3 uClipObjectScale[dClipObjectCount];
20
- #endif
21
- #include common_clip
22
-
23
- #include read_from_texture
24
- #include texture3d_from_1d_trilinear
25
- #include texture3d_from_2d_nearest
26
- #include texture3d_from_2d_linear
27
-
28
- uniform mat4 uProjection, uTransform, uModelView, uModel, uView;
29
- uniform vec3 uCameraDir;
30
-
31
- uniform sampler2D tDepth;
32
- uniform vec2 uDrawingBufferSize;
33
-
34
- varying vec3 vOrigPos;
35
- varying float vInstance;
36
- varying vec4 vBoundingSphere;
37
- varying mat4 vTransform;
38
-
39
- uniform mat4 uInvView;
40
- uniform vec3 uGridDim;
41
- uniform vec3 uBboxSize;
42
- uniform sampler2D tTransferTex;
43
- uniform float uTransferScale;
44
- uniform float uStepScale;
45
- uniform float uJumpLength;
46
-
47
- uniform int uObjectId;
48
- uniform int uVertexCount;
49
- uniform int uInstanceCount;
50
- uniform int uGroupCount;
51
-
52
- #if defined(dColorMarker)
53
- uniform vec3 uHighlightColor;
54
- uniform vec3 uSelectColor;
55
- uniform vec3 uDimColor;
56
- uniform float uHighlightStrength;
57
- uniform float uSelectStrength;
58
- uniform float uDimStrength;
59
- uniform int uMarkerPriority;
60
- uniform float uMarkerAverage;
61
-
62
- uniform float uMarker;
63
- uniform vec2 uMarkerTexDim;
64
- uniform sampler2D tMarker;
65
- #endif
66
-
67
- uniform float uMetalness;
68
- uniform float uRoughness;
69
- uniform float uEmissive;
70
-
71
- uniform bool uFog;
72
- uniform float uFogNear;
73
- uniform float uFogFar;
74
- uniform vec3 uFogColor;
75
-
76
- uniform float uAlpha;
77
- uniform bool uTransparentBackground;
78
- uniform float uXrayEdgeFalloff;
79
- uniform float uExposure;
80
-
81
- uniform int uRenderMask;
82
-
83
- uniform float uNear;
84
- uniform float uFar;
85
- uniform float uIsOrtho;
86
-
87
- uniform vec3 uCellDim;
88
- uniform vec3 uCameraPosition;
89
- uniform mat4 uCartnToUnit;
90
-
91
- #if __VERSION__ != 100
92
- // for webgl1 this is given as a 'define'
93
- uniform int uMaxSteps;
94
- #endif
95
-
96
- #if defined(dGridTexType_2d)
97
- precision highp sampler2D;
98
- uniform sampler2D tGridTex;
99
- uniform vec3 uGridTexDim;
100
- #elif defined(dGridTexType_3d)
101
- precision highp sampler3D;
102
- uniform sampler3D tGridTex;
103
- #endif
104
-
105
- #if defined(dColorType_uniform)
106
- uniform vec3 uColor;
107
- #elif defined(dColorType_texture)
108
- uniform vec2 uColorTexDim;
109
- uniform sampler2D tColor;
110
- #endif
111
-
112
- #ifdef dOverpaint
113
- #if defined(dOverpaintType_groupInstance) || defined(dOverpaintType_vertexInstance)
114
- uniform vec2 uOverpaintTexDim;
115
- uniform sampler2D tOverpaint;
116
- #endif
117
- #endif
118
-
119
- #ifdef dUsePalette
120
- uniform sampler2D tPalette;
121
- #endif
122
-
123
- #if defined(dGridTexType_2d)
124
- vec4 textureVal(vec3 pos) {
125
- return texture3dFrom2dLinear(tGridTex, pos + (vec3(0.5, 0.5, 0.0) / uGridDim), uGridDim, uGridTexDim.xy);
126
- }
127
- vec4 textureGroup(vec3 pos) {
128
- return texture3dFrom2dNearest(tGridTex, pos + (vec3(0.5, 0.5, 0.0) / uGridDim), uGridDim, uGridTexDim.xy);
129
- }
130
- #elif defined(dGridTexType_3d)
131
- vec4 textureVal(vec3 pos) {
132
- return texture(tGridTex, pos + (vec3(0.5) / uGridDim));
133
- }
134
- vec4 textureGroup(vec3 pos) {
135
- return texelFetch(tGridTex, ivec3(pos * uGridDim), 0);
136
- }
137
- #endif
138
-
139
- float calcDepth(const in vec3 pos) {
140
- vec2 clipZW = pos.z * uProjection[2].zw + uProjection[3].zw;
141
- return 0.5 + 0.5 * clipZW.x / clipZW.y;
142
- }
143
-
144
- float transferFunction(float value) {
145
- return texture2D(tTransferTex, vec2(value, 0.0)).a;
146
- }
147
-
148
- float getDepth(const in vec2 coords) {
149
- #ifdef depthTextureSupport
150
- return texture2D(tDepth, coords).r;
151
- #else
152
- return unpackRGBAToDepth(texture2D(tDepth, coords));
153
- #endif
154
- }
155
-
156
- const float gradOffset = 0.5;
157
-
158
- vec3 v3m4(vec3 p, mat4 m) {
159
- return (m * vec4(p, 1.0)).xyz;
160
- }
161
-
162
- float preFogAlphaBlended = 0.0;
163
-
164
- vec4 raymarch(vec3 startLoc, vec3 step, vec3 rayDir) {
165
- mat3 normalMatrix = transpose3(inverse3(mat3(uModelView * vTransform)));
166
- mat4 cartnToUnit = uCartnToUnit * inverse4(vTransform);
167
- #if defined(dClipVariant_pixel) && dClipObjectCount != 0
168
- mat4 modelTransform = uModel * vTransform * uTransform;
169
- #endif
170
- mat4 modelViewTransform = uModelView * vTransform * uTransform;
171
-
172
- vec3 scaleVol = vec3(1.0) / uGridDim;
173
- vec3 pos = startLoc;
174
- vec4 cell;
175
- float prevValue = -1.0;
176
- float value = 0.0;
177
- vec4 src = vec4(0.0);
178
- vec4 dst = vec4(0.0);
179
- float fragmentDepth;
180
-
181
- vec3 posMin = vec3(0.0);
182
- vec3 posMax = vec3(1.0) - vec3(1.0) / uGridDim;
183
-
184
- vec3 unitPos;
185
-
186
- vec3 nextPos;
187
- float nextValue;
188
-
189
- vec4 material;
190
- vec4 overpaint;
191
- float metalness = uMetalness;
192
- float roughness = uRoughness;
193
- float emissive = uEmissive;
194
-
195
- vec3 gradient = vec3(1.0);
196
- vec3 dx = vec3(gradOffset * scaleVol.x, 0.0, 0.0);
197
- vec3 dy = vec3(0.0, gradOffset * scaleVol.y, 0.0);
198
- vec3 dz = vec3(0.0, 0.0, gradOffset * scaleVol.z);
199
-
200
- float maxDist = min(vBoundingSphere.w * 2.0, uFar - uNear);
201
- float maxDistSq = maxDist * maxDist;
202
-
203
- for (int i = 0; i < uMaxSteps; ++i) {
204
- // break when beyond bounding-sphere or far-plane
205
- vec3 distVec = startLoc - pos;
206
- if (dot(distVec, distVec) > maxDistSq) break;
207
-
208
- unitPos = v3m4(pos, cartnToUnit);
209
-
210
- // continue when outside of grid
211
- if (unitPos.x > posMax.x || unitPos.y > posMax.y || unitPos.z > posMax.z ||
212
- unitPos.x < posMin.x || unitPos.y < posMin.y || unitPos.z < posMin.z
213
- ) {
214
- prevValue = value;
215
- pos += step;
216
- continue;
217
- }
218
-
219
- cell = textureVal(unitPos);
220
- value = cell.a; // current voxel value
221
-
222
- if (uJumpLength > 0.0 && value < 0.01) {
223
- nextPos = pos + rayDir * uJumpLength;
224
- nextValue = textureVal(v3m4(nextPos, cartnToUnit)).a;
225
- if (nextValue < 0.01) {
226
- prevValue = nextValue;
227
- pos = nextPos;
228
- continue;
229
- }
230
- }
231
-
232
- vec4 mvPosition = modelViewTransform * vec4(unitPos * uGridDim, 1.0);
233
- if (calcDepth(mvPosition.xyz) > getDepth(gl_FragCoord.xy / uDrawingBufferSize))
234
- break;
235
-
236
- #if defined(dClipVariant_pixel) && dClipObjectCount != 0
237
- vec3 vModelPosition = v3m4(unitPos * uGridDim, modelTransform);
238
- if (clipTest(vec4(vModelPosition, 0.0))) {
239
- prevValue = value;
240
- pos += step;
241
- continue;
242
- }
243
- #endif
244
-
245
- vec3 vViewPosition = mvPosition.xyz;
246
- material.a = transferFunction(value);
247
-
248
- #ifdef dPackedGroup
249
- float group = unpackRGBToInt(textureGroup(floor(unitPos * uGridDim + 0.5) / uGridDim).rgb);
250
- #else
251
- vec3 g = floor(unitPos * uGridDim + 0.5);
252
- // note that we swap x and z because the texture is flipped around y
253
- #if defined(dAxisOrder_012)
254
- float group = g.z + g.y * uGridDim.z + g.x * uGridDim.z * uGridDim.y; // 210
255
- #elif defined(dAxisOrder_021)
256
- float group = g.y + g.z * uGridDim.y + g.x * uGridDim.y * uGridDim.z; // 120
257
- #elif defined(dAxisOrder_102)
258
- float group = g.z + g.x * uGridDim.z + g.y * uGridDim.z * uGridDim.x; // 201
259
- #elif defined(dAxisOrder_120)
260
- float group = g.x + g.z * uGridDim.x + g.y * uGridDim.x * uGridDim.z; // 021
261
- #elif defined(dAxisOrder_201)
262
- float group = g.y + g.x * uGridDim.y + g.z * uGridDim.y * uGridDim.x; // 102
263
- #elif defined(dAxisOrder_210)
264
- float group = g.x + g.y * uGridDim.x + g.z * uGridDim.x * uGridDim.y; // 012
265
- #endif
266
- #endif
267
-
268
- #if defined(dColorType_direct) && defined(dUsePalette)
269
- material.rgb = texture2D(tPalette, vec2(value, 0.0)).rgb;
270
- #elif defined(dColorType_uniform)
271
- material.rgb = uColor;
272
- #elif defined(dColorType_instance)
273
- material.rgb = readFromTexture(tColor, vInstance, uColorTexDim).rgb;
274
- #elif defined(dColorType_group)
275
- material.rgb = readFromTexture(tColor, group, uColorTexDim).rgb;
276
- #elif defined(dColorType_groupInstance)
277
- material.rgb = readFromTexture(tColor, vInstance * float(uGroupCount) + group, uColorTexDim).rgb;
278
- #elif defined(dColorType_vertex)
279
- material.rgb = texture3dFrom1dTrilinear(tColor, unitPos, uGridDim, uColorTexDim, 0.0).rgb;
280
- #elif defined(dColorType_vertexInstance)
281
- material.rgb = texture3dFrom1dTrilinear(tColor, unitPos, uGridDim, uColorTexDim, vInstance * float(uVertexCount)).rgb;
282
- #endif
283
-
284
- #ifdef dOverpaint
285
- #if defined(dOverpaintType_groupInstance)
286
- overpaint = readFromTexture(tOverpaint, vInstance * float(uGroupCount) + group, uOverpaintTexDim);
287
- #elif defined(dOverpaintType_vertexInstance)
288
- overpaint = texture3dFrom1dTrilinear(tOverpaint, unitPos, uGridDim, uOverpaintTexDim, vInstance * float(uVertexCount));
289
- #endif
290
-
291
- material.rgb = mix(material.rgb, overpaint.rgb, overpaint.a);
292
- #endif
293
-
294
- #if defined(dIgnoreLight)
295
- gl_FragColor.rgb = material.rgb;
296
- #else
297
- if (material.a >= 0.01) {
298
- #ifdef dPackedGroup
299
- // compute gradient by central differences
300
- gradient.x = textureVal(unitPos - dx).a - textureVal(unitPos + dx).a;
301
- gradient.y = textureVal(unitPos - dy).a - textureVal(unitPos + dy).a;
302
- gradient.z = textureVal(unitPos - dz).a - textureVal(unitPos + dz).a;
303
- #else
304
- gradient = cell.xyz * 2.0 - 1.0;
305
- #endif
306
- vec3 normal = -normalize(normalMatrix * normalize(gradient));
307
- #include apply_light_color
308
- } else {
309
- gl_FragColor.rgb = material.rgb;
310
- }
311
- #endif
312
-
313
- gl_FragColor.a = material.a * uAlpha * uTransferScale;
314
-
315
- #if defined(dColorMarker)
316
- float marker = uMarker;
317
- if (uMarker == -1.0) {
318
- marker = readFromTexture(tMarker, vInstance * float(uGroupCount) + group, uMarkerTexDim).a;
319
- marker = floor(marker * 255.0 + 0.5); // rounding required to work on some cards on win
320
- }
321
- #endif
322
- #include apply_marker_color
323
-
324
- preFogAlphaBlended = (1.0 - preFogAlphaBlended) * gl_FragColor.a + preFogAlphaBlended;
325
- fragmentDepth = calcDepth(mvPosition.xyz);
326
- #include apply_fog
327
-
328
- src = gl_FragColor;
329
-
330
- if (!uTransparentBackground) {
331
- // done in 'apply_fog' otherwise
332
- src.rgb *= src.a;
333
- }
334
- dst = (1.0 - dst.a) * src + dst; // standard blending
335
-
336
- // break if the color is opaque enough
337
- if (dst.a > 0.95)
338
- break;
339
-
340
- pos += step;
341
- }
342
-
343
- return dst;
344
- }
345
-
346
- // TODO: support float texture for higher precision values???
347
- // TODO: support clipping exclusion texture support
348
-
349
- void main() {
350
- #if defined(dRenderVariant_emissive)
351
- discard;
352
- #else
353
- if (gl_FrontFacing)
354
- discard;
355
-
356
- vec3 rayDir = mix(normalize(vOrigPos - uCameraPosition), uCameraDir, uIsOrtho);
357
- vec3 step = rayDir * uStepScale;
358
-
359
- float boundingSphereNear = distance(vBoundingSphere.xyz, uCameraPosition) - vBoundingSphere.w;
360
- float d = max(uNear, boundingSphereNear) - mix(0.0, distance(vOrigPos, uCameraPosition), uIsOrtho);
361
- vec3 start = mix(uCameraPosition, vOrigPos, uIsOrtho) + (d * rayDir);
362
- gl_FragColor = raymarch(start, step, rayDir);
363
-
364
- float fragmentDepth = calcDepth((uModelView * vec4(start, 1.0)).xyz);
365
- float preFogAlpha = clamp(preFogAlphaBlended, 0.0, 1.0);
366
- #include wboit_write
367
- #endif
368
- }
7
+ export const directVolume_frag = `
8
+ precision highp float;
9
+ precision highp int;
10
+
11
+ #include common
12
+ #include light_frag_params
13
+
14
+ #if dClipObjectCount != 0
15
+ uniform int uClipObjectType[dClipObjectCount];
16
+ uniform bool uClipObjectInvert[dClipObjectCount];
17
+ uniform vec3 uClipObjectPosition[dClipObjectCount];
18
+ uniform vec4 uClipObjectRotation[dClipObjectCount];
19
+ uniform vec3 uClipObjectScale[dClipObjectCount];
20
+ #endif
21
+ #include common_clip
22
+
23
+ #include read_from_texture
24
+ #include texture3d_from_1d_trilinear
25
+ #include texture3d_from_2d_nearest
26
+ #include texture3d_from_2d_linear
27
+
28
+ uniform mat4 uProjection, uTransform, uModelView, uModel, uView;
29
+ uniform vec3 uCameraDir;
30
+
31
+ uniform sampler2D tDepth;
32
+ uniform vec2 uDrawingBufferSize;
33
+
34
+ varying vec3 vOrigPos;
35
+ varying float vInstance;
36
+ varying vec4 vBoundingSphere;
37
+ varying mat4 vTransform;
38
+
39
+ uniform mat4 uInvView;
40
+ uniform vec3 uGridDim;
41
+ uniform vec3 uBboxSize;
42
+ uniform sampler2D tTransferTex;
43
+ uniform float uTransferScale;
44
+ uniform float uStepScale;
45
+ uniform float uJumpLength;
46
+
47
+ uniform int uObjectId;
48
+ uniform int uVertexCount;
49
+ uniform int uInstanceCount;
50
+ uniform int uGroupCount;
51
+
52
+ #if defined(dColorMarker)
53
+ uniform vec3 uHighlightColor;
54
+ uniform vec3 uSelectColor;
55
+ uniform vec3 uDimColor;
56
+ uniform float uHighlightStrength;
57
+ uniform float uSelectStrength;
58
+ uniform float uDimStrength;
59
+ uniform int uMarkerPriority;
60
+ uniform float uMarkerAverage;
61
+
62
+ uniform float uMarker;
63
+ uniform vec2 uMarkerTexDim;
64
+ uniform sampler2D tMarker;
65
+ #endif
66
+
67
+ uniform float uMetalness;
68
+ uniform float uRoughness;
69
+ uniform float uEmissive;
70
+
71
+ uniform bool uFog;
72
+ uniform float uFogNear;
73
+ uniform float uFogFar;
74
+ uniform vec3 uFogColor;
75
+
76
+ uniform float uAlpha;
77
+ uniform bool uTransparentBackground;
78
+ uniform float uXrayEdgeFalloff;
79
+ uniform float uExposure;
80
+
81
+ uniform int uRenderMask;
82
+
83
+ uniform float uNear;
84
+ uniform float uFar;
85
+ uniform float uIsOrtho;
86
+
87
+ uniform vec3 uCellDim;
88
+ uniform vec3 uCameraPosition;
89
+ uniform mat4 uCartnToUnit;
90
+
91
+ #if __VERSION__ != 100
92
+ // for webgl1 this is given as a 'define'
93
+ uniform int uMaxSteps;
94
+ #endif
95
+
96
+ #if defined(dGridTexType_2d)
97
+ precision highp sampler2D;
98
+ uniform sampler2D tGridTex;
99
+ uniform vec3 uGridTexDim;
100
+ #elif defined(dGridTexType_3d)
101
+ precision highp sampler3D;
102
+ uniform sampler3D tGridTex;
103
+ #endif
104
+
105
+ #if defined(dColorType_uniform)
106
+ uniform vec3 uColor;
107
+ #elif defined(dColorType_texture)
108
+ uniform vec2 uColorTexDim;
109
+ uniform sampler2D tColor;
110
+ #endif
111
+
112
+ #ifdef dOverpaint
113
+ #if defined(dOverpaintType_groupInstance) || defined(dOverpaintType_vertexInstance)
114
+ uniform vec2 uOverpaintTexDim;
115
+ uniform sampler2D tOverpaint;
116
+ #endif
117
+ #endif
118
+
119
+ #ifdef dUsePalette
120
+ uniform sampler2D tPalette;
121
+ #endif
122
+
123
+ #if defined(dGridTexType_2d)
124
+ vec4 textureVal(vec3 pos) {
125
+ return texture3dFrom2dLinear(tGridTex, pos + (vec3(0.5, 0.5, 0.0) / uGridDim), uGridDim, uGridTexDim.xy);
126
+ }
127
+ vec4 textureGroup(vec3 pos) {
128
+ return texture3dFrom2dNearest(tGridTex, pos + (vec3(0.5, 0.5, 0.0) / uGridDim), uGridDim, uGridTexDim.xy);
129
+ }
130
+ #elif defined(dGridTexType_3d)
131
+ vec4 textureVal(vec3 pos) {
132
+ return texture(tGridTex, pos + (vec3(0.5) / uGridDim));
133
+ }
134
+ vec4 textureGroup(vec3 pos) {
135
+ return texelFetch(tGridTex, ivec3(pos * uGridDim), 0);
136
+ }
137
+ #endif
138
+
139
+ float calcDepth(const in vec3 pos) {
140
+ vec2 clipZW = pos.z * uProjection[2].zw + uProjection[3].zw;
141
+ return 0.5 + 0.5 * clipZW.x / clipZW.y;
142
+ }
143
+
144
+ float transferFunction(float value) {
145
+ return texture2D(tTransferTex, vec2(value, 0.0)).a;
146
+ }
147
+
148
+ float getDepth(const in vec2 coords) {
149
+ #ifdef depthTextureSupport
150
+ return texture2D(tDepth, coords).r;
151
+ #else
152
+ return unpackRGBAToDepth(texture2D(tDepth, coords));
153
+ #endif
154
+ }
155
+
156
+ const float gradOffset = 0.5;
157
+
158
+ vec3 v3m4(vec3 p, mat4 m) {
159
+ return (m * vec4(p, 1.0)).xyz;
160
+ }
161
+
162
+ float preFogAlphaBlended = 0.0;
163
+
164
+ vec4 raymarch(vec3 startLoc, vec3 step, vec3 rayDir) {
165
+ mat3 normalMatrix = transpose3(inverse3(mat3(uModelView * vTransform)));
166
+ mat4 cartnToUnit = uCartnToUnit * inverse4(vTransform);
167
+ #if defined(dClipVariant_pixel) && dClipObjectCount != 0
168
+ mat4 modelTransform = uModel * vTransform * uTransform;
169
+ #endif
170
+ mat4 modelViewTransform = uModelView * vTransform * uTransform;
171
+
172
+ vec3 scaleVol = vec3(1.0) / uGridDim;
173
+ vec3 pos = startLoc;
174
+ vec4 cell;
175
+ float prevValue = -1.0;
176
+ float value = 0.0;
177
+ vec4 src = vec4(0.0);
178
+ vec4 dst = vec4(0.0);
179
+ float fragmentDepth;
180
+
181
+ vec3 posMin = vec3(0.0);
182
+ vec3 posMax = vec3(1.0) - vec3(1.0) / uGridDim;
183
+
184
+ vec3 unitPos;
185
+
186
+ vec3 nextPos;
187
+ float nextValue;
188
+
189
+ vec4 material;
190
+ vec4 overpaint;
191
+ float metalness = uMetalness;
192
+ float roughness = uRoughness;
193
+ float emissive = uEmissive;
194
+
195
+ vec3 gradient = vec3(1.0);
196
+ vec3 dx = vec3(gradOffset * scaleVol.x, 0.0, 0.0);
197
+ vec3 dy = vec3(0.0, gradOffset * scaleVol.y, 0.0);
198
+ vec3 dz = vec3(0.0, 0.0, gradOffset * scaleVol.z);
199
+
200
+ float maxDist = min(vBoundingSphere.w * 2.0, uFar - uNear);
201
+ float maxDistSq = maxDist * maxDist;
202
+
203
+ for (int i = 0; i < uMaxSteps; ++i) {
204
+ // break when beyond bounding-sphere or far-plane
205
+ vec3 distVec = startLoc - pos;
206
+ if (dot(distVec, distVec) > maxDistSq) break;
207
+
208
+ unitPos = v3m4(pos, cartnToUnit);
209
+
210
+ // continue when outside of grid
211
+ if (unitPos.x > posMax.x || unitPos.y > posMax.y || unitPos.z > posMax.z ||
212
+ unitPos.x < posMin.x || unitPos.y < posMin.y || unitPos.z < posMin.z
213
+ ) {
214
+ prevValue = value;
215
+ pos += step;
216
+ continue;
217
+ }
218
+
219
+ cell = textureVal(unitPos);
220
+ value = cell.a; // current voxel value
221
+
222
+ if (uJumpLength > 0.0 && value < 0.01) {
223
+ nextPos = pos + rayDir * uJumpLength;
224
+ nextValue = textureVal(v3m4(nextPos, cartnToUnit)).a;
225
+ if (nextValue < 0.01) {
226
+ prevValue = nextValue;
227
+ pos = nextPos;
228
+ continue;
229
+ }
230
+ }
231
+
232
+ vec4 mvPosition = modelViewTransform * vec4(unitPos * uGridDim, 1.0);
233
+ if (calcDepth(mvPosition.xyz) > getDepth(gl_FragCoord.xy / uDrawingBufferSize))
234
+ break;
235
+
236
+ #if defined(dClipVariant_pixel) && dClipObjectCount != 0
237
+ vec3 vModelPosition = v3m4(unitPos * uGridDim, modelTransform);
238
+ if (clipTest(vec4(vModelPosition, 0.0))) {
239
+ prevValue = value;
240
+ pos += step;
241
+ continue;
242
+ }
243
+ #endif
244
+
245
+ vec3 vViewPosition = mvPosition.xyz;
246
+ material.a = transferFunction(value);
247
+
248
+ #ifdef dPackedGroup
249
+ float group = unpackRGBToInt(textureGroup(floor(unitPos * uGridDim + 0.5) / uGridDim).rgb);
250
+ #else
251
+ vec3 g = floor(unitPos * uGridDim + 0.5);
252
+ // note that we swap x and z because the texture is flipped around y
253
+ #if defined(dAxisOrder_012)
254
+ float group = g.z + g.y * uGridDim.z + g.x * uGridDim.z * uGridDim.y; // 210
255
+ #elif defined(dAxisOrder_021)
256
+ float group = g.y + g.z * uGridDim.y + g.x * uGridDim.y * uGridDim.z; // 120
257
+ #elif defined(dAxisOrder_102)
258
+ float group = g.z + g.x * uGridDim.z + g.y * uGridDim.z * uGridDim.x; // 201
259
+ #elif defined(dAxisOrder_120)
260
+ float group = g.x + g.z * uGridDim.x + g.y * uGridDim.x * uGridDim.z; // 021
261
+ #elif defined(dAxisOrder_201)
262
+ float group = g.y + g.x * uGridDim.y + g.z * uGridDim.y * uGridDim.x; // 102
263
+ #elif defined(dAxisOrder_210)
264
+ float group = g.x + g.y * uGridDim.x + g.z * uGridDim.x * uGridDim.y; // 012
265
+ #endif
266
+ #endif
267
+
268
+ #if defined(dColorType_direct) && defined(dUsePalette)
269
+ material.rgb = texture2D(tPalette, vec2(value, 0.0)).rgb;
270
+ #elif defined(dColorType_uniform)
271
+ material.rgb = uColor;
272
+ #elif defined(dColorType_instance)
273
+ material.rgb = readFromTexture(tColor, vInstance, uColorTexDim).rgb;
274
+ #elif defined(dColorType_group)
275
+ material.rgb = readFromTexture(tColor, group, uColorTexDim).rgb;
276
+ #elif defined(dColorType_groupInstance)
277
+ material.rgb = readFromTexture(tColor, vInstance * float(uGroupCount) + group, uColorTexDim).rgb;
278
+ #elif defined(dColorType_vertex)
279
+ material.rgb = texture3dFrom1dTrilinear(tColor, unitPos, uGridDim, uColorTexDim, 0.0).rgb;
280
+ #elif defined(dColorType_vertexInstance)
281
+ material.rgb = texture3dFrom1dTrilinear(tColor, unitPos, uGridDim, uColorTexDim, vInstance * float(uVertexCount)).rgb;
282
+ #endif
283
+
284
+ #ifdef dOverpaint
285
+ #if defined(dOverpaintType_groupInstance)
286
+ overpaint = readFromTexture(tOverpaint, vInstance * float(uGroupCount) + group, uOverpaintTexDim);
287
+ #elif defined(dOverpaintType_vertexInstance)
288
+ overpaint = texture3dFrom1dTrilinear(tOverpaint, unitPos, uGridDim, uOverpaintTexDim, vInstance * float(uVertexCount));
289
+ #endif
290
+
291
+ material.rgb = mix(material.rgb, overpaint.rgb, overpaint.a);
292
+ #endif
293
+
294
+ #if defined(dIgnoreLight)
295
+ gl_FragColor.rgb = material.rgb;
296
+ #else
297
+ if (material.a >= 0.01) {
298
+ #ifdef dPackedGroup
299
+ // compute gradient by central differences
300
+ gradient.x = textureVal(unitPos - dx).a - textureVal(unitPos + dx).a;
301
+ gradient.y = textureVal(unitPos - dy).a - textureVal(unitPos + dy).a;
302
+ gradient.z = textureVal(unitPos - dz).a - textureVal(unitPos + dz).a;
303
+ #else
304
+ gradient = cell.xyz * 2.0 - 1.0;
305
+ #endif
306
+ vec3 normal = -normalize(normalMatrix * normalize(gradient));
307
+ #include apply_light_color
308
+ } else {
309
+ gl_FragColor.rgb = material.rgb;
310
+ }
311
+ #endif
312
+
313
+ gl_FragColor.a = material.a * uAlpha * uTransferScale;
314
+
315
+ #if defined(dColorMarker)
316
+ float marker = uMarker;
317
+ if (uMarker == -1.0) {
318
+ marker = readFromTexture(tMarker, vInstance * float(uGroupCount) + group, uMarkerTexDim).a;
319
+ marker = floor(marker * 255.0 + 0.5); // rounding required to work on some cards on win
320
+ }
321
+ #endif
322
+ #include apply_marker_color
323
+
324
+ preFogAlphaBlended = (1.0 - preFogAlphaBlended) * gl_FragColor.a + preFogAlphaBlended;
325
+ fragmentDepth = calcDepth(mvPosition.xyz);
326
+ #include apply_fog
327
+
328
+ src = gl_FragColor;
329
+
330
+ if (!uTransparentBackground) {
331
+ // done in 'apply_fog' otherwise
332
+ src.rgb *= src.a;
333
+ }
334
+ dst = (1.0 - dst.a) * src + dst; // standard blending
335
+
336
+ // break if the color is opaque enough
337
+ if (dst.a > 0.95)
338
+ break;
339
+
340
+ pos += step;
341
+ }
342
+
343
+ return dst;
344
+ }
345
+
346
+ // TODO: support float texture for higher precision values???
347
+ // TODO: support clipping exclusion texture support
348
+
349
+ void main() {
350
+ #if defined(dRenderVariant_emissive)
351
+ discard;
352
+ #else
353
+ if (gl_FrontFacing)
354
+ discard;
355
+
356
+ vec3 rayDir = mix(normalize(vOrigPos - uCameraPosition), uCameraDir, uIsOrtho);
357
+ vec3 step = rayDir * uStepScale;
358
+
359
+ float boundingSphereNear = distance(vBoundingSphere.xyz, uCameraPosition) - vBoundingSphere.w;
360
+ float d = max(uNear, boundingSphereNear) - mix(0.0, distance(vOrigPos, uCameraPosition), uIsOrtho);
361
+ vec3 start = mix(uCameraPosition, vOrigPos, uIsOrtho) + (d * rayDir);
362
+ gl_FragColor = raymarch(start, step, rayDir);
363
+
364
+ float fragmentDepth = calcDepth((uModelView * vec4(start, 1.0)).xyz);
365
+ float preFogAlpha = clamp(preFogAlphaBlended, 0.0, 1.0);
366
+ #include wboit_write
367
+ #endif
368
+ }
369
369
  `;