@crystaldesign/real-time-viewer 24.12.0 → 24.12.1

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 (268) hide show
  1. package/build/esm/index.js +83 -49
  2. package/build/types/real-time-viewer/src/store/SceneStore.d.ts +1 -0
  3. package/build/types/real-time-viewer/src/store/SceneStore.d.ts.map +1 -1
  4. package/build/umd/1000.real-time-viewer.umd.min.js +2 -0
  5. package/build/umd/1000.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  6. package/build/umd/1142.real-time-viewer.umd.min.js +2 -0
  7. package/build/umd/1142.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  8. package/build/umd/1279.real-time-viewer.umd.min.js +2 -0
  9. package/build/umd/1279.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  10. package/build/umd/1459.real-time-viewer.umd.min.js +2 -0
  11. package/build/umd/1459.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  12. package/build/umd/{6912.real-time-viewer.umd.min.js → 1498.real-time-viewer.umd.min.js} +2 -2
  13. package/build/umd/1498.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  14. package/build/umd/151.real-time-viewer.umd.min.js +2 -0
  15. package/build/umd/151.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  16. package/build/umd/1781.real-time-viewer.umd.min.js +1 -1
  17. package/build/umd/{7501.real-time-viewer.umd.min.js → 1801.real-time-viewer.umd.min.js} +2 -2
  18. package/build/umd/1801.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  19. package/build/umd/{5555.real-time-viewer.umd.min.js → 2001.real-time-viewer.umd.min.js} +2 -2
  20. package/build/umd/2001.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  21. package/build/umd/2064.real-time-viewer.umd.min.js +2 -0
  22. package/build/umd/2064.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  23. package/build/umd/2198.real-time-viewer.umd.min.js +2 -0
  24. package/build/umd/2198.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  25. package/build/umd/2331.real-time-viewer.umd.min.js +2 -0
  26. package/build/umd/2331.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  27. package/build/umd/2447.real-time-viewer.umd.min.js +2 -0
  28. package/build/umd/2447.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  29. package/build/umd/{2817.real-time-viewer.umd.min.js → 2485.real-time-viewer.umd.min.js} +2 -2
  30. package/build/umd/2485.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  31. package/build/umd/2495.real-time-viewer.umd.min.js +2 -0
  32. package/build/umd/2495.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  33. package/build/umd/2594.real-time-viewer.umd.min.js +2 -0
  34. package/build/umd/2594.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  35. package/build/umd/2695.real-time-viewer.umd.min.js +2 -0
  36. package/build/umd/2695.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  37. package/build/umd/{9884.real-time-viewer.umd.min.js → 2775.real-time-viewer.umd.min.js} +2 -2
  38. package/build/umd/2775.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  39. package/build/umd/2815.real-time-viewer.umd.min.js +2 -0
  40. package/build/umd/2815.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  41. package/build/umd/{4248.real-time-viewer.umd.min.js → 2823.real-time-viewer.umd.min.js} +2 -2
  42. package/build/umd/2823.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  43. package/build/umd/{8728.real-time-viewer.umd.min.js → 2828.real-time-viewer.umd.min.js} +2 -2
  44. package/build/umd/2828.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  45. package/build/umd/{4431.real-time-viewer.umd.min.js → 2934.real-time-viewer.umd.min.js} +2 -2
  46. package/build/umd/2934.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  47. package/build/umd/2937.real-time-viewer.umd.min.js +2 -0
  48. package/build/umd/2937.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  49. package/build/umd/{1896.real-time-viewer.umd.min.js → 3210.real-time-viewer.umd.min.js} +2 -2
  50. package/build/umd/3210.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  51. package/build/umd/3313.real-time-viewer.umd.min.js +2 -0
  52. package/build/umd/3313.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  53. package/build/umd/{1731.real-time-viewer.umd.min.js → 3445.real-time-viewer.umd.min.js} +2 -2
  54. package/build/umd/3445.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  55. package/build/umd/{2871.real-time-viewer.umd.min.js → 3449.real-time-viewer.umd.min.js} +2 -2
  56. package/build/umd/3449.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  57. package/build/umd/{3956.real-time-viewer.umd.min.js → 3714.real-time-viewer.umd.min.js} +2 -2
  58. package/build/umd/3714.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  59. package/build/umd/3961.real-time-viewer.umd.min.js +2 -0
  60. package/build/umd/3961.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  61. package/build/umd/{9568.real-time-viewer.umd.min.js → 4290.real-time-viewer.umd.min.js} +2 -2
  62. package/build/umd/4290.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  63. package/build/umd/{5483.real-time-viewer.umd.min.js → 4401.real-time-viewer.umd.min.js} +2 -2
  64. package/build/umd/4401.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  65. package/build/umd/4405.real-time-viewer.umd.min.js +2 -0
  66. package/build/umd/4405.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  67. package/build/umd/{6829.real-time-viewer.umd.min.js → 4486.real-time-viewer.umd.min.js} +2 -2
  68. package/build/umd/4486.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  69. package/build/umd/{3945.real-time-viewer.umd.min.js → 4721.real-time-viewer.umd.min.js} +2 -2
  70. package/build/umd/4721.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  71. package/build/umd/{3456.real-time-viewer.umd.min.js → 4783.real-time-viewer.umd.min.js} +2 -2
  72. package/build/umd/4783.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  73. package/build/umd/{4711.real-time-viewer.umd.min.js → 4801.real-time-viewer.umd.min.js} +2 -2
  74. package/build/umd/4801.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  75. package/build/umd/5076.real-time-viewer.umd.min.js +2 -0
  76. package/build/umd/5076.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  77. package/build/umd/{7042.real-time-viewer.umd.min.js → 5151.real-time-viewer.umd.min.js} +2 -2
  78. package/build/umd/5151.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  79. package/build/umd/5529.real-time-viewer.umd.min.js +2 -0
  80. package/build/umd/5529.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  81. package/build/umd/568.real-time-viewer.umd.min.js +2 -0
  82. package/build/umd/568.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  83. package/build/umd/5713.real-time-viewer.umd.min.js +2 -0
  84. package/build/umd/5713.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  85. package/build/umd/584.real-time-viewer.umd.min.js +2 -0
  86. package/build/umd/584.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  87. package/build/umd/{6357.real-time-viewer.umd.min.js → 5923.real-time-viewer.umd.min.js} +2 -2
  88. package/build/umd/5923.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  89. package/build/umd/5960.real-time-viewer.umd.min.js +2 -0
  90. package/build/umd/5960.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  91. package/build/umd/{7352.real-time-viewer.umd.min.js → 6183.real-time-viewer.umd.min.js} +2 -2
  92. package/build/umd/6183.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  93. package/build/umd/6266.real-time-viewer.umd.min.js +2 -0
  94. package/build/umd/6266.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  95. package/build/umd/6671.real-time-viewer.umd.min.js +2 -0
  96. package/build/umd/6671.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  97. package/build/umd/6771.real-time-viewer.umd.min.js +2 -0
  98. package/build/umd/6771.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  99. package/build/umd/6926.real-time-viewer.umd.min.js +2 -0
  100. package/build/umd/6926.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  101. package/build/umd/7085.real-time-viewer.umd.min.js +2 -0
  102. package/build/umd/7085.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  103. package/build/umd/7136.real-time-viewer.umd.min.js +2 -0
  104. package/build/umd/7136.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  105. package/build/umd/7290.real-time-viewer.umd.min.js +2 -0
  106. package/build/umd/7290.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  107. package/build/umd/{1447.real-time-viewer.umd.min.js → 7302.real-time-viewer.umd.min.js} +2 -2
  108. package/build/umd/7302.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  109. package/build/umd/7377.real-time-viewer.umd.min.js +2 -0
  110. package/build/umd/7377.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  111. package/build/umd/7490.real-time-viewer.umd.min.js +2 -0
  112. package/build/umd/7490.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  113. package/build/umd/{3116.real-time-viewer.umd.min.js → 7505.real-time-viewer.umd.min.js} +2 -2
  114. package/build/umd/7505.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  115. package/build/umd/7546.real-time-viewer.umd.min.js +2 -0
  116. package/build/umd/7546.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  117. package/build/umd/7813.real-time-viewer.umd.min.js +2 -0
  118. package/build/umd/7813.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  119. package/build/umd/{9078.real-time-viewer.umd.min.js → 7942.real-time-viewer.umd.min.js} +2 -2
  120. package/build/umd/7942.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  121. package/build/umd/808.real-time-viewer.umd.min.js +2 -0
  122. package/build/umd/808.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  123. package/build/umd/8381.real-time-viewer.umd.min.js +2 -0
  124. package/build/umd/8381.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  125. package/build/umd/{7751.real-time-viewer.umd.min.js → 8447.real-time-viewer.umd.min.js} +2 -2
  126. package/build/umd/8447.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  127. package/build/umd/8484.real-time-viewer.umd.min.js +2 -0
  128. package/build/umd/8484.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  129. package/build/umd/8690.real-time-viewer.umd.min.js +2 -0
  130. package/build/umd/8690.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  131. package/build/umd/8954.real-time-viewer.umd.min.js +2 -0
  132. package/build/umd/8954.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  133. package/build/umd/8973.real-time-viewer.umd.min.js +2 -0
  134. package/build/umd/8973.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  135. package/build/umd/9090.real-time-viewer.umd.min.js +2 -0
  136. package/build/umd/9090.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  137. package/build/umd/{8991.real-time-viewer.umd.min.js → 9243.real-time-viewer.umd.min.js} +2 -2
  138. package/build/umd/9243.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  139. package/build/umd/9329.real-time-viewer.umd.min.js +2 -0
  140. package/build/umd/9329.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  141. package/build/umd/{8105.real-time-viewer.umd.min.js → 9380.real-time-viewer.umd.min.js} +2 -2
  142. package/build/umd/9380.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  143. package/build/umd/973.real-time-viewer.umd.min.js +2 -0
  144. package/build/umd/973.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  145. package/build/umd/9909.real-time-viewer.umd.min.js +2 -0
  146. package/build/umd/9909.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  147. package/build/umd/999.real-time-viewer.umd.min.js +2 -0
  148. package/build/umd/999.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  149. package/build/umd/real-time-viewer.umd.min.js +1 -1
  150. package/build/umd/report.html +1 -1
  151. package/package.json +2 -2
  152. package/build/umd/1309.real-time-viewer.umd.min.js +0 -2
  153. package/build/umd/1309.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  154. package/build/umd/1447.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  155. package/build/umd/1499.real-time-viewer.umd.min.js +0 -2
  156. package/build/umd/1499.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  157. package/build/umd/1731.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  158. package/build/umd/1896.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  159. package/build/umd/2011.real-time-viewer.umd.min.js +0 -2
  160. package/build/umd/2011.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  161. package/build/umd/2439.real-time-viewer.umd.min.js +0 -2
  162. package/build/umd/2439.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  163. package/build/umd/2817.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  164. package/build/umd/2871.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  165. package/build/umd/3116.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  166. package/build/umd/3243.real-time-viewer.umd.min.js +0 -2
  167. package/build/umd/3243.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  168. package/build/umd/3351.real-time-viewer.umd.min.js +0 -2
  169. package/build/umd/3351.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  170. package/build/umd/3456.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  171. package/build/umd/3631.real-time-viewer.umd.min.js +0 -2
  172. package/build/umd/3631.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  173. package/build/umd/3945.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  174. package/build/umd/3956.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  175. package/build/umd/4091.real-time-viewer.umd.min.js +0 -2
  176. package/build/umd/4091.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  177. package/build/umd/410.real-time-viewer.umd.min.js +0 -2
  178. package/build/umd/410.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  179. package/build/umd/4153.real-time-viewer.umd.min.js +0 -2
  180. package/build/umd/4153.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  181. package/build/umd/4248.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  182. package/build/umd/4378.real-time-viewer.umd.min.js +0 -2
  183. package/build/umd/4378.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  184. package/build/umd/4431.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  185. package/build/umd/4542.real-time-viewer.umd.min.js +0 -2
  186. package/build/umd/4542.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  187. package/build/umd/4602.real-time-viewer.umd.min.js +0 -2
  188. package/build/umd/4602.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  189. package/build/umd/4661.real-time-viewer.umd.min.js +0 -2
  190. package/build/umd/4661.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  191. package/build/umd/4669.real-time-viewer.umd.min.js +0 -2
  192. package/build/umd/4669.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  193. package/build/umd/4711.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  194. package/build/umd/4823.real-time-viewer.umd.min.js +0 -2
  195. package/build/umd/4823.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  196. package/build/umd/5462.real-time-viewer.umd.min.js +0 -2
  197. package/build/umd/5462.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  198. package/build/umd/5478.real-time-viewer.umd.min.js +0 -2
  199. package/build/umd/5478.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  200. package/build/umd/5483.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  201. package/build/umd/5555.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  202. package/build/umd/5860.real-time-viewer.umd.min.js +0 -2
  203. package/build/umd/5860.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  204. package/build/umd/5922.real-time-viewer.umd.min.js +0 -2
  205. package/build/umd/5922.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  206. package/build/umd/6095.real-time-viewer.umd.min.js +0 -2
  207. package/build/umd/6095.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  208. package/build/umd/615.real-time-viewer.umd.min.js +0 -2
  209. package/build/umd/615.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  210. package/build/umd/6230.real-time-viewer.umd.min.js +0 -2
  211. package/build/umd/6230.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  212. package/build/umd/6357.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  213. package/build/umd/6373.real-time-viewer.umd.min.js +0 -2
  214. package/build/umd/6373.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  215. package/build/umd/653.real-time-viewer.umd.min.js +0 -2
  216. package/build/umd/653.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  217. package/build/umd/6656.real-time-viewer.umd.min.js +0 -2
  218. package/build/umd/6656.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  219. package/build/umd/6829.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  220. package/build/umd/6912.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  221. package/build/umd/7042.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  222. package/build/umd/710.real-time-viewer.umd.min.js +0 -2
  223. package/build/umd/710.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  224. package/build/umd/7142.real-time-viewer.umd.min.js +0 -2
  225. package/build/umd/7142.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  226. package/build/umd/7229.real-time-viewer.umd.min.js +0 -2
  227. package/build/umd/7229.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  228. package/build/umd/7276.real-time-viewer.umd.min.js +0 -2
  229. package/build/umd/7276.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  230. package/build/umd/7352.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  231. package/build/umd/7501.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  232. package/build/umd/7607.real-time-viewer.umd.min.js +0 -2
  233. package/build/umd/7607.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  234. package/build/umd/7729.real-time-viewer.umd.min.js +0 -2
  235. package/build/umd/7729.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  236. package/build/umd/7751.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  237. package/build/umd/7754.real-time-viewer.umd.min.js +0 -2
  238. package/build/umd/7754.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  239. package/build/umd/8078.real-time-viewer.umd.min.js +0 -2
  240. package/build/umd/8078.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  241. package/build/umd/8105.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  242. package/build/umd/815.real-time-viewer.umd.min.js +0 -2
  243. package/build/umd/815.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  244. package/build/umd/8240.real-time-viewer.umd.min.js +0 -2
  245. package/build/umd/8240.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  246. package/build/umd/8333.real-time-viewer.umd.min.js +0 -2
  247. package/build/umd/8333.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  248. package/build/umd/8526.real-time-viewer.umd.min.js +0 -2
  249. package/build/umd/8526.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  250. package/build/umd/8620.real-time-viewer.umd.min.js +0 -2
  251. package/build/umd/8620.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  252. package/build/umd/8728.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  253. package/build/umd/8729.real-time-viewer.umd.min.js +0 -2
  254. package/build/umd/8729.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  255. package/build/umd/8991.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  256. package/build/umd/9078.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  257. package/build/umd/913.real-time-viewer.umd.min.js +0 -2
  258. package/build/umd/913.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  259. package/build/umd/930.real-time-viewer.umd.min.js +0 -2
  260. package/build/umd/930.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  261. package/build/umd/9334.real-time-viewer.umd.min.js +0 -2
  262. package/build/umd/9334.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  263. package/build/umd/9383.real-time-viewer.umd.min.js +0 -2
  264. package/build/umd/9383.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  265. package/build/umd/9568.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  266. package/build/umd/9712.real-time-viewer.umd.min.js +0 -2
  267. package/build/umd/9712.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  268. package/build/umd/9884.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
@@ -589,9 +589,9 @@ function Grids () {
589
589
  };
590
590
  }
591
591
 
592
- /*
593
- SceneStore
594
- Wraps the scene with additional data and methods
592
+ /*
593
+ SceneStore
594
+ Wraps the scene with additional data and methods
595
595
  */
596
596
  var GridStore = /*#__PURE__*/function () {
597
597
  function GridStore(sceneStore, uiStore, viewHandler) {
@@ -932,9 +932,9 @@ function updateCam(camera, scene) {
932
932
  function _createForOfIteratorHelper$8(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$8(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
933
933
  function _unsupportedIterableToArray$8(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$8(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$8(r, a) : void 0; } }
934
934
  function _arrayLikeToArray$8(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
935
- /*
936
- SceneStore
937
- Wraps the scene with additional data and methods
935
+ /*
936
+ SceneStore
937
+ Wraps the scene with additional data and methods
938
938
  */
939
939
  var SceneStore = /*#__PURE__*/function () {
940
940
  function SceneStore(scene, hqRenderScript, utilStore, apiConfig, jwt, onMissingGeo) {
@@ -1110,7 +1110,7 @@ var SceneStore = /*#__PURE__*/function () {
1110
1110
  return this._sceneConstruct.root;
1111
1111
  }
1112
1112
  }, {
1113
- key: "elements",
1113
+ key: "mainElements",
1114
1114
  get: function get() {
1115
1115
  var _this$_sceneConstruct2;
1116
1116
  var elms = [];
@@ -1125,7 +1125,9 @@ var SceneStore = /*#__PURE__*/function () {
1125
1125
  try {
1126
1126
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
1127
1127
  var element = _step2.value;
1128
- elms.push(element);
1128
+ var name = element.bbn.name;
1129
+ var elId = name.slice(name.lastIndexOf('E'), name.length);
1130
+ if (elId.split('.').length == 1) elms.push(element);
1129
1131
  }
1130
1132
  } catch (err) {
1131
1133
  _iterator2.e(err);
@@ -1140,6 +1142,37 @@ var SceneStore = /*#__PURE__*/function () {
1140
1142
  }
1141
1143
  return elms;
1142
1144
  }
1145
+ }, {
1146
+ key: "elements",
1147
+ get: function get() {
1148
+ var _this$_sceneConstruct3;
1149
+ var elms = [];
1150
+ if (!((_this$_sceneConstruct3 = this._sceneConstruct.root) !== null && _this$_sceneConstruct3 !== void 0 && _this$_sceneConstruct3.sets)) return [];
1151
+ var _iterator3 = _createForOfIteratorHelper$8(this._sceneConstruct.root.sets),
1152
+ _step3;
1153
+ try {
1154
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
1155
+ var set = _step3.value;
1156
+ var _iterator4 = _createForOfIteratorHelper$8(set.elements),
1157
+ _step4;
1158
+ try {
1159
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
1160
+ var element = _step4.value;
1161
+ elms.push(element);
1162
+ }
1163
+ } catch (err) {
1164
+ _iterator4.e(err);
1165
+ } finally {
1166
+ _iterator4.f();
1167
+ }
1168
+ }
1169
+ } catch (err) {
1170
+ _iterator3.e(err);
1171
+ } finally {
1172
+ _iterator3.f();
1173
+ }
1174
+ return elms;
1175
+ }
1143
1176
  }, {
1144
1177
  key: "cameraTargetPosition",
1145
1178
  get: function get() {
@@ -1173,48 +1206,48 @@ var SceneStore = /*#__PURE__*/function () {
1173
1206
  }, {
1174
1207
  key: "getElementByName",
1175
1208
  value: function getElementByName(name) {
1176
- var _this$_sceneConstruct3, _this$_sceneConstruct4;
1177
- if (!((_this$_sceneConstruct3 = this._sceneConstruct.root) !== null && _this$_sceneConstruct3 !== void 0 && _this$_sceneConstruct3.sets)) return undefined;
1178
- var _iterator3 = _createForOfIteratorHelper$8((_this$_sceneConstruct4 = this._sceneConstruct.root) === null || _this$_sceneConstruct4 === void 0 ? void 0 : _this$_sceneConstruct4.sets),
1179
- _step3;
1209
+ var _this$_sceneConstruct4, _this$_sceneConstruct5;
1210
+ if (!((_this$_sceneConstruct4 = this._sceneConstruct.root) !== null && _this$_sceneConstruct4 !== void 0 && _this$_sceneConstruct4.sets)) return undefined;
1211
+ var _iterator5 = _createForOfIteratorHelper$8((_this$_sceneConstruct5 = this._sceneConstruct.root) === null || _this$_sceneConstruct5 === void 0 ? void 0 : _this$_sceneConstruct5.sets),
1212
+ _step5;
1180
1213
  try {
1181
- for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
1182
- var set = _step3.value;
1183
- var _iterator4 = _createForOfIteratorHelper$8(set.elements),
1184
- _step4;
1214
+ for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
1215
+ var set = _step5.value;
1216
+ var _iterator6 = _createForOfIteratorHelper$8(set.elements),
1217
+ _step6;
1185
1218
  try {
1186
- for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
1187
- var element = _step4.value;
1219
+ for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
1220
+ var element = _step6.value;
1188
1221
  if (element.bbn.name == name) return element;
1189
1222
  }
1190
1223
  } catch (err) {
1191
- _iterator4.e(err);
1224
+ _iterator6.e(err);
1192
1225
  } finally {
1193
- _iterator4.f();
1226
+ _iterator6.f();
1194
1227
  }
1195
1228
  }
1196
1229
  } catch (err) {
1197
- _iterator3.e(err);
1230
+ _iterator5.e(err);
1198
1231
  } finally {
1199
- _iterator3.f();
1232
+ _iterator5.f();
1200
1233
  }
1201
1234
  return undefined;
1202
1235
  }
1203
1236
  }, {
1204
1237
  key: "getElementNameById",
1205
1238
  value: function getElementNameById(id) {
1206
- var _this$_sceneConstruct5, _this$_sceneConstruct6;
1207
- if (!((_this$_sceneConstruct5 = this._sceneConstruct.root) !== null && _this$_sceneConstruct5 !== void 0 && _this$_sceneConstruct5.sets)) return undefined;
1208
- var _iterator5 = _createForOfIteratorHelper$8((_this$_sceneConstruct6 = this._sceneConstruct.root) === null || _this$_sceneConstruct6 === void 0 ? void 0 : _this$_sceneConstruct6.sets),
1209
- _step5;
1239
+ var _this$_sceneConstruct6, _this$_sceneConstruct7;
1240
+ if (!((_this$_sceneConstruct6 = this._sceneConstruct.root) !== null && _this$_sceneConstruct6 !== void 0 && _this$_sceneConstruct6.sets)) return undefined;
1241
+ var _iterator7 = _createForOfIteratorHelper$8((_this$_sceneConstruct7 = this._sceneConstruct.root) === null || _this$_sceneConstruct7 === void 0 ? void 0 : _this$_sceneConstruct7.sets),
1242
+ _step7;
1210
1243
  try {
1211
- for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
1212
- var set = _step5.value;
1213
- var _iterator6 = _createForOfIteratorHelper$8(set.elements),
1214
- _step6;
1244
+ for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
1245
+ var set = _step7.value;
1246
+ var _iterator8 = _createForOfIteratorHelper$8(set.elements),
1247
+ _step8;
1215
1248
  try {
1216
- for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
1217
- var element = _step6.value;
1249
+ for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
1250
+ var element = _step8.value;
1218
1251
  var nm = element.bbn.name;
1219
1252
  var elementPos = nm.slice(nm.lastIndexOf('E') + 1, nm.length);
1220
1253
  if (elementPos == id.toString()) {
@@ -1222,15 +1255,15 @@ var SceneStore = /*#__PURE__*/function () {
1222
1255
  }
1223
1256
  }
1224
1257
  } catch (err) {
1225
- _iterator6.e(err);
1258
+ _iterator8.e(err);
1226
1259
  } finally {
1227
- _iterator6.f();
1260
+ _iterator8.f();
1228
1261
  }
1229
1262
  }
1230
1263
  } catch (err) {
1231
- _iterator5.e(err);
1264
+ _iterator7.e(err);
1232
1265
  } finally {
1233
- _iterator5.f();
1266
+ _iterator7.f();
1234
1267
  }
1235
1268
  return undefined;
1236
1269
  }
@@ -1338,8 +1371,8 @@ var SceneStore = /*#__PURE__*/function () {
1338
1371
  }, {
1339
1372
  key: "addElement",
1340
1373
  value: function addElement(bbn, hqs) {
1341
- var _this$_sceneConstruct7;
1342
- var set = (_this$_sceneConstruct7 = this._sceneConstruct.root) === null || _this$_sceneConstruct7 === void 0 ? void 0 : _this$_sceneConstruct7.sets[this._sceneConstruct.root.sets.length - 1];
1374
+ var _this$_sceneConstruct8;
1375
+ var set = (_this$_sceneConstruct8 = this._sceneConstruct.root) === null || _this$_sceneConstruct8 === void 0 ? void 0 : _this$_sceneConstruct8.sets[this._sceneConstruct.root.sets.length - 1];
1343
1376
  if (!set) {
1344
1377
  throw new Error("can't register sets before root");
1345
1378
  }
@@ -1354,8 +1387,8 @@ var SceneStore = /*#__PURE__*/function () {
1354
1387
  }, {
1355
1388
  key: "removeElement",
1356
1389
  value: function removeElement(hqs) {
1357
- var _this$_sceneConstruct8;
1358
- var set = (_this$_sceneConstruct8 = this._sceneConstruct.root) === null || _this$_sceneConstruct8 === void 0 ? void 0 : _this$_sceneConstruct8.sets[this._sceneConstruct.root.sets.length - 1];
1390
+ var _this$_sceneConstruct9;
1391
+ var set = (_this$_sceneConstruct9 = this._sceneConstruct.root) === null || _this$_sceneConstruct9 === void 0 ? void 0 : _this$_sceneConstruct9.sets[this._sceneConstruct.root.sets.length - 1];
1359
1392
  if (!set) {
1360
1393
  throw new Error("can't register sets before root");
1361
1394
  }
@@ -1564,6 +1597,7 @@ function SelHandler (_ref) {
1564
1597
  sceneStore.focusElement(elem);
1565
1598
  };
1566
1599
  var onElementSelected = function onElementSelected(elem, hit, doubleClick) {
1600
+ var _sceneStore$focusedEl, _sceneStore$focusedEl2;
1567
1601
  var elemName = elem.name.slice(-1);
1568
1602
  if (doubleClick && sceneStore.selectedElement == elemName && hit.pickedMesh) {
1569
1603
  var _getParent = function getParent(mesh) {
@@ -1573,7 +1607,7 @@ function SelHandler (_ref) {
1573
1607
  };
1574
1608
  sceneStore.focusElement(_getParent(hit.pickedMesh));
1575
1609
  return;
1576
- } else if (doubleClick || sceneStore.selectedElement == elemName) {
1610
+ } else if (((_sceneStore$focusedEl = sceneStore.focusedElement) === null || _sceneStore$focusedEl === void 0 || (_sceneStore$focusedEl = _sceneStore$focusedEl.name) === null || _sceneStore$focusedEl === void 0 || (_sceneStore$focusedEl2 = _sceneStore$focusedEl.slice) === null || _sceneStore$focusedEl2 === void 0 ? void 0 : _sceneStore$focusedEl2.call(_sceneStore$focusedEl, -1)) != elemName && (doubleClick || sceneStore.selectedElement == elemName)) {
1577
1611
  sceneStore.focusElement(elem);
1578
1612
  }
1579
1613
  sceneStore.selectedElement = elemName;
@@ -1588,8 +1622,8 @@ function SelHandler (_ref) {
1588
1622
  function _createForOfIteratorHelper$6(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$6(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
1589
1623
  function _unsupportedIterableToArray$6(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$6(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$6(r, a) : void 0; } }
1590
1624
  function _arrayLikeToArray$6(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
1591
- /*
1592
- UIStore
1625
+ /*
1626
+ UIStore
1593
1627
  */
1594
1628
 
1595
1629
  var UIStore = /*#__PURE__*/function () {
@@ -1884,8 +1918,8 @@ var UIStore = /*#__PURE__*/function () {
1884
1918
  }]);
1885
1919
  }();
1886
1920
 
1887
- /*
1888
- UtilStore
1921
+ /*
1922
+ UtilStore
1889
1923
  */
1890
1924
 
1891
1925
  var UtilStore = /*#__PURE__*/function () {
@@ -3084,7 +3118,7 @@ var parser = /*#__PURE__*/function () {
3084
3118
  utilStore = useUtilStoreContext();
3085
3119
  uiStore = useUIStoreContext();
3086
3120
  wasPlanned = sceneStore.hasPlanned;
3087
- elementCount = sceneStore.elements.length; //disable elementrows from old cache
3121
+ elementCount = sceneStore.mainElements.length; //disable elementrows from old cache
3088
3122
  changedElements === null || changedElements === void 0 || (_changedElements$upda = changedElements.updatedElements) === null || _changedElements$upda === void 0 || _changedElements$upda.forEach(function (el) {
3089
3123
  return utilStore.disableElementRows(el.name, cache);
3090
3124
  });
@@ -3164,9 +3198,9 @@ var parser = /*#__PURE__*/function () {
3164
3198
  sizeDiff = Vector3$1.Distance(bbox.min, bbox.max) - focusedElement.size;
3165
3199
  if ((Math.abs(focusedNode.absolutePosition.x - focusedElement.position.x) > 0.05 || Math.abs(focusedNode.absolutePosition.y - focusedElement.position.y) > 0.05 || Math.abs(focusedNode.absolutePosition.z - focusedElement.position.z) > 0.05) && sceneStore.isControlledViewpoint || wasPlanned && sceneStore.isControlledViewpoint && (focusedElement.size != 0 && Math.abs(sizeDiff) > 0.09 || !isInFrustum && Math.abs(sizeDiff) > 0)) {
3166
3200
  sceneStore.focusElement(focusedNode);
3167
- } else if ((wasPlanned || !uiStore.unityCombActive) && elementCount != sceneStore.elements.length) {
3201
+ } else if ((wasPlanned || !uiStore.unityCombActive) && elementCount != sceneStore.mainElements.length) {
3168
3202
  sceneStore.focusElement();
3169
- } else {
3203
+ } else if (uiStore.unityCombActive) {
3170
3204
  updateCam(sceneStore.hqRenderScript.cams[0], sceneStore.scene);
3171
3205
  }
3172
3206
  case 29:
@@ -3566,7 +3600,7 @@ var flexContainerRow = "flex-container-row-ENPOV";
3566
3600
  var createButton = "create-button-NPGTz";
3567
3601
  var checkBox = "check-box-2GPp1";
3568
3602
  var inputField = "input-field-uCQ0h";
3569
- var css_248z = ".canvas-gZFEa.focus-visible-ubYpO {\n outline: medium none invert;\n outline: initial;\n}\n\n.canvas-gZFEa.focus-visible-ubYpO {\n outline: medium none invert;\n outline: initial;\n}\n\n.canvas-gZFEa.focus-visible-ubYpO {\n outline: medium none invert;\n outline: initial;\n}\n\n.canvas-gZFEa:focus-visible {\n outline: medium none invert;\n outline: initial;\n}\n\n.flex-container-column-XYHvU {\n display: flex;\n flex-wrap: nowrap;\n flex-direction: column;\n background-color: white;\n gap: 15px;\n padding: 10px;\n margin-top: 50px;\n border: 0.5px solid;\n border-top-right-radius: 10px;\n border-bottom-right-radius: 10px;\n}\n\n.flex-container-column-closed-2D7IF {\n display: flex;\n flex-wrap: nowrap;\n flex-direction: column;\n background-color: white;\n gap: 15px;\n padding: 10px;\n}\n\n.flex-container-row-ENPOV {\n display: flex;\n justify-content: space-between;\n flex-wrap: nowrap;\n flex-direction: row;\n background-color: white;\n gap: 5px;\n}\n\n.create-button-NPGTz {\n width: 200px;\n height: 35px;\n border-radius: 5px;\n border-style: none;\n color: #fff;\n background-color: #713434;\n}\n\n.create-button-NPGTz:hover {\n background-color: #42090e;\n}\n\n.check-box-2GPp1 {\n width: 20px;\n height: 20px;\n margin: 0px;\n}\n\n.input-field-uCQ0h {\n width: 193px;\n height: 35px;\n border-radius: 5px;\n border-style: none;\n color: rgb(0, 0, 0);\n border-style: solid;\n border-color: #000000;\n background-color: #f7f7f7;\n border-width: 0.5px;\n}\n\n.input-field-uCQ0h:hover {\n background-color: #ebebeb;\n}\n";
3603
+ var css_248z = ".canvas-gZFEa.focus-visible-ubYpO {\r\n outline: medium none invert;\r\n outline: initial;\r\n}\r\n\r\n.canvas-gZFEa.focus-visible-ubYpO {\r\n outline: medium none invert;\r\n outline: initial;\r\n}\r\n\r\n.canvas-gZFEa.focus-visible-ubYpO {\r\n outline: medium none invert;\r\n outline: initial;\r\n}\r\n\r\n.canvas-gZFEa:focus-visible {\r\n outline: medium none invert;\r\n outline: initial;\r\n}\r\n\r\n.flex-container-column-XYHvU {\r\n display: flex;\r\n flex-wrap: nowrap;\r\n flex-direction: column;\r\n background-color: white;\r\n gap: 15px;\r\n padding: 10px;\r\n margin-top: 50px;\r\n border: 0.5px solid;\r\n border-top-right-radius: 10px;\r\n border-bottom-right-radius: 10px;\r\n}\r\n\r\n.flex-container-column-closed-2D7IF {\r\n display: flex;\r\n flex-wrap: nowrap;\r\n flex-direction: column;\r\n background-color: white;\r\n gap: 15px;\r\n padding: 10px;\r\n}\r\n\r\n.flex-container-row-ENPOV {\r\n display: flex;\r\n justify-content: space-between;\r\n flex-wrap: nowrap;\r\n flex-direction: row;\r\n background-color: white;\r\n gap: 5px;\r\n}\r\n\r\n.create-button-NPGTz {\r\n width: 200px;\r\n height: 35px;\r\n border-radius: 5px;\r\n border-style: none;\r\n color: #fff;\r\n background-color: #713434;\r\n}\r\n\r\n.create-button-NPGTz:hover {\r\n background-color: #42090e;\r\n}\r\n\r\n.check-box-2GPp1 {\r\n width: 20px;\r\n height: 20px;\r\n margin: 0px;\r\n}\r\n\r\n.input-field-uCQ0h {\r\n width: 193px;\r\n height: 35px;\r\n border-radius: 5px;\r\n border-style: none;\r\n color: rgb(0, 0, 0);\r\n border-style: solid;\r\n border-color: #000000;\r\n background-color: #f7f7f7;\r\n border-width: 0.5px;\r\n}\r\n\r\n.input-field-uCQ0h:hover {\r\n background-color: #ebebeb;\r\n}\r\n";
3570
3604
  styleInject(css_248z);
3571
3605
 
3572
3606
  var arrowLeft = "data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20height%3D%2248%22%20width%3D%2248%22%3E%3Cpath%20d%3D%22M28.05%2036%2016%2023.95%2028.05%2011.9l2.15%202.15-9.9%209.9%209.9%209.9Z%22%2F%3E%3C%2Fsvg%3E";
@@ -67,6 +67,7 @@ export declare class SceneStore {
67
67
  bbn: TransformNode;
68
68
  sets: import("./types").Set[];
69
69
  } | undefined;
70
+ get mainElements(): import("./types").Element[];
70
71
  get elements(): import("./types").Element[];
71
72
  get cameraTargetPosition(): Vector3;
72
73
  get targetCameraPosition(): Vector3;
@@ -1 +1 @@
1
- {"version":3,"file":"SceneStore.d.ts","sourceRoot":"","sources":["../../../../../src/store/SceneStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SceneStore.d.ts","sourceRoot":"","sources":["../../../../../src/store/SceneStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ /*! For license information please see 1000.real-time-viewer.umd.min.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[1e3],{1e3:(e,r,n)=>{n.r(r),n.d(r,{passCubePixelShader:()=>a});const u="passCubePixelShader",t="varying vec2 vUV;uniform samplerCube textureSampler;\n#define CUSTOM_FRAGMENT_DEFINITIONS\nvoid main(void) \n{vec2 uv=vUV*2.0-1.0;\n#ifdef POSITIVEX\ngl_FragColor=textureCube(textureSampler,vec3(1.001,uv.y,uv.x));\n#endif\n#ifdef NEGATIVEX\ngl_FragColor=textureCube(textureSampler,vec3(-1.001,uv.y,uv.x));\n#endif\n#ifdef POSITIVEY\ngl_FragColor=textureCube(textureSampler,vec3(uv.y,1.001,uv.x));\n#endif\n#ifdef NEGATIVEY\ngl_FragColor=textureCube(textureSampler,vec3(uv.y,-1.001,uv.x));\n#endif\n#ifdef POSITIVEZ\ngl_FragColor=textureCube(textureSampler,vec3(uv,1.001));\n#endif\n#ifdef NEGATIVEZ\ngl_FragColor=textureCube(textureSampler,vec3(uv,-1.001));\n#endif\n}";n(1642).v.ShadersStore[u]=t;const a={name:u,shader:t}}}]);
@@ -0,0 +1 @@
1
+ /*! filename:1000 */
@@ -0,0 +1,2 @@
1
+ /*! For license information please see 1142.real-time-viewer.umd.min.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[1142],{1142:(a,e,r)=>{r.r(e),r.d(e,{shadowMapFragmentSoftTransparentShadow:()=>d});const s="shadowMapFragmentSoftTransparentShadow",n="#if SM_SOFTTRANSPARENTSHADOW==1\nif ((bayerDither8(floor(mod(gl_FragCoord.xy,8.0))))/64.0>=softTransparentShadowSM.x*alpha) discard;\n#endif\n";r(1642).v.IncludesShadersStore[s]=n;const d={name:s,shader:n}}}]);
@@ -0,0 +1 @@
1
+ /*! filename:1142 */
@@ -0,0 +1,2 @@
1
+ /*! For license information please see 1279.real-time-viewer.umd.min.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[1279],{1775:(e,o,n)=>{const i="fogFragment",t="#ifdef FOG\nfloat fog=CalcFogFactor();\n#ifdef PBR\nfog=toLinearSpace(fog);\n#endif\ncolor.rgb=mix(vFogColor,color.rgb,fog);\n#endif\n";n(1642).v.IncludesShadersStore[i]=t},186:(e,o,n)=>{const i="fogFragmentDeclaration",t="#ifdef FOG\n#define FOGMODE_NONE 0.\n#define FOGMODE_EXP 1.\n#define FOGMODE_EXP2 2.\n#define FOGMODE_LINEAR 3.\n#define E 2.71828\nuniform vec4 vFogInfos;uniform vec3 vFogColor;varying vec3 vFogDistance;float CalcFogFactor()\n{float fogCoeff=1.0;float fogStart=vFogInfos.y;float fogEnd=vFogInfos.z;float fogDensity=vFogInfos.w;float fogDistance=length(vFogDistance);if (FOGMODE_LINEAR==vFogInfos.x)\n{fogCoeff=(fogEnd-fogDistance)/(fogEnd-fogStart);}\nelse if (FOGMODE_EXP==vFogInfos.x)\n{fogCoeff=1.0/pow(E,fogDistance*fogDensity);}\nelse if (FOGMODE_EXP2==vFogInfos.x)\n{fogCoeff=1.0/pow(E,fogDistance*fogDistance*fogDensity*fogDensity);}\nreturn clamp(fogCoeff,0.0,1.0);}\n#endif\n";n(1642).v.IncludesShadersStore[i]=t},1307:(e,o,n)=>{const i="imageProcessingDeclaration",t="#ifdef EXPOSURE\nuniform float exposureLinear;\n#endif\n#ifdef CONTRAST\nuniform float contrast;\n#endif\n#if defined(VIGNETTE) || defined(DITHER)\nuniform vec2 vInverseScreenSize;\n#endif\n#ifdef VIGNETTE\nuniform vec4 vignetteSettings1;uniform vec4 vignetteSettings2;\n#endif\n#ifdef COLORCURVES\nuniform vec4 vCameraColorCurveNegative;uniform vec4 vCameraColorCurveNeutral;uniform vec4 vCameraColorCurvePositive;\n#endif\n#ifdef COLORGRADING\n#ifdef COLORGRADING3D\nuniform highp sampler3D txColorTransform;\n#else\nuniform sampler2D txColorTransform;\n#endif\nuniform vec4 colorTransformSettings;\n#endif\n#ifdef DITHER\nuniform float ditherIntensity;\n#endif\n";n(1642).v.IncludesShadersStore[i]=t},6587:(e,o,n)=>{const i="imageProcessingFunctions",t="#if defined(COLORGRADING) && !defined(COLORGRADING3D)\n/** \n* Polyfill for SAMPLE_TEXTURE_3D,which is unsupported in WebGL.\n* sampler3dSetting.x=textureOffset (0.5/textureSize).\n* sampler3dSetting.y=textureSize.\n*/\n#define inline\nvec3 sampleTexture3D(sampler2D colorTransform,vec3 color,vec2 sampler3dSetting)\n{float sliceSize=2.0*sampler3dSetting.x; \n#ifdef SAMPLER3DGREENDEPTH\nfloat sliceContinuous=(color.g-sampler3dSetting.x)*sampler3dSetting.y;\n#else\nfloat sliceContinuous=(color.b-sampler3dSetting.x)*sampler3dSetting.y;\n#endif\nfloat sliceInteger=floor(sliceContinuous);float sliceFraction=sliceContinuous-sliceInteger;\n#ifdef SAMPLER3DGREENDEPTH\nvec2 sliceUV=color.rb;\n#else\nvec2 sliceUV=color.rg;\n#endif\nsliceUV.x*=sliceSize;sliceUV.x+=sliceInteger*sliceSize;sliceUV=saturate(sliceUV);vec4 slice0Color=texture2D(colorTransform,sliceUV);sliceUV.x+=sliceSize;sliceUV=saturate(sliceUV);vec4 slice1Color=texture2D(colorTransform,sliceUV);vec3 result=mix(slice0Color.rgb,slice1Color.rgb,sliceFraction);\n#ifdef SAMPLER3DBGRMAP\ncolor.rgb=result.rgb;\n#else\ncolor.rgb=result.bgr;\n#endif\nreturn color;}\n#endif\n#if TONEMAPPING==3\nconst float PBRNeutralStartCompression=0.8-0.04;const float PBRNeutralDesaturation=0.15;vec3 PBRNeutralToneMapping( vec3 color ) {float x=min(color.r,min(color.g,color.b));float offset=x<0.08 ? x-6.25*x*x : 0.04;color-=offset;float peak=max(color.r,max(color.g,color.b));if (peak<PBRNeutralStartCompression) return color;float d=1.-PBRNeutralStartCompression;float newPeak=1.-d*d/(peak+d-PBRNeutralStartCompression);color*=newPeak/peak;float g=1.-1./(PBRNeutralDesaturation*(peak-newPeak)+1.);return mix(color,newPeak*vec3(1,1,1),g);}\n#endif\n#if TONEMAPPING==2\nconst mat3 ACESInputMat=mat3(\nvec3(0.59719,0.07600,0.02840),\nvec3(0.35458,0.90834,0.13383),\nvec3(0.04823,0.01566,0.83777)\n);const mat3 ACESOutputMat=mat3(\nvec3( 1.60475,-0.10208,-0.00327),\nvec3(-0.53108, 1.10813,-0.07276),\nvec3(-0.07367,-0.00605, 1.07602)\n);vec3 RRTAndODTFit(vec3 v)\n{vec3 a=v*(v+0.0245786)-0.000090537;vec3 b=v*(0.983729*v+0.4329510)+0.238081;return a/b;}\nvec3 ACESFitted(vec3 color)\n{color=ACESInputMat*color;color=RRTAndODTFit(color);color=ACESOutputMat*color;color=saturate(color);return color;}\n#endif\n#define CUSTOM_IMAGEPROCESSINGFUNCTIONS_DEFINITIONS\nvec4 applyImageProcessing(vec4 result) {\n#define CUSTOM_IMAGEPROCESSINGFUNCTIONS_UPDATERESULT_ATSTART\n#ifdef EXPOSURE\nresult.rgb*=exposureLinear;\n#endif\n#ifdef VIGNETTE\nvec2 viewportXY=gl_FragCoord.xy*vInverseScreenSize;viewportXY=viewportXY*2.0-1.0;vec3 vignetteXY1=vec3(viewportXY*vignetteSettings1.xy+vignetteSettings1.zw,1.0);float vignetteTerm=dot(vignetteXY1,vignetteXY1);float vignette=pow(vignetteTerm,vignetteSettings2.w);vec3 vignetteColor=vignetteSettings2.rgb;\n#ifdef VIGNETTEBLENDMODEMULTIPLY\nvec3 vignetteColorMultiplier=mix(vignetteColor,vec3(1,1,1),vignette);result.rgb*=vignetteColorMultiplier;\n#endif\n#ifdef VIGNETTEBLENDMODEOPAQUE\nresult.rgb=mix(vignetteColor,result.rgb,vignette);\n#endif\n#endif\n#if TONEMAPPING==3\nresult.rgb=PBRNeutralToneMapping(result.rgb);\n#elif TONEMAPPING==2\nresult.rgb=ACESFitted(result.rgb);\n#elif TONEMAPPING==1\nconst float tonemappingCalibration=1.590579;result.rgb=1.0-exp2(-tonemappingCalibration*result.rgb);\n#endif\nresult.rgb=toGammaSpace(result.rgb);result.rgb=saturate(result.rgb);\n#ifdef CONTRAST\nvec3 resultHighContrast=result.rgb*result.rgb*(3.0-2.0*result.rgb);if (contrast<1.0) {result.rgb=mix(vec3(0.5,0.5,0.5),result.rgb,contrast);} else {result.rgb=mix(result.rgb,resultHighContrast,contrast-1.0);}\n#endif\n#ifdef COLORGRADING\nvec3 colorTransformInput=result.rgb*colorTransformSettings.xxx+colorTransformSettings.yyy;\n#ifdef COLORGRADING3D\nvec3 colorTransformOutput=texture(txColorTransform,colorTransformInput).rgb;\n#else\nvec3 colorTransformOutput=sampleTexture3D(txColorTransform,colorTransformInput,colorTransformSettings.yz).rgb;\n#endif\nresult.rgb=mix(result.rgb,colorTransformOutput,colorTransformSettings.www);\n#endif\n#ifdef COLORCURVES\nfloat luma=getLuminance(result.rgb);vec2 curveMix=clamp(vec2(luma*3.0-1.5,luma*-3.0+1.5),vec2(0.0),vec2(1.0));vec4 colorCurve=vCameraColorCurveNeutral+curveMix.x*vCameraColorCurvePositive-curveMix.y*vCameraColorCurveNegative;result.rgb*=colorCurve.rgb;result.rgb=mix(vec3(luma),result.rgb,colorCurve.a);\n#endif\n#ifdef DITHER\nfloat rand=getRand(gl_FragCoord.xy*vInverseScreenSize);float dither=mix(-ditherIntensity,ditherIntensity,rand);result.rgb=saturate(result.rgb+vec3(dither));\n#endif\n#define CUSTOM_IMAGEPROCESSINGFUNCTIONS_UPDATERESULT_ATEND\nreturn result;}";n(1642).v.IncludesShadersStore[i]=t},2227:(e,o,n)=>{const i="lightFragment",t="#ifdef LIGHT{X}\n#if defined(SHADOWONLY) || defined(LIGHTMAP) && defined(LIGHTMAPEXCLUDED{X}) && defined(LIGHTMAPNOSPECULAR{X})\n#else\nvec4 diffuse{X}=light{X}.vLightDiffuse;\n#define CUSTOM_LIGHT{X}_COLOR \n#ifdef PBR\n#ifdef SPOTLIGHT{X}\npreInfo=computePointAndSpotPreLightingInfo(light{X}.vLightData,viewDirectionW,normalW,vPositionW);\n#elif defined(POINTLIGHT{X})\npreInfo=computePointAndSpotPreLightingInfo(light{X}.vLightData,viewDirectionW,normalW,vPositionW);\n#elif defined(HEMILIGHT{X})\npreInfo=computeHemisphericPreLightingInfo(light{X}.vLightData,viewDirectionW,normalW);\n#elif defined(DIRLIGHT{X})\npreInfo=computeDirectionalPreLightingInfo(light{X}.vLightData,viewDirectionW,normalW);\n#endif\npreInfo.NdotV=NdotV;\n#ifdef SPOTLIGHT{X}\n#ifdef LIGHT_FALLOFF_GLTF{X}\npreInfo.attenuation=computeDistanceLightFalloff_GLTF(preInfo.lightDistanceSquared,light{X}.vLightFalloff.y);preInfo.attenuation*=computeDirectionalLightFalloff_GLTF(light{X}.vLightDirection.xyz,preInfo.L,light{X}.vLightFalloff.z,light{X}.vLightFalloff.w);\n#elif defined(LIGHT_FALLOFF_PHYSICAL{X})\npreInfo.attenuation=computeDistanceLightFalloff_Physical(preInfo.lightDistanceSquared);preInfo.attenuation*=computeDirectionalLightFalloff_Physical(light{X}.vLightDirection.xyz,preInfo.L,light{X}.vLightDirection.w);\n#elif defined(LIGHT_FALLOFF_STANDARD{X})\npreInfo.attenuation=computeDistanceLightFalloff_Standard(preInfo.lightOffset,light{X}.vLightFalloff.x);preInfo.attenuation*=computeDirectionalLightFalloff_Standard(light{X}.vLightDirection.xyz,preInfo.L,light{X}.vLightDirection.w,light{X}.vLightData.w);\n#else\npreInfo.attenuation=computeDistanceLightFalloff(preInfo.lightOffset,preInfo.lightDistanceSquared,light{X}.vLightFalloff.x,light{X}.vLightFalloff.y);preInfo.attenuation*=computeDirectionalLightFalloff(light{X}.vLightDirection.xyz,preInfo.L,light{X}.vLightDirection.w,light{X}.vLightData.w,light{X}.vLightFalloff.z,light{X}.vLightFalloff.w);\n#endif\n#elif defined(POINTLIGHT{X})\n#ifdef LIGHT_FALLOFF_GLTF{X}\npreInfo.attenuation=computeDistanceLightFalloff_GLTF(preInfo.lightDistanceSquared,light{X}.vLightFalloff.y);\n#elif defined(LIGHT_FALLOFF_PHYSICAL{X})\npreInfo.attenuation=computeDistanceLightFalloff_Physical(preInfo.lightDistanceSquared);\n#elif defined(LIGHT_FALLOFF_STANDARD{X})\npreInfo.attenuation=computeDistanceLightFalloff_Standard(preInfo.lightOffset,light{X}.vLightFalloff.x);\n#else\npreInfo.attenuation=computeDistanceLightFalloff(preInfo.lightOffset,preInfo.lightDistanceSquared,light{X}.vLightFalloff.x,light{X}.vLightFalloff.y);\n#endif\n#else\npreInfo.attenuation=1.0;\n#endif\n#ifdef HEMILIGHT{X}\npreInfo.roughness=roughness;\n#else\npreInfo.roughness=adjustRoughnessFromLightProperties(roughness,light{X}.vLightSpecular.a,preInfo.lightDistance);\n#endif\n#ifdef IRIDESCENCE\npreInfo.iridescenceIntensity=iridescenceIntensity;\n#endif\n#ifdef HEMILIGHT{X}\ninfo.diffuse=computeHemisphericDiffuseLighting(preInfo,diffuse{X}.rgb,light{X}.vLightGround);\n#elif defined(SS_TRANSLUCENCY)\ninfo.diffuse=computeDiffuseAndTransmittedLighting(preInfo,diffuse{X}.rgb,subSurfaceOut.transmittance);\n#else\ninfo.diffuse=computeDiffuseLighting(preInfo,diffuse{X}.rgb);\n#endif\n#ifdef SPECULARTERM\n#ifdef ANISOTROPIC\ninfo.specular=computeAnisotropicSpecularLighting(preInfo,viewDirectionW,normalW,anisotropicOut.anisotropicTangent,anisotropicOut.anisotropicBitangent,anisotropicOut.anisotropy,clearcoatOut.specularEnvironmentR0,specularEnvironmentR90,AARoughnessFactors.x,diffuse{X}.rgb);\n#else\ninfo.specular=computeSpecularLighting(preInfo,normalW,clearcoatOut.specularEnvironmentR0,specularEnvironmentR90,AARoughnessFactors.x,diffuse{X}.rgb);\n#endif\n#endif\n#ifdef SHEEN\n#ifdef SHEEN_LINKWITHALBEDO\npreInfo.roughness=sheenOut.sheenIntensity;\n#else\n#ifdef HEMILIGHT{X}\npreInfo.roughness=sheenOut.sheenRoughness;\n#else\npreInfo.roughness=adjustRoughnessFromLightProperties(sheenOut.sheenRoughness,light{X}.vLightSpecular.a,preInfo.lightDistance);\n#endif\n#endif\ninfo.sheen=computeSheenLighting(preInfo,normalW,sheenOut.sheenColor,specularEnvironmentR90,AARoughnessFactors.x,diffuse{X}.rgb);\n#endif\n#ifdef CLEARCOAT\n#ifdef HEMILIGHT{X}\npreInfo.roughness=clearcoatOut.clearCoatRoughness;\n#else\npreInfo.roughness=adjustRoughnessFromLightProperties(clearcoatOut.clearCoatRoughness,light{X}.vLightSpecular.a,preInfo.lightDistance);\n#endif\ninfo.clearCoat=computeClearCoatLighting(preInfo,clearcoatOut.clearCoatNormalW,clearcoatOut.clearCoatAARoughnessFactors.x,clearcoatOut.clearCoatIntensity,diffuse{X}.rgb);\n#ifdef CLEARCOAT_TINT\nabsorption=computeClearCoatLightingAbsorption(clearcoatOut.clearCoatNdotVRefract,preInfo.L,clearcoatOut.clearCoatNormalW,clearcoatOut.clearCoatColor,clearcoatOut.clearCoatThickness,clearcoatOut.clearCoatIntensity);info.diffuse*=absorption;\n#ifdef SPECULARTERM\ninfo.specular*=absorption;\n#endif\n#endif\ninfo.diffuse*=info.clearCoat.w;\n#ifdef SPECULARTERM\ninfo.specular*=info.clearCoat.w;\n#endif\n#ifdef SHEEN\ninfo.sheen*=info.clearCoat.w;\n#endif\n#endif\n#else\n#ifdef SPOTLIGHT{X}\ninfo=computeSpotLighting(viewDirectionW,normalW,light{X}.vLightData,light{X}.vLightDirection,diffuse{X}.rgb,light{X}.vLightSpecular.rgb,diffuse{X}.a,glossiness);\n#elif defined(HEMILIGHT{X})\ninfo=computeHemisphericLighting(viewDirectionW,normalW,light{X}.vLightData,diffuse{X}.rgb,light{X}.vLightSpecular.rgb,light{X}.vLightGround,glossiness);\n#elif defined(POINTLIGHT{X}) || defined(DIRLIGHT{X})\ninfo=computeLighting(viewDirectionW,normalW,light{X}.vLightData,diffuse{X}.rgb,light{X}.vLightSpecular.rgb,diffuse{X}.a,glossiness);\n#endif\n#endif\n#ifdef PROJECTEDLIGHTTEXTURE{X}\ninfo.diffuse*=computeProjectionTextureDiffuseLighting(projectionLightTexture{X},textureProjectionMatrix{X},vPositionW);\n#endif\n#endif\n#ifdef SHADOW{X}\n#ifdef SHADOWCSM{X}\nfor (int i=0; i<SHADOWCSMNUM_CASCADES{X}; i++) \n{\n#ifdef SHADOWCSM_RIGHTHANDED{X}\ndiff{X}=viewFrustumZ{X}[i]+vPositionFromCamera{X}.z;\n#else\ndiff{X}=viewFrustumZ{X}[i]-vPositionFromCamera{X}.z;\n#endif\nif (diff{X}>=0.) {index{X}=i;break;}}\n#ifdef SHADOWCSMUSESHADOWMAXZ{X}\nif (index{X}>=0)\n#endif\n{\n#if defined(SHADOWPCF{X})\n#if defined(SHADOWLOWQUALITY{X})\nshadow=computeShadowWithCSMPCF1(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],shadowTexture{X},light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);\n#elif defined(SHADOWMEDIUMQUALITY{X})\nshadow=computeShadowWithCSMPCF3(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],shadowTexture{X},light{X}.shadowsInfo.yz,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);\n#else\nshadow=computeShadowWithCSMPCF5(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],shadowTexture{X},light{X}.shadowsInfo.yz,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);\n#endif\n#elif defined(SHADOWPCSS{X})\n#if defined(SHADOWLOWQUALITY{X})\nshadow=computeShadowWithCSMPCSS16(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],depthTexture{X},shadowTexture{X},light{X}.shadowsInfo.y,light{X}.shadowsInfo.z,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w,lightSizeUVCorrection{X}[index{X}],depthCorrection{X}[index{X}],penumbraDarkness{X});\n#elif defined(SHADOWMEDIUMQUALITY{X})\nshadow=computeShadowWithCSMPCSS32(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],depthTexture{X},shadowTexture{X},light{X}.shadowsInfo.y,light{X}.shadowsInfo.z,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w,lightSizeUVCorrection{X}[index{X}],depthCorrection{X}[index{X}],penumbraDarkness{X});\n#else\nshadow=computeShadowWithCSMPCSS64(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],depthTexture{X},shadowTexture{X},light{X}.shadowsInfo.y,light{X}.shadowsInfo.z,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w,lightSizeUVCorrection{X}[index{X}],depthCorrection{X}[index{X}],penumbraDarkness{X});\n#endif\n#else\nshadow=computeShadowCSM(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],shadowTexture{X},light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);\n#endif\n#ifdef SHADOWCSMDEBUG{X}\nshadowDebug{X}=vec3(shadow)*vCascadeColorsMultiplier{X}[index{X}];\n#endif\n#ifndef SHADOWCSMNOBLEND{X}\nfloat frustumLength=frustumLengths{X}[index{X}];float diffRatio=clamp(diff{X}/frustumLength,0.,1.)*cascadeBlendFactor{X};if (index{X}<(SHADOWCSMNUM_CASCADES{X}-1) && diffRatio<1.)\n{index{X}+=1;float nextShadow=0.;\n#if defined(SHADOWPCF{X})\n#if defined(SHADOWLOWQUALITY{X})\nnextShadow=computeShadowWithCSMPCF1(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],shadowTexture{X},light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);\n#elif defined(SHADOWMEDIUMQUALITY{X})\nnextShadow=computeShadowWithCSMPCF3(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],shadowTexture{X},light{X}.shadowsInfo.yz,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);\n#else\nnextShadow=computeShadowWithCSMPCF5(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],shadowTexture{X},light{X}.shadowsInfo.yz,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);\n#endif\n#elif defined(SHADOWPCSS{X})\n#if defined(SHADOWLOWQUALITY{X})\nnextShadow=computeShadowWithCSMPCSS16(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],depthTexture{X},shadowTexture{X},light{X}.shadowsInfo.y,light{X}.shadowsInfo.z,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w,lightSizeUVCorrection{X}[index{X}],depthCorrection{X}[index{X}],penumbraDarkness{X});\n#elif defined(SHADOWMEDIUMQUALITY{X})\nnextShadow=computeShadowWithCSMPCSS32(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],depthTexture{X},shadowTexture{X},light{X}.shadowsInfo.y,light{X}.shadowsInfo.z,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w,lightSizeUVCorrection{X}[index{X}],depthCorrection{X}[index{X}],penumbraDarkness{X});\n#else\nnextShadow=computeShadowWithCSMPCSS64(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],depthTexture{X},shadowTexture{X},light{X}.shadowsInfo.y,light{X}.shadowsInfo.z,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w,lightSizeUVCorrection{X}[index{X}],depthCorrection{X}[index{X}],penumbraDarkness{X});\n#endif\n#else\nnextShadow=computeShadowCSM(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],shadowTexture{X},light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);\n#endif\nshadow=mix(nextShadow,shadow,diffRatio);\n#ifdef SHADOWCSMDEBUG{X}\nshadowDebug{X}=mix(vec3(nextShadow)*vCascadeColorsMultiplier{X}[index{X}],shadowDebug{X},diffRatio);\n#endif\n}\n#endif\n}\n#elif defined(SHADOWCLOSEESM{X})\n#if defined(SHADOWCUBE{X})\nshadow=computeShadowWithCloseESMCube(vPositionW,light{X}.vLightData.xyz,shadowTexture{X},light{X}.shadowsInfo.x,light{X}.shadowsInfo.z,light{X}.depthValues);\n#else\nshadow=computeShadowWithCloseESM(vPositionFromLight{X},vDepthMetric{X},shadowTexture{X},light{X}.shadowsInfo.x,light{X}.shadowsInfo.z,light{X}.shadowsInfo.w);\n#endif\n#elif defined(SHADOWESM{X})\n#if defined(SHADOWCUBE{X})\nshadow=computeShadowWithESMCube(vPositionW,light{X}.vLightData.xyz,shadowTexture{X},light{X}.shadowsInfo.x,light{X}.shadowsInfo.z,light{X}.depthValues);\n#else\nshadow=computeShadowWithESM(vPositionFromLight{X},vDepthMetric{X},shadowTexture{X},light{X}.shadowsInfo.x,light{X}.shadowsInfo.z,light{X}.shadowsInfo.w);\n#endif\n#elif defined(SHADOWPOISSON{X})\n#if defined(SHADOWCUBE{X})\nshadow=computeShadowWithPoissonSamplingCube(vPositionW,light{X}.vLightData.xyz,shadowTexture{X},light{X}.shadowsInfo.y,light{X}.shadowsInfo.x,light{X}.depthValues);\n#else\nshadow=computeShadowWithPoissonSampling(vPositionFromLight{X},vDepthMetric{X},shadowTexture{X},light{X}.shadowsInfo.y,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);\n#endif\n#elif defined(SHADOWPCF{X})\n#if defined(SHADOWLOWQUALITY{X})\nshadow=computeShadowWithPCF1(vPositionFromLight{X},vDepthMetric{X},shadowTexture{X},light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);\n#elif defined(SHADOWMEDIUMQUALITY{X})\nshadow=computeShadowWithPCF3(vPositionFromLight{X},vDepthMetric{X},shadowTexture{X},light{X}.shadowsInfo.yz,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);\n#else\nshadow=computeShadowWithPCF5(vPositionFromLight{X},vDepthMetric{X},shadowTexture{X},light{X}.shadowsInfo.yz,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);\n#endif\n#elif defined(SHADOWPCSS{X})\n#if defined(SHADOWLOWQUALITY{X})\nshadow=computeShadowWithPCSS16(vPositionFromLight{X},vDepthMetric{X},depthTexture{X},shadowTexture{X},light{X}.shadowsInfo.y,light{X}.shadowsInfo.z,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);\n#elif defined(SHADOWMEDIUMQUALITY{X})\nshadow=computeShadowWithPCSS32(vPositionFromLight{X},vDepthMetric{X},depthTexture{X},shadowTexture{X},light{X}.shadowsInfo.y,light{X}.shadowsInfo.z,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);\n#else\nshadow=computeShadowWithPCSS64(vPositionFromLight{X},vDepthMetric{X},depthTexture{X},shadowTexture{X},light{X}.shadowsInfo.y,light{X}.shadowsInfo.z,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);\n#endif\n#else\n#if defined(SHADOWCUBE{X})\nshadow=computeShadowCube(vPositionW,light{X}.vLightData.xyz,shadowTexture{X},light{X}.shadowsInfo.x,light{X}.depthValues);\n#else\nshadow=computeShadow(vPositionFromLight{X},vDepthMetric{X},shadowTexture{X},light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);\n#endif\n#endif\n#ifdef SHADOWONLY\n#ifndef SHADOWINUSE\n#define SHADOWINUSE\n#endif\nglobalShadow+=shadow;shadowLightCount+=1.0;\n#endif\n#else\nshadow=1.;\n#endif\naggShadow+=shadow;numLights+=1.0;\n#ifndef SHADOWONLY\n#ifdef CUSTOMUSERLIGHTING\ndiffuseBase+=computeCustomDiffuseLighting(info,diffuseBase,shadow);\n#ifdef SPECULARTERM\nspecularBase+=computeCustomSpecularLighting(info,specularBase,shadow);\n#endif\n#elif defined(LIGHTMAP) && defined(LIGHTMAPEXCLUDED{X})\ndiffuseBase+=lightmapColor.rgb*shadow;\n#ifdef SPECULARTERM\n#ifndef LIGHTMAPNOSPECULAR{X}\nspecularBase+=info.specular*shadow*lightmapColor.rgb;\n#endif\n#endif\n#ifdef CLEARCOAT\n#ifndef LIGHTMAPNOSPECULAR{X}\nclearCoatBase+=info.clearCoat.rgb*shadow*lightmapColor.rgb;\n#endif\n#endif\n#ifdef SHEEN\n#ifndef LIGHTMAPNOSPECULAR{X}\nsheenBase+=info.sheen.rgb*shadow;\n#endif\n#endif\n#else\n#ifdef SHADOWCSMDEBUG{X}\ndiffuseBase+=info.diffuse*shadowDebug{X};\n#else \ndiffuseBase+=info.diffuse*shadow;\n#endif\n#ifdef SPECULARTERM\nspecularBase+=info.specular*shadow;\n#endif\n#ifdef CLEARCOAT\nclearCoatBase+=info.clearCoat.rgb*shadow;\n#endif\n#ifdef SHEEN\nsheenBase+=info.sheen.rgb*shadow;\n#endif\n#endif\n#endif\n#endif\n";n(1642).v.IncludesShadersStore[i]=t},555:(e,o,n)=>{const i="lightFragmentDeclaration",t="#ifdef LIGHT{X}\nuniform vec4 vLightData{X};uniform vec4 vLightDiffuse{X};\n#ifdef SPECULARTERM\nuniform vec4 vLightSpecular{X};\n#else\nvec4 vLightSpecular{X}=vec4(0.);\n#endif\n#ifdef SHADOW{X}\n#ifdef SHADOWCSM{X}\nuniform mat4 lightMatrix{X}[SHADOWCSMNUM_CASCADES{X}];uniform float viewFrustumZ{X}[SHADOWCSMNUM_CASCADES{X}];uniform float frustumLengths{X}[SHADOWCSMNUM_CASCADES{X}];uniform float cascadeBlendFactor{X};varying vec4 vPositionFromLight{X}[SHADOWCSMNUM_CASCADES{X}];varying float vDepthMetric{X}[SHADOWCSMNUM_CASCADES{X}];varying vec4 vPositionFromCamera{X};\n#if defined(SHADOWPCSS{X})\nuniform highp sampler2DArrayShadow shadowTexture{X};uniform highp sampler2DArray depthTexture{X};uniform vec2 lightSizeUVCorrection{X}[SHADOWCSMNUM_CASCADES{X}];uniform float depthCorrection{X}[SHADOWCSMNUM_CASCADES{X}];uniform float penumbraDarkness{X};\n#elif defined(SHADOWPCF{X})\nuniform highp sampler2DArrayShadow shadowTexture{X};\n#else\nuniform highp sampler2DArray shadowTexture{X};\n#endif\n#ifdef SHADOWCSMDEBUG{X}\nconst vec3 vCascadeColorsMultiplier{X}[8]=vec3[8]\n(\nvec3 ( 1.5,0.0,0.0 ),\nvec3 ( 0.0,1.5,0.0 ),\nvec3 ( 0.0,0.0,5.5 ),\nvec3 ( 1.5,0.0,5.5 ),\nvec3 ( 1.5,1.5,0.0 ),\nvec3 ( 1.0,1.0,1.0 ),\nvec3 ( 0.0,1.0,5.5 ),\nvec3 ( 0.5,3.5,0.75 )\n);vec3 shadowDebug{X};\n#endif\n#ifdef SHADOWCSMUSESHADOWMAXZ{X}\nint index{X}=-1;\n#else\nint index{X}=SHADOWCSMNUM_CASCADES{X}-1;\n#endif\nfloat diff{X}=0.;\n#elif defined(SHADOWCUBE{X})\nuniform samplerCube shadowTexture{X};\n#else\nvarying vec4 vPositionFromLight{X};varying float vDepthMetric{X};\n#if defined(SHADOWPCSS{X})\nuniform highp sampler2DShadow shadowTexture{X};uniform highp sampler2D depthTexture{X};\n#elif defined(SHADOWPCF{X})\nuniform highp sampler2DShadow shadowTexture{X};\n#else\nuniform sampler2D shadowTexture{X};\n#endif\nuniform mat4 lightMatrix{X};\n#endif\nuniform vec4 shadowsInfo{X};uniform vec2 depthValues{X};\n#endif\n#ifdef SPOTLIGHT{X}\nuniform vec4 vLightDirection{X};uniform vec4 vLightFalloff{X};\n#elif defined(POINTLIGHT{X})\nuniform vec4 vLightFalloff{X};\n#elif defined(HEMILIGHT{X})\nuniform vec3 vLightGround{X};\n#endif\n#ifdef PROJECTEDLIGHTTEXTURE{X}\nuniform mat4 textureProjectionMatrix{X};uniform sampler2D projectionLightTexture{X};\n#endif\n#endif\n";n(1642).v.IncludesShadersStore[i]=t},2993:(e,o,n)=>{const i="lightUboDeclaration",t="#ifdef LIGHT{X}\nuniform Light{X}\n{vec4 vLightData;vec4 vLightDiffuse;vec4 vLightSpecular;\n#ifdef SPOTLIGHT{X}\nvec4 vLightDirection;vec4 vLightFalloff;\n#elif defined(POINTLIGHT{X})\nvec4 vLightFalloff;\n#elif defined(HEMILIGHT{X})\nvec3 vLightGround;\n#endif\nvec4 shadowsInfo;vec2 depthValues;} light{X};\n#ifdef PROJECTEDLIGHTTEXTURE{X}\nuniform mat4 textureProjectionMatrix{X};uniform sampler2D projectionLightTexture{X};\n#endif\n#ifdef SHADOW{X}\n#ifdef SHADOWCSM{X}\nuniform mat4 lightMatrix{X}[SHADOWCSMNUM_CASCADES{X}];uniform float viewFrustumZ{X}[SHADOWCSMNUM_CASCADES{X}];uniform float frustumLengths{X}[SHADOWCSMNUM_CASCADES{X}];uniform float cascadeBlendFactor{X};varying vec4 vPositionFromLight{X}[SHADOWCSMNUM_CASCADES{X}];varying float vDepthMetric{X}[SHADOWCSMNUM_CASCADES{X}];varying vec4 vPositionFromCamera{X};\n#if defined(SHADOWPCSS{X})\nuniform highp sampler2DArrayShadow shadowTexture{X};uniform highp sampler2DArray depthTexture{X};uniform vec2 lightSizeUVCorrection{X}[SHADOWCSMNUM_CASCADES{X}];uniform float depthCorrection{X}[SHADOWCSMNUM_CASCADES{X}];uniform float penumbraDarkness{X};\n#elif defined(SHADOWPCF{X})\nuniform highp sampler2DArrayShadow shadowTexture{X};\n#else\nuniform highp sampler2DArray shadowTexture{X};\n#endif\n#ifdef SHADOWCSMDEBUG{X}\nconst vec3 vCascadeColorsMultiplier{X}[8]=vec3[8]\n(\nvec3 ( 1.5,0.0,0.0 ),\nvec3 ( 0.0,1.5,0.0 ),\nvec3 ( 0.0,0.0,5.5 ),\nvec3 ( 1.5,0.0,5.5 ),\nvec3 ( 1.5,1.5,0.0 ),\nvec3 ( 1.0,1.0,1.0 ),\nvec3 ( 0.0,1.0,5.5 ),\nvec3 ( 0.5,3.5,0.75 )\n);vec3 shadowDebug{X};\n#endif\n#ifdef SHADOWCSMUSESHADOWMAXZ{X}\nint index{X}=-1;\n#else\nint index{X}=SHADOWCSMNUM_CASCADES{X}-1;\n#endif\nfloat diff{X}=0.;\n#elif defined(SHADOWCUBE{X})\nuniform samplerCube shadowTexture{X}; \n#else\nvarying vec4 vPositionFromLight{X};varying float vDepthMetric{X};\n#if defined(SHADOWPCSS{X})\nuniform highp sampler2DShadow shadowTexture{X};uniform highp sampler2D depthTexture{X};\n#elif defined(SHADOWPCF{X})\nuniform highp sampler2DShadow shadowTexture{X};\n#else\nuniform sampler2D shadowTexture{X};\n#endif\nuniform mat4 lightMatrix{X};\n#endif\n#endif\n#endif\n";n(1642).v.IncludesShadersStore[i]=t},8198:(e,o,n)=>{const i="logDepthDeclaration",t="#ifdef LOGARITHMICDEPTH\nuniform float logarithmicDepthConstant;varying float vFragmentDepth;\n#endif\n";n(1642).v.IncludesShadersStore[i]=t},64:(e,o,n)=>{const i="logDepthFragment",t="#ifdef LOGARITHMICDEPTH\ngl_FragDepthEXT=log2(vFragmentDepth)*logarithmicDepthConstant*0.5;\n#endif\n";n(1642).v.IncludesShadersStore[i]=t},4664:(e,o,n)=>{const i="reflectionFunction",t="vec3 computeFixedEquirectangularCoords(vec4 worldPos,vec3 worldNormal,vec3 direction)\n{float lon=atan(direction.z,direction.x);float lat=acos(direction.y);vec2 sphereCoords=vec2(lon,lat)*RECIPROCAL_PI2*2.0;float s=sphereCoords.x*0.5+0.5;float t=sphereCoords.y;return vec3(s,t,0); }\nvec3 computeMirroredFixedEquirectangularCoords(vec4 worldPos,vec3 worldNormal,vec3 direction)\n{float lon=atan(direction.z,direction.x);float lat=acos(direction.y);vec2 sphereCoords=vec2(lon,lat)*RECIPROCAL_PI2*2.0;float s=sphereCoords.x*0.5+0.5;float t=sphereCoords.y;return vec3(1.0-s,t,0); }\nvec3 computeEquirectangularCoords(vec4 worldPos,vec3 worldNormal,vec3 eyePosition,mat4 reflectionMatrix)\n{vec3 cameraToVertex=normalize(worldPos.xyz-eyePosition);vec3 r=normalize(reflect(cameraToVertex,worldNormal));r=vec3(reflectionMatrix*vec4(r,0));float lon=atan(r.z,r.x);float lat=acos(r.y);vec2 sphereCoords=vec2(lon,lat)*RECIPROCAL_PI2*2.0;float s=sphereCoords.x*0.5+0.5;float t=sphereCoords.y;return vec3(s,t,0);}\nvec3 computeSphericalCoords(vec4 worldPos,vec3 worldNormal,mat4 view,mat4 reflectionMatrix)\n{vec3 viewDir=normalize(vec3(view*worldPos));vec3 viewNormal=normalize(vec3(view*vec4(worldNormal,0.0)));vec3 r=reflect(viewDir,viewNormal);r=vec3(reflectionMatrix*vec4(r,0));r.z=r.z-1.0;float m=2.0*length(r);return vec3(r.x/m+0.5,1.0-r.y/m-0.5,0);}\nvec3 computePlanarCoords(vec4 worldPos,vec3 worldNormal,vec3 eyePosition,mat4 reflectionMatrix)\n{vec3 viewDir=worldPos.xyz-eyePosition;vec3 coords=normalize(reflect(viewDir,worldNormal));return vec3(reflectionMatrix*vec4(coords,1));}\nvec3 computeCubicCoords(vec4 worldPos,vec3 worldNormal,vec3 eyePosition,mat4 reflectionMatrix)\n{vec3 viewDir=normalize(worldPos.xyz-eyePosition);vec3 coords=reflect(viewDir,worldNormal);coords=vec3(reflectionMatrix*vec4(coords,0));\n#ifdef INVERTCUBICMAP\ncoords.y*=-1.0;\n#endif\nreturn coords;}\nvec3 computeCubicLocalCoords(vec4 worldPos,vec3 worldNormal,vec3 eyePosition,mat4 reflectionMatrix,vec3 reflectionSize,vec3 reflectionPosition)\n{vec3 viewDir=normalize(worldPos.xyz-eyePosition);vec3 coords=reflect(viewDir,worldNormal);coords=parallaxCorrectNormal(worldPos.xyz,coords,reflectionSize,reflectionPosition);coords=vec3(reflectionMatrix*vec4(coords,0));\n#ifdef INVERTCUBICMAP\ncoords.y*=-1.0;\n#endif\nreturn coords;}\nvec3 computeProjectionCoords(vec4 worldPos,mat4 view,mat4 reflectionMatrix)\n{return vec3(reflectionMatrix*(view*worldPos));}\nvec3 computeSkyBoxCoords(vec3 positionW,mat4 reflectionMatrix)\n{return vec3(reflectionMatrix*vec4(positionW,1.));}\n#ifdef REFLECTION\nvec3 computeReflectionCoords(vec4 worldPos,vec3 worldNormal)\n{\n#ifdef REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED\nvec3 direction=normalize(vDirectionW);return computeMirroredFixedEquirectangularCoords(worldPos,worldNormal,direction);\n#endif\n#ifdef REFLECTIONMAP_EQUIRECTANGULAR_FIXED\nvec3 direction=normalize(vDirectionW);return computeFixedEquirectangularCoords(worldPos,worldNormal,direction);\n#endif\n#ifdef REFLECTIONMAP_EQUIRECTANGULAR\nreturn computeEquirectangularCoords(worldPos,worldNormal,vEyePosition.xyz,reflectionMatrix);\n#endif\n#ifdef REFLECTIONMAP_SPHERICAL\nreturn computeSphericalCoords(worldPos,worldNormal,view,reflectionMatrix);\n#endif\n#ifdef REFLECTIONMAP_PLANAR\nreturn computePlanarCoords(worldPos,worldNormal,vEyePosition.xyz,reflectionMatrix);\n#endif\n#ifdef REFLECTIONMAP_CUBIC\n#ifdef USE_LOCAL_REFLECTIONMAP_CUBIC\nreturn computeCubicLocalCoords(worldPos,worldNormal,vEyePosition.xyz,reflectionMatrix,vReflectionSize,vReflectionPosition);\n#else\nreturn computeCubicCoords(worldPos,worldNormal,vEyePosition.xyz,reflectionMatrix);\n#endif\n#endif\n#ifdef REFLECTIONMAP_PROJECTION\nreturn computeProjectionCoords(worldPos,view,reflectionMatrix);\n#endif\n#ifdef REFLECTIONMAP_SKYBOX\nreturn computeSkyBoxCoords(vPositionUVW,reflectionMatrix);\n#endif\n#ifdef REFLECTIONMAP_EXPLICIT\nreturn vec3(0,0,0);\n#endif\n}\n#endif\n";n(1642).v.IncludesShadersStore[i]=t},7236:(e,o,n)=>{const i="shadowsFragmentFunctions",t="#ifdef SHADOWS\n#if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)\n#define TEXTUREFUNC(s,c,l) texture2DLodEXT(s,c,l)\n#else\n#define TEXTUREFUNC(s,c,b) texture2D(s,c,b)\n#endif\n#ifndef SHADOWFLOAT\nfloat unpack(vec4 color)\n{const vec4 bit_shift=vec4(1.0/(255.0*255.0*255.0),1.0/(255.0*255.0),1.0/255.0,1.0);return dot(color,bit_shift);}\n#endif\nfloat computeFallOff(float value,vec2 clipSpace,float frustumEdgeFalloff)\n{float mask=smoothstep(1.0-frustumEdgeFalloff,1.00000012,clamp(dot(clipSpace,clipSpace),0.,1.));return mix(value,1.0,mask);}\n#define inline\nfloat computeShadowCube(vec3 worldPos,vec3 lightPosition,samplerCube shadowSampler,float darkness,vec2 depthValues)\n{vec3 directionToLight=worldPos-lightPosition;float depth=length(directionToLight);depth=(depth+depthValues.x)/(depthValues.y);depth=clamp(depth,0.,1.0);directionToLight=normalize(directionToLight);directionToLight.y=-directionToLight.y;\n#ifndef SHADOWFLOAT\nfloat shadow=unpack(textureCube(shadowSampler,directionToLight));\n#else\nfloat shadow=textureCube(shadowSampler,directionToLight).x;\n#endif\nreturn depth>shadow ? darkness : 1.0;}\n#define inline\nfloat computeShadowWithPoissonSamplingCube(vec3 worldPos,vec3 lightPosition,samplerCube shadowSampler,float mapSize,float darkness,vec2 depthValues)\n{vec3 directionToLight=worldPos-lightPosition;float depth=length(directionToLight);depth=(depth+depthValues.x)/(depthValues.y);depth=clamp(depth,0.,1.0);directionToLight=normalize(directionToLight);directionToLight.y=-directionToLight.y;float visibility=1.;vec3 poissonDisk[4];poissonDisk[0]=vec3(-1.0,1.0,-1.0);poissonDisk[1]=vec3(1.0,-1.0,-1.0);poissonDisk[2]=vec3(-1.0,-1.0,-1.0);poissonDisk[3]=vec3(1.0,-1.0,1.0);\n#ifndef SHADOWFLOAT\nif (unpack(textureCube(shadowSampler,directionToLight+poissonDisk[0]*mapSize))<depth) visibility-=0.25;if (unpack(textureCube(shadowSampler,directionToLight+poissonDisk[1]*mapSize))<depth) visibility-=0.25;if (unpack(textureCube(shadowSampler,directionToLight+poissonDisk[2]*mapSize))<depth) visibility-=0.25;if (unpack(textureCube(shadowSampler,directionToLight+poissonDisk[3]*mapSize))<depth) visibility-=0.25;\n#else\nif (textureCube(shadowSampler,directionToLight+poissonDisk[0]*mapSize).x<depth) visibility-=0.25;if (textureCube(shadowSampler,directionToLight+poissonDisk[1]*mapSize).x<depth) visibility-=0.25;if (textureCube(shadowSampler,directionToLight+poissonDisk[2]*mapSize).x<depth) visibility-=0.25;if (textureCube(shadowSampler,directionToLight+poissonDisk[3]*mapSize).x<depth) visibility-=0.25;\n#endif\nreturn min(1.0,visibility+darkness);}\n#define inline\nfloat computeShadowWithESMCube(vec3 worldPos,vec3 lightPosition,samplerCube shadowSampler,float darkness,float depthScale,vec2 depthValues)\n{vec3 directionToLight=worldPos-lightPosition;float depth=length(directionToLight);depth=(depth+depthValues.x)/(depthValues.y);float shadowPixelDepth=clamp(depth,0.,1.0);directionToLight=normalize(directionToLight);directionToLight.y=-directionToLight.y;\n#ifndef SHADOWFLOAT\nfloat shadowMapSample=unpack(textureCube(shadowSampler,directionToLight));\n#else\nfloat shadowMapSample=textureCube(shadowSampler,directionToLight).x;\n#endif\nfloat esm=1.0-clamp(exp(min(87.,depthScale*shadowPixelDepth))*shadowMapSample,0.,1.-darkness);return esm;}\n#define inline\nfloat computeShadowWithCloseESMCube(vec3 worldPos,vec3 lightPosition,samplerCube shadowSampler,float darkness,float depthScale,vec2 depthValues)\n{vec3 directionToLight=worldPos-lightPosition;float depth=length(directionToLight);depth=(depth+depthValues.x)/(depthValues.y);float shadowPixelDepth=clamp(depth,0.,1.0);directionToLight=normalize(directionToLight);directionToLight.y=-directionToLight.y;\n#ifndef SHADOWFLOAT\nfloat shadowMapSample=unpack(textureCube(shadowSampler,directionToLight));\n#else\nfloat shadowMapSample=textureCube(shadowSampler,directionToLight).x;\n#endif\nfloat esm=clamp(exp(min(87.,-depthScale*(shadowPixelDepth-shadowMapSample))),darkness,1.);return esm;}\n#if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)\n#define inline\nfloat computeShadowCSM(float layer,vec4 vPositionFromLight,float depthMetric,highp sampler2DArray shadowSampler,float darkness,float frustumEdgeFalloff)\n{vec3 clipSpace=vPositionFromLight.xyz/vPositionFromLight.w;vec2 uv=0.5*clipSpace.xy+vec2(0.5);vec3 uvLayer=vec3(uv.x,uv.y,layer);float shadowPixelDepth=clamp(depthMetric,0.,1.0);\n#ifndef SHADOWFLOAT\nfloat shadow=unpack(texture2D(shadowSampler,uvLayer));\n#else\nfloat shadow=texture2D(shadowSampler,uvLayer).x;\n#endif\nreturn shadowPixelDepth>shadow ? computeFallOff(darkness,clipSpace.xy,frustumEdgeFalloff) : 1.;}\n#endif\n#define inline\nfloat computeShadow(vec4 vPositionFromLight,float depthMetric,sampler2D shadowSampler,float darkness,float frustumEdgeFalloff)\n{vec3 clipSpace=vPositionFromLight.xyz/vPositionFromLight.w;vec2 uv=0.5*clipSpace.xy+vec2(0.5);if (uv.x<0. || uv.x>1.0 || uv.y<0. || uv.y>1.0)\n{return 1.0;}\nelse\n{float shadowPixelDepth=clamp(depthMetric,0.,1.0);\n#ifndef SHADOWFLOAT\nfloat shadow=unpack(TEXTUREFUNC(shadowSampler,uv,0.));\n#else\nfloat shadow=TEXTUREFUNC(shadowSampler,uv,0.).x;\n#endif\nreturn shadowPixelDepth>shadow ? computeFallOff(darkness,clipSpace.xy,frustumEdgeFalloff) : 1.;}}\n#define inline\nfloat computeShadowWithPoissonSampling(vec4 vPositionFromLight,float depthMetric,sampler2D shadowSampler,float mapSize,float darkness,float frustumEdgeFalloff)\n{vec3 clipSpace=vPositionFromLight.xyz/vPositionFromLight.w;vec2 uv=0.5*clipSpace.xy+vec2(0.5);if (uv.x<0. || uv.x>1.0 || uv.y<0. || uv.y>1.0)\n{return 1.0;}\nelse\n{float shadowPixelDepth=clamp(depthMetric,0.,1.0);float visibility=1.;vec2 poissonDisk[4];poissonDisk[0]=vec2(-0.94201624,-0.39906216);poissonDisk[1]=vec2(0.94558609,-0.76890725);poissonDisk[2]=vec2(-0.094184101,-0.92938870);poissonDisk[3]=vec2(0.34495938,0.29387760);\n#ifndef SHADOWFLOAT\nif (unpack(TEXTUREFUNC(shadowSampler,uv+poissonDisk[0]*mapSize,0.))<shadowPixelDepth) visibility-=0.25;if (unpack(TEXTUREFUNC(shadowSampler,uv+poissonDisk[1]*mapSize,0.))<shadowPixelDepth) visibility-=0.25;if (unpack(TEXTUREFUNC(shadowSampler,uv+poissonDisk[2]*mapSize,0.))<shadowPixelDepth) visibility-=0.25;if (unpack(TEXTUREFUNC(shadowSampler,uv+poissonDisk[3]*mapSize,0.))<shadowPixelDepth) visibility-=0.25;\n#else\nif (TEXTUREFUNC(shadowSampler,uv+poissonDisk[0]*mapSize,0.).x<shadowPixelDepth) visibility-=0.25;if (TEXTUREFUNC(shadowSampler,uv+poissonDisk[1]*mapSize,0.).x<shadowPixelDepth) visibility-=0.25;if (TEXTUREFUNC(shadowSampler,uv+poissonDisk[2]*mapSize,0.).x<shadowPixelDepth) visibility-=0.25;if (TEXTUREFUNC(shadowSampler,uv+poissonDisk[3]*mapSize,0.).x<shadowPixelDepth) visibility-=0.25;\n#endif\nreturn computeFallOff(min(1.0,visibility+darkness),clipSpace.xy,frustumEdgeFalloff);}}\n#define inline\nfloat computeShadowWithESM(vec4 vPositionFromLight,float depthMetric,sampler2D shadowSampler,float darkness,float depthScale,float frustumEdgeFalloff)\n{vec3 clipSpace=vPositionFromLight.xyz/vPositionFromLight.w;vec2 uv=0.5*clipSpace.xy+vec2(0.5);if (uv.x<0. || uv.x>1.0 || uv.y<0. || uv.y>1.0)\n{return 1.0;}\nelse\n{float shadowPixelDepth=clamp(depthMetric,0.,1.0);\n#ifndef SHADOWFLOAT\nfloat shadowMapSample=unpack(TEXTUREFUNC(shadowSampler,uv,0.));\n#else\nfloat shadowMapSample=TEXTUREFUNC(shadowSampler,uv,0.).x;\n#endif\nfloat esm=1.0-clamp(exp(min(87.,depthScale*shadowPixelDepth))*shadowMapSample,0.,1.-darkness);return computeFallOff(esm,clipSpace.xy,frustumEdgeFalloff);}}\n#define inline\nfloat computeShadowWithCloseESM(vec4 vPositionFromLight,float depthMetric,sampler2D shadowSampler,float darkness,float depthScale,float frustumEdgeFalloff)\n{vec3 clipSpace=vPositionFromLight.xyz/vPositionFromLight.w;vec2 uv=0.5*clipSpace.xy+vec2(0.5);if (uv.x<0. || uv.x>1.0 || uv.y<0. || uv.y>1.0)\n{return 1.0;}\nelse\n{float shadowPixelDepth=clamp(depthMetric,0.,1.0); \n#ifndef SHADOWFLOAT\nfloat shadowMapSample=unpack(TEXTUREFUNC(shadowSampler,uv,0.));\n#else\nfloat shadowMapSample=TEXTUREFUNC(shadowSampler,uv,0.).x;\n#endif\nfloat esm=clamp(exp(min(87.,-depthScale*(shadowPixelDepth-shadowMapSample))),darkness,1.);return computeFallOff(esm,clipSpace.xy,frustumEdgeFalloff);}}\n#ifdef IS_NDC_HALF_ZRANGE\n#define ZINCLIP clipSpace.z\n#else\n#define ZINCLIP uvDepth.z\n#endif\n#if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)\n#define GREATEST_LESS_THAN_ONE 0.99999994\n#define DISABLE_UNIFORMITY_ANALYSIS\n#define inline\nfloat computeShadowWithCSMPCF1(float layer,vec4 vPositionFromLight,float depthMetric,highp sampler2DArrayShadow shadowSampler,float darkness,float frustumEdgeFalloff)\n{vec3 clipSpace=vPositionFromLight.xyz/vPositionFromLight.w;vec3 uvDepth=vec3(0.5*clipSpace.xyz+vec3(0.5));uvDepth.z=clamp(ZINCLIP,0.,GREATEST_LESS_THAN_ONE);vec4 uvDepthLayer=vec4(uvDepth.x,uvDepth.y,layer,uvDepth.z);float shadow=texture2D(shadowSampler,uvDepthLayer);shadow=mix(darkness,1.,shadow);return computeFallOff(shadow,clipSpace.xy,frustumEdgeFalloff);}\n#define inline\nfloat computeShadowWithCSMPCF3(float layer,vec4 vPositionFromLight,float depthMetric,highp sampler2DArrayShadow shadowSampler,vec2 shadowMapSizeAndInverse,float darkness,float frustumEdgeFalloff)\n{vec3 clipSpace=vPositionFromLight.xyz/vPositionFromLight.w;vec3 uvDepth=vec3(0.5*clipSpace.xyz+vec3(0.5));uvDepth.z=clamp(ZINCLIP,0.,GREATEST_LESS_THAN_ONE);vec2 uv=uvDepth.xy*shadowMapSizeAndInverse.x; \nuv+=0.5; \nvec2 st=fract(uv); \nvec2 base_uv=floor(uv)-0.5; \nbase_uv*=shadowMapSizeAndInverse.y; \nvec2 uvw0=3.-2.*st;vec2 uvw1=1.+2.*st;vec2 u=vec2((2.-st.x)/uvw0.x-1.,st.x/uvw1.x+1.)*shadowMapSizeAndInverse.y;vec2 v=vec2((2.-st.y)/uvw0.y-1.,st.y/uvw1.y+1.)*shadowMapSizeAndInverse.y;float shadow=0.;shadow+=uvw0.x*uvw0.y*texture2D(shadowSampler,vec4(base_uv.xy+vec2(u[0],v[0]),layer,uvDepth.z));shadow+=uvw1.x*uvw0.y*texture2D(shadowSampler,vec4(base_uv.xy+vec2(u[1],v[0]),layer,uvDepth.z));shadow+=uvw0.x*uvw1.y*texture2D(shadowSampler,vec4(base_uv.xy+vec2(u[0],v[1]),layer,uvDepth.z));shadow+=uvw1.x*uvw1.y*texture2D(shadowSampler,vec4(base_uv.xy+vec2(u[1],v[1]),layer,uvDepth.z));shadow=shadow/16.;shadow=mix(darkness,1.,shadow);return computeFallOff(shadow,clipSpace.xy,frustumEdgeFalloff);}\n#define inline\nfloat computeShadowWithCSMPCF5(float layer,vec4 vPositionFromLight,float depthMetric,highp sampler2DArrayShadow shadowSampler,vec2 shadowMapSizeAndInverse,float darkness,float frustumEdgeFalloff)\n{vec3 clipSpace=vPositionFromLight.xyz/vPositionFromLight.w;vec3 uvDepth=vec3(0.5*clipSpace.xyz+vec3(0.5));uvDepth.z=clamp(ZINCLIP,0.,GREATEST_LESS_THAN_ONE);vec2 uv=uvDepth.xy*shadowMapSizeAndInverse.x; \nuv+=0.5; \nvec2 st=fract(uv); \nvec2 base_uv=floor(uv)-0.5; \nbase_uv*=shadowMapSizeAndInverse.y; \nvec2 uvw0=4.-3.*st;vec2 uvw1=vec2(7.);vec2 uvw2=1.+3.*st;vec3 u=vec3((3.-2.*st.x)/uvw0.x-2.,(3.+st.x)/uvw1.x,st.x/uvw2.x+2.)*shadowMapSizeAndInverse.y;vec3 v=vec3((3.-2.*st.y)/uvw0.y-2.,(3.+st.y)/uvw1.y,st.y/uvw2.y+2.)*shadowMapSizeAndInverse.y;float shadow=0.;shadow+=uvw0.x*uvw0.y*texture2D(shadowSampler,vec4(base_uv.xy+vec2(u[0],v[0]),layer,uvDepth.z));shadow+=uvw1.x*uvw0.y*texture2D(shadowSampler,vec4(base_uv.xy+vec2(u[1],v[0]),layer,uvDepth.z));shadow+=uvw2.x*uvw0.y*texture2D(shadowSampler,vec4(base_uv.xy+vec2(u[2],v[0]),layer,uvDepth.z));shadow+=uvw0.x*uvw1.y*texture2D(shadowSampler,vec4(base_uv.xy+vec2(u[0],v[1]),layer,uvDepth.z));shadow+=uvw1.x*uvw1.y*texture2D(shadowSampler,vec4(base_uv.xy+vec2(u[1],v[1]),layer,uvDepth.z));shadow+=uvw2.x*uvw1.y*texture2D(shadowSampler,vec4(base_uv.xy+vec2(u[2],v[1]),layer,uvDepth.z));shadow+=uvw0.x*uvw2.y*texture2D(shadowSampler,vec4(base_uv.xy+vec2(u[0],v[2]),layer,uvDepth.z));shadow+=uvw1.x*uvw2.y*texture2D(shadowSampler,vec4(base_uv.xy+vec2(u[1],v[2]),layer,uvDepth.z));shadow+=uvw2.x*uvw2.y*texture2D(shadowSampler,vec4(base_uv.xy+vec2(u[2],v[2]),layer,uvDepth.z));shadow=shadow/144.;shadow=mix(darkness,1.,shadow);return computeFallOff(shadow,clipSpace.xy,frustumEdgeFalloff);}\n#define inline\nfloat computeShadowWithPCF1(vec4 vPositionFromLight,float depthMetric,highp sampler2DShadow shadowSampler,float darkness,float frustumEdgeFalloff)\n{if (depthMetric>1.0 || depthMetric<0.0) {return 1.0;}\nelse\n{vec3 clipSpace=vPositionFromLight.xyz/vPositionFromLight.w;vec3 uvDepth=vec3(0.5*clipSpace.xyz+vec3(0.5));uvDepth.z=ZINCLIP;float shadow=TEXTUREFUNC(shadowSampler,uvDepth,0.);shadow=mix(darkness,1.,shadow);return computeFallOff(shadow,clipSpace.xy,frustumEdgeFalloff);}}\n#define inline\nfloat computeShadowWithPCF3(vec4 vPositionFromLight,float depthMetric,highp sampler2DShadow shadowSampler,vec2 shadowMapSizeAndInverse,float darkness,float frustumEdgeFalloff)\n{if (depthMetric>1.0 || depthMetric<0.0) {return 1.0;}\nelse\n{vec3 clipSpace=vPositionFromLight.xyz/vPositionFromLight.w;vec3 uvDepth=vec3(0.5*clipSpace.xyz+vec3(0.5));uvDepth.z=ZINCLIP;vec2 uv=uvDepth.xy*shadowMapSizeAndInverse.x; \nuv+=0.5; \nvec2 st=fract(uv); \nvec2 base_uv=floor(uv)-0.5; \nbase_uv*=shadowMapSizeAndInverse.y; \nvec2 uvw0=3.-2.*st;vec2 uvw1=1.+2.*st;vec2 u=vec2((2.-st.x)/uvw0.x-1.,st.x/uvw1.x+1.)*shadowMapSizeAndInverse.y;vec2 v=vec2((2.-st.y)/uvw0.y-1.,st.y/uvw1.y+1.)*shadowMapSizeAndInverse.y;float shadow=0.;shadow+=uvw0.x*uvw0.y*TEXTUREFUNC(shadowSampler,vec3(base_uv.xy+vec2(u[0],v[0]),uvDepth.z),0.);shadow+=uvw1.x*uvw0.y*TEXTUREFUNC(shadowSampler,vec3(base_uv.xy+vec2(u[1],v[0]),uvDepth.z),0.);shadow+=uvw0.x*uvw1.y*TEXTUREFUNC(shadowSampler,vec3(base_uv.xy+vec2(u[0],v[1]),uvDepth.z),0.);shadow+=uvw1.x*uvw1.y*TEXTUREFUNC(shadowSampler,vec3(base_uv.xy+vec2(u[1],v[1]),uvDepth.z),0.);shadow=shadow/16.;shadow=mix(darkness,1.,shadow);return computeFallOff(shadow,clipSpace.xy,frustumEdgeFalloff);}}\n#define inline\nfloat computeShadowWithPCF5(vec4 vPositionFromLight,float depthMetric,highp sampler2DShadow shadowSampler,vec2 shadowMapSizeAndInverse,float darkness,float frustumEdgeFalloff)\n{if (depthMetric>1.0 || depthMetric<0.0) {return 1.0;}\nelse\n{vec3 clipSpace=vPositionFromLight.xyz/vPositionFromLight.w;vec3 uvDepth=vec3(0.5*clipSpace.xyz+vec3(0.5));uvDepth.z=ZINCLIP;vec2 uv=uvDepth.xy*shadowMapSizeAndInverse.x; \nuv+=0.5; \nvec2 st=fract(uv); \nvec2 base_uv=floor(uv)-0.5; \nbase_uv*=shadowMapSizeAndInverse.y; \nvec2 uvw0=4.-3.*st;vec2 uvw1=vec2(7.);vec2 uvw2=1.+3.*st;vec3 u=vec3((3.-2.*st.x)/uvw0.x-2.,(3.+st.x)/uvw1.x,st.x/uvw2.x+2.)*shadowMapSizeAndInverse.y;vec3 v=vec3((3.-2.*st.y)/uvw0.y-2.,(3.+st.y)/uvw1.y,st.y/uvw2.y+2.)*shadowMapSizeAndInverse.y;float shadow=0.;shadow+=uvw0.x*uvw0.y*TEXTUREFUNC(shadowSampler,vec3(base_uv.xy+vec2(u[0],v[0]),uvDepth.z),0.);shadow+=uvw1.x*uvw0.y*TEXTUREFUNC(shadowSampler,vec3(base_uv.xy+vec2(u[1],v[0]),uvDepth.z),0.);shadow+=uvw2.x*uvw0.y*TEXTUREFUNC(shadowSampler,vec3(base_uv.xy+vec2(u[2],v[0]),uvDepth.z),0.);shadow+=uvw0.x*uvw1.y*TEXTUREFUNC(shadowSampler,vec3(base_uv.xy+vec2(u[0],v[1]),uvDepth.z),0.);shadow+=uvw1.x*uvw1.y*TEXTUREFUNC(shadowSampler,vec3(base_uv.xy+vec2(u[1],v[1]),uvDepth.z),0.);shadow+=uvw2.x*uvw1.y*TEXTUREFUNC(shadowSampler,vec3(base_uv.xy+vec2(u[2],v[1]),uvDepth.z),0.);shadow+=uvw0.x*uvw2.y*TEXTUREFUNC(shadowSampler,vec3(base_uv.xy+vec2(u[0],v[2]),uvDepth.z),0.);shadow+=uvw1.x*uvw2.y*TEXTUREFUNC(shadowSampler,vec3(base_uv.xy+vec2(u[1],v[2]),uvDepth.z),0.);shadow+=uvw2.x*uvw2.y*TEXTUREFUNC(shadowSampler,vec3(base_uv.xy+vec2(u[2],v[2]),uvDepth.z),0.);shadow=shadow/144.;shadow=mix(darkness,1.,shadow);return computeFallOff(shadow,clipSpace.xy,frustumEdgeFalloff);}}\nconst vec3 PoissonSamplers32[64]=vec3[64](\nvec3(0.06407013,0.05409927,0.),\nvec3(0.7366577,0.5789394,0.),\nvec3(-0.6270542,-0.5320278,0.),\nvec3(-0.4096107,0.8411095,0.),\nvec3(0.6849564,-0.4990818,0.),\nvec3(-0.874181,-0.04579735,0.),\nvec3(0.9989998,0.0009880066,0.),\nvec3(-0.004920578,-0.9151649,0.),\nvec3(0.1805763,0.9747483,0.),\nvec3(-0.2138451,0.2635818,0.),\nvec3(0.109845,0.3884785,0.),\nvec3(0.06876755,-0.3581074,0.),\nvec3(0.374073,-0.7661266,0.),\nvec3(0.3079132,-0.1216763,0.),\nvec3(-0.3794335,-0.8271583,0.),\nvec3(-0.203878,-0.07715034,0.),\nvec3(0.5912697,0.1469799,0.),\nvec3(-0.88069,0.3031784,0.),\nvec3(0.5040108,0.8283722,0.),\nvec3(-0.5844124,0.5494877,0.),\nvec3(0.6017799,-0.1726654,0.),\nvec3(-0.5554981,0.1559997,0.),\nvec3(-0.3016369,-0.3900928,0.),\nvec3(-0.5550632,-0.1723762,0.),\nvec3(0.925029,0.2995041,0.),\nvec3(-0.2473137,0.5538505,0.),\nvec3(0.9183037,-0.2862392,0.),\nvec3(0.2469421,0.6718712,0.),\nvec3(0.3916397,-0.4328209,0.),\nvec3(-0.03576927,-0.6220032,0.),\nvec3(-0.04661255,0.7995201,0.),\nvec3(0.4402924,0.3640312,0.),\nvec3(0.),\nvec3(0.),\nvec3(0.),\nvec3(0.),\nvec3(0.),\nvec3(0.),\nvec3(0.),\nvec3(0.),\nvec3(0.),\nvec3(0.),\nvec3(0.),\nvec3(0.),\nvec3(0.),\nvec3(0.),\nvec3(0.),\nvec3(0.),\nvec3(0.),\nvec3(0.),\nvec3(0.),\nvec3(0.),\nvec3(0.),\nvec3(0.),\nvec3(0.),\nvec3(0.),\nvec3(0.),\nvec3(0.),\nvec3(0.),\nvec3(0.),\nvec3(0.),\nvec3(0.),\nvec3(0.),\nvec3(0.)\n);const vec3 PoissonSamplers64[64]=vec3[64](\nvec3(-0.613392,0.617481,0.),\nvec3(0.170019,-0.040254,0.),\nvec3(-0.299417,0.791925,0.),\nvec3(0.645680,0.493210,0.),\nvec3(-0.651784,0.717887,0.),\nvec3(0.421003,0.027070,0.),\nvec3(-0.817194,-0.271096,0.),\nvec3(-0.705374,-0.668203,0.),\nvec3(0.977050,-0.108615,0.),\nvec3(0.063326,0.142369,0.),\nvec3(0.203528,0.214331,0.),\nvec3(-0.667531,0.326090,0.),\nvec3(-0.098422,-0.295755,0.),\nvec3(-0.885922,0.215369,0.),\nvec3(0.566637,0.605213,0.),\nvec3(0.039766,-0.396100,0.),\nvec3(0.751946,0.453352,0.),\nvec3(0.078707,-0.715323,0.),\nvec3(-0.075838,-0.529344,0.),\nvec3(0.724479,-0.580798,0.),\nvec3(0.222999,-0.215125,0.),\nvec3(-0.467574,-0.405438,0.),\nvec3(-0.248268,-0.814753,0.),\nvec3(0.354411,-0.887570,0.),\nvec3(0.175817,0.382366,0.),\nvec3(0.487472,-0.063082,0.),\nvec3(-0.084078,0.898312,0.),\nvec3(0.488876,-0.783441,0.),\nvec3(0.470016,0.217933,0.),\nvec3(-0.696890,-0.549791,0.),\nvec3(-0.149693,0.605762,0.),\nvec3(0.034211,0.979980,0.),\nvec3(0.503098,-0.308878,0.),\nvec3(-0.016205,-0.872921,0.),\nvec3(0.385784,-0.393902,0.),\nvec3(-0.146886,-0.859249,0.),\nvec3(0.643361,0.164098,0.),\nvec3(0.634388,-0.049471,0.),\nvec3(-0.688894,0.007843,0.),\nvec3(0.464034,-0.188818,0.),\nvec3(-0.440840,0.137486,0.),\nvec3(0.364483,0.511704,0.),\nvec3(0.034028,0.325968,0.),\nvec3(0.099094,-0.308023,0.),\nvec3(0.693960,-0.366253,0.),\nvec3(0.678884,-0.204688,0.),\nvec3(0.001801,0.780328,0.),\nvec3(0.145177,-0.898984,0.),\nvec3(0.062655,-0.611866,0.),\nvec3(0.315226,-0.604297,0.),\nvec3(-0.780145,0.486251,0.),\nvec3(-0.371868,0.882138,0.),\nvec3(0.200476,0.494430,0.),\nvec3(-0.494552,-0.711051,0.),\nvec3(0.612476,0.705252,0.),\nvec3(-0.578845,-0.768792,0.),\nvec3(-0.772454,-0.090976,0.),\nvec3(0.504440,0.372295,0.),\nvec3(0.155736,0.065157,0.),\nvec3(0.391522,0.849605,0.),\nvec3(-0.620106,-0.328104,0.),\nvec3(0.789239,-0.419965,0.),\nvec3(-0.545396,0.538133,0.),\nvec3(-0.178564,-0.596057,0.)\n);\n#define inline\nfloat computeShadowWithCSMPCSS(float layer,vec4 vPositionFromLight,float depthMetric,highp sampler2DArray depthSampler,highp sampler2DArrayShadow shadowSampler,float shadowMapSizeInverse,float lightSizeUV,float darkness,float frustumEdgeFalloff,int searchTapCount,int pcfTapCount,vec3[64] poissonSamplers,vec2 lightSizeUVCorrection,float depthCorrection,float penumbraDarkness)\n{vec3 clipSpace=vPositionFromLight.xyz/vPositionFromLight.w;vec3 uvDepth=vec3(0.5*clipSpace.xyz+vec3(0.5));uvDepth.z=clamp(ZINCLIP,0.,GREATEST_LESS_THAN_ONE);vec4 uvDepthLayer=vec4(uvDepth.x,uvDepth.y,layer,uvDepth.z);float blockerDepth=0.0;float sumBlockerDepth=0.0;float numBlocker=0.0;for (int i=0; i<searchTapCount; i ++) {blockerDepth=texture2D(depthSampler,vec3(uvDepth.xy+(lightSizeUV*lightSizeUVCorrection*shadowMapSizeInverse*PoissonSamplers32[i].xy),layer)).r;if (blockerDepth<depthMetric) {sumBlockerDepth+=blockerDepth;numBlocker++;}}\nfloat avgBlockerDepth=sumBlockerDepth/numBlocker;float AAOffset=shadowMapSizeInverse*10.;float penumbraRatio=((depthMetric-avgBlockerDepth)*depthCorrection+AAOffset);vec4 filterRadius=vec4(penumbraRatio*lightSizeUV*lightSizeUVCorrection*shadowMapSizeInverse,0.,0.);float random=getRand(vPositionFromLight.xy);float rotationAngle=random*3.1415926;vec2 rotationVector=vec2(cos(rotationAngle),sin(rotationAngle));float shadow=0.;for (int i=0; i<pcfTapCount; i++) {vec4 offset=vec4(poissonSamplers[i],0.);offset=vec4(offset.x*rotationVector.x-offset.y*rotationVector.y,offset.y*rotationVector.x+offset.x*rotationVector.y,0.,0.);shadow+=texture2D(shadowSampler,uvDepthLayer+offset*filterRadius);}\nshadow/=float(pcfTapCount);shadow=mix(shadow,1.,min((depthMetric-avgBlockerDepth)*depthCorrection*penumbraDarkness,1.));shadow=mix(darkness,1.,shadow);if (numBlocker<1.0) {return 1.0;}\nelse\n{return computeFallOff(shadow,clipSpace.xy,frustumEdgeFalloff);}}\n#define inline\nfloat computeShadowWithPCSS(vec4 vPositionFromLight,float depthMetric,sampler2D depthSampler,highp sampler2DShadow shadowSampler,float shadowMapSizeInverse,float lightSizeUV,float darkness,float frustumEdgeFalloff,int searchTapCount,int pcfTapCount,vec3[64] poissonSamplers)\n{if (depthMetric>1.0 || depthMetric<0.0) {return 1.0;}\nelse\n{vec3 clipSpace=vPositionFromLight.xyz/vPositionFromLight.w;vec3 uvDepth=vec3(0.5*clipSpace.xyz+vec3(0.5));uvDepth.z=ZINCLIP;float blockerDepth=0.0;float sumBlockerDepth=0.0;float numBlocker=0.0;for (int i=0; i<searchTapCount; i ++) {blockerDepth=TEXTUREFUNC(depthSampler,uvDepth.xy+(lightSizeUV*shadowMapSizeInverse*PoissonSamplers32[i].xy),0.).r;if (blockerDepth<depthMetric) {sumBlockerDepth+=blockerDepth;numBlocker++;}}\nif (numBlocker<1.0) {return 1.0;}\nelse\n{float avgBlockerDepth=sumBlockerDepth/numBlocker;float AAOffset=shadowMapSizeInverse*10.;float penumbraRatio=((depthMetric-avgBlockerDepth)+AAOffset);float filterRadius=penumbraRatio*lightSizeUV*shadowMapSizeInverse;float random=getRand(vPositionFromLight.xy);float rotationAngle=random*3.1415926;vec2 rotationVector=vec2(cos(rotationAngle),sin(rotationAngle));float shadow=0.;for (int i=0; i<pcfTapCount; i++) {vec3 offset=poissonSamplers[i];offset=vec3(offset.x*rotationVector.x-offset.y*rotationVector.y,offset.y*rotationVector.x+offset.x*rotationVector.y,0.);shadow+=TEXTUREFUNC(shadowSampler,uvDepth+offset*filterRadius,0.);}\nshadow/=float(pcfTapCount);shadow=mix(shadow,1.,depthMetric-avgBlockerDepth);shadow=mix(darkness,1.,shadow);return computeFallOff(shadow,clipSpace.xy,frustumEdgeFalloff);}}}\n#define inline\nfloat computeShadowWithPCSS16(vec4 vPositionFromLight,float depthMetric,sampler2D depthSampler,highp sampler2DShadow shadowSampler,float shadowMapSizeInverse,float lightSizeUV,float darkness,float frustumEdgeFalloff)\n{return computeShadowWithPCSS(vPositionFromLight,depthMetric,depthSampler,shadowSampler,shadowMapSizeInverse,lightSizeUV,darkness,frustumEdgeFalloff,16,16,PoissonSamplers32);}\n#define inline\nfloat computeShadowWithPCSS32(vec4 vPositionFromLight,float depthMetric,sampler2D depthSampler,highp sampler2DShadow shadowSampler,float shadowMapSizeInverse,float lightSizeUV,float darkness,float frustumEdgeFalloff)\n{return computeShadowWithPCSS(vPositionFromLight,depthMetric,depthSampler,shadowSampler,shadowMapSizeInverse,lightSizeUV,darkness,frustumEdgeFalloff,16,32,PoissonSamplers32);}\n#define inline\nfloat computeShadowWithPCSS64(vec4 vPositionFromLight,float depthMetric,sampler2D depthSampler,highp sampler2DShadow shadowSampler,float shadowMapSizeInverse,float lightSizeUV,float darkness,float frustumEdgeFalloff)\n{return computeShadowWithPCSS(vPositionFromLight,depthMetric,depthSampler,shadowSampler,shadowMapSizeInverse,lightSizeUV,darkness,frustumEdgeFalloff,32,64,PoissonSamplers64);}\n#define inline\nfloat computeShadowWithCSMPCSS16(float layer,vec4 vPositionFromLight,float depthMetric,highp sampler2DArray depthSampler,highp sampler2DArrayShadow shadowSampler,float shadowMapSizeInverse,float lightSizeUV,float darkness,float frustumEdgeFalloff,vec2 lightSizeUVCorrection,float depthCorrection,float penumbraDarkness)\n{return computeShadowWithCSMPCSS(layer,vPositionFromLight,depthMetric,depthSampler,shadowSampler,shadowMapSizeInverse,lightSizeUV,darkness,frustumEdgeFalloff,16,16,PoissonSamplers32,lightSizeUVCorrection,depthCorrection,penumbraDarkness);}\n#define inline\nfloat computeShadowWithCSMPCSS32(float layer,vec4 vPositionFromLight,float depthMetric,highp sampler2DArray depthSampler,highp sampler2DArrayShadow shadowSampler,float shadowMapSizeInverse,float lightSizeUV,float darkness,float frustumEdgeFalloff,vec2 lightSizeUVCorrection,float depthCorrection,float penumbraDarkness)\n{return computeShadowWithCSMPCSS(layer,vPositionFromLight,depthMetric,depthSampler,shadowSampler,shadowMapSizeInverse,lightSizeUV,darkness,frustumEdgeFalloff,16,32,PoissonSamplers32,lightSizeUVCorrection,depthCorrection,penumbraDarkness);}\n#define inline\nfloat computeShadowWithCSMPCSS64(float layer,vec4 vPositionFromLight,float depthMetric,highp sampler2DArray depthSampler,highp sampler2DArrayShadow shadowSampler,float shadowMapSizeInverse,float lightSizeUV,float darkness,float frustumEdgeFalloff,vec2 lightSizeUVCorrection,float depthCorrection,float penumbraDarkness)\n{return computeShadowWithCSMPCSS(layer,vPositionFromLight,depthMetric,depthSampler,shadowSampler,shadowMapSizeInverse,lightSizeUV,darkness,frustumEdgeFalloff,32,64,PoissonSamplers64,lightSizeUVCorrection,depthCorrection,penumbraDarkness);}\n#endif\n#endif\n";n(1642).v.IncludesShadersStore[i]=t}}]);
@@ -0,0 +1 @@
1
+ /*! filename:1279 */
@@ -0,0 +1,2 @@
1
+ /*! For license information please see 1459.real-time-viewer.umd.min.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[1459],{7008:(e,n,t)=>{const r="kernelBlurVaryingDeclaration",l="varying vec2 sampleCoord{X};";t(1642).v.IncludesShadersStore[r]=l},1459:(e,n,t)=>{t.r(n),t.d(n,{kernelBlurPixelShader:()=>u});var r=t(1642);t(7008),t(5283);const l="kernelBlurFragment",a="#ifdef DOF\nfactor=sampleCoC(sampleCoord{X}); \ncomputedWeight=KERNEL_WEIGHT{X}*factor;sumOfWeights+=computedWeight;\n#else\ncomputedWeight=KERNEL_WEIGHT{X};\n#endif\n#ifdef PACKEDFLOAT\nblend+=unpack(texture2D(textureSampler,sampleCoord{X}))*computedWeight;\n#else\nblend+=texture2D(textureSampler,sampleCoord{X})*computedWeight;\n#endif\n";r.v.IncludesShadersStore[l]=a;const d="kernelBlurFragment2",i="#ifdef DOF\nfactor=sampleCoC(sampleCenter+delta*KERNEL_DEP_OFFSET{X});computedWeight=KERNEL_DEP_WEIGHT{X}*factor;sumOfWeights+=computedWeight;\n#else\ncomputedWeight=KERNEL_DEP_WEIGHT{X};\n#endif\n#ifdef PACKEDFLOAT\nblend+=unpack(texture2D(textureSampler,sampleCenter+delta*KERNEL_DEP_OFFSET{X}))*computedWeight;\n#else\nblend+=texture2D(textureSampler,sampleCenter+delta*KERNEL_DEP_OFFSET{X})*computedWeight;\n#endif\n";r.v.IncludesShadersStore[d]=i;const o="kernelBlurPixelShader",f="uniform sampler2D textureSampler;uniform vec2 delta;varying vec2 sampleCenter;\n#ifdef DOF\nuniform sampler2D circleOfConfusionSampler;float sampleCoC(in vec2 offset) {float coc=texture2D(circleOfConfusionSampler,offset).r;return coc; }\n#endif\n#include<kernelBlurVaryingDeclaration>[0..varyingCount]\n#ifdef PACKEDFLOAT\n#include<packingFunctions>\n#endif\n#define CUSTOM_FRAGMENT_DEFINITIONS\nvoid main(void)\n{float computedWeight=0.0;\n#ifdef PACKEDFLOAT\nfloat blend=0.;\n#else\nvec4 blend=vec4(0.);\n#endif\n#ifdef DOF\nfloat sumOfWeights=CENTER_WEIGHT; \nfloat factor=0.0;\n#ifdef PACKEDFLOAT\nblend+=unpack(texture2D(textureSampler,sampleCenter))*CENTER_WEIGHT;\n#else\nblend+=texture2D(textureSampler,sampleCenter)*CENTER_WEIGHT;\n#endif\n#endif\n#include<kernelBlurFragment>[0..varyingCount]\n#include<kernelBlurFragment2>[0..depCount]\n#ifdef PACKEDFLOAT\ngl_FragColor=pack(blend);\n#else\ngl_FragColor=blend;\n#endif\n#ifdef DOF\ngl_FragColor/=sumOfWeights;\n#endif\n}";r.v.ShadersStore[o]=f;const u={name:o,shader:f}}}]);
@@ -0,0 +1 @@
1
+ /*! filename:1459 */
@@ -1,2 +1,2 @@
1
- /*! For license information please see 6912.real-time-viewer.umd.min.js.LICENSE.txt */
2
- "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[6912],{6912:(e,i,t)=>{t.r(i),t.d(i,{layerVertexShader:()=>a});const n="layerVertexShader",s="attribute vec2 position;uniform vec2 scale;uniform vec2 offset;uniform mat4 textureMatrix;varying vec2 vUV;const vec2 madd=vec2(0.5,0.5);\n#define CUSTOM_VERTEX_DEFINITIONS\nvoid main(void) {\n#define CUSTOM_VERTEX_MAIN_BEGIN\nvec2 shiftedPosition=position*scale+offset;vUV=vec2(textureMatrix*vec4(shiftedPosition*madd+madd,1.0,0.0));gl_Position=vec4(shiftedPosition,0.0,1.0);\n#define CUSTOM_VERTEX_MAIN_END\n}";t(7416).v.ShadersStore[n]=s;const a={name:n,shader:s}}}]);
1
+ /*! For license information please see 1498.real-time-viewer.umd.min.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[1498],{1498:(e,i,t)=>{t.r(i),t.d(i,{layerVertexShader:()=>a});const n="layerVertexShader",s="attribute vec2 position;uniform vec2 scale;uniform vec2 offset;uniform mat4 textureMatrix;varying vec2 vUV;const vec2 madd=vec2(0.5,0.5);\n#define CUSTOM_VERTEX_DEFINITIONS\nvoid main(void) {\n#define CUSTOM_VERTEX_MAIN_BEGIN\nvec2 shiftedPosition=position*scale+offset;vUV=vec2(textureMatrix*vec4(shiftedPosition*madd+madd,1.0,0.0));gl_Position=vec4(shiftedPosition,0.0,1.0);\n#define CUSTOM_VERTEX_MAIN_END\n}";t(1642).v.ShadersStore[n]=s;const a={name:n,shader:s}}}]);
@@ -0,0 +1 @@
1
+ /*! filename:1498 */
@@ -0,0 +1,2 @@
1
+ /*! For license information please see 151.real-time-viewer.umd.min.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[151],{151:(e,t,a)=>{a.r(t),a.d(t,{_TGATextureLoader:()=>_TGATextureLoader});var r=a(9805);class _TGATextureLoader{constructor(){this.supportCascades=!1}loadCubeData(){throw".env not supported in Cube."}loadData(e,t,a){const s=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),i=(0,r.A6)(s);a(i.width,i.height,t.generateMipMaps,!1,(()=>{(0,r.Ab)(t,s)}))}}}}]);
@@ -0,0 +1 @@
1
+ /*! filename:151 */
@@ -1,2 +1,2 @@
1
1
  /*! For license information please see 1781.real-time-viewer.umd.min.js.LICENSE.txt */
2
- "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[1781],{3665:(n,e,f)=>{const i="clipPlaneFragment",o="#if defined(CLIPPLANE) || defined(CLIPPLANE2) || defined(CLIPPLANE3) || defined(CLIPPLANE4) || defined(CLIPPLANE5) || defined(CLIPPLANE6)\nif (false) {}\n#endif\n#ifdef CLIPPLANE\nelse if (fragmentInputs.fClipDistance>0.0)\n{discard;}\n#endif\n#ifdef CLIPPLANE2\nelse if (fragmentInputs.fClipDistance2>0.0)\n{discard;}\n#endif\n#ifdef CLIPPLANE3\nelse if (fragmentInputs.fClipDistance3>0.0)\n{discard;}\n#endif\n#ifdef CLIPPLANE4\nelse if (fragmentInputs.fClipDistance4>0.0)\n{discard;}\n#endif\n#ifdef CLIPPLANE5\nelse if (fragmentInputs.fClipDistance5>0.0)\n{discard;}\n#endif\n#ifdef CLIPPLANE6\nelse if (fragmentInputs.fClipDistance6>0.0)\n{discard;}\n#endif\n";f(7416).v.IncludesShadersStoreWGSL[i]=o},7652:(n,e,f)=>{const i="clipPlaneFragmentDeclaration",o="#ifdef CLIPPLANE\nvarying fClipDistance: f32;\n#endif\n#ifdef CLIPPLANE2\nvarying fClipDistance2: f32;\n#endif\n#ifdef CLIPPLANE3\nvarying fClipDistance3: f32;\n#endif\n#ifdef CLIPPLANE4\nvarying fClipDistance4: f32;\n#endif\n#ifdef CLIPPLANE5\nvarying fClipDistance5: f32;\n#endif\n#ifdef CLIPPLANE6\nvarying fClipDistance6: f32;\n#endif\n";f(7416).v.IncludesShadersStoreWGSL[i]=o},7555:(n,e,f)=>{const i="fogFragment",o="#ifdef FOG\nvar fog: f32=CalcFogFactor();\n#ifdef PBR\nfog=toLinearSpace(fog);\n#endif\ncolor= vec4f(mix(uniforms.vFogColor,color.rgb,fog),color.a);\n#endif\n";f(7416).v.IncludesShadersStoreWGSL[i]=o},750:(n,e,f)=>{const i="fogFragmentDeclaration",o="#ifdef FOG\n#define FOGMODE_NONE 0.\n#define FOGMODE_EXP 1.\n#define FOGMODE_EXP2 2.\n#define FOGMODE_LINEAR 3.\nconst E=2.71828;uniform vFogInfos: vec4f;uniform vFogColor: vec3f;varying vFogDistance: vec3f;fn CalcFogFactor()->f32\n{var fogCoeff: f32=1.0;var fogStart: f32=uniforms.vFogInfos.y;var fogEnd: f32=uniforms.vFogInfos.z;var fogDensity: f32=uniforms.vFogInfos.w;var fogDistance: f32=length(fragmentInputs.vFogDistance);if (FOGMODE_LINEAR==uniforms.vFogInfos.x)\n{fogCoeff=(fogEnd-fogDistance)/(fogEnd-fogStart);}\nelse if (FOGMODE_EXP==uniforms.vFogInfos.x)\n{fogCoeff=1.0/pow(E,fogDistance*fogDensity);}\nelse if (FOGMODE_EXP2==uniforms.vFogInfos.x)\n{fogCoeff=1.0/pow(E,fogDistance*fogDistance*fogDensity*fogDensity);}\nreturn clamp(fogCoeff,0.0,1.0);}\n#endif\n";f(7416).v.IncludesShadersStoreWGSL[i]=o},1781:(n,e,f)=>{f.r(e),f.d(e,{colorPixelShaderWGSL:()=>d});var i=f(7416);f(7652),f(750),f(3665),f(7555);const o="colorPixelShader",a="#if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES)\n#define VERTEXCOLOR\nvarying vColor: vec4f;\n#else\nuniform color: vec4f;\n#endif\n#include<clipPlaneFragmentDeclaration>\n#include<fogFragmentDeclaration>\n#define CUSTOM_FRAGMENT_DEFINITIONS\n@fragment\nfn main(input: FragmentInputs)->FragmentOutputs {\n#define CUSTOM_FRAGMENT_MAIN_BEGIN\n#include<clipPlaneFragment>\n#if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES)\nfragmentOutputs.color=input.vColor;\n#else\nfragmentOutputs.color=uniforms.color;\n#endif\n#include<fogFragment>(color,fragmentOutputs.color)\n#define CUSTOM_FRAGMENT_MAIN_END\n}";i.v.ShadersStoreWGSL[o]=a;const d={name:o,shader:a}}}]);
2
+ "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[1781],{1781:(e,r,o)=>{o.r(r),o.d(r,{ssaoCombinePixelShader:()=>s});const i="ssaoCombinePixelShader",n="uniform sampler2D textureSampler;uniform sampler2D originalColor;uniform vec4 viewport;varying vec2 vUV;\n#define CUSTOM_FRAGMENT_DEFINITIONS\nvoid main(void) {\n#define CUSTOM_FRAGMENT_MAIN_BEGIN\nvec4 ssaoColor=texture2D(textureSampler,viewport.xy+vUV*viewport.zw);vec4 sceneColor=texture2D(originalColor,vUV);gl_FragColor=sceneColor*ssaoColor;\n#define CUSTOM_FRAGMENT_MAIN_END\n}\n";o(1642).v.ShadersStore[i]=n;const s={name:i,shader:n}}}]);
@@ -1,2 +1,2 @@
1
- /*! For license information please see 7501.real-time-viewer.umd.min.js.LICENSE.txt */
2
- "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[7501],{8632:(e,n,r)=>{const f="hdrFilteringFunctions",a="#ifdef NUM_SAMPLES\n#if NUM_SAMPLES>0\nfn radicalInverse_VdC(value: u32)->f32 \n{var bits=(value<<16u) | (value>>16u);bits=((bits & 0x55555555u)<<1u) | ((bits & 0xAAAAAAAAu)>>1u);bits=((bits & 0x33333333u)<<2u) | ((bits & 0xCCCCCCCCu)>>2u);bits=((bits & 0x0F0F0F0Fu)<<4u) | ((bits & 0xF0F0F0F0u)>>4u);bits=((bits & 0x00FF00FFu)<<8u) | ((bits & 0xFF00FF00u)>>8u);return f32(bits)*2.3283064365386963e-10; }\nfn hammersley(i: u32,N: u32)->vec2f\n{return vec2f( f32(i)/ f32(N),radicalInverse_VdC(i));}\nfn log4(x: f32)->f32 {return log2(x)/2.;}\nconst NUM_SAMPLES_FLOAT: f32= f32(NUM_SAMPLES);const NUM_SAMPLES_FLOAT_INVERSED: f32=1./NUM_SAMPLES_FLOAT;const K: f32=4.;fn irradiance(inputTexture: texture_cube<f32>,inputSampler: sampler,inputN: vec3f,filteringInfo: vec2f)->vec3f\n{var n: vec3f=normalize(inputN);var result: vec3f= vec3f(0.0);var tangent: vec3f=select(vec3f(1.,0.,0.),vec3f(0.,0.,1.),abs(n.z)<0.999);tangent=normalize(cross(tangent,n));var bitangent: vec3f=cross(n,tangent);var tbn: mat3x3f= mat3x3f(tangent,bitangent,n);var maxLevel: f32=filteringInfo.y;var dim0: f32=filteringInfo.x;var omegaP: f32=(4.*PI)/(6.*dim0*dim0);for(var i: u32=0u; i<NUM_SAMPLES; i++)\n{var Xi: vec2f=hammersley(i,NUM_SAMPLES);var Ls: vec3f=hemisphereCosSample(Xi);Ls=normalize(Ls);var Ns: vec3f= vec3f(0.,0.,1.);var NoL: f32=dot(Ns,Ls);if (NoL>0.) {var pdf_inversed: f32=PI/NoL;var omegaS: f32=NUM_SAMPLES_FLOAT_INVERSED*pdf_inversed;var l: f32=log4(omegaS)-log4(omegaP)+log4(K);var mipLevel: f32=clamp(l,0.0,maxLevel);var c: vec3f=textureSampleLevel(inputTexture,inputSampler,tbn*Ls,mipLevel).rgb;\n#ifdef GAMMA_INPUT\nc=toLinearSpaceVec3(c);\n#endif\nresult+=c;}}\nresult=result*NUM_SAMPLES_FLOAT_INVERSED;return result;}\nfn radiance(alphaG: f32,inputTexture: texture_cube<f32>,inputSampler: sampler,inputN: vec3f,filteringInfo: vec2f)->vec3f\n{var n: vec3f=normalize(inputN);var c: vec3f=textureSample(inputTexture,inputSampler,n).rgb; \nif (alphaG==0.) {\n#ifdef GAMMA_INPUT\nc=toLinearSpace(c);\n#endif\nreturn c;} else {var result: vec3f= vec3f(0.);var tangent: vec3f=select(vec3f(1.,0.,0.),vec3f(0.,0.,1.),abs(n.z)<0.999);tangent=normalize(cross(tangent,n));var bitangent: vec3f=cross(n,tangent);var tbn: mat3x3f= mat3x3f(tangent,bitangent,n);var maxLevel: f32=filteringInfo.y;var dim0: f32=filteringInfo.x;var omegaP: f32=(4.*PI)/(6.*dim0*dim0);var weight: f32=0.;for(var i: u32=0u; i<NUM_SAMPLES; i++)\n{var Xi: vec2f=hammersley(i,NUM_SAMPLES);var H: vec3f=hemisphereImportanceSampleDggx(Xi,alphaG);var NoV: f32=1.;var NoH: f32=H.z;var NoH2: f32=H.z*H.z;var NoL: f32=2.*NoH2-1.;var L: vec3f= vec3f(2.*NoH*H.x,2.*NoH*H.y,NoL);L=normalize(L);if (NoL>0.) {var pdf_inversed: f32=4./normalDistributionFunction_TrowbridgeReitzGGX(NoH,alphaG);var omegaS: f32=NUM_SAMPLES_FLOAT_INVERSED*pdf_inversed;var l: f32=log4(omegaS)-log4(omegaP)+log4(K);var mipLevel: f32=clamp( f32(l),0.0,maxLevel);weight+=NoL;var c: vec3f=textureSampleLevel(inputTexture,inputSampler,tbn*L,mipLevel).rgb;\n#ifdef GAMMA_INPUT\nc=toLinearSpace(c);\n#endif\nresult+=c*NoL;}}\nresult=result/weight;return result;}}\n#endif\n#endif\n";r(7416).v.IncludesShadersStoreWGSL[f]=a},5442:(e,n,r)=>{const f="importanceSampling",a="fn hemisphereCosSample(u: vec2f)->vec3f {var phi: f32=2.*PI*u.x;var cosTheta2: f32=1.-u.y;var cosTheta: f32=sqrt(cosTheta2);var sinTheta: f32=sqrt(1.-cosTheta2);return vec3f(sinTheta*cos(phi),sinTheta*sin(phi),cosTheta);}\nfn hemisphereImportanceSampleDggx(u: vec2f,a: f32)->vec3f {var phi: f32=2.*PI*u.x;var cosTheta2: f32=(1.-u.y)/(1.+(a+1.)*((a-1.)*u.y));var cosTheta: f32=sqrt(cosTheta2);var sinTheta: f32=sqrt(1.-cosTheta2);return vec3f(sinTheta*cos(phi),sinTheta*sin(phi),cosTheta);}\nfn hemisphereImportanceSampleDCharlie(u: vec2f,a: f32)->vec3f { \nvar phi: f32=2.*PI*u.x;var sinTheta: f32=pow(u.y,a/(2.*a+1.));var cosTheta: f32=sqrt(1.-sinTheta*sinTheta);return vec3f(sinTheta*cos(phi),sinTheta*sin(phi),cosTheta);}";r(7416).v.IncludesShadersStoreWGSL[f]=a},4366:(e,n,r)=>{const f="pbrBRDFFunctions",a="#define FRESNEL_MAXIMUM_ON_ROUGH 0.25\n#ifdef MS_BRDF_ENERGY_CONSERVATION\nfn getEnergyConservationFactor(specularEnvironmentR0: vec3f,environmentBrdf: vec3f)->vec3f {return 1.0+specularEnvironmentR0*(1.0/environmentBrdf.y-1.0);}\n#endif\n#ifdef ENVIRONMENTBRDF\nfn getBRDFLookup(NdotV: f32,perceptualRoughness: f32)->vec3f {var UV: vec2f= vec2f(NdotV,perceptualRoughness);var brdfLookup: vec4f= textureSample(environmentBrdfSampler,environmentBrdfSamplerSampler,UV);\n#ifdef ENVIRONMENTBRDF_RGBD\nbrdfLookup=vec4f(fromRGBD(brdfLookup.rgba),brdfLookup.a);\n#endif\nreturn brdfLookup.rgb;}\nfn getReflectanceFromBRDFWithEnvLookup(specularEnvironmentR0: vec3f,specularEnvironmentR90: vec3f,environmentBrdf: vec3f)->vec3f {\n#ifdef BRDF_V_HEIGHT_CORRELATED\nvar reflectance: vec3f=(specularEnvironmentR90-specularEnvironmentR0)*environmentBrdf.x+specularEnvironmentR0*environmentBrdf.y;\n#else\nvar reflectance: vec3f=specularEnvironmentR0*environmentBrdf.x+specularEnvironmentR90*environmentBrdf.y;\n#endif\nreturn reflectance;}\nfn getReflectanceFromBRDFLookup(specularEnvironmentR0: vec3f,environmentBrdf: vec3f)->vec3f {\n#ifdef BRDF_V_HEIGHT_CORRELATED\nvar reflectance: vec3f=mix(environmentBrdf.xxx,environmentBrdf.yyy,specularEnvironmentR0);\n#else\nvar reflectance: vec3f=specularEnvironmentR0*environmentBrdf.x+environmentBrdf.y;\n#endif\nreturn reflectance;}\n#endif\n/* NOT USED\n#if defined(SHEEN) && defined(SHEEN_SOFTER)\nfn getBRDFLookupCharlieSheen(NdotV: f32,perceptualRoughness: f32)->f32\n{var c: f32=1.0-NdotV;var c3: f32=c*c*c;return 0.65584461*c3+1.0/(4.16526551+exp(-7.97291361*perceptualRoughness+6.33516894));}\n#endif\n*/\n#if !defined(ENVIRONMENTBRDF) || defined(REFLECTIONMAP_SKYBOX) || defined(ALPHAFRESNEL)\nfn getReflectanceFromAnalyticalBRDFLookup_Jones(VdotN: f32,reflectance0: vec3f,reflectance90: vec3f,smoothness: f32)->vec3f\n{var weight: f32=mix(FRESNEL_MAXIMUM_ON_ROUGH,1.0,smoothness);return reflectance0+weight*(reflectance90-reflectance0)*pow5(saturate(1.0-VdotN));}\n#endif\n#if defined(SHEEN) && defined(ENVIRONMENTBRDF)\n/**\n* The sheen BRDF not containing F can be easily stored in the blue channel of the BRDF texture.\n* The blue channel contains DCharlie*VAshikhmin*NdotL as a lokkup table\n*/\nfn getSheenReflectanceFromBRDFLookup(reflectance0: vec3f,environmentBrdf: vec3f)->vec3f {var sheenEnvironmentReflectance: vec3f=reflectance0*environmentBrdf.b;return sheenEnvironmentReflectance;}\n#endif\nfn fresnelSchlickGGXVec3(VdotH: f32,reflectance0: vec3f,reflectance90: vec3f)->vec3f\n{return reflectance0+(reflectance90-reflectance0)*pow5(1.0-VdotH);}\nfn fresnelSchlickGGX(VdotH: f32,reflectance0: f32,reflectance90: f32)->f32\n{return reflectance0+(reflectance90-reflectance0)*pow5(1.0-VdotH);}\n#ifdef CLEARCOAT\nfn getR0RemappedForClearCoat(f0: vec3f)->vec3f {\n#ifdef CLEARCOAT_DEFAULTIOR\n#ifdef MOBILE\nreturn saturateVec3(f0*(f0*0.526868+0.529324)-0.0482256);\n#else\nreturn saturateVec3(f0*(f0*(0.941892-0.263008*f0)+0.346479)-0.0285998);\n#endif\n#else\nvar s: vec3f=sqrt(f0);var t: vec3f=(uniforms.vClearCoatRefractionParams.z+uniforms.vClearCoatRefractionParams.w*s)/(uniforms.vClearCoatRefractionParams.w+uniforms.vClearCoatRefractionParams.z*s);return squareVec3(t);\n#endif\n}\n#endif\n#ifdef IRIDESCENCE\nconst XYZ_TO_REC709: mat3x3f= mat3x3f(\n3.2404542,-0.9692660, 0.0556434,\n-1.5371385, 1.8760108,-0.2040259,\n-0.4985314, 0.0415560, 1.0572252\n);fn getIORTfromAirToSurfaceR0(f0: vec3f)->vec3f {var sqrtF0: vec3f=sqrt(f0);return (1.+sqrtF0)/(1.-sqrtF0);}\nfn getR0fromIORsVec3(iorT: vec3f,iorI: f32)->vec3f {return squareVec3((iorT- vec3f(iorI))/(iorT+ vec3f(iorI)));}\nfn getR0fromIORs(iorT: f32,iorI: f32)->f32 {return square((iorT-iorI)/(iorT+iorI));}\nfn evalSensitivity(opd: f32,shift: vec3f)->vec3f {var phase: f32=2.0*PI*opd*1.0e-9;const val: vec3f= vec3f(5.4856e-13,4.4201e-13,5.2481e-13);const pos: vec3f= vec3f(1.6810e+06,1.7953e+06,2.2084e+06);const vr: vec3f= vec3f(4.3278e+09,9.3046e+09,6.6121e+09);var xyz: vec3f=val*sqrt(2.0*PI*vr)*cos(pos*phase+shift)*exp(-square(phase)*vr);xyz.x+=9.7470e-14*sqrt(2.0*PI*4.5282e+09)*cos(2.2399e+06*phase+shift[0])*exp(-4.5282e+09*square(phase));xyz/=1.0685e-7;var srgb: vec3f=XYZ_TO_REC709*xyz;return srgb;}\nfn evalIridescence(outsideIOR: f32,eta2: f32,cosTheta1: f32,thinFilmThickness: f32,baseF0: vec3f)->vec3f {var I: vec3f= vec3f(1.0);var iridescenceIOR: f32=mix(outsideIOR,eta2,smoothstep(0.0,0.03,thinFilmThickness));var sinTheta2Sq: f32=square(outsideIOR/iridescenceIOR)*(1.0-square(cosTheta1));var cosTheta2Sq: f32=1.0-sinTheta2Sq;if (cosTheta2Sq<0.0) {return I;}\nvar cosTheta2: f32=sqrt(cosTheta2Sq);var R0: f32=getR0fromIORs(iridescenceIOR,outsideIOR);var R12: f32=fresnelSchlickGGX(cosTheta1,R0,1.);var R21: f32=R12;var T121: f32=1.0-R12;var phi12: f32=0.0;if (iridescenceIOR<outsideIOR) {phi12=PI;}\nvar phi21: f32=PI-phi12;var baseIOR: vec3f=getIORTfromAirToSurfaceR0(clamp(baseF0,vec3f(0.0),vec3f(0.9999))); \nvar R1: vec3f=getR0fromIORsVec3(baseIOR,iridescenceIOR);var R23: vec3f=fresnelSchlickGGXVec3(cosTheta2,R1, vec3f(1.));var phi23: vec3f= vec3f(0.0);if (baseIOR[0]<iridescenceIOR) {phi23[0]=PI;}\nif (baseIOR[1]<iridescenceIOR) {phi23[1]=PI;}\nif (baseIOR[2]<iridescenceIOR) {phi23[2]=PI;}\nvar opd: f32=2.0*iridescenceIOR*thinFilmThickness*cosTheta2;var phi: vec3f= vec3f(phi21)+phi23;var R123: vec3f=clamp(R12*R23,vec3f(1e-5),vec3f(0.9999));var r123: vec3f=sqrt(R123);var Rs: vec3f=(T121*T121)*R23/( vec3f(1.0)-R123);var C0: vec3f=R12+Rs;I=C0;var Cm: vec3f=Rs-T121;for (var m: i32=1; m<=2; m++)\n{Cm*=r123;var Sm: vec3f=2.0*evalSensitivity( f32(m)*opd, f32(m)*phi);I+=Cm*Sm;}\nreturn max(I, vec3f(0.0));}\n#endif\nfn normalDistributionFunction_TrowbridgeReitzGGX(NdotH: f32,alphaG: f32)->f32\n{var a2: f32=alphaG*alphaG;var d: f32=NdotH*NdotH*(a2-1.0)+1.0;return a2/(PI*d*d);}\n#ifdef SHEEN\nfn normalDistributionFunction_CharlieSheen(NdotH: f32,alphaG: f32)->f32\n{var invR: f32=1./alphaG;var cos2h: f32=NdotH*NdotH;var sin2h: f32=1.-cos2h;return (2.+invR)*pow(sin2h,invR*.5)/(2.*PI);}\n#endif\n#ifdef ANISOTROPIC\nfn normalDistributionFunction_BurleyGGX_Anisotropic(NdotH: f32,TdotH: f32,BdotH: f32,alphaTB: vec2f)->f32 {var a2: f32=alphaTB.x*alphaTB.y;var v: vec3f= vec3f(alphaTB.y*TdotH,alphaTB.x *BdotH,a2*NdotH);var v2: f32=dot(v,v);var w2: f32=a2/v2;return a2*w2*w2*RECIPROCAL_PI;}\n#endif\n#ifdef BRDF_V_HEIGHT_CORRELATED\nfn smithVisibility_GGXCorrelated(NdotL: f32,NdotV: f32,alphaG: f32)->f32 {\n#ifdef MOBILE\nvar GGXV: f32=NdotL*(NdotV*(1.0-alphaG)+alphaG);var GGXL: f32=NdotV*(NdotL*(1.0-alphaG)+alphaG);return 0.5/(GGXV+GGXL);\n#else\nvar a2: f32=alphaG*alphaG;var GGXV: f32=NdotL*sqrt(NdotV*(NdotV-a2*NdotV)+a2);var GGXL: f32=NdotV*sqrt(NdotL*(NdotL-a2*NdotL)+a2);return 0.5/(GGXV+GGXL);\n#endif\n}\n#else\nfn smithVisibilityG1_TrowbridgeReitzGGXFast(dot: f32,alphaG: f32)->f32\n{\n#ifdef MOBILE\nreturn 1.0/(dot+alphaG+(1.0-alphaG)*dot ));\n#else\nvar alphaSquared: f32=alphaG*alphaG;return 1.0/(dot+sqrt(alphaSquared+(1.0-alphaSquared)*dot*dot));\n#endif\n}\nfn smithVisibility_TrowbridgeReitzGGXFast(NdotL: f32,NdotV: f32,alphaG: f32)->f32\n{var visibility: f32=smithVisibilityG1_TrowbridgeReitzGGXFast(NdotL,alphaG)*smithVisibilityG1_TrowbridgeReitzGGXFast(NdotV,alphaG);return visibility;}\n#endif\n#ifdef ANISOTROPIC\nfn smithVisibility_GGXCorrelated_Anisotropic(NdotL: f32,NdotV: f32,TdotV: f32,BdotV: f32,TdotL: f32,BdotL: f32,alphaTB: vec2f)->f32 {var lambdaV: f32=NdotL*length( vec3f(alphaTB.x*TdotV,alphaTB.y*BdotV,NdotV));var lambdaL: f32=NdotV*length( vec3f(alphaTB.x*TdotL,alphaTB.y*BdotL,NdotL));var v: f32=0.5/(lambdaV+lambdaL);return v;}\n#endif\n#ifdef CLEARCOAT\nfn visibility_Kelemen(VdotH: f32)->f32 {return 0.25/(VdotH*VdotH); }\n#endif\n#ifdef SHEEN\nfn visibility_Ashikhmin(NdotL: f32,NdotV: f32)->f32\n{return 1./(4.*(NdotL+NdotV-NdotL*NdotV));}\n/* NOT USED\n#ifdef SHEEN_SOFTER\nfn l(x: f32,alphaG: f32)->f32\n{var oneMinusAlphaSq: f32=(1.0-alphaG)*(1.0-alphaG);var a: f32=mix(21.5473,25.3245,oneMinusAlphaSq);var b: f32=mix(3.82987,3.32435,oneMinusAlphaSq);var c: f32=mix(0.19823,0.16801,oneMinusAlphaSq);var d: f32=mix(-1.97760,-1.27393,oneMinusAlphaSq);var e: f32=mix(-4.32054,-4.85967,oneMinusAlphaSq);return a/(1.0+b*pow(x,c))+d*x+e;}\nfn lambdaSheen(cosTheta: f32,alphaG: f32)->f32\n{return abs(cosTheta)<0.5 ? exp(l(cosTheta,alphaG)) : exp(2.0*l(0.5,alphaG)-l(1.0-cosTheta,alphaG));}\nfn visibility_CharlieSheen(NdotL: f32,NdotV: f32,alphaG: f32)->f32\n{var G: f32=1.0/(1.0+lambdaSheen(NdotV,alphaG)+lambdaSheen(NdotL,alphaG));return G/(4.0*NdotV*NdotL);}\n#endif\n*/\n#endif\nfn diffuseBRDF_Burley(NdotL: f32,NdotV: f32,VdotH: f32,roughness: f32)->f32 {var diffuseFresnelNV: f32=pow5(saturateEps(1.0-NdotL));var diffuseFresnelNL: f32=pow5(saturateEps(1.0-NdotV));var diffuseFresnel90: f32=0.5+2.0*VdotH*VdotH*roughness;var fresnel: f32 =\n(1.0+(diffuseFresnel90-1.0)*diffuseFresnelNL) *\n(1.0+(diffuseFresnel90-1.0)*diffuseFresnelNV);return fresnel/PI;}\n#ifdef SS_TRANSLUCENCY\nfn transmittanceBRDF_Burley(tintColor: vec3f,diffusionDistance: vec3f,thickness: f32)->vec3f {var S: vec3f=1./maxEpsVec3(diffusionDistance);var temp: vec3f=exp((-0.333333333*thickness)*S);return tintColor.rgb*0.25*(temp*temp*temp+3.0*temp);}\nfn computeWrappedDiffuseNdotL(NdotL: f32,w: f32)->f32 {var t: f32=1.0+w;var invt2: f32=1.0/(t*t);return saturate((NdotL+w)*invt2);}\n#endif\n";r(7416).v.IncludesShadersStoreWGSL[f]=a},7501:(e,n,r)=>{r.r(n),r.d(n,{hdrFilteringPixelShaderWGSL:()=>i});var f=r(7416);r(2842),r(5442),r(4366),r(8632);const a="hdrFilteringPixelShader",t="#include<helperFunctions>\n#include<importanceSampling>\n#include<pbrBRDFFunctions>\n#include<hdrFilteringFunctions>\nuniform alphaG: f32;var inputTextureSampler: sampler;var inputTexture: texture_cube<f32>;uniform vFilteringInfo: vec2f;uniform hdrScale: f32;varying direction: vec3f;@fragment\nfn main(input: FragmentInputs)->FragmentOutputs {var color: vec3f=radiance(uniforms.alphaG,inputTexture,inputTextureSampler,input.direction,uniforms.vFilteringInfo);fragmentOutputs.color= vec4f(color*uniforms.hdrScale,1.0);}";f.v.ShadersStoreWGSL[a]=t;const i={name:a,shader:t}}}]);
1
+ /*! For license information please see 1801.real-time-viewer.umd.min.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[1801],{5259:(e,n,r)=>{const f="hdrFilteringFunctions",a="#ifdef NUM_SAMPLES\n#if NUM_SAMPLES>0\nfn radicalInverse_VdC(value: u32)->f32 \n{var bits=(value<<16u) | (value>>16u);bits=((bits & 0x55555555u)<<1u) | ((bits & 0xAAAAAAAAu)>>1u);bits=((bits & 0x33333333u)<<2u) | ((bits & 0xCCCCCCCCu)>>2u);bits=((bits & 0x0F0F0F0Fu)<<4u) | ((bits & 0xF0F0F0F0u)>>4u);bits=((bits & 0x00FF00FFu)<<8u) | ((bits & 0xFF00FF00u)>>8u);return f32(bits)*2.3283064365386963e-10; }\nfn hammersley(i: u32,N: u32)->vec2f\n{return vec2f( f32(i)/ f32(N),radicalInverse_VdC(i));}\nfn log4(x: f32)->f32 {return log2(x)/2.;}\nconst NUM_SAMPLES_FLOAT: f32= f32(NUM_SAMPLES);const NUM_SAMPLES_FLOAT_INVERSED: f32=1./NUM_SAMPLES_FLOAT;const K: f32=4.;fn irradiance(inputTexture: texture_cube<f32>,inputSampler: sampler,inputN: vec3f,filteringInfo: vec2f)->vec3f\n{var n: vec3f=normalize(inputN);var result: vec3f= vec3f(0.0);var tangent: vec3f=select(vec3f(1.,0.,0.),vec3f(0.,0.,1.),abs(n.z)<0.999);tangent=normalize(cross(tangent,n));var bitangent: vec3f=cross(n,tangent);var tbn: mat3x3f= mat3x3f(tangent,bitangent,n);var maxLevel: f32=filteringInfo.y;var dim0: f32=filteringInfo.x;var omegaP: f32=(4.*PI)/(6.*dim0*dim0);for(var i: u32=0u; i<NUM_SAMPLES; i++)\n{var Xi: vec2f=hammersley(i,NUM_SAMPLES);var Ls: vec3f=hemisphereCosSample(Xi);Ls=normalize(Ls);var Ns: vec3f= vec3f(0.,0.,1.);var NoL: f32=dot(Ns,Ls);if (NoL>0.) {var pdf_inversed: f32=PI/NoL;var omegaS: f32=NUM_SAMPLES_FLOAT_INVERSED*pdf_inversed;var l: f32=log4(omegaS)-log4(omegaP)+log4(K);var mipLevel: f32=clamp(l,0.0,maxLevel);var c: vec3f=textureSampleLevel(inputTexture,inputSampler,tbn*Ls,mipLevel).rgb;\n#ifdef GAMMA_INPUT\nc=toLinearSpaceVec3(c);\n#endif\nresult+=c;}}\nresult=result*NUM_SAMPLES_FLOAT_INVERSED;return result;}\nfn radiance(alphaG: f32,inputTexture: texture_cube<f32>,inputSampler: sampler,inputN: vec3f,filteringInfo: vec2f)->vec3f\n{var n: vec3f=normalize(inputN);var c: vec3f=textureSample(inputTexture,inputSampler,n).rgb; \nif (alphaG==0.) {\n#ifdef GAMMA_INPUT\nc=toLinearSpace(c);\n#endif\nreturn c;} else {var result: vec3f= vec3f(0.);var tangent: vec3f=select(vec3f(1.,0.,0.),vec3f(0.,0.,1.),abs(n.z)<0.999);tangent=normalize(cross(tangent,n));var bitangent: vec3f=cross(n,tangent);var tbn: mat3x3f= mat3x3f(tangent,bitangent,n);var maxLevel: f32=filteringInfo.y;var dim0: f32=filteringInfo.x;var omegaP: f32=(4.*PI)/(6.*dim0*dim0);var weight: f32=0.;for(var i: u32=0u; i<NUM_SAMPLES; i++)\n{var Xi: vec2f=hammersley(i,NUM_SAMPLES);var H: vec3f=hemisphereImportanceSampleDggx(Xi,alphaG);var NoV: f32=1.;var NoH: f32=H.z;var NoH2: f32=H.z*H.z;var NoL: f32=2.*NoH2-1.;var L: vec3f= vec3f(2.*NoH*H.x,2.*NoH*H.y,NoL);L=normalize(L);if (NoL>0.) {var pdf_inversed: f32=4./normalDistributionFunction_TrowbridgeReitzGGX(NoH,alphaG);var omegaS: f32=NUM_SAMPLES_FLOAT_INVERSED*pdf_inversed;var l: f32=log4(omegaS)-log4(omegaP)+log4(K);var mipLevel: f32=clamp( f32(l),0.0,maxLevel);weight+=NoL;var c: vec3f=textureSampleLevel(inputTexture,inputSampler,tbn*L,mipLevel).rgb;\n#ifdef GAMMA_INPUT\nc=toLinearSpace(c);\n#endif\nresult+=c*NoL;}}\nresult=result/weight;return result;}}\n#endif\n#endif\n";r(1642).v.IncludesShadersStoreWGSL[f]=a},9721:(e,n,r)=>{const f="importanceSampling",a="fn hemisphereCosSample(u: vec2f)->vec3f {var phi: f32=2.*PI*u.x;var cosTheta2: f32=1.-u.y;var cosTheta: f32=sqrt(cosTheta2);var sinTheta: f32=sqrt(1.-cosTheta2);return vec3f(sinTheta*cos(phi),sinTheta*sin(phi),cosTheta);}\nfn hemisphereImportanceSampleDggx(u: vec2f,a: f32)->vec3f {var phi: f32=2.*PI*u.x;var cosTheta2: f32=(1.-u.y)/(1.+(a+1.)*((a-1.)*u.y));var cosTheta: f32=sqrt(cosTheta2);var sinTheta: f32=sqrt(1.-cosTheta2);return vec3f(sinTheta*cos(phi),sinTheta*sin(phi),cosTheta);}\nfn hemisphereImportanceSampleDCharlie(u: vec2f,a: f32)->vec3f { \nvar phi: f32=2.*PI*u.x;var sinTheta: f32=pow(u.y,a/(2.*a+1.));var cosTheta: f32=sqrt(1.-sinTheta*sinTheta);return vec3f(sinTheta*cos(phi),sinTheta*sin(phi),cosTheta);}";r(1642).v.IncludesShadersStoreWGSL[f]=a},9824:(e,n,r)=>{const f="pbrBRDFFunctions",a="#define FRESNEL_MAXIMUM_ON_ROUGH 0.25\n#ifdef MS_BRDF_ENERGY_CONSERVATION\nfn getEnergyConservationFactor(specularEnvironmentR0: vec3f,environmentBrdf: vec3f)->vec3f {return 1.0+specularEnvironmentR0*(1.0/environmentBrdf.y-1.0);}\n#endif\n#ifdef ENVIRONMENTBRDF\nfn getBRDFLookup(NdotV: f32,perceptualRoughness: f32)->vec3f {var UV: vec2f= vec2f(NdotV,perceptualRoughness);var brdfLookup: vec4f= textureSample(environmentBrdfSampler,environmentBrdfSamplerSampler,UV);\n#ifdef ENVIRONMENTBRDF_RGBD\nbrdfLookup=vec4f(fromRGBD(brdfLookup.rgba),brdfLookup.a);\n#endif\nreturn brdfLookup.rgb;}\nfn getReflectanceFromBRDFWithEnvLookup(specularEnvironmentR0: vec3f,specularEnvironmentR90: vec3f,environmentBrdf: vec3f)->vec3f {\n#ifdef BRDF_V_HEIGHT_CORRELATED\nvar reflectance: vec3f=(specularEnvironmentR90-specularEnvironmentR0)*environmentBrdf.x+specularEnvironmentR0*environmentBrdf.y;\n#else\nvar reflectance: vec3f=specularEnvironmentR0*environmentBrdf.x+specularEnvironmentR90*environmentBrdf.y;\n#endif\nreturn reflectance;}\nfn getReflectanceFromBRDFLookup(specularEnvironmentR0: vec3f,environmentBrdf: vec3f)->vec3f {\n#ifdef BRDF_V_HEIGHT_CORRELATED\nvar reflectance: vec3f=mix(environmentBrdf.xxx,environmentBrdf.yyy,specularEnvironmentR0);\n#else\nvar reflectance: vec3f=specularEnvironmentR0*environmentBrdf.x+environmentBrdf.y;\n#endif\nreturn reflectance;}\n#endif\n/* NOT USED\n#if defined(SHEEN) && defined(SHEEN_SOFTER)\nfn getBRDFLookupCharlieSheen(NdotV: f32,perceptualRoughness: f32)->f32\n{var c: f32=1.0-NdotV;var c3: f32=c*c*c;return 0.65584461*c3+1.0/(4.16526551+exp(-7.97291361*perceptualRoughness+6.33516894));}\n#endif\n*/\n#if !defined(ENVIRONMENTBRDF) || defined(REFLECTIONMAP_SKYBOX) || defined(ALPHAFRESNEL)\nfn getReflectanceFromAnalyticalBRDFLookup_Jones(VdotN: f32,reflectance0: vec3f,reflectance90: vec3f,smoothness: f32)->vec3f\n{var weight: f32=mix(FRESNEL_MAXIMUM_ON_ROUGH,1.0,smoothness);return reflectance0+weight*(reflectance90-reflectance0)*pow5(saturate(1.0-VdotN));}\n#endif\n#if defined(SHEEN) && defined(ENVIRONMENTBRDF)\n/**\n* The sheen BRDF not containing F can be easily stored in the blue channel of the BRDF texture.\n* The blue channel contains DCharlie*VAshikhmin*NdotL as a lokkup table\n*/\nfn getSheenReflectanceFromBRDFLookup(reflectance0: vec3f,environmentBrdf: vec3f)->vec3f {var sheenEnvironmentReflectance: vec3f=reflectance0*environmentBrdf.b;return sheenEnvironmentReflectance;}\n#endif\nfn fresnelSchlickGGXVec3(VdotH: f32,reflectance0: vec3f,reflectance90: vec3f)->vec3f\n{return reflectance0+(reflectance90-reflectance0)*pow5(1.0-VdotH);}\nfn fresnelSchlickGGX(VdotH: f32,reflectance0: f32,reflectance90: f32)->f32\n{return reflectance0+(reflectance90-reflectance0)*pow5(1.0-VdotH);}\n#ifdef CLEARCOAT\nfn getR0RemappedForClearCoat(f0: vec3f)->vec3f {\n#ifdef CLEARCOAT_DEFAULTIOR\n#ifdef MOBILE\nreturn saturateVec3(f0*(f0*0.526868+0.529324)-0.0482256);\n#else\nreturn saturateVec3(f0*(f0*(0.941892-0.263008*f0)+0.346479)-0.0285998);\n#endif\n#else\nvar s: vec3f=sqrt(f0);var t: vec3f=(uniforms.vClearCoatRefractionParams.z+uniforms.vClearCoatRefractionParams.w*s)/(uniforms.vClearCoatRefractionParams.w+uniforms.vClearCoatRefractionParams.z*s);return squareVec3(t);\n#endif\n}\n#endif\n#ifdef IRIDESCENCE\nconst XYZ_TO_REC709: mat3x3f= mat3x3f(\n3.2404542,-0.9692660, 0.0556434,\n-1.5371385, 1.8760108,-0.2040259,\n-0.4985314, 0.0415560, 1.0572252\n);fn getIORTfromAirToSurfaceR0(f0: vec3f)->vec3f {var sqrtF0: vec3f=sqrt(f0);return (1.+sqrtF0)/(1.-sqrtF0);}\nfn getR0fromIORsVec3(iorT: vec3f,iorI: f32)->vec3f {return squareVec3((iorT- vec3f(iorI))/(iorT+ vec3f(iorI)));}\nfn getR0fromIORs(iorT: f32,iorI: f32)->f32 {return square((iorT-iorI)/(iorT+iorI));}\nfn evalSensitivity(opd: f32,shift: vec3f)->vec3f {var phase: f32=2.0*PI*opd*1.0e-9;const val: vec3f= vec3f(5.4856e-13,4.4201e-13,5.2481e-13);const pos: vec3f= vec3f(1.6810e+06,1.7953e+06,2.2084e+06);const vr: vec3f= vec3f(4.3278e+09,9.3046e+09,6.6121e+09);var xyz: vec3f=val*sqrt(2.0*PI*vr)*cos(pos*phase+shift)*exp(-square(phase)*vr);xyz.x+=9.7470e-14*sqrt(2.0*PI*4.5282e+09)*cos(2.2399e+06*phase+shift[0])*exp(-4.5282e+09*square(phase));xyz/=1.0685e-7;var srgb: vec3f=XYZ_TO_REC709*xyz;return srgb;}\nfn evalIridescence(outsideIOR: f32,eta2: f32,cosTheta1: f32,thinFilmThickness: f32,baseF0: vec3f)->vec3f {var I: vec3f= vec3f(1.0);var iridescenceIOR: f32=mix(outsideIOR,eta2,smoothstep(0.0,0.03,thinFilmThickness));var sinTheta2Sq: f32=square(outsideIOR/iridescenceIOR)*(1.0-square(cosTheta1));var cosTheta2Sq: f32=1.0-sinTheta2Sq;if (cosTheta2Sq<0.0) {return I;}\nvar cosTheta2: f32=sqrt(cosTheta2Sq);var R0: f32=getR0fromIORs(iridescenceIOR,outsideIOR);var R12: f32=fresnelSchlickGGX(cosTheta1,R0,1.);var R21: f32=R12;var T121: f32=1.0-R12;var phi12: f32=0.0;if (iridescenceIOR<outsideIOR) {phi12=PI;}\nvar phi21: f32=PI-phi12;var baseIOR: vec3f=getIORTfromAirToSurfaceR0(clamp(baseF0,vec3f(0.0),vec3f(0.9999))); \nvar R1: vec3f=getR0fromIORsVec3(baseIOR,iridescenceIOR);var R23: vec3f=fresnelSchlickGGXVec3(cosTheta2,R1, vec3f(1.));var phi23: vec3f= vec3f(0.0);if (baseIOR[0]<iridescenceIOR) {phi23[0]=PI;}\nif (baseIOR[1]<iridescenceIOR) {phi23[1]=PI;}\nif (baseIOR[2]<iridescenceIOR) {phi23[2]=PI;}\nvar opd: f32=2.0*iridescenceIOR*thinFilmThickness*cosTheta2;var phi: vec3f= vec3f(phi21)+phi23;var R123: vec3f=clamp(R12*R23,vec3f(1e-5),vec3f(0.9999));var r123: vec3f=sqrt(R123);var Rs: vec3f=(T121*T121)*R23/( vec3f(1.0)-R123);var C0: vec3f=R12+Rs;I=C0;var Cm: vec3f=Rs-T121;for (var m: i32=1; m<=2; m++)\n{Cm*=r123;var Sm: vec3f=2.0*evalSensitivity( f32(m)*opd, f32(m)*phi);I+=Cm*Sm;}\nreturn max(I, vec3f(0.0));}\n#endif\nfn normalDistributionFunction_TrowbridgeReitzGGX(NdotH: f32,alphaG: f32)->f32\n{var a2: f32=alphaG*alphaG;var d: f32=NdotH*NdotH*(a2-1.0)+1.0;return a2/(PI*d*d);}\n#ifdef SHEEN\nfn normalDistributionFunction_CharlieSheen(NdotH: f32,alphaG: f32)->f32\n{var invR: f32=1./alphaG;var cos2h: f32=NdotH*NdotH;var sin2h: f32=1.-cos2h;return (2.+invR)*pow(sin2h,invR*.5)/(2.*PI);}\n#endif\n#ifdef ANISOTROPIC\nfn normalDistributionFunction_BurleyGGX_Anisotropic(NdotH: f32,TdotH: f32,BdotH: f32,alphaTB: vec2f)->f32 {var a2: f32=alphaTB.x*alphaTB.y;var v: vec3f= vec3f(alphaTB.y*TdotH,alphaTB.x *BdotH,a2*NdotH);var v2: f32=dot(v,v);var w2: f32=a2/v2;return a2*w2*w2*RECIPROCAL_PI;}\n#endif\n#ifdef BRDF_V_HEIGHT_CORRELATED\nfn smithVisibility_GGXCorrelated(NdotL: f32,NdotV: f32,alphaG: f32)->f32 {\n#ifdef MOBILE\nvar GGXV: f32=NdotL*(NdotV*(1.0-alphaG)+alphaG);var GGXL: f32=NdotV*(NdotL*(1.0-alphaG)+alphaG);return 0.5/(GGXV+GGXL);\n#else\nvar a2: f32=alphaG*alphaG;var GGXV: f32=NdotL*sqrt(NdotV*(NdotV-a2*NdotV)+a2);var GGXL: f32=NdotV*sqrt(NdotL*(NdotL-a2*NdotL)+a2);return 0.5/(GGXV+GGXL);\n#endif\n}\n#else\nfn smithVisibilityG1_TrowbridgeReitzGGXFast(dot: f32,alphaG: f32)->f32\n{\n#ifdef MOBILE\nreturn 1.0/(dot+alphaG+(1.0-alphaG)*dot ));\n#else\nvar alphaSquared: f32=alphaG*alphaG;return 1.0/(dot+sqrt(alphaSquared+(1.0-alphaSquared)*dot*dot));\n#endif\n}\nfn smithVisibility_TrowbridgeReitzGGXFast(NdotL: f32,NdotV: f32,alphaG: f32)->f32\n{var visibility: f32=smithVisibilityG1_TrowbridgeReitzGGXFast(NdotL,alphaG)*smithVisibilityG1_TrowbridgeReitzGGXFast(NdotV,alphaG);return visibility;}\n#endif\n#ifdef ANISOTROPIC\nfn smithVisibility_GGXCorrelated_Anisotropic(NdotL: f32,NdotV: f32,TdotV: f32,BdotV: f32,TdotL: f32,BdotL: f32,alphaTB: vec2f)->f32 {var lambdaV: f32=NdotL*length( vec3f(alphaTB.x*TdotV,alphaTB.y*BdotV,NdotV));var lambdaL: f32=NdotV*length( vec3f(alphaTB.x*TdotL,alphaTB.y*BdotL,NdotL));var v: f32=0.5/(lambdaV+lambdaL);return v;}\n#endif\n#ifdef CLEARCOAT\nfn visibility_Kelemen(VdotH: f32)->f32 {return 0.25/(VdotH*VdotH); }\n#endif\n#ifdef SHEEN\nfn visibility_Ashikhmin(NdotL: f32,NdotV: f32)->f32\n{return 1./(4.*(NdotL+NdotV-NdotL*NdotV));}\n/* NOT USED\n#ifdef SHEEN_SOFTER\nfn l(x: f32,alphaG: f32)->f32\n{var oneMinusAlphaSq: f32=(1.0-alphaG)*(1.0-alphaG);var a: f32=mix(21.5473,25.3245,oneMinusAlphaSq);var b: f32=mix(3.82987,3.32435,oneMinusAlphaSq);var c: f32=mix(0.19823,0.16801,oneMinusAlphaSq);var d: f32=mix(-1.97760,-1.27393,oneMinusAlphaSq);var e: f32=mix(-4.32054,-4.85967,oneMinusAlphaSq);return a/(1.0+b*pow(x,c))+d*x+e;}\nfn lambdaSheen(cosTheta: f32,alphaG: f32)->f32\n{return abs(cosTheta)<0.5 ? exp(l(cosTheta,alphaG)) : exp(2.0*l(0.5,alphaG)-l(1.0-cosTheta,alphaG));}\nfn visibility_CharlieSheen(NdotL: f32,NdotV: f32,alphaG: f32)->f32\n{var G: f32=1.0/(1.0+lambdaSheen(NdotV,alphaG)+lambdaSheen(NdotL,alphaG));return G/(4.0*NdotV*NdotL);}\n#endif\n*/\n#endif\nfn diffuseBRDF_Burley(NdotL: f32,NdotV: f32,VdotH: f32,roughness: f32)->f32 {var diffuseFresnelNV: f32=pow5(saturateEps(1.0-NdotL));var diffuseFresnelNL: f32=pow5(saturateEps(1.0-NdotV));var diffuseFresnel90: f32=0.5+2.0*VdotH*VdotH*roughness;var fresnel: f32 =\n(1.0+(diffuseFresnel90-1.0)*diffuseFresnelNL) *\n(1.0+(diffuseFresnel90-1.0)*diffuseFresnelNV);return fresnel/PI;}\n#ifdef SS_TRANSLUCENCY\nfn transmittanceBRDF_Burley(tintColor: vec3f,diffusionDistance: vec3f,thickness: f32)->vec3f {var S: vec3f=1./maxEpsVec3(diffusionDistance);var temp: vec3f=exp((-0.333333333*thickness)*S);return tintColor.rgb*0.25*(temp*temp*temp+3.0*temp);}\nfn computeWrappedDiffuseNdotL(NdotL: f32,w: f32)->f32 {var t: f32=1.0+w;var invt2: f32=1.0/(t*t);return saturate((NdotL+w)*invt2);}\n#endif\n";r(1642).v.IncludesShadersStoreWGSL[f]=a},1801:(e,n,r)=>{r.r(n),r.d(n,{hdrFilteringPixelShaderWGSL:()=>i});var f=r(1642);r(563),r(9721),r(9824),r(5259);const a="hdrFilteringPixelShader",t="#include<helperFunctions>\n#include<importanceSampling>\n#include<pbrBRDFFunctions>\n#include<hdrFilteringFunctions>\nuniform alphaG: f32;var inputTextureSampler: sampler;var inputTexture: texture_cube<f32>;uniform vFilteringInfo: vec2f;uniform hdrScale: f32;varying direction: vec3f;@fragment\nfn main(input: FragmentInputs)->FragmentOutputs {var color: vec3f=radiance(uniforms.alphaG,inputTexture,inputTextureSampler,input.direction,uniforms.vFilteringInfo);fragmentOutputs.color= vec4f(color*uniforms.hdrScale,1.0);}";f.v.ShadersStoreWGSL[a]=t;const i={name:a,shader:t}}}]);
@@ -0,0 +1 @@
1
+ /*! filename:1801 */
@@ -1,2 +1,2 @@
1
- /*! For license information please see 5555.real-time-viewer.umd.min.js.LICENSE.txt */
2
- "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[5555],{5555:(e,t,n)=>{n.r(t),n.d(t,{postprocessVertexShaderWGSL:()=>i});const s="postprocessVertexShader",r="attribute position: vec2<f32>;uniform scale: vec2<f32>;varying vUV: vec2<f32>;const madd=vec2(0.5,0.5);\n#define CUSTOM_VERTEX_DEFINITIONS\n@vertex\nfn main(input : VertexInputs)->FragmentInputs {\n#define CUSTOM_VERTEX_MAIN_BEGIN\nvertexOutputs.vUV=(vertexInputs.position*madd+madd)*uniforms.scale;vertexOutputs.position=vec4(vertexInputs.position,0.0,1.0);\n#define CUSTOM_VERTEX_MAIN_END\n}\n";n(7416).v.ShadersStoreWGSL[s]=r;const i={name:s,shader:r}}}]);
1
+ /*! For license information please see 2001.real-time-viewer.umd.min.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[2001],{2001:(e,t,n)=>{n.r(t),n.d(t,{postprocessVertexShaderWGSL:()=>i});const s="postprocessVertexShader",r="attribute position: vec2<f32>;uniform scale: vec2<f32>;varying vUV: vec2<f32>;const madd=vec2(0.5,0.5);\n#define CUSTOM_VERTEX_DEFINITIONS\n@vertex\nfn main(input : VertexInputs)->FragmentInputs {\n#define CUSTOM_VERTEX_MAIN_BEGIN\nvertexOutputs.vUV=(vertexInputs.position*madd+madd)*uniforms.scale;vertexOutputs.position=vec4(vertexInputs.position,0.0,1.0);\n#define CUSTOM_VERTEX_MAIN_END\n}\n";n(1642).v.ShadersStoreWGSL[s]=r;const i={name:s,shader:r}}}]);
@@ -0,0 +1 @@
1
+ /*! filename:2001 */