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,46 +6,46 @@
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
8
  exports.fade_lod = void 0;
9
- exports.fade_lod = `
10
- if (uLod.w == 0.0 && (uLod.x != 0.0 || uLod.y != 0.0)) {
11
- float d = dot(uCameraPlane.xyz, vModelPosition) + uCameraPlane.w;
12
- float ta = min(
13
- smoothstep(uLod.x, uLod.x + uLod.z, d),
14
- 1.0 - smoothstep(uLod.y - uLod.z, uLod.y, d)
15
- );
16
-
17
- #if defined(dRenderVariant_color)
18
- float at = 0.0;
19
-
20
- // shift by view-offset during multi-sample rendering to allow for blending
21
- vec2 coord = gl_FragCoord.xy + uViewOffset * 0.25;
22
-
23
- const mat4 thresholdMatrix = mat4(
24
- 1.0 / 17.0, 9.0 / 17.0, 3.0 / 17.0, 11.0 / 17.0,
25
- 13.0 / 17.0, 5.0 / 17.0, 15.0 / 17.0, 7.0 / 17.0,
26
- 4.0 / 17.0, 12.0 / 17.0, 2.0 / 17.0, 10.0 / 17.0,
27
- 16.0 / 17.0, 8.0 / 17.0, 14.0 / 17.0, 6.0 / 17.0
28
- );
29
- int ci = int(intMod(coord.x, 4.0));
30
- int ri = int(intMod(coord.y, 4.0));
31
- #if __VERSION__ == 100
32
- vec4 i = vec4(float(ci * 4 + ri));
33
- vec4 v = thresholdMatrix[0] * vec4(equal(i, vec4(0.0, 1.0, 2.0, 3.0))) +
34
- thresholdMatrix[1] * vec4(equal(i, vec4(4.0, 5.0, 6.0, 7.0))) +
35
- thresholdMatrix[2] * vec4(equal(i, vec4(8.0, 9.0, 10.0, 11.0))) +
36
- thresholdMatrix[3] * vec4(equal(i, vec4(12.0, 13.0, 14.0, 15.0)));
37
- at = v.x + v.y + v.z + v.w;
38
- #else
39
- at = thresholdMatrix[ci][ri];
40
- #endif
41
-
42
- if (ta < 0.99 && (ta < 0.01 || ta < at)) {
43
- discard;
44
- }
45
- #else
46
- if (ta < uPickingAlphaThreshold) {
47
- discard;
48
- }
49
- #endif
50
- }
9
+ exports.fade_lod = `
10
+ if (uLod.w == 0.0 && (uLod.x != 0.0 || uLod.y != 0.0)) {
11
+ float d = dot(uCameraPlane.xyz, vModelPosition) + uCameraPlane.w;
12
+ float ta = min(
13
+ smoothstep(uLod.x, uLod.x + uLod.z, d),
14
+ 1.0 - smoothstep(uLod.y - uLod.z, uLod.y, d)
15
+ );
16
+
17
+ #if defined(dRenderVariant_color)
18
+ float at = 0.0;
19
+
20
+ // shift by view-offset during multi-sample rendering to allow for blending
21
+ vec2 coord = gl_FragCoord.xy + uViewOffset * 0.25;
22
+
23
+ const mat4 thresholdMatrix = mat4(
24
+ 1.0 / 17.0, 9.0 / 17.0, 3.0 / 17.0, 11.0 / 17.0,
25
+ 13.0 / 17.0, 5.0 / 17.0, 15.0 / 17.0, 7.0 / 17.0,
26
+ 4.0 / 17.0, 12.0 / 17.0, 2.0 / 17.0, 10.0 / 17.0,
27
+ 16.0 / 17.0, 8.0 / 17.0, 14.0 / 17.0, 6.0 / 17.0
28
+ );
29
+ int ci = int(intMod(coord.x, 4.0));
30
+ int ri = int(intMod(coord.y, 4.0));
31
+ #if __VERSION__ == 100
32
+ vec4 i = vec4(float(ci * 4 + ri));
33
+ vec4 v = thresholdMatrix[0] * vec4(equal(i, vec4(0.0, 1.0, 2.0, 3.0))) +
34
+ thresholdMatrix[1] * vec4(equal(i, vec4(4.0, 5.0, 6.0, 7.0))) +
35
+ thresholdMatrix[2] * vec4(equal(i, vec4(8.0, 9.0, 10.0, 11.0))) +
36
+ thresholdMatrix[3] * vec4(equal(i, vec4(12.0, 13.0, 14.0, 15.0)));
37
+ at = v.x + v.y + v.z + v.w;
38
+ #else
39
+ at = thresholdMatrix[ci][ri];
40
+ #endif
41
+
42
+ if (ta < 0.99 && (ta < 0.01 || ta < at)) {
43
+ discard;
44
+ }
45
+ #else
46
+ if (ta < uPickingAlphaThreshold) {
47
+ discard;
48
+ }
49
+ #endif
50
+ }
51
51
  `;
@@ -6,43 +6,43 @@
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
8
  exports.float_to_rgba = void 0;
9
- exports.float_to_rgba = `
10
- // floatToRgba adapted from https://github.com/equinor/glsl-float-to-rgba
11
- // MIT License, Copyright (c) 2020 Equinor
12
-
13
- float shiftRight (float v, float amt) {
14
- v = floor(v) + 0.5;
15
- return floor(v / exp2(amt));
16
- }
17
- float shiftLeft (float v, float amt) {
18
- return floor(v * exp2(amt) + 0.5);
19
- }
20
- float maskLast (float v, float bits) {
21
- return mod(v, shiftLeft(1.0, bits));
22
- }
23
- float extractBits (float num, float from, float to) {
24
- from = floor(from + 0.5); to = floor(to + 0.5);
25
- return maskLast(shiftRight(num, from), to - from);
26
- }
27
-
28
- vec4 floatToRgba(float texelFloat, bool littleEndian) {
29
- if (texelFloat == 0.0) return vec4(0.0, 0.0, 0.0, 0.0);
30
- float sign = texelFloat > 0.0 ? 0.0 : 1.0;
31
- texelFloat = abs(texelFloat);
32
- float exponent = floor(log2(texelFloat));
33
- float biased_exponent = exponent + 127.0;
34
- float fraction = ((texelFloat / exp2(exponent)) - 1.0) * 8388608.0;
35
- float t = biased_exponent / 2.0;
36
- float last_bit_of_biased_exponent = fract(t) * 2.0;
37
- float remaining_bits_of_biased_exponent = floor(t);
38
- float byte4 = extractBits(fraction, 0.0, 8.0) / 255.0;
39
- float byte3 = extractBits(fraction, 8.0, 16.0) / 255.0;
40
- float byte2 = (last_bit_of_biased_exponent * 128.0 + extractBits(fraction, 16.0, 23.0)) / 255.0;
41
- float byte1 = (sign * 128.0 + remaining_bits_of_biased_exponent) / 255.0;
42
- return (
43
- littleEndian
44
- ? vec4(byte4, byte3, byte2, byte1)
45
- : vec4(byte1, byte2, byte3, byte4)
46
- );
47
- }
9
+ exports.float_to_rgba = `
10
+ // floatToRgba adapted from https://github.com/equinor/glsl-float-to-rgba
11
+ // MIT License, Copyright (c) 2020 Equinor
12
+
13
+ float shiftRight (float v, float amt) {
14
+ v = floor(v) + 0.5;
15
+ return floor(v / exp2(amt));
16
+ }
17
+ float shiftLeft (float v, float amt) {
18
+ return floor(v * exp2(amt) + 0.5);
19
+ }
20
+ float maskLast (float v, float bits) {
21
+ return mod(v, shiftLeft(1.0, bits));
22
+ }
23
+ float extractBits (float num, float from, float to) {
24
+ from = floor(from + 0.5); to = floor(to + 0.5);
25
+ return maskLast(shiftRight(num, from), to - from);
26
+ }
27
+
28
+ vec4 floatToRgba(float texelFloat, bool littleEndian) {
29
+ if (texelFloat == 0.0) return vec4(0.0, 0.0, 0.0, 0.0);
30
+ float sign = texelFloat > 0.0 ? 0.0 : 1.0;
31
+ texelFloat = abs(texelFloat);
32
+ float exponent = floor(log2(texelFloat));
33
+ float biased_exponent = exponent + 127.0;
34
+ float fraction = ((texelFloat / exp2(exponent)) - 1.0) * 8388608.0;
35
+ float t = biased_exponent / 2.0;
36
+ float last_bit_of_biased_exponent = fract(t) * 2.0;
37
+ float remaining_bits_of_biased_exponent = floor(t);
38
+ float byte4 = extractBits(fraction, 0.0, 8.0) / 255.0;
39
+ float byte3 = extractBits(fraction, 8.0, 16.0) / 255.0;
40
+ float byte2 = (last_bit_of_biased_exponent * 128.0 + extractBits(fraction, 16.0, 23.0)) / 255.0;
41
+ float byte1 = (sign * 128.0 + remaining_bits_of_biased_exponent) / 255.0;
42
+ return (
43
+ littleEndian
44
+ ? vec4(byte4, byte3, byte2, byte1)
45
+ : vec4(byte1, byte2, byte3, byte4)
46
+ );
47
+ }
48
48
  `;
@@ -9,131 +9,131 @@
9
9
  */
10
10
  Object.defineProperty(exports, "__esModule", { value: true });
11
11
  exports.light_frag_params = void 0;
12
- exports.light_frag_params = `
13
- #if dLightCount != 0
14
- uniform vec3 uLightDirection[dLightCount];
15
- uniform vec3 uLightColor[dLightCount];
16
- #endif
17
- uniform vec3 uAmbientColor;
18
-
19
- struct PhysicalMaterial {
20
- vec3 diffuseColor;
21
- float roughness;
22
- vec3 specularColor;
23
- float specularF90;
24
- };
25
-
26
- struct IncidentLight {
27
- vec3 color;
28
- vec3 direction;
29
- };
30
-
31
- struct ReflectedLight {
32
- vec3 directDiffuse;
33
- vec3 directSpecular;
34
- vec3 indirectDiffuse;
35
- vec3 indirectSpecular;
36
- };
37
-
38
- struct GeometricContext {
39
- vec3 position;
40
- vec3 normal;
41
- vec3 viewDir;
42
- };
43
-
44
- vec3 BRDF_Lambert(const in vec3 diffuseColor) {
45
- return RECIPROCAL_PI * diffuseColor;
46
- }
47
-
48
- vec3 F_Schlick(const in vec3 f0, const in float f90, const in float dotVH) {
49
- // Original approximation by Christophe Schlick '94
50
- // float fresnel = pow( 1.0 - dotVH, 5.0 );
51
- // Optimized variant (presented by Epic at SIGGRAPH '13)
52
- // https://cdn2.unrealengine.com/Resources/files/2013SiggraphPresentationsNotes-26915738.pdf
53
- float fresnel = exp2((-5.55473 * dotVH - 6.98316) * dotVH);
54
- return f0 * (1.0 - fresnel) + (f90 * fresnel);
55
- }
56
-
57
- // Moving Frostbite to Physically Based Rendering 3.0 - page 12, listing 2
58
- // https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf
59
- float V_GGX_SmithCorrelated(const in float alpha, const in float dotNL, const in float dotNV) {
60
- float a2 = pow2(alpha);
61
- float gv = dotNL * sqrt(a2 + (1.0 - a2) * pow2(dotNV));
62
- float gl = dotNV * sqrt(a2 + (1.0 - a2) * pow2(dotNL));
63
- return 0.5 / max(gv + gl, EPSILON);
64
- }
65
-
66
- // Microfacet Models for Refraction through Rough Surfaces - equation (33)
67
- // http://graphicrants.blogspot.com/2013/08/specular-brdf-reference.html
68
- // alpha is "roughness squared" in Disney’s reparameterization
69
- float D_GGX(const in float alpha, const in float dotNH) {
70
- float a2 = pow2(alpha);
71
- float denom = pow2(dotNH) * (a2 - 1.0) + 1.0; // avoid alpha = 0 with dotNH = 1
72
- return RECIPROCAL_PI * a2 / pow2(denom);
73
- }
74
-
75
- // GGX Distribution, Schlick Fresnel, GGX_SmithCorrelated Visibility
76
- vec3 BRDF_GGX(const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float roughness) {
77
- float alpha = pow2(roughness); // UE4's roughness
78
- vec3 halfDir = normalize( lightDir + viewDir);
79
- float dotNL = saturate(dot(normal, lightDir));
80
- float dotNV = saturate(dot(normal, viewDir));
81
- float dotNH = saturate(dot(normal, halfDir));
82
- float dotVH = saturate(dot(viewDir, halfDir));
83
- vec3 F = F_Schlick(f0, f90, dotVH);
84
- float V = V_GGX_SmithCorrelated(alpha, dotNL, dotNV);
85
- float D = D_GGX(alpha, dotNH);
86
- return F * (V * D);
87
- }
88
-
89
- // Analytical approximation of the DFG LUT, one half of the
90
- // split-sum approximation used in indirect specular lighting.
91
- // via 'environmentBRDF' from "Physically Based Shading on Mobile"
92
- // https://www.unrealengine.com/blog/physically-based-shading-on-mobile
93
- vec2 DFGApprox(const in vec3 normal, const in vec3 viewDir, const in float roughness) {
94
- float dotNV = saturate(dot(normal, viewDir));
95
- const vec4 c0 = vec4(-1, -0.0275, -0.572, 0.022);
96
- const vec4 c1 = vec4(1, 0.0425, 1.04, -0.04);
97
- vec4 r = roughness * c0 + c1;
98
- float a004 = min(r.x * r.x, exp2(-9.28 * dotNV)) * r.x + r.y;
99
- vec2 fab = vec2(-1.04, 1.04) * a004 + r.zw;
100
- return fab;
101
- }
102
-
103
- // Fdez-Agüera's "Multiple-Scattering Microfacet Model for Real-Time Image Based Lighting"
104
- // Approximates multiscattering in order to preserve energy.
105
- // http://www.jcgt.org/published/0008/01/03/
106
- void computeMultiscattering(const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter) {
107
- vec2 fab = DFGApprox(normal, viewDir, roughness);
108
- vec3 FssEss = specularColor * fab.x + specularF90 * fab.y;
109
- float Ess = fab.x + fab.y;
110
- float Ems = 1.0 - Ess;
111
- vec3 Favg = specularColor + (1.0 - specularColor) * 0.047619; // 1/21
112
- vec3 Fms = FssEss * Favg / (1.0 - Ems * Favg);
113
- singleScatter += FssEss;
114
- multiScatter += Fms * Ems;
115
- }
116
-
117
- void RE_Direct_Physical(const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {
118
- float dotNL = saturate(dot(geometry.normal, directLight.direction));
119
- vec3 irradiance = dotNL * directLight.color;
120
- reflectedLight.directSpecular += irradiance * BRDF_GGX(directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness);
121
- reflectedLight.directDiffuse += irradiance * BRDF_Lambert(material.diffuseColor);
122
- }
123
-
124
- void RE_IndirectDiffuse_Physical(const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {
125
- reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert(material.diffuseColor);
126
- }
127
-
128
- void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {
129
- // Both indirect specular and indirect diffuse light accumulate here
130
- vec3 singleScattering = vec3(0.0);
131
- vec3 multiScattering = vec3(0.0);
132
- vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;
133
- computeMultiscattering(geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering);
134
- vec3 diffuse = material.diffuseColor * (1.0 - ( singleScattering + multiScattering));
135
- reflectedLight.indirectSpecular += radiance * singleScattering;
136
- reflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;
137
- reflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;
138
- }
12
+ exports.light_frag_params = `
13
+ #if dLightCount != 0
14
+ uniform vec3 uLightDirection[dLightCount];
15
+ uniform vec3 uLightColor[dLightCount];
16
+ #endif
17
+ uniform vec3 uAmbientColor;
18
+
19
+ struct PhysicalMaterial {
20
+ vec3 diffuseColor;
21
+ float roughness;
22
+ vec3 specularColor;
23
+ float specularF90;
24
+ };
25
+
26
+ struct IncidentLight {
27
+ vec3 color;
28
+ vec3 direction;
29
+ };
30
+
31
+ struct ReflectedLight {
32
+ vec3 directDiffuse;
33
+ vec3 directSpecular;
34
+ vec3 indirectDiffuse;
35
+ vec3 indirectSpecular;
36
+ };
37
+
38
+ struct GeometricContext {
39
+ vec3 position;
40
+ vec3 normal;
41
+ vec3 viewDir;
42
+ };
43
+
44
+ vec3 BRDF_Lambert(const in vec3 diffuseColor) {
45
+ return RECIPROCAL_PI * diffuseColor;
46
+ }
47
+
48
+ vec3 F_Schlick(const in vec3 f0, const in float f90, const in float dotVH) {
49
+ // Original approximation by Christophe Schlick '94
50
+ // float fresnel = pow( 1.0 - dotVH, 5.0 );
51
+ // Optimized variant (presented by Epic at SIGGRAPH '13)
52
+ // https://cdn2.unrealengine.com/Resources/files/2013SiggraphPresentationsNotes-26915738.pdf
53
+ float fresnel = exp2((-5.55473 * dotVH - 6.98316) * dotVH);
54
+ return f0 * (1.0 - fresnel) + (f90 * fresnel);
55
+ }
56
+
57
+ // Moving Frostbite to Physically Based Rendering 3.0 - page 12, listing 2
58
+ // https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf
59
+ float V_GGX_SmithCorrelated(const in float alpha, const in float dotNL, const in float dotNV) {
60
+ float a2 = pow2(alpha);
61
+ float gv = dotNL * sqrt(a2 + (1.0 - a2) * pow2(dotNV));
62
+ float gl = dotNV * sqrt(a2 + (1.0 - a2) * pow2(dotNL));
63
+ return 0.5 / max(gv + gl, EPSILON);
64
+ }
65
+
66
+ // Microfacet Models for Refraction through Rough Surfaces - equation (33)
67
+ // http://graphicrants.blogspot.com/2013/08/specular-brdf-reference.html
68
+ // alpha is "roughness squared" in Disney’s reparameterization
69
+ float D_GGX(const in float alpha, const in float dotNH) {
70
+ float a2 = pow2(alpha);
71
+ float denom = pow2(dotNH) * (a2 - 1.0) + 1.0; // avoid alpha = 0 with dotNH = 1
72
+ return RECIPROCAL_PI * a2 / pow2(denom);
73
+ }
74
+
75
+ // GGX Distribution, Schlick Fresnel, GGX_SmithCorrelated Visibility
76
+ vec3 BRDF_GGX(const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float roughness) {
77
+ float alpha = pow2(roughness); // UE4's roughness
78
+ vec3 halfDir = normalize( lightDir + viewDir);
79
+ float dotNL = saturate(dot(normal, lightDir));
80
+ float dotNV = saturate(dot(normal, viewDir));
81
+ float dotNH = saturate(dot(normal, halfDir));
82
+ float dotVH = saturate(dot(viewDir, halfDir));
83
+ vec3 F = F_Schlick(f0, f90, dotVH);
84
+ float V = V_GGX_SmithCorrelated(alpha, dotNL, dotNV);
85
+ float D = D_GGX(alpha, dotNH);
86
+ return F * (V * D);
87
+ }
88
+
89
+ // Analytical approximation of the DFG LUT, one half of the
90
+ // split-sum approximation used in indirect specular lighting.
91
+ // via 'environmentBRDF' from "Physically Based Shading on Mobile"
92
+ // https://www.unrealengine.com/blog/physically-based-shading-on-mobile
93
+ vec2 DFGApprox(const in vec3 normal, const in vec3 viewDir, const in float roughness) {
94
+ float dotNV = saturate(dot(normal, viewDir));
95
+ const vec4 c0 = vec4(-1, -0.0275, -0.572, 0.022);
96
+ const vec4 c1 = vec4(1, 0.0425, 1.04, -0.04);
97
+ vec4 r = roughness * c0 + c1;
98
+ float a004 = min(r.x * r.x, exp2(-9.28 * dotNV)) * r.x + r.y;
99
+ vec2 fab = vec2(-1.04, 1.04) * a004 + r.zw;
100
+ return fab;
101
+ }
102
+
103
+ // Fdez-Agüera's "Multiple-Scattering Microfacet Model for Real-Time Image Based Lighting"
104
+ // Approximates multiscattering in order to preserve energy.
105
+ // http://www.jcgt.org/published/0008/01/03/
106
+ void computeMultiscattering(const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter) {
107
+ vec2 fab = DFGApprox(normal, viewDir, roughness);
108
+ vec3 FssEss = specularColor * fab.x + specularF90 * fab.y;
109
+ float Ess = fab.x + fab.y;
110
+ float Ems = 1.0 - Ess;
111
+ vec3 Favg = specularColor + (1.0 - specularColor) * 0.047619; // 1/21
112
+ vec3 Fms = FssEss * Favg / (1.0 - Ems * Favg);
113
+ singleScatter += FssEss;
114
+ multiScatter += Fms * Ems;
115
+ }
116
+
117
+ void RE_Direct_Physical(const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {
118
+ float dotNL = saturate(dot(geometry.normal, directLight.direction));
119
+ vec3 irradiance = dotNL * directLight.color;
120
+ reflectedLight.directSpecular += irradiance * BRDF_GGX(directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness);
121
+ reflectedLight.directDiffuse += irradiance * BRDF_Lambert(material.diffuseColor);
122
+ }
123
+
124
+ void RE_IndirectDiffuse_Physical(const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {
125
+ reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert(material.diffuseColor);
126
+ }
127
+
128
+ void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {
129
+ // Both indirect specular and indirect diffuse light accumulate here
130
+ vec3 singleScattering = vec3(0.0);
131
+ vec3 multiScattering = vec3(0.0);
132
+ vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;
133
+ computeMultiscattering(geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering);
134
+ vec3 diffuse = material.diffuseColor * (1.0 - ( singleScattering + multiScattering));
135
+ reflectedLight.indirectSpecular += radiance * singleScattering;
136
+ reflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;
137
+ reflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;
138
+ }
139
139
  `;
@@ -6,9 +6,9 @@
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
8
  exports.matrix_scale = void 0;
9
- exports.matrix_scale = `
10
- float matrixScale(in mat4 m){
11
- vec4 r = m[0];
12
- return sqrt(r[0] * r[0] + r[1] * r[1] + r[2] * r[2]);
13
- }
9
+ exports.matrix_scale = `
10
+ float matrixScale(in mat4 m){
11
+ vec4 r = m[0];
12
+ return sqrt(r[0] * r[0] + r[1] * r[1] + r[2] * r[2]);
13
+ }
14
14
  `;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.normal_frag_params = void 0;
4
- exports.normal_frag_params = `
5
- varying vec3 vNormal;
4
+ exports.normal_frag_params = `
5
+ varying vec3 vNormal;
6
6
  `;
@@ -6,18 +6,18 @@
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
8
  exports.read_from_texture = void 0;
9
- exports.read_from_texture = `
10
- vec4 readFromTexture(const in sampler2D tex, const in float i, const in vec2 dim) {
11
- float x = intMod(i, dim.x);
12
- float y = floor(intDiv(i, dim.x));
13
- vec2 uv = (vec2(x, y) + 0.5) / dim;
14
- return texture2D(tex, uv);
15
- }
16
-
17
- vec4 readFromTexture(const in sampler2D tex, const in int i, const in vec2 dim) {
18
- int x = imod(i, int(dim.x));
19
- int y = i / int(dim.x);
20
- vec2 uv = (vec2(x, y) + 0.5) / dim;
21
- return texture2D(tex, uv);
22
- }
9
+ exports.read_from_texture = `
10
+ vec4 readFromTexture(const in sampler2D tex, const in float i, const in vec2 dim) {
11
+ float x = intMod(i, dim.x);
12
+ float y = floor(intDiv(i, dim.x));
13
+ vec2 uv = (vec2(x, y) + 0.5) / dim;
14
+ return texture2D(tex, uv);
15
+ }
16
+
17
+ vec4 readFromTexture(const in sampler2D tex, const in int i, const in vec2 dim) {
18
+ int x = imod(i, int(dim.x));
19
+ int y = i / int(dim.x);
20
+ vec2 uv = (vec2(x, y) + 0.5) / dim;
21
+ return texture2D(tex, uv);
22
+ }
23
23
  `;