molstar 3.6.0 → 3.8.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 (410) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +202 -202
  3. package/build/viewer/embedded.html +43 -43
  4. package/build/viewer/index.html +106 -106
  5. package/build/viewer/molstar.css +1 -1
  6. package/build/viewer/molstar.js +1 -1
  7. package/build/viewer/molstar.js.LICENSE.txt +0 -15
  8. package/lib/apps/docking-viewer/index.html +36 -36
  9. package/lib/apps/viewer/embedded.html +43 -43
  10. package/lib/apps/viewer/index.html +106 -106
  11. package/lib/cli/chem-comp-dict/create-ions.d.ts +2 -1
  12. package/lib/cli/chem-comp-dict/create-ions.js +3 -2
  13. package/lib/cli/cifschema/index.js +1 -1
  14. package/lib/cli/cifschema/util/cif-dic.js +1 -0
  15. package/lib/commonjs/cli/chem-comp-dict/create-ions.d.ts +2 -1
  16. package/lib/commonjs/cli/chem-comp-dict/create-ions.js +3 -2
  17. package/lib/commonjs/cli/cifschema/index.js +1 -1
  18. package/lib/commonjs/cli/cifschema/util/cif-dic.js +1 -0
  19. package/lib/commonjs/examples/alpha-orbitals/index.js +20 -15
  20. package/lib/commonjs/examples/proteopedia-wrapper/coloring.d.ts +20 -5
  21. package/lib/commonjs/extensions/anvil/behavior.d.ts +1 -1
  22. package/lib/commonjs/extensions/anvil/representation.d.ts +4 -4
  23. package/lib/commonjs/extensions/cellpack/representation.d.ts +1 -1
  24. package/lib/commonjs/extensions/dnatco/confal-pyramids/representation.d.ts +3 -3
  25. package/lib/commonjs/extensions/rcsb/assembly-symmetry/behavior.d.ts +1 -1
  26. package/lib/commonjs/extensions/rcsb/assembly-symmetry/representation.d.ts +1 -1
  27. package/lib/commonjs/extensions/rcsb/graphql/types.d.ts +284 -0
  28. package/lib/commonjs/extensions/rcsb/validation-report/representation.d.ts +5 -5
  29. package/lib/commonjs/mol-canvas3d/canvas3d.d.ts +2 -2
  30. package/lib/commonjs/mol-canvas3d/helper/camera-helper.d.ts +1 -1
  31. package/lib/commonjs/mol-canvas3d/helper/handle-helper.d.ts +1 -1
  32. package/lib/commonjs/mol-canvas3d/helper/helper.d.ts +2 -2
  33. package/lib/commonjs/mol-canvas3d/passes/draw.d.ts +0 -2
  34. package/lib/commonjs/mol-canvas3d/passes/draw.js +35 -70
  35. package/lib/commonjs/mol-canvas3d/passes/image.d.ts +1 -1
  36. package/lib/commonjs/mol-canvas3d/passes/pick.d.ts +1 -1
  37. package/lib/commonjs/mol-canvas3d/passes/pick.js +1 -1
  38. package/lib/commonjs/mol-canvas3d/passes/postprocessing.d.ts +1 -0
  39. package/lib/commonjs/mol-canvas3d/passes/postprocessing.js +16 -11
  40. package/lib/commonjs/mol-geo/geometry/color-data.d.ts +7 -10
  41. package/lib/commonjs/mol-geo/geometry/color-data.js +7 -4
  42. package/lib/commonjs/mol-geo/geometry/cylinders/cylinders.d.ts +2 -2
  43. package/lib/commonjs/mol-geo/geometry/cylinders/cylinders.js +3 -2
  44. package/lib/commonjs/mol-geo/geometry/lines/lines.d.ts +1 -0
  45. package/lib/commonjs/mol-geo/geometry/mesh/mesh.d.ts +1 -1
  46. package/lib/commonjs/mol-geo/geometry/mesh/mesh.js +3 -2
  47. package/lib/commonjs/mol-geo/geometry/points/points.d.ts +1 -1
  48. package/lib/commonjs/mol-geo/geometry/spheres/spheres.d.ts +1 -1
  49. package/lib/commonjs/mol-geo/geometry/spheres/spheres.js +3 -2
  50. package/lib/commonjs/mol-geo/geometry/texture-mesh/texture-mesh.d.ts +1 -1
  51. package/lib/commonjs/mol-geo/geometry/texture-mesh/texture-mesh.js +15 -4
  52. package/lib/commonjs/mol-geo/geometry/transparency-data.d.ts +1 -1
  53. package/lib/commonjs/mol-geo/geometry/transparency-data.js +3 -1
  54. package/lib/commonjs/mol-gl/renderable/cylinders.d.ts +2 -1
  55. package/lib/commonjs/mol-gl/renderable/cylinders.js +2 -2
  56. package/lib/commonjs/mol-gl/renderable/mesh.d.ts +2 -1
  57. package/lib/commonjs/mol-gl/renderable/mesh.js +2 -2
  58. package/lib/commonjs/mol-gl/renderable/schema.d.ts +2 -2
  59. package/lib/commonjs/mol-gl/renderable/schema.js +2 -2
  60. package/lib/commonjs/mol-gl/renderable/spheres.d.ts +2 -1
  61. package/lib/commonjs/mol-gl/renderable/spheres.js +2 -2
  62. package/lib/commonjs/mol-gl/renderable/texture-mesh.d.ts +2 -1
  63. package/lib/commonjs/mol-gl/renderable/texture-mesh.js +2 -2
  64. package/lib/commonjs/mol-gl/renderer.d.ts +5 -5
  65. package/lib/commonjs/mol-gl/renderer.js +114 -64
  66. package/lib/commonjs/mol-gl/scene.d.ts +1 -0
  67. package/lib/commonjs/mol-gl/scene.js +26 -1
  68. package/lib/commonjs/mol-gl/shader/chunks/apply-interior-color.glsl.d.ts +1 -1
  69. package/lib/commonjs/mol-gl/shader/chunks/apply-interior-color.glsl.js +1 -1
  70. package/lib/commonjs/mol-gl/shader/chunks/assign-material-color.glsl.d.ts +1 -1
  71. package/lib/commonjs/mol-gl/shader/chunks/assign-material-color.glsl.js +1 -1
  72. package/lib/commonjs/mol-gl/shader/chunks/check-picking-alpha.glsl.d.ts +1 -1
  73. package/lib/commonjs/mol-gl/shader/chunks/check-picking-alpha.glsl.js +1 -1
  74. package/lib/commonjs/mol-gl/shader/chunks/color-vert-params.glsl.d.ts +1 -1
  75. package/lib/commonjs/mol-gl/shader/chunks/color-vert-params.glsl.js +1 -1
  76. package/lib/commonjs/mol-gl/shader/chunks/common-frag-params.glsl.d.ts +1 -1
  77. package/lib/commonjs/mol-gl/shader/chunks/common-frag-params.glsl.js +1 -1
  78. package/lib/commonjs/mol-gl/shader/chunks/common.glsl.d.ts +1 -1
  79. package/lib/commonjs/mol-gl/shader/chunks/common.glsl.js +1 -1
  80. package/lib/commonjs/mol-gl/shader/chunks/wboit-write.glsl.d.ts +1 -1
  81. package/lib/commonjs/mol-gl/shader/chunks/wboit-write.glsl.js +1 -1
  82. package/lib/commonjs/mol-gl/shader/direct-volume.frag.d.ts +1 -1
  83. package/lib/commonjs/mol-gl/shader/direct-volume.frag.js +1 -1
  84. package/lib/commonjs/mol-gl/shader/image.frag.d.ts +1 -1
  85. package/lib/commonjs/mol-gl/shader/image.frag.js +1 -1
  86. package/lib/commonjs/mol-gl/shader/outlines.frag.d.ts +3 -2
  87. package/lib/commonjs/mol-gl/shader/outlines.frag.js +3 -2
  88. package/lib/commonjs/mol-gl/shader/postprocessing.frag.d.ts +1 -1
  89. package/lib/commonjs/mol-gl/shader/postprocessing.frag.js +1 -1
  90. package/lib/commonjs/mol-gl/shader/ssao.frag.d.ts +2 -2
  91. package/lib/commonjs/mol-gl/shader/ssao.frag.js +2 -2
  92. package/lib/commonjs/mol-gl/webgl/render-target.d.ts +3 -1
  93. package/lib/commonjs/mol-gl/webgl/render-target.js +3 -1
  94. package/lib/commonjs/mol-gl/webgl/renderbuffer.d.ts +2 -1
  95. package/lib/commonjs/mol-gl/webgl/renderbuffer.js +8 -1
  96. package/lib/commonjs/mol-gl/webgl/state.d.ts +7 -1
  97. package/lib/commonjs/mol-gl/webgl/state.js +28 -1
  98. package/lib/commonjs/mol-gl/webgl/texture.js +3 -0
  99. package/lib/commonjs/mol-io/reader/cif/schema/bird.d.ts +1 -1
  100. package/lib/commonjs/mol-io/reader/cif/schema/bird.js +1 -1
  101. package/lib/commonjs/mol-io/reader/cif/schema/ccd.d.ts +1 -1
  102. package/lib/commonjs/mol-io/reader/cif/schema/ccd.js +1 -1
  103. package/lib/commonjs/mol-io/reader/cif/schema/cif-core.d.ts +1 -1
  104. package/lib/commonjs/mol-io/reader/cif/schema/cif-core.js +1 -1
  105. package/lib/commonjs/mol-io/reader/cif/schema/mmcif.d.ts +3 -4
  106. package/lib/commonjs/mol-io/reader/cif/schema/mmcif.js +2 -3
  107. package/lib/commonjs/mol-io/reader/dx/parser.js +1 -1
  108. package/lib/commonjs/mol-io/writer/ligand-encoder.d.ts +4 -2
  109. package/lib/commonjs/mol-io/writer/ligand-encoder.js +9 -4
  110. package/lib/commonjs/mol-io/writer/mol/encoder.js +16 -4
  111. package/lib/commonjs/mol-io/writer/mol2/encoder.js +17 -4
  112. package/lib/commonjs/mol-math/geometry/lookup3d/grid.d.ts +1 -1
  113. package/lib/commonjs/mol-math/geometry/lookup3d/grid.js +3 -3
  114. package/lib/commonjs/mol-model/structure/model/properties/seconday-structure.d.ts +4 -2
  115. package/lib/commonjs/mol-model/structure/model/properties/seconday-structure.js +2 -1
  116. package/lib/commonjs/mol-model/structure/model/types/ions.d.ts +2 -2
  117. package/lib/commonjs/mol-model/structure/model/types/ions.js +2 -2
  118. package/lib/commonjs/mol-model/structure/model/types/saccharides.js +1 -1
  119. package/lib/commonjs/mol-model/structure/model/types.d.ts +1 -1
  120. package/lib/commonjs/mol-model/structure/model/types.js +43 -41
  121. package/lib/commonjs/mol-model-formats/shape/ply.d.ts +2 -2
  122. package/lib/commonjs/mol-model-formats/structure/common/property.js +2 -0
  123. package/lib/commonjs/mol-model-formats/structure/property/secondary-structure.d.ts +1 -1
  124. package/lib/commonjs/mol-model-formats/structure/property/secondary-structure.js +2 -2
  125. package/lib/commonjs/mol-model-props/computed/representations/interactions-inter-unit-cylinder.d.ts +1 -1
  126. package/lib/commonjs/mol-model-props/computed/representations/interactions-intra-unit-cylinder.d.ts +1 -1
  127. package/lib/commonjs/mol-model-props/computed/representations/interactions.d.ts +3 -3
  128. package/lib/commonjs/mol-model-props/integrative/cross-link-restraint/representation.d.ts +4 -4
  129. package/lib/commonjs/mol-plugin/behavior/dynamic/volume-streaming/model.d.ts +3 -2
  130. package/lib/commonjs/mol-plugin/commands.d.ts +1 -1
  131. package/lib/commonjs/mol-plugin/util/viewport-screenshot.d.ts +3 -3
  132. package/lib/commonjs/mol-plugin-state/helpers/root-structure.js +3 -1
  133. package/lib/commonjs/mol-plugin-state/transforms/representation.d.ts +6 -6
  134. package/lib/commonjs/mol-plugin-ui/base.d.ts +3 -1
  135. package/lib/commonjs/mol-plugin-ui/controls/color.d.ts +1 -1
  136. package/lib/commonjs/mol-plugin-ui/controls/common.d.ts +2 -0
  137. package/lib/commonjs/mol-plugin-ui/hooks/use-behavior.d.ts +1 -1
  138. package/lib/commonjs/mol-plugin-ui/hooks/use-behavior.js +21 -7
  139. package/lib/commonjs/mol-plugin-ui/plugin.d.ts +2 -0
  140. package/lib/commonjs/mol-plugin-ui/plugin.js +2 -2
  141. package/lib/commonjs/mol-plugin-ui/spec.d.ts +1 -0
  142. package/lib/commonjs/mol-plugin-ui/state/common.js +6 -7
  143. package/lib/commonjs/mol-plugin-ui/task.d.ts +2 -21
  144. package/lib/commonjs/mol-plugin-ui/task.js +39 -43
  145. package/lib/commonjs/mol-plugin-ui/viewport/help.d.ts +4 -1
  146. package/lib/commonjs/mol-repr/shape/loci/angle.d.ts +1 -1
  147. package/lib/commonjs/mol-repr/shape/loci/dihedral.d.ts +1 -1
  148. package/lib/commonjs/mol-repr/shape/loci/orientation.d.ts +1 -1
  149. package/lib/commonjs/mol-repr/shape/loci/plane.d.ts +1 -1
  150. package/lib/commonjs/mol-repr/shape/model/unitcell.d.ts +1 -1
  151. package/lib/commonjs/mol-repr/structure/complex-visual.d.ts +3 -3
  152. package/lib/commonjs/mol-repr/structure/params.d.ts +4 -4
  153. package/lib/commonjs/mol-repr/structure/registry.d.ts +10 -10
  154. package/lib/commonjs/mol-repr/structure/representation/backbone.d.ts +3 -3
  155. package/lib/commonjs/mol-repr/structure/representation/ball-and-stick.d.ts +3 -3
  156. package/lib/commonjs/mol-repr/structure/representation/carbohydrate.d.ts +3 -3
  157. package/lib/commonjs/mol-repr/structure/representation/cartoon.d.ts +3 -3
  158. package/lib/commonjs/mol-repr/structure/representation/ellipsoid.d.ts +3 -3
  159. package/lib/commonjs/mol-repr/structure/representation/gaussian-surface.d.ts +3 -3
  160. package/lib/commonjs/mol-repr/structure/representation/molecular-surface.d.ts +3 -3
  161. package/lib/commonjs/mol-repr/structure/representation/orientation.d.ts +3 -3
  162. package/lib/commonjs/mol-repr/structure/representation/putty.d.ts +3 -3
  163. package/lib/commonjs/mol-repr/structure/representation/spacefill.d.ts +3 -3
  164. package/lib/commonjs/mol-repr/structure/units-visual.d.ts +4 -4
  165. package/lib/commonjs/mol-repr/structure/visual/bond-inter-unit-cylinder.d.ts +2 -2
  166. package/lib/commonjs/mol-repr/structure/visual/bond-intra-unit-cylinder.d.ts +2 -2
  167. package/lib/commonjs/mol-repr/structure/visual/carbohydrate-link-cylinder.d.ts +1 -1
  168. package/lib/commonjs/mol-repr/structure/visual/carbohydrate-symbol-mesh.d.ts +1 -1
  169. package/lib/commonjs/mol-repr/structure/visual/carbohydrate-terminal-link-cylinder.d.ts +1 -1
  170. package/lib/commonjs/mol-repr/structure/visual/element-sphere.d.ts +2 -2
  171. package/lib/commonjs/mol-repr/structure/visual/ellipsoid-mesh.d.ts +1 -1
  172. package/lib/commonjs/mol-repr/structure/visual/gaussian-surface-mesh.d.ts +4 -4
  173. package/lib/commonjs/mol-repr/structure/visual/molecular-surface-mesh.d.ts +1 -1
  174. package/lib/commonjs/mol-repr/structure/visual/nucleotide-block-mesh.d.ts +1 -1
  175. package/lib/commonjs/mol-repr/structure/visual/nucleotide-ring-mesh.d.ts +1 -1
  176. package/lib/commonjs/mol-repr/structure/visual/orientation-ellipsoid-mesh.d.ts +1 -1
  177. package/lib/commonjs/mol-repr/structure/visual/polymer-backbone-cylinder.d.ts +2 -2
  178. package/lib/commonjs/mol-repr/structure/visual/polymer-backbone-sphere.d.ts +2 -2
  179. package/lib/commonjs/mol-repr/structure/visual/polymer-direction-wedge.d.ts +1 -1
  180. package/lib/commonjs/mol-repr/structure/visual/polymer-gap-cylinder.d.ts +1 -1
  181. package/lib/commonjs/mol-repr/structure/visual/polymer-trace-mesh.d.ts +1 -1
  182. package/lib/commonjs/mol-repr/structure/visual/polymer-tube-mesh.d.ts +1 -1
  183. package/lib/commonjs/mol-repr/util.d.ts +1 -1
  184. package/lib/commonjs/mol-repr/util.js +1 -1
  185. package/lib/commonjs/mol-repr/volume/isosurface.d.ts +5 -5
  186. package/lib/commonjs/mol-repr/volume/registry.d.ts +1 -1
  187. package/lib/commonjs/mol-repr/volume/slice.js +1 -1
  188. package/lib/commonjs/mol-script/language/builder.d.ts +0 -1
  189. package/lib/commonjs/mol-theme/color/volume-value.d.ts +3 -2
  190. package/lib/commonjs/mol-theme/color/volume-value.js +1 -3
  191. package/lib/commonjs/mol-theme/color.d.ts +55 -39
  192. package/lib/commonjs/mol-theme/color.js +1 -1
  193. package/lib/commonjs/mol-theme/theme.d.ts +8 -7
  194. package/lib/commonjs/mol-theme/theme.js +1 -1
  195. package/lib/commonjs/servers/model/server/query.js +1 -3
  196. package/lib/commonjs/servers/model/version.d.ts +1 -1
  197. package/lib/commonjs/servers/model/version.js +1 -1
  198. package/lib/examples/alpha-orbitals/index.html +61 -61
  199. package/lib/examples/alpha-orbitals/index.js +20 -15
  200. package/lib/examples/basic-wrapper/index.html +137 -137
  201. package/lib/examples/lighting/index.html +88 -88
  202. package/lib/examples/proteopedia-wrapper/coloring.d.ts +20 -5
  203. package/lib/examples/proteopedia-wrapper/index.html +236 -236
  204. package/lib/extensions/anvil/behavior.d.ts +1 -1
  205. package/lib/extensions/anvil/representation.d.ts +4 -4
  206. package/lib/extensions/cellpack/representation.d.ts +1 -1
  207. package/lib/extensions/dnatco/confal-pyramids/representation.d.ts +3 -3
  208. package/lib/extensions/rcsb/assembly-symmetry/behavior.d.ts +1 -1
  209. package/lib/extensions/rcsb/assembly-symmetry/representation.d.ts +1 -1
  210. package/lib/extensions/rcsb/graphql/types.d.ts +284 -0
  211. package/lib/extensions/rcsb/validation-report/representation.d.ts +5 -5
  212. package/lib/mol-canvas3d/canvas3d.d.ts +2 -2
  213. package/lib/mol-canvas3d/helper/camera-helper.d.ts +1 -1
  214. package/lib/mol-canvas3d/helper/handle-helper.d.ts +1 -1
  215. package/lib/mol-canvas3d/helper/helper.d.ts +2 -2
  216. package/lib/mol-canvas3d/passes/draw.d.ts +0 -2
  217. package/lib/mol-canvas3d/passes/draw.js +32 -67
  218. package/lib/mol-canvas3d/passes/image.d.ts +1 -1
  219. package/lib/mol-canvas3d/passes/pick.d.ts +1 -1
  220. package/lib/mol-canvas3d/passes/pick.js +1 -1
  221. package/lib/mol-canvas3d/passes/postprocessing.d.ts +1 -0
  222. package/lib/mol-canvas3d/passes/postprocessing.js +16 -11
  223. package/lib/mol-geo/geometry/color-data.d.ts +7 -10
  224. package/lib/mol-geo/geometry/color-data.js +7 -4
  225. package/lib/mol-geo/geometry/cylinders/cylinders.d.ts +2 -2
  226. package/lib/mol-geo/geometry/cylinders/cylinders.js +3 -2
  227. package/lib/mol-geo/geometry/lines/lines.d.ts +1 -0
  228. package/lib/mol-geo/geometry/mesh/mesh.d.ts +1 -1
  229. package/lib/mol-geo/geometry/mesh/mesh.js +3 -2
  230. package/lib/mol-geo/geometry/points/points.d.ts +1 -1
  231. package/lib/mol-geo/geometry/spheres/spheres.d.ts +1 -1
  232. package/lib/mol-geo/geometry/spheres/spheres.js +3 -2
  233. package/lib/mol-geo/geometry/texture-mesh/texture-mesh.d.ts +1 -1
  234. package/lib/mol-geo/geometry/texture-mesh/texture-mesh.js +15 -4
  235. package/lib/mol-geo/geometry/transparency-data.d.ts +1 -1
  236. package/lib/mol-geo/geometry/transparency-data.js +3 -1
  237. package/lib/mol-gl/renderable/cylinders.d.ts +2 -1
  238. package/lib/mol-gl/renderable/cylinders.js +2 -2
  239. package/lib/mol-gl/renderable/mesh.d.ts +2 -1
  240. package/lib/mol-gl/renderable/mesh.js +2 -2
  241. package/lib/mol-gl/renderable/schema.d.ts +2 -2
  242. package/lib/mol-gl/renderable/schema.js +2 -2
  243. package/lib/mol-gl/renderable/spheres.d.ts +2 -1
  244. package/lib/mol-gl/renderable/spheres.js +2 -2
  245. package/lib/mol-gl/renderable/texture-mesh.d.ts +2 -1
  246. package/lib/mol-gl/renderable/texture-mesh.js +2 -2
  247. package/lib/mol-gl/renderer.d.ts +5 -5
  248. package/lib/mol-gl/renderer.js +114 -64
  249. package/lib/mol-gl/scene.d.ts +1 -0
  250. package/lib/mol-gl/scene.js +26 -1
  251. package/lib/mol-gl/shader/chunks/apply-interior-color.glsl.d.ts +1 -1
  252. package/lib/mol-gl/shader/chunks/apply-interior-color.glsl.js +1 -1
  253. package/lib/mol-gl/shader/chunks/assign-material-color.glsl.d.ts +1 -1
  254. package/lib/mol-gl/shader/chunks/assign-material-color.glsl.js +1 -1
  255. package/lib/mol-gl/shader/chunks/check-picking-alpha.glsl.d.ts +1 -1
  256. package/lib/mol-gl/shader/chunks/check-picking-alpha.glsl.js +1 -1
  257. package/lib/mol-gl/shader/chunks/color-vert-params.glsl.d.ts +1 -1
  258. package/lib/mol-gl/shader/chunks/color-vert-params.glsl.js +1 -1
  259. package/lib/mol-gl/shader/chunks/common-frag-params.glsl.d.ts +1 -1
  260. package/lib/mol-gl/shader/chunks/common-frag-params.glsl.js +1 -1
  261. package/lib/mol-gl/shader/chunks/common.glsl.d.ts +1 -1
  262. package/lib/mol-gl/shader/chunks/common.glsl.js +1 -1
  263. package/lib/mol-gl/shader/chunks/wboit-write.glsl.d.ts +1 -1
  264. package/lib/mol-gl/shader/chunks/wboit-write.glsl.js +1 -1
  265. package/lib/mol-gl/shader/direct-volume.frag.d.ts +1 -1
  266. package/lib/mol-gl/shader/direct-volume.frag.js +1 -1
  267. package/lib/mol-gl/shader/image.frag.d.ts +1 -1
  268. package/lib/mol-gl/shader/image.frag.js +1 -1
  269. package/lib/mol-gl/shader/outlines.frag.d.ts +3 -2
  270. package/lib/mol-gl/shader/outlines.frag.js +3 -2
  271. package/lib/mol-gl/shader/postprocessing.frag.d.ts +1 -1
  272. package/lib/mol-gl/shader/postprocessing.frag.js +1 -1
  273. package/lib/mol-gl/shader/ssao.frag.d.ts +2 -2
  274. package/lib/mol-gl/shader/ssao.frag.js +2 -2
  275. package/lib/mol-gl/webgl/render-target.d.ts +3 -1
  276. package/lib/mol-gl/webgl/render-target.js +3 -1
  277. package/lib/mol-gl/webgl/renderbuffer.d.ts +2 -1
  278. package/lib/mol-gl/webgl/renderbuffer.js +8 -1
  279. package/lib/mol-gl/webgl/state.d.ts +7 -1
  280. package/lib/mol-gl/webgl/state.js +28 -1
  281. package/lib/mol-gl/webgl/texture.js +3 -0
  282. package/lib/mol-io/reader/cif/schema/bird.d.ts +1 -1
  283. package/lib/mol-io/reader/cif/schema/bird.js +1 -1
  284. package/lib/mol-io/reader/cif/schema/ccd.d.ts +1 -1
  285. package/lib/mol-io/reader/cif/schema/ccd.js +1 -1
  286. package/lib/mol-io/reader/cif/schema/cif-core.d.ts +1 -1
  287. package/lib/mol-io/reader/cif/schema/cif-core.js +1 -1
  288. package/lib/mol-io/reader/cif/schema/mmcif.d.ts +3 -4
  289. package/lib/mol-io/reader/cif/schema/mmcif.js +2 -3
  290. package/lib/mol-io/reader/dx/parser.js +1 -1
  291. package/lib/mol-io/writer/ligand-encoder.d.ts +4 -2
  292. package/lib/mol-io/writer/ligand-encoder.js +9 -4
  293. package/lib/mol-io/writer/mol/encoder.js +16 -4
  294. package/lib/mol-io/writer/mol2/encoder.js +17 -4
  295. package/lib/mol-math/geometry/lookup3d/grid.d.ts +1 -1
  296. package/lib/mol-math/geometry/lookup3d/grid.js +3 -3
  297. package/lib/mol-model/structure/model/properties/seconday-structure.d.ts +4 -2
  298. package/lib/mol-model/structure/model/properties/seconday-structure.js +2 -1
  299. package/lib/mol-model/structure/model/types/ions.d.ts +2 -2
  300. package/lib/mol-model/structure/model/types/ions.js +2 -2
  301. package/lib/mol-model/structure/model/types/saccharides.js +1 -1
  302. package/lib/mol-model/structure/model/types.d.ts +1 -1
  303. package/lib/mol-model/structure/model/types.js +43 -41
  304. package/lib/mol-model-formats/shape/ply.d.ts +2 -2
  305. package/lib/mol-model-formats/structure/common/property.js +2 -0
  306. package/lib/mol-model-formats/structure/property/secondary-structure.d.ts +1 -1
  307. package/lib/mol-model-formats/structure/property/secondary-structure.js +2 -2
  308. package/lib/mol-model-props/computed/representations/interactions-inter-unit-cylinder.d.ts +1 -1
  309. package/lib/mol-model-props/computed/representations/interactions-intra-unit-cylinder.d.ts +1 -1
  310. package/lib/mol-model-props/computed/representations/interactions.d.ts +3 -3
  311. package/lib/mol-model-props/integrative/cross-link-restraint/representation.d.ts +4 -4
  312. package/lib/mol-plugin/behavior/dynamic/volume-streaming/model.d.ts +3 -2
  313. package/lib/mol-plugin/commands.d.ts +1 -1
  314. package/lib/mol-plugin/util/viewport-screenshot.d.ts +3 -3
  315. package/lib/mol-plugin/version.js +2 -2
  316. package/lib/mol-plugin-state/helpers/root-structure.js +3 -1
  317. package/lib/mol-plugin-state/transforms/representation.d.ts +6 -6
  318. package/lib/mol-plugin-ui/base.d.ts +3 -1
  319. package/lib/mol-plugin-ui/controls/color.d.ts +1 -1
  320. package/lib/mol-plugin-ui/controls/common.d.ts +2 -0
  321. package/lib/mol-plugin-ui/hooks/use-behavior.d.ts +1 -1
  322. package/lib/mol-plugin-ui/hooks/use-behavior.js +20 -7
  323. package/lib/mol-plugin-ui/plugin.d.ts +2 -0
  324. package/lib/mol-plugin-ui/plugin.js +2 -2
  325. package/lib/mol-plugin-ui/skin/base/base.scss +32 -32
  326. package/lib/mol-plugin-ui/skin/base/components/controls-base.scss +333 -333
  327. package/lib/mol-plugin-ui/skin/base/components/controls.scss +418 -418
  328. package/lib/mol-plugin-ui/skin/base/components/help.scss +27 -27
  329. package/lib/mol-plugin-ui/skin/base/components/line-graph.scss +67 -67
  330. package/lib/mol-plugin-ui/skin/base/components/log.scss +100 -100
  331. package/lib/mol-plugin-ui/skin/base/components/misc.scss +643 -643
  332. package/lib/mol-plugin-ui/skin/base/components/sequence.scss +125 -125
  333. package/lib/mol-plugin-ui/skin/base/components/slider.scss +165 -165
  334. package/lib/mol-plugin-ui/skin/base/components/tasks.scss +99 -99
  335. package/lib/mol-plugin-ui/skin/base/components/toast.scss +83 -83
  336. package/lib/mol-plugin-ui/skin/base/components/transformer.scss +163 -163
  337. package/lib/mol-plugin-ui/skin/base/components/viewport.scss +128 -128
  338. package/lib/mol-plugin-ui/skin/base/layout/common.scss +71 -71
  339. package/lib/mol-plugin-ui/skin/base/layout/controls-landscape.scss +89 -89
  340. package/lib/mol-plugin-ui/skin/base/layout/controls-outside.scss +98 -98
  341. package/lib/mol-plugin-ui/skin/base/layout/controls-portrait.scss +108 -108
  342. package/lib/mol-plugin-ui/skin/base/layout.scss +40 -40
  343. package/lib/mol-plugin-ui/skin/base/logo.scss +12 -12
  344. package/lib/mol-plugin-ui/skin/base/normalize.scss +209 -209
  345. package/lib/mol-plugin-ui/skin/base/ui.scss +40 -40
  346. package/lib/mol-plugin-ui/skin/base/variables.scss +85 -85
  347. package/lib/mol-plugin-ui/skin/blue.scss +1 -1
  348. package/lib/mol-plugin-ui/skin/colors/blue.scss +23 -23
  349. package/lib/mol-plugin-ui/skin/colors/dark.scss +23 -23
  350. package/lib/mol-plugin-ui/skin/colors/light.scss +29 -29
  351. package/lib/mol-plugin-ui/skin/dark.scss +1 -1
  352. package/lib/mol-plugin-ui/skin/light.scss +1 -1
  353. package/lib/mol-plugin-ui/spec.d.ts +1 -0
  354. package/lib/mol-plugin-ui/state/common.js +7 -8
  355. package/lib/mol-plugin-ui/task.d.ts +2 -21
  356. package/lib/mol-plugin-ui/task.js +40 -46
  357. package/lib/mol-plugin-ui/viewport/help.d.ts +4 -1
  358. package/lib/mol-repr/shape/loci/angle.d.ts +1 -1
  359. package/lib/mol-repr/shape/loci/dihedral.d.ts +1 -1
  360. package/lib/mol-repr/shape/loci/orientation.d.ts +1 -1
  361. package/lib/mol-repr/shape/loci/plane.d.ts +1 -1
  362. package/lib/mol-repr/shape/model/unitcell.d.ts +1 -1
  363. package/lib/mol-repr/structure/complex-visual.d.ts +3 -3
  364. package/lib/mol-repr/structure/params.d.ts +4 -4
  365. package/lib/mol-repr/structure/registry.d.ts +10 -10
  366. package/lib/mol-repr/structure/representation/backbone.d.ts +3 -3
  367. package/lib/mol-repr/structure/representation/ball-and-stick.d.ts +3 -3
  368. package/lib/mol-repr/structure/representation/carbohydrate.d.ts +3 -3
  369. package/lib/mol-repr/structure/representation/cartoon.d.ts +3 -3
  370. package/lib/mol-repr/structure/representation/ellipsoid.d.ts +3 -3
  371. package/lib/mol-repr/structure/representation/gaussian-surface.d.ts +3 -3
  372. package/lib/mol-repr/structure/representation/molecular-surface.d.ts +3 -3
  373. package/lib/mol-repr/structure/representation/orientation.d.ts +3 -3
  374. package/lib/mol-repr/structure/representation/putty.d.ts +3 -3
  375. package/lib/mol-repr/structure/representation/spacefill.d.ts +3 -3
  376. package/lib/mol-repr/structure/units-visual.d.ts +4 -4
  377. package/lib/mol-repr/structure/visual/bond-inter-unit-cylinder.d.ts +2 -2
  378. package/lib/mol-repr/structure/visual/bond-intra-unit-cylinder.d.ts +2 -2
  379. package/lib/mol-repr/structure/visual/carbohydrate-link-cylinder.d.ts +1 -1
  380. package/lib/mol-repr/structure/visual/carbohydrate-symbol-mesh.d.ts +1 -1
  381. package/lib/mol-repr/structure/visual/carbohydrate-terminal-link-cylinder.d.ts +1 -1
  382. package/lib/mol-repr/structure/visual/element-sphere.d.ts +2 -2
  383. package/lib/mol-repr/structure/visual/ellipsoid-mesh.d.ts +1 -1
  384. package/lib/mol-repr/structure/visual/gaussian-surface-mesh.d.ts +4 -4
  385. package/lib/mol-repr/structure/visual/molecular-surface-mesh.d.ts +1 -1
  386. package/lib/mol-repr/structure/visual/nucleotide-block-mesh.d.ts +1 -1
  387. package/lib/mol-repr/structure/visual/nucleotide-ring-mesh.d.ts +1 -1
  388. package/lib/mol-repr/structure/visual/orientation-ellipsoid-mesh.d.ts +1 -1
  389. package/lib/mol-repr/structure/visual/polymer-backbone-cylinder.d.ts +2 -2
  390. package/lib/mol-repr/structure/visual/polymer-backbone-sphere.d.ts +2 -2
  391. package/lib/mol-repr/structure/visual/polymer-direction-wedge.d.ts +1 -1
  392. package/lib/mol-repr/structure/visual/polymer-gap-cylinder.d.ts +1 -1
  393. package/lib/mol-repr/structure/visual/polymer-trace-mesh.d.ts +1 -1
  394. package/lib/mol-repr/structure/visual/polymer-tube-mesh.d.ts +1 -1
  395. package/lib/mol-repr/util.d.ts +1 -1
  396. package/lib/mol-repr/util.js +1 -1
  397. package/lib/mol-repr/volume/isosurface.d.ts +5 -5
  398. package/lib/mol-repr/volume/registry.d.ts +1 -1
  399. package/lib/mol-repr/volume/slice.js +1 -1
  400. package/lib/mol-script/language/builder.d.ts +0 -1
  401. package/lib/mol-theme/color/volume-value.d.ts +3 -2
  402. package/lib/mol-theme/color/volume-value.js +2 -4
  403. package/lib/mol-theme/color.d.ts +55 -39
  404. package/lib/mol-theme/color.js +1 -1
  405. package/lib/mol-theme/theme.d.ts +8 -7
  406. package/lib/mol-theme/theme.js +1 -1
  407. package/lib/servers/model/server/query.js +1 -3
  408. package/lib/servers/model/version.d.ts +1 -1
  409. package/lib/servers/model/version.js +1 -1
  410. package/package.json +162 -162
@@ -7,7 +7,6 @@ import { ICamera } from '../mol-canvas3d/camera';
7
7
  import { Scene } from './scene';
8
8
  import { WebGLContext } from './webgl/context';
9
9
  import { Color } from '../mol-util/color';
10
- import { GraphicsRenderVariant } from './webgl/render-item';
11
10
  import { ParamDefinition as PD } from '../mol-util/param-definition';
12
11
  import { Texture } from './webgl/texture';
13
12
  export interface RendererStats {
@@ -38,17 +37,18 @@ interface Renderer {
38
37
  readonly stats: RendererStats;
39
38
  readonly props: Readonly<RendererProps>;
40
39
  clear: (toBackgroundColor: boolean, ignoreTransparentBackground?: boolean) => void;
41
- clearDepth: () => void;
40
+ clearDepth: (packed?: boolean) => void;
42
41
  update: (camera: ICamera) => void;
43
- renderPick: (group: Scene.Group, camera: ICamera, variant: GraphicsRenderVariant, depthTexture: Texture | null, pickType: PickType) => void;
42
+ renderPick: (group: Scene.Group, camera: ICamera, variant: 'pick' | 'depth', depthTexture: Texture | null, pickType: PickType) => void;
44
43
  renderDepth: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void;
44
+ renderDepthOpaque: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void;
45
+ renderDepthTransparent: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void;
45
46
  renderMarkingDepth: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void;
46
47
  renderMarkingMask: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void;
47
48
  renderBlended: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void;
48
49
  renderBlendedOpaque: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void;
49
50
  renderBlendedTransparent: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void;
50
- renderBlendedVolumeOpaque: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void;
51
- renderBlendedVolumeTransparent: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void;
51
+ renderBlendedVolume: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void;
52
52
  renderWboitOpaque: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void;
53
53
  renderWboitTransparent: (group: Scene.Group, camera: ICamera, depthTexture: Texture | null) => void;
54
54
  setProps: (props: Partial<RendererProps>) => void;
@@ -64,7 +64,9 @@ var Renderer;
64
64
  var drawingBufferSize = Vec2.create(gl.drawingBufferWidth, gl.drawingBufferHeight);
65
65
  var bgColor = Color.toVec3Normalized(Vec3(), p.backgroundColor);
66
66
  var transparentBackground = false;
67
- var emptyDepthTexture = ctx.resources.texture('image-depth', 'depth', 'ushort', 'nearest');
67
+ var emptyDepthTexture = ctx.resources.texture('image-uint8', 'rgba', 'ubyte', 'nearest');
68
+ emptyDepthTexture.define(1, 1);
69
+ emptyDepthTexture.load({ array: new Uint8Array([255, 255, 255, 255]), width: 1, height: 1 });
68
70
  var sharedTexturesList = [
69
71
  ['tDepth', emptyDepthTexture]
70
72
  ];
@@ -101,7 +103,7 @@ var Renderer;
101
103
  uFogNear: ValueCell.create(1),
102
104
  uFogFar: ValueCell.create(10000),
103
105
  uFogColor: ValueCell.create(bgColor),
104
- uRenderWboit: ValueCell.create(false),
106
+ uRenderMask: ValueCell.create(0),
105
107
  uMarkingDepthTest: ValueCell.create(false),
106
108
  uPickType: ValueCell.create(0 /* None */),
107
109
  uMarkingType: ValueCell.create(0 /* None */),
@@ -122,7 +124,8 @@ var Renderer;
122
124
  };
123
125
  var globalUniformList = Object.entries(globalUniforms);
124
126
  var globalUniformsNeedUpdate = true;
125
- var renderObject = function (r, variant) {
127
+ var renderObject = function (r, variant, flag) {
128
+ var _a, _b, _c;
126
129
  if (r.state.disposed || !r.state.visible || (!r.state.pickable && variant === 'pick')) {
127
130
  return;
128
131
  }
@@ -157,6 +160,28 @@ var Renderer;
157
160
  state.depthMask(false);
158
161
  }
159
162
  }
163
+ else if (flag === 1 /* BlendedFront */) {
164
+ state.enable(gl.CULL_FACE);
165
+ if ((_a = r.values.dFlipSided) === null || _a === void 0 ? void 0 : _a.ref.value) {
166
+ state.frontFace(gl.CW);
167
+ state.cullFace(gl.FRONT);
168
+ }
169
+ else {
170
+ state.frontFace(gl.CCW);
171
+ state.cullFace(gl.BACK);
172
+ }
173
+ }
174
+ else if (flag === 2 /* BlendedBack */) {
175
+ state.enable(gl.CULL_FACE);
176
+ if ((_b = r.values.dFlipSided) === null || _b === void 0 ? void 0 : _b.ref.value) {
177
+ state.frontFace(gl.CW);
178
+ state.cullFace(gl.BACK);
179
+ }
180
+ else {
181
+ state.frontFace(gl.CCW);
182
+ state.cullFace(gl.FRONT);
183
+ }
184
+ }
160
185
  else {
161
186
  if (r.values.uDoubleSided) {
162
187
  if (r.values.uDoubleSided.ref.value || r.values.hasReflection.ref.value) {
@@ -170,15 +195,9 @@ var Renderer;
170
195
  // webgl default
171
196
  state.disable(gl.CULL_FACE);
172
197
  }
173
- if (r.values.dFlipSided) {
174
- if (r.values.dFlipSided.ref.value) {
175
- state.frontFace(gl.CW);
176
- state.cullFace(gl.FRONT);
177
- }
178
- else {
179
- state.frontFace(gl.CCW);
180
- state.cullFace(gl.BACK);
181
- }
198
+ if ((_c = r.values.dFlipSided) === null || _c === void 0 ? void 0 : _c.ref.value) {
199
+ state.frontFace(gl.CW);
200
+ state.cullFace(gl.FRONT);
182
201
  }
183
202
  else {
184
203
  // webgl default
@@ -203,14 +222,14 @@ var Renderer;
203
222
  ValueCell.updateIfChanged(globalUniforms.uFogNear, camera.fogNear);
204
223
  ValueCell.updateIfChanged(globalUniforms.uTransparentBackground, transparentBackground);
205
224
  };
206
- var updateInternal = function (group, camera, depthTexture, renderWboit, markingDepthTest) {
225
+ var updateInternal = function (group, camera, depthTexture, renderMask, markingDepthTest) {
207
226
  arrayMapUpsert(sharedTexturesList, 'tDepth', depthTexture || emptyDepthTexture);
208
227
  ValueCell.update(globalUniforms.uModel, group.view);
209
228
  ValueCell.update(globalUniforms.uModelView, Mat4.mul(modelView, group.view, camera.view));
210
229
  ValueCell.update(globalUniforms.uInvModelView, Mat4.invert(invModelView, modelView));
211
230
  ValueCell.update(globalUniforms.uModelViewProjection, Mat4.mul(modelViewProjection, modelView, camera.projection));
212
231
  ValueCell.update(globalUniforms.uInvModelViewProjection, Mat4.invert(invModelViewProjection, modelViewProjection));
213
- ValueCell.updateIfChanged(globalUniforms.uRenderWboit, renderWboit);
232
+ ValueCell.updateIfChanged(globalUniforms.uRenderMask, renderMask);
214
233
  ValueCell.updateIfChanged(globalUniforms.uMarkingDepthTest, markingDepthTest);
215
234
  state.enable(gl.SCISSOR_TEST);
216
235
  state.colorMask(true, true, true, true);
@@ -224,12 +243,12 @@ var Renderer;
224
243
  state.disable(gl.BLEND);
225
244
  state.enable(gl.DEPTH_TEST);
226
245
  state.depthMask(true);
227
- updateInternal(group, camera, depthTexture, false, false);
246
+ updateInternal(group, camera, depthTexture, 0 /* All */, false);
228
247
  ValueCell.updateIfChanged(globalUniforms.uPickType, pickType);
229
248
  var renderables = group.renderables;
230
249
  for (var i = 0, il = renderables.length; i < il; ++i) {
231
250
  if (!renderables[i].state.colorOnly) {
232
- renderObject(renderables[i], variant);
251
+ renderObject(renderables[i], variant, 0 /* None */);
233
252
  }
234
253
  }
235
254
  };
@@ -237,23 +256,51 @@ var Renderer;
237
256
  state.disable(gl.BLEND);
238
257
  state.enable(gl.DEPTH_TEST);
239
258
  state.depthMask(true);
240
- updateInternal(group, camera, depthTexture, false, false);
259
+ updateInternal(group, camera, depthTexture, 0 /* All */, false);
260
+ var renderables = group.renderables;
261
+ for (var i = 0, il = renderables.length; i < il; ++i) {
262
+ renderObject(renderables[i], 'depth', 0 /* None */);
263
+ }
264
+ };
265
+ var renderDepthOpaque = function (group, camera, depthTexture) {
266
+ var _a;
267
+ state.disable(gl.BLEND);
268
+ state.enable(gl.DEPTH_TEST);
269
+ state.depthMask(true);
270
+ updateInternal(group, camera, depthTexture, 1 /* Opaque */, false);
271
+ var renderables = group.renderables;
272
+ for (var i = 0, il = renderables.length; i < il; ++i) {
273
+ var r = renderables[i];
274
+ if (r.state.opaque && r.values.transparencyAverage.ref.value !== 1 && !((_a = r.values.dXrayShaded) === null || _a === void 0 ? void 0 : _a.ref.value)) {
275
+ renderObject(r, 'depth', 0 /* None */);
276
+ }
277
+ }
278
+ };
279
+ var renderDepthTransparent = function (group, camera, depthTexture) {
280
+ var _a;
281
+ state.disable(gl.BLEND);
282
+ state.enable(gl.DEPTH_TEST);
283
+ state.depthMask(true);
284
+ updateInternal(group, camera, depthTexture, 2 /* Transparent */, false);
241
285
  var renderables = group.renderables;
242
286
  for (var i = 0, il = renderables.length; i < il; ++i) {
243
- renderObject(renderables[i], 'depth');
287
+ var r = renderables[i];
288
+ if (!r.state.opaque || r.values.transparencyAverage.ref.value > 0 || ((_a = r.values.dXrayShaded) === null || _a === void 0 ? void 0 : _a.ref.value)) {
289
+ renderObject(r, 'depth', 0 /* None */);
290
+ }
244
291
  }
245
292
  };
246
293
  var renderMarkingDepth = function (group, camera, depthTexture) {
247
294
  state.disable(gl.BLEND);
248
295
  state.enable(gl.DEPTH_TEST);
249
296
  state.depthMask(true);
250
- updateInternal(group, camera, depthTexture, false, false);
297
+ updateInternal(group, camera, depthTexture, 0 /* All */, false);
251
298
  ValueCell.updateIfChanged(globalUniforms.uMarkingType, 1 /* Depth */);
252
299
  var renderables = group.renderables;
253
300
  for (var i = 0, il = renderables.length; i < il; ++i) {
254
301
  var r = renderables[i];
255
302
  if (r.values.markerAverage.ref.value !== 1) {
256
- renderObject(renderables[i], 'marking');
303
+ renderObject(renderables[i], 'marking', 0 /* None */);
257
304
  }
258
305
  }
259
306
  };
@@ -261,13 +308,13 @@ var Renderer;
261
308
  state.disable(gl.BLEND);
262
309
  state.enable(gl.DEPTH_TEST);
263
310
  state.depthMask(true);
264
- updateInternal(group, camera, depthTexture, false, !!depthTexture);
311
+ updateInternal(group, camera, depthTexture, 0 /* All */, !!depthTexture);
265
312
  ValueCell.updateIfChanged(globalUniforms.uMarkingType, 2 /* Mask */);
266
313
  var renderables = group.renderables;
267
314
  for (var i = 0, il = renderables.length; i < il; ++i) {
268
315
  var r = renderables[i];
269
316
  if (r.values.markerAverage.ref.value > 0) {
270
- renderObject(renderables[i], 'marking');
317
+ renderObject(renderables[i], 'marking', 0 /* None */);
271
318
  }
272
319
  }
273
320
  };
@@ -276,21 +323,26 @@ var Renderer;
276
323
  renderBlendedTransparent(group, camera, depthTexture);
277
324
  };
278
325
  var renderBlendedOpaque = function (group, camera, depthTexture) {
326
+ var _a, _b;
279
327
  state.disable(gl.BLEND);
280
328
  state.enable(gl.DEPTH_TEST);
281
329
  state.depthMask(true);
282
- updateInternal(group, camera, depthTexture, false, false);
330
+ updateInternal(group, camera, depthTexture, 1 /* Opaque */, false);
283
331
  var renderables = group.renderables;
284
332
  for (var i = 0, il = renderables.length; i < il; ++i) {
285
333
  var r = renderables[i];
286
334
  if (r.state.opaque) {
287
- renderObject(r, 'colorBlended');
335
+ renderObject(r, 'colorBlended', 0 /* None */);
336
+ }
337
+ else if (((_a = r.values.uDoubleSided) === null || _a === void 0 ? void 0 : _a.ref.value) && ((_b = r.values.dTransparentBackfaces) === null || _b === void 0 ? void 0 : _b.ref.value) === 'opaque') {
338
+ renderObject(r, 'colorBlended', 2 /* BlendedBack */);
288
339
  }
289
340
  }
290
341
  };
291
342
  var renderBlendedTransparent = function (group, camera, depthTexture) {
343
+ var _a, _b;
292
344
  state.enable(gl.DEPTH_TEST);
293
- updateInternal(group, camera, depthTexture, false, false);
345
+ updateInternal(group, camera, depthTexture, 2 /* Transparent */, false);
294
346
  var renderables = group.renderables;
295
347
  if (transparentBackground) {
296
348
  state.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
@@ -303,69 +355,58 @@ var Renderer;
303
355
  for (var i = 0, il = renderables.length; i < il; ++i) {
304
356
  var r = renderables[i];
305
357
  if (!r.state.opaque && r.state.writeDepth) {
306
- renderObject(r, 'colorBlended');
358
+ renderObject(r, 'colorBlended', 0 /* None */);
307
359
  }
308
360
  }
309
361
  state.depthMask(false);
310
362
  for (var i = 0, il = renderables.length; i < il; ++i) {
311
363
  var r = renderables[i];
312
- if (!r.state.opaque && !r.state.writeDepth) {
313
- renderObject(r, 'colorBlended');
314
- }
315
- }
316
- };
317
- var renderBlendedVolumeOpaque = function (group, camera, depthTexture) {
318
- var _a;
319
- state.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
320
- state.enable(gl.BLEND);
321
- updateInternal(group, camera, depthTexture, false, false);
322
- var renderables = group.renderables;
323
- for (var i = 0, il = renderables.length; i < il; ++i) {
324
- var r = renderables[i];
325
- // TODO: simplify, handle in renderable.state???
326
- // uAlpha is updated in "render" so we need to recompute it here
327
- var alpha = clamp(r.values.alpha.ref.value * r.state.alphaFactor, 0, 1);
328
- if (alpha === 1 && r.values.transparencyAverage.ref.value !== 1 && !((_a = r.values.dXrayShaded) === null || _a === void 0 ? void 0 : _a.ref.value)) {
329
- renderObject(r, 'colorBlended');
364
+ if ((!r.state.opaque && !r.state.writeDepth) || r.values.transparencyAverage.ref.value > 0) {
365
+ if ((_a = r.values.uDoubleSided) === null || _a === void 0 ? void 0 : _a.ref.value) {
366
+ // render frontfaces and backfaces separately to avoid artefacts
367
+ if (((_b = r.values.dTransparentBackfaces) === null || _b === void 0 ? void 0 : _b.ref.value) !== 'opaque') {
368
+ renderObject(r, 'colorBlended', 2 /* BlendedBack */);
369
+ }
370
+ renderObject(r, 'colorBlended', 1 /* BlendedFront */);
371
+ }
372
+ else {
373
+ renderObject(r, 'colorBlended', 0 /* None */);
374
+ }
330
375
  }
331
376
  }
332
377
  };
333
- var renderBlendedVolumeTransparent = function (group, camera, depthTexture) {
334
- var _a;
378
+ var renderBlendedVolume = function (group, camera, depthTexture) {
335
379
  state.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
336
380
  state.enable(gl.BLEND);
337
- updateInternal(group, camera, depthTexture, false, false);
381
+ updateInternal(group, camera, depthTexture, 2 /* Transparent */, false);
338
382
  var renderables = group.renderables;
339
383
  for (var i = 0, il = renderables.length; i < il; ++i) {
340
384
  var r = renderables[i];
341
- // TODO: simplify, handle in renderable.state???
342
- // uAlpha is updated in "render" so we need to recompute it here
343
- var alpha = clamp(r.values.alpha.ref.value * r.state.alphaFactor, 0, 1);
344
- if (alpha < 1 || r.values.transparencyAverage.ref.value > 0 || ((_a = r.values.dXrayShaded) === null || _a === void 0 ? void 0 : _a.ref.value)) {
345
- renderObject(r, 'colorBlended');
385
+ if (r.values.dGeometryType.ref.value === 'directVolume') {
386
+ renderObject(r, 'colorBlended', 0 /* None */);
346
387
  }
347
388
  }
348
389
  };
349
390
  var renderWboitOpaque = function (group, camera, depthTexture) {
350
- var _a, _b;
391
+ var _a, _b, _c;
351
392
  state.disable(gl.BLEND);
352
393
  state.enable(gl.DEPTH_TEST);
353
394
  state.depthMask(true);
354
- updateInternal(group, camera, depthTexture, false, false);
395
+ updateInternal(group, camera, depthTexture, 1 /* Opaque */, false);
355
396
  var renderables = group.renderables;
356
397
  for (var i = 0, il = renderables.length; i < il; ++i) {
357
398
  var r = renderables[i];
358
399
  // TODO: simplify, handle in renderable.state???
359
400
  // uAlpha is updated in "render" so we need to recompute it here
360
401
  var alpha = clamp(r.values.alpha.ref.value * r.state.alphaFactor, 0, 1);
361
- if (alpha === 1 && r.values.transparencyAverage.ref.value !== 1 && r.values.dGeometryType.ref.value !== 'directVolume' && ((_a = r.values.dPointStyle) === null || _a === void 0 ? void 0 : _a.ref.value) !== 'fuzzy' && !((_b = r.values.dXrayShaded) === null || _b === void 0 ? void 0 : _b.ref.value)) {
362
- renderObject(r, 'colorWboit');
402
+ if ((alpha === 1 && r.values.transparencyAverage.ref.value !== 1 && r.values.dGeometryType.ref.value !== 'directVolume' && ((_a = r.values.dPointStyle) === null || _a === void 0 ? void 0 : _a.ref.value) !== 'fuzzy' && !((_b = r.values.dXrayShaded) === null || _b === void 0 ? void 0 : _b.ref.value)) || ((_c = r.values.dTransparentBackfaces) === null || _c === void 0 ? void 0 : _c.ref.value) === 'opaque') {
403
+ renderObject(r, 'colorWboit', 0 /* None */);
363
404
  }
364
405
  }
365
406
  };
366
407
  var renderWboitTransparent = function (group, camera, depthTexture) {
367
408
  var _a, _b;
368
- updateInternal(group, camera, depthTexture, true, false);
409
+ updateInternal(group, camera, depthTexture, 2 /* Transparent */, false);
369
410
  var renderables = group.renderables;
370
411
  for (var i = 0, il = renderables.length; i < il; ++i) {
371
412
  var r = renderables[i];
@@ -373,7 +414,7 @@ var Renderer;
373
414
  // uAlpha is updated in "render" so we need to recompute it here
374
415
  var alpha = clamp(r.values.alpha.ref.value * r.state.alphaFactor, 0, 1);
375
416
  if (alpha < 1 || r.values.transparencyAverage.ref.value > 0 || r.values.dGeometryType.ref.value === 'directVolume' || ((_a = r.values.dPointStyle) === null || _a === void 0 ? void 0 : _a.ref.value) === 'fuzzy' || !!r.values.uBackgroundColor || ((_b = r.values.dXrayShaded) === null || _b === void 0 ? void 0 : _b.ref.value)) {
376
- renderObject(r, 'colorWboit');
417
+ renderObject(r, 'colorWboit', 0 /* None */);
377
418
  }
378
419
  }
379
420
  };
@@ -394,22 +435,31 @@ var Renderer;
394
435
  }
395
436
  gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
396
437
  },
397
- clearDepth: function () {
438
+ clearDepth: function (packed) {
439
+ if (packed === void 0) { packed = false; }
398
440
  state.enable(gl.SCISSOR_TEST);
399
- state.enable(gl.DEPTH_TEST);
400
- state.depthMask(true);
401
- gl.clear(gl.DEPTH_BUFFER_BIT);
441
+ if (packed) {
442
+ state.colorMask(true, true, true, true);
443
+ state.clearColor(1, 1, 1, 1);
444
+ gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
445
+ }
446
+ else {
447
+ state.enable(gl.DEPTH_TEST);
448
+ state.depthMask(true);
449
+ gl.clear(gl.DEPTH_BUFFER_BIT);
450
+ }
402
451
  },
403
452
  update: update,
404
453
  renderPick: renderPick,
405
454
  renderDepth: renderDepth,
455
+ renderDepthOpaque: renderDepthOpaque,
456
+ renderDepthTransparent: renderDepthTransparent,
406
457
  renderMarkingDepth: renderMarkingDepth,
407
458
  renderMarkingMask: renderMarkingMask,
408
459
  renderBlended: renderBlended,
409
460
  renderBlendedOpaque: renderBlendedOpaque,
410
461
  renderBlendedTransparent: renderBlendedTransparent,
411
- renderBlendedVolumeOpaque: renderBlendedVolumeOpaque,
412
- renderBlendedVolumeTransparent: renderBlendedVolumeTransparent,
462
+ renderBlendedVolume: renderBlendedVolume,
413
463
  renderWboitOpaque: renderWboitOpaque,
414
464
  renderWboitTransparent: renderWboitTransparent,
415
465
  setProps: function (props) {
@@ -27,6 +27,7 @@ interface Scene extends Object3D {
27
27
  clear: () => void;
28
28
  forEach: (callbackFn: (value: GraphicsRenderable, key: GraphicsRenderObject) => void) => void;
29
29
  getMarkerAverage: () => number;
30
+ getOpacityAverage: () => number;
30
31
  }
31
32
  declare namespace Scene {
32
33
  interface Group extends Object3D {
@@ -13,6 +13,7 @@ import { arraySetRemove } from '../mol-util/array';
13
13
  import { BoundaryHelper } from '../mol-math/geometry/boundary-helper';
14
14
  import { hash1 } from '../mol-data/util';
15
15
  import { GraphicsRenderVariants } from './webgl/render-item';
16
+ import { clamp } from '../mol-math/interpolate';
16
17
  var boundaryHelper = new BoundaryHelper('98');
17
18
  function calculateBoundingSphere(renderables, boundingSphere, onlyVisible) {
18
19
  boundaryHelper.reset();
@@ -218,14 +219,38 @@ var Scene;
218
219
  getMarkerAverage: function () {
219
220
  if (primitives.length === 0 && volumes.length === 0)
220
221
  return 0;
222
+ var count = 0;
221
223
  var markerAverage = 0;
222
224
  for (var i = 0, il = primitives.length; i < il; ++i) {
225
+ if (!primitives[i].state.visible)
226
+ continue;
223
227
  markerAverage += primitives[i].values.markerAverage.ref.value;
228
+ count += 1;
224
229
  }
225
230
  for (var i = 0, il = volumes.length; i < il; ++i) {
231
+ if (!volumes[i].state.visible)
232
+ continue;
226
233
  markerAverage += volumes[i].values.markerAverage.ref.value;
234
+ count += 1;
227
235
  }
228
- return markerAverage / (primitives.length + volumes.length);
236
+ return count > 0 ? markerAverage / count : 0;
237
+ },
238
+ getOpacityAverage: function () {
239
+ if (primitives.length === 0)
240
+ return 0;
241
+ var count = 0;
242
+ var opacityAverage = 0;
243
+ for (var i = 0, il = primitives.length; i < il; ++i) {
244
+ var p = primitives[i];
245
+ if (!p.state.visible)
246
+ continue;
247
+ // TODO: simplify, handle in renderable.state???
248
+ // uAlpha is updated in "render" so we need to recompute it here
249
+ var alpha = clamp(p.values.alpha.ref.value * p.state.alphaFactor, 0, 1);
250
+ opacityAverage += (1 - p.values.transparencyAverage.ref.value) * alpha;
251
+ count += 1;
252
+ }
253
+ return count > 0 ? opacityAverage / count : 0;
229
254
  },
230
255
  };
231
256
  }
@@ -1 +1 @@
1
- export declare const apply_interior_color = "\nif (interior) {\n if (uInteriorColorFlag) {\n gl_FragColor.rgb = uInteriorColor;\n } else {\n gl_FragColor.rgb *= 1.0 - uInteriorDarkening;\n }\n}\n";
1
+ export declare const apply_interior_color = "\nif (interior) {\n if (uInteriorColorFlag) {\n gl_FragColor.rgb = uInteriorColor;\n } else {\n gl_FragColor.rgb *= 1.0 - uInteriorDarkening;\n }\n\n #ifdef dTransparentBackfaces_opaque\n gl_FragColor.a = 1.0;\n #endif\n}\n";
@@ -1 +1 @@
1
- export var apply_interior_color = "\nif (interior) {\n if (uInteriorColorFlag) {\n gl_FragColor.rgb = uInteriorColor;\n } else {\n gl_FragColor.rgb *= 1.0 - uInteriorDarkening;\n }\n}\n";
1
+ export var apply_interior_color = "\nif (interior) {\n if (uInteriorColorFlag) {\n gl_FragColor.rgb = uInteriorColor;\n } else {\n gl_FragColor.rgb *= 1.0 - uInteriorDarkening;\n }\n\n #ifdef dTransparentBackfaces_opaque\n gl_FragColor.a = 1.0;\n #endif\n}\n";
@@ -1 +1 @@
1
- export declare const assign_material_color = "\n#if defined(dRenderVariant_color) || defined(dRenderVariant_marking)\n float marker = uMarker;\n if (uMarker == -1.0) {\n marker = floor(vMarker * 255.0 + 0.5); // rounding required to work on some cards on win\n }\n#endif\n\n#if defined(dRenderVariant_color)\n #if defined(dUsePalette)\n vec4 material = vec4(texture2D(tPalette, vec2(vPaletteV, 0.5)).rgb, uAlpha);\n #elif defined(dColorType_uniform)\n vec4 material = vec4(uColor, uAlpha);\n #elif defined(dColorType_varying)\n vec4 material = vec4(vColor.rgb, uAlpha);\n #endif\n\n // mix material with overpaint\n #if defined(dOverpaint)\n material.rgb = mix(material.rgb, vOverpaint.rgb, vOverpaint.a);\n #endif\n\n float metalness = uMetalness;\n float roughness = uRoughness;\n float bumpiness = uBumpiness;\n #ifdef dSubstance\n metalness = mix(metalness, vSubstance.r, vSubstance.a);\n roughness = mix(roughness, vSubstance.g, vSubstance.a);\n bumpiness = mix(bumpiness, vSubstance.b, vSubstance.a);\n #endif\n#elif defined(dRenderVariant_pick)\n vec4 material = vColor;\n#elif defined(dRenderVariant_depth)\n #ifdef enabledFragDepth\n vec4 material = packDepthToRGBA(gl_FragDepthEXT);\n #else\n vec4 material = packDepthToRGBA(gl_FragCoord.z);\n #endif\n#elif defined(dRenderVariant_marking)\n vec4 material;\n if(uMarkingType == 1) {\n if (marker > 0.0)\n discard;\n #ifdef enabledFragDepth\n material = packDepthToRGBA(gl_FragDepthEXT);\n #else\n material = packDepthToRGBA(gl_FragCoord.z);\n #endif\n } else {\n if (marker == 0.0)\n discard;\n float depthTest = 1.0;\n if (uMarkingDepthTest) {\n depthTest = (fragmentDepth >= getDepth(gl_FragCoord.xy / uDrawingBufferSize)) ? 1.0 : 0.0;\n }\n bool isHighlight = intMod(marker, 2.0) > 0.1;\n float viewZ = depthToViewZ(uIsOrtho, fragmentDepth, uNear, uFar);\n float fogFactor = smoothstep(uFogNear, uFogFar, abs(viewZ));\n if (fogFactor == 1.0)\n discard;\n material = vec4(0.0, depthTest, isHighlight ? 1.0 : 0.0, 1.0 - fogFactor);\n }\n#endif\n\n// apply screendoor transparency\n#if defined(dTransparency)\n float ta = 1.0 - vTransparency;\n #if defined(dRenderVariant_colorWboit)\n if (vTransparency < 0.2) ta = 1.0; // hard cutoff looks better with wboit\n #endif\n\n #if defined(dRenderVariant_pick)\n if (ta < uPickingAlphaThreshold)\n discard; // ignore so the element below can be picked\n #else\n #if defined(dRenderVariant_colorBlended)\n float at = 0.0;\n\n // shift by view-offset during multi-sample rendering to allow for blending\n vec2 coord = gl_FragCoord.xy + uViewOffset * 0.25;\n\n const mat4 thresholdMatrix = mat4(\n 1.0 / 17.0, 9.0 / 17.0, 3.0 / 17.0, 11.0 / 17.0,\n 13.0 / 17.0, 5.0 / 17.0, 15.0 / 17.0, 7.0 / 17.0,\n 4.0 / 17.0, 12.0 / 17.0, 2.0 / 17.0, 10.0 / 17.0,\n 16.0 / 17.0, 8.0 / 17.0, 14.0 / 17.0, 6.0 / 17.0\n );\n int ci = int(intMod(coord.x, 4.0));\n int ri = int(intMod(coord.y, 4.0));\n #if __VERSION__ == 100\n vec4 i = vec4(float(ci * 4 + ri));\n vec4 v = thresholdMatrix[0] * vec4(equal(i, vec4(0.0, 1.0, 2.0, 3.0))) +\n thresholdMatrix[1] * vec4(equal(i, vec4(4.0, 5.0, 6.0, 7.0))) +\n thresholdMatrix[2] * vec4(equal(i, vec4(8.0, 9.0, 10.0, 11.0))) +\n thresholdMatrix[3] * vec4(equal(i, vec4(12.0, 13.0, 14.0, 15.0)));\n at = v.x + v.y + v.z + v.w;\n #else\n at = thresholdMatrix[ci][ri];\n #endif\n\n if (ta < 0.99 && (ta < 0.01 || ta < at)) {\n discard;\n }\n #elif defined(dRenderVariant_colorWboit)\n material.a *= ta;\n #endif\n #endif\n#endif\n";
1
+ export declare const assign_material_color = "\n#if defined(dRenderVariant_color) || defined(dRenderVariant_marking)\n float marker = uMarker;\n if (uMarker == -1.0) {\n marker = floor(vMarker * 255.0 + 0.5); // rounding required to work on some cards on win\n }\n#endif\n\n#if defined(dRenderVariant_color)\n #if defined(dUsePalette)\n vec4 material = vec4(texture2D(tPalette, vec2(vPaletteV, 0.5)).rgb, uAlpha);\n #elif defined(dColorType_uniform)\n vec4 material = vec4(uColor, uAlpha);\n #elif defined(dColorType_varying)\n vec4 material = vec4(vColor.rgb, uAlpha);\n #endif\n\n // mix material with overpaint\n #if defined(dOverpaint)\n material.rgb = mix(material.rgb, vOverpaint.rgb, vOverpaint.a);\n #endif\n\n float metalness = uMetalness;\n float roughness = uRoughness;\n float bumpiness = uBumpiness;\n #ifdef dSubstance\n metalness = mix(metalness, vSubstance.r, vSubstance.a);\n roughness = mix(roughness, vSubstance.g, vSubstance.a);\n bumpiness = mix(bumpiness, vSubstance.b, vSubstance.a);\n #endif\n#elif defined(dRenderVariant_pick)\n vec4 material = vColor;\n#elif defined(dRenderVariant_depth)\n if (fragmentDepth > getDepth(gl_FragCoord.xy / uDrawingBufferSize)) {\n discard;\n }\n\n #ifndef dXrayShaded\n #if defined(dTransparency)\n float dta = 1.0 - vTransparency;\n if (vTransparency < 0.2) dta = 1.0; // hard cutoff looks better\n\n if (uRenderMask == MaskTransparent && uAlpha * dta == 1.0) {\n discard;\n } else if (uRenderMask == MaskOpaque && uAlpha * dta < 1.0) {\n discard;\n }\n #else\n if (uRenderMask == MaskTransparent && uAlpha == 1.0) {\n discard;\n } else if (uRenderMask == MaskOpaque && uAlpha < 1.0) {\n discard;\n }\n #endif\n #else\n if (uRenderMask == MaskOpaque) {\n discard;\n }\n #endif\n\n vec4 material = packDepthToRGBA(fragmentDepth);\n#elif defined(dRenderVariant_marking)\n vec4 material;\n if(uMarkingType == 1) {\n if (marker > 0.0)\n discard;\n #ifdef enabledFragDepth\n material = packDepthToRGBA(gl_FragDepthEXT);\n #else\n material = packDepthToRGBA(gl_FragCoord.z);\n #endif\n } else {\n if (marker == 0.0)\n discard;\n float depthTest = 1.0;\n if (uMarkingDepthTest) {\n depthTest = (fragmentDepth >= getDepthPacked(gl_FragCoord.xy / uDrawingBufferSize)) ? 1.0 : 0.0;\n }\n bool isHighlight = intMod(marker, 2.0) > 0.1;\n float viewZ = depthToViewZ(uIsOrtho, fragmentDepth, uNear, uFar);\n float fogFactor = smoothstep(uFogNear, uFogFar, abs(viewZ));\n if (fogFactor == 1.0)\n discard;\n material = vec4(0.0, depthTest, isHighlight ? 1.0 : 0.0, 1.0 - fogFactor);\n }\n#endif\n\n// apply per-group transparency\n#if defined(dTransparency) && (defined(dRenderVariant_pick) || defined(dRenderVariant_color))\n float ta = 1.0 - vTransparency;\n if (vTransparency < 0.2) ta = 1.0; // hard cutoff looks better\n\n #if defined(dRenderVariant_pick)\n if (ta < uPickingAlphaThreshold)\n discard; // ignore so the element below can be picked\n #elif defined(dRenderVariant_color)\n material.a *= ta;\n\n #if defined(dRenderVariant_colorBlended)\n #if defined(dTransparentBackfaces_off)\n if ((uRenderMask == MaskOpaque && material.a < 1.0) ||\n (uRenderMask == MaskTransparent && material.a == 1.0) ||\n (interior && material.a < 1.0)\n ) {\n discard;\n }\n #elif defined(dTransparentBackfaces_on)\n if ((uRenderMask == MaskOpaque && material.a < 1.0) ||\n (uRenderMask == MaskTransparent && material.a == 1.0)\n ) {\n discard;\n }\n #elif defined(dTransparentBackfaces_opaque)\n if (interior) {\n material.a = 1.0;\n } else if (\n (uRenderMask == MaskOpaque && material.a < 1.0) ||\n (uRenderMask == MaskTransparent && material.a == 1.0)\n ) {\n discard;\n }\n #endif\n #endif\n #endif\n#endif\n";
@@ -1 +1 @@
1
- export var assign_material_color = "\n#if defined(dRenderVariant_color) || defined(dRenderVariant_marking)\n float marker = uMarker;\n if (uMarker == -1.0) {\n marker = floor(vMarker * 255.0 + 0.5); // rounding required to work on some cards on win\n }\n#endif\n\n#if defined(dRenderVariant_color)\n #if defined(dUsePalette)\n vec4 material = vec4(texture2D(tPalette, vec2(vPaletteV, 0.5)).rgb, uAlpha);\n #elif defined(dColorType_uniform)\n vec4 material = vec4(uColor, uAlpha);\n #elif defined(dColorType_varying)\n vec4 material = vec4(vColor.rgb, uAlpha);\n #endif\n\n // mix material with overpaint\n #if defined(dOverpaint)\n material.rgb = mix(material.rgb, vOverpaint.rgb, vOverpaint.a);\n #endif\n\n float metalness = uMetalness;\n float roughness = uRoughness;\n float bumpiness = uBumpiness;\n #ifdef dSubstance\n metalness = mix(metalness, vSubstance.r, vSubstance.a);\n roughness = mix(roughness, vSubstance.g, vSubstance.a);\n bumpiness = mix(bumpiness, vSubstance.b, vSubstance.a);\n #endif\n#elif defined(dRenderVariant_pick)\n vec4 material = vColor;\n#elif defined(dRenderVariant_depth)\n #ifdef enabledFragDepth\n vec4 material = packDepthToRGBA(gl_FragDepthEXT);\n #else\n vec4 material = packDepthToRGBA(gl_FragCoord.z);\n #endif\n#elif defined(dRenderVariant_marking)\n vec4 material;\n if(uMarkingType == 1) {\n if (marker > 0.0)\n discard;\n #ifdef enabledFragDepth\n material = packDepthToRGBA(gl_FragDepthEXT);\n #else\n material = packDepthToRGBA(gl_FragCoord.z);\n #endif\n } else {\n if (marker == 0.0)\n discard;\n float depthTest = 1.0;\n if (uMarkingDepthTest) {\n depthTest = (fragmentDepth >= getDepth(gl_FragCoord.xy / uDrawingBufferSize)) ? 1.0 : 0.0;\n }\n bool isHighlight = intMod(marker, 2.0) > 0.1;\n float viewZ = depthToViewZ(uIsOrtho, fragmentDepth, uNear, uFar);\n float fogFactor = smoothstep(uFogNear, uFogFar, abs(viewZ));\n if (fogFactor == 1.0)\n discard;\n material = vec4(0.0, depthTest, isHighlight ? 1.0 : 0.0, 1.0 - fogFactor);\n }\n#endif\n\n// apply screendoor transparency\n#if defined(dTransparency)\n float ta = 1.0 - vTransparency;\n #if defined(dRenderVariant_colorWboit)\n if (vTransparency < 0.2) ta = 1.0; // hard cutoff looks better with wboit\n #endif\n\n #if defined(dRenderVariant_pick)\n if (ta < uPickingAlphaThreshold)\n discard; // ignore so the element below can be picked\n #else\n #if defined(dRenderVariant_colorBlended)\n float at = 0.0;\n\n // shift by view-offset during multi-sample rendering to allow for blending\n vec2 coord = gl_FragCoord.xy + uViewOffset * 0.25;\n\n const mat4 thresholdMatrix = mat4(\n 1.0 / 17.0, 9.0 / 17.0, 3.0 / 17.0, 11.0 / 17.0,\n 13.0 / 17.0, 5.0 / 17.0, 15.0 / 17.0, 7.0 / 17.0,\n 4.0 / 17.0, 12.0 / 17.0, 2.0 / 17.0, 10.0 / 17.0,\n 16.0 / 17.0, 8.0 / 17.0, 14.0 / 17.0, 6.0 / 17.0\n );\n int ci = int(intMod(coord.x, 4.0));\n int ri = int(intMod(coord.y, 4.0));\n #if __VERSION__ == 100\n vec4 i = vec4(float(ci * 4 + ri));\n vec4 v = thresholdMatrix[0] * vec4(equal(i, vec4(0.0, 1.0, 2.0, 3.0))) +\n thresholdMatrix[1] * vec4(equal(i, vec4(4.0, 5.0, 6.0, 7.0))) +\n thresholdMatrix[2] * vec4(equal(i, vec4(8.0, 9.0, 10.0, 11.0))) +\n thresholdMatrix[3] * vec4(equal(i, vec4(12.0, 13.0, 14.0, 15.0)));\n at = v.x + v.y + v.z + v.w;\n #else\n at = thresholdMatrix[ci][ri];\n #endif\n\n if (ta < 0.99 && (ta < 0.01 || ta < at)) {\n discard;\n }\n #elif defined(dRenderVariant_colorWboit)\n material.a *= ta;\n #endif\n #endif\n#endif\n";
1
+ export var assign_material_color = "\n#if defined(dRenderVariant_color) || defined(dRenderVariant_marking)\n float marker = uMarker;\n if (uMarker == -1.0) {\n marker = floor(vMarker * 255.0 + 0.5); // rounding required to work on some cards on win\n }\n#endif\n\n#if defined(dRenderVariant_color)\n #if defined(dUsePalette)\n vec4 material = vec4(texture2D(tPalette, vec2(vPaletteV, 0.5)).rgb, uAlpha);\n #elif defined(dColorType_uniform)\n vec4 material = vec4(uColor, uAlpha);\n #elif defined(dColorType_varying)\n vec4 material = vec4(vColor.rgb, uAlpha);\n #endif\n\n // mix material with overpaint\n #if defined(dOverpaint)\n material.rgb = mix(material.rgb, vOverpaint.rgb, vOverpaint.a);\n #endif\n\n float metalness = uMetalness;\n float roughness = uRoughness;\n float bumpiness = uBumpiness;\n #ifdef dSubstance\n metalness = mix(metalness, vSubstance.r, vSubstance.a);\n roughness = mix(roughness, vSubstance.g, vSubstance.a);\n bumpiness = mix(bumpiness, vSubstance.b, vSubstance.a);\n #endif\n#elif defined(dRenderVariant_pick)\n vec4 material = vColor;\n#elif defined(dRenderVariant_depth)\n if (fragmentDepth > getDepth(gl_FragCoord.xy / uDrawingBufferSize)) {\n discard;\n }\n\n #ifndef dXrayShaded\n #if defined(dTransparency)\n float dta = 1.0 - vTransparency;\n if (vTransparency < 0.2) dta = 1.0; // hard cutoff looks better\n\n if (uRenderMask == MaskTransparent && uAlpha * dta == 1.0) {\n discard;\n } else if (uRenderMask == MaskOpaque && uAlpha * dta < 1.0) {\n discard;\n }\n #else\n if (uRenderMask == MaskTransparent && uAlpha == 1.0) {\n discard;\n } else if (uRenderMask == MaskOpaque && uAlpha < 1.0) {\n discard;\n }\n #endif\n #else\n if (uRenderMask == MaskOpaque) {\n discard;\n }\n #endif\n\n vec4 material = packDepthToRGBA(fragmentDepth);\n#elif defined(dRenderVariant_marking)\n vec4 material;\n if(uMarkingType == 1) {\n if (marker > 0.0)\n discard;\n #ifdef enabledFragDepth\n material = packDepthToRGBA(gl_FragDepthEXT);\n #else\n material = packDepthToRGBA(gl_FragCoord.z);\n #endif\n } else {\n if (marker == 0.0)\n discard;\n float depthTest = 1.0;\n if (uMarkingDepthTest) {\n depthTest = (fragmentDepth >= getDepthPacked(gl_FragCoord.xy / uDrawingBufferSize)) ? 1.0 : 0.0;\n }\n bool isHighlight = intMod(marker, 2.0) > 0.1;\n float viewZ = depthToViewZ(uIsOrtho, fragmentDepth, uNear, uFar);\n float fogFactor = smoothstep(uFogNear, uFogFar, abs(viewZ));\n if (fogFactor == 1.0)\n discard;\n material = vec4(0.0, depthTest, isHighlight ? 1.0 : 0.0, 1.0 - fogFactor);\n }\n#endif\n\n// apply per-group transparency\n#if defined(dTransparency) && (defined(dRenderVariant_pick) || defined(dRenderVariant_color))\n float ta = 1.0 - vTransparency;\n if (vTransparency < 0.2) ta = 1.0; // hard cutoff looks better\n\n #if defined(dRenderVariant_pick)\n if (ta < uPickingAlphaThreshold)\n discard; // ignore so the element below can be picked\n #elif defined(dRenderVariant_color)\n material.a *= ta;\n\n #if defined(dRenderVariant_colorBlended)\n #if defined(dTransparentBackfaces_off)\n if ((uRenderMask == MaskOpaque && material.a < 1.0) ||\n (uRenderMask == MaskTransparent && material.a == 1.0) ||\n (interior && material.a < 1.0)\n ) {\n discard;\n }\n #elif defined(dTransparentBackfaces_on)\n if ((uRenderMask == MaskOpaque && material.a < 1.0) ||\n (uRenderMask == MaskTransparent && material.a == 1.0)\n ) {\n discard;\n }\n #elif defined(dTransparentBackfaces_opaque)\n if (interior) {\n material.a = 1.0;\n } else if (\n (uRenderMask == MaskOpaque && material.a < 1.0) ||\n (uRenderMask == MaskTransparent && material.a == 1.0)\n ) {\n discard;\n }\n #endif\n #endif\n #endif\n#endif\n";
@@ -1 +1 @@
1
- export declare const check_picking_alpha = "\nfloat viewZ = depthToViewZ(uIsOrtho, fragmentDepth, uNear, uFar);\nfloat fogFactor = smoothstep(uFogNear, uFogFar, abs(viewZ));\nfloat alpha = (1.0 - fogFactor) * uAlpha;\nif (uAlpha < uPickingAlphaThreshold || alpha < 0.1)\n discard; // ignore so the element below can be picked\n";
1
+ export declare const check_picking_alpha = "\nfloat viewZ = depthToViewZ(uIsOrtho, fragmentDepth, uNear, uFar);\nfloat fogFactor = smoothstep(uFogNear, uFogFar, abs(viewZ));\nfloat alpha = (1.0 - fogFactor) * uAlpha;\n// if not opaque enough ignore so the element below can be picked\nif (uAlpha < uPickingAlphaThreshold || alpha < 0.1) {\n #ifdef dTransparentBackfaces_opaque\n if (!interior) discard;\n #else\n discard;\n #endif\n}\n";
@@ -1 +1 @@
1
- export var check_picking_alpha = "\nfloat viewZ = depthToViewZ(uIsOrtho, fragmentDepth, uNear, uFar);\nfloat fogFactor = smoothstep(uFogNear, uFogFar, abs(viewZ));\nfloat alpha = (1.0 - fogFactor) * uAlpha;\nif (uAlpha < uPickingAlphaThreshold || alpha < 0.1)\n discard; // ignore so the element below can be picked\n";
1
+ export var check_picking_alpha = "\nfloat viewZ = depthToViewZ(uIsOrtho, fragmentDepth, uNear, uFar);\nfloat fogFactor = smoothstep(uFogNear, uFogFar, abs(viewZ));\nfloat alpha = (1.0 - fogFactor) * uAlpha;\n// if not opaque enough ignore so the element below can be picked\nif (uAlpha < uPickingAlphaThreshold || alpha < 0.1) {\n #ifdef dTransparentBackfaces_opaque\n if (!interior) discard;\n #else\n discard;\n #endif\n}\n";
@@ -1 +1 @@
1
- export declare const color_vert_params = "\nuniform float uMetalness;\nuniform float uRoughness;\nuniform float uBumpiness;\n\n#if defined(dRenderVariant_color)\n #if defined(dColorType_uniform)\n uniform vec3 uColor;\n #elif defined(dColorType_attribute)\n varying vec4 vColor;\n attribute vec3 aColor;\n #elif defined(dColorType_texture)\n varying vec4 vColor;\n uniform vec2 uColorTexDim;\n uniform sampler2D tColor;\n #elif defined(dColorType_grid)\n varying vec4 vColor;\n uniform vec2 uColorTexDim;\n uniform vec3 uColorGridDim;\n uniform vec4 uColorGridTransform;\n uniform sampler2D tColorGrid;\n #endif\n\n #ifdef dUsePalette\n varying float vPaletteV;\n #endif\n\n #ifdef dOverpaint\n #if defined(dOverpaintType_groupInstance) || defined(dOverpaintType_vertexInstance)\n varying vec4 vOverpaint;\n uniform vec2 uOverpaintTexDim;\n uniform sampler2D tOverpaint;\n #elif defined(dOverpaintType_volumeInstance)\n varying vec4 vOverpaint;\n uniform vec2 uOverpaintTexDim;\n uniform vec3 uOverpaintGridDim;\n uniform vec4 uOverpaintGridTransform;\n uniform sampler2D tOverpaintGrid;\n #endif\n #endif\n\n #ifdef dSubstance\n #if defined(dSubstanceType_groupInstance) || defined(dSubstanceType_vertexInstance)\n varying vec4 vSubstance;\n uniform vec2 uSubstanceTexDim;\n uniform sampler2D tSubstance;\n #elif defined(dSubstanceType_volumeInstance)\n varying vec4 vSubstance;\n uniform vec2 uSubstanceTexDim;\n uniform vec3 uSubstanceGridDim;\n uniform vec4 uSubstanceGridTransform;\n uniform sampler2D tSubstanceGrid;\n #endif\n #endif\n#elif defined(dRenderVariant_pick)\n #if __VERSION__ == 100\n varying vec4 vColor;\n #else\n flat out vec4 vColor;\n #endif\n#endif\n\n#ifdef dTransparency\n varying float vGroup;\n #if defined(dTransparencyType_groupInstance) || defined(dTransparencyType_vertexInstance)\n varying float vTransparency;\n uniform vec2 uTransparencyTexDim;\n uniform sampler2D tTransparency;\n #elif defined(dTransparencyType_volumeInstance)\n varying float vTransparency;\n uniform vec2 uTransparencyTexDim;\n uniform vec3 uTransparencyGridDim;\n uniform vec4 uTransparencyGridTransform;\n uniform sampler2D tTransparencyGrid;\n #endif\n#endif\n";
1
+ export declare const color_vert_params = "\nuniform float uMetalness;\nuniform float uRoughness;\nuniform float uBumpiness;\n\n#if defined(dRenderVariant_color)\n #if defined(dColorType_uniform)\n uniform vec3 uColor;\n #elif defined(dColorType_attribute)\n varying vec4 vColor;\n attribute vec3 aColor;\n #elif defined(dColorType_texture)\n varying vec4 vColor;\n uniform vec2 uColorTexDim;\n uniform sampler2D tColor;\n #elif defined(dColorType_grid)\n varying vec4 vColor;\n uniform vec2 uColorTexDim;\n uniform vec3 uColorGridDim;\n uniform vec4 uColorGridTransform;\n uniform sampler2D tColorGrid;\n #elif defined(dColorType_direct)\n varying vec4 vColor;\n #endif\n\n #ifdef dUsePalette\n varying float vPaletteV;\n #endif\n\n #ifdef dOverpaint\n #if defined(dOverpaintType_groupInstance) || defined(dOverpaintType_vertexInstance)\n varying vec4 vOverpaint;\n uniform vec2 uOverpaintTexDim;\n uniform sampler2D tOverpaint;\n #elif defined(dOverpaintType_volumeInstance)\n varying vec4 vOverpaint;\n uniform vec2 uOverpaintTexDim;\n uniform vec3 uOverpaintGridDim;\n uniform vec4 uOverpaintGridTransform;\n uniform sampler2D tOverpaintGrid;\n #endif\n #endif\n\n #ifdef dSubstance\n #if defined(dSubstanceType_groupInstance) || defined(dSubstanceType_vertexInstance)\n varying vec4 vSubstance;\n uniform vec2 uSubstanceTexDim;\n uniform sampler2D tSubstance;\n #elif defined(dSubstanceType_volumeInstance)\n varying vec4 vSubstance;\n uniform vec2 uSubstanceTexDim;\n uniform vec3 uSubstanceGridDim;\n uniform vec4 uSubstanceGridTransform;\n uniform sampler2D tSubstanceGrid;\n #endif\n #endif\n#elif defined(dRenderVariant_pick)\n #if __VERSION__ == 100\n varying vec4 vColor;\n #else\n flat out vec4 vColor;\n #endif\n#endif\n\n#ifdef dTransparency\n varying float vGroup;\n #if defined(dTransparencyType_groupInstance) || defined(dTransparencyType_vertexInstance)\n varying float vTransparency;\n uniform vec2 uTransparencyTexDim;\n uniform sampler2D tTransparency;\n #elif defined(dTransparencyType_volumeInstance)\n varying float vTransparency;\n uniform vec2 uTransparencyTexDim;\n uniform vec3 uTransparencyGridDim;\n uniform vec4 uTransparencyGridTransform;\n uniform sampler2D tTransparencyGrid;\n #endif\n#endif\n";
@@ -1 +1 @@
1
- export var color_vert_params = "\nuniform float uMetalness;\nuniform float uRoughness;\nuniform float uBumpiness;\n\n#if defined(dRenderVariant_color)\n #if defined(dColorType_uniform)\n uniform vec3 uColor;\n #elif defined(dColorType_attribute)\n varying vec4 vColor;\n attribute vec3 aColor;\n #elif defined(dColorType_texture)\n varying vec4 vColor;\n uniform vec2 uColorTexDim;\n uniform sampler2D tColor;\n #elif defined(dColorType_grid)\n varying vec4 vColor;\n uniform vec2 uColorTexDim;\n uniform vec3 uColorGridDim;\n uniform vec4 uColorGridTransform;\n uniform sampler2D tColorGrid;\n #endif\n\n #ifdef dUsePalette\n varying float vPaletteV;\n #endif\n\n #ifdef dOverpaint\n #if defined(dOverpaintType_groupInstance) || defined(dOverpaintType_vertexInstance)\n varying vec4 vOverpaint;\n uniform vec2 uOverpaintTexDim;\n uniform sampler2D tOverpaint;\n #elif defined(dOverpaintType_volumeInstance)\n varying vec4 vOverpaint;\n uniform vec2 uOverpaintTexDim;\n uniform vec3 uOverpaintGridDim;\n uniform vec4 uOverpaintGridTransform;\n uniform sampler2D tOverpaintGrid;\n #endif\n #endif\n\n #ifdef dSubstance\n #if defined(dSubstanceType_groupInstance) || defined(dSubstanceType_vertexInstance)\n varying vec4 vSubstance;\n uniform vec2 uSubstanceTexDim;\n uniform sampler2D tSubstance;\n #elif defined(dSubstanceType_volumeInstance)\n varying vec4 vSubstance;\n uniform vec2 uSubstanceTexDim;\n uniform vec3 uSubstanceGridDim;\n uniform vec4 uSubstanceGridTransform;\n uniform sampler2D tSubstanceGrid;\n #endif\n #endif\n#elif defined(dRenderVariant_pick)\n #if __VERSION__ == 100\n varying vec4 vColor;\n #else\n flat out vec4 vColor;\n #endif\n#endif\n\n#ifdef dTransparency\n varying float vGroup;\n #if defined(dTransparencyType_groupInstance) || defined(dTransparencyType_vertexInstance)\n varying float vTransparency;\n uniform vec2 uTransparencyTexDim;\n uniform sampler2D tTransparency;\n #elif defined(dTransparencyType_volumeInstance)\n varying float vTransparency;\n uniform vec2 uTransparencyTexDim;\n uniform vec3 uTransparencyGridDim;\n uniform vec4 uTransparencyGridTransform;\n uniform sampler2D tTransparencyGrid;\n #endif\n#endif\n";
1
+ export var color_vert_params = "\nuniform float uMetalness;\nuniform float uRoughness;\nuniform float uBumpiness;\n\n#if defined(dRenderVariant_color)\n #if defined(dColorType_uniform)\n uniform vec3 uColor;\n #elif defined(dColorType_attribute)\n varying vec4 vColor;\n attribute vec3 aColor;\n #elif defined(dColorType_texture)\n varying vec4 vColor;\n uniform vec2 uColorTexDim;\n uniform sampler2D tColor;\n #elif defined(dColorType_grid)\n varying vec4 vColor;\n uniform vec2 uColorTexDim;\n uniform vec3 uColorGridDim;\n uniform vec4 uColorGridTransform;\n uniform sampler2D tColorGrid;\n #elif defined(dColorType_direct)\n varying vec4 vColor;\n #endif\n\n #ifdef dUsePalette\n varying float vPaletteV;\n #endif\n\n #ifdef dOverpaint\n #if defined(dOverpaintType_groupInstance) || defined(dOverpaintType_vertexInstance)\n varying vec4 vOverpaint;\n uniform vec2 uOverpaintTexDim;\n uniform sampler2D tOverpaint;\n #elif defined(dOverpaintType_volumeInstance)\n varying vec4 vOverpaint;\n uniform vec2 uOverpaintTexDim;\n uniform vec3 uOverpaintGridDim;\n uniform vec4 uOverpaintGridTransform;\n uniform sampler2D tOverpaintGrid;\n #endif\n #endif\n\n #ifdef dSubstance\n #if defined(dSubstanceType_groupInstance) || defined(dSubstanceType_vertexInstance)\n varying vec4 vSubstance;\n uniform vec2 uSubstanceTexDim;\n uniform sampler2D tSubstance;\n #elif defined(dSubstanceType_volumeInstance)\n varying vec4 vSubstance;\n uniform vec2 uSubstanceTexDim;\n uniform vec3 uSubstanceGridDim;\n uniform vec4 uSubstanceGridTransform;\n uniform sampler2D tSubstanceGrid;\n #endif\n #endif\n#elif defined(dRenderVariant_pick)\n #if __VERSION__ == 100\n varying vec4 vColor;\n #else\n flat out vec4 vColor;\n #endif\n#endif\n\n#ifdef dTransparency\n varying float vGroup;\n #if defined(dTransparencyType_groupInstance) || defined(dTransparencyType_vertexInstance)\n varying float vTransparency;\n uniform vec2 uTransparencyTexDim;\n uniform sampler2D tTransparency;\n #elif defined(dTransparencyType_volumeInstance)\n varying float vTransparency;\n uniform vec2 uTransparencyTexDim;\n uniform vec3 uTransparencyGridDim;\n uniform vec4 uTransparencyGridTransform;\n uniform sampler2D tTransparencyGrid;\n #endif\n#endif\n";
@@ -1 +1 @@
1
- export declare const common_frag_params = "\nuniform int uObjectId;\nuniform int uInstanceCount;\nuniform int uGroupCount;\n\nuniform int uPickType;\nuniform int uMarkingType;\n\n#if dClipObjectCount != 0\n uniform int uClipObjectType[dClipObjectCount];\n uniform bool uClipObjectInvert[dClipObjectCount];\n uniform vec3 uClipObjectPosition[dClipObjectCount];\n uniform vec4 uClipObjectRotation[dClipObjectCount];\n uniform vec3 uClipObjectScale[dClipObjectCount];\n\n #if defined(dClipping)\n #if __VERSION__ == 100\n varying float vClipping;\n #else\n flat in float vClipping;\n #endif\n #endif\n#endif\n\nuniform vec3 uHighlightColor;\nuniform vec3 uSelectColor;\nuniform float uHighlightStrength;\nuniform float uSelectStrength;\nuniform int uMarkerPriority;\n\n#if defined(dRenderVariant_color) || defined(dRenderVariant_marking)\n uniform float uMarker;\n #if __VERSION__ == 100\n varying float vMarker;\n #else\n flat in float vMarker;\n #endif\n#endif\n\nvarying vec3 vModelPosition;\nvarying vec3 vViewPosition;\n\nuniform vec2 uViewOffset;\n\nuniform float uNear;\nuniform float uFar;\nuniform float uIsOrtho;\n\nuniform float uFogNear;\nuniform float uFogFar;\nuniform vec3 uFogColor;\n\nuniform float uAlpha;\nuniform float uPickingAlphaThreshold;\nuniform bool uTransparentBackground;\n\nuniform bool uDoubleSided;\nuniform float uInteriorDarkening;\nuniform bool uInteriorColorFlag;\nuniform vec3 uInteriorColor;\nbool interior;\n\nuniform float uXrayEdgeFalloff;\n\nuniform mat4 uProjection;\n\nuniform bool uRenderWboit;\nuniform bool uMarkingDepthTest;\n\nuniform sampler2D tDepth;\nuniform vec2 uDrawingBufferSize;\n\nfloat getDepth(const in vec2 coords) {\n // always packed due to merged depth from primitives and volumes\n return unpackRGBAToDepth(texture2D(tDepth, coords));\n}\n\nfloat calcDepth(const in vec3 pos) {\n vec2 clipZW = pos.z * uProjection[2].zw + uProjection[3].zw;\n return 0.5 + 0.5 * clipZW.x / clipZW.y;\n}\n\n// \"Bump Mapping Unparametrized Surfaces on the GPU\" Morten S. Mikkelsen\n// https://mmikk.github.io/papers3d/mm_sfgrad_bump.pdf\nvec3 perturbNormal(in vec3 position, in vec3 normal, in float height, in float scale) {\n vec3 sigmaS = dFdx(position);\n vec3 sigmaT = dFdy(position);\n\n vec3 r1 = cross(sigmaT, normal);\n vec3 r2 = cross(normal, sigmaS);\n float det = dot(sigmaS, r1);\n\n float bs = dFdx(height);\n float bt = dFdy(height);\n\n vec3 surfGrad = sign(det) * (bs * r1 + bt * r2);\n return normalize(abs(det) * normal - scale * surfGrad);\n}\n\nfloat hash(in float h) {\n return fract(sin(h) * 43758.5453123);\n}\n\nfloat noise(in vec3 x) {\n vec3 p = floor(x);\n vec3 f = fract(x);\n f = f * f * (3.0 - 2.0 * f);\n\n float n = p.x + p.y * 157.0 + 113.0 * p.z;\n return mix(\n mix(mix(hash(n + 0.0), hash(n + 1.0), f.x),\n mix(hash(n + 157.0), hash(n + 158.0), f.x), f.y),\n mix(mix(hash(n + 113.0), hash(n + 114.0), f.x),\n mix(hash(n + 270.0), hash(n + 271.0), f.x), f.y), f.z);\n}\n\nfloat fbm(in vec3 p) {\n float f = 0.0;\n f += 0.5 * noise(p);\n p *= 2.01;\n f += 0.25 * noise(p);\n p *= 2.02;\n f += 0.125 * noise(p);\n\n return f;\n}\n";
1
+ export declare const common_frag_params = "\nuniform int uObjectId;\nuniform int uInstanceCount;\nuniform int uGroupCount;\n\nuniform int uPickType;\nuniform int uMarkingType;\n\n#if dClipObjectCount != 0\n uniform int uClipObjectType[dClipObjectCount];\n uniform bool uClipObjectInvert[dClipObjectCount];\n uniform vec3 uClipObjectPosition[dClipObjectCount];\n uniform vec4 uClipObjectRotation[dClipObjectCount];\n uniform vec3 uClipObjectScale[dClipObjectCount];\n\n #if defined(dClipping)\n #if __VERSION__ == 100\n varying float vClipping;\n #else\n flat in float vClipping;\n #endif\n #endif\n#endif\n\nuniform vec3 uHighlightColor;\nuniform vec3 uSelectColor;\nuniform float uHighlightStrength;\nuniform float uSelectStrength;\nuniform int uMarkerPriority;\n\n#if defined(dRenderVariant_color) || defined(dRenderVariant_marking)\n uniform float uMarker;\n #if __VERSION__ == 100\n varying float vMarker;\n #else\n flat in float vMarker;\n #endif\n#endif\n\nvarying vec3 vModelPosition;\nvarying vec3 vViewPosition;\n\nuniform vec2 uViewOffset;\n\nuniform float uNear;\nuniform float uFar;\nuniform float uIsOrtho;\n\nuniform float uFogNear;\nuniform float uFogFar;\nuniform vec3 uFogColor;\n\nuniform float uAlpha;\nuniform float uPickingAlphaThreshold;\nuniform bool uTransparentBackground;\n\nuniform bool uDoubleSided;\nuniform float uInteriorDarkening;\nuniform bool uInteriorColorFlag;\nuniform vec3 uInteriorColor;\nbool interior;\n\nuniform float uXrayEdgeFalloff;\n\nuniform mat4 uProjection;\n\nuniform int uRenderMask;\nuniform bool uMarkingDepthTest;\n\nuniform sampler2D tDepth;\nuniform vec2 uDrawingBufferSize;\n\nfloat getDepthPacked(const in vec2 coords) {\n return unpackRGBAToDepth(texture2D(tDepth, coords));\n}\n\nfloat getDepth(const in vec2 coords) {\n #ifdef depthTextureSupport\n return texture2D(tDepth, coords).r;\n #else\n return unpackRGBAToDepth(texture2D(tDepth, coords));\n #endif\n}\n\nfloat calcDepth(const in vec3 pos) {\n vec2 clipZW = pos.z * uProjection[2].zw + uProjection[3].zw;\n return 0.5 + 0.5 * clipZW.x / clipZW.y;\n}\n\n// \"Bump Mapping Unparametrized Surfaces on the GPU\" Morten S. Mikkelsen\n// https://mmikk.github.io/papers3d/mm_sfgrad_bump.pdf\nvec3 perturbNormal(in vec3 position, in vec3 normal, in float height, in float scale) {\n vec3 sigmaS = dFdx(position);\n vec3 sigmaT = dFdy(position);\n\n vec3 r1 = cross(sigmaT, normal);\n vec3 r2 = cross(normal, sigmaS);\n float det = dot(sigmaS, r1);\n\n float bs = dFdx(height);\n float bt = dFdy(height);\n\n vec3 surfGrad = sign(det) * (bs * r1 + bt * r2);\n return normalize(abs(det) * normal - scale * surfGrad);\n}\n\nfloat hash(in float h) {\n return fract(sin(h) * 43758.5453123);\n}\n\nfloat noise(in vec3 x) {\n vec3 p = floor(x);\n vec3 f = fract(x);\n f = f * f * (3.0 - 2.0 * f);\n\n float n = p.x + p.y * 157.0 + 113.0 * p.z;\n return mix(\n mix(mix(hash(n + 0.0), hash(n + 1.0), f.x),\n mix(hash(n + 157.0), hash(n + 158.0), f.x), f.y),\n mix(mix(hash(n + 113.0), hash(n + 114.0), f.x),\n mix(hash(n + 270.0), hash(n + 271.0), f.x), f.y), f.z);\n}\n\nfloat fbm(in vec3 p) {\n float f = 0.0;\n f += 0.5 * noise(p);\n p *= 2.01;\n f += 0.25 * noise(p);\n p *= 2.02;\n f += 0.125 * noise(p);\n\n return f;\n}\n";
@@ -1 +1 @@
1
- export var common_frag_params = "\nuniform int uObjectId;\nuniform int uInstanceCount;\nuniform int uGroupCount;\n\nuniform int uPickType;\nuniform int uMarkingType;\n\n#if dClipObjectCount != 0\n uniform int uClipObjectType[dClipObjectCount];\n uniform bool uClipObjectInvert[dClipObjectCount];\n uniform vec3 uClipObjectPosition[dClipObjectCount];\n uniform vec4 uClipObjectRotation[dClipObjectCount];\n uniform vec3 uClipObjectScale[dClipObjectCount];\n\n #if defined(dClipping)\n #if __VERSION__ == 100\n varying float vClipping;\n #else\n flat in float vClipping;\n #endif\n #endif\n#endif\n\nuniform vec3 uHighlightColor;\nuniform vec3 uSelectColor;\nuniform float uHighlightStrength;\nuniform float uSelectStrength;\nuniform int uMarkerPriority;\n\n#if defined(dRenderVariant_color) || defined(dRenderVariant_marking)\n uniform float uMarker;\n #if __VERSION__ == 100\n varying float vMarker;\n #else\n flat in float vMarker;\n #endif\n#endif\n\nvarying vec3 vModelPosition;\nvarying vec3 vViewPosition;\n\nuniform vec2 uViewOffset;\n\nuniform float uNear;\nuniform float uFar;\nuniform float uIsOrtho;\n\nuniform float uFogNear;\nuniform float uFogFar;\nuniform vec3 uFogColor;\n\nuniform float uAlpha;\nuniform float uPickingAlphaThreshold;\nuniform bool uTransparentBackground;\n\nuniform bool uDoubleSided;\nuniform float uInteriorDarkening;\nuniform bool uInteriorColorFlag;\nuniform vec3 uInteriorColor;\nbool interior;\n\nuniform float uXrayEdgeFalloff;\n\nuniform mat4 uProjection;\n\nuniform bool uRenderWboit;\nuniform bool uMarkingDepthTest;\n\nuniform sampler2D tDepth;\nuniform vec2 uDrawingBufferSize;\n\nfloat getDepth(const in vec2 coords) {\n // always packed due to merged depth from primitives and volumes\n return unpackRGBAToDepth(texture2D(tDepth, coords));\n}\n\nfloat calcDepth(const in vec3 pos) {\n vec2 clipZW = pos.z * uProjection[2].zw + uProjection[3].zw;\n return 0.5 + 0.5 * clipZW.x / clipZW.y;\n}\n\n// \"Bump Mapping Unparametrized Surfaces on the GPU\" Morten S. Mikkelsen\n// https://mmikk.github.io/papers3d/mm_sfgrad_bump.pdf\nvec3 perturbNormal(in vec3 position, in vec3 normal, in float height, in float scale) {\n vec3 sigmaS = dFdx(position);\n vec3 sigmaT = dFdy(position);\n\n vec3 r1 = cross(sigmaT, normal);\n vec3 r2 = cross(normal, sigmaS);\n float det = dot(sigmaS, r1);\n\n float bs = dFdx(height);\n float bt = dFdy(height);\n\n vec3 surfGrad = sign(det) * (bs * r1 + bt * r2);\n return normalize(abs(det) * normal - scale * surfGrad);\n}\n\nfloat hash(in float h) {\n return fract(sin(h) * 43758.5453123);\n}\n\nfloat noise(in vec3 x) {\n vec3 p = floor(x);\n vec3 f = fract(x);\n f = f * f * (3.0 - 2.0 * f);\n\n float n = p.x + p.y * 157.0 + 113.0 * p.z;\n return mix(\n mix(mix(hash(n + 0.0), hash(n + 1.0), f.x),\n mix(hash(n + 157.0), hash(n + 158.0), f.x), f.y),\n mix(mix(hash(n + 113.0), hash(n + 114.0), f.x),\n mix(hash(n + 270.0), hash(n + 271.0), f.x), f.y), f.z);\n}\n\nfloat fbm(in vec3 p) {\n float f = 0.0;\n f += 0.5 * noise(p);\n p *= 2.01;\n f += 0.25 * noise(p);\n p *= 2.02;\n f += 0.125 * noise(p);\n\n return f;\n}\n";
1
+ export var common_frag_params = "\nuniform int uObjectId;\nuniform int uInstanceCount;\nuniform int uGroupCount;\n\nuniform int uPickType;\nuniform int uMarkingType;\n\n#if dClipObjectCount != 0\n uniform int uClipObjectType[dClipObjectCount];\n uniform bool uClipObjectInvert[dClipObjectCount];\n uniform vec3 uClipObjectPosition[dClipObjectCount];\n uniform vec4 uClipObjectRotation[dClipObjectCount];\n uniform vec3 uClipObjectScale[dClipObjectCount];\n\n #if defined(dClipping)\n #if __VERSION__ == 100\n varying float vClipping;\n #else\n flat in float vClipping;\n #endif\n #endif\n#endif\n\nuniform vec3 uHighlightColor;\nuniform vec3 uSelectColor;\nuniform float uHighlightStrength;\nuniform float uSelectStrength;\nuniform int uMarkerPriority;\n\n#if defined(dRenderVariant_color) || defined(dRenderVariant_marking)\n uniform float uMarker;\n #if __VERSION__ == 100\n varying float vMarker;\n #else\n flat in float vMarker;\n #endif\n#endif\n\nvarying vec3 vModelPosition;\nvarying vec3 vViewPosition;\n\nuniform vec2 uViewOffset;\n\nuniform float uNear;\nuniform float uFar;\nuniform float uIsOrtho;\n\nuniform float uFogNear;\nuniform float uFogFar;\nuniform vec3 uFogColor;\n\nuniform float uAlpha;\nuniform float uPickingAlphaThreshold;\nuniform bool uTransparentBackground;\n\nuniform bool uDoubleSided;\nuniform float uInteriorDarkening;\nuniform bool uInteriorColorFlag;\nuniform vec3 uInteriorColor;\nbool interior;\n\nuniform float uXrayEdgeFalloff;\n\nuniform mat4 uProjection;\n\nuniform int uRenderMask;\nuniform bool uMarkingDepthTest;\n\nuniform sampler2D tDepth;\nuniform vec2 uDrawingBufferSize;\n\nfloat getDepthPacked(const in vec2 coords) {\n return unpackRGBAToDepth(texture2D(tDepth, coords));\n}\n\nfloat getDepth(const in vec2 coords) {\n #ifdef depthTextureSupport\n return texture2D(tDepth, coords).r;\n #else\n return unpackRGBAToDepth(texture2D(tDepth, coords));\n #endif\n}\n\nfloat calcDepth(const in vec3 pos) {\n vec2 clipZW = pos.z * uProjection[2].zw + uProjection[3].zw;\n return 0.5 + 0.5 * clipZW.x / clipZW.y;\n}\n\n// \"Bump Mapping Unparametrized Surfaces on the GPU\" Morten S. Mikkelsen\n// https://mmikk.github.io/papers3d/mm_sfgrad_bump.pdf\nvec3 perturbNormal(in vec3 position, in vec3 normal, in float height, in float scale) {\n vec3 sigmaS = dFdx(position);\n vec3 sigmaT = dFdy(position);\n\n vec3 r1 = cross(sigmaT, normal);\n vec3 r2 = cross(normal, sigmaS);\n float det = dot(sigmaS, r1);\n\n float bs = dFdx(height);\n float bt = dFdy(height);\n\n vec3 surfGrad = sign(det) * (bs * r1 + bt * r2);\n return normalize(abs(det) * normal - scale * surfGrad);\n}\n\nfloat hash(in float h) {\n return fract(sin(h) * 43758.5453123);\n}\n\nfloat noise(in vec3 x) {\n vec3 p = floor(x);\n vec3 f = fract(x);\n f = f * f * (3.0 - 2.0 * f);\n\n float n = p.x + p.y * 157.0 + 113.0 * p.z;\n return mix(\n mix(mix(hash(n + 0.0), hash(n + 1.0), f.x),\n mix(hash(n + 157.0), hash(n + 158.0), f.x), f.y),\n mix(mix(hash(n + 113.0), hash(n + 114.0), f.x),\n mix(hash(n + 270.0), hash(n + 271.0), f.x), f.y), f.z);\n}\n\nfloat fbm(in vec3 p) {\n float f = 0.0;\n f += 0.5 * noise(p);\n p *= 2.01;\n f += 0.25 * noise(p);\n p *= 2.02;\n f += 0.125 * noise(p);\n\n return f;\n}\n";