@crystaldesign/real-time-viewer 25.9.0-beta.39 → 25.9.0-beta.40

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 (248) hide show
  1. package/build/esm/index.js +138 -125
  2. package/build/types/real-time-viewer/src/CustomMaterial/index.d.ts.map +1 -1
  3. package/build/types/real-time-viewer/src/index.d.ts.map +1 -1
  4. package/build/types/real-time-viewer/src/parser/findAssets/index.d.ts.map +1 -1
  5. package/build/types/real-time-viewer/src/store/SceneStore.d.ts +1 -2
  6. package/build/types/real-time-viewer/src/store/SceneStore.d.ts.map +1 -1
  7. package/build/types/real-time-viewer/src/store/UIStore.d.ts.map +1 -1
  8. package/build/types/real-time-viewer/src/useRealTimeRenderData.d.ts.map +1 -1
  9. package/build/umd/1020.real-time-viewer.umd.min.js +2 -0
  10. package/build/umd/1020.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  11. package/build/umd/1153.real-time-viewer.umd.min.js +2 -0
  12. package/build/umd/1153.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  13. package/build/umd/1309.real-time-viewer.umd.min.js +1 -1
  14. package/build/umd/1447.real-time-viewer.umd.min.js +1 -1
  15. package/build/umd/1459.real-time-viewer.umd.min.js +2 -0
  16. package/build/umd/1459.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  17. package/build/umd/1499.real-time-viewer.umd.min.js +1 -1
  18. package/build/umd/1510.real-time-viewer.umd.min.js +2 -0
  19. package/build/umd/1510.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  20. package/build/umd/1605.real-time-viewer.umd.min.js +2 -0
  21. package/build/umd/1605.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  22. package/build/umd/1781.real-time-viewer.umd.min.js +1 -1
  23. package/build/umd/1887.real-time-viewer.umd.min.js +2 -0
  24. package/build/umd/1887.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  25. package/build/umd/1924.real-time-viewer.umd.min.js +1 -1
  26. package/build/umd/2011.real-time-viewer.umd.min.js +1 -1
  27. package/build/umd/2265.real-time-viewer.umd.min.js +2 -0
  28. package/build/umd/2265.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  29. package/build/umd/2371.real-time-viewer.umd.min.js +2 -0
  30. package/build/umd/2371.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  31. package/build/umd/2439.real-time-viewer.umd.min.js +1 -1
  32. package/build/umd/2517.real-time-viewer.umd.min.js +2 -0
  33. package/build/umd/2517.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  34. package/build/umd/2528.real-time-viewer.umd.min.js +2 -0
  35. package/build/umd/2528.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  36. package/build/umd/2619.real-time-viewer.umd.min.js +2 -0
  37. package/build/umd/2619.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  38. package/build/umd/2668.real-time-viewer.umd.min.js +2 -0
  39. package/build/umd/2668.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  40. package/build/umd/2760.real-time-viewer.umd.min.js +2 -0
  41. package/build/umd/2760.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  42. package/build/umd/2782.real-time-viewer.umd.min.js +2 -0
  43. package/build/umd/2782.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  44. package/build/umd/2795.real-time-viewer.umd.min.js +2 -0
  45. package/build/umd/2795.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  46. package/build/umd/2817.real-time-viewer.umd.min.js +1 -1
  47. package/build/umd/2871.real-time-viewer.umd.min.js +1 -1
  48. package/build/umd/3040.real-time-viewer.umd.min.js +2 -0
  49. package/build/umd/3040.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  50. package/build/umd/3116.real-time-viewer.umd.min.js +1 -1
  51. package/build/umd/3219.real-time-viewer.umd.min.js +2 -0
  52. package/build/umd/3219.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  53. package/build/umd/3242.real-time-viewer.umd.min.js +2 -0
  54. package/build/umd/3242.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  55. package/build/umd/3296.real-time-viewer.umd.min.js +2 -0
  56. package/build/umd/3296.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  57. package/build/umd/3330.real-time-viewer.umd.min.js +2 -0
  58. package/build/umd/3330.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  59. package/build/umd/3351.real-time-viewer.umd.min.js +1 -1
  60. package/build/umd/3420.real-time-viewer.umd.min.js +2 -0
  61. package/build/umd/3420.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  62. package/build/umd/3436.real-time-viewer.umd.min.js +2 -0
  63. package/build/umd/3436.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  64. package/build/umd/3439.real-time-viewer.umd.min.js +2 -0
  65. package/build/umd/3439.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  66. package/build/umd/3456.real-time-viewer.umd.min.js +1 -1
  67. package/build/umd/3652.real-time-viewer.umd.min.js +2 -0
  68. package/build/umd/3652.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  69. package/build/umd/377.real-time-viewer.umd.min.js +2 -0
  70. package/build/umd/377.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  71. package/build/umd/3839.real-time-viewer.umd.min.js +2 -0
  72. package/build/umd/3839.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  73. package/build/umd/3917.real-time-viewer.umd.min.js +2 -0
  74. package/build/umd/3917.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  75. package/build/umd/3945.real-time-viewer.umd.min.js +1 -1
  76. package/build/umd/4049.real-time-viewer.umd.min.js +2 -0
  77. package/build/umd/4049.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  78. package/build/umd/4051.real-time-viewer.umd.min.js +2 -0
  79. package/build/umd/4051.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  80. package/build/umd/4091.real-time-viewer.umd.min.js +1 -1
  81. package/build/umd/410.real-time-viewer.umd.min.js +1 -1
  82. package/build/umd/4141.real-time-viewer.umd.min.js +2 -0
  83. package/build/umd/4141.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  84. package/build/umd/4153.real-time-viewer.umd.min.js +1 -1
  85. package/build/umd/4248.real-time-viewer.umd.min.js +1 -1
  86. package/build/umd/4358.real-time-viewer.umd.min.js +2 -0
  87. package/build/umd/4358.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  88. package/build/umd/4378.real-time-viewer.umd.min.js +1 -1
  89. package/build/umd/4431.real-time-viewer.umd.min.js +1 -1
  90. package/build/umd/4478.real-time-viewer.umd.min.js +2 -0
  91. package/build/umd/4478.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  92. package/build/umd/4486.real-time-viewer.umd.min.js +2 -0
  93. package/build/umd/4486.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  94. package/build/umd/4555.real-time-viewer.umd.min.js +2 -0
  95. package/build/umd/4555.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  96. package/build/umd/4560.real-time-viewer.umd.min.js +2 -0
  97. package/build/umd/4560.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  98. package/build/umd/4602.real-time-viewer.umd.min.js +1 -1
  99. package/build/umd/4623.real-time-viewer.umd.min.js +2 -0
  100. package/build/umd/4623.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  101. package/build/umd/4661.real-time-viewer.umd.min.js +1 -1
  102. package/build/umd/4667.real-time-viewer.umd.min.js +2 -0
  103. package/build/umd/4667.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  104. package/build/umd/4669.real-time-viewer.umd.min.js +1 -1
  105. package/build/umd/4711.real-time-viewer.umd.min.js +1 -1
  106. package/build/umd/4806.real-time-viewer.umd.min.js +2 -0
  107. package/build/umd/4806.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  108. package/build/umd/4823.real-time-viewer.umd.min.js +1 -1
  109. package/build/umd/4953.real-time-viewer.umd.min.js +2 -0
  110. package/build/umd/4953.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  111. package/build/umd/5197.real-time-viewer.umd.min.js +2 -0
  112. package/build/umd/5197.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  113. package/build/umd/539.real-time-viewer.umd.min.js +2 -0
  114. package/build/umd/539.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  115. package/build/umd/5462.real-time-viewer.umd.min.js +1 -1
  116. package/build/umd/5477.real-time-viewer.umd.min.js +2 -0
  117. package/build/umd/5477.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  118. package/build/umd/5483.real-time-viewer.umd.min.js +1 -1
  119. package/build/umd/5555.real-time-viewer.umd.min.js +1 -1
  120. package/build/umd/5645.real-time-viewer.umd.min.js +2 -0
  121. package/build/umd/5645.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  122. package/build/umd/5650.real-time-viewer.umd.min.js +2 -0
  123. package/build/umd/5650.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  124. package/build/umd/5746.real-time-viewer.umd.min.js +2 -0
  125. package/build/umd/5746.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  126. package/build/umd/5779.real-time-viewer.umd.min.js +2 -0
  127. package/build/umd/5779.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  128. package/build/umd/5846.real-time-viewer.umd.min.js +1 -1
  129. package/build/umd/5860.real-time-viewer.umd.min.js +1 -1
  130. package/build/umd/5880.real-time-viewer.umd.min.js +2 -0
  131. package/build/umd/5880.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  132. package/build/umd/5922.real-time-viewer.umd.min.js +1 -1
  133. package/build/umd/5925.real-time-viewer.umd.min.js +2 -0
  134. package/build/umd/5925.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  135. package/build/umd/6030.real-time-viewer.umd.min.js +2 -0
  136. package/build/umd/6030.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  137. package/build/umd/6095.real-time-viewer.umd.min.js +1 -1
  138. package/build/umd/6126.real-time-viewer.umd.min.js +2 -0
  139. package/build/umd/6126.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  140. package/build/umd/615.real-time-viewer.umd.min.js +1 -1
  141. package/build/umd/6169.real-time-viewer.umd.min.js +2 -0
  142. package/build/umd/6169.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  143. package/build/umd/6182.real-time-viewer.umd.min.js +2 -0
  144. package/build/umd/6182.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  145. package/build/umd/6230.real-time-viewer.umd.min.js +1 -1
  146. package/build/umd/6288.real-time-viewer.umd.min.js +2 -0
  147. package/build/umd/6288.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  148. package/build/umd/6357.real-time-viewer.umd.min.js +1 -1
  149. package/build/umd/653.real-time-viewer.umd.min.js +1 -1
  150. package/build/umd/6656.real-time-viewer.umd.min.js +1 -1
  151. package/build/umd/6728.real-time-viewer.umd.min.js +2 -0
  152. package/build/umd/6728.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  153. package/build/umd/6746.real-time-viewer.umd.min.js +2 -0
  154. package/build/umd/6746.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  155. package/build/umd/6748.real-time-viewer.umd.min.js +2 -0
  156. package/build/umd/6748.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  157. package/build/umd/6761.real-time-viewer.umd.min.js +2 -0
  158. package/build/umd/6761.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  159. package/build/umd/6829.real-time-viewer.umd.min.js +1 -1
  160. package/build/umd/6954.real-time-viewer.umd.min.js +2 -0
  161. package/build/umd/6954.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  162. package/build/umd/7038.real-time-viewer.umd.min.js +2 -0
  163. package/build/umd/7038.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  164. package/build/umd/7042.real-time-viewer.umd.min.js +1 -1
  165. package/build/umd/710.real-time-viewer.umd.min.js +1 -1
  166. package/build/umd/7142.real-time-viewer.umd.min.js +1 -1
  167. package/build/umd/7154.real-time-viewer.umd.min.js +2 -0
  168. package/build/umd/7154.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  169. package/build/umd/7229.real-time-viewer.umd.min.js +1 -1
  170. package/build/umd/7352.real-time-viewer.umd.min.js +1 -1
  171. package/build/umd/7501.real-time-viewer.umd.min.js +1 -1
  172. package/build/umd/7540.real-time-viewer.umd.min.js +2 -0
  173. package/build/umd/7540.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  174. package/build/umd/7607.real-time-viewer.umd.min.js +1 -1
  175. package/build/umd/7615.real-time-viewer.umd.min.js +2 -0
  176. package/build/umd/7615.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  177. package/build/umd/7635.real-time-viewer.umd.min.js +2 -0
  178. package/build/umd/7635.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  179. package/build/umd/7647.real-time-viewer.umd.min.js +2 -0
  180. package/build/umd/7647.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  181. package/build/umd/7664.real-time-viewer.umd.min.js +2 -0
  182. package/build/umd/7664.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  183. package/build/umd/7729.real-time-viewer.umd.min.js +1 -1
  184. package/build/umd/7736.real-time-viewer.umd.min.js +2 -0
  185. package/build/umd/7736.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  186. package/build/umd/7751.real-time-viewer.umd.min.js +1 -1
  187. package/build/umd/7754.real-time-viewer.umd.min.js +1 -1
  188. package/build/umd/781.real-time-viewer.umd.min.js +2 -0
  189. package/build/umd/781.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  190. package/build/umd/8078.real-time-viewer.umd.min.js +1 -1
  191. package/build/umd/8105.real-time-viewer.umd.min.js +1 -1
  192. package/build/umd/815.real-time-viewer.umd.min.js +1 -1
  193. package/build/umd/8180.real-time-viewer.umd.min.js +2 -0
  194. package/build/umd/8180.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  195. package/build/umd/8240.real-time-viewer.umd.min.js +1 -1
  196. package/build/umd/8254.real-time-viewer.umd.min.js +2 -0
  197. package/build/umd/8254.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  198. package/build/umd/8333.real-time-viewer.umd.min.js +1 -1
  199. package/build/umd/8588.real-time-viewer.umd.min.js +2 -0
  200. package/build/umd/8588.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  201. package/build/umd/8620.real-time-viewer.umd.min.js +1 -1
  202. package/build/umd/8627.real-time-viewer.umd.min.js +2 -0
  203. package/build/umd/8627.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  204. package/build/umd/8645.real-time-viewer.umd.min.js +2 -0
  205. package/build/umd/8645.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  206. package/build/umd/8728.real-time-viewer.umd.min.js +1 -1
  207. package/build/umd/8729.real-time-viewer.umd.min.js +1 -1
  208. package/build/umd/8954.real-time-viewer.umd.min.js +2 -0
  209. package/build/umd/8954.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  210. package/build/umd/8991.real-time-viewer.umd.min.js +1 -1
  211. package/build/umd/9078.real-time-viewer.umd.min.js +1 -1
  212. package/build/umd/913.real-time-viewer.umd.min.js +1 -1
  213. package/build/umd/930.real-time-viewer.umd.min.js +1 -1
  214. package/build/umd/9383.real-time-viewer.umd.min.js +1 -1
  215. package/build/umd/9449.real-time-viewer.umd.min.js +2 -0
  216. package/build/umd/9449.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  217. package/build/umd/9487.real-time-viewer.umd.min.js +2 -0
  218. package/build/umd/9487.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  219. package/build/umd/9568.real-time-viewer.umd.min.js +1 -1
  220. package/build/umd/957.real-time-viewer.umd.min.js +2 -0
  221. package/build/umd/957.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  222. package/build/umd/9646.real-time-viewer.umd.min.js +2 -0
  223. package/build/umd/9646.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  224. package/build/umd/9712.real-time-viewer.umd.min.js +1 -1
  225. package/build/umd/9883.real-time-viewer.umd.min.js +2 -0
  226. package/build/umd/9883.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  227. package/build/umd/9884.real-time-viewer.umd.min.js +1 -1
  228. package/build/umd/9928.real-time-viewer.umd.min.js +2 -0
  229. package/build/umd/9928.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  230. package/build/umd/9990.real-time-viewer.umd.min.js +2 -0
  231. package/build/umd/9990.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  232. package/build/umd/real-time-viewer.umd.min.js +1 -1
  233. package/build/umd/report.html +1 -1
  234. package/package.json +13 -12
  235. package/build/umd/1896.real-time-viewer.umd.min.js +0 -2
  236. package/build/umd/1896.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  237. package/build/umd/3243.real-time-viewer.umd.min.js +0 -2
  238. package/build/umd/3243.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  239. package/build/umd/4542.real-time-viewer.umd.min.js +0 -2
  240. package/build/umd/4542.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  241. package/build/umd/5478.real-time-viewer.umd.min.js +0 -2
  242. package/build/umd/5478.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  243. package/build/umd/7046.real-time-viewer.umd.min.js +0 -2
  244. package/build/umd/7046.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  245. package/build/umd/7144.real-time-viewer.umd.min.js +0 -2
  246. package/build/umd/7144.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  247. package/build/umd/7276.real-time-viewer.umd.min.js +0 -2
  248. package/build/umd/7276.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
@@ -0,0 +1,2 @@
1
+ /*! For license information please see 3219.real-time-viewer.umd.min.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[3219],{13219:(o,a,t)=>{t.r(a),t.d(a,{FlowGraphBooleanToFloat:()=>FlowGraphBooleanToFloat,FlowGraphBooleanToInt:()=>FlowGraphBooleanToInt,FlowGraphFloatToBoolean:()=>FlowGraphFloatToBoolean,FlowGraphFloatToInt:()=>FlowGraphFloatToInt,FlowGraphIntToBoolean:()=>FlowGraphIntToBoolean,FlowGraphIntToFloat:()=>FlowGraphIntToFloat});var l=t(86562),e=t(39426),r=t(20538),n=t(234);class FlowGraphBooleanToFloat extends l.p{constructor(o){super(e.PE,e.ab,(o=>+o),"FlowGraphBooleanToFloat",o)}}(0,r.H7)("FlowGraphBooleanToFloat",FlowGraphBooleanToFloat);class FlowGraphBooleanToInt extends l.p{constructor(o){super(e.PE,e.fj,(o=>n.K.FromValue(+o)),"FlowGraphBooleanToInt",o)}}(0,r.H7)("FlowGraphBooleanToInt",FlowGraphBooleanToInt);class FlowGraphFloatToBoolean extends l.p{constructor(o){super(e.ab,e.PE,(o=>!!o),"FlowGraphFloatToBoolean",o)}}(0,r.H7)("FlowGraphFloatToBoolean",FlowGraphFloatToBoolean);class FlowGraphIntToBoolean extends l.p{constructor(o){super(e.fj,e.PE,(o=>!!o.value),"FlowGraphIntToBoolean",o)}}(0,r.H7)("FlowGraphIntToBoolean",FlowGraphIntToBoolean);class FlowGraphIntToFloat extends l.p{constructor(o){super(e.fj,e.ab,(o=>o.value),"FlowGraphIntToFloat",o)}}(0,r.H7)("FlowGraphIntToFloat",FlowGraphIntToFloat);class FlowGraphFloatToInt extends l.p{constructor(o){super(e.ab,e.fj,(a=>{const t=o?.roundingMode;switch(t){case"floor":return n.K.FromValue(Math.floor(a));case"ceil":return n.K.FromValue(Math.ceil(a));case"round":return n.K.FromValue(Math.round(a));default:return n.K.FromValue(a)}}),"FlowGraphFloatToInt",o)}}(0,r.H7)("FlowGraphFloatToInt",FlowGraphFloatToInt)},49492:(o,a,t)=>{t.d(a,{D:()=>FlowGraphCachedOperationBlock});var l=t(43890),e=t(39426);const r="cachedOperationValue",n="cachedExecutionId";class FlowGraphCachedOperationBlock extends l.A{constructor(o,a){super(a),this.value=this.registerDataOutput("value",o),this.isValid=this.registerDataOutput("isValid",e.PE)}_updateOutputs(o){const a=o._getExecutionVariable(this,n,-1),t=o._getExecutionVariable(this,r,null);if(null!=t&&a===o.executionId)this.isValid.setValue(!0,o),this.value.setValue(t,o);else try{const a=this._doOperation(o);if(null==a)return void this.isValid.setValue(!1,o);o._setExecutionVariable(this,r,a),o._setExecutionVariable(this,n,o.executionId),this.value.setValue(a,o),this.isValid.setValue(!0,o)}catch(a){this.isValid.setValue(!1,o)}}}},86562:(o,a,t)=>{t.d(a,{p:()=>FlowGraphUnaryOperationBlock});var l=t(49492);class FlowGraphUnaryOperationBlock extends l.D{constructor(o,a,t,l,e){super(a,e),this._operation=t,this._className=l,this.a=this.registerDataInput("a",o)}_doOperation(o){return this._operation(this.a.getValue(o))}getClassName(){return this._className}}}}]);
@@ -0,0 +1 @@
1
+ /*! filename:3219 */
@@ -0,0 +1,2 @@
1
+ /*! For license information please see 3242.real-time-viewer.umd.min.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[3242],{3242:(e,t,s)=>{s.r(t),s.d(t,{FlowGraphReceiveCustomEventBlock:()=>FlowGraphReceiveCustomEventBlock});var o=s(3274),n=s(88741),r=s(20538),i=s(44103);class FlowGraphReceiveCustomEventBlock extends o.N{constructor(e){super(e),this.config=e,this.initPriority=1;for(const e in this.config.eventData)this.registerDataOutput(e,this.config.eventData[e].type)}_preparePendingTasks(e){const t=e.configuration.coordinator.getCustomEventObservable(this.config.eventId);if(t&&t.hasObservers()&&t.observers.length>i.l.MaxEventsPerType)return void this._reportError(e,`FlowGraphReceiveCustomEventBlock: Too many observers for event ${this.config.eventId}. Max is ${i.l.MaxEventsPerType}.`);const s=t.add((t=>{const s=Object.keys(t);for(const o of s)this.getDataOutput(o)?.setValue(t[o],e);this._execute(e)}));e._setExecutionVariable(this,"_eventObserver",s)}_cancelPendingTasks(e){const t=e.configuration.coordinator.getCustomEventObservable(this.config.eventId);if(t){const s=e._getExecutionVariable(this,"_eventObserver",null);t.remove(s)}else n.w1.Warn(`FlowGraphReceiveCustomEventBlock: Missing observable for event ${this.config.eventId}`)}_executeEvent(e,t){return!0}getClassName(){return"FlowGraphReceiveCustomEventBlock"}}(0,r.H7)("FlowGraphReceiveCustomEventBlock",FlowGraphReceiveCustomEventBlock)}}]);
@@ -0,0 +1 @@
1
+ /*! filename:3242 */
@@ -0,0 +1,2 @@
1
+ /*! For license information please see 3296.real-time-viewer.umd.min.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[3296],{63296:(e,t,i)=>{i.r(t),i.d(t,{iblIcdfPixelShader:()=>r});var n=i(17416);i(65276);const c="iblIcdfPixelShader",o="precision highp sampler2D;\n#include<helperFunctions>\nvarying vec2 vUV;\n#ifdef IBL_USE_CUBE_MAP\nuniform samplerCube iblSource;\n#else\nuniform sampler2D iblSource;\n#endif\nuniform sampler2D scaledLuminanceSampler;uniform int iblWidth;uniform int iblHeight;uniform sampler2D cdfx;uniform sampler2D cdfy;float fetchLuminance(vec2 coords) {\n#ifdef IBL_USE_CUBE_MAP\nvec3 direction=equirectangularToCubemapDirection(coords);vec3 color=textureCubeLodEXT(iblSource,direction,0.0).rgb;\n#else\nvec3 color=textureLod(iblSource,coords,0.0).rgb;\n#endif\nreturn dot(color,LuminanceEncodeApprox);}\nfloat fetchCDFx(int x) { return texelFetch(cdfx,ivec2(x,0),0).x; }\nfloat bisectx(int size,float targetValue) {int a=0,b=size-1;while (b-a>1) {int c=a+b>>1;if (fetchCDFx(c)<targetValue)\na=c;else\nb=c;}\nreturn mix(float(a),float(b),\n(targetValue-fetchCDFx(a))/(fetchCDFx(b)-fetchCDFx(a))) /\nfloat(size-1);}\nfloat fetchCDFy(int y,int invocationId) {return texelFetch(cdfy,ivec2(invocationId,y),0).x;}\nfloat bisecty(int size,float targetValue,int invocationId) {int a=0,b=size-1;while (b-a>1) {int c=a+b>>1;if (fetchCDFy(c,invocationId)<targetValue)\na=c;else\nb=c;}\nreturn mix(float(a),float(b),\n(targetValue-fetchCDFy(a,invocationId)) /\n(fetchCDFy(b,invocationId)-fetchCDFy(a,invocationId))) /\nfloat(size-1);}\nvoid main(void) {ivec2 cdfxSize=textureSize(cdfx,0);int cdfWidth=cdfxSize.x;int icdfWidth=cdfWidth-1;ivec2 currentPixel=ivec2(gl_FragCoord.xy);vec3 outputColor=vec3(1.0);if (currentPixel.x==0) {outputColor.x=0.0;} else if (currentPixel.x==icdfWidth-1) {outputColor.x=1.0;} else {float targetValue=fetchCDFx(cdfWidth-1)*vUV.x;outputColor.x=bisectx(cdfWidth,targetValue);}\nivec2 cdfySize=textureSize(cdfy,0);int cdfHeight=cdfySize.y;if (currentPixel.y==0) {outputColor.y=0.0;} else if (currentPixel.y==cdfHeight-2) {outputColor.y=1.0;} else {float targetValue=fetchCDFy(cdfHeight-1,currentPixel.x)*vUV.y;outputColor.y=max(bisecty(cdfHeight,targetValue,currentPixel.x),0.0);}\nvec2 size=vec2(textureSize(scaledLuminanceSampler,0));float highestMip=floor(log2(size.x));float normalization=texture(scaledLuminanceSampler,vUV,highestMip).r;float pixelLuminance=fetchLuminance(vUV);outputColor.z=pixelLuminance/(2.0*PI*normalization);gl_FragColor=vec4(outputColor,1.0);}\n";n.v.ShadersStore[c]||(n.v.ShadersStore[c]=o);const r={name:c,shader:o}}}]);
@@ -0,0 +1 @@
1
+ /*! filename:3296 */
@@ -0,0 +1,2 @@
1
+ /*! For license information please see 3330.real-time-viewer.umd.min.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[3330],{73330:(e,a,t)=>{t.r(a),t.d(a,{FlowGraphBranchBlock:()=>FlowGraphBranchBlock});var r=t(39426),i=t(17693),s=t(20538);class FlowGraphBranchBlock extends i.Q{constructor(e){super(e),this.condition=this.registerDataInput("condition",r.PE),this.onTrue=this._registerSignalOutput("onTrue"),this.onFalse=this._registerSignalOutput("onFalse")}_execute(e){this.condition.getValue(e)?this.onTrue._activateSignal(e):this.onFalse._activateSignal(e)}getClassName(){return"FlowGraphBranchBlock"}}(0,s.H7)("FlowGraphBranchBlock",FlowGraphBranchBlock)}}]);
@@ -0,0 +1 @@
1
+ /*! filename:3330 */
@@ -1,2 +1,2 @@
1
1
  /*! For license information please see 3351.real-time-viewer.umd.min.js.LICENSE.txt */
2
- "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[3351],{6782:(e,n,r)=>{const t="kernelBlurVaryingDeclaration",a="varying sampleCoord{X}: vec2f;";r(7416).v.IncludesShadersStoreWGSL[t]=a},3351:(e,n,r)=>{r.r(n),r.d(n,{kernelBlurVertexShaderWGSL:()=>l});var t=r(7416);r(6782);const a="vertexOutputs.sampleCoord{X}=vertexOutputs.sampleCenter+uniforms.delta*KERNEL_OFFSET{X};";t.v.IncludesShadersStoreWGSL.kernelBlurVertex=a;const s="kernelBlurVertexShader",i="attribute position: vec2f;uniform delta: vec2f;varying sampleCenter: vec2f;\n#include<kernelBlurVaryingDeclaration>[0..varyingCount]\n#define CUSTOM_VERTEX_DEFINITIONS\n@vertex\nfn main(input : VertexInputs)->FragmentInputs {const madd: vec2f= vec2f(0.5,0.5);\n#define CUSTOM_VERTEX_MAIN_BEGIN\nvertexOutputs.sampleCenter=(input.position*madd+madd);\n#include<kernelBlurVertex>[0..varyingCount]\nvertexOutputs.position= vec4f(input.position,0.0,1.0);\n#define CUSTOM_VERTEX_MAIN_END\n}";t.v.ShadersStoreWGSL.kernelBlurVertexShader=i;const l={name:s,shader:i}}}]);
2
+ "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[3351],{36782:(e,r,n)=>{var t=n(17416);const a="kernelBlurVaryingDeclaration",s="varying sampleCoord{X}: vec2f;";t.v.IncludesShadersStoreWGSL[a]||(t.v.IncludesShadersStoreWGSL[a]=s)},83351:(e,r,n)=>{n.r(r),n.d(r,{kernelBlurVertexShaderWGSL:()=>u});var t=n(17416);n(36782);const a="vertexOutputs.sampleCoord{X}=vertexOutputs.sampleCenter+uniforms.delta*KERNEL_OFFSET{X};";t.v.IncludesShadersStoreWGSL.kernelBlurVertex||(t.v.IncludesShadersStoreWGSL.kernelBlurVertex=a);const s="kernelBlurVertexShader",l="attribute position: vec2f;uniform delta: vec2f;varying sampleCenter: vec2f;\n#include<kernelBlurVaryingDeclaration>[0..varyingCount]\n#define CUSTOM_VERTEX_DEFINITIONS\n@vertex\nfn main(input : VertexInputs)->FragmentInputs {const madd: vec2f= vec2f(0.5,0.5);\n#define CUSTOM_VERTEX_MAIN_BEGIN\nvertexOutputs.sampleCenter=(input.position*madd+madd);\n#include<kernelBlurVertex>[0..varyingCount]\nvertexOutputs.position= vec4f(input.position,0.0,1.0);\n#define CUSTOM_VERTEX_MAIN_END\n}";t.v.ShadersStoreWGSL.kernelBlurVertexShader||(t.v.ShadersStoreWGSL.kernelBlurVertexShader=l);const u={name:s,shader:l}}}]);
@@ -0,0 +1,2 @@
1
+ /*! For license information please see 3420.real-time-viewer.umd.min.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[3420],{13420:(e,t,s)=>{s.r(t),s.d(t,{FlowGraphContextBlock:()=>FlowGraphContextBlock});var a=s(43890),r=s(39426),l=s(20538);class FlowGraphContextBlock extends a.A{constructor(e){super(e),this.userVariables=this.registerDataOutput("userVariables",r.s8),this.executionId=this.registerDataOutput("executionId",r.ab)}_updateOutputs(e){this.userVariables.setValue(e.userVariables,e),this.executionId.setValue(e.executionId,e)}serialize(e){super.serialize(e)}getClassName(){return"FlowGraphContextBlock"}}(0,l.H7)("FlowGraphContextBlock",FlowGraphContextBlock)}}]);
@@ -0,0 +1 @@
1
+ /*! filename:3420 */
@@ -0,0 +1,2 @@
1
+ /*! For license information please see 3436.real-time-viewer.umd.min.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[3436],{43436:(t,a,e)=>{e.r(a),e.d(a,{FlowGraphConditionalDataBlock:()=>FlowGraphConditionalDataBlock});var o=e(43890),i=e(39426),s=e(20538);class FlowGraphConditionalDataBlock extends o.A{constructor(t){super(t),this.condition=this.registerDataInput("condition",i.PE),this.onTrue=this.registerDataInput("onTrue",i.s8),this.onFalse=this.registerDataInput("onFalse",i.s8),this.output=this.registerDataOutput("output",i.s8)}_updateOutputs(t){const a=this.condition.getValue(t);this.output.setValue(a?this.onTrue.getValue(t):this.onFalse.getValue(t),t)}getClassName(){return"FlowGraphConditionalBlock"}}(0,s.H7)("FlowGraphConditionalBlock",FlowGraphConditionalDataBlock)}}]);
@@ -0,0 +1 @@
1
+ /*! filename:3436 */
@@ -0,0 +1,2 @@
1
+ /*! For license information please see 3439.real-time-viewer.umd.min.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[3439],{43439:(e,t,a)=>{a.r(t),a.d(t,{FlowGraphSetDelayBlock:()=>FlowGraphSetDelayBlock});var l=a(96512),n=a(39426),i=a(51497),s=a(3146),r=a(20538),o=a(234);class FlowGraphSetDelayBlock extends l.g{constructor(e){super(e),this.cancel=this._registerSignalInput("cancel"),this.duration=this.registerDataInput("duration",n.ab),this.lastDelayIndex=this.registerDataOutput("lastDelayIndex",n.fj,new o.K(-1))}_preparePendingTasks(e){const t=this.duration.getValue(e);if(t<0||isNaN(t)||!isFinite(t))return this._reportError(e,"Invalid duration in SetDelay block");if(e._getGlobalContextVariable("activeDelays",0)>=FlowGraphSetDelayBlock.MaxParallelDelayCount)return this._reportError(e,"Max parallel delays reached");const a=e._getGlobalContextVariable("lastDelayIndex",-1),l=e._getExecutionVariable(this,"pendingDelays",[]),n=e.configuration.scene,s=new i.xb({timeout:1e3*t,contextObservable:n.onBeforeRenderObservable,onEnded:()=>this._onEnded(s,e)});s.start();const r=a+1;this.lastDelayIndex.setValue(new o.K(r),e),e._setGlobalContextVariable("lastDelayIndex",r),l[r]=s,e._setExecutionVariable(this,"pendingDelays",l),this._updateGlobalTimers(e)}_cancelPendingTasks(e){const t=e._getExecutionVariable(this,"pendingDelays",[]);for(const e of t)e?.dispose();e._deleteExecutionVariable(this,"pendingDelays"),this.lastDelayIndex.setValue(new o.K(-1),e),this._updateGlobalTimers(e)}_execute(e,t){t!==this.cancel?(this._preparePendingTasks(e),this.out._activateSignal(e)):this._cancelPendingTasks(e)}getClassName(){return"FlowGraphSetDelayBlock"}_onEnded(e,t){const a=t._getExecutionVariable(this,"pendingDelays",[]),l=a.indexOf(e);-1!==l?a.splice(l,1):s.Y.Warn("FlowGraphTimerBlock: Timer ended but was not found in the running timers list"),t._removePendingBlock(this),this.done._activateSignal(t),this._updateGlobalTimers(t)}_updateGlobalTimers(e){const t=e._getExecutionVariable(this,"pendingDelays",[]),a=e._getGlobalContextVariable("pendingDelays",[]);for(let e=0;e<t.length;e++){if(!t[e])continue;const l=t[e];a[e]&&a[e]!==l?s.Y.Warn("FlowGraphTimerBlock: Timer ended but was not found in the running timers list"):a[e]=l}e._setGlobalContextVariable("pendingDelays",a)}}FlowGraphSetDelayBlock.MaxParallelDelayCount=100,(0,r.H7)("FlowGraphSetDelayBlock",FlowGraphSetDelayBlock)}}]);
@@ -0,0 +1 @@
1
+ /*! filename:3439 */
@@ -1,2 +1,2 @@
1
1
  /*! For license information please see 3456.real-time-viewer.umd.min.js.LICENSE.txt */
2
- "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[3456],{3456:(a,e,o)=>{o.r(e),o.d(e,{fxaaPixelShader:()=>t});const l="fxaaPixelShader",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\nuniform sampler2D textureSampler;uniform vec2 texelSize;varying vec2 vUV;varying vec2 sampleCoordS;varying vec2 sampleCoordE;varying vec2 sampleCoordN;varying vec2 sampleCoordW;varying vec2 sampleCoordNW;varying vec2 sampleCoordSE;varying vec2 sampleCoordNE;varying vec2 sampleCoordSW;const float fxaaQualitySubpix=1.0;const float fxaaQualityEdgeThreshold=0.166;const float fxaaQualityEdgeThresholdMin=0.0833;const vec3 kLumaCoefficients=vec3(0.2126,0.7152,0.0722);\n#define FxaaLuma(rgba) dot(rgba.rgb,kLumaCoefficients)\nvoid main(){vec2 posM;posM.x=vUV.x;posM.y=vUV.y;vec4 rgbyM=TEXTUREFUNC(textureSampler,vUV,0.0);float lumaM=FxaaLuma(rgbyM);float lumaS=FxaaLuma(TEXTUREFUNC(textureSampler,sampleCoordS,0.0));float lumaE=FxaaLuma(TEXTUREFUNC(textureSampler,sampleCoordE,0.0));float lumaN=FxaaLuma(TEXTUREFUNC(textureSampler,sampleCoordN,0.0));float lumaW=FxaaLuma(TEXTUREFUNC(textureSampler,sampleCoordW,0.0));float maxSM=max(lumaS,lumaM);float minSM=min(lumaS,lumaM);float maxESM=max(lumaE,maxSM);float minESM=min(lumaE,minSM);float maxWN=max(lumaN,lumaW);float minWN=min(lumaN,lumaW);float rangeMax=max(maxWN,maxESM);float rangeMin=min(minWN,minESM);float rangeMaxScaled=rangeMax*fxaaQualityEdgeThreshold;float range=rangeMax-rangeMin;float rangeMaxClamped=max(fxaaQualityEdgeThresholdMin,rangeMaxScaled);\n#ifndef MALI\nif(range<rangeMaxClamped) \n{gl_FragColor=rgbyM;return;}\n#endif\nfloat lumaNW=FxaaLuma(TEXTUREFUNC(textureSampler,sampleCoordNW,0.0));float lumaSE=FxaaLuma(TEXTUREFUNC(textureSampler,sampleCoordSE,0.0));float lumaNE=FxaaLuma(TEXTUREFUNC(textureSampler,sampleCoordNE,0.0));float lumaSW=FxaaLuma(TEXTUREFUNC(textureSampler,sampleCoordSW,0.0));float lumaNS=lumaN+lumaS;float lumaWE=lumaW+lumaE;float subpixRcpRange=1.0/range;float subpixNSWE=lumaNS+lumaWE;float edgeHorz1=(-2.0*lumaM)+lumaNS;float edgeVert1=(-2.0*lumaM)+lumaWE;float lumaNESE=lumaNE+lumaSE;float lumaNWNE=lumaNW+lumaNE;float edgeHorz2=(-2.0*lumaE)+lumaNESE;float edgeVert2=(-2.0*lumaN)+lumaNWNE;float lumaNWSW=lumaNW+lumaSW;float lumaSWSE=lumaSW+lumaSE;float edgeHorz4=(abs(edgeHorz1)*2.0)+abs(edgeHorz2);float edgeVert4=(abs(edgeVert1)*2.0)+abs(edgeVert2);float edgeHorz3=(-2.0*lumaW)+lumaNWSW;float edgeVert3=(-2.0*lumaS)+lumaSWSE;float edgeHorz=abs(edgeHorz3)+edgeHorz4;float edgeVert=abs(edgeVert3)+edgeVert4;float subpixNWSWNESE=lumaNWSW+lumaNESE;float lengthSign=texelSize.x;bool horzSpan=edgeHorz>=edgeVert;float subpixA=subpixNSWE*2.0+subpixNWSWNESE;if (!horzSpan)\n{lumaN=lumaW;}\nif (!horzSpan) \n{lumaS=lumaE;}\nif (horzSpan) \n{lengthSign=texelSize.y;}\nfloat subpixB=(subpixA*(1.0/12.0))-lumaM;float gradientN=lumaN-lumaM;float gradientS=lumaS-lumaM;float lumaNN=lumaN+lumaM;float lumaSS=lumaS+lumaM;bool pairN=abs(gradientN)>=abs(gradientS);float gradient=max(abs(gradientN),abs(gradientS));if (pairN)\n{lengthSign=-lengthSign;}\nfloat subpixC=clamp(abs(subpixB)*subpixRcpRange,0.0,1.0);vec2 posB;posB.x=posM.x;posB.y=posM.y;vec2 offNP;offNP.x=(!horzSpan) ? 0.0 : texelSize.x;offNP.y=(horzSpan) ? 0.0 : texelSize.y;if (!horzSpan) \n{posB.x+=lengthSign*0.5;}\nif (horzSpan)\n{posB.y+=lengthSign*0.5;}\nvec2 posN;posN.x=posB.x-offNP.x*1.5;posN.y=posB.y-offNP.y*1.5;vec2 posP;posP.x=posB.x+offNP.x*1.5;posP.y=posB.y+offNP.y*1.5;float subpixD=((-2.0)*subpixC)+3.0;float lumaEndN=FxaaLuma(TEXTUREFUNC(textureSampler,posN,0.0));float subpixE=subpixC*subpixC;float lumaEndP=FxaaLuma(TEXTUREFUNC(textureSampler,posP,0.0));if (!pairN) \n{lumaNN=lumaSS;}\nfloat gradientScaled=gradient*1.0/4.0;float lumaMM=lumaM-lumaNN*0.5;float subpixF=subpixD*subpixE;bool lumaMLTZero=lumaMM<0.0;lumaEndN-=lumaNN*0.5;lumaEndP-=lumaNN*0.5;bool doneN=abs(lumaEndN)>=gradientScaled;bool doneP=abs(lumaEndP)>=gradientScaled;if (!doneN) \n{posN.x-=offNP.x*3.0;}\nif (!doneN) \n{posN.y-=offNP.y*3.0;}\nbool doneNP=(!doneN) || (!doneP);if (!doneP) \n{posP.x+=offNP.x*3.0;}\nif (!doneP)\n{posP.y+=offNP.y*3.0;}\nif (doneNP)\n{if (!doneN) lumaEndN=FxaaLuma(TEXTUREFUNC(textureSampler,posN.xy,0.0));if (!doneP) lumaEndP=FxaaLuma(TEXTUREFUNC(textureSampler,posP.xy,0.0));if (!doneN) lumaEndN=lumaEndN-lumaNN*0.5;if (!doneP) lumaEndP=lumaEndP-lumaNN*0.5;doneN=abs(lumaEndN)>=gradientScaled;doneP=abs(lumaEndP)>=gradientScaled;if (!doneN) posN.x-=offNP.x*12.0;if (!doneN) posN.y-=offNP.y*12.0;doneNP=(!doneN) || (!doneP);if (!doneP) posP.x+=offNP.x*12.0;if (!doneP) posP.y+=offNP.y*12.0;}\nfloat dstN=posM.x-posN.x;float dstP=posP.x-posM.x;if (!horzSpan)\n{dstN=posM.y-posN.y;}\nif (!horzSpan) \n{dstP=posP.y-posM.y;}\nbool goodSpanN=(lumaEndN<0.0) != lumaMLTZero;float spanLength=(dstP+dstN);bool goodSpanP=(lumaEndP<0.0) != lumaMLTZero;float spanLengthRcp=1.0/spanLength;bool directionN=dstN<dstP;float dst=min(dstN,dstP);bool goodSpan=directionN ? goodSpanN : goodSpanP;float subpixG=subpixF*subpixF;float pixelOffset=(dst*(-spanLengthRcp))+0.5;float subpixH=subpixG*fxaaQualitySubpix;float pixelOffsetGood=goodSpan ? pixelOffset : 0.0;float pixelOffsetSubpix=max(pixelOffsetGood,subpixH);if (!horzSpan)\n{posM.x+=pixelOffsetSubpix*lengthSign;}\nif (horzSpan)\n{posM.y+=pixelOffsetSubpix*lengthSign;}\n#ifdef MALI\nif(range<rangeMaxClamped) \n{gl_FragColor=rgbyM;}\nelse\n{gl_FragColor=TEXTUREFUNC(textureSampler,posM,0.0);}\n#else\ngl_FragColor=TEXTUREFUNC(textureSampler,posM,0.0);\n#endif\n}";o(7416).v.ShadersStore[l]=n;const t={name:l,shader:n}}}]);
2
+ "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[3456],{13456:(a,e,o)=>{o.r(e),o.d(e,{fxaaPixelShader:()=>m});var l=o(17416);const n="fxaaPixelShader",t="#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\nuniform sampler2D textureSampler;uniform vec2 texelSize;varying vec2 vUV;varying vec2 sampleCoordS;varying vec2 sampleCoordE;varying vec2 sampleCoordN;varying vec2 sampleCoordW;varying vec2 sampleCoordNW;varying vec2 sampleCoordSE;varying vec2 sampleCoordNE;varying vec2 sampleCoordSW;const float fxaaQualitySubpix=1.0;const float fxaaQualityEdgeThreshold=0.166;const float fxaaQualityEdgeThresholdMin=0.0833;const vec3 kLumaCoefficients=vec3(0.2126,0.7152,0.0722);\n#define FxaaLuma(rgba) dot(rgba.rgb,kLumaCoefficients)\nvoid main(){vec2 posM;posM.x=vUV.x;posM.y=vUV.y;vec4 rgbyM=TEXTUREFUNC(textureSampler,vUV,0.0);float lumaM=FxaaLuma(rgbyM);float lumaS=FxaaLuma(TEXTUREFUNC(textureSampler,sampleCoordS,0.0));float lumaE=FxaaLuma(TEXTUREFUNC(textureSampler,sampleCoordE,0.0));float lumaN=FxaaLuma(TEXTUREFUNC(textureSampler,sampleCoordN,0.0));float lumaW=FxaaLuma(TEXTUREFUNC(textureSampler,sampleCoordW,0.0));float maxSM=max(lumaS,lumaM);float minSM=min(lumaS,lumaM);float maxESM=max(lumaE,maxSM);float minESM=min(lumaE,minSM);float maxWN=max(lumaN,lumaW);float minWN=min(lumaN,lumaW);float rangeMax=max(maxWN,maxESM);float rangeMin=min(minWN,minESM);float rangeMaxScaled=rangeMax*fxaaQualityEdgeThreshold;float range=rangeMax-rangeMin;float rangeMaxClamped=max(fxaaQualityEdgeThresholdMin,rangeMaxScaled);\n#ifndef MALI\nif(range<rangeMaxClamped) \n{gl_FragColor=rgbyM;return;}\n#endif\nfloat lumaNW=FxaaLuma(TEXTUREFUNC(textureSampler,sampleCoordNW,0.0));float lumaSE=FxaaLuma(TEXTUREFUNC(textureSampler,sampleCoordSE,0.0));float lumaNE=FxaaLuma(TEXTUREFUNC(textureSampler,sampleCoordNE,0.0));float lumaSW=FxaaLuma(TEXTUREFUNC(textureSampler,sampleCoordSW,0.0));float lumaNS=lumaN+lumaS;float lumaWE=lumaW+lumaE;float subpixRcpRange=1.0/range;float subpixNSWE=lumaNS+lumaWE;float edgeHorz1=(-2.0*lumaM)+lumaNS;float edgeVert1=(-2.0*lumaM)+lumaWE;float lumaNESE=lumaNE+lumaSE;float lumaNWNE=lumaNW+lumaNE;float edgeHorz2=(-2.0*lumaE)+lumaNESE;float edgeVert2=(-2.0*lumaN)+lumaNWNE;float lumaNWSW=lumaNW+lumaSW;float lumaSWSE=lumaSW+lumaSE;float edgeHorz4=(abs(edgeHorz1)*2.0)+abs(edgeHorz2);float edgeVert4=(abs(edgeVert1)*2.0)+abs(edgeVert2);float edgeHorz3=(-2.0*lumaW)+lumaNWSW;float edgeVert3=(-2.0*lumaS)+lumaSWSE;float edgeHorz=abs(edgeHorz3)+edgeHorz4;float edgeVert=abs(edgeVert3)+edgeVert4;float subpixNWSWNESE=lumaNWSW+lumaNESE;float lengthSign=texelSize.x;bool horzSpan=edgeHorz>=edgeVert;float subpixA=subpixNSWE*2.0+subpixNWSWNESE;if (!horzSpan)\n{lumaN=lumaW;}\nif (!horzSpan) \n{lumaS=lumaE;}\nif (horzSpan) \n{lengthSign=texelSize.y;}\nfloat subpixB=(subpixA*(1.0/12.0))-lumaM;float gradientN=lumaN-lumaM;float gradientS=lumaS-lumaM;float lumaNN=lumaN+lumaM;float lumaSS=lumaS+lumaM;bool pairN=abs(gradientN)>=abs(gradientS);float gradient=max(abs(gradientN),abs(gradientS));if (pairN)\n{lengthSign=-lengthSign;}\nfloat subpixC=clamp(abs(subpixB)*subpixRcpRange,0.0,1.0);vec2 posB;posB.x=posM.x;posB.y=posM.y;vec2 offNP;offNP.x=(!horzSpan) ? 0.0 : texelSize.x;offNP.y=(horzSpan) ? 0.0 : texelSize.y;if (!horzSpan) \n{posB.x+=lengthSign*0.5;}\nif (horzSpan)\n{posB.y+=lengthSign*0.5;}\nvec2 posN;posN.x=posB.x-offNP.x*1.5;posN.y=posB.y-offNP.y*1.5;vec2 posP;posP.x=posB.x+offNP.x*1.5;posP.y=posB.y+offNP.y*1.5;float subpixD=((-2.0)*subpixC)+3.0;float lumaEndN=FxaaLuma(TEXTUREFUNC(textureSampler,posN,0.0));float subpixE=subpixC*subpixC;float lumaEndP=FxaaLuma(TEXTUREFUNC(textureSampler,posP,0.0));if (!pairN) \n{lumaNN=lumaSS;}\nfloat gradientScaled=gradient*1.0/4.0;float lumaMM=lumaM-lumaNN*0.5;float subpixF=subpixD*subpixE;bool lumaMLTZero=lumaMM<0.0;lumaEndN-=lumaNN*0.5;lumaEndP-=lumaNN*0.5;bool doneN=abs(lumaEndN)>=gradientScaled;bool doneP=abs(lumaEndP)>=gradientScaled;if (!doneN) \n{posN.x-=offNP.x*3.0;}\nif (!doneN) \n{posN.y-=offNP.y*3.0;}\nbool doneNP=(!doneN) || (!doneP);if (!doneP) \n{posP.x+=offNP.x*3.0;}\nif (!doneP)\n{posP.y+=offNP.y*3.0;}\nif (doneNP)\n{if (!doneN) lumaEndN=FxaaLuma(TEXTUREFUNC(textureSampler,posN.xy,0.0));if (!doneP) lumaEndP=FxaaLuma(TEXTUREFUNC(textureSampler,posP.xy,0.0));if (!doneN) lumaEndN=lumaEndN-lumaNN*0.5;if (!doneP) lumaEndP=lumaEndP-lumaNN*0.5;doneN=abs(lumaEndN)>=gradientScaled;doneP=abs(lumaEndP)>=gradientScaled;if (!doneN) posN.x-=offNP.x*12.0;if (!doneN) posN.y-=offNP.y*12.0;doneNP=(!doneN) || (!doneP);if (!doneP) posP.x+=offNP.x*12.0;if (!doneP) posP.y+=offNP.y*12.0;}\nfloat dstN=posM.x-posN.x;float dstP=posP.x-posM.x;if (!horzSpan)\n{dstN=posM.y-posN.y;}\nif (!horzSpan) \n{dstP=posP.y-posM.y;}\nbool goodSpanN=(lumaEndN<0.0) != lumaMLTZero;float spanLength=(dstP+dstN);bool goodSpanP=(lumaEndP<0.0) != lumaMLTZero;float spanLengthRcp=1.0/spanLength;bool directionN=dstN<dstP;float dst=min(dstN,dstP);bool goodSpan=directionN ? goodSpanN : goodSpanP;float subpixG=subpixF*subpixF;float pixelOffset=(dst*(-spanLengthRcp))+0.5;float subpixH=subpixG*fxaaQualitySubpix;float pixelOffsetGood=goodSpan ? pixelOffset : 0.0;float pixelOffsetSubpix=max(pixelOffsetGood,subpixH);if (!horzSpan)\n{posM.x+=pixelOffsetSubpix*lengthSign;}\nif (horzSpan)\n{posM.y+=pixelOffsetSubpix*lengthSign;}\n#ifdef MALI\nif(range<rangeMaxClamped) \n{gl_FragColor=rgbyM;}\nelse\n{gl_FragColor=TEXTUREFUNC(textureSampler,posM,0.0);}\n#else\ngl_FragColor=TEXTUREFUNC(textureSampler,posM,0.0);\n#endif\n}";l.v.ShadersStore[n]||(l.v.ShadersStore[n]=t);const m={name:n,shader:t}}}]);
@@ -0,0 +1,2 @@
1
+ /*! For license information please see 3652.real-time-viewer.umd.min.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[3652],{83652:(t,e,i)=>{i.r(e),i.d(e,{FlowGraphThrottleBlock:()=>FlowGraphThrottleBlock});var a=i(39426),s=i(36442),r=i(20538);class FlowGraphThrottleBlock extends s.F{constructor(t){super(t),this.reset=this._registerSignalInput("reset"),this.duration=this.registerDataInput("duration",a.ab),this.lastRemainingTime=this.registerDataOutput("lastRemainingTime",a.ab,NaN)}_execute(t,e){if(e===this.reset)return this.lastRemainingTime.setValue(NaN,t),t._setExecutionVariable(this,"lastRemainingTime",NaN),void t._setExecutionVariable(this,"timestamp",0);const i=this.duration.getValue(t);if(i<=0||isNaN(i)||!isFinite(i))return this._reportError(t,"Invalid duration in Throttle block");const a=t._getExecutionVariable(this,"lastRemainingTime",NaN),s=Date.now();if(isNaN(a))return this.lastRemainingTime.setValue(0,t),t._setExecutionVariable(this,"lastRemainingTime",0),t._setExecutionVariable(this,"timestamp",s),this.out._activateSignal(t);{const e=s-t._getExecutionVariable(this,"timestamp",0),a=1e3*i;if(a<=e)return this.lastRemainingTime.setValue(0,t),t._setExecutionVariable(this,"lastRemainingTime",0),t._setExecutionVariable(this,"timestamp",s),this.out._activateSignal(t);{const i=a-e;this.lastRemainingTime.setValue(i/1e3,t),t._setExecutionVariable(this,"lastRemainingTime",i)}}}getClassName(){return"FlowGraphThrottleBlock"}}(0,r.H7)("FlowGraphThrottleBlock",FlowGraphThrottleBlock)}}]);
@@ -0,0 +1 @@
1
+ /*! filename:3652 */
@@ -0,0 +1,2 @@
1
+ /*! For license information please see 377.real-time-viewer.umd.min.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[377],{377:(e,s,a)=>{a.r(s),a.d(s,{EasingFunctionType:()=>t,FlowGraphEasingBlock:()=>FlowGraphEasingBlock});var t,i=a(48309),n=a(43890),r=a(39426),u=a(20538);!function(e){e[e.CircleEase=0]="CircleEase",e[e.BackEase=1]="BackEase",e[e.BounceEase=2]="BounceEase",e[e.CubicEase=3]="CubicEase",e[e.ElasticEase=4]="ElasticEase",e[e.ExponentialEase=5]="ExponentialEase",e[e.PowerEase=6]="PowerEase",e[e.QuadraticEase=7]="QuadraticEase",e[e.QuarticEase=8]="QuarticEase",e[e.QuinticEase=9]="QuinticEase",e[e.SineEase=10]="SineEase",e[e.BezierCurveEase=11]="BezierCurveEase"}(t||(t={}));class FlowGraphEasingBlock extends n.A{constructor(e){super(e),this.config=e,this._easingFunctions={},this.type=this.registerDataInput("type",r.s8,11),this.mode=this.registerDataInput("mode",r.ab,0),this.parameters=this.registerDataInput("parameters",r.s8,[1,0,0,1]),this.easingFunction=this.registerDataOutput("easingFunction",r.s8)}_updateOutputs(e){const s=this.type.getValue(e),a=this.mode.getValue(e),t=this.parameters.getValue(e);if(void 0===s||void 0===a)return;const n=`${s}-${a}-${t.join("-")}`;if(!this._easingFunctions[n]){const e=function CreateEasingFunction(e,...s){switch(e){case 11:return new i.sj(...s);case 0:return new i.qP;case 1:return new i.ud(...s);case 2:return new i.R$(...s);case 3:return new i.o0;case 4:return new i.$A(...s);case 5:return new i.EI(...s);default:throw new Error("Easing type not yet implemented")}}(s,...t);e.setEasingMode(a),this._easingFunctions[n]=e}this.easingFunction.setValue(this._easingFunctions[n],e)}getClassName(){return"FlowGraphEasingBlock"}}(0,u.H7)("FlowGraphEasingBlock",FlowGraphEasingBlock)}}]);
@@ -0,0 +1 @@
1
+ /*! filename:377 */
@@ -0,0 +1,2 @@
1
+ /*! For license information please see 3839.real-time-viewer.umd.min.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[3839],{83839:(e,t,r)=>{r.r(t),r.d(t,{FlowGraphPointerOverEventBlock:()=>FlowGraphPointerOverEventBlock});var s=r(3274),n=r(39426),i=r(20538),a=r(7181);class FlowGraphPointerOverEventBlock extends s.N{constructor(e){super(e),this.type="PointerOver",this.pointerId=this.registerDataOutput("pointerId",n.ab),this.targetMesh=this.registerDataInput("targetMesh",n.s8,e?.targetMesh),this.meshUnderPointer=this.registerDataOutput("meshUnderPointer",n.s8)}_executeEvent(e,t){const r=this.targetMesh.getValue(e);this.meshUnderPointer.setValue(t.mesh,e);const s=t.out&&(0,a.jH)(t.out,r);return this.pointerId.setValue(t.pointerId,e),!(!s&&(t.mesh===r||(0,a.jH)(t.mesh,r)))||(this._execute(e),!this.config?.stopPropagation)}_preparePendingTasks(e){}_cancelPendingTasks(e){}getClassName(){return"FlowGraphPointerOverEventBlock"}}(0,i.H7)("FlowGraphPointerOverEventBlock",FlowGraphPointerOverEventBlock)}}]);
@@ -0,0 +1 @@
1
+ /*! filename:3839 */
@@ -0,0 +1,2 @@
1
+ /*! For license information please see 3917.real-time-viewer.umd.min.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[3917],{83917:(r,o,l)=>{l.r(o),l.d(o,{greasedLinePixelShaderWGSL:()=>i});var e=l(17416);const n="greasedLinePixelShader",t="var grlColors: texture_2d<f32>;var grlColorsSampler: sampler;uniform grlUseColors: f32;uniform grlUseDash: f32;uniform grlDashArray: f32;uniform grlDashOffset: f32;uniform grlDashRatio: f32;uniform grlVisibility: f32;uniform grlColorsWidth: f32;uniform grl_colorModeAndColorDistributionType: vec2f;uniform grlColor: vec3f;varying grlCounters: f32;varying grlColorPointer: f32;\n#define CUSTOM_FRAGMENT_DEFINITIONS\n@fragment\nfn main(input: FragmentInputs)->FragmentOutputs {\n#define CUSTOM_FRAGMENT_MAIN_BEGIN\nlet grlColorMode: f32=uniforms.grl_colorModeAndColorDistributionType.x;let grlColorDistributionType: f32=uniforms.grl_colorModeAndColorDistributionType.y;var outColor=vec4(uniforms.grlColor,1.);outColor.a=step(fragmentInputs.grlCounters,uniforms.grlVisibility);if (outColor.a==0.0) {discard;}\nif (uniforms.grlUseDash==1.0) {let dashPosition=(fragmentInputs.grlCounters+uniforms.grlDashOffset) % uniforms.grlDashArray;outColor.a*=ceil(dashPosition-(uniforms.grlDashArray*uniforms.grlDashRatio));if (outColor.a==0.0) {discard;}}\nif (uniforms.grlUseColors==1.) {\n#ifdef GREASED_LINE_COLOR_DISTRIBUTION_TYPE_LINE\nlet grlColor: vec4f=textureSample(grlColors,grlColorsSampler,vec2f(fragmentInputs.grlCounters,0.));\n#else\nlet lookup: vec2f=vec2(fract(fragmentInputs.grlColorPointer/uniforms.grlColorsWidth),1.0-floor(fragmentInputs.grlColorPointer/uniforms.grlColorsWidth));let grlColor: vec4f=textureSample(grlColors,grlColorsSampler,lookup);\n#endif\nif (grlColorMode==COLOR_MODE_SET) {outColor=grlColor;} else if (grlColorMode==COLOR_MODE_ADD) {outColor+=grlColor;} else if (grlColorMode==COLOR_MODE_MULTIPLY) {outColor*=grlColor;}}\n#if !defined(PREPASS) && !defined(ORDER_INDEPENDENT_TRANSPARENCY)\nfragmentOutputs.color=outColor;\n#endif\n#if ORDER_INDEPENDENT_TRANSPARENCY\nif (fragDepth==nearestDepth) {fragmentOutputs.frontColor=vec4f(fragmentOutputs.frontColor.rgb+outColor.rgb*outColor.a*alphaMultiplier,1.0-alphaMultiplier*(1.0-outColor.a));} else {fragmentOutputs.backColor+=outColor;}\n#endif\n#define CUSTOM_FRAGMENT_MAIN_END\n}\n";e.v.ShadersStoreWGSL[n]||(e.v.ShadersStoreWGSL[n]=t);const i={name:n,shader:t}}}]);
@@ -0,0 +1 @@
1
+ /*! filename:3917 */
@@ -1,2 +1,2 @@
1
1
  /*! For license information please see 3945.real-time-viewer.umd.min.js.LICENSE.txt */
2
- "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[3945],{3945:(e,t,r)=>{r.r(t),r.d(t,{passCubePixelShaderWGSL:()=>n});const a="passCubePixelShader",u="varying var vUV: vec2f;var textureSamplerSampler: sampler;var textureSampler: texture_cube<f32>;\n#define CUSTOM_FRAGMENT_DEFINITIONS\n@fragment\nfn main(input: FragmentInputs)->FragmentOutputs {var uv: vec2f=input.vUV*2.0-1.0;\n#ifdef POSITIVEX\nfragmentOutputs.color=textureSample(textureSampler,textureSamplerSampler,vec3f(1.001,uv.y,uv.x));\n#endif\n#ifdef NEGATIVEX\nfragmentOutputs.color=textureSample(textureSampler,textureSamplerSampler,vec3f(-1.001,uv.y,uv.x));\n#endif\n#ifdef POSITIVEY\nfragmentOutputs.color=textureSample(textureSampler,textureSamplerSampler,vec3f(uv.y,1.001,uv.x));\n#endif\n#ifdef NEGATIVEY\nfragmentOutputs.color=textureSample(textureSampler,textureSamplerSampler,vec3f(uv.y,-1.001,uv.x));\n#endif\n#ifdef POSITIVEZ\nfragmentOutputs.color=textureSample(textureSampler,textureSamplerSampler,vec3f(uv,1.001));\n#endif\n#ifdef NEGATIVEZ\nfragmentOutputs.color=textureSample(textureSampler,textureSamplerSampler,vec3f(uv,-1.001));\n#endif\n}";r(7416).v.ShadersStoreWGSL[a]=u;const n={name:a,shader:u}}}]);
2
+ "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[3945],{73945:(e,r,t)=>{t.r(r),t.d(r,{passCubePixelShaderWGSL:()=>p});var a=t(17416);const u="passCubePixelShader",n="varying vUV: vec2f;var textureSamplerSampler: sampler;var textureSampler: texture_cube<f32>;\n#define CUSTOM_FRAGMENT_DEFINITIONS\n@fragment\nfn main(input: FragmentInputs)->FragmentOutputs {var uv: vec2f=input.vUV*2.0-1.0;\n#ifdef POSITIVEX\nfragmentOutputs.color=textureSample(textureSampler,textureSamplerSampler,vec3f(1.001,uv.y,uv.x));\n#endif\n#ifdef NEGATIVEX\nfragmentOutputs.color=textureSample(textureSampler,textureSamplerSampler,vec3f(-1.001,uv.y,uv.x));\n#endif\n#ifdef POSITIVEY\nfragmentOutputs.color=textureSample(textureSampler,textureSamplerSampler,vec3f(uv.y,1.001,uv.x));\n#endif\n#ifdef NEGATIVEY\nfragmentOutputs.color=textureSample(textureSampler,textureSamplerSampler,vec3f(uv.y,-1.001,uv.x));\n#endif\n#ifdef POSITIVEZ\nfragmentOutputs.color=textureSample(textureSampler,textureSamplerSampler,vec3f(uv,1.001));\n#endif\n#ifdef NEGATIVEZ\nfragmentOutputs.color=textureSample(textureSampler,textureSamplerSampler,vec3f(uv,-1.001));\n#endif\n}";a.v.ShadersStoreWGSL[u]||(a.v.ShadersStoreWGSL[u]=n);const p={name:u,shader:n}}}]);
@@ -0,0 +1,2 @@
1
+ /*! For license information please see 4049.real-time-viewer.umd.min.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[4049],{94049:(o,r,a)=>{a.r(r),a.d(r,{FlowGraphAbsBlock:()=>FlowGraphAbsBlock,FlowGraphAcosBlock:()=>FlowGraphAcosBlock,FlowGraphAcoshBlock:()=>FlowGraphAcoshBlock,FlowGraphAddBlock:()=>FlowGraphAddBlock,FlowGraphAsinBlock:()=>FlowGraphAsinBlock,FlowGraphAsinhBlock:()=>FlowGraphAsinhBlock,FlowGraphAtan2Block:()=>FlowGraphAtan2Block,FlowGraphAtanBlock:()=>FlowGraphAtanBlock,FlowGraphAtanhBlock:()=>FlowGraphAtanhBlock,FlowGraphBitwiseAndBlock:()=>FlowGraphBitwiseAndBlock,FlowGraphBitwiseLeftShiftBlock:()=>FlowGraphBitwiseLeftShiftBlock,FlowGraphBitwiseNotBlock:()=>FlowGraphBitwiseNotBlock,FlowGraphBitwiseOrBlock:()=>FlowGraphBitwiseOrBlock,FlowGraphBitwiseRightShiftBlock:()=>FlowGraphBitwiseRightShiftBlock,FlowGraphBitwiseXorBlock:()=>FlowGraphBitwiseXorBlock,FlowGraphCeilBlock:()=>FlowGraphCeilBlock,FlowGraphClampBlock:()=>FlowGraphClampBlock,FlowGraphCosBlock:()=>FlowGraphCosBlock,FlowGraphCoshBlock:()=>FlowGraphCoshBlock,FlowGraphCubeRootBlock:()=>FlowGraphCubeRootBlock,FlowGraphDegToRadBlock:()=>FlowGraphDegToRadBlock,FlowGraphDivideBlock:()=>FlowGraphDivideBlock,FlowGraphEBlock:()=>FlowGraphEBlock,FlowGraphEqualityBlock:()=>FlowGraphEqualityBlock,FlowGraphExpBlock:()=>FlowGraphExpBlock,FlowGraphFloorBlock:()=>FlowGraphFloorBlock,FlowGraphFractionBlock:()=>FlowGraphFractionBlock,FlowGraphGreaterThanBlock:()=>FlowGraphGreaterThanBlock,FlowGraphGreaterThanOrEqualBlock:()=>FlowGraphGreaterThanOrEqualBlock,FlowGraphInfBlock:()=>FlowGraphInfBlock,FlowGraphIsInfinityBlock:()=>FlowGraphIsInfinityBlock,FlowGraphIsNanBlock:()=>FlowGraphIsNanBlock,FlowGraphLeadingZerosBlock:()=>FlowGraphLeadingZerosBlock,FlowGraphLessThanBlock:()=>FlowGraphLessThanBlock,FlowGraphLessThanOrEqualBlock:()=>FlowGraphLessThanOrEqualBlock,FlowGraphLog10Block:()=>FlowGraphLog10Block,FlowGraphLog2Block:()=>FlowGraphLog2Block,FlowGraphLogBlock:()=>FlowGraphLogBlock,FlowGraphMathInterpolationBlock:()=>FlowGraphMathInterpolationBlock,FlowGraphMaxBlock:()=>FlowGraphMaxBlock,FlowGraphMinBlock:()=>FlowGraphMinBlock,FlowGraphModuloBlock:()=>FlowGraphModuloBlock,FlowGraphMultiplyBlock:()=>FlowGraphMultiplyBlock,FlowGraphNaNBlock:()=>FlowGraphNaNBlock,FlowGraphNegationBlock:()=>FlowGraphNegationBlock,FlowGraphOneBitsCounterBlock:()=>FlowGraphOneBitsCounterBlock,FlowGraphPiBlock:()=>FlowGraphPiBlock,FlowGraphPowerBlock:()=>FlowGraphPowerBlock,FlowGraphRadToDegBlock:()=>FlowGraphRadToDegBlock,FlowGraphRandomBlock:()=>FlowGraphRandomBlock,FlowGraphRoundBlock:()=>FlowGraphRoundBlock,FlowGraphSaturateBlock:()=>FlowGraphSaturateBlock,FlowGraphSignBlock:()=>FlowGraphSignBlock,FlowGraphSinBlock:()=>FlowGraphSinBlock,FlowGraphSinhBlock:()=>FlowGraphSinhBlock,FlowGraphSquareRootBlock:()=>FlowGraphSquareRootBlock,FlowGraphSubtractBlock:()=>FlowGraphSubtractBlock,FlowGraphTanBlock:()=>FlowGraphTanBlock,FlowGraphTanhBlock:()=>FlowGraphTanhBlock,FlowGraphTrailingZerosBlock:()=>FlowGraphTrailingZerosBlock,FlowGraphTruncBlock:()=>FlowGraphTruncBlock});var l=a(20538),e=a(39426),t=a(41554),n=a(49492);class FlowGraphConstantOperationBlock extends n.D{constructor(o,r,a,l){super(o,l),this._operation=r,this._className=a}_doOperation(o){return this._operation(o)}getClassName(){return this._className}}var p=a(49486),s=a(86562);class FlowGraphTernaryOperationBlock extends n.D{constructor(o,r,a,l,e,t,n){super(l,n),this._operation=e,this._className=t,this.a=this.registerDataInput("a",o),this.b=this.registerDataInput("b",r),this.c=this.registerDataInput("c",a)}_doOperation(o){return this._operation(this.a.getValue(o),this.b.getValue(o),this.c.getValue(o))}getClassName(){return this._className}}var c=a(234),h=a(33203),i=a(7181);class FlowGraphAddBlock extends t.V{constructor(o){super((0,e._M)(o?.type),(0,e._M)(o?.type),(0,e._M)(o?.type),((o,r)=>this._polymorphicAdd(o,r)),"FlowGraphAddBlock",o)}_polymorphicAdd(o,r){const a=(0,i.JP)(o),l=(0,i.JP)(r);if((0,i.RV)(a,l)||(0,i.bh)(a,l)||(0,i.s1)(a,l))return o.add(r);if("Quaternion"===a||"Vector4"===l)return new p.Lt(o.x,o.y,o.z,o.w).addInPlace(r);if("Vector4"===a||"Quaternion"===l)return o.add(r);if(this.config?.preventIntegerFloatArithmetic&&typeof o!=typeof r)throw new Error("Cannot add different types of numbers.");return(0,i.J0)(o)+(0,i.J0)(r)}}(0,l.H7)("FlowGraphAddBlock",FlowGraphAddBlock);class FlowGraphSubtractBlock extends t.V{constructor(o){super((0,e._M)(o?.type),(0,e._M)(o?.type),(0,e._M)(o?.type),((o,r)=>this._polymorphicSubtract(o,r)),"FlowGraphSubtractBlock",o)}_polymorphicSubtract(o,r){const a=(0,i.JP)(o),l=(0,i.JP)(r);if((0,i.RV)(a,l)||(0,i.s1)(a,l)||(0,i.bh)(a,l))return o.subtract(r);if("Quaternion"===a||"Vector4"===l)return new p.Lt(o.x,o.y,o.z,o.w).subtractInPlace(r);if("Vector4"===a||"Quaternion"===l)return o.subtract(r);if(this.config?.preventIntegerFloatArithmetic&&typeof o!=typeof r)throw new Error("Cannot add different types of numbers.");return(0,i.J0)(o)-(0,i.J0)(r)}}(0,l.H7)("FlowGraphSubtractBlock",FlowGraphSubtractBlock);class FlowGraphMultiplyBlock extends t.V{constructor(o){super((0,e._M)(o?.type),(0,e._M)(o?.type),(0,e._M)(o?.type),((o,r)=>this._polymorphicMultiply(o,r)),"FlowGraphMultiplyBlock",o)}_polymorphicMultiply(o,r){const a=(0,i.JP)(o),l=(0,i.JP)(r);if((0,i.RV)(a,l)||(0,i.s1)(a,l))return o.multiply(r);if("Quaternion"===a||"Vector4"===l)return new p.Lt(o.x,o.y,o.z,o.w).multiplyInPlace(r);if("Vector4"===a||"Quaternion"===l)return o.multiply(r);if((0,i.bh)(a,l)){if(this.config?.useMatrixPerComponent){const l=o.m;for(let o=0;o<l.length;o++)l[o]*=r.m[o];return"Matrix2D"===a?new h.x(l):"Matrix3D"===a?new h.o(l):p.y3.FromArray(l)}return o=o,(r=r).multiply(o)}if(this.config?.preventIntegerFloatArithmetic&&typeof o!=typeof r)throw new Error("Cannot add different types of numbers.");return(0,i.J0)(o)*(0,i.J0)(r)}}(0,l.H7)("FlowGraphMultiplyBlock",FlowGraphMultiplyBlock);class FlowGraphDivideBlock extends t.V{constructor(o){super((0,e._M)(o?.type),(0,e._M)(o?.type),(0,e._M)(o?.type),((o,r)=>this._polymorphicDivide(o,r)),"FlowGraphDivideBlock",o)}_polymorphicDivide(o,r){const a=(0,i.JP)(o),l=(0,i.JP)(r);if((0,i.RV)(a,l)||(0,i.s1)(a,l))return o.divide(r);if("Quaternion"===a||"Quaternion"===l){const a=o.clone();return a.x/=r.x,a.y/=r.y,a.z/=r.z,a.w/=r.w,a}if("Quaternion"===a||"Vector4"===l)return new p.Lt(o.x,o.y,o.z,o.w).divideInPlace(r);if("Vector4"===a||"Quaternion"===l)return o.divide(r);if((0,i.bh)(a,l)){if(this.config?.useMatrixPerComponent){const l=o.m;for(let o=0;o<l.length;o++)l[o]/=r.m[o];return"Matrix2D"===a?new h.x(l):"Matrix3D"===a?new h.o(l):p.y3.FromArray(l)}return r=r,(o=o).divide(r)}if(this.config?.preventIntegerFloatArithmetic&&typeof o!=typeof r)throw new Error("Cannot add different types of numbers.");return(0,i.J0)(o)/(0,i.J0)(r)}}(0,l.H7)("FlowGraphDivideBlock",FlowGraphDivideBlock);class FlowGraphRandomBlock extends FlowGraphConstantOperationBlock{constructor(o){super(e.ab,(o=>this._random(o)),"FlowGraphRandomBlock",o),this.min=this.registerDataInput("min",e.ab,o?.min??0),this.max=this.registerDataInput("max",e.ab,o?.max??1),o?.seed&&(this._seed=o.seed)}_isSeed(o=this._seed){return void 0!==o}_getRandomValue(){if(this._isSeed(this._seed)){const o=1e4*Math.sin(this._seed++);return o-Math.floor(o)}return Math.random()}_random(o){const r=this.min.getValue(o),a=this.max.getValue(o);return this._getRandomValue()*(a-r)+r}}(0,l.H7)("FlowGraphRandomBlock",FlowGraphRandomBlock);class FlowGraphEBlock extends FlowGraphConstantOperationBlock{constructor(o){super(e.ab,(()=>Math.E),"FlowGraphEBlock",o)}}(0,l.H7)("FlowGraphEBlock",FlowGraphEBlock);class FlowGraphPiBlock extends FlowGraphConstantOperationBlock{constructor(o){super(e.ab,(()=>Math.PI),"FlowGraphPIBlock",o)}}(0,l.H7)("FlowGraphPIBlock",FlowGraphPiBlock);class FlowGraphInfBlock extends FlowGraphConstantOperationBlock{constructor(o){super(e.ab,(()=>Number.POSITIVE_INFINITY),"FlowGraphInfBlock",o)}}(0,l.H7)("FlowGraphInfBlock",FlowGraphInfBlock);class FlowGraphNaNBlock extends FlowGraphConstantOperationBlock{constructor(o){super(e.ab,(()=>Number.NaN),"FlowGraphNaNBlock",o)}}function ComponentWiseUnaryOperation(o,r){switch((0,i.JP)(o)){case"FlowGraphInteger":return o=o,new c.K(r(o.value));case"Vector2":return o=o,new p.FM(r(o.x),r(o.y));case"Vector3":return o=o,new p.P(r(o.x),r(o.y),r(o.z));case"Vector4":return o=o,new p.Lt(r(o.x),r(o.y),r(o.z),r(o.w));case"Quaternion":return o=o,new p._f(r(o.x),r(o.y),r(o.z),r(o.w));case"Matrix":return o=o,p.y3.FromArray(o.m.map(r));case"Matrix2D":return o=o,new h.x(o.m.map(r));case"Matrix3D":return o=o,new h.o(o.m.map(r));default:return r(o=o)}}(0,l.H7)("FlowGraphNaNBlock",FlowGraphNaNBlock);class FlowGraphAbsBlock extends s.p{constructor(o){super(e.ab,e.ab,(o=>this._polymorphicAbs(o)),"FlowGraphAbsBlock",o)}_polymorphicAbs(o){return ComponentWiseUnaryOperation(o,Math.abs)}}(0,l.H7)("FlowGraphAbsBlock",FlowGraphAbsBlock);class FlowGraphSignBlock extends s.p{constructor(o){super(e.ab,e.ab,(o=>this._polymorphicSign(o)),"FlowGraphSignBlock",o)}_polymorphicSign(o){return ComponentWiseUnaryOperation(o,Math.sign)}}(0,l.H7)("FlowGraphSignBlock",FlowGraphSignBlock);class FlowGraphTruncBlock extends s.p{constructor(o){super(e.ab,e.ab,(o=>this._polymorphicTrunc(o)),"FlowGraphTruncBlock",o)}_polymorphicTrunc(o){return ComponentWiseUnaryOperation(o,Math.trunc)}}(0,l.H7)("FlowGraphTruncBlock",FlowGraphTruncBlock);class FlowGraphFloorBlock extends s.p{constructor(o){super(e.ab,e.ab,(o=>this._polymorphicFloor(o)),"FlowGraphFloorBlock",o)}_polymorphicFloor(o){return ComponentWiseUnaryOperation(o,Math.floor)}}(0,l.H7)("FlowGraphFloorBlock",FlowGraphFloorBlock);class FlowGraphCeilBlock extends s.p{constructor(o){super(e.s8,e.s8,(o=>this._polymorphicCeiling(o)),"FlowGraphCeilBlock",o)}_polymorphicCeiling(o){return ComponentWiseUnaryOperation(o,Math.ceil)}}(0,l.H7)("FlowGraphCeilBlock",FlowGraphCeilBlock);class FlowGraphRoundBlock extends s.p{constructor(o){super(e.s8,e.s8,(o=>this._polymorphicRound(o)),"FlowGraphRoundBlock",o)}_polymorphicRound(o){return ComponentWiseUnaryOperation(o,(o=>o<0&&this.config?.roundHalfAwayFromZero?-Math.round(-o):Math.round(o)))}}(0,l.H7)("FlowGraphRoundBlock",FlowGraphRoundBlock);class FlowGraphFractionBlock extends s.p{constructor(o){super(e.s8,e.s8,(o=>this._polymorphicFraction(o)),"FlowGraphFractBlock",o)}_polymorphicFraction(o){return ComponentWiseUnaryOperation(o,(o=>o-Math.floor(o)))}}(0,l.H7)("FlowGraphFractBlock",FlowGraphFractionBlock);class FlowGraphNegationBlock extends s.p{constructor(o){super(e.s8,e.s8,(o=>this._polymorphicNeg(o)),"FlowGraphNegationBlock",o)}_polymorphicNeg(o){return ComponentWiseUnaryOperation(o,(o=>-o))}}function ComponentWiseBinaryOperation(o,r,a){switch((0,i.JP)(o)){case"FlowGraphInteger":return o=o,r=r,new c.K(a(o.value,r.value));case"Vector2":return o=o,r=r,new p.FM(a(o.x,r.x),a(o.y,r.y));case"Vector3":return o=o,r=r,new p.P(a(o.x,r.x),a(o.y,r.y),a(o.z,r.z));case"Vector4":return o=o,r=r,new p.Lt(a(o.x,r.x),a(o.y,r.y),a(o.z,r.z),a(o.w,r.w));case"Quaternion":return o=o,r=r,new p._f(a(o.x,r.x),a(o.y,r.y),a(o.z,r.z),a(o.w,r.w));case"Matrix":return o=o,p.y3.FromArray(o.m.map(((o,l)=>a(o,r.m[l]))));case"Matrix2D":return o=o,new h.x(o.m.map(((o,l)=>a(o,r.m[l]))));case"Matrix3D":return o=o,new h.o(o.m.map(((o,l)=>a(o,r.m[l]))));default:return a((0,i.J0)(o),(0,i.J0)(r))}}(0,l.H7)("FlowGraphNegationBlock",FlowGraphNegationBlock);class FlowGraphModuloBlock extends t.V{constructor(o){super(e.s8,e.s8,e.s8,((o,r)=>this._polymorphicRemainder(o,r)),"FlowGraphModuloBlock",o)}_polymorphicRemainder(o,r){return ComponentWiseBinaryOperation(o,r,((o,r)=>o%r))}}(0,l.H7)("FlowGraphModuloBlock",FlowGraphModuloBlock);class FlowGraphMinBlock extends t.V{constructor(o){super(e.s8,e.s8,e.s8,((o,r)=>this._polymorphicMin(o,r)),"FlowGraphMinBlock",o)}_polymorphicMin(o,r){return ComponentWiseBinaryOperation(o,r,Math.min)}}(0,l.H7)("FlowGraphMinBlock",FlowGraphMinBlock);class FlowGraphMaxBlock extends t.V{constructor(o){super(e.s8,e.s8,e.s8,((o,r)=>this._polymorphicMax(o,r)),"FlowGraphMaxBlock",o)}_polymorphicMax(o,r){return ComponentWiseBinaryOperation(o,r,Math.max)}}function Clamp(o,r,a){return Math.min(Math.max(o,Math.min(r,a)),Math.max(r,a))}function ComponentWiseTernaryOperation(o,r,a,l){switch((0,i.JP)(o)){case"FlowGraphInteger":return o=o,r=r,a=a,new c.K(l(o.value,r.value,a.value));case"Vector2":return o=o,r=r,a=a,new p.FM(l(o.x,r.x,a.x),l(o.y,r.y,a.y));case"Vector3":return o=o,r=r,a=a,new p.P(l(o.x,r.x,a.x),l(o.y,r.y,a.y),l(o.z,r.z,a.z));case"Vector4":return o=o,r=r,a=a,new p.Lt(l(o.x,r.x,a.x),l(o.y,r.y,a.y),l(o.z,r.z,a.z),l(o.w,r.w,a.w));case"Quaternion":return o=o,r=r,a=a,new p._f(l(o.x,r.x,a.x),l(o.y,r.y,a.y),l(o.z,r.z,a.z),l(o.w,r.w,a.w));case"Matrix":return p.y3.FromArray(o.m.map(((o,e)=>l(o,r.m[e],a.m[e]))));case"Matrix2D":return new h.x(o.m.map(((o,e)=>l(o,r.m[e],a.m[e]))));case"Matrix3D":return new h.o(o.m.map(((o,e)=>l(o,r.m[e],a.m[e]))));default:return l((0,i.J0)(o),(0,i.J0)(r),(0,i.J0)(a))}}(0,l.H7)("FlowGraphMaxBlock",FlowGraphMaxBlock);class FlowGraphClampBlock extends FlowGraphTernaryOperationBlock{constructor(o){super(e.s8,e.s8,e.s8,e.s8,((o,r,a)=>this._polymorphicClamp(o,r,a)),"FlowGraphClampBlock",o)}_polymorphicClamp(o,r,a){return ComponentWiseTernaryOperation(o,r,a,Clamp)}}function Saturate(o){return Math.min(Math.max(o,0),1)}(0,l.H7)("FlowGraphClampBlock",FlowGraphClampBlock);class FlowGraphSaturateBlock extends s.p{constructor(o){super(e.s8,e.s8,(o=>this._polymorphicSaturate(o)),"FlowGraphSaturateBlock",o)}_polymorphicSaturate(o){return ComponentWiseUnaryOperation(o,Saturate)}}function Interpolate(o,r,a){return(1-a)*o+a*r}(0,l.H7)("FlowGraphSaturateBlock",FlowGraphSaturateBlock);class FlowGraphMathInterpolationBlock extends FlowGraphTernaryOperationBlock{constructor(o){super(e.s8,e.s8,e.s8,e.s8,((o,r,a)=>this._polymorphicInterpolate(o,r,a)),"FlowGraphMathInterpolationBlock",o)}_polymorphicInterpolate(o,r,a){return ComponentWiseTernaryOperation(o,r,a,Interpolate)}}(0,l.H7)("FlowGraphMathInterpolationBlock",FlowGraphMathInterpolationBlock);class FlowGraphEqualityBlock extends t.V{constructor(o){super(e.s8,e.s8,e.PE,((o,r)=>this._polymorphicEq(o,r)),"FlowGraphEqualityBlock",o)}_polymorphicEq(o,r){const a=(0,i.JP)(o),l=(0,i.JP)(r);return typeof o==typeof r&&((0,i.RV)(a,l)||(0,i.bh)(a,l)||(0,i.s1)(a,l)?o.equals(r):o===r)}}function ComparisonOperators(o,r,a){if((0,i.kE)(o)&&(0,i.kE)(r))return a((0,i.J0)(o),(0,i.J0)(r));throw new Error(`Cannot compare ${o} and ${r}`)}(0,l.H7)("FlowGraphEqualityBlock",FlowGraphEqualityBlock);class FlowGraphLessThanBlock extends t.V{constructor(o){super(e.s8,e.s8,e.PE,((o,r)=>this._polymorphicLessThan(o,r)),"FlowGraphLessThanBlock",o)}_polymorphicLessThan(o,r){return ComparisonOperators(o,r,((o,r)=>o<r))}}(0,l.H7)("FlowGraphLessThanBlock",FlowGraphLessThanBlock);class FlowGraphLessThanOrEqualBlock extends t.V{constructor(o){super(e.s8,e.s8,e.PE,((o,r)=>this._polymorphicLessThanOrEqual(o,r)),"FlowGraphLessThanOrEqualBlock",o)}_polymorphicLessThanOrEqual(o,r){return ComparisonOperators(o,r,((o,r)=>o<=r))}}(0,l.H7)("FlowGraphLessThanOrEqualBlock",FlowGraphLessThanOrEqualBlock);class FlowGraphGreaterThanBlock extends t.V{constructor(o){super(e.s8,e.s8,e.PE,((o,r)=>this._polymorphicGreaterThan(o,r)),"FlowGraphGreaterThanBlock",o)}_polymorphicGreaterThan(o,r){return ComparisonOperators(o,r,((o,r)=>o>r))}}(0,l.H7)("FlowGraphGreaterThanBlock",FlowGraphGreaterThanBlock);class FlowGraphGreaterThanOrEqualBlock extends t.V{constructor(o){super(e.s8,e.s8,e.PE,((o,r)=>this._polymorphicGreaterThanOrEqual(o,r)),"FlowGraphGreaterThanOrEqualBlock",o)}_polymorphicGreaterThanOrEqual(o,r){return ComparisonOperators(o,r,((o,r)=>o>=r))}}(0,l.H7)("FlowGraphGreaterThanOrEqualBlock",FlowGraphGreaterThanOrEqualBlock);class FlowGraphIsNanBlock extends s.p{constructor(o){super(e.s8,e.PE,(o=>this._polymorphicIsNan(o)),"FlowGraphIsNaNBlock",o)}_polymorphicIsNan(o){if((0,i.kE)(o,!0))return isNaN((0,i.J0)(o));throw new Error(`Cannot get NaN of ${o}`)}}(0,l.H7)("FlowGraphIsNaNBlock",FlowGraphIsNanBlock);class FlowGraphIsInfinityBlock extends s.p{constructor(o){super(e.s8,e.PE,(o=>this._polymorphicIsInf(o)),"FlowGraphIsInfBlock",o)}_polymorphicIsInf(o){if((0,i.kE)(o))return!isFinite((0,i.J0)(o));throw new Error(`Cannot get isInf of ${o}`)}}(0,l.H7)("FlowGraphIsInfBlock",FlowGraphIsInfinityBlock);class FlowGraphDegToRadBlock extends s.p{constructor(o){super(e.s8,e.s8,(o=>this._polymorphicDegToRad(o)),"FlowGraphDegToRadBlock",o)}_degToRad(o){return o*Math.PI/180}_polymorphicDegToRad(o){return ComponentWiseUnaryOperation(o,this._degToRad)}}(0,l.H7)("FlowGraphDegToRadBlock",FlowGraphDegToRadBlock);class FlowGraphRadToDegBlock extends s.p{constructor(o){super(e.s8,e.s8,(o=>this._polymorphicRadToDeg(o)),"FlowGraphRadToDegBlock",o)}_radToDeg(o){return 180*o/Math.PI}_polymorphicRadToDeg(o){return ComponentWiseUnaryOperation(o,this._radToDeg)}}(0,l.H7)("FlowGraphRadToDegBlock",FlowGraphRadToDegBlock);class FlowGraphSinBlock extends s.p{constructor(o){super(e.ab,e.ab,(o=>this._polymorphicSin(o)),"FlowGraphSinBlock",o)}_polymorphicSin(o){return ComponentWiseUnaryOperation(o,Math.sin)}}class FlowGraphCosBlock extends s.p{constructor(o){super(e.ab,e.ab,(o=>this._polymorphicCos(o)),"FlowGraphCosBlock",o)}_polymorphicCos(o){return ComponentWiseUnaryOperation(o,Math.cos)}}class FlowGraphTanBlock extends s.p{constructor(o){super(e.ab,e.ab,(o=>this._polymorphicTan(o)),"FlowGraphTanBlock",o)}_polymorphicTan(o){return ComponentWiseUnaryOperation(o,Math.tan)}}class FlowGraphAsinBlock extends s.p{constructor(o){super(e.ab,e.ab,(o=>this._polymorphicAsin(o)),"FlowGraphASinBlock",o)}_polymorphicAsin(o){return ComponentWiseUnaryOperation(o,Math.asin)}}(0,l.H7)("FlowGraphASinBlock",FlowGraphAsinBlock);class FlowGraphAcosBlock extends s.p{constructor(o){super(e.ab,e.ab,(o=>this._polymorphicAcos(o)),"FlowGraphACosBlock",o)}_polymorphicAcos(o){return ComponentWiseUnaryOperation(o,Math.acos)}}(0,l.H7)("FlowGraphACosBlock",FlowGraphAcosBlock);class FlowGraphAtanBlock extends s.p{constructor(o){super(e.ab,e.ab,(o=>this._polymorphicAtan(o)),"FlowGraphATanBlock",o)}_polymorphicAtan(o){return ComponentWiseUnaryOperation(o,Math.atan)}}(0,l.H7)("FlowGraphATanBlock",FlowGraphAtanBlock);class FlowGraphAtan2Block extends t.V{constructor(o){super(e.s8,e.s8,e.s8,((o,r)=>this._polymorphicAtan2(o,r)),"FlowGraphATan2Block",o)}_polymorphicAtan2(o,r){return ComponentWiseBinaryOperation(o,r,Math.atan2)}}(0,l.H7)("FlowGraphATan2Block",FlowGraphAtan2Block);class FlowGraphSinhBlock extends s.p{constructor(o){super(e.s8,e.s8,(o=>this._polymorphicSinh(o)),"FlowGraphSinhBlock",o)}_polymorphicSinh(o){return ComponentWiseUnaryOperation(o,Math.sinh)}}(0,l.H7)("FlowGraphSinhBlock",FlowGraphSinhBlock);class FlowGraphCoshBlock extends s.p{constructor(o){super(e.s8,e.s8,(o=>this._polymorphicCosh(o)),"FlowGraphCoshBlock",o)}_polymorphicCosh(o){return ComponentWiseUnaryOperation(o,Math.cosh)}}(0,l.H7)("FlowGraphCoshBlock",FlowGraphCoshBlock);class FlowGraphTanhBlock extends s.p{constructor(o){super(e.s8,e.s8,(o=>this._polymorphicTanh(o)),"FlowGraphTanhBlock",o)}_polymorphicTanh(o){return ComponentWiseUnaryOperation(o,Math.tanh)}}(0,l.H7)("FlowGraphTanhBlock",FlowGraphTanhBlock);class FlowGraphAsinhBlock extends s.p{constructor(o){super(e.s8,e.ab,(o=>this._polymorphicAsinh(o)),"FlowGraphASinhBlock",o)}_polymorphicAsinh(o){return ComponentWiseUnaryOperation(o,Math.asinh)}}(0,l.H7)("FlowGraphASinhBlock",FlowGraphAsinhBlock);class FlowGraphAcoshBlock extends s.p{constructor(o){super(e.s8,e.ab,(o=>this._polymorphicAcosh(o)),"FlowGraphACoshBlock",o)}_polymorphicAcosh(o){return ComponentWiseUnaryOperation(o,Math.acosh)}}(0,l.H7)("FlowGraphACoshBlock",FlowGraphAcoshBlock);class FlowGraphAtanhBlock extends s.p{constructor(o){super(e.s8,e.ab,(o=>this._polymorphicAtanh(o)),"FlowGraphATanhBlock",o)}_polymorphicAtanh(o){return ComponentWiseUnaryOperation(o,Math.atanh)}}(0,l.H7)("FlowGraphATanhBlock",FlowGraphAtanhBlock);class FlowGraphExpBlock extends s.p{constructor(o){super(e.s8,e.ab,(o=>this._polymorphicExp(o)),"FlowGraphExponentialBlock",o)}_polymorphicExp(o){return ComponentWiseUnaryOperation(o,Math.exp)}}(0,l.H7)("FlowGraphExponentialBlock",FlowGraphExpBlock);class FlowGraphLogBlock extends s.p{constructor(o){super(e.s8,e.ab,(o=>this._polymorphicLog(o)),"FlowGraphLogBlock",o)}_polymorphicLog(o){return ComponentWiseUnaryOperation(o,Math.log)}}(0,l.H7)("FlowGraphLogBlock",FlowGraphLogBlock);class FlowGraphLog2Block extends s.p{constructor(o){super(e.s8,e.ab,(o=>this._polymorphicLog2(o)),"FlowGraphLog2Block",o)}_polymorphicLog2(o){return ComponentWiseUnaryOperation(o,Math.log2)}}(0,l.H7)("FlowGraphLog2Block",FlowGraphLog2Block);class FlowGraphLog10Block extends s.p{constructor(o){super(e.s8,e.ab,(o=>this._polymorphicLog10(o)),"FlowGraphLog10Block",o)}_polymorphicLog10(o){return ComponentWiseUnaryOperation(o,Math.log10)}}(0,l.H7)("FlowGraphLog10Block",FlowGraphLog10Block);class FlowGraphSquareRootBlock extends s.p{constructor(o){super(e.s8,e.ab,(o=>this._polymorphicSqrt(o)),"FlowGraphSquareRootBlock",o)}_polymorphicSqrt(o){return ComponentWiseUnaryOperation(o,Math.sqrt)}}(0,l.H7)("FlowGraphSquareRootBlock",FlowGraphSquareRootBlock);class FlowGraphCubeRootBlock extends s.p{constructor(o){super(e.s8,e.ab,(o=>this._polymorphicCubeRoot(o)),"FlowGraphCubeRootBlock",o)}_polymorphicCubeRoot(o){return ComponentWiseUnaryOperation(o,Math.cbrt)}}(0,l.H7)("FlowGraphCubeRootBlock",FlowGraphCubeRootBlock);class FlowGraphPowerBlock extends t.V{constructor(o){super(e.s8,e.ab,e.ab,((o,r)=>this._polymorphicPow(o,r)),"FlowGraphPowerBlock",o)}_polymorphicPow(o,r){return ComponentWiseBinaryOperation(o,r,Math.pow)}}(0,l.H7)("FlowGraphPowerBlock",FlowGraphPowerBlock);class FlowGraphBitwiseNotBlock extends s.p{constructor(o){super((0,e._M)(o?.valueType||"FlowGraphInteger"),(0,e._M)(o?.valueType||"FlowGraphInteger"),(o=>"boolean"==typeof o?!o:"number"==typeof o?~o:new c.K(~o.value)),"FlowGraphBitwiseNotBlock",o)}}(0,l.H7)("FlowGraphBitwiseNotBlock",FlowGraphBitwiseNotBlock);class FlowGraphBitwiseAndBlock extends t.V{constructor(o){super((0,e._M)(o?.valueType||"FlowGraphInteger"),(0,e._M)(o?.valueType||"FlowGraphInteger"),(0,e._M)(o?.valueType||"FlowGraphInteger"),((o,r)=>{if("boolean"==typeof o&&"boolean"==typeof r)return o&&r;if("number"==typeof o&&"number"==typeof r)return o&r;if("object"==typeof o&&"object"==typeof r)return new c.K(o.value&r.value);throw new Error(`Cannot perform bitwise AND on ${o} and ${r}`)}),"FlowGraphBitwiseAndBlock",o)}}(0,l.H7)("FlowGraphBitwiseAndBlock",FlowGraphBitwiseAndBlock);class FlowGraphBitwiseOrBlock extends t.V{constructor(o){super((0,e._M)(o?.valueType||"FlowGraphInteger"),(0,e._M)(o?.valueType||"FlowGraphInteger"),(0,e._M)(o?.valueType||"FlowGraphInteger"),((o,r)=>{if("boolean"==typeof o&&"boolean"==typeof r)return o||r;if("number"==typeof o&&"number"==typeof r)return o|r;if("object"==typeof o&&"object"==typeof r)return new c.K(o.value|r.value);throw new Error(`Cannot perform bitwise OR on ${o} and ${r}`)}),"FlowGraphBitwiseOrBlock",o)}}(0,l.H7)("FlowGraphBitwiseOrBlock",FlowGraphBitwiseOrBlock);class FlowGraphBitwiseXorBlock extends t.V{constructor(o){super((0,e._M)(o?.valueType||"FlowGraphInteger"),(0,e._M)(o?.valueType||"FlowGraphInteger"),(0,e._M)(o?.valueType||"FlowGraphInteger"),((o,r)=>{if("boolean"==typeof o&&"boolean"==typeof r)return o!==r;if("number"==typeof o&&"number"==typeof r)return o^r;if("object"==typeof o&&"object"==typeof r)return new c.K(o.value^r.value);throw new Error(`Cannot perform bitwise XOR on ${o} and ${r}`)}),"FlowGraphBitwiseXorBlock",o)}}(0,l.H7)("FlowGraphBitwiseXorBlock",FlowGraphBitwiseXorBlock);class FlowGraphBitwiseLeftShiftBlock extends t.V{constructor(o){super(e.fj,e.fj,e.fj,((o,r)=>new c.K(o.value<<r.value)),"FlowGraphBitwiseLeftShiftBlock",o)}}(0,l.H7)("FlowGraphBitwiseLeftShiftBlock",FlowGraphBitwiseLeftShiftBlock);class FlowGraphBitwiseRightShiftBlock extends t.V{constructor(o){super(e.fj,e.fj,e.fj,((o,r)=>new c.K(o.value>>r.value)),"FlowGraphBitwiseRightShiftBlock",o)}}(0,l.H7)("FlowGraphBitwiseRightShiftBlock",FlowGraphBitwiseRightShiftBlock);class FlowGraphLeadingZerosBlock extends s.p{constructor(o){super(e.fj,e.fj,(o=>new c.K(Math.clz32(o.value))),"FlowGraphLeadingZerosBlock",o)}}(0,l.H7)("FlowGraphLeadingZerosBlock",FlowGraphLeadingZerosBlock);class FlowGraphTrailingZerosBlock extends s.p{constructor(o){super(e.fj,e.fj,(o=>new c.K(o.value?31-Math.clz32(o.value&-o.value):32)),"FlowGraphTrailingZerosBlock",o)}}(0,l.H7)("FlowGraphTrailingZerosBlock",FlowGraphTrailingZerosBlock);class FlowGraphOneBitsCounterBlock extends s.p{constructor(o){super(e.fj,e.fj,(o=>new c.K(function CountOnes(o){let r=0;for(;o;)r+=1&o,o>>=1;return r}(o.value))),"FlowGraphOneBitsCounterBlock",o)}}(0,l.H7)("FlowGraphOneBitsCounterBlock",FlowGraphOneBitsCounterBlock)},41554:(o,r,a)=>{a.d(r,{V:()=>FlowGraphBinaryOperationBlock});var l=a(49492);class FlowGraphBinaryOperationBlock extends l.D{constructor(o,r,a,l,e,t){super(a,t),this._operation=l,this._className=e,this.a=this.registerDataInput("a",o),this.b=this.registerDataInput("b",r)}_doOperation(o){const r=this.a.getValue(o),a=this.b.getValue(o);return this._operation(r,a)}getClassName(){return this._className}}},49492:(o,r,a)=>{a.d(r,{D:()=>FlowGraphCachedOperationBlock});var l=a(43890),e=a(39426);const t="cachedOperationValue",n="cachedExecutionId";class FlowGraphCachedOperationBlock extends l.A{constructor(o,r){super(r),this.value=this.registerDataOutput("value",o),this.isValid=this.registerDataOutput("isValid",e.PE)}_updateOutputs(o){const r=o._getExecutionVariable(this,n,-1),a=o._getExecutionVariable(this,t,null);if(null!=a&&r===o.executionId)this.isValid.setValue(!0,o),this.value.setValue(a,o);else try{const r=this._doOperation(o);if(null==r)return void this.isValid.setValue(!1,o);o._setExecutionVariable(this,t,r),o._setExecutionVariable(this,n,o.executionId),this.value.setValue(r,o),this.isValid.setValue(!0,o)}catch(r){this.isValid.setValue(!1,o)}}}},86562:(o,r,a)=>{a.d(r,{p:()=>FlowGraphUnaryOperationBlock});var l=a(49492);class FlowGraphUnaryOperationBlock extends l.D{constructor(o,r,a,l,e){super(r,e),this._operation=a,this._className=l,this.a=this.registerDataInput("a",o)}_doOperation(o){return this._operation(this.a.getValue(o))}getClassName(){return this._className}}}}]);
@@ -0,0 +1 @@
1
+ /*! filename:4049 */
@@ -0,0 +1,2 @@
1
+ /*! For license information please see 4051.real-time-viewer.umd.min.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[4051],{54051:(e,r,f)=>{f.r(r),f.d(r,{iblCdfDebugPixelShaderWGSL:()=>a});var c=f(17416);const i="iblCdfDebugPixelShader",t="#define PI 3.1415927\nvarying vUV: vec2f;var cdfySampler: sampler;var cdfy: texture_2d<f32>;var cdfxSampler: sampler;var cdfx: texture_2d<f32>;var icdfSampler: sampler;var icdf: texture_2d<f32>;\n#ifdef IBL_USE_CUBE_MAP\nvar iblSourceSampler: sampler;var iblSource: texture_cube<f32>;\n#else\nvar iblSourceSampler: sampler;var iblSource: texture_2d<f32>;\n#endif\nvar textureSamplerSampler: sampler;var textureSampler: texture_2d<f32>;\n#define cdfyVSize (0.8/3.0)\n#define cdfxVSize 0.1\n#define cdfyHSize 0.5\nuniform sizeParams: vec4f;\n#ifdef IBL_USE_CUBE_MAP\nfn equirectangularToCubemapDirection(uv: vec2f)->vec3f {var longitude: f32=uv.x*2.0*PI-PI;var latitude: f32=PI*0.5-uv.y*PI;var direction: vec3f;direction.x=cos(latitude)*sin(longitude);direction.y=sin(latitude);direction.z=cos(latitude)*cos(longitude);return direction;}\n#endif\n@fragment\nfn main(input: FragmentInputs)->FragmentOutputs { \nvar colour: vec3f= vec3f(0.0);var uv: vec2f =\nvec2f((uniforms.sizeParams.x+input.vUV.x)*uniforms.sizeParams.z,(uniforms.sizeParams.y+input.vUV.y)*uniforms.sizeParams.w);var backgroundColour: vec3f=textureSample(textureSampler,textureSamplerSampler,input.vUV).rgb;var cdfxWidth: u32=textureDimensions(cdfx,0).x;var cdfyHeight: u32=textureDimensions(cdfy,0).y;const iblStart: f32=1.0-cdfyVSize;const pdfStart: f32=1.0-2.0*cdfyVSize;const cdfyStart: f32=1.0-3.0*cdfyVSize;const cdfxStart: f32=1.0-3.0*cdfyVSize-cdfxVSize;const icdfxStart: f32=1.0-3.0*cdfyVSize-2.0*cdfxVSize;\n#ifdef IBL_USE_CUBE_MAP\nvar direction: vec3f=equirectangularToCubemapDirection(\n(uv- vec2f(0.0,iblStart))* vec2f(1.0,1.0/cdfyVSize));var iblColour: vec3f=textureSampleLevel(iblSource,iblSourceSampler,direction,0.0).rgb;\n#else\nvar iblColour: vec3f=textureSample(iblSource,iblSourceSampler,(uv- vec2f(0.0,iblStart)) *\nvec2f(1.0,1.0/cdfyVSize))\n.rgb;\n#endif\nvar pdfColour: vec3f =\ntextureSample(icdf,icdfSampler,(uv- vec2f(0.0,pdfStart))* vec2f(1.0,1.0/cdfyVSize)).zzz;var cdfyColour: f32 =\ntextureSample(cdfy,cdfySampler,(uv- vec2f(0.0,cdfyStart))* vec2f(2.0,1.0/cdfyVSize)).r;var icdfyColour: f32 =\ntextureSample(icdf,icdfSampler,(uv- vec2f(0.5,cdfyStart))* vec2f(2.0,1.0/cdfyVSize)).g;var cdfxColour: f32 =\ntextureSample(cdfx,cdfxSampler,(uv- vec2f(0.0,cdfxStart))* vec2f(1.0,1.0/cdfxVSize)).r;var icdfxColour: f32=textureSample(icdf,icdfSampler,(uv- vec2f(0.0,icdfxStart)) *\nvec2f(1.0,1.0/cdfxVSize)).r;if (uv.x<0.0 || uv.x>1.0 || uv.y<0.0 || uv.y>1.0) {colour=backgroundColour;} else if (uv.y>iblStart) {colour+=iblColour;} else if (uv.y>pdfStart) {colour+=pdfColour;} else if (uv.y>cdfyStart && uv.x<0.5) {colour.r+=cdfyColour/f32(cdfyHeight);} else if (uv.y>cdfyStart && uv.x>0.5) {colour.r+=icdfyColour;} else if (uv.y>cdfxStart) {colour.r+=cdfxColour/f32(cdfxWidth);} else if (uv.y>icdfxStart) {colour.r+=icdfxColour;}\nfragmentOutputs.color =vec4(mix(colour,backgroundColour,0.5),1.0);}";c.v.ShadersStoreWGSL[i]||(c.v.ShadersStoreWGSL[i]=t);const a={name:i,shader:t}}}]);
@@ -0,0 +1 @@
1
+ /*! filename:4051 */
@@ -1,2 +1,2 @@
1
1
  /*! For license information please see 4091.real-time-viewer.umd.min.js.LICENSE.txt */
2
- "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[4091],{6782:(e,n,r)=>{const t="kernelBlurVaryingDeclaration",a="varying sampleCoord{X}: vec2f;";r(7416).v.IncludesShadersStoreWGSL[t]=a},3284:(e,n,r)=>{const t="packingFunctions",a="fn pack(depth: f32)->vec4f\n{const bit_shift: vec4f= vec4f(255.0*255.0*255.0,255.0*255.0,255.0,1.0);const bit_mask: vec4f= vec4f(0.0,1.0/255.0,1.0/255.0,1.0/255.0);var res: vec4f=fract(depth*bit_shift);res-=res.xxyz*bit_mask;return res;}\nfn unpack(color: vec4f)->f32\n{const bit_shift: vec4f= vec4f(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);}";r(7416).v.IncludesShadersStoreWGSL[t]=a},4091:(e,n,r)=>{r.r(n),r.d(n,{kernelBlurPixelShaderWGSL:()=>i});var t=r(7416);r(6782),r(3284);const a="#ifdef DOF\nfactor=sampleCoC(fragmentInputs.sampleCoord{X}); \ncomputedWeight=KERNEL_WEIGHT{X}*factor;sumOfWeights+=computedWeight;\n#else\ncomputedWeight=KERNEL_WEIGHT{X};\n#endif\n#ifdef PACKEDFLOAT\nblend+=unpack(textureSample(textureSampler,textureSamplerSampler,fragmentInputs.sampleCoord{X}))*computedWeight;\n#else\nblend+=textureSample(textureSampler,textureSamplerSampler,fragmentInputs.sampleCoord{X})*computedWeight;\n#endif\n";t.v.IncludesShadersStoreWGSL.kernelBlurFragment=a;const l="#ifdef DOF\nfactor=sampleCoC(fragmentInputs.sampleCenter+uniforms.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(textureSample(textureSampler,textureSamplerSampler,fragmentInputs.sampleCenter+uniforms.delta*KERNEL_DEP_OFFSET{X}))*computedWeight;\n#else\nblend+=textureSample(textureSampler,textureSamplerSampler,fragmentInputs.sampleCenter+uniforms.delta*KERNEL_DEP_OFFSET{X})*computedWeight;\n#endif\n";t.v.IncludesShadersStoreWGSL.kernelBlurFragment2=l;const f="kernelBlurPixelShader",u="var textureSamplerSampler: sampler;var textureSampler: texture_2d<f32>;uniform delta: vec2f;varying sampleCenter: vec2f;\n#ifdef DOF\nvar circleOfConfusionSamplerSampler: sampler;var circleOfConfusionSampler: texture_2d<f32>;fn sampleCoC(offset: vec2f)->f32 {var coc: f32=textureSample(circleOfConfusionSampler,circleOfConfusionSamplerSampler,offset).r;return coc; }\n#endif\n#include<kernelBlurVaryingDeclaration>[0..varyingCount]\n#ifdef PACKEDFLOAT\n#include<packingFunctions>\n#endif\n#define CUSTOM_FRAGMENT_DEFINITIONS\n@fragment\nfn main(input: FragmentInputs)->FragmentOutputs {var computedWeight: f32=0.0;\n#ifdef PACKEDFLOAT\nvar blend: f32=0.;\n#else\nvar blend: vec4f= vec4f(0.);\n#endif\n#ifdef DOF\nvar sumOfWeights: f32=CENTER_WEIGHT; \nvar factor: f32=0.0;\n#ifdef PACKEDFLOAT\nblend+=unpack(textureSample(textureSampler,textureSamplerSampler,input.sampleCenter))*CENTER_WEIGHT;\n#else\nblend+=textureSample(textureSampler,textureSamplerSampler,input.sampleCenter)*CENTER_WEIGHT;\n#endif\n#endif\n#include<kernelBlurFragment>[0..varyingCount]\n#include<kernelBlurFragment2>[0..depCount]\n#ifdef PACKEDFLOAT\nfragmentOutputs.color=pack(blend);\n#else\nfragmentOutputs.color=blend;\n#endif\n#ifdef DOF\nfragmentOutputs.color/=sumOfWeights;\n#endif\n}";t.v.ShadersStoreWGSL.kernelBlurPixelShader=u;const i={name:f,shader:u}}}]);
2
+ "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[4091],{36782:(e,n,r)=>{var t=r(17416);const a="kernelBlurVaryingDeclaration",l="varying sampleCoord{X}: vec2f;";t.v.IncludesShadersStoreWGSL[a]||(t.v.IncludesShadersStoreWGSL[a]=l)},53284:(e,n,r)=>{var t=r(17416);const a="packingFunctions",l="fn pack(depth: f32)->vec4f\n{const bit_shift: vec4f= vec4f(255.0*255.0*255.0,255.0*255.0,255.0,1.0);const bit_mask: vec4f= vec4f(0.0,1.0/255.0,1.0/255.0,1.0/255.0);var res: vec4f=fract(depth*bit_shift);res-=res.xxyz*bit_mask;return res;}\nfn unpack(color: vec4f)->f32\n{const bit_shift: vec4f= vec4f(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);}";t.v.IncludesShadersStoreWGSL[a]||(t.v.IncludesShadersStoreWGSL[a]=l)},34091:(e,n,r)=>{r.r(n),r.d(n,{kernelBlurPixelShaderWGSL:()=>s});var t=r(17416);r(36782),r(53284);const a="#ifdef DOF\nfactor=sampleCoC(fragmentInputs.sampleCoord{X}); \ncomputedWeight=KERNEL_WEIGHT{X}*factor;sumOfWeights+=computedWeight;\n#else\ncomputedWeight=KERNEL_WEIGHT{X};\n#endif\n#ifdef PACKEDFLOAT\nblend+=unpack(textureSample(textureSampler,textureSamplerSampler,fragmentInputs.sampleCoord{X}))*computedWeight;\n#else\nblend+=textureSample(textureSampler,textureSamplerSampler,fragmentInputs.sampleCoord{X})*computedWeight;\n#endif\n";t.v.IncludesShadersStoreWGSL.kernelBlurFragment||(t.v.IncludesShadersStoreWGSL.kernelBlurFragment=a);const l="#ifdef DOF\nfactor=sampleCoC(fragmentInputs.sampleCenter+uniforms.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(textureSample(textureSampler,textureSamplerSampler,fragmentInputs.sampleCenter+uniforms.delta*KERNEL_DEP_OFFSET{X}))*computedWeight;\n#else\nblend+=textureSample(textureSampler,textureSamplerSampler,fragmentInputs.sampleCenter+uniforms.delta*KERNEL_DEP_OFFSET{X})*computedWeight;\n#endif\n";t.v.IncludesShadersStoreWGSL.kernelBlurFragment2||(t.v.IncludesShadersStoreWGSL.kernelBlurFragment2=l);const f="kernelBlurPixelShader",u="var textureSamplerSampler: sampler;var textureSampler: texture_2d<f32>;uniform delta: vec2f;varying sampleCenter: vec2f;\n#ifdef DOF\nvar circleOfConfusionSamplerSampler: sampler;var circleOfConfusionSampler: texture_2d<f32>;fn sampleCoC(offset: vec2f)->f32 {var coc: f32=textureSample(circleOfConfusionSampler,circleOfConfusionSamplerSampler,offset).r;return coc; }\n#endif\n#include<kernelBlurVaryingDeclaration>[0..varyingCount]\n#ifdef PACKEDFLOAT\n#include<packingFunctions>\n#endif\n#define CUSTOM_FRAGMENT_DEFINITIONS\n@fragment\nfn main(input: FragmentInputs)->FragmentOutputs {var computedWeight: f32=0.0;\n#ifdef PACKEDFLOAT\nvar blend: f32=0.;\n#else\nvar blend: vec4f= vec4f(0.);\n#endif\n#ifdef DOF\nvar sumOfWeights: f32=CENTER_WEIGHT; \nvar factor: f32=0.0;\n#ifdef PACKEDFLOAT\nblend+=unpack(textureSample(textureSampler,textureSamplerSampler,input.sampleCenter))*CENTER_WEIGHT;\n#else\nblend+=textureSample(textureSampler,textureSamplerSampler,input.sampleCenter)*CENTER_WEIGHT;\n#endif\n#endif\n#include<kernelBlurFragment>[0..varyingCount]\n#include<kernelBlurFragment2>[0..depCount]\n#ifdef PACKEDFLOAT\nfragmentOutputs.color=pack(blend);\n#else\nfragmentOutputs.color=blend;\n#endif\n#ifdef DOF\nfragmentOutputs.color/=sumOfWeights;\n#endif\n}";t.v.ShadersStoreWGSL.kernelBlurPixelShader||(t.v.ShadersStoreWGSL.kernelBlurPixelShader=u);const s={name:f,shader:u}}}]);
@@ -1,2 +1,2 @@
1
1
  /*! For license information please see 410.real-time-viewer.umd.min.js.LICENSE.txt */
2
- "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[410],{410:(e,t,n)=>{n.r(t),n.d(t,{_ExrTextureLoader:()=>_ExrTextureLoader});var r=n(3146),a=n(1494);const o=65536,s=14,i=65537,l=16384;var c,u;!function(e){e[e.NO_COMPRESSION=0]="NO_COMPRESSION",e[e.RLE_COMPRESSION=1]="RLE_COMPRESSION",e[e.ZIPS_COMPRESSION=2]="ZIPS_COMPRESSION",e[e.ZIP_COMPRESSION=3]="ZIP_COMPRESSION",e[e.PIZ_COMPRESSION=4]="PIZ_COMPRESSION",e[e.PXR24_COMPRESSION=5]="PXR24_COMPRESSION"}(c||(c={})),function(e){e[e.INCREASING_Y=0]="INCREASING_Y",e[e.DECREASING_Y=1]="DECREASING_Y"}(u||(u={}));const f=function _GenerateTables(){const e=new ArrayBuffer(4),t=new Float32Array(e),n=new Uint32Array(e),r=new Uint32Array(512),a=new Uint32Array(512);for(let e=0;e<256;++e){const t=e-127;t<-27?(r[e]=0,r[256|e]=32768,a[e]=24,a[256|e]=24):t<-14?(r[e]=1024>>-t-14,r[256|e]=1024>>-t-14|32768,a[e]=-t-1,a[256|e]=-t-1):t<=15?(r[e]=t+15<<10,r[256|e]=t+15<<10|32768,a[e]=13,a[256|e]=13):t<128?(r[e]=31744,r[256|e]=64512,a[e]=24,a[256|e]=24):(r[e]=31744,r[256|e]=64512,a[e]=13,a[256|e]=13)}const o=new Uint32Array(2048),s=new Uint32Array(64),i=new Uint32Array(64);for(let e=1;e<1024;++e){let t=e<<13,n=0;for(;0==(8388608&t);)t<<=1,n-=8388608;t&=-8388609,n+=947912704,o[e]=t|n}for(let e=1024;e<2048;++e)o[e]=939524096+(e-1024<<13);for(let e=1;e<31;++e)s[e]=e<<23;s[31]=1199570944,s[32]=2147483648;for(let e=33;e<63;++e)s[e]=2147483648+(e-32<<23);s[63]=3347054592;for(let e=1;e<64;++e)32!==e&&(i[e]=1024);return{floatView:t,uint32View:n,baseTable:r,shiftTable:a,mantissaTable:o,exponentTable:s,offsetTable:i}}();function ParseNullTerminatedString(e,t){const n=new Uint8Array(e);let r=0;for(;0!=n[t.value+r];)r+=1;const a=(new TextDecoder).decode(n.slice(t.value,t.value+r));return t.value=t.value+r+1,a}function ParseInt32(e,t){const n=e.getInt32(t.value,!0);return t.value+=4,n}function ParseUint32(e,t){const n=e.getUint32(t.value,!0);return t.value+=4,n}function ParseUint8(e,t){const n=e.getUint8(t.value);return t.value+=1,n}function ParseUint16(e,t){const n=e.getUint16(t.value,!0);return t.value+=2,n}function ParseUint8Array(e,t){const n=e[t.value];return t.value+=1,n}function ParseInt64(e,t){let n;return n="getBigInt64"in DataView.prototype?Number(e.getBigInt64(t.value,!0)):e.getUint32(t.value+4,!0)+Number(e.getUint32(t.value,!0)<<32),t.value+=8,n}function ParseFloat32(e,t){const n=e.getFloat32(t.value,!0);return t.value+=4,n}function ParseFloat16(e,t){return function DecodeFloat16(e){const t=(31744&e)>>10,n=1023&e;return(e>>15?-1:1)*(t?31===t?n?NaN:1/0:Math.pow(2,t-15)*(1+n/1024):n/1024*6103515625e-14)}(ParseUint16(e,t))}function DecodeFloat32(e,t){return function ToHalfFloat(e){if(Math.abs(e)>65504)throw new Error("Value out of range.Consider using float instead of half-float.");e=(0,a.Clamp)(e,-65504,65504),f.floatView[0]=e;const t=f.uint32View[0],n=t>>23&511;return f.baseTable[n]+((8388607&t)>>f.shiftTable[n])}(ParseFloat32(e,t))}function ParseValue(e,t,n,r){switch(n){case"string":case"stringvector":case"iccProfile":return function ParseFixedLengthString(e,t,n){const r=(new TextDecoder).decode(new Uint8Array(e).slice(t.value,t.value+n));return t.value=t.value+n,r}(e.buffer,t,r);case"chlist":return function ParseChlist(e,t,n){const r=t.value,a=[];for(;t.value<r+n-1;){const n=ParseNullTerminatedString(e.buffer,t),r=ParseInt32(e,t),o=ParseUint8(e,t);t.value+=3;const s=ParseInt32(e,t),i=ParseInt32(e,t);a.push({name:n,pixelType:r,pLinear:o,xSampling:s,ySampling:i})}return t.value+=1,a}(e,t,r);case"chromaticities":return function ParseChromaticities(e,t){return{redX:ParseFloat32(e,t),redY:ParseFloat32(e,t),greenX:ParseFloat32(e,t),greenY:ParseFloat32(e,t),blueX:ParseFloat32(e,t),blueY:ParseFloat32(e,t),whiteX:ParseFloat32(e,t),whiteY:ParseFloat32(e,t)}}(e,t);case"compression":return function ParseCompression(e,t){return ParseUint8(e,t)}(e,t);case"box2i":return function ParseBox2i(e,t){return{xMin:ParseInt32(e,t),yMin:ParseInt32(e,t),xMax:ParseInt32(e,t),yMax:ParseInt32(e,t)}}(e,t);case"lineOrder":return function ParseLineOrder(e,t){const n=ParseUint8(e,t);return u[n]}(e,t);case"float":return ParseFloat32(e,t);case"v2f":return function ParseV2f(e,t){return[ParseFloat32(e,t),ParseFloat32(e,t)]}(e,t);case"v3f":return function ParseV3f(e,t){return[ParseFloat32(e,t),ParseFloat32(e,t),ParseFloat32(e,t)]}(e,t);case"int":return ParseInt32(e,t);case"rational":return function ParseRational(e,t){return[ParseInt32(e,t),ParseUint32(e,t)]}(e,t);case"timecode":return function ParseTimecode(e,t){return[ParseUint32(e,t),ParseUint32(e,t)]}(e,t);case"preview":return t.value+=r,"skipped";default:return void(t.value+=r)}}function Predictor(e){for(let t=1;t<e.length;t++){const n=e[t-1]+e[t]-128;e[t]=n}}function InterleaveScalar(e,t){let n=0,r=Math.floor((e.length+1)/2),a=0;const o=e.length-1;for(;!(a>o||(t[a++]=e[n++],a>o));)t[a++]=e[r++]}function GetBits(e,t,n,r,a){for(;n<e;)t=t<<8|ParseUint8Array(r,a),n+=8;return{l:t>>(n-=e)&(1<<e)-1,c:t,lc:n}}function GetChar(e,t,n,r){return{c:e=e<<8|ParseUint8Array(n,r),lc:t+=8}}function GetCode(e,t,n,r,a,o,s,i,l){if(e==t){if(r<8){const e=GetChar(n,r,a,o);n=e.c,r=e.lc}let e=n>>(r-=8);if(e=new Uint8Array([e])[0],i.value+e>l)return null;const t=s[i.value-1];for(;e-- >0;)s[i.value++]=t}else{if(!(i.value<l))return null;s[i.value++]=e}return{c:n,lc:r}}const d=new Array(59);function HufUnpackEncTable(e,t,n,r,a,o){const s=t;let l=0,c=0;for(;r<=a;r++){if(s.value-t.value>n)return;let i=GetBits(6,l,c,e,s);const u=i.l;if(l=i.c,c=i.lc,o[r]=u,63==u){if(s.value-t.value>n)throw new Error("Error in HufUnpackEncTable");i=GetBits(8,l,c,e,s);let u=i.l+6;if(l=i.c,c=i.lc,r+u>a+1)throw new Error("Error in HufUnpackEncTable");for(;u--;)o[r++]=0;r--}else if(u>=59){let e=u-59+2;if(r+e>a+1)throw new Error("Error in HufUnpackEncTable");for(;e--;)o[r++]=0;r--}}!function HufCanonicalCodeTable(e){for(let e=0;e<=58;++e)d[e]=0;for(let t=0;t<i;++t)d[e[t]]+=1;let t=0;for(let e=58;e>0;--e){const n=t+d[e]>>1;d[e]=t,t=n}for(let t=0;t<i;++t){const n=e[t];n>0&&(e[t]=n|d[n]++<<6)}}(o)}function HufLength(e){return 63&e}function HufCode(e){return e>>6}function HufUncompress(e,t,n,r,a,o){const c=n.value,u=ParseUint32(t,n),f=ParseUint32(t,n);n.value+=4;const d=ParseUint32(t,n);if(n.value+=4,u<0||u>=i||f<0||f>=i)throw new Error("Wrong HUF_ENCSIZE");const w=new Array(i),p=new Array(l);!function HufClearDecTable(e){for(let t=0;t<l;t++)e[t]={},e[t].len=0,e[t].lit=0,e[t].p=null}(p);if(HufUnpackEncTable(e,n,r-(n.value-c),u,f,w),d>8*(r-(n.value-c)))throw new Error("Wrong hufUncompress");!function HufBuildDecTable(e,t,n,r){for(;t<=n;t++){const n=HufCode(e[t]),a=HufLength(e[t]);if(n>>a)throw new Error("Invalid table entry");if(a>s){const e=r[n>>a-s];if(e.len)throw new Error("Invalid table entry");if(e.lit++,e.p){const t=e.p;e.p=new Array(e.lit);for(let n=0;n<e.lit-1;++n)e.p[n]=t[n]}else e.p=new Array(1);e.p[e.lit-1]=t}else if(a){let e=0;for(let o=1<<s-a;o>0;o--){const o=r[(n<<s-a)+e];if(o.len||o.p)throw new Error("Invalid table entry");o.len=a,o.lit=t,e++}}}return!0}(w,u,f,p),function HufDecode(e,t,n,r,a,o,i,l,c){let u=0,f=0;const d=i,w=Math.trunc(r.value+(a+7)/8);for(;r.value<w;){let a=GetChar(u,f,n,r);for(u=a.c,f=a.lc;f>=s;){const i=t[u>>f-s&16383];if(i.len){f-=i.len;const e=GetCode(i.lit,o,u,f,n,r,l,c,d);e&&(u=e.c,f=e.lc)}else{if(!i.p)throw new Error("hufDecode issues");let t;for(t=0;t<i.lit;t++){const s=HufLength(e[i.p[t]]);for(;f<s&&r.value<w;)a=GetChar(u,f,n,r),u=a.c,f=a.lc;if(f>=s&&HufCode(e[i.p[t]])==(u>>f-s&(1<<s)-1)){f-=s;const e=GetCode(i.p[t],o,u,f,n,r,l,c,d);e&&(u=e.c,f=e.lc);break}}if(t==i.lit)throw new Error("HufDecode issues")}}}const p=8-a&7;for(u>>=p,f-=p;f>0;){const e=t[u<<s-f&16383];if(!e.len)throw new Error("HufDecode issues");{f-=e.len;const t=GetCode(e.lit,o,u,f,n,r,l,c,d);t&&(u=t.c,f=t.lc)}}return!0}(w,p,e,n,d,f,o,a,{value:0})}function UInt16(e){return 65535&e}function Int16(e){const t=UInt16(e);return t>32767?t-65536:t}function Wdec14(e,t){const n=Int16(e),r=Int16(t),a=n+(1&r)+(r>>1);return{a,b:a-r}}function Wdec16(e,t){const n=UInt16(e),r=UInt16(t),a=n-(r>>1)&65535;return{a:r+a-32768&65535,b:a}}function Wav2Decode(e,t,n,r,a,o,s){const i=s<16384,l=n>a?a:n;let c,u,f=1;for(;f<=l;)f<<=1;for(f>>=1,c=f,f>>=1;f>=1;){u=0;const s=u+o*(a-c),l=o*f,d=o*c,w=r*f,p=r*c;let h,P,y,b;for(;u<=s;u+=d){let a=u;const o=u+r*(n-c);for(;a<=o;a+=p){const n=a+w,r=a+l,o=r+w;if(i){let s=Wdec14(e[a+t],e[r+t]);h=s.a,y=s.b,s=Wdec14(e[n+t],e[o+t]),P=s.a,b=s.b,s=Wdec14(h,P),e[a+t]=s.a,e[n+t]=s.b,s=Wdec14(y,b),e[r+t]=s.a,e[o+t]=s.b}else{let s=Wdec16(e[a+t],e[r+t]);h=s.a,y=s.b,s=Wdec16(e[n+t],e[o+t]),P=s.a,b=s.b,s=Wdec16(h,P),e[a+t]=s.a,e[n+t]=s.b,s=Wdec16(y,b),e[r+t]=s.a,e[o+t]=s.b}}if(n&f){const n=a+l;let r;r=i?Wdec14(e[a+t],e[n+t]):Wdec16(e[a+t],e[n+t]),h=r.a,e[n+t]=r.b,e[a+t]=h}}if(a&f){let a=u;const o=u+r*(n-c);for(;a<=o;a+=p){const n=a+w;let r;r=i?Wdec14(e[a+t],e[n+t]):Wdec16(e[a+t],e[n+t]),h=r.a,e[n+t]=r.b,e[a+t]=h}}c=f,f>>=1}return u}function UncompressRAW(e){return new DataView(e.array.buffer,e.offset.value,e.size)}function UncompressRLE(e){const t=e.viewer.buffer.slice(e.offset.value,e.offset.value+e.size),n=new Uint8Array(function DecodeRunLength(e){let t=e.byteLength;const n=new Array;let r=0;const a=new DataView(e);for(;t>0;){const e=a.getInt8(r++);if(e<0){const o=-e;t-=o+1;for(let e=0;e<o;e++)n.push(a.getUint8(r++))}else{const o=e;t-=2;const s=a.getUint8(r++);for(let e=0;e<o+1;e++)n.push(s)}}return n}(t)),r=new Uint8Array(n.length);return Predictor(n),InterleaveScalar(n,r),new DataView(r.buffer)}function UncompressZIP(e){const t=e.array.slice(e.offset.value,e.offset.value+e.size),n=fflate.unzlibSync(t),r=new Uint8Array(n.length);return Predictor(n),InterleaveScalar(n,r),new DataView(r.buffer)}function UncompressPXR(e){const t=e.array.slice(e.offset.value,e.offset.value+e.size),n=fflate.unzlibSync(t),r=e.lines*e.channels*e.width,a=1==e.type?new Uint16Array(r):new Uint32Array(r);let o=0,s=0;const i=new Array(4);for(let t=0;t<e.lines;t++)for(let t=0;t<e.channels;t++){let t=0;switch(e.type){case 1:i[0]=o,i[1]=i[0]+e.width,o=i[1]+e.width;for(let r=0;r<e.width;++r){t+=n[i[0]++]<<8|n[i[1]++],a[s]=t,s++}break;case 2:i[0]=o,i[1]=i[0]+e.width,i[2]=i[1]+e.width,o=i[2]+e.width;for(let r=0;r<e.width;++r){t+=n[i[0]++]<<24|n[i[1]++]<<16|n[i[2]++]<<8,a[s]=t,s++}}}return new DataView(a.buffer)}function UncompressPIZ(e){const t=e.viewer,n={value:e.offset.value},r=new Uint16Array(e.width*e.scanlineBlockSize*(e.channels*e.type)),a=new Uint8Array(8192);let s=0;const i=new Array(e.channels);for(let t=0;t<e.channels;t++)i[t]={},i[t].start=s,i[t].end=i[t].start,i[t].nx=e.width,i[t].ny=e.lines,i[t].size=e.type,s+=i[t].nx*i[t].ny*i[t].size;const l=ParseUint16(t,n),c=ParseUint16(t,n);if(c>=8192)throw new Error("Wrong PIZ_COMPRESSION BITMAP_SIZE");if(l<=c)for(let e=0;e<c-l+1;e++)a[e+l]=ParseUint8(t,n);const u=new Uint16Array(o),f=function ReverseLutFromBitmap(e,t){let n=0;for(let r=0;r<o;++r)(0==r||e[r>>3]&1<<(7&r))&&(t[n++]=r);const r=n-1;for(;n<o;)t[n++]=0;return r}(a,u),d=ParseUint32(t,n);HufUncompress(e.array,t,n,d,r,s);for(let t=0;t<e.channels;++t){const e=i[t];for(let n=0;n<i[t].size;++n)Wav2Decode(r,e.start+n,e.nx,e.size,e.ny,e.nx*e.size,f)}!function ApplyLut(e,t,n){for(let r=0;r<n;++r)t[r]=e[t[r]]}(u,r,s);let w=0;const p=new Uint8Array(r.buffer.byteLength);for(let t=0;t<e.lines;t++)for(let t=0;t<e.channels;t++){const e=i[t],n=e.nx*e.size,a=new Uint8Array(r.buffer,2*e.end,2*n);p.set(a,w),w+=2*n,e.end+=n}return new DataView(p.buffer)}var w,p=n(8741);!function(e){e[e.Float=0]="Float",e[e.HalfFloat=1]="HalfFloat"}(w||(w={}));class ExrLoaderGlobalConfiguration{}ExrLoaderGlobalConfiguration.DefaultOutputType=w.HalfFloat,ExrLoaderGlobalConfiguration.FFLATEUrl="https://unpkg.com/fflate@0.8.2";class _ExrTextureLoader{constructor(){this.supportCascades=!1}loadCubeData(e,t,n,r,a){throw".exr not supported in Cube."}async loadData(e,t,n){const a=new DataView(e.buffer),o={value:0},s=function GetExrHeader(e,t){if(20000630!=e.getUint32(0,!0))throw new Error("Incorrect OpenEXR format");const n=e.getUint8(4),a=e.getUint8(5),o={singleTile:!!(2&a),longName:!!(4&a),deepFormat:!!(8&a),multiPart:!!(16&a)};t.value=8;const s={};let i=!0;for(;i;){const n=ParseNullTerminatedString(e.buffer,t);if(n){const a=ParseNullTerminatedString(e.buffer,t),o=ParseValue(e,t,a,ParseUint32(e,t));void 0===o?r.Y.Warn(`Unknown header attribute type ${a}'.`):s[n]=o}else i=!1}if(0!=(-5&a))throw new Error("Unsupported file format");return{version:n,spec:o,...s}}(a,o),i=await async function CreateDecoderAsync(e,t,n,r){const a={size:0,viewer:t,array:new Uint8Array(t.buffer),offset:n,width:e.dataWindow.xMax-e.dataWindow.xMin+1,height:e.dataWindow.yMax-e.dataWindow.yMin+1,channels:e.channels.length,channelLineOffsets:{},scanOrder:()=>0,bytesPerLine:0,outLineWidth:0,lines:0,scanlineBlockSize:0,inputSize:null,type:0,uncompress:null,getter:()=>0,format:5,outputChannels:0,decodeChannels:{},blockCount:null,byteArray:null,linearSpace:!1,textureType:0};switch(e.compression){case c.NO_COMPRESSION:a.lines=1,a.uncompress=UncompressRAW;break;case c.RLE_COMPRESSION:a.lines=1,a.uncompress=UncompressRLE;break;case c.ZIPS_COMPRESSION:a.lines=1,a.uncompress=UncompressZIP,await p.w1.LoadScriptAsync(ExrLoaderGlobalConfiguration.FFLATEUrl);break;case c.ZIP_COMPRESSION:a.lines=16,a.uncompress=UncompressZIP,await p.w1.LoadScriptAsync(ExrLoaderGlobalConfiguration.FFLATEUrl);break;case c.PIZ_COMPRESSION:a.lines=32,a.uncompress=UncompressPIZ;break;case c.PXR24_COMPRESSION:a.lines=16,a.uncompress=UncompressPXR,await p.w1.LoadScriptAsync(ExrLoaderGlobalConfiguration.FFLATEUrl);break;default:throw new Error(c[e.compression]+" is unsupported")}a.scanlineBlockSize=a.lines;const o={};for(const t of e.channels)switch(t.name){case"Y":case"R":case"G":case"B":case"A":o[t.name]=!0,a.type=t.pixelType}let s=!1;if(o.R&&o.G&&o.B)s=!o.A,a.outputChannels=4,a.decodeChannels={R:0,G:1,B:2,A:3};else{if(!o.Y)throw new Error("EXRLoader.parse: file contains unsupported data channels.");a.outputChannels=1,a.decodeChannels={Y:0}}if(1===a.type)switch(r){case w.Float:a.getter=ParseFloat16,a.inputSize=2;break;case w.HalfFloat:a.getter=ParseUint16,a.inputSize=2}else{if(2!==a.type)throw new Error("Unsupported pixelType "+a.type+" for "+e.compression);switch(r){case w.Float:a.getter=ParseFloat32,a.inputSize=4;break;case w.HalfFloat:a.getter=DecodeFloat32,a.inputSize=4}}a.blockCount=a.height/a.scanlineBlockSize;for(let e=0;e<a.blockCount;e++)ParseInt64(t,n);const i=a.width*a.height*a.outputChannels;switch(r){case w.Float:a.byteArray=new Float32Array(i),a.textureType=1,s&&a.byteArray.fill(1,0,i);break;case w.HalfFloat:a.byteArray=new Uint16Array(i),a.textureType=2,s&&a.byteArray.fill(15360,0,i);break;default:throw new Error("Unsupported type: "+r)}let l=0;for(const t of e.channels)void 0!==a.decodeChannels[t.name]&&(a.channelLineOffsets[t.name]=l*a.width),l+=2*t.pixelType;return a.bytesPerLine=a.width*l,a.outLineWidth=a.width*a.outputChannels,"INCREASING_Y"===e.lineOrder?a.scanOrder=e=>e:a.scanOrder=e=>a.height-1-e,4==a.outputChannels?(a.format=5,a.linearSpace=!0):(a.format=6,a.linearSpace=!1),a}(s,a,o,ExrLoaderGlobalConfiguration.DefaultOutputType);!function ScanData(e,t,n,r){const a={value:0};for(let o=0;o<e.height/e.scanlineBlockSize;o++){const s=ParseInt32(n,r)-t.dataWindow.yMin;e.size=ParseUint32(n,r),e.lines=s+e.scanlineBlockSize>e.height?e.height-s:e.scanlineBlockSize;const i=e.size<e.lines*e.bytesPerLine&&e.uncompress?e.uncompress(e):UncompressRAW(e);r.value+=e.size;for(let n=0;n<e.scanlineBlockSize;n++){const r=o*e.scanlineBlockSize,s=n+e.scanOrder(r);if(s>=e.height)continue;const l=n*e.bytesPerLine,c=(e.height-1-s)*e.outLineWidth;for(let n=0;n<e.channels;n++){const r=t.channels[n].name,o=e.channelLineOffsets[r],s=e.decodeChannels[r];if(void 0!==s){a.value=l+o;for(let t=0;t<e.width;t++){const n=c+t*e.outputChannels+s;e.byteArray&&(e.byteArray[n]=e.getter(i,a))}}}}}}(i,s,a,o);n(s.dataWindow.xMax-s.dataWindow.xMin+1,s.dataWindow.yMax-s.dataWindow.yMin+1,t.generateMipMaps,!1,(()=>{const e=t.getEngine();t.format=s.format,t.type=i.textureType,t.invertY=!1,t._gammaSpace=!s.linearSpace,i.byteArray&&e._uploadDataToTextureDirectly(t,i.byteArray,0,0,void 0,!0)}))}}}}]);
2
+ "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[410],{60410:(e,t,n)=>{n.r(t),n.d(t,{ReadExrDataAsync:()=>ReadExrDataAsync,_ExrTextureLoader:()=>_ExrTextureLoader});var r=n(3146),a=n(61494);const o=65536,s=14,i=65537,l=16384;var c,u;!function(e){e[e.NO_COMPRESSION=0]="NO_COMPRESSION",e[e.RLE_COMPRESSION=1]="RLE_COMPRESSION",e[e.ZIPS_COMPRESSION=2]="ZIPS_COMPRESSION",e[e.ZIP_COMPRESSION=3]="ZIP_COMPRESSION",e[e.PIZ_COMPRESSION=4]="PIZ_COMPRESSION",e[e.PXR24_COMPRESSION=5]="PXR24_COMPRESSION"}(c||(c={})),function(e){e[e.INCREASING_Y=0]="INCREASING_Y",e[e.DECREASING_Y=1]="DECREASING_Y"}(u||(u={}));const f=function GenerateTables(){const e=new ArrayBuffer(4),t=new Float32Array(e),n=new Uint32Array(e),r=new Uint32Array(512),a=new Uint32Array(512);for(let e=0;e<256;++e){const t=e-127;t<-27?(r[e]=0,r[256|e]=32768,a[e]=24,a[256|e]=24):t<-14?(r[e]=1024>>-t-14,r[256|e]=1024>>-t-14|32768,a[e]=-t-1,a[256|e]=-t-1):t<=15?(r[e]=t+15<<10,r[256|e]=t+15<<10|32768,a[e]=13,a[256|e]=13):t<128?(r[e]=31744,r[256|e]=64512,a[e]=24,a[256|e]=24):(r[e]=31744,r[256|e]=64512,a[e]=13,a[256|e]=13)}const o=new Uint32Array(2048),s=new Uint32Array(64),i=new Uint32Array(64);for(let e=1;e<1024;++e){let t=e<<13,n=0;for(;0==(8388608&t);)t<<=1,n-=8388608;t&=-8388609,n+=947912704,o[e]=t|n}for(let e=1024;e<2048;++e)o[e]=939524096+(e-1024<<13);for(let e=1;e<31;++e)s[e]=e<<23;s[31]=1199570944,s[32]=2147483648;for(let e=33;e<63;++e)s[e]=2147483648+(e-32<<23);s[63]=3347054592;for(let e=1;e<64;++e)32!==e&&(i[e]=1024);return{floatView:t,uint32View:n,baseTable:r,shiftTable:a,mantissaTable:o,exponentTable:s,offsetTable:i}}();function ParseNullTerminatedString(e,t){const n=new Uint8Array(e);let r=0;for(;0!=n[t.value+r];)r+=1;const a=(new TextDecoder).decode(n.slice(t.value,t.value+r));return t.value=t.value+r+1,a}function ParseInt32(e,t){const n=e.getInt32(t.value,!0);return t.value+=4,n}function ParseUint32(e,t){const n=e.getUint32(t.value,!0);return t.value+=4,n}function ParseUint8(e,t){const n=e.getUint8(t.value);return t.value+=1,n}function ParseUint16(e,t){const n=e.getUint16(t.value,!0);return t.value+=2,n}function ParseUint8Array(e,t){const n=e[t.value];return t.value+=1,n}function ParseInt64(e,t){let n;return n="getBigInt64"in DataView.prototype?Number(e.getBigInt64(t.value,!0)):e.getUint32(t.value+4,!0)+Number(e.getUint32(t.value,!0)<<32),t.value+=8,n}function ParseFloat32(e,t){const n=e.getFloat32(t.value,!0);return t.value+=4,n}function ParseFloat16(e,t){return function DecodeFloat16(e){const t=(31744&e)>>10,n=1023&e;return(e>>15?-1:1)*(t?31===t?n?NaN:1/0:Math.pow(2,t-15)*(1+n/1024):n/1024*6103515625e-14)}(ParseUint16(e,t))}function DecodeFloat32(e,t){return function ToHalfFloat(e){if(Math.abs(e)>65504)throw new Error("Value out of range.Consider using float instead of half-float.");e=(0,a.Clamp)(e,-65504,65504),f.floatView[0]=e;const t=f.uint32View[0],n=t>>23&511;return f.baseTable[n]+((8388607&t)>>f.shiftTable[n])}(ParseFloat32(e,t))}function ParseValue(e,t,n,r){switch(n){case"string":case"stringvector":case"iccProfile":return function ParseFixedLengthString(e,t,n){const r=(new TextDecoder).decode(new Uint8Array(e).slice(t.value,t.value+n));return t.value=t.value+n,r}(e.buffer,t,r);case"chlist":return function ParseChlist(e,t,n){const r=t.value,a=[];for(;t.value<r+n-1;){const n=ParseNullTerminatedString(e.buffer,t),r=ParseInt32(e,t),o=ParseUint8(e,t);t.value+=3;const s=ParseInt32(e,t),i=ParseInt32(e,t);a.push({name:n,pixelType:r,pLinear:o,xSampling:s,ySampling:i})}return t.value+=1,a}(e,t,r);case"chromaticities":return function ParseChromaticities(e,t){return{redX:ParseFloat32(e,t),redY:ParseFloat32(e,t),greenX:ParseFloat32(e,t),greenY:ParseFloat32(e,t),blueX:ParseFloat32(e,t),blueY:ParseFloat32(e,t),whiteX:ParseFloat32(e,t),whiteY:ParseFloat32(e,t)}}(e,t);case"compression":return function ParseCompression(e,t){return ParseUint8(e,t)}(e,t);case"box2i":return function ParseBox2i(e,t){return{xMin:ParseInt32(e,t),yMin:ParseInt32(e,t),xMax:ParseInt32(e,t),yMax:ParseInt32(e,t)}}(e,t);case"lineOrder":return function ParseLineOrder(e,t){const n=ParseUint8(e,t);return u[n]}(e,t);case"float":return ParseFloat32(e,t);case"v2f":return function ParseV2f(e,t){return[ParseFloat32(e,t),ParseFloat32(e,t)]}(e,t);case"v3f":return function ParseV3f(e,t){return[ParseFloat32(e,t),ParseFloat32(e,t),ParseFloat32(e,t)]}(e,t);case"int":return ParseInt32(e,t);case"rational":return function ParseRational(e,t){return[ParseInt32(e,t),ParseUint32(e,t)]}(e,t);case"timecode":return function ParseTimecode(e,t){return[ParseUint32(e,t),ParseUint32(e,t)]}(e,t);case"preview":return t.value+=r,"skipped";default:return void(t.value+=r)}}function Predictor(e){for(let t=1;t<e.length;t++){const n=e[t-1]+e[t]-128;e[t]=n}}function InterleaveScalar(e,t){let n=0,r=Math.floor((e.length+1)/2),a=0;const o=e.length-1;for(;!(a>o||(t[a++]=e[n++],a>o));)t[a++]=e[r++]}function GetExrHeader(e,t){if(20000630!=e.getUint32(0,!0))throw new Error("Incorrect OpenEXR format");const n=e.getUint8(4),a=e.getUint8(5),o={singleTile:!!(2&a),longName:!!(4&a),deepFormat:!!(8&a),multiPart:!!(16&a)};t.value=8;const s={};let i=!0;for(;i;){const n=ParseNullTerminatedString(e.buffer,t);if(n){const a=ParseNullTerminatedString(e.buffer,t),o=ParseValue(e,t,a,ParseUint32(e,t));void 0===o?r.Y.Warn(`Unknown header attribute type ${a}'.`):s[n]=o}else i=!1}if(0!=(-5&a))throw new Error("Unsupported file format");return{version:n,spec:o,...s}}function GetBits(e,t,n,r,a){for(;n<e;)t=t<<8|ParseUint8Array(r,a),n+=8;return{l:t>>(n-=e)&(1<<e)-1,c:t,lc:n}}function GetChar(e,t,n,r){return{c:e=e<<8|ParseUint8Array(n,r),lc:t+=8}}function GetCode(e,t,n,r,a,o,s,i,l){if(e==t){if(r<8){const e=GetChar(n,r,a,o);n=e.c,r=e.lc}let e=n>>(r-=8);if(e=new Uint8Array([e])[0],i.value+e>l)return null;const t=s[i.value-1];for(;e-- >0;)s[i.value++]=t}else{if(!(i.value<l))return null;s[i.value++]=e}return{c:n,lc:r}}const d=new Array(59);function HufUnpackEncTable(e,t,n,r,a,o){const s=t;let l=0,c=0;for(;r<=a;r++){if(s.value-t.value>n)return;let i=GetBits(6,l,c,e,s);const u=i.l;if(l=i.c,c=i.lc,o[r]=u,63==u){if(s.value-t.value>n)throw new Error("Error in HufUnpackEncTable");i=GetBits(8,l,c,e,s);let u=i.l+6;if(l=i.c,c=i.lc,r+u>a+1)throw new Error("Error in HufUnpackEncTable");for(;u--;)o[r++]=0;r--}else if(u>=59){let e=u-59+2;if(r+e>a+1)throw new Error("Error in HufUnpackEncTable");for(;e--;)o[r++]=0;r--}}!function HufCanonicalCodeTable(e){for(let e=0;e<=58;++e)d[e]=0;for(let t=0;t<i;++t)d[e[t]]+=1;let t=0;for(let e=58;e>0;--e){const n=t+d[e]>>1;d[e]=t,t=n}for(let t=0;t<i;++t){const n=e[t];n>0&&(e[t]=n|d[n]++<<6)}}(o)}function HufLength(e){return 63&e}function HufCode(e){return e>>6}function HufUncompress(e,t,n,r,a,o){const c=n.value,u=ParseUint32(t,n),f=ParseUint32(t,n);n.value+=4;const d=ParseUint32(t,n);if(n.value+=4,u<0||u>=i||f<0||f>=i)throw new Error("Wrong HUF_ENCSIZE");const h=new Array(i),w=new Array(l);!function HufClearDecTable(e){for(let t=0;t<l;t++)e[t]={},e[t].len=0,e[t].lit=0,e[t].p=null}(w);if(HufUnpackEncTable(e,n,r-(n.value-c),u,f,h),d>8*(r-(n.value-c)))throw new Error("Wrong hufUncompress");!function HufBuildDecTable(e,t,n,r){for(;t<=n;t++){const n=HufCode(e[t]),a=HufLength(e[t]);if(n>>a)throw new Error("Invalid table entry");if(a>s){const e=r[n>>a-s];if(e.len)throw new Error("Invalid table entry");if(e.lit++,e.p){const t=e.p;e.p=new Array(e.lit);for(let n=0;n<e.lit-1;++n)e.p[n]=t[n]}else e.p=new Array(1);e.p[e.lit-1]=t}else if(a){let e=0;for(let o=1<<s-a;o>0;o--){const o=r[(n<<s-a)+e];if(o.len||o.p)throw new Error("Invalid table entry");o.len=a,o.lit=t,e++}}}return!0}(h,u,f,w),function HufDecode(e,t,n,r,a,o,i,l,c){let u=0,f=0;const d=i,h=Math.trunc(r.value+(a+7)/8);for(;r.value<h;){let a=GetChar(u,f,n,r);for(u=a.c,f=a.lc;f>=s;){const i=t[u>>f-s&16383];if(i.len){f-=i.len;const e=GetCode(i.lit,o,u,f,n,r,l,c,d);e&&(u=e.c,f=e.lc)}else{if(!i.p)throw new Error("hufDecode issues");let t;for(t=0;t<i.lit;t++){const s=HufLength(e[i.p[t]]);for(;f<s&&r.value<h;)a=GetChar(u,f,n,r),u=a.c,f=a.lc;if(f>=s&&HufCode(e[i.p[t]])==(u>>f-s&(1<<s)-1)){f-=s;const e=GetCode(i.p[t],o,u,f,n,r,l,c,d);e&&(u=e.c,f=e.lc);break}}if(t==i.lit)throw new Error("HufDecode issues")}}}const w=8-a&7;for(u>>=w,f-=w;f>0;){const e=t[u<<s-f&16383];if(!e.len)throw new Error("HufDecode issues");{f-=e.len;const t=GetCode(e.lit,o,u,f,n,r,l,c,d);t&&(u=t.c,f=t.lc)}}return!0}(h,w,e,n,d,f,o,a,{value:0})}function UInt16(e){return 65535&e}function Int16(e){const t=UInt16(e);return t>32767?t-65536:t}function Wdec14(e,t){const n=Int16(e),r=Int16(t),a=n+(1&r)+(r>>1);return{a,b:a-r}}function Wdec16(e,t){const n=UInt16(e),r=UInt16(t),a=n-(r>>1)&65535;return{a:r+a-32768&65535,b:a}}function Wav2Decode(e,t,n,r,a,o,s){const i=s<16384,l=n>a?a:n;let c,u,f=1;for(;f<=l;)f<<=1;for(f>>=1,c=f,f>>=1;f>=1;){u=0;const s=u+o*(a-c),l=o*f,d=o*c,h=r*f,w=r*c;let p,y,P,b;for(;u<=s;u+=d){let a=u;const o=u+r*(n-c);for(;a<=o;a+=w){const n=a+h,r=a+l,o=r+h;if(i){let s=Wdec14(e[a+t],e[r+t]);p=s.a,P=s.b,s=Wdec14(e[n+t],e[o+t]),y=s.a,b=s.b,s=Wdec14(p,y),e[a+t]=s.a,e[n+t]=s.b,s=Wdec14(P,b),e[r+t]=s.a,e[o+t]=s.b}else{let s=Wdec16(e[a+t],e[r+t]);p=s.a,P=s.b,s=Wdec16(e[n+t],e[o+t]),y=s.a,b=s.b,s=Wdec16(p,y),e[a+t]=s.a,e[n+t]=s.b,s=Wdec16(P,b),e[r+t]=s.a,e[o+t]=s.b}}if(n&f){const n=a+l;let r;r=i?Wdec14(e[a+t],e[n+t]):Wdec16(e[a+t],e[n+t]),p=r.a,e[n+t]=r.b,e[a+t]=p}}if(a&f){let a=u;const o=u+r*(n-c);for(;a<=o;a+=w){const n=a+h;let r;r=i?Wdec14(e[a+t],e[n+t]):Wdec16(e[a+t],e[n+t]),p=r.a,e[n+t]=r.b,e[a+t]=p}}c=f,f>>=1}return u}function UncompressRAW(e){return new DataView(e.array.buffer,e.offset.value,e.size)}function UncompressRLE(e){const t=e.viewer.buffer.slice(e.offset.value,e.offset.value+e.size),n=new Uint8Array(function DecodeRunLength(e){let t=e.byteLength;const n=[];let r=0;const a=new DataView(e);for(;t>0;){const e=a.getInt8(r++);if(e<0){const o=-e;t-=o+1;for(let e=0;e<o;e++)n.push(a.getUint8(r++))}else{const o=e;t-=2;const s=a.getUint8(r++);for(let e=0;e<o+1;e++)n.push(s)}}return n}(t)),r=new Uint8Array(n.length);return Predictor(n),InterleaveScalar(n,r),new DataView(r.buffer)}function UncompressZIP(e){const t=e.array.slice(e.offset.value,e.offset.value+e.size),n=fflate.unzlibSync(t),r=new Uint8Array(n.length);return Predictor(n),InterleaveScalar(n,r),new DataView(r.buffer)}function UncompressPXR(e){const t=e.array.slice(e.offset.value,e.offset.value+e.size),n=fflate.unzlibSync(t),r=e.lines*e.channels*e.width,a=1==e.type?new Uint16Array(r):new Uint32Array(r);let o=0,s=0;const i=new Array(4);for(let t=0;t<e.lines;t++)for(let t=0;t<e.channels;t++){let t=0;switch(e.type){case 1:i[0]=o,i[1]=i[0]+e.width,o=i[1]+e.width;for(let r=0;r<e.width;++r){t+=n[i[0]++]<<8|n[i[1]++],a[s]=t,s++}break;case 2:i[0]=o,i[1]=i[0]+e.width,i[2]=i[1]+e.width,o=i[2]+e.width;for(let r=0;r<e.width;++r){t+=n[i[0]++]<<24|n[i[1]++]<<16|n[i[2]++]<<8,a[s]=t,s++}}}return new DataView(a.buffer)}function UncompressPIZ(e){const t=e.viewer,n={value:e.offset.value},r=new Uint16Array(e.width*e.scanlineBlockSize*(e.channels*e.type)),a=new Uint8Array(8192);let s=0;const i=new Array(e.channels);for(let t=0;t<e.channels;t++)i[t]={},i[t].start=s,i[t].end=i[t].start,i[t].nx=e.width,i[t].ny=e.lines,i[t].size=e.type,s+=i[t].nx*i[t].ny*i[t].size;const l=ParseUint16(t,n),c=ParseUint16(t,n);if(c>=8192)throw new Error("Wrong PIZ_COMPRESSION BITMAP_SIZE");if(l<=c)for(let e=0;e<c-l+1;e++)a[e+l]=ParseUint8(t,n);const u=new Uint16Array(o),f=function ReverseLutFromBitmap(e,t){let n=0;for(let r=0;r<o;++r)(0==r||e[r>>3]&1<<(7&r))&&(t[n++]=r);const r=n-1;for(;n<o;)t[n++]=0;return r}(a,u),d=ParseUint32(t,n);HufUncompress(e.array,t,n,d,r,s);for(let t=0;t<e.channels;++t){const e=i[t];for(let n=0;n<i[t].size;++n)Wav2Decode(r,e.start+n,e.nx,e.size,e.ny,e.nx*e.size,f)}!function ApplyLut(e,t,n){for(let r=0;r<n;++r)t[r]=e[t[r]]}(u,r,s);let h=0;const w=new Uint8Array(r.buffer.byteLength);for(let t=0;t<e.lines;t++)for(let t=0;t<e.channels;t++){const e=i[t],n=e.nx*e.size,a=new Uint8Array(r.buffer,2*e.end,2*n);w.set(a,h),h+=2*n,e.end+=n}return new DataView(w.buffer)}var h,w=n(88741);!function(e){e[e.Float=0]="Float",e[e.HalfFloat=1]="HalfFloat"}(h||(h={}));class ExrLoaderGlobalConfiguration{}async function CreateDecoderAsync(e,t,n,r){const a={size:0,viewer:t,array:new Uint8Array(t.buffer),offset:n,width:e.dataWindow.xMax-e.dataWindow.xMin+1,height:e.dataWindow.yMax-e.dataWindow.yMin+1,channels:e.channels.length,channelLineOffsets:{},scanOrder:()=>0,bytesPerLine:0,outLineWidth:0,lines:0,scanlineBlockSize:0,inputSize:null,type:0,uncompress:null,getter:()=>0,format:5,outputChannels:0,decodeChannels:{},blockCount:null,byteArray:null,linearSpace:!1,textureType:0};switch(e.compression){case c.NO_COMPRESSION:a.lines=1,a.uncompress=UncompressRAW;break;case c.RLE_COMPRESSION:a.lines=1,a.uncompress=UncompressRLE;break;case c.ZIPS_COMPRESSION:a.lines=1,a.uncompress=UncompressZIP,await w.w1.LoadScriptAsync(ExrLoaderGlobalConfiguration.FFLATEUrl);break;case c.ZIP_COMPRESSION:a.lines=16,a.uncompress=UncompressZIP,await w.w1.LoadScriptAsync(ExrLoaderGlobalConfiguration.FFLATEUrl);break;case c.PIZ_COMPRESSION:a.lines=32,a.uncompress=UncompressPIZ;break;case c.PXR24_COMPRESSION:a.lines=16,a.uncompress=UncompressPXR,await w.w1.LoadScriptAsync(ExrLoaderGlobalConfiguration.FFLATEUrl);break;default:throw new Error(c[e.compression]+" is unsupported")}a.scanlineBlockSize=a.lines;const o={};for(const t of e.channels)switch(t.name){case"R":case"G":case"B":case"A":case"Y":o[t.name]=!0,a.type=t.pixelType}let s=!1;if(o.R&&o.G&&o.B&&o.A)a.outputChannels=4,a.decodeChannels={R:0,G:1,B:2,A:3};else if(o.R&&o.G&&o.B)s=!0,a.outputChannels=4,a.decodeChannels={R:0,G:1,B:2,A:3};else if(o.R&&o.G)a.outputChannels=2,a.decodeChannels={R:0,G:1};else if(o.R)a.outputChannels=1,a.decodeChannels={R:0};else{if(!o.Y)throw new Error("EXRLoader.parse: file contains unsupported data channels.");a.outputChannels=1,a.decodeChannels={Y:0}}if(1===a.type)switch(r){case h.Float:a.getter=ParseFloat16,a.inputSize=2;break;case h.HalfFloat:a.getter=ParseUint16,a.inputSize=2}else{if(2!==a.type)throw new Error("Unsupported pixelType "+a.type+" for "+e.compression);switch(r){case h.Float:a.getter=ParseFloat32,a.inputSize=4;break;case h.HalfFloat:a.getter=DecodeFloat32,a.inputSize=4}}a.blockCount=a.height/a.scanlineBlockSize;for(let e=0;e<a.blockCount;e++)ParseInt64(t,n);const i=a.width*a.height*a.outputChannels;switch(r){case h.Float:a.byteArray=new Float32Array(i),a.textureType=1,s&&a.byteArray.fill(1,0,i);break;case h.HalfFloat:a.byteArray=new Uint16Array(i),a.textureType=2,s&&a.byteArray.fill(15360,0,i);break;default:throw new Error("Unsupported type: "+r)}let l=0;for(const t of e.channels)void 0!==a.decodeChannels[t.name]&&(a.channelLineOffsets[t.name]=l*a.width),l+=2*t.pixelType;return a.bytesPerLine=a.width*l,a.outLineWidth=a.width*a.outputChannels,"INCREASING_Y"===e.lineOrder?a.scanOrder=e=>e:a.scanOrder=e=>a.height-1-e,4==a.outputChannels?(a.format=5,a.linearSpace=!0):(a.format=6,a.linearSpace=!1),a}function ScanData(e,t,n,r){const a={value:0};for(let o=0;o<e.height/e.scanlineBlockSize;o++){const s=ParseInt32(n,r)-t.dataWindow.yMin;e.size=ParseUint32(n,r),e.lines=s+e.scanlineBlockSize>e.height?e.height-s:e.scanlineBlockSize;const i=e.size<e.lines*e.bytesPerLine&&e.uncompress?e.uncompress(e):UncompressRAW(e);r.value+=e.size;for(let n=0;n<e.scanlineBlockSize;n++){const r=o*e.scanlineBlockSize,s=n+e.scanOrder(r);if(s>=e.height)continue;const l=n*e.bytesPerLine,c=(e.height-1-s)*e.outLineWidth;for(let n=0;n<e.channels;n++){const r=t.channels[n].name,o=e.channelLineOffsets[r],s=e.decodeChannels[r];if(void 0!==s){a.value=l+o;for(let t=0;t<e.width;t++){const n=c+t*e.outputChannels+s;e.byteArray&&(e.byteArray[n]=e.getter(i,a))}}}}}}ExrLoaderGlobalConfiguration.DefaultOutputType=h.HalfFloat,ExrLoaderGlobalConfiguration.FFLATEUrl="https://unpkg.com/fflate@0.8.2";class _ExrTextureLoader{constructor(){this.supportCascades=!1}loadCubeData(e,t,n,r,a){throw".exr not supported in Cube."}loadData(e,t,n){const a=new DataView(e.buffer),o={value:0},s=GetExrHeader(a,o);CreateDecoderAsync(s,a,o,ExrLoaderGlobalConfiguration.DefaultOutputType).then((e=>{ScanData(e,s,a,o);const r=s.dataWindow.xMax-s.dataWindow.xMin+1,i=s.dataWindow.yMax-s.dataWindow.yMin+1;n(r,i,t.generateMipMaps,!1,(()=>{const n=t.getEngine();t.format=s.format,t.type=e.textureType,t.invertY=!1,t._gammaSpace=!s.linearSpace,e.byteArray&&n._uploadDataToTextureDirectly(t,e.byteArray,0,0,void 0,!0)}))})).catch((e=>{r.Y.Error("Failed to load EXR texture: ",e)}))}}async function ReadExrDataAsync(e){const t=new DataView(e),n={value:0},a=GetExrHeader(t,n);try{const e=await CreateDecoderAsync(a,t,n,h.Float);return ScanData(e,a,t,n),e.byteArray?{width:a.dataWindow.xMax-a.dataWindow.xMin+1,height:a.dataWindow.yMax-a.dataWindow.yMin+1,data:new Float32Array(e.byteArray)}:(r.Y.Error("Failed to decode EXR data: No byte array available."),{width:0,height:0,data:null})}catch(e){r.Y.Error("Failed to load EXR data: ",e)}return{width:0,height:0,data:null}}}}]);
@@ -0,0 +1,2 @@
1
+ /*! For license information please see 4141.real-time-viewer.umd.min.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[4141],{97555:(e,n,f)=>{var r=f(17416);const o="fogFragment",a="#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";r.v.IncludesShadersStoreWGSL[o]||(r.v.IncludesShadersStoreWGSL[o]=a)},80750:(e,n,f)=>{var r=f(17416);const o="fogFragmentDeclaration",a="#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";r.v.IncludesShadersStoreWGSL[o]||(r.v.IncludesShadersStoreWGSL[o]=a)},37470:(e,n,f)=>{var r=f(17416);const o="logDepthDeclaration",a="#ifdef LOGARITHMICDEPTH\nuniform logarithmicDepthConstant: f32;varying vFragmentDepth: f32;\n#endif\n";r.v.IncludesShadersStoreWGSL[o]||(r.v.IncludesShadersStoreWGSL[o]=a)},954:(e,n,f)=>{var r=f(17416);const o="logDepthFragment",a="#ifdef LOGARITHMICDEPTH\nfragmentOutputs.fragDepth=log2(fragmentInputs.vFragmentDepth)*uniforms.logarithmicDepthConstant*0.5;\n#endif\n";r.v.IncludesShadersStoreWGSL[o]||(r.v.IncludesShadersStoreWGSL[o]=a)},24141:(e,n,f)=>{f.r(n),f.d(n,{spritesPixelShaderWGSL:()=>i});var r=f(17416);f(80750),f(37470),f(954),f(97555);const o="#ifdef IMAGEPROCESSINGPOSTPROCESS\nfragmentOutputs.color=vec4f(pow(fragmentOutputs.color.rgb, vec3f(2.2)),fragmentOutputs.color.a);\n#endif\n";r.v.IncludesShadersStoreWGSL.imageProcessingCompatibility||(r.v.IncludesShadersStoreWGSL.imageProcessingCompatibility=o);const a="spritesPixelShader",t="uniform alphaTest: i32;varying vColor: vec4f;varying vUV: vec2f;var diffuseSamplerSampler: sampler;var diffuseSampler: texture_2d<f32>;\n#include<fogFragmentDeclaration>\n#include<logDepthDeclaration>\n#define CUSTOM_FRAGMENT_DEFINITIONS\n#ifdef PIXEL_PERFECT\nfn uvPixelPerfect(uv: vec2f)->vec2f {var res: vec2f= vec2f(textureDimensions(diffuseSampler,0));var uvTemp=uv*res;var seam: vec2f=floor(uvTemp+0.5);uvTemp=seam+clamp((uvTemp-seam)/fwidth(uvTemp),vec2f(-0.5),vec2f(0.5));return uvTemp/res;}\n#endif\n@fragment\nfn main(input: FragmentInputs)->FragmentOutputs {\n#define CUSTOM_FRAGMENT_MAIN_BEGIN\n#ifdef PIXEL_PERFECT\nvar uv: vec2f=uvPixelPerfect(input.vUV);\n#else\nvar uv: vec2f=input.vUV;\n#endif\nvar color: vec4f=textureSample(diffuseSampler,diffuseSamplerSampler,uv);var fAlphaTest: f32= f32(uniforms.alphaTest);if (fAlphaTest != 0.)\n{if (color.a<0.95) {discard;}}\ncolor*=input.vColor;\n#include<logDepthFragment>\n#include<fogFragment>\nfragmentOutputs.color=color;\n#include<imageProcessingCompatibility>\n#define CUSTOM_FRAGMENT_MAIN_END\n}";r.v.ShadersStoreWGSL.spritesPixelShader||(r.v.ShadersStoreWGSL.spritesPixelShader=t);const i={name:a,shader:t}}}]);
@@ -0,0 +1 @@
1
+ /*! filename:4141 */
@@ -1,2 +1,2 @@
1
1
  /*! For license information please see 4153.real-time-viewer.umd.min.js.LICENSE.txt */
2
- "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[4153],{1740:(n,e,i)=>{var o=i(7416);i(2889);const t="backgroundUboDeclaration",f="layout(std140,column_major) uniform;uniform Material\n{uniform vec4 vPrimaryColor;uniform vec4 vPrimaryColorShadow;uniform vec2 vDiffuseInfos;uniform vec2 vReflectionInfos;uniform mat4 diffuseMatrix;uniform mat4 reflectionMatrix;uniform vec3 vReflectionMicrosurfaceInfos;uniform float fFovMultiplier;uniform float pointSize;uniform float shadowLevel;uniform float alpha;uniform vec3 vBackgroundCenter;uniform vec4 vReflectionControl;uniform vec2 projectedGroundInfos;};\n#include<sceneUboDeclaration>\n";o.v.IncludesShadersStore[t]=f},7987:(n,e,i)=>{const o="fogVertex",t="#ifdef FOG\nvFogDistance=(view*worldPos).xyz;\n#endif\n";i(7416).v.IncludesShadersStore[o]=t},373:(n,e,i)=>{const o="fogVertexDeclaration",t="#ifdef FOG\nvarying vec3 vFogDistance;\n#endif\n";i(7416).v.IncludesShadersStore[o]=t},6589:(n,e,i)=>{const o="lightVxFragmentDeclaration",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}];varying vec4 vPositionFromLight{X}[SHADOWCSMNUM_CASCADES{X}];varying float vDepthMetric{X}[SHADOWCSMNUM_CASCADES{X}];varying vec4 vPositionFromCamera{X};\n#elif defined(SHADOWCUBE{X})\n#else\nvarying vec4 vPositionFromLight{X};varying float vDepthMetric{X};uniform 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#endif\n";i(7416).v.IncludesShadersStore[o]=t},5377:(n,e,i)=>{const o="lightVxUboDeclaration",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 SHADOW{X}\n#ifdef SHADOWCSM{X}\nuniform mat4 lightMatrix{X}[SHADOWCSMNUM_CASCADES{X}];varying vec4 vPositionFromLight{X}[SHADOWCSMNUM_CASCADES{X}];varying float vDepthMetric{X}[SHADOWCSMNUM_CASCADES{X}];varying vec4 vPositionFromCamera{X};\n#elif defined(SHADOWCUBE{X})\n#else\nvarying vec4 vPositionFromLight{X};varying float vDepthMetric{X};uniform mat4 lightMatrix{X};\n#endif\n#endif\n#endif\n";i(7416).v.IncludesShadersStore[o]=t},9481:(n,e,i)=>{const o="logDepthDeclaration",t="#ifdef LOGARITHMICDEPTH\nuniform float logarithmicDepthConstant;varying float vFragmentDepth;\n#endif\n";i(7416).v.IncludesShadersStore[o]=t},627:(n,e,i)=>{const o="logDepthVertex",t="#ifdef LOGARITHMICDEPTH\nvFragmentDepth=1.0+gl_Position.w;gl_Position.z=log2(max(0.000001,vFragmentDepth))*logarithmicDepthConstant;\n#endif\n";i(7416).v.IncludesShadersStore[o]=t},8520:(n,e,i)=>{const o="shadowsVertex",t="#ifdef SHADOWS\n#if defined(SHADOWCSM{X})\nvPositionFromCamera{X}=view*worldPos;for (int i=0; i<SHADOWCSMNUM_CASCADES{X}; i++) {vPositionFromLight{X}[i]=lightMatrix{X}[i]*worldPos;\n#ifdef USE_REVERSE_DEPTHBUFFER\nvDepthMetric{X}[i]=(-vPositionFromLight{X}[i].z+light{X}.depthValues.x)/light{X}.depthValues.y;\n#else\nvDepthMetric{X}[i]=(vPositionFromLight{X}[i].z+light{X}.depthValues.x)/light{X}.depthValues.y;\n#endif\n}\n#elif defined(SHADOW{X}) && !defined(SHADOWCUBE{X})\nvPositionFromLight{X}=lightMatrix{X}*worldPos;\n#ifdef USE_REVERSE_DEPTHBUFFER\nvDepthMetric{X}=(-vPositionFromLight{X}.z+light{X}.depthValues.x)/light{X}.depthValues.y;\n#else\nvDepthMetric{X}=(vPositionFromLight{X}.z+light{X}.depthValues.x)/light{X}.depthValues.y;\n#endif\n#endif\n#endif\n";i(7416).v.IncludesShadersStore[o]=t},4153:(n,e,i)=>{i.r(e),i.d(e,{backgroundVertexShader:()=>a});var o=i(7416);const t="uniform mat4 view;uniform mat4 viewProjection;uniform float shadowLevel;\n#ifdef DIFFUSE\nuniform mat4 diffuseMatrix;uniform vec2 vDiffuseInfos;\n#endif\n#ifdef REFLECTION\nuniform vec2 vReflectionInfos;uniform mat4 reflectionMatrix;uniform vec3 vReflectionMicrosurfaceInfos;uniform float fFovMultiplier;\n#endif\n#ifdef POINTSIZE\nuniform float pointSize;\n#endif\n";o.v.IncludesShadersStore.backgroundVertexDeclaration=t;i(1740),i(5276),i(3827),i(2335),i(4122),i(110),i(373),i(6589),i(5377),i(9481),i(9449),i(6096),i(3749),i(3888),i(7987),i(8520),i(627);const f="backgroundVertexShader",r="precision highp float;\n#include<__decl__backgroundVertex>\n#include<helperFunctions>\nattribute vec3 position;\n#ifdef NORMAL\nattribute vec3 normal;\n#endif\n#include<bonesDeclaration>\n#include<bakedVertexAnimationDeclaration>\n#include<instancesDeclaration>\nvarying vec3 vPositionW;\n#ifdef NORMAL\nvarying vec3 vNormalW;\n#endif\n#ifdef UV1\nattribute vec2 uv;\n#endif\n#ifdef UV2\nattribute vec2 uv2;\n#endif\n#ifdef MAINUV1\nvarying vec2 vMainUV1;\n#endif\n#ifdef MAINUV2\nvarying vec2 vMainUV2;\n#endif\n#if defined(DIFFUSE) && DIFFUSEDIRECTUV==0\nvarying vec2 vDiffuseUV;\n#endif\n#include<clipPlaneVertexDeclaration>\n#include<fogVertexDeclaration>\n#include<__decl__lightVxFragment>[0..maxSimultaneousLights]\n#ifdef REFLECTIONMAP_SKYBOX\nvarying vec3 vPositionUVW;\n#endif\n#if defined(REFLECTIONMAP_EQUIRECTANGULAR_FIXED) || defined(REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED)\nvarying vec3 vDirectionW;\n#endif\n#include<logDepthDeclaration>\n#define CUSTOM_VERTEX_DEFINITIONS\nvoid main(void) {\n#define CUSTOM_VERTEX_MAIN_BEGIN\n#ifdef REFLECTIONMAP_SKYBOX\nvPositionUVW=position;\n#endif\n#include<instancesVertex>\n#include<bonesVertex>\n#include<bakedVertexAnimation>\n#ifdef MULTIVIEW\nif (gl_ViewID_OVR==0u) {gl_Position=viewProjection*finalWorld*vec4(position,1.0);} else {gl_Position=viewProjectionR*finalWorld*vec4(position,1.0);}\n#else\ngl_Position=viewProjection*finalWorld*vec4(position,1.0);\n#endif\nvec4 worldPos=finalWorld*vec4(position,1.0);vPositionW=vec3(worldPos);\n#ifdef NORMAL\nmat3 normalWorld=mat3(finalWorld);\n#ifdef NONUNIFORMSCALING\nnormalWorld=transposeMat3(inverseMat3(normalWorld));\n#endif\nvNormalW=normalize(normalWorld*normal);\n#endif\n#if defined(REFLECTIONMAP_EQUIRECTANGULAR_FIXED) || defined(REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED)\nvDirectionW=normalize(vec3(finalWorld*vec4(position,0.0)));\n#ifdef EQUIRECTANGULAR_RELFECTION_FOV\nmat3 screenToWorld=inverseMat3(mat3(finalWorld*viewProjection));vec3 segment=mix(vDirectionW,screenToWorld*vec3(0.0,0.0,1.0),abs(fFovMultiplier-1.0));if (fFovMultiplier<=1.0) {vDirectionW=normalize(segment);} else {vDirectionW=normalize(vDirectionW+(vDirectionW-segment));}\n#endif\n#endif\n#ifndef UV1\nvec2 uv=vec2(0.,0.);\n#endif\n#ifndef UV2\nvec2 uv2=vec2(0.,0.);\n#endif\n#ifdef MAINUV1\nvMainUV1=uv;\n#endif\n#ifdef MAINUV2\nvMainUV2=uv2;\n#endif\n#if defined(DIFFUSE) && DIFFUSEDIRECTUV==0\nif (vDiffuseInfos.x==0.)\n{vDiffuseUV=vec2(diffuseMatrix*vec4(uv,1.0,0.0));}\nelse\n{vDiffuseUV=vec2(diffuseMatrix*vec4(uv2,1.0,0.0));}\n#endif\n#include<clipPlaneVertex>\n#include<fogVertex>\n#include<shadowsVertex>[0..maxSimultaneousLights]\n#ifdef VERTEXCOLOR\nvColor=color;\n#endif\n#if defined(POINTSIZE) && !defined(WEBGPU)\ngl_PointSize=pointSize;\n#endif\n#include<logDepthVertex>\n#define CUSTOM_VERTEX_MAIN_END\n}\n";o.v.ShadersStore.backgroundVertexShader=r;const a={name:f,shader:r}}}]);
2
+ "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[4153],{31740:(e,n,i)=>{var o=i(17416);i(2889);const t="backgroundUboDeclaration",r="layout(std140,column_major) uniform;uniform Material\n{uniform vec4 vPrimaryColor;uniform vec4 vPrimaryColorShadow;uniform vec2 vDiffuseInfos;uniform vec2 vReflectionInfos;uniform mat4 diffuseMatrix;uniform mat4 reflectionMatrix;uniform vec3 vReflectionMicrosurfaceInfos;uniform float fFovMultiplier;uniform float pointSize;uniform float shadowLevel;uniform float alpha;uniform vec3 vBackgroundCenter;uniform vec4 vReflectionControl;uniform vec2 projectedGroundInfos;};\n#include<sceneUboDeclaration>\n";o.v.IncludesShadersStore[t]||(o.v.IncludesShadersStore[t]=r)},57987:(e,n,i)=>{var o=i(17416);const t="fogVertex",r="#ifdef FOG\nvFogDistance=(view*worldPos).xyz;\n#endif\n";o.v.IncludesShadersStore[t]||(o.v.IncludesShadersStore[t]=r)},10373:(e,n,i)=>{var o=i(17416);const t="fogVertexDeclaration",r="#ifdef FOG\nvarying vec3 vFogDistance;\n#endif\n";o.v.IncludesShadersStore[t]||(o.v.IncludesShadersStore[t]=r)},76589:(e,n,i)=>{var o=i(17416);const t="lightVxFragmentDeclaration",r="#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}];varying vec4 vPositionFromLight{X}[SHADOWCSMNUM_CASCADES{X}];varying float vDepthMetric{X}[SHADOWCSMNUM_CASCADES{X}];varying vec4 vPositionFromCamera{X};\n#elif defined(SHADOWCUBE{X})\n#else\nvarying vec4 vPositionFromLight{X};varying float vDepthMetric{X};uniform 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#if defined(AREALIGHT{X})\nuniform vec4 vLightWidth{X};uniform vec4 vLightHeight{X};\n#endif\n#endif\n";o.v.IncludesShadersStore[t]||(o.v.IncludesShadersStore[t]=r)},15377:(e,n,i)=>{var o=i(17416);const t="lightVxUboDeclaration",r="#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\n#if defined(AREALIGHT{X})\nvec4 vLightWidth;vec4 vLightHeight;\n#endif\nvec4 shadowsInfo;vec2 depthValues;} light{X};\n#ifdef SHADOW{X}\n#ifdef SHADOWCSM{X}\nuniform mat4 lightMatrix{X}[SHADOWCSMNUM_CASCADES{X}];varying vec4 vPositionFromLight{X}[SHADOWCSMNUM_CASCADES{X}];varying float vDepthMetric{X}[SHADOWCSMNUM_CASCADES{X}];varying vec4 vPositionFromCamera{X};\n#elif defined(SHADOWCUBE{X})\n#else\nvarying vec4 vPositionFromLight{X};varying float vDepthMetric{X};uniform mat4 lightMatrix{X};\n#endif\n#endif\n#endif\n";o.v.IncludesShadersStore[t]||(o.v.IncludesShadersStore[t]=r)},89481:(e,n,i)=>{var o=i(17416);const t="logDepthDeclaration",r="#ifdef LOGARITHMICDEPTH\nuniform float logarithmicDepthConstant;varying float vFragmentDepth;\n#endif\n";o.v.IncludesShadersStore[t]||(o.v.IncludesShadersStore[t]=r)},50627:(e,n,i)=>{var o=i(17416);const t="logDepthVertex",r="#ifdef LOGARITHMICDEPTH\nvFragmentDepth=1.0+gl_Position.w;gl_Position.z=log2(max(0.000001,vFragmentDepth))*logarithmicDepthConstant;\n#endif\n";o.v.IncludesShadersStore[t]||(o.v.IncludesShadersStore[t]=r)},18520:(e,n,i)=>{var o=i(17416);const t="shadowsVertex",r="#ifdef SHADOWS\n#if defined(SHADOWCSM{X})\nvPositionFromCamera{X}=view*worldPos;for (int i=0; i<SHADOWCSMNUM_CASCADES{X}; i++) {vPositionFromLight{X}[i]=lightMatrix{X}[i]*worldPos;\n#ifdef USE_REVERSE_DEPTHBUFFER\nvDepthMetric{X}[i]=(-vPositionFromLight{X}[i].z+light{X}.depthValues.x)/light{X}.depthValues.y;\n#else\nvDepthMetric{X}[i]=(vPositionFromLight{X}[i].z+light{X}.depthValues.x)/light{X}.depthValues.y;\n#endif\n}\n#elif defined(SHADOW{X}) && !defined(SHADOWCUBE{X})\nvPositionFromLight{X}=lightMatrix{X}*worldPos;\n#ifdef USE_REVERSE_DEPTHBUFFER\nvDepthMetric{X}=(-vPositionFromLight{X}.z+light{X}.depthValues.x)/light{X}.depthValues.y;\n#else\nvDepthMetric{X}=(vPositionFromLight{X}.z+light{X}.depthValues.x)/light{X}.depthValues.y;\n#endif\n#endif\n#endif\n";o.v.IncludesShadersStore[t]||(o.v.IncludesShadersStore[t]=r)},14153:(e,n,i)=>{i.r(n),i.d(n,{backgroundVertexShader:()=>d});var o=i(17416);const t="uniform mat4 view;uniform mat4 viewProjection;\n#ifdef MULTIVIEW\nuniform mat4 viewProjectionR;\n#endif\nuniform float shadowLevel;\n#ifdef DIFFUSE\nuniform mat4 diffuseMatrix;uniform vec2 vDiffuseInfos;\n#endif\n#ifdef REFLECTION\nuniform vec2 vReflectionInfos;uniform mat4 reflectionMatrix;uniform vec3 vReflectionMicrosurfaceInfos;uniform float fFovMultiplier;\n#endif\n#ifdef POINTSIZE\nuniform float pointSize;\n#endif\n";o.v.IncludesShadersStore.backgroundVertexDeclaration||(o.v.IncludesShadersStore.backgroundVertexDeclaration=t);i(31740),i(65276),i(33827),i(72335),i(34122),i(60110),i(10373),i(76589),i(15377),i(89481),i(39449),i(86096),i(73749),i(43888),i(57987),i(18520),i(50627);const r="backgroundVertexShader",f="precision highp float;\n#include<__decl__backgroundVertex>\n#include<helperFunctions>\nattribute vec3 position;\n#ifdef NORMAL\nattribute vec3 normal;\n#endif\n#include<bonesDeclaration>\n#include<bakedVertexAnimationDeclaration>\n#include<instancesDeclaration>\nvarying vec3 vPositionW;\n#ifdef NORMAL\nvarying vec3 vNormalW;\n#endif\n#ifdef UV1\nattribute vec2 uv;\n#endif\n#ifdef UV2\nattribute vec2 uv2;\n#endif\n#ifdef MAINUV1\nvarying vec2 vMainUV1;\n#endif\n#ifdef MAINUV2\nvarying vec2 vMainUV2;\n#endif\n#if defined(DIFFUSE) && DIFFUSEDIRECTUV==0\nvarying vec2 vDiffuseUV;\n#endif\n#include<clipPlaneVertexDeclaration>\n#include<fogVertexDeclaration>\n#include<__decl__lightVxFragment>[0..maxSimultaneousLights]\n#ifdef REFLECTIONMAP_SKYBOX\nvarying vec3 vPositionUVW;\n#endif\n#if defined(REFLECTIONMAP_EQUIRECTANGULAR_FIXED) || defined(REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED)\nvarying vec3 vDirectionW;\n#endif\n#include<logDepthDeclaration>\n#define CUSTOM_VERTEX_DEFINITIONS\nvoid main(void) {\n#define CUSTOM_VERTEX_MAIN_BEGIN\n#ifdef REFLECTIONMAP_SKYBOX\nvPositionUVW=position;\n#endif\n#include<instancesVertex>\n#include<bonesVertex>\n#include<bakedVertexAnimation>\n#ifdef MULTIVIEW\nif (gl_ViewID_OVR==0u) {gl_Position=viewProjection*finalWorld*vec4(position,1.0);} else {gl_Position=viewProjectionR*finalWorld*vec4(position,1.0);}\n#else\ngl_Position=viewProjection*finalWorld*vec4(position,1.0);\n#endif\nvec4 worldPos=finalWorld*vec4(position,1.0);vPositionW=vec3(worldPos);\n#ifdef NORMAL\nmat3 normalWorld=mat3(finalWorld);\n#ifdef NONUNIFORMSCALING\nnormalWorld=transposeMat3(inverseMat3(normalWorld));\n#endif\nvNormalW=normalize(normalWorld*normal);\n#endif\n#if defined(REFLECTIONMAP_EQUIRECTANGULAR_FIXED) || defined(REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED)\nvDirectionW=normalize(vec3(finalWorld*vec4(position,0.0)));\n#ifdef EQUIRECTANGULAR_RELFECTION_FOV\nmat3 screenToWorld=inverseMat3(mat3(finalWorld*viewProjection));vec3 segment=mix(vDirectionW,screenToWorld*vec3(0.0,0.0,1.0),abs(fFovMultiplier-1.0));if (fFovMultiplier<=1.0) {vDirectionW=normalize(segment);} else {vDirectionW=normalize(vDirectionW+(vDirectionW-segment));}\n#endif\n#endif\n#ifndef UV1\nvec2 uv=vec2(0.,0.);\n#endif\n#ifndef UV2\nvec2 uv2=vec2(0.,0.);\n#endif\n#ifdef MAINUV1\nvMainUV1=uv;\n#endif\n#ifdef MAINUV2\nvMainUV2=uv2;\n#endif\n#if defined(DIFFUSE) && DIFFUSEDIRECTUV==0\nif (vDiffuseInfos.x==0.)\n{vDiffuseUV=vec2(diffuseMatrix*vec4(uv,1.0,0.0));}\nelse\n{vDiffuseUV=vec2(diffuseMatrix*vec4(uv2,1.0,0.0));}\n#endif\n#include<clipPlaneVertex>\n#include<fogVertex>\n#include<shadowsVertex>[0..maxSimultaneousLights]\n#ifdef VERTEXCOLOR\nvColor=colorUpdated;\n#endif\n#if defined(POINTSIZE) && !defined(WEBGPU)\ngl_PointSize=pointSize;\n#endif\n#include<logDepthVertex>\n#define CUSTOM_VERTEX_MAIN_END\n}\n";o.v.ShadersStore.backgroundVertexShader||(o.v.ShadersStore.backgroundVertexShader=f);const d={name:r,shader:f}}}]);
@@ -1,2 +1,2 @@
1
1
  /*! For license information please see 4248.real-time-viewer.umd.min.js.LICENSE.txt */
2
- "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[4248],{4248:(e,r,a)=>{a.r(r),a.d(r,{vrDistortionCorrectionPixelShader:()=>c});const t="vrDistortionCorrectionPixelShader",n="varying vec2 vUV;uniform sampler2D textureSampler;uniform vec2 LensCenter;uniform vec2 Scale;uniform vec2 ScaleIn;uniform vec4 HmdWarpParam;vec2 HmdWarp(vec2 in01) {vec2 theta=(in01-LensCenter)*ScaleIn; \nfloat rSq=theta.x*theta.x+theta.y*theta.y;vec2 rvector=theta*(HmdWarpParam.x+HmdWarpParam.y*rSq+HmdWarpParam.z*rSq*rSq+HmdWarpParam.w*rSq*rSq*rSq);return LensCenter+Scale*rvector;}\n#define CUSTOM_FRAGMENT_DEFINITIONS\nvoid main(void)\n{vec2 tc=HmdWarp(vUV);if (tc.x <0.0 || tc.x>1.0 || tc.y<0.0 || tc.y>1.0)\ngl_FragColor=vec4(0.0,0.0,0.0,0.0);else{gl_FragColor=texture2D(textureSampler,tc);}}";a(7416).v.ShadersStore[t]=n;const c={name:t,shader:n}}}]);
2
+ "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[4248],{94248:(e,r,a)=>{a.r(r),a.d(r,{vrDistortionCorrectionPixelShader:()=>i});var t=a(17416);const n="vrDistortionCorrectionPixelShader",c="varying vec2 vUV;uniform sampler2D textureSampler;uniform vec2 LensCenter;uniform vec2 Scale;uniform vec2 ScaleIn;uniform vec4 HmdWarpParam;vec2 HmdWarp(vec2 in01) {vec2 theta=(in01-LensCenter)*ScaleIn; \nfloat rSq=theta.x*theta.x+theta.y*theta.y;vec2 rvector=theta*(HmdWarpParam.x+HmdWarpParam.y*rSq+HmdWarpParam.z*rSq*rSq+HmdWarpParam.w*rSq*rSq*rSq);return LensCenter+Scale*rvector;}\n#define CUSTOM_FRAGMENT_DEFINITIONS\nvoid main(void)\n{vec2 tc=HmdWarp(vUV);if (tc.x <0.0 || tc.x>1.0 || tc.y<0.0 || tc.y>1.0)\ngl_FragColor=vec4(0.0,0.0,0.0,0.0);else{gl_FragColor=texture2D(textureSampler,tc);}}";t.v.ShadersStore[n]||(t.v.ShadersStore[n]=c);const i={name:n,shader:c}}}]);
@@ -0,0 +1,2 @@
1
+ /*! For license information please see 4358.real-time-viewer.umd.min.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[4358],{64358:(e,l,t)=>{t.r(l),t.d(l,{FlowGraphFlipFlopBlock:()=>FlowGraphFlipFlopBlock});var a=t(17693),i=t(39426),s=t(20538);class FlowGraphFlipFlopBlock extends a.Q{constructor(e){super(e),this.onOn=this._registerSignalOutput("onOn"),this.onOff=this._registerSignalOutput("onOff"),this.value=this.registerDataOutput("value",i.PE)}_execute(e,l){let t=e._getExecutionVariable(this,"value","boolean"==typeof this.config?.startValue&&!this.config.startValue);t=!t,e._setExecutionVariable(this,"value",t),this.value.setValue(t,e),t?this.onOn._activateSignal(e):this.onOff._activateSignal(e)}getClassName(){return"FlowGraphFlipFlopBlock"}}(0,s.H7)("FlowGraphFlipFlopBlock",FlowGraphFlipFlopBlock)}}]);
@@ -0,0 +1 @@
1
+ /*! filename:4358 */
@@ -1,2 +1,2 @@
1
1
  /*! For license information please see 4378.real-time-viewer.umd.min.js.LICENSE.txt */
2
- "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[4378],{7987:(e,n,i)=>{const o="fogVertex",r="#ifdef FOG\nvFogDistance=(view*worldPos).xyz;\n#endif\n";i(7416).v.IncludesShadersStore[o]=r},373:(e,n,i)=>{const o="fogVertexDeclaration",r="#ifdef FOG\nvarying vec3 vFogDistance;\n#endif\n";i(7416).v.IncludesShadersStore[o]=r},5095:(e,n,i)=>{const o="vertexColorMixing",r="#if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES)\nvColor=vec4(1.0);\n#ifdef VERTEXCOLOR\n#ifdef VERTEXALPHA\nvColor*=color;\n#else\nvColor.rgb*=color.rgb;\n#endif\n#endif\n#ifdef INSTANCESCOLOR\nvColor*=instanceColor;\n#endif\n#endif\n";i(7416).v.IncludesShadersStore[o]=r},4378:(e,n,i)=>{i.r(n),i.d(n,{colorVertexShader:()=>t});var o=i(7416);i(3827),i(2335),i(110),i(373),i(4122),i(9449),i(6096),i(3749),i(3888),i(7987),i(5095);const r="colorVertexShader",d="attribute vec3 position;\n#ifdef VERTEXCOLOR\nattribute vec4 color;\n#endif\n#include<bonesDeclaration>\n#include<bakedVertexAnimationDeclaration>\n#include<clipPlaneVertexDeclaration>\n#include<fogVertexDeclaration>\n#ifdef FOG\nuniform mat4 view;\n#endif\n#include<instancesDeclaration>\nuniform mat4 viewProjection;\n#ifdef MULTIVIEW\nuniform mat4 viewProjectionR;\n#endif\n#if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES)\nvarying vec4 vColor;\n#endif\n#define CUSTOM_VERTEX_DEFINITIONS\nvoid main(void) {\n#define CUSTOM_VERTEX_MAIN_BEGIN\n#include<instancesVertex>\n#include<bonesVertex>\n#include<bakedVertexAnimation>\nvec4 worldPos=finalWorld*vec4(position,1.0);\n#ifdef MULTIVIEW\nif (gl_ViewID_OVR==0u) {gl_Position=viewProjection*worldPos;} else {gl_Position=viewProjectionR*worldPos;}\n#else\ngl_Position=viewProjection*worldPos;\n#endif\n#include<clipPlaneVertex>\n#include<fogVertex>\n#include<vertexColorMixing>\n#define CUSTOM_VERTEX_MAIN_END\n}";o.v.ShadersStore[r]=d;const t={name:r,shader:d}}}]);
2
+ "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[4378],{57987:(e,n,i)=>{var o=i(17416);const d="fogVertex",r="#ifdef FOG\nvFogDistance=(view*worldPos).xyz;\n#endif\n";o.v.IncludesShadersStore[d]||(o.v.IncludesShadersStore[d]=r)},10373:(e,n,i)=>{var o=i(17416);const d="fogVertexDeclaration",r="#ifdef FOG\nvarying vec3 vFogDistance;\n#endif\n";o.v.IncludesShadersStore[d]||(o.v.IncludesShadersStore[d]=r)},85095:(e,n,i)=>{var o=i(17416);const d="vertexColorMixing",r="#if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES)\nvColor=vec4(1.0);\n#ifdef VERTEXCOLOR\n#ifdef VERTEXALPHA\nvColor*=colorUpdated;\n#else\nvColor.rgb*=colorUpdated.rgb;\n#endif\n#endif\n#ifdef INSTANCESCOLOR\nvColor*=instanceColor;\n#endif\n#endif\n";o.v.IncludesShadersStore[d]||(o.v.IncludesShadersStore[d]=r)},84378:(e,n,i)=>{i.r(n),i.d(n,{colorVertexShader:()=>t});var o=i(17416);i(33827),i(72335),i(60110),i(10373),i(34122),i(39449),i(86096),i(73749),i(43888),i(57987),i(85095);const d="colorVertexShader",r="attribute vec3 position;\n#ifdef VERTEXCOLOR\nattribute vec4 color;\n#endif\n#include<bonesDeclaration>\n#include<bakedVertexAnimationDeclaration>\n#include<clipPlaneVertexDeclaration>\n#include<fogVertexDeclaration>\n#ifdef FOG\nuniform mat4 view;\n#endif\n#include<instancesDeclaration>\nuniform mat4 viewProjection;\n#ifdef MULTIVIEW\nuniform mat4 viewProjectionR;\n#endif\n#if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES)\nvarying vec4 vColor;\n#endif\n#define CUSTOM_VERTEX_DEFINITIONS\nvoid main(void) {\n#define CUSTOM_VERTEX_MAIN_BEGIN\n#ifdef VERTEXCOLOR\nvec4 colorUpdated=color;\n#endif\n#include<instancesVertex>\n#include<bonesVertex>\n#include<bakedVertexAnimation>\nvec4 worldPos=finalWorld*vec4(position,1.0);\n#ifdef MULTIVIEW\nif (gl_ViewID_OVR==0u) {gl_Position=viewProjection*worldPos;} else {gl_Position=viewProjectionR*worldPos;}\n#else\ngl_Position=viewProjection*worldPos;\n#endif\n#include<clipPlaneVertex>\n#include<fogVertex>\n#include<vertexColorMixing>\n#define CUSTOM_VERTEX_MAIN_END\n}";o.v.ShadersStore[d]||(o.v.ShadersStore[d]=r);const t={name:d,shader:r}}}]);
@@ -1,2 +1,2 @@
1
1
  /*! For license information please see 4431.real-time-viewer.umd.min.js.LICENSE.txt */
2
- "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[4431],{1596:(e,r,n)=>{const t="imageProcessingDeclaration",i="#ifdef EXPOSURE\nuniform exposureLinear: f32;\n#endif\n#ifdef CONTRAST\nuniform contrast: f32;\n#endif\n#if defined(VIGNETTE) || defined(DITHER)\nuniform vInverseScreenSize: vec2f;\n#endif\n#ifdef VIGNETTE\nuniform vignetteSettings1: vec4f;uniform vignetteSettings2: vec4f;\n#endif\n#ifdef COLORCURVES\nuniform vCameraColorCurveNegative: vec4f;uniform vCameraColorCurveNeutral: vec4f;uniform vCameraColorCurvePositive: vec4f;\n#endif\n#ifdef COLORGRADING\n#ifdef COLORGRADING3D\nvar txColorTransformSampler: sampler;var txColorTransform: texture_3d<f32>;\n#else\nvar txColorTransformSampler: sampler;var txColorTransform: texture_2d<f32>;\n#endif\nuniform colorTransformSettings: vec4f;\n#endif\n#ifdef DITHER\nuniform ditherIntensity: f32;\n#endif\n";n(7416).v.IncludesShadersStoreWGSL[t]=i},1916:(e,r,n)=>{const t="imageProcessingFunctions",i="#if TONEMAPPING==3\nconst PBRNeutralStartCompression: f32=0.8-0.04;const PBRNeutralDesaturation: f32=0.15;fn PBRNeutralToneMapping( color: vec3f )->vec3f {var x: f32=min(color.r,min(color.g,color.b));var offset: f32=select(0.04,x-6.25*x*x,x<0.08);var result=color;result-=offset;var peak: f32=max(result.r,max(result.g,result.b));if (peak<PBRNeutralStartCompression) {return result;}\nvar d: f32=1.-PBRNeutralStartCompression;var newPeak: f32=1.-d*d/(peak+d-PBRNeutralStartCompression);result*=newPeak/peak;var g: f32=1.-1./(PBRNeutralDesaturation*(peak-newPeak)+1.);return mix(result,newPeak* vec3f(1,1,1),g);}\n#endif\n#if TONEMAPPING==2\nconst ACESInputMat: mat3x3f= mat3x3f(\nvec3f(0.59719,0.07600,0.02840),\nvec3f(0.35458,0.90834,0.13383),\nvec3f(0.04823,0.01566,0.83777)\n);const ACESOutputMat: mat3x3f= mat3x3f(\nvec3f( 1.60475,-0.10208,-0.00327),\nvec3f(-0.53108, 1.10813,-0.07276),\nvec3f(-0.07367,-0.00605, 1.07602)\n);fn RRTAndODTFit(v: vec3f)->vec3f\n{var a: vec3f=v*(v+0.0245786)-0.000090537;var b: vec3f=v*(0.983729*v+0.4329510)+0.238081;return a/b;}\nfn ACESFitted(color: vec3f)->vec3f\n{var output=ACESInputMat*color;output=RRTAndODTFit(output);output=ACESOutputMat*output;output=saturateVec3(output);return output;}\n#endif\n#define CUSTOM_IMAGEPROCESSINGFUNCTIONS_DEFINITIONS\nfn applyImageProcessing(result: vec4f)->vec4f {\n#define CUSTOM_IMAGEPROCESSINGFUNCTIONS_UPDATERESULT_ATSTART\nvar rgb=result.rgb;;\n#ifdef EXPOSURE\nrgb*=uniforms.exposureLinear;\n#endif\n#ifdef VIGNETTE\nvar viewportXY: vec2f=fragmentInputs.position.xy*uniforms.vInverseScreenSize;viewportXY=viewportXY*2.0-1.0;var vignetteXY1: vec3f= vec3f(viewportXY*uniforms.vignetteSettings1.xy+uniforms.vignetteSettings1.zw,1.0);var vignetteTerm: f32=dot(vignetteXY1,vignetteXY1);var vignette: f32=pow(vignetteTerm,uniforms.vignetteSettings2.w);var vignetteColor: vec3f=uniforms.vignetteSettings2.rgb;\n#ifdef VIGNETTEBLENDMODEMULTIPLY\nvar vignetteColorMultiplier: vec3f=mix(vignetteColor, vec3f(1,1,1),vignette);rgb*=vignetteColorMultiplier;\n#endif\n#ifdef VIGNETTEBLENDMODEOPAQUE\nrgb=mix(vignetteColor,rgb,vignette);\n#endif\n#endif\n#if TONEMAPPING==3\nrgb=PBRNeutralToneMapping(rgb);\n#elif TONEMAPPING==2\nrgb=ACESFitted(rgb);\n#elif TONEMAPPING==1\nconst tonemappingCalibration: f32=1.590579;rgb=1.0-exp2(-tonemappingCalibration*rgb);\n#endif\nrgb=toGammaSpaceVec3(rgb);rgb=saturateVec3(rgb);\n#ifdef CONTRAST\nvar resultHighContrast: vec3f=rgb*rgb*(3.0-2.0*rgb);if (uniforms.contrast<1.0) {rgb=mix( vec3f(0.5,0.5,0.5),rgb,uniforms.contrast);} else {rgb=mix(rgb,resultHighContrast,uniforms.contrast-1.0);}\n#endif\n#ifdef COLORGRADING\nvar colorTransformInput: vec3f=rgb*uniforms.colorTransformSettings.xxx+uniforms.colorTransformSettings.yyy;\n#ifdef COLORGRADING3D\nvar colorTransformOutput: vec3f=textureSample(txColorTransform,txColorTransformSampler,colorTransformInput).rgb;\n#else\nvar colorTransformOutput: vec3f=textureSample(txColorTransform,txColorTransformSampler,colorTransformInput,uniforms.colorTransformSettings.yz).rgb;\n#endif\nrgb=mix(rgb,colorTransformOutput,uniforms.colorTransformSettings.www);\n#endif\n#ifdef COLORCURVES\nvar luma: f32=getLuminance(rgb);var curveMix: vec2f=clamp( vec2f(luma*3.0-1.5,luma*-3.0+1.5), vec2f(0.0), vec2f(1.0));var colorCurve: vec4f=uniforms.vCameraColorCurveNeutral+curveMix.x*uniforms.vCameraColorCurvePositive-curveMix.y*uniforms.vCameraColorCurveNegative;rgb*=colorCurve.rgb;rgb=mix( vec3f(luma),rgb,colorCurve.a);\n#endif\n#ifdef DITHER\nvar rand: f32=getRand(fragmentInputs.position.xy*uniforms.vInverseScreenSize);var dither: f32=mix(-uniforms.ditherIntensity,uniforms.ditherIntensity,rand);rgb=saturateVec3(rgb+ vec3f(dither));\n#endif\n#define CUSTOM_IMAGEPROCESSINGFUNCTIONS_UPDATERESULT_ATEND\nreturn vec4f(rgb,result.a);}";n(7416).v.IncludesShadersStoreWGSL[t]=i},4431:(e,r,n)=>{n.r(r),n.d(r,{imageProcessingPixelShaderWGSL:()=>o});var t=n(7416);n(1596),n(2842),n(1916);const i="imageProcessingPixelShader",f="varying vUV: vec2f;var textureSamplerSampler: sampler;var textureSampler: texture_2d<f32>;\n#include<imageProcessingDeclaration>\n#include<helperFunctions>\n#include<imageProcessingFunctions>\n#define CUSTOM_FRAGMENT_DEFINITIONS\n@fragment\nfn main(input: FragmentInputs)->FragmentOutputs {var result: vec4f=textureSample(textureSampler,textureSamplerSampler,input.vUV);\n#ifdef IMAGEPROCESSING\n#ifndef FROMLINEARSPACE\nresult=vec4f(toLinearSpaceVec3(result.rgb),result.a);\n#endif\nresult=applyImageProcessing(result);\n#else\n#ifdef FROMLINEARSPACE\nresult=applyImageProcessing(result);\n#endif\n#endif\nfragmentOutputs.color=result;}";t.v.ShadersStoreWGSL[i]=f;const o={name:i,shader:f}}}]);
2
+ "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[4431],{31596:(e,r,n)=>{var t=n(17416);const i="imageProcessingDeclaration",f="#ifdef EXPOSURE\nuniform exposureLinear: f32;\n#endif\n#ifdef CONTRAST\nuniform contrast: f32;\n#endif\n#if defined(VIGNETTE) || defined(DITHER)\nuniform vInverseScreenSize: vec2f;\n#endif\n#ifdef VIGNETTE\nuniform vignetteSettings1: vec4f;uniform vignetteSettings2: vec4f;\n#endif\n#ifdef COLORCURVES\nuniform vCameraColorCurveNegative: vec4f;uniform vCameraColorCurveNeutral: vec4f;uniform vCameraColorCurvePositive: vec4f;\n#endif\n#ifdef COLORGRADING\n#ifdef COLORGRADING3D\nvar txColorTransformSampler: sampler;var txColorTransform: texture_3d<f32>;\n#else\nvar txColorTransformSampler: sampler;var txColorTransform: texture_2d<f32>;\n#endif\nuniform colorTransformSettings: vec4f;\n#endif\n#ifdef DITHER\nuniform ditherIntensity: f32;\n#endif\n";t.v.IncludesShadersStoreWGSL[i]||(t.v.IncludesShadersStoreWGSL[i]=f)},81916:(e,r,n)=>{var t=n(17416);const i="imageProcessingFunctions",f="#if TONEMAPPING==3\nconst PBRNeutralStartCompression: f32=0.8-0.04;const PBRNeutralDesaturation: f32=0.15;fn PBRNeutralToneMapping( color: vec3f )->vec3f {var x: f32=min(color.r,min(color.g,color.b));var offset: f32=select(0.04,x-6.25*x*x,x<0.08);var result=color;result-=offset;var peak: f32=max(result.r,max(result.g,result.b));if (peak<PBRNeutralStartCompression) {return result;}\nvar d: f32=1.-PBRNeutralStartCompression;var newPeak: f32=1.-d*d/(peak+d-PBRNeutralStartCompression);result*=newPeak/peak;var g: f32=1.-1./(PBRNeutralDesaturation*(peak-newPeak)+1.);return mix(result,newPeak* vec3f(1,1,1),g);}\n#endif\n#if TONEMAPPING==2\nconst ACESInputMat: mat3x3f= mat3x3f(\nvec3f(0.59719,0.07600,0.02840),\nvec3f(0.35458,0.90834,0.13383),\nvec3f(0.04823,0.01566,0.83777)\n);const ACESOutputMat: mat3x3f= mat3x3f(\nvec3f( 1.60475,-0.10208,-0.00327),\nvec3f(-0.53108, 1.10813,-0.07276),\nvec3f(-0.07367,-0.00605, 1.07602)\n);fn RRTAndODTFit(v: vec3f)->vec3f\n{var a: vec3f=v*(v+0.0245786)-0.000090537;var b: vec3f=v*(0.983729*v+0.4329510)+0.238081;return a/b;}\nfn ACESFitted(color: vec3f)->vec3f\n{var output=ACESInputMat*color;output=RRTAndODTFit(output);output=ACESOutputMat*output;output=saturateVec3(output);return output;}\n#endif\n#define CUSTOM_IMAGEPROCESSINGFUNCTIONS_DEFINITIONS\nfn applyImageProcessing(result: vec4f)->vec4f {\n#define CUSTOM_IMAGEPROCESSINGFUNCTIONS_UPDATERESULT_ATSTART\nvar rgb=result.rgb;;\n#ifdef EXPOSURE\nrgb*=uniforms.exposureLinear;\n#endif\n#ifdef VIGNETTE\nvar viewportXY: vec2f=fragmentInputs.position.xy*uniforms.vInverseScreenSize;viewportXY=viewportXY*2.0-1.0;var vignetteXY1: vec3f= vec3f(viewportXY*uniforms.vignetteSettings1.xy+uniforms.vignetteSettings1.zw,1.0);var vignetteTerm: f32=dot(vignetteXY1,vignetteXY1);var vignette: f32=pow(vignetteTerm,uniforms.vignetteSettings2.w);var vignetteColor: vec3f=uniforms.vignetteSettings2.rgb;\n#ifdef VIGNETTEBLENDMODEMULTIPLY\nvar vignetteColorMultiplier: vec3f=mix(vignetteColor, vec3f(1,1,1),vignette);rgb*=vignetteColorMultiplier;\n#endif\n#ifdef VIGNETTEBLENDMODEOPAQUE\nrgb=mix(vignetteColor,rgb,vignette);\n#endif\n#endif\n#if TONEMAPPING==3\nrgb=PBRNeutralToneMapping(rgb);\n#elif TONEMAPPING==2\nrgb=ACESFitted(rgb);\n#elif TONEMAPPING==1\nconst tonemappingCalibration: f32=1.590579;rgb=1.0-exp2(-tonemappingCalibration*rgb);\n#endif\nrgb=toGammaSpaceVec3(rgb);rgb=saturateVec3(rgb);\n#ifdef CONTRAST\nvar resultHighContrast: vec3f=rgb*rgb*(3.0-2.0*rgb);if (uniforms.contrast<1.0) {rgb=mix( vec3f(0.5,0.5,0.5),rgb,uniforms.contrast);} else {rgb=mix(rgb,resultHighContrast,uniforms.contrast-1.0);}\n#endif\n#ifdef COLORGRADING\nvar colorTransformInput: vec3f=rgb*uniforms.colorTransformSettings.xxx+uniforms.colorTransformSettings.yyy;\n#ifdef COLORGRADING3D\nvar colorTransformOutput: vec3f=textureSample(txColorTransform,txColorTransformSampler,colorTransformInput).rgb;\n#else\nvar colorTransformOutput: vec3f=textureSample(txColorTransform,txColorTransformSampler,colorTransformInput,uniforms.colorTransformSettings.yz).rgb;\n#endif\nrgb=mix(rgb,colorTransformOutput,uniforms.colorTransformSettings.www);\n#endif\n#ifdef COLORCURVES\nvar luma: f32=getLuminance(rgb);var curveMix: vec2f=clamp( vec2f(luma*3.0-1.5,luma*-3.0+1.5), vec2f(0.0), vec2f(1.0));var colorCurve: vec4f=uniforms.vCameraColorCurveNeutral+curveMix.x*uniforms.vCameraColorCurvePositive-curveMix.y*uniforms.vCameraColorCurveNegative;rgb*=colorCurve.rgb;rgb=mix( vec3f(luma),rgb,colorCurve.a);\n#endif\n#ifdef DITHER\nvar rand: f32=getRand(fragmentInputs.position.xy*uniforms.vInverseScreenSize);var dither: f32=mix(-uniforms.ditherIntensity,uniforms.ditherIntensity,rand);rgb=saturateVec3(rgb+ vec3f(dither));\n#endif\n#define CUSTOM_IMAGEPROCESSINGFUNCTIONS_UPDATERESULT_ATEND\nreturn vec4f(rgb,result.a);}";t.v.IncludesShadersStoreWGSL[i]||(t.v.IncludesShadersStoreWGSL[i]=f)},34431:(e,r,n)=>{n.r(r),n.d(r,{imageProcessingPixelShaderWGSL:()=>o});var t=n(17416);n(31596),n(22842),n(81916);const i="imageProcessingPixelShader",f="varying vUV: vec2f;var textureSamplerSampler: sampler;var textureSampler: texture_2d<f32>;\n#include<imageProcessingDeclaration>\n#include<helperFunctions>\n#include<imageProcessingFunctions>\n#define CUSTOM_FRAGMENT_DEFINITIONS\n@fragment\nfn main(input: FragmentInputs)->FragmentOutputs {var result: vec4f=textureSample(textureSampler,textureSamplerSampler,input.vUV);result=vec4f(max(result.rgb,vec3f(0.)),result.a);\n#ifdef IMAGEPROCESSING\n#ifndef FROMLINEARSPACE\nresult=vec4f(toLinearSpaceVec3(result.rgb),result.a);\n#endif\nresult=applyImageProcessing(result);\n#else\n#ifdef FROMLINEARSPACE\nresult=applyImageProcessing(result);\n#endif\n#endif\nfragmentOutputs.color=result;}";t.v.ShadersStoreWGSL[i]||(t.v.ShadersStoreWGSL[i]=f);const o={name:i,shader:f}}}]);
@@ -0,0 +1,2 @@
1
+ /*! For license information please see 4478.real-time-viewer.umd.min.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[4478],{4478:(e,t,s)=>{s.r(t),s.d(t,{FlowGraphCodeExecutionBlock:()=>FlowGraphCodeExecutionBlock});var u=s(43890),i=s(39426);class FlowGraphCodeExecutionBlock extends u.A{constructor(e){super(e),this.config=e,this.executionFunction=this.registerDataInput("function",i.s8),this.value=this.registerDataInput("value",i.s8),this.result=this.registerDataOutput("result",i.s8)}_updateOutputs(e){const t=this.executionFunction.getValue(e),s=this.value.getValue(e);t&&this.result.setValue(t(s,e),e)}getClassName(){return"FlowGraphCodeExecutionBlock"}}}}]);
@@ -0,0 +1 @@
1
+ /*! filename:4478 */
@@ -0,0 +1,2 @@
1
+ /*! For license information please see 4486.real-time-viewer.umd.min.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[4486],{58632:(e,n,f)=>{var r=f(17416);const a="hdrFilteringFunctions",t="#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.;}\nfn uv_to_normal(uv: vec2f)->vec3f {var N: vec3f;var uvRange: vec2f=uv;var theta: f32=uvRange.x*2.0*PI;var phi: f32=uvRange.y*PI;N.x=cos(theta)*sin(phi);N.z=sin(theta)*sin(phi);N.y=cos(phi);return N;}\nconst NUM_SAMPLES_FLOAT: f32= f32(NUM_SAMPLES);const NUM_SAMPLES_FLOAT_INVERSED: f32=1./NUM_SAMPLES_FLOAT;const K: f32=4.;fn irradiance(\n#ifdef CUSTOM_IRRADIANCE_FILTERING_INPUT\nCUSTOM_IRRADIANCE_FILTERING_INPUT\n#else\ninputTexture: texture_cube<f32>,inputSampler: sampler,\n#endif\ninputN: vec3f,\nfilteringInfo: vec2f,\ndiffuseRoughness: f32,\nsurfaceAlbedo: vec3f,\ninputV: vec3f\n#ifdef IBL_CDF_FILTERING\n,icdfSampler: texture_2d<f32>,icdfSamplerSampler: sampler\n#endif\n)->vec3f\n{var n: vec3f=normalize(inputN);var result: vec3f= vec3f(0.0);\n#ifndef IBL_CDF_FILTERING\nvar 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 tbnInverse: mat3x3f=transpose(tbn);\n#endif\nvar maxLevel: f32=filteringInfo.y;var dim0: f32=filteringInfo.x;var omegaP: f32=(4.*PI)/(6.*dim0*dim0);var clampedAlbedo: vec3f=clamp(surfaceAlbedo,vec3f(0.1),vec3f(1.0));for(var i: u32=0u; i<NUM_SAMPLES; i++)\n{var Xi: vec2f=hammersley(i,NUM_SAMPLES);\n#ifdef IBL_CDF_FILTERING\nvar T: vec2f;T.x=textureSampleLevel(icdfSampler,icdfSamplerSampler,vec2(Xi.x,0.0),0.0).x;T.y=textureSampleLevel(icdfSampler,icdfSamplerSampler,vec2(T.x,Xi.y),0.0).y;var Ls: vec3f=uv_to_normal(vec2f(1.0-fract(T.x+0.25),T.y));var NoL: f32=dot(n,Ls);var NoV: f32=dot(n,inputV);\n#if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON\nvar LoV: f32=dot(Ls,inputV);\n#elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_BURLEY\nvar H: vec3f=(inputV+Ls)*0.5;var VoH: f32=dot(inputV,H);\n#endif \n#else\nvar Ls: vec3f=hemisphereCosSample(Xi);Ls=normalize(Ls);var Ns: vec3f= vec3f(0.,0.,1.);var NoL: f32=dot(Ns,Ls);var V: vec3f=tbnInverse*inputV;var NoV: f32=dot(Ns,V);\n#if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON\nvar LoV: f32=dot(Ls,V);\n#elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_BURLEY\nvar H: vec3f=(V+Ls)*0.5;var VoH: f32=dot(V,H);\n#endif\n#endif\nif (NoL>0.) {\n#ifdef IBL_CDF_FILTERING\nvar pdf: f32=textureSampleLevel(icdfSampler,icdfSamplerSampler,T,0.0).z;var c: vec3f=textureSampleLevel(inputTexture,inputSampler,Ls,0.0).rgb;\n#else\nvar 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);\n#ifdef CUSTOM_IRRADIANCE_FILTERING_FUNCTION\nCUSTOM_IRRADIANCE_FILTERING_FUNCTION\n#else\nvar c: vec3f=textureSampleLevel(inputTexture,inputSampler,tbn*Ls,mipLevel).rgb;\n#endif\n#endif\n#ifdef GAMMA_INPUT\nc=toLinearSpaceVec3(c);\n#endif\nvar diffuseRoughnessTerm: vec3f=vec3f(1.0);\n#if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON\ndiffuseRoughnessTerm=diffuseBRDF_EON(clampedAlbedo,diffuseRoughness,NoL,NoV,LoV)*PI;\n#elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_BURLEY\ndiffuseRoughnessTerm=vec3f(diffuseBRDF_Burley(NoL,NoV,VoH,diffuseRoughness)*PI);\n#endif\n#ifdef IBL_CDF_FILTERING\nvar light: vec3f=vec3f(0.0);if (pdf>1e-6) {light=vec3f(1.0)/vec3f(pdf)*c;}\nresult+=NoL*diffuseRoughnessTerm*light;\n#else\nresult+=c*diffuseRoughnessTerm;\n#endif\n}}\nresult=result*NUM_SAMPLES_FLOAT_INVERSED;\n#if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON\nresult=result/clampedAlbedo;\n#endif\nreturn 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.v.IncludesShadersStoreWGSL[a]||(r.v.IncludesShadersStoreWGSL[a]=t)},5442:(e,n,f)=>{var r=f(17416);const a="importanceSampling",t="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.v.IncludesShadersStoreWGSL[a]||(r.v.IncludesShadersStoreWGSL[a]=t)},34366:(e,n,f)=>{var r=f(17416);const a="pbrBRDFFunctions",t="#define FRESNEL_MAXIMUM_ON_ROUGH 0.25\n#define BRDF_DIFFUSE_MODEL_EON 0\n#define BRDF_DIFFUSE_MODEL_BURLEY 1\n#define BRDF_DIFFUSE_MODEL_LAMBERT 2\n#define BRDF_DIFFUSE_MODEL_LEGACY 3\n#define DIELECTRIC_SPECULAR_MODEL_GLTF 0\n#define DIELECTRIC_SPECULAR_MODEL_OPENPBR 1\n#define CONDUCTOR_SPECULAR_MODEL_GLTF 0\n#define CONDUCTOR_SPECULAR_MODEL_OPENPBR 1\n#ifndef PBR_VERTEX_SHADER\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#if CONDUCTOR_SPECULAR_MODEL==CONDUCTOR_SPECULAR_MODEL_OPENPBR \nfn getF82Specular(NdotV: f32,F0: vec3f,edgeTint: vec3f,roughness: f32)->vec3f {const cos_theta_max: f32=0.142857143; \nconst one_minus_cos_theta_max_to_the_fifth: f32=0.462664366; \nconst one_minus_cos_theta_max_to_the_sixth: f32=0.396569457; \nlet white_minus_F0: vec3f=vec3f(1.0f)-F0;let b_numerator: vec3f=(F0+white_minus_F0*one_minus_cos_theta_max_to_the_fifth)*(vec3f(1.0)-edgeTint);const b_denominator: f32=cos_theta_max*one_minus_cos_theta_max_to_the_sixth;const b_denominator_reciprocal: f32=1.0f/b_denominator;let b: vec3f=b_numerator*b_denominator_reciprocal; \nlet cos_theta: f32=max(roughness,NdotV);let one_minus_cos_theta: f32=1.0-cos_theta;let offset_from_F0: vec3f=(white_minus_F0-b*cos_theta*one_minus_cos_theta)*pow(one_minus_cos_theta,5.0f);return clamp(F0+offset_from_F0,vec3f(0.0f),vec3f(1.0f));}\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\nconst constant1_FON: f32=0.5f-2.0f/(3.0f*PI);const constant2_FON: f32=2.0f/3.0f-28.0f/(15.0f*PI);fn E_FON_approx(mu: f32,roughness: f32)->f32\n{var sigma: f32=roughness; \nvar mucomp: f32=1.0f-mu;var mucomp2: f32=mucomp*mucomp;const Gcoeffs: mat2x2f=mat2x2f(0.0571085289f,-0.332181442f,\n0.491881867f,0.0714429953f);var GoverPi: f32=dot(Gcoeffs*vec2f(mucomp,mucomp2),vec2f(1.0f,mucomp2));return (1.0f+sigma*GoverPi)/(1.0f+constant1_FON*sigma);}\nfn diffuseBRDF_EON(albedo: vec3f,roughness: f32,NdotL: f32,NdotV: f32,LdotV: f32)->vec3f\n{var rho: vec3f=albedo;var sigma: f32=roughness; \nvar mu_i: f32=NdotL; \nvar mu_o: f32=NdotV; \nvar s: f32=LdotV-mu_i*mu_o; \nvar sovertF: f32=select(s,s/max(mu_i,mu_o),s>0.0f); \nvar AF: f32=1.0f/(1.0f+constant1_FON*sigma); \nvar f_ss: vec3f=(rho*RECIPROCAL_PI)*AF*(1.0f+sigma*sovertF); \nvar EFo: f32=E_FON_approx(mu_o,sigma); \nvar EFi: f32=E_FON_approx(mu_i,sigma); \nvar avgEF: f32=AF*(1.0f+constant2_FON*sigma); \nvar rho_ms: vec3f=(rho*rho)*avgEF/(vec3f(1.0f)-rho*(1.0f-avgEF));const eps: f32=1.0e-7f;var f_ms: vec3f=(rho_ms*RECIPROCAL_PI)*max(eps,1.0f-EFo) \n* max(eps,1.0f-EFi)\n/ max(eps,1.0f-avgEF);return (f_ss+f_ms);}\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#endif \n";r.v.IncludesShadersStoreWGSL[a]||(r.v.IncludesShadersStoreWGSL[a]=t)},34486:(e,n,f)=>{f.r(n),f.d(n,{hdrIrradianceFilteringPixelShaderWGSL:()=>i});var r=f(17416);f(22842),f(5442),f(34366),f(58632);const a="hdrIrradianceFilteringPixelShader",t="#include<helperFunctions>\n#include<importanceSampling>\n#include<pbrBRDFFunctions>\n#include<hdrFilteringFunctions>\nvar inputTextureSampler: sampler;var inputTexture: texture_cube<f32>;\n#ifdef IBL_CDF_FILTERING\nvar icdfTextureSampler: sampler;var icdfTexture: texture_2d<f32>;\n#endif\nuniform vFilteringInfo: vec2f;uniform hdrScale: f32;varying direction: vec3f;@fragment\nfn main(input: FragmentInputs)->FragmentOutputs {var color: vec3f=irradiance(inputTexture,inputTextureSampler,input.direction,uniforms.vFilteringInfo,0.0,vec3f(1.0),input.direction\n#ifdef IBL_CDF_FILTERING\n,icdfTexture,icdfTextureSampler\n#endif\n);fragmentOutputs.color= vec4f(color*uniforms.hdrScale,1.0);}";r.v.ShadersStoreWGSL[a]||(r.v.ShadersStoreWGSL[a]=t);const i={name:a,shader:t}}}]);
@@ -0,0 +1 @@
1
+ /*! filename:4486 */
@@ -0,0 +1,2 @@
1
+ /*! For license information please see 4555.real-time-viewer.umd.min.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[4555],{44555:(t,e,i)=>{i.r(e),i.d(e,{FlowGraphMultiGateBlock:()=>FlowGraphMultiGateBlock});var s=i(20538),n=i(17693),a=i(39426),l=i(234);class FlowGraphMultiGateBlock extends n.Q{constructor(t){super(t),this.config=t,this.outputSignals=[],this.reset=this._registerSignalInput("reset"),this.lastIndex=this.registerDataOutput("lastIndex",a.fj,new l.K(-1)),this.setNumberOfOutputSignals(t?.outputSignalCount)}_getNextIndex(t){if(t.includes(!1)||this.config.isLoop&&t.fill(!1),this.config.isRandom){const e=t.map(((t,e)=>t?-1:e)).filter((t=>-1!==t));return e.length?e[Math.floor(Math.random()*e.length)]:-1}return t.indexOf(!1)}setNumberOfOutputSignals(t=1){for(;this.outputSignals.length>t;){const t=this.outputSignals.pop();t&&(t.disconnectFromAll(),this._unregisterSignalOutput(t.name))}for(;this.outputSignals.length<t;)this.outputSignals.push(this._registerSignalOutput(`out_${this.outputSignals.length}`))}_execute(t,e){if(t._hasExecutionVariable(this,"indexesUsed")||t._setExecutionVariable(this,"indexesUsed",this.outputSignals.map((()=>!1))),e===this.reset)return t._deleteExecutionVariable(this,"indexesUsed"),void this.lastIndex.setValue(new l.K(-1),t);const i=t._getExecutionVariable(this,"indexesUsed",[]),s=this._getNextIndex(i);s>-1&&(this.lastIndex.setValue(new l.K(s),t),i[s]=!0,t._setExecutionVariable(this,"indexesUsed",i),this.outputSignals[s]._activateSignal(t))}getClassName(){return"FlowGraphMultiGateBlock"}serialize(t){super.serialize(t),t.config.outputSignalCount=this.config.outputSignalCount,t.config.isRandom=this.config.isRandom,t.config.loop=this.config.isLoop,t.config.startIndex=this.config.startIndex}}(0,s.H7)("FlowGraphMultiGateBlock",FlowGraphMultiGateBlock)}}]);