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
@@ -6,42 +6,42 @@
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
8
  exports.points_vert = void 0;
9
- exports.points_vert = `
10
- precision highp float;
11
- precision highp int;
12
-
13
- #include common
14
- #include read_from_texture
15
- #include common_vert_params
16
- #include color_vert_params
17
- #include size_vert_params
18
- #include common_clip
19
-
20
- uniform float uPixelRatio;
21
- uniform vec4 uViewport;
22
-
23
- attribute vec3 aPosition;
24
- attribute mat4 aTransform;
25
- attribute float aInstance;
26
- attribute float aGroup;
27
-
28
- void main(){
29
- #include assign_group
30
- #include assign_color_varying
31
- #include assign_marker_varying
32
- #include assign_clipping_varying
33
- #include assign_position
34
- #include assign_size
35
-
36
- #ifdef dPointSizeAttenuation
37
- gl_PointSize = size * uPixelRatio * ((uViewport.w / 2.0) / -mvPosition.z) * 5.0;
38
- #else
39
- gl_PointSize = size * uPixelRatio;
40
- #endif
41
- gl_PointSize = max(1.0, gl_PointSize);
42
-
43
- gl_Position = uProjection * mvPosition;
44
-
45
- #include clip_instance
46
- }
9
+ exports.points_vert = `
10
+ precision highp float;
11
+ precision highp int;
12
+
13
+ #include common
14
+ #include read_from_texture
15
+ #include common_vert_params
16
+ #include color_vert_params
17
+ #include size_vert_params
18
+ #include common_clip
19
+
20
+ uniform float uPixelRatio;
21
+ uniform vec4 uViewport;
22
+
23
+ attribute vec3 aPosition;
24
+ attribute mat4 aTransform;
25
+ attribute float aInstance;
26
+ attribute float aGroup;
27
+
28
+ void main(){
29
+ #include assign_group
30
+ #include assign_color_varying
31
+ #include assign_marker_varying
32
+ #include assign_clipping_varying
33
+ #include assign_position
34
+ #include assign_size
35
+
36
+ #ifdef dPointSizeAttenuation
37
+ gl_PointSize = size * uPixelRatio * ((uViewport.w / 2.0) / -mvPosition.z) * 5.0;
38
+ #else
39
+ gl_PointSize = size * uPixelRatio;
40
+ #endif
41
+ gl_PointSize = max(1.0, gl_PointSize);
42
+
43
+ gl_Position = uProjection * mvPosition;
44
+
45
+ #include clip_instance
46
+ }
47
47
  `;
@@ -7,154 +7,154 @@
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.postprocessing_frag = void 0;
10
- exports.postprocessing_frag = `
11
- precision highp float;
12
- precision highp int;
13
- precision highp sampler2D;
14
-
15
- uniform sampler2D tSsaoDepth;
16
- uniform sampler2D tColor;
17
- uniform sampler2D tDepthOpaque;
18
- uniform sampler2D tDepthTransparent;
19
- uniform sampler2D tShadows;
20
- uniform sampler2D tOutlines;
21
- uniform vec2 uTexSize;
22
-
23
- uniform float uNear;
24
- uniform float uFar;
25
- uniform float uFogNear;
26
- uniform float uFogFar;
27
- uniform vec3 uFogColor;
28
- uniform vec3 uOutlineColor;
29
- uniform vec3 uOcclusionColor;
30
- uniform bool uTransparentBackground;
31
- uniform vec2 uOcclusionOffset;
32
-
33
- #include common
34
-
35
- float getViewZ(const in float depth) {
36
- #if dOrthographic == 1
37
- return orthographicDepthToViewZ(depth, uNear, uFar);
38
- #else
39
- return perspectiveDepthToViewZ(depth, uNear, uFar);
40
- #endif
41
- }
42
-
43
- float getDepthOpaque(const in vec2 coords) {
44
- #ifdef depthTextureSupport
45
- return texture2D(tDepthOpaque, coords).r;
46
- #else
47
- return unpackRGBAToDepth(texture2D(tDepthOpaque, coords));
48
- #endif
49
- }
50
-
51
- float getDepthTransparent(const in vec2 coords) {
52
- #ifdef dTransparentOutline
53
- return unpackRGBAToDepth(texture2D(tDepthTransparent, coords));
54
- #else
55
- return 1.0;
56
- #endif
57
- }
58
-
59
- bool isBackground(const in float depth) {
60
- return depth == 1.0;
61
- }
62
-
63
- float getOutline(const in vec2 coords, const in float opaqueDepth, out float closestTexel) {
64
- float backgroundViewZ = 2.0 * uFar;
65
- vec2 invTexSize = 1.0 / uTexSize;
66
-
67
- float transparentDepth = getDepthTransparent(coords);
68
- float opaqueSelfViewZ = isBackground(opaqueDepth) ? backgroundViewZ : getViewZ(opaqueDepth);
69
- float transparentSelfViewZ = isBackground(transparentDepth) ? backgroundViewZ : getViewZ(transparentDepth);
70
- float selfDepth = min(opaqueDepth, transparentDepth);
71
-
72
- float outline = 1.0;
73
- closestTexel = 1.0;
74
- for (int y = -dOutlineScale; y <= dOutlineScale; y++) {
75
- for (int x = -dOutlineScale; x <= dOutlineScale; x++) {
76
- if (x * x + y * y > dOutlineScale * dOutlineScale) {
77
- continue;
78
- }
79
-
80
- vec2 sampleCoords = coords + vec2(float(x), float(y)) * invTexSize;
81
-
82
- vec4 sampleOutlineCombined = texture2D(tOutlines, sampleCoords);
83
- float sampleOutline = sampleOutlineCombined.r;
84
- float sampleOutlineDepth = unpackRGToUnitInterval(sampleOutlineCombined.gb);
85
- float sampleOutlineViewZ = isBackground(sampleOutlineDepth) ? backgroundViewZ : getViewZ(sampleOutlineDepth);
86
-
87
- float selfViewZ = sampleOutlineCombined.a == 0.0 ? opaqueSelfViewZ : transparentSelfViewZ;
88
- if (sampleOutline == 0.0 && sampleOutlineDepth < closestTexel) {
89
- outline = 0.0;
90
- closestTexel = sampleOutlineDepth;
91
- }
92
- }
93
- }
94
- return closestTexel < opaqueDepth ? outline : 1.0;
95
- }
96
-
97
- float getSsao(vec2 coords) {
98
- float rawSsao = unpackRGToUnitInterval(texture2D(tSsaoDepth, coords).xy);
99
- if (rawSsao > 0.999) {
100
- return 1.0;
101
- } else if (rawSsao > 0.001) {
102
- return rawSsao;
103
- }
104
- // treat values close to 0.0 as errors and return no occlusion
105
- return 1.0;
106
- }
107
-
108
- void main(void) {
109
- vec2 coords = gl_FragCoord.xy / uTexSize;
110
- vec4 color = texture2D(tColor, coords);
111
-
112
- float viewDist;
113
- float fogFactor;
114
- float opaqueDepth = getDepthOpaque(coords);
115
-
116
- #ifdef dOcclusionEnable
117
- if (!isBackground(opaqueDepth)) {
118
- viewDist = abs(getViewZ(opaqueDepth));
119
- fogFactor = smoothstep(uFogNear, uFogFar, viewDist);
120
- float occlusionFactor = getSsao(coords + uOcclusionOffset);
121
- if (!uTransparentBackground) {
122
- color.rgb = mix(mix(uOcclusionColor, uFogColor, fogFactor), color.rgb, occlusionFactor);
123
- } else {
124
- color.rgb = mix(uOcclusionColor * (1.0 - fogFactor), color.rgb, occlusionFactor);
125
- }
126
- }
127
- #endif
128
-
129
- #ifdef dShadowEnable
130
- if (!isBackground(opaqueDepth)) {
131
- viewDist = abs(getViewZ(opaqueDepth));
132
- fogFactor = smoothstep(uFogNear, uFogFar, viewDist);
133
- vec4 shadow = texture2D(tShadows, coords);
134
- if (!uTransparentBackground) {
135
- color.rgb = mix(mix(vec3(0), uFogColor, fogFactor), color.rgb, shadow.a);
136
- } else {
137
- color.rgb = mix(vec3(0) * (1.0 - fogFactor), color.rgb, shadow.a);
138
- }
139
- }
140
- #endif
141
-
142
- // outline needs to be handled after occlusion and shadow to keep them clean
143
- #ifdef dOutlineEnable
144
- float closestTexel;
145
- float outline = getOutline(coords, opaqueDepth, closestTexel);
146
- if (outline == 0.0) {
147
- viewDist = abs(getViewZ(closestTexel));
148
- fogFactor = smoothstep(uFogNear, uFogFar, viewDist);
149
- if (!uTransparentBackground) {
150
- color.rgb = mix(uOutlineColor, uFogColor, fogFactor);
151
- } else {
152
- color.a = 1.0 - fogFactor;
153
- color.rgb = mix(uOutlineColor, color.rgb, fogFactor);
154
- }
155
- }
156
- #endif
157
-
158
- gl_FragColor = color;
159
- }
10
+ exports.postprocessing_frag = `
11
+ precision highp float;
12
+ precision highp int;
13
+ precision highp sampler2D;
14
+
15
+ uniform sampler2D tSsaoDepth;
16
+ uniform sampler2D tColor;
17
+ uniform sampler2D tDepthOpaque;
18
+ uniform sampler2D tDepthTransparent;
19
+ uniform sampler2D tShadows;
20
+ uniform sampler2D tOutlines;
21
+ uniform vec2 uTexSize;
22
+
23
+ uniform float uNear;
24
+ uniform float uFar;
25
+ uniform float uFogNear;
26
+ uniform float uFogFar;
27
+ uniform vec3 uFogColor;
28
+ uniform vec3 uOutlineColor;
29
+ uniform vec3 uOcclusionColor;
30
+ uniform bool uTransparentBackground;
31
+ uniform vec2 uOcclusionOffset;
32
+
33
+ #include common
34
+
35
+ float getViewZ(const in float depth) {
36
+ #if dOrthographic == 1
37
+ return orthographicDepthToViewZ(depth, uNear, uFar);
38
+ #else
39
+ return perspectiveDepthToViewZ(depth, uNear, uFar);
40
+ #endif
41
+ }
42
+
43
+ float getDepthOpaque(const in vec2 coords) {
44
+ #ifdef depthTextureSupport
45
+ return texture2D(tDepthOpaque, coords).r;
46
+ #else
47
+ return unpackRGBAToDepth(texture2D(tDepthOpaque, coords));
48
+ #endif
49
+ }
50
+
51
+ float getDepthTransparent(const in vec2 coords) {
52
+ #ifdef dTransparentOutline
53
+ return unpackRGBAToDepth(texture2D(tDepthTransparent, coords));
54
+ #else
55
+ return 1.0;
56
+ #endif
57
+ }
58
+
59
+ bool isBackground(const in float depth) {
60
+ return depth == 1.0;
61
+ }
62
+
63
+ float getOutline(const in vec2 coords, const in float opaqueDepth, out float closestTexel) {
64
+ float backgroundViewZ = 2.0 * uFar;
65
+ vec2 invTexSize = 1.0 / uTexSize;
66
+
67
+ float transparentDepth = getDepthTransparent(coords);
68
+ float opaqueSelfViewZ = isBackground(opaqueDepth) ? backgroundViewZ : getViewZ(opaqueDepth);
69
+ float transparentSelfViewZ = isBackground(transparentDepth) ? backgroundViewZ : getViewZ(transparentDepth);
70
+ float selfDepth = min(opaqueDepth, transparentDepth);
71
+
72
+ float outline = 1.0;
73
+ closestTexel = 1.0;
74
+ for (int y = -dOutlineScale; y <= dOutlineScale; y++) {
75
+ for (int x = -dOutlineScale; x <= dOutlineScale; x++) {
76
+ if (x * x + y * y > dOutlineScale * dOutlineScale) {
77
+ continue;
78
+ }
79
+
80
+ vec2 sampleCoords = coords + vec2(float(x), float(y)) * invTexSize;
81
+
82
+ vec4 sampleOutlineCombined = texture2D(tOutlines, sampleCoords);
83
+ float sampleOutline = sampleOutlineCombined.r;
84
+ float sampleOutlineDepth = unpackRGToUnitInterval(sampleOutlineCombined.gb);
85
+ float sampleOutlineViewZ = isBackground(sampleOutlineDepth) ? backgroundViewZ : getViewZ(sampleOutlineDepth);
86
+
87
+ float selfViewZ = sampleOutlineCombined.a == 0.0 ? opaqueSelfViewZ : transparentSelfViewZ;
88
+ if (sampleOutline == 0.0 && sampleOutlineDepth < closestTexel) {
89
+ outline = 0.0;
90
+ closestTexel = sampleOutlineDepth;
91
+ }
92
+ }
93
+ }
94
+ return closestTexel < opaqueDepth ? outline : 1.0;
95
+ }
96
+
97
+ float getSsao(vec2 coords) {
98
+ float rawSsao = unpackRGToUnitInterval(texture2D(tSsaoDepth, coords).xy);
99
+ if (rawSsao > 0.999) {
100
+ return 1.0;
101
+ } else if (rawSsao > 0.001) {
102
+ return rawSsao;
103
+ }
104
+ // treat values close to 0.0 as errors and return no occlusion
105
+ return 1.0;
106
+ }
107
+
108
+ void main(void) {
109
+ vec2 coords = gl_FragCoord.xy / uTexSize;
110
+ vec4 color = texture2D(tColor, coords);
111
+
112
+ float viewDist;
113
+ float fogFactor;
114
+ float opaqueDepth = getDepthOpaque(coords);
115
+
116
+ #ifdef dOcclusionEnable
117
+ if (!isBackground(opaqueDepth)) {
118
+ viewDist = abs(getViewZ(opaqueDepth));
119
+ fogFactor = smoothstep(uFogNear, uFogFar, viewDist);
120
+ float occlusionFactor = getSsao(coords + uOcclusionOffset);
121
+ if (!uTransparentBackground) {
122
+ color.rgb = mix(mix(uOcclusionColor, uFogColor, fogFactor), color.rgb, occlusionFactor);
123
+ } else {
124
+ color.rgb = mix(uOcclusionColor * (1.0 - fogFactor), color.rgb, occlusionFactor);
125
+ }
126
+ }
127
+ #endif
128
+
129
+ #ifdef dShadowEnable
130
+ if (!isBackground(opaqueDepth)) {
131
+ viewDist = abs(getViewZ(opaqueDepth));
132
+ fogFactor = smoothstep(uFogNear, uFogFar, viewDist);
133
+ vec4 shadow = texture2D(tShadows, coords);
134
+ if (!uTransparentBackground) {
135
+ color.rgb = mix(mix(vec3(0), uFogColor, fogFactor), color.rgb, shadow.a);
136
+ } else {
137
+ color.rgb = mix(vec3(0) * (1.0 - fogFactor), color.rgb, shadow.a);
138
+ }
139
+ }
140
+ #endif
141
+
142
+ // outline needs to be handled after occlusion and shadow to keep them clean
143
+ #ifdef dOutlineEnable
144
+ float closestTexel;
145
+ float outline = getOutline(coords, opaqueDepth, closestTexel);
146
+ if (outline == 0.0) {
147
+ viewDist = abs(getViewZ(closestTexel));
148
+ fogFactor = smoothstep(uFogNear, uFogFar, viewDist);
149
+ if (!uTransparentBackground) {
150
+ color.rgb = mix(uOutlineColor, uFogColor, fogFactor);
151
+ } else {
152
+ color.a = 1.0 - fogFactor;
153
+ color.rgb = mix(uOutlineColor, color.rgb, fogFactor);
154
+ }
155
+ }
156
+ #endif
157
+
158
+ gl_FragColor = color;
159
+ }
160
160
  `;
@@ -6,14 +6,14 @@
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
8
  exports.quad_vert = void 0;
9
- exports.quad_vert = `
10
- precision highp float;
11
-
12
- attribute vec2 aPosition;
13
- uniform vec2 uQuadScale;
14
-
15
- void main(void) {
16
- vec2 position = aPosition * uQuadScale - vec2(1.0, 1.0) + uQuadScale;
17
- gl_Position = vec4(position, 0.0, 1.0);
18
- }
9
+ exports.quad_vert = `
10
+ precision highp float;
11
+
12
+ attribute vec2 aPosition;
13
+ uniform vec2 uQuadScale;
14
+
15
+ void main(void) {
16
+ vec2 position = aPosition * uQuadScale - vec2(1.0, 1.0) + uQuadScale;
17
+ gl_Position = vec4(position, 0.0, 1.0);
18
+ }
19
19
  `;
@@ -7,127 +7,127 @@
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.shadows_frag = void 0;
10
- exports.shadows_frag = `
11
- precision highp float;
12
- precision highp int;
13
- precision highp sampler2D;
14
-
15
- #include common
16
-
17
- uniform sampler2D tDepth;
18
- uniform vec2 uTexSize;
19
- uniform vec4 uBounds;
20
-
21
- uniform float uNear;
22
- uniform float uFar;
23
-
24
- #if dLightCount != 0
25
- uniform vec3 uLightDirection[dLightCount];
26
- uniform vec3 uLightColor[dLightCount];
27
- #endif
28
-
29
- uniform mat4 uProjection;
30
- uniform mat4 uInvProjection;
31
-
32
- uniform float uMaxDistance;
33
- uniform float uTolerance;
34
- uniform float uBias;
35
-
36
- bool isBackground(const in float depth) {
37
- return depth == 1.0;
38
- }
39
-
40
- bool outsideBounds(const in vec2 p) {
41
- return p.x < uBounds.x || p.y < uBounds.y || p.x > uBounds.z || p.y > uBounds.w;
42
- }
43
-
44
- float getViewZ(const in float depth) {
45
- #if dOrthographic == 1
46
- return orthographicDepthToViewZ(depth, uNear, uFar);
47
- #else
48
- return perspectiveDepthToViewZ(depth, uNear, uFar);
49
- #endif
50
- }
51
-
52
- float getDepth(const in vec2 coords) {
53
- #ifdef depthTextureSupport
54
- return texture2D(tDepth, coords).r;
55
- #else
56
- return unpackRGBAToDepth(texture2D(tDepth, coords));
57
- #endif
58
- }
59
-
60
- float screenFade(const in vec2 coords) {
61
- vec2 c = (coords - uBounds.xy) / (uBounds.zw - uBounds.xy);
62
- vec2 fade = max(12.0 * abs(c - 0.5) - 5.0, vec2(0.0));
63
- return saturate(1.0 - dot(fade, fade));
64
- }
65
-
66
- // based on https://panoskarabelas.com/posts/screen_space_shadows/
67
- float screenSpaceShadow(const in vec3 position, const in vec3 lightDirection, const in float stepLength) {
68
- // Ray position and direction (in view-space)
69
- vec3 rayPos = position;
70
- vec3 rayDir = -lightDirection;
71
-
72
- // Compute ray step
73
- vec3 rayStep = rayDir * stepLength;
74
-
75
- // Ray march towards the light
76
- float occlusion = 0.0;
77
- vec4 rayCoords = vec4(0.0);
78
- for (int i = 0; i < dSteps; ++i) {
79
- // Step the ray
80
- rayPos += rayStep;
81
-
82
- rayCoords = uProjection * vec4(rayPos, 1.0);
83
- rayCoords.xyz = (rayCoords.xyz / rayCoords.w) * 0.5 + 0.5;
84
-
85
- if (outsideBounds(rayCoords.xy))
86
- return 1.0;
87
-
88
- // Compute the difference between the ray's and the camera's depth
89
- float depth = getDepth(rayCoords.xy);
90
- float viewZ = getViewZ(depth);
91
- float zDelta = rayPos.z - viewZ;
92
-
93
- if (zDelta < uTolerance) {
94
- occlusion = 1.0;
95
-
96
- // Fade out as we approach the edges of the screen
97
- occlusion *= screenFade(rayCoords.xy);
98
-
99
- break;
100
- }
101
- }
102
-
103
- return 1.0 - (uBias * occlusion);
104
- }
105
-
106
- void main(void) {
107
- vec2 invTexSize = 1.0 / uTexSize;
108
- vec2 selfCoords = gl_FragCoord.xy * invTexSize;
109
-
110
- float selfDepth = getDepth(selfCoords);
111
-
112
- if (isBackground(selfDepth)) {
113
- gl_FragColor = vec4(0.0);
114
- return;
115
- }
116
-
117
- vec3 selfViewPos = screenSpaceToViewSpace(vec3(selfCoords, selfDepth), uInvProjection);
118
- float stepLength = uMaxDistance / float(dSteps);
119
-
120
- float o = 1.0;
121
- #if dLightCount != 0
122
- float sh[dLightCount];
123
- #pragma unroll_loop_start
124
- for (int i = 0; i < dLightCount; ++i) {
125
- sh[i] = screenSpaceShadow(selfViewPos, uLightDirection[i], stepLength);
126
- o = min(o, sh[i]);
127
- }
128
- #pragma unroll_loop_end
129
- #endif
130
-
131
- gl_FragColor = vec4(o);
132
- }
10
+ exports.shadows_frag = `
11
+ precision highp float;
12
+ precision highp int;
13
+ precision highp sampler2D;
14
+
15
+ #include common
16
+
17
+ uniform sampler2D tDepth;
18
+ uniform vec2 uTexSize;
19
+ uniform vec4 uBounds;
20
+
21
+ uniform float uNear;
22
+ uniform float uFar;
23
+
24
+ #if dLightCount != 0
25
+ uniform vec3 uLightDirection[dLightCount];
26
+ uniform vec3 uLightColor[dLightCount];
27
+ #endif
28
+
29
+ uniform mat4 uProjection;
30
+ uniform mat4 uInvProjection;
31
+
32
+ uniform float uMaxDistance;
33
+ uniform float uTolerance;
34
+ uniform float uBias;
35
+
36
+ bool isBackground(const in float depth) {
37
+ return depth == 1.0;
38
+ }
39
+
40
+ bool outsideBounds(const in vec2 p) {
41
+ return p.x < uBounds.x || p.y < uBounds.y || p.x > uBounds.z || p.y > uBounds.w;
42
+ }
43
+
44
+ float getViewZ(const in float depth) {
45
+ #if dOrthographic == 1
46
+ return orthographicDepthToViewZ(depth, uNear, uFar);
47
+ #else
48
+ return perspectiveDepthToViewZ(depth, uNear, uFar);
49
+ #endif
50
+ }
51
+
52
+ float getDepth(const in vec2 coords) {
53
+ #ifdef depthTextureSupport
54
+ return texture2D(tDepth, coords).r;
55
+ #else
56
+ return unpackRGBAToDepth(texture2D(tDepth, coords));
57
+ #endif
58
+ }
59
+
60
+ float screenFade(const in vec2 coords) {
61
+ vec2 c = (coords - uBounds.xy) / (uBounds.zw - uBounds.xy);
62
+ vec2 fade = max(12.0 * abs(c - 0.5) - 5.0, vec2(0.0));
63
+ return saturate(1.0 - dot(fade, fade));
64
+ }
65
+
66
+ // based on https://panoskarabelas.com/posts/screen_space_shadows/
67
+ float screenSpaceShadow(const in vec3 position, const in vec3 lightDirection, const in float stepLength) {
68
+ // Ray position and direction (in view-space)
69
+ vec3 rayPos = position;
70
+ vec3 rayDir = -lightDirection;
71
+
72
+ // Compute ray step
73
+ vec3 rayStep = rayDir * stepLength;
74
+
75
+ // Ray march towards the light
76
+ float occlusion = 0.0;
77
+ vec4 rayCoords = vec4(0.0);
78
+ for (int i = 0; i < dSteps; ++i) {
79
+ // Step the ray
80
+ rayPos += rayStep;
81
+
82
+ rayCoords = uProjection * vec4(rayPos, 1.0);
83
+ rayCoords.xyz = (rayCoords.xyz / rayCoords.w) * 0.5 + 0.5;
84
+
85
+ if (outsideBounds(rayCoords.xy))
86
+ return 1.0;
87
+
88
+ // Compute the difference between the ray's and the camera's depth
89
+ float depth = getDepth(rayCoords.xy);
90
+ float viewZ = getViewZ(depth);
91
+ float zDelta = rayPos.z - viewZ;
92
+
93
+ if (zDelta < uTolerance) {
94
+ occlusion = 1.0;
95
+
96
+ // Fade out as we approach the edges of the screen
97
+ occlusion *= screenFade(rayCoords.xy);
98
+
99
+ break;
100
+ }
101
+ }
102
+
103
+ return 1.0 - (uBias * occlusion);
104
+ }
105
+
106
+ void main(void) {
107
+ vec2 invTexSize = 1.0 / uTexSize;
108
+ vec2 selfCoords = gl_FragCoord.xy * invTexSize;
109
+
110
+ float selfDepth = getDepth(selfCoords);
111
+
112
+ if (isBackground(selfDepth)) {
113
+ gl_FragColor = vec4(0.0);
114
+ return;
115
+ }
116
+
117
+ vec3 selfViewPos = screenSpaceToViewSpace(vec3(selfCoords, selfDepth), uInvProjection);
118
+ float stepLength = uMaxDistance / float(dSteps);
119
+
120
+ float o = 1.0;
121
+ #if dLightCount != 0
122
+ float sh[dLightCount];
123
+ #pragma unroll_loop_start
124
+ for (int i = 0; i < dLightCount; ++i) {
125
+ sh[i] = screenSpaceShadow(selfViewPos, uLightDirection[i], stepLength);
126
+ o = min(o, sh[i]);
127
+ }
128
+ #pragma unroll_loop_end
129
+ #endif
130
+
131
+ gl_FragColor = vec4(o);
132
+ }
133
133
  `;