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
@@ -3,152 +3,152 @@
3
3
  *
4
4
  * @author Alexander Rose <alexander.rose@weirdbyte.de>
5
5
  */
6
- export const spheres_frag = `
7
- precision highp float;
8
- precision highp int;
9
-
10
- #define bumpEnabled
11
-
12
- #include common
13
- #include common_frag_params
14
- #include color_frag_params
15
- #include light_frag_params
16
- #include common_clip
17
-
18
- uniform mat4 uInvView;
19
- uniform float uAlphaThickness;
20
-
21
- varying float vRadius;
22
- varying vec3 vPoint;
23
- varying vec3 vPointViewPosition;
24
-
25
- #ifdef dSolidInterior
26
- const bool solidInterior = true;
27
- #else
28
- const bool solidInterior = false;
29
- #endif
30
-
31
- bool SphereImpostor(out vec3 modelPos, out vec3 cameraPos, out vec3 cameraNormal, out bool interior, out float fragmentDepth){
32
- vec3 cameraSpherePos = -vPointViewPosition;
33
-
34
- vec3 rayOrigin = mix(vec3(0.0, 0.0, 0.0), vPoint, uIsOrtho);
35
- vec3 rayDirection = mix(normalize(vPoint), vec3(0.0, 0.0, 1.0), uIsOrtho);
36
- vec3 cameraSphereDir = mix(cameraSpherePos, rayOrigin - cameraSpherePos, uIsOrtho);
37
-
38
- float B = dot(rayDirection, cameraSphereDir);
39
- float det = B * B + vRadius * vRadius - dot(cameraSphereDir, cameraSphereDir);
40
-
41
- if (det < 0.0) return false;
42
-
43
- float sqrtDet = sqrt(det);
44
- float posT = mix(B + sqrtDet, B - sqrtDet, uIsOrtho);
45
- float negT = mix(B - sqrtDet, B + sqrtDet, uIsOrtho);
46
-
47
- cameraPos = rayDirection * negT + rayOrigin;
48
- modelPos = (uInvView * vec4(cameraPos, 1.0)).xyz;
49
- fragmentDepth = calcDepth(cameraPos);
50
-
51
- bool objectClipped = false;
52
-
53
- #if !defined(dClipPrimitive) && defined(dClipVariant_pixel) && dClipObjectCount != 0
54
- if (clipTest(vec4(modelPos, 0.0))) {
55
- objectClipped = true;
56
- fragmentDepth = -1.0;
57
- }
58
- #endif
59
-
60
- if (fragmentDepth > 0.0) {
61
- cameraNormal = normalize(cameraPos - cameraSpherePos);
62
- interior = false;
63
- return true;
64
- } else if (uDoubleSided || solidInterior) {
65
- cameraPos = rayDirection * posT + rayOrigin;
66
- modelPos = (uInvView * vec4(cameraPos, 1.0)).xyz;
67
- fragmentDepth = calcDepth(cameraPos);
68
- cameraNormal = -normalize(cameraPos - cameraSpherePos);
69
- interior = true;
70
- if (fragmentDepth > 0.0) {
71
- #ifdef dSolidInterior
72
- if (!objectClipped) {
73
- fragmentDepth = 0.0 + (0.0000001 / vRadius);
74
- cameraNormal = -mix(normalize(vPoint), vec3(0.0, 0.0, 1.0), uIsOrtho);
75
- }
76
- #endif
77
- return true;
78
- }
79
- }
80
-
81
- return false;
82
- }
83
-
84
- void main(void){
85
- vec3 cameraNormal;
86
- float fragmentDepth;
87
-
88
- #ifdef dApproximate
89
- vec3 pointDir = -vPointViewPosition - vPoint;
90
- if (dot(pointDir, pointDir) > vRadius * vRadius) discard;
91
- vec3 vViewPosition = -vPointViewPosition;
92
- fragmentDepth = gl_FragCoord.z;
93
- #if !defined(dIgnoreLight) || defined(dXrayShaded)
94
- pointDir.z -= cos(length(pointDir) / vRadius);
95
- cameraNormal = -normalize(pointDir / vRadius);
96
- #endif
97
- interior = false;
98
- #else
99
- vec3 modelPos;
100
- vec3 cameraPos;
101
- bool hit = SphereImpostor(modelPos, cameraPos, cameraNormal, interior, fragmentDepth);
102
- if (!hit) discard;
103
-
104
- if (fragmentDepth < 0.0) discard;
105
- if (fragmentDepth > 1.0) discard;
106
-
107
- gl_FragDepthEXT = fragmentDepth;
108
-
109
- vec3 vModelPosition = modelPos;
110
- vec3 vViewPosition = cameraPos;
111
- #endif
112
-
113
- #include fade_lod
114
- #if !defined(dClipPrimitive) && defined(dClipVariant_pixel) && dClipObjectCount != 0
115
- #include clip_pixel
116
- #endif
117
- #include assign_material_color
118
-
119
- #if defined(dRenderVariant_color)
120
- if (uRenderMask == MaskTransparent && uAlphaThickness > 0.0) {
121
- material.a *= min(1.0, vRadius / uAlphaThickness);
122
- }
123
- #endif
124
-
125
- #include check_transparency
126
-
127
- #if defined(dRenderVariant_pick)
128
- #include check_picking_alpha
129
- #ifdef requiredDrawBuffers
130
- gl_FragColor = vObject;
131
- gl_FragData[1] = vInstance;
132
- gl_FragData[2] = vGroup;
133
- gl_FragData[3] = packDepthToRGBA(fragmentDepth);
134
- #else
135
- gl_FragColor = vColor;
136
- #endif
137
- #elif defined(dRenderVariant_depth)
138
- gl_FragColor = material;
139
- #elif defined(dRenderVariant_marking)
140
- gl_FragColor = material;
141
- #elif defined(dRenderVariant_emissive)
142
- gl_FragColor = material;
143
- #elif defined(dRenderVariant_color)
144
- vec3 normal = -cameraNormal;
145
- #include apply_light_color
146
-
147
- #include apply_interior_color
148
- #include apply_marker_color
149
- #include apply_fog
150
- #include wboit_write
151
- #include dpoit_write
152
- #endif
153
- }
6
+ export const spheres_frag = `
7
+ precision highp float;
8
+ precision highp int;
9
+
10
+ #define bumpEnabled
11
+
12
+ #include common
13
+ #include common_frag_params
14
+ #include color_frag_params
15
+ #include light_frag_params
16
+ #include common_clip
17
+
18
+ uniform mat4 uInvView;
19
+ uniform float uAlphaThickness;
20
+
21
+ varying float vRadius;
22
+ varying vec3 vPoint;
23
+ varying vec3 vPointViewPosition;
24
+
25
+ #ifdef dSolidInterior
26
+ const bool solidInterior = true;
27
+ #else
28
+ const bool solidInterior = false;
29
+ #endif
30
+
31
+ bool SphereImpostor(out vec3 modelPos, out vec3 cameraPos, out vec3 cameraNormal, out bool interior, out float fragmentDepth){
32
+ vec3 cameraSpherePos = -vPointViewPosition;
33
+
34
+ vec3 rayOrigin = mix(vec3(0.0, 0.0, 0.0), vPoint, uIsOrtho);
35
+ vec3 rayDirection = mix(normalize(vPoint), vec3(0.0, 0.0, 1.0), uIsOrtho);
36
+ vec3 cameraSphereDir = mix(cameraSpherePos, rayOrigin - cameraSpherePos, uIsOrtho);
37
+
38
+ float B = dot(rayDirection, cameraSphereDir);
39
+ float det = B * B + vRadius * vRadius - dot(cameraSphereDir, cameraSphereDir);
40
+
41
+ if (det < 0.0) return false;
42
+
43
+ float sqrtDet = sqrt(det);
44
+ float posT = mix(B + sqrtDet, B - sqrtDet, uIsOrtho);
45
+ float negT = mix(B - sqrtDet, B + sqrtDet, uIsOrtho);
46
+
47
+ cameraPos = rayDirection * negT + rayOrigin;
48
+ modelPos = (uInvView * vec4(cameraPos, 1.0)).xyz;
49
+ fragmentDepth = calcDepth(cameraPos);
50
+
51
+ bool objectClipped = false;
52
+
53
+ #if !defined(dClipPrimitive) && defined(dClipVariant_pixel) && dClipObjectCount != 0
54
+ if (clipTest(vec4(modelPos, 0.0))) {
55
+ objectClipped = true;
56
+ fragmentDepth = -1.0;
57
+ }
58
+ #endif
59
+
60
+ if (fragmentDepth > 0.0) {
61
+ cameraNormal = normalize(cameraPos - cameraSpherePos);
62
+ interior = false;
63
+ return true;
64
+ } else if (uDoubleSided || solidInterior) {
65
+ cameraPos = rayDirection * posT + rayOrigin;
66
+ modelPos = (uInvView * vec4(cameraPos, 1.0)).xyz;
67
+ fragmentDepth = calcDepth(cameraPos);
68
+ cameraNormal = -normalize(cameraPos - cameraSpherePos);
69
+ interior = true;
70
+ if (fragmentDepth > 0.0) {
71
+ #ifdef dSolidInterior
72
+ if (!objectClipped) {
73
+ fragmentDepth = 0.0 + (0.0000001 / vRadius);
74
+ cameraNormal = -mix(normalize(vPoint), vec3(0.0, 0.0, 1.0), uIsOrtho);
75
+ }
76
+ #endif
77
+ return true;
78
+ }
79
+ }
80
+
81
+ return false;
82
+ }
83
+
84
+ void main(void){
85
+ vec3 cameraNormal;
86
+ float fragmentDepth;
87
+
88
+ #ifdef dApproximate
89
+ vec3 pointDir = -vPointViewPosition - vPoint;
90
+ if (dot(pointDir, pointDir) > vRadius * vRadius) discard;
91
+ vec3 vViewPosition = -vPointViewPosition;
92
+ fragmentDepth = gl_FragCoord.z;
93
+ #if !defined(dIgnoreLight) || defined(dXrayShaded)
94
+ pointDir.z -= cos(length(pointDir) / vRadius);
95
+ cameraNormal = -normalize(pointDir / vRadius);
96
+ #endif
97
+ interior = false;
98
+ #else
99
+ vec3 modelPos;
100
+ vec3 cameraPos;
101
+ bool hit = SphereImpostor(modelPos, cameraPos, cameraNormal, interior, fragmentDepth);
102
+ if (!hit) discard;
103
+
104
+ if (fragmentDepth < 0.0) discard;
105
+ if (fragmentDepth > 1.0) discard;
106
+
107
+ gl_FragDepthEXT = fragmentDepth;
108
+
109
+ vec3 vModelPosition = modelPos;
110
+ vec3 vViewPosition = cameraPos;
111
+ #endif
112
+
113
+ #include fade_lod
114
+ #if !defined(dClipPrimitive) && defined(dClipVariant_pixel) && dClipObjectCount != 0
115
+ #include clip_pixel
116
+ #endif
117
+ #include assign_material_color
118
+
119
+ #if defined(dRenderVariant_color)
120
+ if (uRenderMask == MaskTransparent && uAlphaThickness > 0.0) {
121
+ material.a *= min(1.0, vRadius / uAlphaThickness);
122
+ }
123
+ #endif
124
+
125
+ #include check_transparency
126
+
127
+ #if defined(dRenderVariant_pick)
128
+ #include check_picking_alpha
129
+ #ifdef requiredDrawBuffers
130
+ gl_FragColor = vObject;
131
+ gl_FragData[1] = vInstance;
132
+ gl_FragData[2] = vGroup;
133
+ gl_FragData[3] = packDepthToRGBA(fragmentDepth);
134
+ #else
135
+ gl_FragColor = vColor;
136
+ #endif
137
+ #elif defined(dRenderVariant_depth)
138
+ gl_FragColor = material;
139
+ #elif defined(dRenderVariant_marking)
140
+ gl_FragColor = material;
141
+ #elif defined(dRenderVariant_emissive)
142
+ gl_FragColor = material;
143
+ #elif defined(dRenderVariant_color)
144
+ vec3 normal = -cameraNormal;
145
+ #include apply_light_color
146
+
147
+ #include apply_interior_color
148
+ #include apply_marker_color
149
+ #include apply_fog
150
+ #include wboit_write
151
+ #include dpoit_write
152
+ #endif
153
+ }
154
154
  `;
@@ -3,136 +3,136 @@
3
3
  *
4
4
  * @author Alexander Rose <alexander.rose@weirdbyte.de>
5
5
  */
6
- export const spheres_vert = `
7
- precision highp float;
8
- precision highp int;
9
-
10
- #include common
11
- #include read_from_texture
12
- #include common_vert_params
13
- #include color_vert_params
14
- #include size_vert_params
15
- #include common_clip
16
-
17
- uniform mat4 uModelView;
18
- uniform mat4 uInvProjection;
19
- uniform float uIsOrtho;
20
-
21
- uniform vec2 uTexDim;
22
- uniform sampler2D tPositionGroup;
23
-
24
- attribute mat4 aTransform;
25
- attribute float aInstance;
26
-
27
- varying float vRadius;
28
- varying vec3 vPoint;
29
- varying vec3 vPointViewPosition;
30
-
31
- #include matrix_scale
32
-
33
- /**
34
- * Bounding rectangle of a clipped, perspective-projected 3D Sphere.
35
- * Michael Mara, Morgan McGuire. 2013
36
- *
37
- * Specialization by Arseny Kapoulkine, MIT License Copyright (c) 2018
38
- * https://github.com/zeux/niagara
39
- */
40
- void sphereProjection(const in vec3 p, const in float r, const in vec2 mapping) {
41
- vec3 pr = p * r;
42
- float pzr2 = p.z * p.z - r * r;
43
-
44
- float vx = sqrt(p.x * p.x + pzr2);
45
- float minx = ((vx * p.x - pr.z) / (vx * p.z + pr.x)) * uProjection[0][0];
46
- float maxx = ((vx * p.x + pr.z) / (vx * p.z - pr.x)) * uProjection[0][0];
47
-
48
- float vy = sqrt(p.y * p.y + pzr2);
49
- float miny = ((vy * p.y - pr.z) / (vy * p.z + pr.y)) * uProjection[1][1];
50
- float maxy = ((vy * p.y + pr.z) / (vy * p.z - pr.y)) * uProjection[1][1];
51
-
52
- gl_Position.xy = vec2(maxx + minx, maxy + miny) * -0.5;
53
- gl_Position.xy -= mapping * vec2(maxx - minx, maxy - miny) * 0.5;
54
- gl_Position.xy *= gl_Position.w;
55
- }
56
-
57
- void main(void){
58
- vec2 mapping = vec2(1.0, 1.0); // vertices 2 and 5
59
- #if __VERSION__ == 100
60
- int m = imod(VertexID, 6);
61
- #else
62
- int m = VertexID % 6;
63
- #endif
64
- if (m == 0) {
65
- mapping = vec2(-1.0, 1.0);
66
- } else if (m == 1 || m == 3) {
67
- mapping = vec2(-1.0, -1.0);
68
- } else if (m == 4) {
69
- mapping = vec2(1.0, -1.0);
70
- }
71
-
72
- vec4 positionGroup = readFromTexture(tPositionGroup, VertexID / 6, uTexDim);
73
- vec3 position = positionGroup.rgb;
74
- float group = positionGroup.a;
75
-
76
- #include assign_color_varying
77
- #include assign_marker_varying
78
- #include assign_clipping_varying
79
- #include assign_size
80
-
81
- vRadius = size * matrixScale(uModelView);
82
-
83
- vec4 position4 = vec4(position, 1.0);
84
- vModelPosition = (uModel * aTransform * position4).xyz; // for clipping in frag shader
85
-
86
- float d;
87
- if (uLod.w != 0.0 && (uLod.x != 0.0 || uLod.y != 0.0)) {
88
- d = dot(uCameraPlane.xyz, vModelPosition) + uCameraPlane.w;
89
- float f = min(
90
- smoothstep(uLod.x, uLod.x + uLod.z, d),
91
- 1.0 - smoothstep(uLod.y - uLod.z, uLod.y, d)
92
- ) * uLod.w;
93
- vRadius *= f;
94
- }
95
-
96
- vec4 mvPosition = uModelView * aTransform * position4;
97
-
98
- #ifdef dApproximate
99
- vec4 mvCorner = vec4(mvPosition.xyz, 1.0);
100
- mvCorner.xy += mapping * vRadius;
101
- gl_Position = uProjection * mvCorner;
102
- #else
103
- if (uIsOrtho == 1.0) {
104
- vec4 mvCorner = vec4(mvPosition.xyz, 1.0);
105
- mvCorner.xy += mapping * vRadius;
106
- gl_Position = uProjection * mvCorner;
107
- } else {
108
- gl_Position = uProjection * vec4(mvPosition.xyz, 1.0);
109
- sphereProjection(mvPosition.xyz, vRadius, mapping);
110
- }
111
- #endif
112
-
113
- vec4 vPoint4 = uInvProjection * gl_Position;
114
- vPoint = vPoint4.xyz / vPoint4.w;
115
- vPointViewPosition = -mvPosition.xyz / mvPosition.w;
116
-
117
- if (gl_Position.z < -gl_Position.w) {
118
- mvPosition.z -= 2.0 * vRadius; // avoid clipping
119
- gl_Position.z = (uProjection * vec4(mvPosition.xyz, 1.0)).z;
120
- }
121
-
122
- if (uLod.w != 0.0 && (uLod.x != 0.0 || uLod.y != 0.0)) {
123
- if (d < uLod.x || d > uLod.y) {
124
- // move out of [ -w, +w ] to 'discard' in vert shader
125
- gl_Position.z = 2.0 * gl_Position.w;
126
- }
127
- }
128
-
129
- #if defined(dClipPrimitive) && !defined(dClipVariant_instance) && dClipObjectCount != 0
130
- if (clipTest(vec4(vModelPosition.xyz, 0.0))) {
131
- // move out of [ -w, +w ] to 'discard' in vert shader
132
- gl_Position.z = 2.0 * gl_Position.w;
133
- }
134
- #else
135
- #include clip_instance
136
- #endif
137
- }
6
+ export const spheres_vert = `
7
+ precision highp float;
8
+ precision highp int;
9
+
10
+ #include common
11
+ #include read_from_texture
12
+ #include common_vert_params
13
+ #include color_vert_params
14
+ #include size_vert_params
15
+ #include common_clip
16
+
17
+ uniform mat4 uModelView;
18
+ uniform mat4 uInvProjection;
19
+ uniform float uIsOrtho;
20
+
21
+ uniform vec2 uTexDim;
22
+ uniform sampler2D tPositionGroup;
23
+
24
+ attribute mat4 aTransform;
25
+ attribute float aInstance;
26
+
27
+ varying float vRadius;
28
+ varying vec3 vPoint;
29
+ varying vec3 vPointViewPosition;
30
+
31
+ #include matrix_scale
32
+
33
+ /**
34
+ * Bounding rectangle of a clipped, perspective-projected 3D Sphere.
35
+ * Michael Mara, Morgan McGuire. 2013
36
+ *
37
+ * Specialization by Arseny Kapoulkine, MIT License Copyright (c) 2018
38
+ * https://github.com/zeux/niagara
39
+ */
40
+ void sphereProjection(const in vec3 p, const in float r, const in vec2 mapping) {
41
+ vec3 pr = p * r;
42
+ float pzr2 = p.z * p.z - r * r;
43
+
44
+ float vx = sqrt(p.x * p.x + pzr2);
45
+ float minx = ((vx * p.x - pr.z) / (vx * p.z + pr.x)) * uProjection[0][0];
46
+ float maxx = ((vx * p.x + pr.z) / (vx * p.z - pr.x)) * uProjection[0][0];
47
+
48
+ float vy = sqrt(p.y * p.y + pzr2);
49
+ float miny = ((vy * p.y - pr.z) / (vy * p.z + pr.y)) * uProjection[1][1];
50
+ float maxy = ((vy * p.y + pr.z) / (vy * p.z - pr.y)) * uProjection[1][1];
51
+
52
+ gl_Position.xy = vec2(maxx + minx, maxy + miny) * -0.5;
53
+ gl_Position.xy -= mapping * vec2(maxx - minx, maxy - miny) * 0.5;
54
+ gl_Position.xy *= gl_Position.w;
55
+ }
56
+
57
+ void main(void){
58
+ vec2 mapping = vec2(1.0, 1.0); // vertices 2 and 5
59
+ #if __VERSION__ == 100
60
+ int m = imod(VertexID, 6);
61
+ #else
62
+ int m = VertexID % 6;
63
+ #endif
64
+ if (m == 0) {
65
+ mapping = vec2(-1.0, 1.0);
66
+ } else if (m == 1 || m == 3) {
67
+ mapping = vec2(-1.0, -1.0);
68
+ } else if (m == 4) {
69
+ mapping = vec2(1.0, -1.0);
70
+ }
71
+
72
+ vec4 positionGroup = readFromTexture(tPositionGroup, VertexID / 6, uTexDim);
73
+ vec3 position = positionGroup.rgb;
74
+ float group = positionGroup.a;
75
+
76
+ #include assign_color_varying
77
+ #include assign_marker_varying
78
+ #include assign_clipping_varying
79
+ #include assign_size
80
+
81
+ vRadius = size * matrixScale(uModelView);
82
+
83
+ vec4 position4 = vec4(position, 1.0);
84
+ vModelPosition = (uModel * aTransform * position4).xyz; // for clipping in frag shader
85
+
86
+ float d;
87
+ if (uLod.w != 0.0 && (uLod.x != 0.0 || uLod.y != 0.0)) {
88
+ d = dot(uCameraPlane.xyz, vModelPosition) + uCameraPlane.w;
89
+ float f = min(
90
+ smoothstep(uLod.x, uLod.x + uLod.z, d),
91
+ 1.0 - smoothstep(uLod.y - uLod.z, uLod.y, d)
92
+ ) * uLod.w;
93
+ vRadius *= f;
94
+ }
95
+
96
+ vec4 mvPosition = uModelView * aTransform * position4;
97
+
98
+ #ifdef dApproximate
99
+ vec4 mvCorner = vec4(mvPosition.xyz, 1.0);
100
+ mvCorner.xy += mapping * vRadius;
101
+ gl_Position = uProjection * mvCorner;
102
+ #else
103
+ if (uIsOrtho == 1.0) {
104
+ vec4 mvCorner = vec4(mvPosition.xyz, 1.0);
105
+ mvCorner.xy += mapping * vRadius;
106
+ gl_Position = uProjection * mvCorner;
107
+ } else {
108
+ gl_Position = uProjection * vec4(mvPosition.xyz, 1.0);
109
+ sphereProjection(mvPosition.xyz, vRadius, mapping);
110
+ }
111
+ #endif
112
+
113
+ vec4 vPoint4 = uInvProjection * gl_Position;
114
+ vPoint = vPoint4.xyz / vPoint4.w;
115
+ vPointViewPosition = -mvPosition.xyz / mvPosition.w;
116
+
117
+ if (gl_Position.z < -gl_Position.w) {
118
+ mvPosition.z -= 2.0 * vRadius; // avoid clipping
119
+ gl_Position.z = (uProjection * vec4(mvPosition.xyz, 1.0)).z;
120
+ }
121
+
122
+ if (uLod.w != 0.0 && (uLod.x != 0.0 || uLod.y != 0.0)) {
123
+ if (d < uLod.x || d > uLod.y) {
124
+ // move out of [ -w, +w ] to 'discard' in vert shader
125
+ gl_Position.z = 2.0 * gl_Position.w;
126
+ }
127
+ }
128
+
129
+ #if defined(dClipPrimitive) && !defined(dClipVariant_instance) && dClipObjectCount != 0
130
+ if (clipTest(vec4(vModelPosition.xyz, 0.0))) {
131
+ // move out of [ -w, +w ] to 'discard' in vert shader
132
+ gl_Position.z = 2.0 * gl_Position.w;
133
+ }
134
+ #else
135
+ #include clip_instance
136
+ #endif
137
+ }
138
138
  `;