@crystaldesign/real-time-viewer 26.1.0-beta.1 → 26.1.0-beta.3

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 (342) hide show
  1. package/build/esm/index.js +165 -41
  2. package/build/types/real-time-viewer/src/index.d.ts.map +1 -1
  3. package/build/types/real-time-viewer/src/parser/createCams/index.d.ts.map +1 -1
  4. package/build/types/real-time-viewer/src/store/SceneStore.d.ts +1 -0
  5. package/build/types/real-time-viewer/src/store/SceneStore.d.ts.map +1 -1
  6. package/build/types/real-time-viewer/src/store/UIStore.d.ts +1 -0
  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 +2 -0
  9. package/build/types/real-time-viewer/src/useRealTimeRenderData.d.ts.map +1 -1
  10. package/build/umd/243.real-time-viewer.umd.min.js +2 -0
  11. package/build/umd/243.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  12. package/build/umd/470.real-time-viewer.umd.min.js +2 -0
  13. package/build/umd/470.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  14. package/build/umd/833.real-time-viewer.umd.min.js +2 -0
  15. package/build/umd/833.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  16. package/build/umd/real-time-viewer.umd.min.js +1 -1
  17. package/build/umd/report.html +1 -1
  18. package/package.json +2 -2
  19. package/build/umd/1020.real-time-viewer.umd.min.js +0 -2
  20. package/build/umd/1020.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  21. package/build/umd/1107.real-time-viewer.umd.min.js +0 -2
  22. package/build/umd/1107.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  23. package/build/umd/1153.real-time-viewer.umd.min.js +0 -2
  24. package/build/umd/1153.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  25. package/build/umd/1309.real-time-viewer.umd.min.js +0 -2
  26. package/build/umd/1309.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  27. package/build/umd/1399.real-time-viewer.umd.min.js +0 -2
  28. package/build/umd/1399.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  29. package/build/umd/1447.real-time-viewer.umd.min.js +0 -2
  30. package/build/umd/1447.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  31. package/build/umd/1459.real-time-viewer.umd.min.js +0 -2
  32. package/build/umd/1459.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  33. package/build/umd/1499.real-time-viewer.umd.min.js +0 -2
  34. package/build/umd/1499.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  35. package/build/umd/1510.real-time-viewer.umd.min.js +0 -2
  36. package/build/umd/1510.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  37. package/build/umd/1605.real-time-viewer.umd.min.js +0 -2
  38. package/build/umd/1605.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  39. package/build/umd/1781.real-time-viewer.umd.min.js +0 -2
  40. package/build/umd/1781.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  41. package/build/umd/1808.real-time-viewer.umd.min.js +0 -2
  42. package/build/umd/1808.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  43. package/build/umd/1887.real-time-viewer.umd.min.js +0 -2
  44. package/build/umd/1887.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  45. package/build/umd/1924.real-time-viewer.umd.min.js +0 -2
  46. package/build/umd/1924.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  47. package/build/umd/2011.real-time-viewer.umd.min.js +0 -2
  48. package/build/umd/2011.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  49. package/build/umd/2128.real-time-viewer.umd.min.js +0 -2
  50. package/build/umd/2128.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  51. package/build/umd/2265.real-time-viewer.umd.min.js +0 -2
  52. package/build/umd/2265.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  53. package/build/umd/2371.real-time-viewer.umd.min.js +0 -2
  54. package/build/umd/2371.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  55. package/build/umd/2439.real-time-viewer.umd.min.js +0 -2
  56. package/build/umd/2439.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  57. package/build/umd/2517.real-time-viewer.umd.min.js +0 -2
  58. package/build/umd/2517.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  59. package/build/umd/2619.real-time-viewer.umd.min.js +0 -2
  60. package/build/umd/2619.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  61. package/build/umd/2668.real-time-viewer.umd.min.js +0 -2
  62. package/build/umd/2668.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  63. package/build/umd/2760.real-time-viewer.umd.min.js +0 -2
  64. package/build/umd/2760.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  65. package/build/umd/2782.real-time-viewer.umd.min.js +0 -2
  66. package/build/umd/2782.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  67. package/build/umd/2795.real-time-viewer.umd.min.js +0 -2
  68. package/build/umd/2795.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  69. package/build/umd/2796.real-time-viewer.umd.min.js +0 -2
  70. package/build/umd/2796.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  71. package/build/umd/2817.real-time-viewer.umd.min.js +0 -2
  72. package/build/umd/2817.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  73. package/build/umd/2871.real-time-viewer.umd.min.js +0 -2
  74. package/build/umd/2871.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  75. package/build/umd/3040.real-time-viewer.umd.min.js +0 -2
  76. package/build/umd/3040.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  77. package/build/umd/3116.real-time-viewer.umd.min.js +0 -2
  78. package/build/umd/3116.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  79. package/build/umd/3210.real-time-viewer.umd.min.js +0 -2
  80. package/build/umd/3210.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  81. package/build/umd/3219.real-time-viewer.umd.min.js +0 -2
  82. package/build/umd/3219.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  83. package/build/umd/3242.real-time-viewer.umd.min.js +0 -2
  84. package/build/umd/3242.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  85. package/build/umd/3243.real-time-viewer.umd.min.js +0 -2
  86. package/build/umd/3243.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  87. package/build/umd/3296.real-time-viewer.umd.min.js +0 -2
  88. package/build/umd/3296.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  89. package/build/umd/3330.real-time-viewer.umd.min.js +0 -2
  90. package/build/umd/3330.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  91. package/build/umd/3351.real-time-viewer.umd.min.js +0 -2
  92. package/build/umd/3351.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  93. package/build/umd/3420.real-time-viewer.umd.min.js +0 -2
  94. package/build/umd/3420.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  95. package/build/umd/3436.real-time-viewer.umd.min.js +0 -2
  96. package/build/umd/3436.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  97. package/build/umd/3439.real-time-viewer.umd.min.js +0 -2
  98. package/build/umd/3439.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  99. package/build/umd/3456.real-time-viewer.umd.min.js +0 -2
  100. package/build/umd/3456.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  101. package/build/umd/3652.real-time-viewer.umd.min.js +0 -2
  102. package/build/umd/3652.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  103. package/build/umd/377.real-time-viewer.umd.min.js +0 -2
  104. package/build/umd/377.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  105. package/build/umd/3839.real-time-viewer.umd.min.js +0 -2
  106. package/build/umd/3839.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  107. package/build/umd/3917.real-time-viewer.umd.min.js +0 -2
  108. package/build/umd/3917.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  109. package/build/umd/3945.real-time-viewer.umd.min.js +0 -2
  110. package/build/umd/3945.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  111. package/build/umd/4022.real-time-viewer.umd.min.js +0 -2
  112. package/build/umd/4022.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  113. package/build/umd/4049.real-time-viewer.umd.min.js +0 -2
  114. package/build/umd/4049.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  115. package/build/umd/4051.real-time-viewer.umd.min.js +0 -2
  116. package/build/umd/4051.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  117. package/build/umd/4091.real-time-viewer.umd.min.js +0 -2
  118. package/build/umd/4091.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  119. package/build/umd/410.real-time-viewer.umd.min.js +0 -2
  120. package/build/umd/410.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  121. package/build/umd/4141.real-time-viewer.umd.min.js +0 -2
  122. package/build/umd/4141.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  123. package/build/umd/4153.real-time-viewer.umd.min.js +0 -2
  124. package/build/umd/4153.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  125. package/build/umd/4248.real-time-viewer.umd.min.js +0 -2
  126. package/build/umd/4248.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  127. package/build/umd/4358.real-time-viewer.umd.min.js +0 -2
  128. package/build/umd/4358.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  129. package/build/umd/4378.real-time-viewer.umd.min.js +0 -2
  130. package/build/umd/4378.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  131. package/build/umd/4431.real-time-viewer.umd.min.js +0 -2
  132. package/build/umd/4431.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  133. package/build/umd/4478.real-time-viewer.umd.min.js +0 -2
  134. package/build/umd/4478.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  135. package/build/umd/4486.real-time-viewer.umd.min.js +0 -2
  136. package/build/umd/4486.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  137. package/build/umd/4555.real-time-viewer.umd.min.js +0 -2
  138. package/build/umd/4555.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  139. package/build/umd/4560.real-time-viewer.umd.min.js +0 -2
  140. package/build/umd/4560.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  141. package/build/umd/4602.real-time-viewer.umd.min.js +0 -2
  142. package/build/umd/4602.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  143. package/build/umd/4623.real-time-viewer.umd.min.js +0 -2
  144. package/build/umd/4623.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  145. package/build/umd/4661.real-time-viewer.umd.min.js +0 -2
  146. package/build/umd/4661.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  147. package/build/umd/4667.real-time-viewer.umd.min.js +0 -2
  148. package/build/umd/4667.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  149. package/build/umd/4669.real-time-viewer.umd.min.js +0 -2
  150. package/build/umd/4669.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  151. package/build/umd/4711.real-time-viewer.umd.min.js +0 -2
  152. package/build/umd/4711.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  153. package/build/umd/4806.real-time-viewer.umd.min.js +0 -2
  154. package/build/umd/4806.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  155. package/build/umd/4823.real-time-viewer.umd.min.js +0 -2
  156. package/build/umd/4823.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  157. package/build/umd/4953.real-time-viewer.umd.min.js +0 -2
  158. package/build/umd/4953.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  159. package/build/umd/5197.real-time-viewer.umd.min.js +0 -2
  160. package/build/umd/5197.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  161. package/build/umd/539.real-time-viewer.umd.min.js +0 -2
  162. package/build/umd/539.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  163. package/build/umd/5462.real-time-viewer.umd.min.js +0 -2
  164. package/build/umd/5462.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  165. package/build/umd/5477.real-time-viewer.umd.min.js +0 -2
  166. package/build/umd/5477.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  167. package/build/umd/5483.real-time-viewer.umd.min.js +0 -2
  168. package/build/umd/5483.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  169. package/build/umd/5498.real-time-viewer.umd.min.js +0 -2
  170. package/build/umd/5498.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  171. package/build/umd/5555.real-time-viewer.umd.min.js +0 -2
  172. package/build/umd/5555.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  173. package/build/umd/5573.real-time-viewer.umd.min.js +0 -2
  174. package/build/umd/5573.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  175. package/build/umd/5645.real-time-viewer.umd.min.js +0 -2
  176. package/build/umd/5645.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  177. package/build/umd/5650.real-time-viewer.umd.min.js +0 -2
  178. package/build/umd/5650.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  179. package/build/umd/5746.real-time-viewer.umd.min.js +0 -2
  180. package/build/umd/5746.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  181. package/build/umd/5750.real-time-viewer.umd.min.js +0 -2
  182. package/build/umd/5750.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  183. package/build/umd/5779.real-time-viewer.umd.min.js +0 -2
  184. package/build/umd/5779.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  185. package/build/umd/580.real-time-viewer.umd.min.js +0 -2
  186. package/build/umd/580.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  187. package/build/umd/5846.real-time-viewer.umd.min.js +0 -2
  188. package/build/umd/5846.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  189. package/build/umd/5860.real-time-viewer.umd.min.js +0 -2
  190. package/build/umd/5860.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  191. package/build/umd/5880.real-time-viewer.umd.min.js +0 -2
  192. package/build/umd/5880.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  193. package/build/umd/5922.real-time-viewer.umd.min.js +0 -2
  194. package/build/umd/5922.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  195. package/build/umd/6057.real-time-viewer.umd.min.js +0 -2
  196. package/build/umd/6057.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  197. package/build/umd/6095.real-time-viewer.umd.min.js +0 -2
  198. package/build/umd/6095.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  199. package/build/umd/6126.real-time-viewer.umd.min.js +0 -2
  200. package/build/umd/6126.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  201. package/build/umd/6141.real-time-viewer.umd.min.js +0 -2
  202. package/build/umd/6141.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  203. package/build/umd/615.real-time-viewer.umd.min.js +0 -2
  204. package/build/umd/615.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  205. package/build/umd/6169.real-time-viewer.umd.min.js +0 -2
  206. package/build/umd/6169.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  207. package/build/umd/6182.real-time-viewer.umd.min.js +0 -2
  208. package/build/umd/6182.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  209. package/build/umd/6230.real-time-viewer.umd.min.js +0 -2
  210. package/build/umd/6230.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  211. package/build/umd/6288.real-time-viewer.umd.min.js +0 -2
  212. package/build/umd/6288.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  213. package/build/umd/6357.real-time-viewer.umd.min.js +0 -2
  214. package/build/umd/6357.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  215. package/build/umd/6442.real-time-viewer.umd.min.js +0 -2
  216. package/build/umd/6442.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  217. package/build/umd/653.real-time-viewer.umd.min.js +0 -2
  218. package/build/umd/653.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  219. package/build/umd/6656.real-time-viewer.umd.min.js +0 -2
  220. package/build/umd/6656.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  221. package/build/umd/6728.real-time-viewer.umd.min.js +0 -2
  222. package/build/umd/6728.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  223. package/build/umd/6746.real-time-viewer.umd.min.js +0 -2
  224. package/build/umd/6746.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  225. package/build/umd/6748.real-time-viewer.umd.min.js +0 -2
  226. package/build/umd/6748.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  227. package/build/umd/6761.real-time-viewer.umd.min.js +0 -2
  228. package/build/umd/6761.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  229. package/build/umd/6829.real-time-viewer.umd.min.js +0 -2
  230. package/build/umd/6829.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  231. package/build/umd/6954.real-time-viewer.umd.min.js +0 -2
  232. package/build/umd/6954.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  233. package/build/umd/7038.real-time-viewer.umd.min.js +0 -2
  234. package/build/umd/7038.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  235. package/build/umd/7042.real-time-viewer.umd.min.js +0 -2
  236. package/build/umd/7042.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  237. package/build/umd/7074.real-time-viewer.umd.min.js +0 -2
  238. package/build/umd/7074.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  239. package/build/umd/710.real-time-viewer.umd.min.js +0 -2
  240. package/build/umd/710.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  241. package/build/umd/7142.real-time-viewer.umd.min.js +0 -2
  242. package/build/umd/7142.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  243. package/build/umd/7154.real-time-viewer.umd.min.js +0 -2
  244. package/build/umd/7154.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  245. package/build/umd/7229.real-time-viewer.umd.min.js +0 -2
  246. package/build/umd/7229.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  247. package/build/umd/7352.real-time-viewer.umd.min.js +0 -2
  248. package/build/umd/7352.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  249. package/build/umd/7489.real-time-viewer.umd.min.js +0 -2
  250. package/build/umd/7489.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  251. package/build/umd/7501.real-time-viewer.umd.min.js +0 -2
  252. package/build/umd/7501.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  253. package/build/umd/7540.real-time-viewer.umd.min.js +0 -2
  254. package/build/umd/7540.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  255. package/build/umd/7607.real-time-viewer.umd.min.js +0 -2
  256. package/build/umd/7607.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  257. package/build/umd/7615.real-time-viewer.umd.min.js +0 -2
  258. package/build/umd/7615.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  259. package/build/umd/7635.real-time-viewer.umd.min.js +0 -2
  260. package/build/umd/7635.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  261. package/build/umd/7647.real-time-viewer.umd.min.js +0 -2
  262. package/build/umd/7647.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  263. package/build/umd/7664.real-time-viewer.umd.min.js +0 -2
  264. package/build/umd/7664.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  265. package/build/umd/7729.real-time-viewer.umd.min.js +0 -2
  266. package/build/umd/7729.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  267. package/build/umd/7736.real-time-viewer.umd.min.js +0 -2
  268. package/build/umd/7736.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  269. package/build/umd/7751.real-time-viewer.umd.min.js +0 -2
  270. package/build/umd/7751.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  271. package/build/umd/7754.real-time-viewer.umd.min.js +0 -2
  272. package/build/umd/7754.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  273. package/build/umd/781.real-time-viewer.umd.min.js +0 -2
  274. package/build/umd/781.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  275. package/build/umd/8008.real-time-viewer.umd.min.js +0 -2
  276. package/build/umd/8008.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  277. package/build/umd/8078.real-time-viewer.umd.min.js +0 -2
  278. package/build/umd/8078.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  279. package/build/umd/8105.real-time-viewer.umd.min.js +0 -2
  280. package/build/umd/8105.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  281. package/build/umd/815.real-time-viewer.umd.min.js +0 -2
  282. package/build/umd/815.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  283. package/build/umd/8180.real-time-viewer.umd.min.js +0 -2
  284. package/build/umd/8180.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  285. package/build/umd/8240.real-time-viewer.umd.min.js +0 -2
  286. package/build/umd/8240.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  287. package/build/umd/8254.real-time-viewer.umd.min.js +0 -2
  288. package/build/umd/8254.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  289. package/build/umd/8333.real-time-viewer.umd.min.js +0 -2
  290. package/build/umd/8333.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  291. package/build/umd/8588.real-time-viewer.umd.min.js +0 -2
  292. package/build/umd/8588.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  293. package/build/umd/8620.real-time-viewer.umd.min.js +0 -2
  294. package/build/umd/8620.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  295. package/build/umd/8627.real-time-viewer.umd.min.js +0 -2
  296. package/build/umd/8627.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  297. package/build/umd/8645.real-time-viewer.umd.min.js +0 -2
  298. package/build/umd/8645.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  299. package/build/umd/8728.real-time-viewer.umd.min.js +0 -2
  300. package/build/umd/8728.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  301. package/build/umd/8729.real-time-viewer.umd.min.js +0 -2
  302. package/build/umd/8729.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  303. package/build/umd/8833.real-time-viewer.umd.min.js +0 -2
  304. package/build/umd/8833.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  305. package/build/umd/8954.real-time-viewer.umd.min.js +0 -2
  306. package/build/umd/8954.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  307. package/build/umd/8991.real-time-viewer.umd.min.js +0 -2
  308. package/build/umd/8991.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  309. package/build/umd/9046.real-time-viewer.umd.min.js +0 -2
  310. package/build/umd/9046.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  311. package/build/umd/9078.real-time-viewer.umd.min.js +0 -2
  312. package/build/umd/9078.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  313. package/build/umd/913.real-time-viewer.umd.min.js +0 -2
  314. package/build/umd/913.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  315. package/build/umd/9199.real-time-viewer.umd.min.js +0 -2
  316. package/build/umd/9199.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  317. package/build/umd/930.real-time-viewer.umd.min.js +0 -2
  318. package/build/umd/930.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  319. package/build/umd/9383.real-time-viewer.umd.min.js +0 -2
  320. package/build/umd/9383.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  321. package/build/umd/9449.real-time-viewer.umd.min.js +0 -2
  322. package/build/umd/9449.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  323. package/build/umd/9487.real-time-viewer.umd.min.js +0 -2
  324. package/build/umd/9487.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  325. package/build/umd/9568.real-time-viewer.umd.min.js +0 -2
  326. package/build/umd/9568.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  327. package/build/umd/9643.real-time-viewer.umd.min.js +0 -2
  328. package/build/umd/9643.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  329. package/build/umd/9646.real-time-viewer.umd.min.js +0 -2
  330. package/build/umd/9646.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  331. package/build/umd/9712.real-time-viewer.umd.min.js +0 -2
  332. package/build/umd/9712.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  333. package/build/umd/9883.real-time-viewer.umd.min.js +0 -2
  334. package/build/umd/9883.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  335. package/build/umd/9884.real-time-viewer.umd.min.js +0 -2
  336. package/build/umd/9884.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  337. package/build/umd/9928.real-time-viewer.umd.min.js +0 -2
  338. package/build/umd/9928.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  339. package/build/umd/9959.real-time-viewer.umd.min.js +0 -2
  340. package/build/umd/9959.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  341. package/build/umd/9990.real-time-viewer.umd.min.js +0 -2
  342. package/build/umd/9990.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
@@ -1,2 +0,0 @@
1
- /*! For license information please see 4022.real-time-viewer.umd.min.js.LICENSE.txt */
2
- "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[4022],{38269:(e,n,i)=>{var a=i(17416);const o="clusteredLightingFunctions",t="struct ClusteredLight {vec4 vLightData;vec4 vLightDiffuse;vec4 vLightSpecular;vec4 vLightDirection;vec4 vLightFalloff;};\n#define inline\nClusteredLight getClusteredLight(sampler2D lightDataTexture,int index) {return ClusteredLight(\ntexelFetch(lightDataTexture,ivec2(0,index),0),\ntexelFetch(lightDataTexture,ivec2(1,index),0),\ntexelFetch(lightDataTexture,ivec2(2,index),0),\ntexelFetch(lightDataTexture,ivec2(3,index),0),\ntexelFetch(lightDataTexture,ivec2(4,index),0)\n);}\nint getClusteredSliceIndex(vec2 sliceData,float viewDepth) {return int(log(viewDepth)*sliceData.x+sliceData.y);}\n";a.v.IncludesShadersStore[o]||(a.v.IncludesShadersStore[o]=t)},31559:(e,n,i)=>{var a=i(17416);const o="decalFragment",t="#ifdef DECAL\n#ifdef GAMMADECAL\ndecalColor.rgb=toLinearSpace(decalColor.rgb);\n#endif\n#ifdef DECAL_SMOOTHALPHA\ndecalColor.a*=decalColor.a;\n#endif\nsurfaceAlbedo.rgb=mix(surfaceAlbedo.rgb,decalColor.rgb,decalColor.a);\n#endif\n";a.v.IncludesShadersStore[o]||(a.v.IncludesShadersStore[o]=t)},6012:(e,n,i)=>{var a=i(17416);const o="lightFragment",t="#ifdef LIGHT{X}\n#if defined(SHADOWONLY) || defined(LIGHTMAP) && defined(LIGHTMAPEXCLUDED{X}) && defined(LIGHTMAPNOSPECULAR{X})\n#else\nvec4 diffuse{X}=light{X}.vLightDiffuse;\n#define CUSTOM_LIGHT{X}_COLOR \n#if defined(PBR) && defined(CLUSTLIGHT{X}) && defined(CLUSTLIGHT_BATCH) && CLUSTLIGHT_BATCH>0\n{int sliceIndex=min(getClusteredSliceIndex(light{X}.vSliceData,vViewDepth),CLUSTLIGHT_SLICES-1);info=computeClusteredLighting(\nlightDataTexture{X},\ntileMaskTexture{X},\nlight{X}.vLightData,\nivec2(light{X}.vSliceRanges[sliceIndex]),\nviewDirectionW,\nnormalW,\nvPositionW,\nsurfaceAlbedo,\nreflectivityOut\n#ifdef IRIDESCENCE\n,iridescenceIntensity\n#endif\n#ifdef SS_TRANSLUCENCY\n,subSurfaceOut\n#endif\n#ifdef SPECULARTERM\n,AARoughnessFactors.x\n#endif\n#ifdef ANISOTROPIC\n,anisotropicOut\n#endif\n#ifdef SHEEN\n,sheenOut\n#endif\n#ifdef CLEARCOAT\n,clearcoatOut\n#endif\n);}\n#elif defined(PBR)\n#ifdef SPOTLIGHT{X}\npreInfo=computePointAndSpotPreLightingInfo(light{X}.vLightData,viewDirectionW,normalW,vPositionW);\n#elif defined(POINTLIGHT{X})\npreInfo=computePointAndSpotPreLightingInfo(light{X}.vLightData,viewDirectionW,normalW,vPositionW);\n#elif defined(HEMILIGHT{X})\npreInfo=computeHemisphericPreLightingInfo(light{X}.vLightData,viewDirectionW,normalW);\n#elif defined(DIRLIGHT{X})\npreInfo=computeDirectionalPreLightingInfo(light{X}.vLightData,viewDirectionW,normalW);\n#elif defined(AREALIGHT{X}) && defined(AREALIGHTSUPPORTED)\npreInfo=computeAreaPreLightingInfo(areaLightsLTC1Sampler,areaLightsLTC2Sampler,viewDirectionW,normalW,vPositionW,light{X}.vLightData,light{X}.vLightWidth.xyz,light{X}.vLightHeight.xyz,roughness);\n#endif\npreInfo.NdotV=NdotV;\n#ifdef SPOTLIGHT{X}\n#ifdef LIGHT_FALLOFF_GLTF{X}\npreInfo.attenuation=computeDistanceLightFalloff_GLTF(preInfo.lightDistanceSquared,light{X}.vLightFalloff.y);\n#ifdef IESLIGHTTEXTURE{X}\npreInfo.attenuation*=computeDirectionalLightFalloff_IES(light{X}.vLightDirection.xyz,preInfo.L,iesLightTexture{X});\n#else\npreInfo.attenuation*=computeDirectionalLightFalloff_GLTF(light{X}.vLightDirection.xyz,preInfo.L,light{X}.vLightFalloff.z,light{X}.vLightFalloff.w);\n#endif\n#elif defined(LIGHT_FALLOFF_PHYSICAL{X})\npreInfo.attenuation=computeDistanceLightFalloff_Physical(preInfo.lightDistanceSquared);\n#ifdef IESLIGHTTEXTURE{X}\npreInfo.attenuation*=computeDirectionalLightFalloff_IES(light{X}.vLightDirection.xyz,preInfo.L,iesLightTexture{X});\n#else\npreInfo.attenuation*=computeDirectionalLightFalloff_Physical(light{X}.vLightDirection.xyz,preInfo.L,light{X}.vLightDirection.w);\n#endif\n#elif defined(LIGHT_FALLOFF_STANDARD{X})\npreInfo.attenuation=computeDistanceLightFalloff_Standard(preInfo.lightOffset,light{X}.vLightFalloff.x);\n#ifdef IESLIGHTTEXTURE{X}\npreInfo.attenuation*=computeDirectionalLightFalloff_IES(light{X}.vLightDirection.xyz,preInfo.L,iesLightTexture{X});\n#else\npreInfo.attenuation*=computeDirectionalLightFalloff_Standard(light{X}.vLightDirection.xyz,preInfo.L,light{X}.vLightDirection.w,light{X}.vLightData.w);\n#endif\n#else\npreInfo.attenuation=computeDistanceLightFalloff(preInfo.lightOffset,preInfo.lightDistanceSquared,light{X}.vLightFalloff.x,light{X}.vLightFalloff.y);\n#ifdef IESLIGHTTEXTURE{X}\npreInfo.attenuation*=computeDirectionalLightFalloff_IES(light{X}.vLightDirection.xyz,preInfo.L,iesLightTexture{X});\n#else\npreInfo.attenuation*=computeDirectionalLightFalloff(light{X}.vLightDirection.xyz,preInfo.L,light{X}.vLightDirection.w,light{X}.vLightData.w,light{X}.vLightFalloff.z,light{X}.vLightFalloff.w);\n#endif\n#endif\n#elif defined(POINTLIGHT{X})\n#ifdef LIGHT_FALLOFF_GLTF{X}\npreInfo.attenuation=computeDistanceLightFalloff_GLTF(preInfo.lightDistanceSquared,light{X}.vLightFalloff.y);\n#elif defined(LIGHT_FALLOFF_PHYSICAL{X})\npreInfo.attenuation=computeDistanceLightFalloff_Physical(preInfo.lightDistanceSquared);\n#elif defined(LIGHT_FALLOFF_STANDARD{X})\npreInfo.attenuation=computeDistanceLightFalloff_Standard(preInfo.lightOffset,light{X}.vLightFalloff.x);\n#else\npreInfo.attenuation=computeDistanceLightFalloff(preInfo.lightOffset,preInfo.lightDistanceSquared,light{X}.vLightFalloff.x,light{X}.vLightFalloff.y);\n#endif\n#else\npreInfo.attenuation=1.0;\n#endif\n#if defined(HEMILIGHT{X}) || defined(AREALIGHT{X})\npreInfo.roughness=roughness;\n#else\npreInfo.roughness=adjustRoughnessFromLightProperties(roughness,light{X}.vLightSpecular.a,preInfo.lightDistance);\n#endif\npreInfo.diffuseRoughness=diffuseRoughness;preInfo.surfaceAlbedo=surfaceAlbedo;\n#ifdef IRIDESCENCE\npreInfo.iridescenceIntensity=iridescenceIntensity;\n#endif\n#ifdef SS_TRANSLUCENCY\ninfo.diffuseTransmission=vec3(0.0);\n#endif\n#ifdef HEMILIGHT{X}\ninfo.diffuse=computeHemisphericDiffuseLighting(preInfo,diffuse{X}.rgb,light{X}.vLightGround);\n#elif defined(AREALIGHT{X})\ninfo.diffuse=computeAreaDiffuseLighting(preInfo,diffuse{X}.rgb);\n#elif defined(SS_TRANSLUCENCY)\n#ifndef SS_TRANSLUCENCY_LEGACY\ninfo.diffuse=computeDiffuseLighting(preInfo,diffuse{X}.rgb)*(1.0-subSurfaceOut.translucencyIntensity);info.diffuseTransmission=computeDiffuseTransmittedLighting(preInfo,diffuse{X}.rgb,subSurfaceOut.transmittance); \n#else\ninfo.diffuse=computeDiffuseTransmittedLighting(preInfo,diffuse{X}.rgb,subSurfaceOut.transmittance);\n#endif\n#else\ninfo.diffuse=computeDiffuseLighting(preInfo,diffuse{X}.rgb);\n#endif\n#ifdef SPECULARTERM\n#if AREALIGHT{X}\ninfo.specular=computeAreaSpecularLighting(preInfo,light{X}.vLightSpecular.rgb,clearcoatOut.specularEnvironmentR0,reflectivityOut.colorReflectanceF90);\n#else\n#if (CONDUCTOR_SPECULAR_MODEL==CONDUCTOR_SPECULAR_MODEL_OPENPBR)\n{vec3 metalFresnel=reflectivityOut.specularWeight*getF82Specular(preInfo.VdotH,clearcoatOut.specularEnvironmentR0,reflectivityOut.colorReflectanceF90,reflectivityOut.roughness);vec3 dielectricFresnel=fresnelSchlickGGX(preInfo.VdotH,reflectivityOut.dielectricColorF0,reflectivityOut.colorReflectanceF90);coloredFresnel=mix(dielectricFresnel,metalFresnel,reflectivityOut.metallic);}\n#else\ncoloredFresnel=fresnelSchlickGGX(preInfo.VdotH,clearcoatOut.specularEnvironmentR0,reflectivityOut.colorReflectanceF90);\n#endif\n#ifndef LEGACY_SPECULAR_ENERGY_CONSERVATION\n{float NdotH=dot(normalW,preInfo.H);vec3 fresnel=fresnelSchlickGGX(NdotH,vec3(reflectanceF0),specularEnvironmentR90);info.diffuse*=(vec3(1.0)-fresnel);}\n#endif\n#ifdef ANISOTROPIC\ninfo.specular=computeAnisotropicSpecularLighting(preInfo,viewDirectionW,normalW,anisotropicOut.anisotropicTangent,anisotropicOut.anisotropicBitangent,anisotropicOut.anisotropy,clearcoatOut.specularEnvironmentR0,specularEnvironmentR90,AARoughnessFactors.x,diffuse{X}.rgb);\n#else\ninfo.specular=computeSpecularLighting(preInfo,normalW,clearcoatOut.specularEnvironmentR0,coloredFresnel,AARoughnessFactors.x,diffuse{X}.rgb);\n#endif\n#endif\n#endif\n#ifndef AREALIGHT{X}\n#ifdef SHEEN\n#ifdef SHEEN_LINKWITHALBEDO\npreInfo.roughness=sheenOut.sheenIntensity;\n#else\n#ifdef HEMILIGHT{X}\npreInfo.roughness=sheenOut.sheenRoughness;\n#else\npreInfo.roughness=adjustRoughnessFromLightProperties(sheenOut.sheenRoughness,light{X}.vLightSpecular.a,preInfo.lightDistance);\n#endif\n#endif\ninfo.sheen=computeSheenLighting(preInfo,normalW,sheenOut.sheenColor,specularEnvironmentR90,AARoughnessFactors.x,diffuse{X}.rgb);\n#endif\n#ifdef CLEARCOAT\n#ifdef HEMILIGHT{X}\npreInfo.roughness=clearcoatOut.clearCoatRoughness;\n#else\npreInfo.roughness=adjustRoughnessFromLightProperties(clearcoatOut.clearCoatRoughness,light{X}.vLightSpecular.a,preInfo.lightDistance);\n#endif\ninfo.clearCoat=computeClearCoatLighting(preInfo,clearcoatOut.clearCoatNormalW,clearcoatOut.clearCoatAARoughnessFactors.x,clearcoatOut.clearCoatIntensity,diffuse{X}.rgb);\n#ifdef CLEARCOAT_TINT\nabsorption=computeClearCoatLightingAbsorption(clearcoatOut.clearCoatNdotVRefract,preInfo.L,clearcoatOut.clearCoatNormalW,clearcoatOut.clearCoatColor,clearcoatOut.clearCoatThickness,clearcoatOut.clearCoatIntensity);info.diffuse*=absorption;\n#ifdef SS_TRANSLUCENCY\ninfo.diffuseTransmission*=absorption;\n#endif\n#ifdef SPECULARTERM\ninfo.specular*=absorption;\n#endif\n#endif\ninfo.diffuse*=info.clearCoat.w;\n#ifdef SS_TRANSLUCENCY\ninfo.diffuseTransmission*=info.clearCoat.w;\n#endif\n#ifdef SPECULARTERM\ninfo.specular*=info.clearCoat.w;\n#endif\n#ifdef SHEEN\ninfo.sheen*=info.clearCoat.w;\n#endif\n#endif\n#endif\n#else\n#ifdef SPOTLIGHT{X}\n#ifdef IESLIGHTTEXTURE{X}\ninfo=computeIESSpotLighting(viewDirectionW,normalW,light{X}.vLightData,light{X}.vLightDirection,diffuse{X}.rgb,light{X}.vLightSpecular.rgb,diffuse{X}.a,glossiness,iesLightTexture{X});\n#else\ninfo=computeSpotLighting(viewDirectionW,normalW,light{X}.vLightData,light{X}.vLightDirection,diffuse{X}.rgb,light{X}.vLightSpecular.rgb,diffuse{X}.a,glossiness);\n#endif\n#elif defined(HEMILIGHT{X})\ninfo=computeHemisphericLighting(viewDirectionW,normalW,light{X}.vLightData,diffuse{X}.rgb,light{X}.vLightSpecular.rgb,light{X}.vLightGround,glossiness);\n#elif defined(POINTLIGHT{X}) || defined(DIRLIGHT{X})\ninfo=computeLighting(viewDirectionW,normalW,light{X}.vLightData,diffuse{X}.rgb,light{X}.vLightSpecular.rgb,diffuse{X}.a,glossiness);\n#elif defined(AREALIGHT{X}) && defined(AREALIGHTSUPPORTED)\ninfo=computeAreaLighting(areaLightsLTC1Sampler,areaLightsLTC2Sampler,viewDirectionW,normalW,vPositionW,light{X}.vLightData.xyz,light{X}.vLightWidth.rgb,light{X}.vLightHeight.rgb,diffuse{X}.rgb,light{X}.vLightSpecular.rgb,\n#ifdef AREALIGHTNOROUGHTNESS\n0.5\n#else\nvReflectionInfos.y\n#endif\n);\n#elif defined(CLUSTLIGHT{X}) && CLUSTLIGHT_BATCH>0\n{int sliceIndex=min(getClusteredSliceIndex(light{X}.vSliceData,vViewDepth),CLUSTLIGHT_SLICES-1);info=computeClusteredLighting(lightDataTexture{X},tileMaskTexture{X},viewDirectionW,normalW,light{X}.vLightData,ivec2(light{X}.vSliceRanges[sliceIndex]),glossiness);}\n#endif\n#endif\n#ifdef PROJECTEDLIGHTTEXTURE{X}\ninfo.diffuse*=computeProjectionTextureDiffuseLighting(projectionLightTexture{X},textureProjectionMatrix{X},vPositionW);\n#endif\n#endif\n#ifdef SHADOW{X}\n#ifdef SHADOWCSM{X}\nfor (int i=0; i<SHADOWCSMNUM_CASCADES{X}; i++)\n{\n#ifdef SHADOWCSM_RIGHTHANDED{X}\ndiff{X}=viewFrustumZ{X}[i]+vPositionFromCamera{X}.z;\n#else\ndiff{X}=viewFrustumZ{X}[i]-vPositionFromCamera{X}.z;\n#endif\nif (diff{X}>=0.) {index{X}=i;break;}}\n#ifdef SHADOWCSMUSESHADOWMAXZ{X}\nif (index{X}>=0)\n#endif\n{\n#if defined(SHADOWPCF{X})\n#if defined(SHADOWLOWQUALITY{X})\nshadow=computeShadowWithCSMPCF1(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],shadowTexture{X},light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);\n#elif defined(SHADOWMEDIUMQUALITY{X})\nshadow=computeShadowWithCSMPCF3(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],shadowTexture{X},light{X}.shadowsInfo.yz,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);\n#else\nshadow=computeShadowWithCSMPCF5(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],shadowTexture{X},light{X}.shadowsInfo.yz,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);\n#endif\n#elif defined(SHADOWPCSS{X})\n#if defined(SHADOWLOWQUALITY{X})\nshadow=computeShadowWithCSMPCSS16(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],depthTexture{X},shadowTexture{X},light{X}.shadowsInfo.y,light{X}.shadowsInfo.z,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w,lightSizeUVCorrection{X}[index{X}],depthCorrection{X}[index{X}],penumbraDarkness{X});\n#elif defined(SHADOWMEDIUMQUALITY{X})\nshadow=computeShadowWithCSMPCSS32(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],depthTexture{X},shadowTexture{X},light{X}.shadowsInfo.y,light{X}.shadowsInfo.z,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w,lightSizeUVCorrection{X}[index{X}],depthCorrection{X}[index{X}],penumbraDarkness{X});\n#else\nshadow=computeShadowWithCSMPCSS64(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],depthTexture{X},shadowTexture{X},light{X}.shadowsInfo.y,light{X}.shadowsInfo.z,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w,lightSizeUVCorrection{X}[index{X}],depthCorrection{X}[index{X}],penumbraDarkness{X});\n#endif\n#else\nshadow=computeShadowCSM(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],shadowTexture{X},light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);\n#endif\n#ifdef SHADOWCSMDEBUG{X}\nshadowDebug{X}=vec3(shadow)*vCascadeColorsMultiplier{X}[index{X}];\n#endif\n#ifndef SHADOWCSMNOBLEND{X}\nfloat frustumLength=frustumLengths{X}[index{X}];float diffRatio=clamp(diff{X}/frustumLength,0.,1.)*cascadeBlendFactor{X};if (index{X}<(SHADOWCSMNUM_CASCADES{X}-1) && diffRatio<1.)\n{index{X}+=1;float nextShadow=0.;\n#if defined(SHADOWPCF{X})\n#if defined(SHADOWLOWQUALITY{X})\nnextShadow=computeShadowWithCSMPCF1(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],shadowTexture{X},light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);\n#elif defined(SHADOWMEDIUMQUALITY{X})\nnextShadow=computeShadowWithCSMPCF3(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],shadowTexture{X},light{X}.shadowsInfo.yz,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);\n#else\nnextShadow=computeShadowWithCSMPCF5(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],shadowTexture{X},light{X}.shadowsInfo.yz,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);\n#endif\n#elif defined(SHADOWPCSS{X})\n#if defined(SHADOWLOWQUALITY{X})\nnextShadow=computeShadowWithCSMPCSS16(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],depthTexture{X},shadowTexture{X},light{X}.shadowsInfo.y,light{X}.shadowsInfo.z,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w,lightSizeUVCorrection{X}[index{X}],depthCorrection{X}[index{X}],penumbraDarkness{X});\n#elif defined(SHADOWMEDIUMQUALITY{X})\nnextShadow=computeShadowWithCSMPCSS32(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],depthTexture{X},shadowTexture{X},light{X}.shadowsInfo.y,light{X}.shadowsInfo.z,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w,lightSizeUVCorrection{X}[index{X}],depthCorrection{X}[index{X}],penumbraDarkness{X});\n#else\nnextShadow=computeShadowWithCSMPCSS64(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],depthTexture{X},shadowTexture{X},light{X}.shadowsInfo.y,light{X}.shadowsInfo.z,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w,lightSizeUVCorrection{X}[index{X}],depthCorrection{X}[index{X}],penumbraDarkness{X});\n#endif\n#else\nnextShadow=computeShadowCSM(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],shadowTexture{X},light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);\n#endif\nshadow=mix(nextShadow,shadow,diffRatio);\n#ifdef SHADOWCSMDEBUG{X}\nshadowDebug{X}=mix(vec3(nextShadow)*vCascadeColorsMultiplier{X}[index{X}],shadowDebug{X},diffRatio);\n#endif\n}\n#endif\n}\n#elif defined(SHADOWCLOSEESM{X})\n#if defined(SHADOWCUBE{X})\nshadow=computeShadowWithCloseESMCube(vPositionW,light{X}.vLightData.xyz,shadowTexture{X},light{X}.shadowsInfo.x,light{X}.shadowsInfo.z,light{X}.depthValues);\n#else\nshadow=computeShadowWithCloseESM(vPositionFromLight{X},vDepthMetric{X},shadowTexture{X},light{X}.shadowsInfo.x,light{X}.shadowsInfo.z,light{X}.shadowsInfo.w);\n#endif\n#elif defined(SHADOWESM{X})\n#if defined(SHADOWCUBE{X})\nshadow=computeShadowWithESMCube(vPositionW,light{X}.vLightData.xyz,shadowTexture{X},light{X}.shadowsInfo.x,light{X}.shadowsInfo.z,light{X}.depthValues);\n#else\nshadow=computeShadowWithESM(vPositionFromLight{X},vDepthMetric{X},shadowTexture{X},light{X}.shadowsInfo.x,light{X}.shadowsInfo.z,light{X}.shadowsInfo.w);\n#endif\n#elif defined(SHADOWPOISSON{X})\n#if defined(SHADOWCUBE{X})\nshadow=computeShadowWithPoissonSamplingCube(vPositionW,light{X}.vLightData.xyz,shadowTexture{X},light{X}.shadowsInfo.y,light{X}.shadowsInfo.x,light{X}.depthValues);\n#else\nshadow=computeShadowWithPoissonSampling(vPositionFromLight{X},vDepthMetric{X},shadowTexture{X},light{X}.shadowsInfo.y,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);\n#endif\n#elif defined(SHADOWPCF{X})\n#if defined(SHADOWLOWQUALITY{X})\nshadow=computeShadowWithPCF1(vPositionFromLight{X},vDepthMetric{X},shadowTexture{X},light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);\n#elif defined(SHADOWMEDIUMQUALITY{X})\nshadow=computeShadowWithPCF3(vPositionFromLight{X},vDepthMetric{X},shadowTexture{X},light{X}.shadowsInfo.yz,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);\n#else\nshadow=computeShadowWithPCF5(vPositionFromLight{X},vDepthMetric{X},shadowTexture{X},light{X}.shadowsInfo.yz,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);\n#endif\n#elif defined(SHADOWPCSS{X})\n#if defined(SHADOWLOWQUALITY{X})\nshadow=computeShadowWithPCSS16(vPositionFromLight{X},vDepthMetric{X},depthTexture{X},shadowTexture{X},light{X}.shadowsInfo.y,light{X}.shadowsInfo.z,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);\n#elif defined(SHADOWMEDIUMQUALITY{X})\nshadow=computeShadowWithPCSS32(vPositionFromLight{X},vDepthMetric{X},depthTexture{X},shadowTexture{X},light{X}.shadowsInfo.y,light{X}.shadowsInfo.z,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);\n#else\nshadow=computeShadowWithPCSS64(vPositionFromLight{X},vDepthMetric{X},depthTexture{X},shadowTexture{X},light{X}.shadowsInfo.y,light{X}.shadowsInfo.z,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);\n#endif\n#else\n#if defined(SHADOWCUBE{X})\nshadow=computeShadowCube(vPositionW,light{X}.vLightData.xyz,shadowTexture{X},light{X}.shadowsInfo.x,light{X}.depthValues);\n#else\nshadow=computeShadow(vPositionFromLight{X},vDepthMetric{X},shadowTexture{X},light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);\n#endif\n#endif\n#ifdef SHADOWONLY\n#ifndef SHADOWINUSE\n#define SHADOWINUSE\n#endif\nglobalShadow+=shadow;shadowLightCount+=1.0;\n#endif\n#else\nshadow=1.;\n#endif\naggShadow+=shadow;numLights+=1.0;\n#ifndef SHADOWONLY\n#ifdef CUSTOMUSERLIGHTING\ndiffuseBase+=computeCustomDiffuseLighting(info,diffuseBase,shadow);\n#ifdef SPECULARTERM\nspecularBase+=computeCustomSpecularLighting(info,specularBase,shadow);\n#endif\n#elif defined(LIGHTMAP) && defined(LIGHTMAPEXCLUDED{X})\ndiffuseBase+=lightmapColor.rgb*shadow;\n#ifdef SPECULARTERM\n#ifndef LIGHTMAPNOSPECULAR{X}\nspecularBase+=info.specular*shadow*lightmapColor.rgb;\n#endif\n#endif\n#ifdef CLEARCOAT\n#ifndef LIGHTMAPNOSPECULAR{X}\nclearCoatBase+=info.clearCoat.rgb*shadow*lightmapColor.rgb;\n#endif\n#endif\n#ifdef SHEEN\n#ifndef LIGHTMAPNOSPECULAR{X}\nsheenBase+=info.sheen.rgb*shadow;\n#endif\n#endif\n#else\n#ifdef SHADOWCSMDEBUG{X}\ndiffuseBase+=info.diffuse*shadowDebug{X};\n#else\ndiffuseBase+=info.diffuse*shadow;\n#endif\n#ifdef SS_TRANSLUCENCY\ndiffuseTransmissionBase+=info.diffuseTransmission*shadow;\n#endif\n#ifdef SPECULARTERM\nspecularBase+=info.specular*shadow;\n#endif\n#ifdef CLEARCOAT\nclearCoatBase+=info.clearCoat.rgb*shadow;\n#endif\n#ifdef SHEEN\nsheenBase+=info.sheen.rgb*shadow;\n#endif\n#endif\n#endif\n#endif\n";a.v.IncludesShadersStore[o]||(a.v.IncludesShadersStore[o]=t)},30021:(e,n,i)=>{var a=i(17416);i(2889),i(66703);const o="pbrUboDeclaration",t="layout(std140,column_major) uniform;uniform Material {vec2 vAlbedoInfos;vec2 vBaseWeightInfos;vec2 vBaseDiffuseRoughnessInfos;vec4 vAmbientInfos;vec2 vOpacityInfos;vec2 vEmissiveInfos;vec2 vLightmapInfos;vec3 vReflectivityInfos;vec2 vMicroSurfaceSamplerInfos;vec3 vBumpInfos;mat4 albedoMatrix;mat4 baseWeightMatrix;mat4 baseDiffuseRoughnessMatrix;mat4 ambientMatrix;mat4 opacityMatrix;mat4 emissiveMatrix;mat4 lightmapMatrix;mat4 reflectivityMatrix;mat4 microSurfaceSamplerMatrix;mat4 bumpMatrix;vec2 vTangentSpaceParams;vec4 vAlbedoColor;float baseWeight;float baseDiffuseRoughness;vec4 vLightingIntensity;float pointSize;vec4 vReflectivityColor;vec3 vEmissiveColor;vec3 vAmbientColor;vec2 vDebugMode;vec4 vMetallicReflectanceFactors;vec2 vMetallicReflectanceInfos;mat4 metallicReflectanceMatrix;vec2 vReflectanceInfos;mat4 reflectanceMatrix;vec4 cameraInfo;vec2 vReflectionInfos;mat4 reflectionMatrix;vec3 vReflectionMicrosurfaceInfos;vec3 vReflectionPosition;vec3 vReflectionSize;vec2 vReflectionFilteringInfo;vec3 vReflectionDominantDirection;vec3 vReflectionColor;vec3 vSphericalL00;vec3 vSphericalL1_1;vec3 vSphericalL10;vec3 vSphericalL11;vec3 vSphericalL2_2;vec3 vSphericalL2_1;vec3 vSphericalL20;vec3 vSphericalL21;vec3 vSphericalL22;vec3 vSphericalX;vec3 vSphericalY;vec3 vSphericalZ;vec3 vSphericalXX_ZZ;vec3 vSphericalYY_ZZ;vec3 vSphericalZZ;vec3 vSphericalXY;vec3 vSphericalYZ;vec3 vSphericalZX;\n#define ADDITIONAL_UBO_DECLARATION\n};\n#include<sceneUboDeclaration>\n#include<meshUboDeclaration>\n";a.v.IncludesShadersStore[o]||(a.v.IncludesShadersStore[o]=t)},94022:(e,n,i)=>{i.r(n),i.d(n,{pbrPixelShader:()=>_});var a=i(17416);i(27628),i(16691),i(49226);const o="uniform vec4 vEyePosition;uniform vec3 vReflectionColor;uniform vec4 vAlbedoColor;uniform float baseWeight;uniform float baseDiffuseRoughness;uniform vec4 vLightingIntensity;uniform vec4 vReflectivityColor;uniform vec4 vMetallicReflectanceFactors;uniform vec3 vEmissiveColor;uniform float visibility;uniform vec3 vAmbientColor;\n#ifdef ALBEDO\nuniform vec2 vAlbedoInfos;\n#endif\n#ifdef BASE_WEIGHT\nuniform vec2 vBaseWeightInfos;\n#endif\n#ifdef BASE_DIFFUSE_ROUGHNESS\nuniform vec2 vBaseDiffuseRoughnessInfos;\n#endif\n#ifdef AMBIENT\nuniform vec4 vAmbientInfos;\n#endif\n#ifdef BUMP\nuniform vec3 vBumpInfos;uniform vec2 vTangentSpaceParams;\n#endif\n#ifdef OPACITY\nuniform vec2 vOpacityInfos;\n#endif\n#ifdef EMISSIVE\nuniform vec2 vEmissiveInfos;\n#endif\n#ifdef LIGHTMAP\nuniform vec2 vLightmapInfos;\n#endif\n#ifdef REFLECTIVITY\nuniform vec3 vReflectivityInfos;\n#endif\n#ifdef MICROSURFACEMAP\nuniform vec2 vMicroSurfaceSamplerInfos;\n#endif\n#if defined(REFLECTIONMAP_SPHERICAL) || defined(REFLECTIONMAP_PROJECTION) || defined(SS_REFRACTION) || defined(PREPASS)\nuniform mat4 view;\n#endif\n#ifdef REFLECTION\nuniform vec2 vReflectionInfos;\n#ifdef REALTIME_FILTERING\nuniform vec2 vReflectionFilteringInfo;\n#endif\nuniform mat4 reflectionMatrix;uniform vec3 vReflectionMicrosurfaceInfos;\n#if defined(USEIRRADIANCEMAP) && defined(USE_IRRADIANCE_DOMINANT_DIRECTION)\nuniform vec3 vReflectionDominantDirection;\n#endif\n#if defined(USE_LOCAL_REFLECTIONMAP_CUBIC) && defined(REFLECTIONMAP_CUBIC)\nuniform vec3 vReflectionPosition;uniform vec3 vReflectionSize;\n#endif\n#endif\n#if defined(SS_REFRACTION) && defined(SS_USE_LOCAL_REFRACTIONMAP_CUBIC)\nuniform vec3 vRefractionPosition;uniform vec3 vRefractionSize;\n#endif\n#ifdef CLEARCOAT\nuniform vec2 vClearCoatParams;uniform vec4 vClearCoatRefractionParams;\n#if defined(CLEARCOAT_TEXTURE) || defined(CLEARCOAT_TEXTURE_ROUGHNESS)\nuniform vec4 vClearCoatInfos;\n#endif\n#ifdef CLEARCOAT_TEXTURE\nuniform mat4 clearCoatMatrix;\n#endif\n#ifdef CLEARCOAT_TEXTURE_ROUGHNESS\nuniform mat4 clearCoatRoughnessMatrix;\n#endif\n#ifdef CLEARCOAT_BUMP\nuniform vec2 vClearCoatBumpInfos;uniform vec2 vClearCoatTangentSpaceParams;uniform mat4 clearCoatBumpMatrix;\n#endif\n#ifdef CLEARCOAT_TINT\nuniform vec4 vClearCoatTintParams;uniform float clearCoatColorAtDistance;\n#ifdef CLEARCOAT_TINT_TEXTURE\nuniform vec2 vClearCoatTintInfos;uniform mat4 clearCoatTintMatrix;\n#endif\n#endif\n#endif\n#ifdef IRIDESCENCE\nuniform vec4 vIridescenceParams;\n#if defined(IRIDESCENCE_TEXTURE) || defined(IRIDESCENCE_THICKNESS_TEXTURE)\nuniform vec4 vIridescenceInfos;\n#endif\n#ifdef IRIDESCENCE_TEXTURE\nuniform mat4 iridescenceMatrix;\n#endif\n#ifdef IRIDESCENCE_THICKNESS_TEXTURE\nuniform mat4 iridescenceThicknessMatrix;\n#endif\n#endif\n#ifdef ANISOTROPIC\nuniform vec3 vAnisotropy;\n#ifdef ANISOTROPIC_TEXTURE\nuniform vec2 vAnisotropyInfos;uniform mat4 anisotropyMatrix;\n#endif\n#endif\n#ifdef SHEEN\nuniform vec4 vSheenColor;\n#ifdef SHEEN_ROUGHNESS\nuniform float vSheenRoughness;\n#endif\n#if defined(SHEEN_TEXTURE) || defined(SHEEN_TEXTURE_ROUGHNESS)\nuniform vec4 vSheenInfos;\n#endif\n#ifdef SHEEN_TEXTURE\nuniform mat4 sheenMatrix;\n#endif\n#ifdef SHEEN_TEXTURE_ROUGHNESS\nuniform mat4 sheenRoughnessMatrix;\n#endif\n#endif\n#ifdef SUBSURFACE\n#ifdef SS_REFRACTION\nuniform vec4 vRefractionMicrosurfaceInfos;uniform vec4 vRefractionInfos;uniform mat4 refractionMatrix;\n#ifdef REALTIME_FILTERING\nuniform vec2 vRefractionFilteringInfo;\n#endif\n#ifdef SS_DISPERSION\nuniform float dispersion;\n#endif\n#endif\n#ifdef SS_THICKNESSANDMASK_TEXTURE\nuniform vec2 vThicknessInfos;uniform mat4 thicknessMatrix;\n#endif\n#ifdef SS_REFRACTIONINTENSITY_TEXTURE\nuniform vec2 vRefractionIntensityInfos;uniform mat4 refractionIntensityMatrix;\n#endif\n#ifdef SS_TRANSLUCENCYINTENSITY_TEXTURE\nuniform vec2 vTranslucencyIntensityInfos;uniform mat4 translucencyIntensityMatrix;\n#endif\nuniform vec2 vThicknessParam;uniform vec3 vDiffusionDistance;uniform vec4 vTintColor;uniform vec3 vSubSurfaceIntensity;uniform vec4 vTranslucencyColor;\n#ifdef SS_TRANSLUCENCYCOLOR_TEXTURE\nuniform vec2 vTranslucencyColorInfos;uniform mat4 translucencyColorMatrix;\n#endif\n#endif\n#ifdef PREPASS\n#ifdef SS_SCATTERING\nuniform float scatteringDiffusionProfile;\n#endif\n#endif\n#if DEBUGMODE>0\nuniform vec2 vDebugMode;\n#endif\n#ifdef DETAIL\nuniform vec4 vDetailInfos;\n#endif\n#include<decalFragmentDeclaration>\n#ifdef USESPHERICALFROMREFLECTIONMAP\n#ifdef SPHERICAL_HARMONICS\nuniform vec3 vSphericalL00;uniform vec3 vSphericalL1_1;uniform vec3 vSphericalL10;uniform vec3 vSphericalL11;uniform vec3 vSphericalL2_2;uniform vec3 vSphericalL2_1;uniform vec3 vSphericalL20;uniform vec3 vSphericalL21;uniform vec3 vSphericalL22;\n#else\nuniform vec3 vSphericalX;uniform vec3 vSphericalY;uniform vec3 vSphericalZ;uniform vec3 vSphericalXX_ZZ;uniform vec3 vSphericalYY_ZZ;uniform vec3 vSphericalZZ;uniform vec3 vSphericalXY;uniform vec3 vSphericalYZ;uniform vec3 vSphericalZX;\n#endif\n#endif\n#define ADDITIONAL_FRAGMENT_DECLARATION\n";a.v.IncludesShadersStore.pbrFragmentDeclaration||(a.v.IncludesShadersStore.pbrFragmentDeclaration=o);i(30021),i(28847),i(78494),i(43323),i(20210);const t="#ifdef _DEFINENAME_\n#if _DEFINENAME_DIRECTUV==1\n#define v_VARYINGNAME_UV vMainUV1\n#elif _DEFINENAME_DIRECTUV==2\n#define v_VARYINGNAME_UV vMainUV2\n#elif _DEFINENAME_DIRECTUV==3\n#define v_VARYINGNAME_UV vMainUV3\n#elif _DEFINENAME_DIRECTUV==4\n#define v_VARYINGNAME_UV vMainUV4\n#elif _DEFINENAME_DIRECTUV==5\n#define v_VARYINGNAME_UV vMainUV5\n#elif _DEFINENAME_DIRECTUV==6\n#define v_VARYINGNAME_UV vMainUV6\n#else\nvarying vec2 v_VARYINGNAME_UV;\n#endif\n#endif\n";a.v.IncludesShadersStore.samplerFragmentAlternateDeclaration||(a.v.IncludesShadersStore.samplerFragmentAlternateDeclaration=t);const f="#include<samplerFragmentDeclaration>(_DEFINENAME_,ALBEDO,_VARYINGNAME_,Albedo,_SAMPLERNAME_,albedo)\n#include<samplerFragmentDeclaration>(_DEFINENAME_,BASE_WEIGHT,_VARYINGNAME_,BaseWeight,_SAMPLERNAME_,baseWeight)\n#include<samplerFragmentDeclaration>(_DEFINENAME_,BASE_DIFFUSE_ROUGHNESS,_VARYINGNAME_,BaseDiffuseRoughness,_SAMPLERNAME_,baseDiffuseRoughness)\n#include<samplerFragmentDeclaration>(_DEFINENAME_,AMBIENT,_VARYINGNAME_,Ambient,_SAMPLERNAME_,ambient)\n#include<samplerFragmentDeclaration>(_DEFINENAME_,OPACITY,_VARYINGNAME_,Opacity,_SAMPLERNAME_,opacity)\n#include<samplerFragmentDeclaration>(_DEFINENAME_,EMISSIVE,_VARYINGNAME_,Emissive,_SAMPLERNAME_,emissive)\n#include<samplerFragmentDeclaration>(_DEFINENAME_,LIGHTMAP,_VARYINGNAME_,Lightmap,_SAMPLERNAME_,lightmap)\n#include<samplerFragmentDeclaration>(_DEFINENAME_,REFLECTIVITY,_VARYINGNAME_,Reflectivity,_SAMPLERNAME_,reflectivity)\n#include<samplerFragmentDeclaration>(_DEFINENAME_,MICROSURFACEMAP,_VARYINGNAME_,MicroSurfaceSampler,_SAMPLERNAME_,microSurface)\n#include<samplerFragmentDeclaration>(_DEFINENAME_,METALLIC_REFLECTANCE,_VARYINGNAME_,MetallicReflectance,_SAMPLERNAME_,metallicReflectance)\n#include<samplerFragmentDeclaration>(_DEFINENAME_,REFLECTANCE,_VARYINGNAME_,Reflectance,_SAMPLERNAME_,reflectance)\n#include<samplerFragmentDeclaration>(_DEFINENAME_,DECAL,_VARYINGNAME_,Decal,_SAMPLERNAME_,decal)\n#ifdef CLEARCOAT\n#include<samplerFragmentDeclaration>(_DEFINENAME_,CLEARCOAT_TEXTURE,_VARYINGNAME_,ClearCoat,_SAMPLERNAME_,clearCoat)\n#include<samplerFragmentAlternateDeclaration>(_DEFINENAME_,CLEARCOAT_TEXTURE_ROUGHNESS,_VARYINGNAME_,ClearCoatRoughness)\n#if defined(CLEARCOAT_TEXTURE_ROUGHNESS)\nuniform sampler2D clearCoatRoughnessSampler;\n#endif\n#include<samplerFragmentDeclaration>(_DEFINENAME_,CLEARCOAT_BUMP,_VARYINGNAME_,ClearCoatBump,_SAMPLERNAME_,clearCoatBump)\n#include<samplerFragmentDeclaration>(_DEFINENAME_,CLEARCOAT_TINT_TEXTURE,_VARYINGNAME_,ClearCoatTint,_SAMPLERNAME_,clearCoatTint)\n#endif\n#ifdef IRIDESCENCE\n#include<samplerFragmentDeclaration>(_DEFINENAME_,IRIDESCENCE_TEXTURE,_VARYINGNAME_,Iridescence,_SAMPLERNAME_,iridescence)\n#include<samplerFragmentDeclaration>(_DEFINENAME_,IRIDESCENCE_THICKNESS_TEXTURE,_VARYINGNAME_,IridescenceThickness,_SAMPLERNAME_,iridescenceThickness)\n#endif\n#ifdef SHEEN\n#include<samplerFragmentDeclaration>(_DEFINENAME_,SHEEN_TEXTURE,_VARYINGNAME_,Sheen,_SAMPLERNAME_,sheen)\n#include<samplerFragmentAlternateDeclaration>(_DEFINENAME_,SHEEN_TEXTURE_ROUGHNESS,_VARYINGNAME_,SheenRoughness)\n#if defined(SHEEN_ROUGHNESS) && defined(SHEEN_TEXTURE_ROUGHNESS)\nuniform sampler2D sheenRoughnessSampler;\n#endif\n#endif\n#ifdef ANISOTROPIC\n#include<samplerFragmentDeclaration>(_DEFINENAME_,ANISOTROPIC_TEXTURE,_VARYINGNAME_,Anisotropy,_SAMPLERNAME_,anisotropy)\n#endif\n#ifdef REFLECTION\n#ifdef REFLECTIONMAP_3D\n#define sampleReflection(s,c) textureCube(s,c)\nuniform samplerCube reflectionSampler;\n#ifdef LODBASEDMICROSFURACE\n#define sampleReflectionLod(s,c,l) textureCubeLodEXT(s,c,l)\n#else\nuniform samplerCube reflectionSamplerLow;uniform samplerCube reflectionSamplerHigh;\n#endif\n#ifdef USEIRRADIANCEMAP\nuniform samplerCube irradianceSampler;\n#endif\n#else\n#define sampleReflection(s,c) texture2D(s,c)\nuniform sampler2D reflectionSampler;\n#ifdef LODBASEDMICROSFURACE\n#define sampleReflectionLod(s,c,l) texture2DLodEXT(s,c,l)\n#else\nuniform sampler2D reflectionSamplerLow;uniform sampler2D reflectionSamplerHigh;\n#endif\n#ifdef USEIRRADIANCEMAP\nuniform sampler2D irradianceSampler;\n#endif\n#endif\n#ifdef REFLECTIONMAP_SKYBOX\nvarying vec3 vPositionUVW;\n#else\n#if defined(REFLECTIONMAP_EQUIRECTANGULAR_FIXED) || defined(REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED)\nvarying vec3 vDirectionW;\n#endif\n#endif\n#endif\n#ifdef ENVIRONMENTBRDF\nuniform sampler2D environmentBrdfSampler;\n#endif\n#ifdef SUBSURFACE\n#ifdef SS_REFRACTION\n#ifdef SS_REFRACTIONMAP_3D\n#define sampleRefraction(s,c) textureCube(s,c)\nuniform samplerCube refractionSampler;\n#ifdef LODBASEDMICROSFURACE\n#define sampleRefractionLod(s,c,l) textureCubeLodEXT(s,c,l)\n#else\nuniform samplerCube refractionSamplerLow;uniform samplerCube refractionSamplerHigh;\n#endif\n#else\n#define sampleRefraction(s,c) texture2D(s,c)\nuniform sampler2D refractionSampler;\n#ifdef LODBASEDMICROSFURACE\n#define sampleRefractionLod(s,c,l) texture2DLodEXT(s,c,l)\n#else\nuniform sampler2D refractionSamplerLow;uniform sampler2D refractionSamplerHigh;\n#endif\n#endif\n#endif\n#include<samplerFragmentDeclaration>(_DEFINENAME_,SS_THICKNESSANDMASK_TEXTURE,_VARYINGNAME_,Thickness,_SAMPLERNAME_,thickness)\n#include<samplerFragmentDeclaration>(_DEFINENAME_,SS_REFRACTIONINTENSITY_TEXTURE,_VARYINGNAME_,RefractionIntensity,_SAMPLERNAME_,refractionIntensity)\n#include<samplerFragmentDeclaration>(_DEFINENAME_,SS_TRANSLUCENCYINTENSITY_TEXTURE,_VARYINGNAME_,TranslucencyIntensity,_SAMPLERNAME_,translucencyIntensity)\n#include<samplerFragmentDeclaration>(_DEFINENAME_,SS_TRANSLUCENCYCOLOR_TEXTURE,_VARYINGNAME_,TranslucencyColor,_SAMPLERNAME_,translucencyColor)\n#endif\n#ifdef IBL_CDF_FILTERING\nuniform sampler2D icdfSampler;\n#endif\n";a.v.IncludesShadersStore.pbrFragmentSamplersDeclaration||(a.v.IncludesShadersStore.pbrFragmentSamplersDeclaration=f);i(26757),i(52397),i(89481),i(2302),i(65276),i(10653),i(11876),i(39642),i(83936),i(50198),i(48882),i(64887),i(49525),i(22880),i(64449),i(80933),i(16341),i(52282),i(85776),i(62628),i(31559);const r="struct albedoOpacityOutParams\n{vec3 surfaceAlbedo;float alpha;};\n#define pbr_inline\nalbedoOpacityOutParams albedoOpacityBlock(\nin vec4 vAlbedoColor\n#ifdef ALBEDO\n,in vec4 albedoTexture\n,in vec2 albedoInfos\n#endif\n,in float baseWeight\n#ifdef BASE_WEIGHT\n,in vec4 baseWeightTexture\n,in vec2 vBaseWeightInfos\n#endif\n#ifdef OPACITY\n,in vec4 opacityMap\n,in vec2 vOpacityInfos\n#endif\n#ifdef DETAIL\n,in vec4 detailColor\n,in vec4 vDetailInfos\n#endif\n#ifdef DECAL\n,in vec4 decalColor\n,in vec4 vDecalInfos\n#endif\n)\n{albedoOpacityOutParams outParams;vec3 surfaceAlbedo=vAlbedoColor.rgb;float alpha=vAlbedoColor.a;\n#ifdef ALBEDO\n#if defined(ALPHAFROMALBEDO) || defined(ALPHATEST)\nalpha*=albedoTexture.a;\n#endif\n#ifdef GAMMAALBEDO\nsurfaceAlbedo*=toLinearSpace(albedoTexture.rgb);\n#else\nsurfaceAlbedo*=albedoTexture.rgb;\n#endif\nsurfaceAlbedo*=albedoInfos.y;\n#endif\n#ifndef DECAL_AFTER_DETAIL\n#include<decalFragment>\n#endif\n#if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES)\nsurfaceAlbedo*=vColor.rgb;\n#endif\n#ifdef DETAIL\nfloat detailAlbedo=2.0*mix(0.5,detailColor.r,vDetailInfos.y);surfaceAlbedo.rgb=surfaceAlbedo.rgb*detailAlbedo*detailAlbedo; \n#endif\n#ifdef DECAL_AFTER_DETAIL\n#include<decalFragment>\n#endif\n#define CUSTOM_FRAGMENT_UPDATE_ALBEDO\nsurfaceAlbedo*=baseWeight;\n#ifdef BASE_WEIGHT\nsurfaceAlbedo*=baseWeightTexture.r;\n#endif\n#ifdef OPACITY\n#ifdef OPACITYRGB\nalpha=getLuminance(opacityMap.rgb);\n#else\nalpha*=opacityMap.a;\n#endif\nalpha*=vOpacityInfos.y;\n#endif\n#if defined(VERTEXALPHA) || defined(INSTANCESCOLOR) && defined(INSTANCES)\nalpha*=vColor.a;\n#endif\n#if !defined(SS_LINKREFRACTIONTOTRANSPARENCY) && !defined(ALPHAFRESNEL)\n#ifdef ALPHATEST\n#if DEBUGMODE != 88\nif (alpha<ALPHATESTVALUE)\ndiscard;\n#endif\n#ifndef ALPHABLEND\nalpha=1.0;\n#endif\n#endif\n#endif\noutParams.surfaceAlbedo=surfaceAlbedo;outParams.alpha=alpha;return outParams;}\n";a.v.IncludesShadersStore.pbrBlockAlbedoOpacity||(a.v.IncludesShadersStore.pbrBlockAlbedoOpacity=r);const c="struct reflectivityOutParams\n{float microSurface;float roughness;float diffuseRoughness;float reflectanceF0;vec3 reflectanceF90;vec3 colorReflectanceF0;vec3 colorReflectanceF90;\n#ifdef METALLICWORKFLOW\nvec3 surfaceAlbedo;float metallic;float specularWeight;vec3 dielectricColorF0;\n#endif\n#if defined(METALLICWORKFLOW) && defined(REFLECTIVITY) && defined(AOSTOREINMETALMAPRED)\nvec3 ambientOcclusionColor;\n#endif\n#if DEBUGMODE>0\n#ifdef METALLICWORKFLOW\n#ifdef REFLECTIVITY\nvec4 surfaceMetallicColorMap;\n#endif\nvec3 metallicF0;\n#else\n#ifdef REFLECTIVITY\nvec4 surfaceReflectivityColorMap;\n#endif\n#endif\n#endif\n};\n#define pbr_inline\nreflectivityOutParams reflectivityBlock(\nin vec4 reflectivityColor\n#ifdef METALLICWORKFLOW\n,in vec3 surfaceAlbedo\n,in vec4 metallicReflectanceFactors\n#endif\n,in float baseDiffuseRoughness\n#ifdef BASE_DIFFUSE_ROUGHNESS\n,in float baseDiffuseRoughnessTexture\n,in vec2 baseDiffuseRoughnessInfos\n#endif\n#ifdef REFLECTIVITY\n,in vec3 reflectivityInfos\n,in vec4 surfaceMetallicOrReflectivityColorMap\n#endif\n#if defined(METALLICWORKFLOW) && defined(REFLECTIVITY) && defined(AOSTOREINMETALMAPRED)\n,in vec3 ambientOcclusionColorIn\n#endif\n#ifdef MICROSURFACEMAP\n,in vec4 microSurfaceTexel\n#endif\n#ifdef DETAIL\n,in vec4 detailColor\n,in vec4 vDetailInfos\n#endif\n)\n{reflectivityOutParams outParams;float microSurface=reflectivityColor.a;vec3 surfaceReflectivityColor=reflectivityColor.rgb;\n#ifdef METALLICWORKFLOW\nvec2 metallicRoughness=surfaceReflectivityColor.rg;float ior=surfaceReflectivityColor.b;\n#ifdef REFLECTIVITY\n#if DEBUGMODE>0\noutParams.surfaceMetallicColorMap=surfaceMetallicOrReflectivityColorMap;\n#endif\n#ifdef AOSTOREINMETALMAPRED\nvec3 aoStoreInMetalMap=vec3(surfaceMetallicOrReflectivityColorMap.r,surfaceMetallicOrReflectivityColorMap.r,surfaceMetallicOrReflectivityColorMap.r);outParams.ambientOcclusionColor=mix(ambientOcclusionColorIn,aoStoreInMetalMap,reflectivityInfos.z);\n#endif\n#ifdef METALLNESSSTOREINMETALMAPBLUE\nmetallicRoughness.r*=surfaceMetallicOrReflectivityColorMap.b;\n#else\nmetallicRoughness.r*=surfaceMetallicOrReflectivityColorMap.r;\n#endif\n#ifdef ROUGHNESSSTOREINMETALMAPALPHA\nmetallicRoughness.g*=surfaceMetallicOrReflectivityColorMap.a;\n#else\n#ifdef ROUGHNESSSTOREINMETALMAPGREEN\nmetallicRoughness.g*=surfaceMetallicOrReflectivityColorMap.g;\n#endif\n#endif\n#endif\n#ifdef DETAIL\nfloat detailRoughness=mix(0.5,detailColor.b,vDetailInfos.w);float loLerp=mix(0.,metallicRoughness.g,detailRoughness*2.);float hiLerp=mix(metallicRoughness.g,1.,(detailRoughness-0.5)*2.);metallicRoughness.g=mix(loLerp,hiLerp,step(detailRoughness,0.5));\n#endif\n#ifdef MICROSURFACEMAP\nmetallicRoughness.g*=microSurfaceTexel.r;\n#endif\n#define CUSTOM_FRAGMENT_UPDATE_METALLICROUGHNESS\nmicroSurface=1.0-metallicRoughness.g;vec3 baseColor=surfaceAlbedo;outParams.metallic=metallicRoughness.r;outParams.specularWeight=metallicReflectanceFactors.a;float dielectricF0=reflectivityColor.a*outParams.specularWeight;surfaceReflectivityColor=metallicReflectanceFactors.rgb;\n#if DEBUGMODE>0\noutParams.metallicF0=vec3(dielectricF0)*surfaceReflectivityColor;\n#endif\n#ifdef LEGACY_SPECULAR_ENERGY_CONSERVATION\noutParams.surfaceAlbedo=baseColor.rgb*(vec3(1.0)-vec3(dielectricF0)*surfaceReflectivityColor)*(1.0-outParams.metallic);\n#else\noutParams.surfaceAlbedo=baseColor.rgb;\n#endif\n#ifdef LEGACY_SPECULAR_ENERGY_CONSERVATION\n{vec3 reflectivityColor=mix(dielectricF0*surfaceReflectivityColor,baseColor.rgb,outParams.metallic);outParams.reflectanceF0=max(reflectivityColor.r,max(reflectivityColor.g,reflectivityColor.b));}\n#else\n#if DIELECTRIC_SPECULAR_MODEL==DIELECTRIC_SPECULAR_MODEL_GLTF\nfloat maxF0=max(surfaceReflectivityColor.r,max(surfaceReflectivityColor.g,surfaceReflectivityColor.b));outParams.reflectanceF0=mix(dielectricF0*maxF0,1.0,outParams.metallic);\n#else\noutParams.reflectanceF0=mix(dielectricF0,1.0,outParams.metallic);\n#endif\n#endif\n#ifdef LEGACY_SPECULAR_ENERGY_CONSERVATION\noutParams.reflectanceF90=vec3(outParams.specularWeight);float f90Scale=1.0;\n#else\nfloat f90Scale=clamp(2.0*(ior-1.0),0.0,1.0);outParams.reflectanceF90=vec3(mix(outParams.specularWeight*f90Scale,1.0,outParams.metallic));\n#endif\noutParams.dielectricColorF0=vec3(dielectricF0*surfaceReflectivityColor);vec3 metallicColorF0=baseColor.rgb;outParams.colorReflectanceF0=mix(outParams.dielectricColorF0,metallicColorF0,outParams.metallic);\n#if (DIELECTRIC_SPECULAR_MODEL==DIELECTRIC_SPECULAR_MODEL_OPENPBR)\nvec3 dielectricColorF90=surfaceReflectivityColor*vec3(outParams.specularWeight)*vec3(f90Scale);\n#else\nvec3 dielectricColorF90=vec3(outParams.specularWeight*f90Scale);\n#endif\n#if (CONDUCTOR_SPECULAR_MODEL==CONDUCTOR_SPECULAR_MODEL_OPENPBR)\nvec3 conductorColorF90=surfaceReflectivityColor;\n#else\n#ifdef LEGACY_SPECULAR_ENERGY_CONSERVATION\nvec3 conductorColorF90=outParams.reflectanceF90;\n#else\nvec3 conductorColorF90=vec3(1.0);\n#endif\n#endif\noutParams.colorReflectanceF90=mix(dielectricColorF90,conductorColorF90,outParams.metallic);\n#else\n#ifdef REFLECTIVITY\nsurfaceReflectivityColor*=surfaceMetallicOrReflectivityColorMap.rgb;\n#if DEBUGMODE>0\noutParams.surfaceReflectivityColorMap=surfaceMetallicOrReflectivityColorMap;\n#endif\n#ifdef MICROSURFACEFROMREFLECTIVITYMAP\nmicroSurface*=surfaceMetallicOrReflectivityColorMap.a;microSurface*=reflectivityInfos.z;\n#else\n#ifdef MICROSURFACEAUTOMATIC\nmicroSurface*=computeDefaultMicroSurface(microSurface,surfaceReflectivityColor);\n#endif\n#ifdef MICROSURFACEMAP\nmicroSurface*=microSurfaceTexel.r;\n#endif\n#define CUSTOM_FRAGMENT_UPDATE_MICROSURFACE\n#endif\n#endif\noutParams.colorReflectanceF0=surfaceReflectivityColor;outParams.reflectanceF0=max(surfaceReflectivityColor.r,max(surfaceReflectivityColor.g,surfaceReflectivityColor.b));outParams.reflectanceF90=vec3(1.0);\n#if (DIELECTRIC_SPECULAR_MODEL==DIELECTRIC_SPECULAR_MODEL_OPENPBR)\noutParams.colorReflectanceF90=surfaceReflectivityColor;\n#else\noutParams.colorReflectanceF90=vec3(1.0);\n#endif\n#endif\nmicroSurface=saturate(microSurface);float roughness=1.-microSurface;float diffuseRoughness=baseDiffuseRoughness;\n#ifdef BASE_DIFFUSE_ROUGHNESS\ndiffuseRoughness*=baseDiffuseRoughnessTexture*baseDiffuseRoughnessInfos.y;\n#endif\noutParams.microSurface=microSurface;outParams.roughness=roughness;outParams.diffuseRoughness=diffuseRoughness;return outParams;}\n";a.v.IncludesShadersStore.pbrBlockReflectivity||(a.v.IncludesShadersStore.pbrBlockReflectivity=c);const l="struct ambientOcclusionOutParams\n{vec3 ambientOcclusionColor;\n#if DEBUGMODE>0 && defined(AMBIENT)\nvec3 ambientOcclusionColorMap;\n#endif\n};ambientOcclusionOutParams ambientOcclusionBlock(\n#ifdef AMBIENT\nin vec3 ambientOcclusionColorMap_,\nin vec4 vAmbientInfos\n#endif\n)\n{ambientOcclusionOutParams outParams;vec3 ambientOcclusionColor=vec3(1.,1.,1.);\n#ifdef AMBIENT\nvec3 ambientOcclusionColorMap=ambientOcclusionColorMap_*vAmbientInfos.y;\n#ifdef AMBIENTINGRAYSCALE\nambientOcclusionColorMap=vec3(ambientOcclusionColorMap.r,ambientOcclusionColorMap.r,ambientOcclusionColorMap.r);\n#endif\nambientOcclusionColor=mix(ambientOcclusionColor,ambientOcclusionColorMap,vAmbientInfos.z);\n#if DEBUGMODE>0\noutParams.ambientOcclusionColorMap=ambientOcclusionColorMap;\n#endif\n#endif\noutParams.ambientOcclusionColor=ambientOcclusionColor;return outParams;}\n";a.v.IncludesShadersStore.pbrBlockAmbientOcclusion||(a.v.IncludesShadersStore.pbrBlockAmbientOcclusion=l);const d="#ifdef ALPHAFRESNEL\n#if defined(ALPHATEST) || defined(ALPHABLEND)\nstruct alphaFresnelOutParams\n{float alpha;};\n#define pbr_inline\nalphaFresnelOutParams alphaFresnelBlock(\nin vec3 normalW,\nin vec3 viewDirectionW,\nin float alpha,\nin float microSurface\n)\n{alphaFresnelOutParams outParams;float opacityPerceptual=alpha;\n#ifdef LINEARALPHAFRESNEL\nfloat opacity0=opacityPerceptual;\n#else\nfloat opacity0=opacityPerceptual*opacityPerceptual;\n#endif\nfloat opacity90=fresnelGrazingReflectance(opacity0);vec3 normalForward=faceforward(normalW,-viewDirectionW,normalW);outParams.alpha=getReflectanceFromAnalyticalBRDFLookup_Jones(saturate(dot(viewDirectionW,normalForward)),vec3(opacity0),vec3(opacity90),sqrt(microSurface)).x;\n#ifdef ALPHATEST\nif (outParams.alpha<ALPHATESTVALUE)\ndiscard;\n#ifndef ALPHABLEND\noutParams.alpha=1.0;\n#endif\n#endif\nreturn outParams;}\n#endif\n#endif\n";a.v.IncludesShadersStore.pbrBlockAlphaFresnel||(a.v.IncludesShadersStore.pbrBlockAlphaFresnel=d);const s="#ifdef ANISOTROPIC\nstruct anisotropicOutParams\n{float anisotropy;vec3 anisotropicTangent;vec3 anisotropicBitangent;vec3 anisotropicNormal;\n#if DEBUGMODE>0 && defined(ANISOTROPIC_TEXTURE)\nvec3 anisotropyMapData;\n#endif\n};\n#define pbr_inline\nanisotropicOutParams anisotropicBlock(\nin vec3 vAnisotropy,\nin float roughness,\n#ifdef ANISOTROPIC_TEXTURE\nin vec3 anisotropyMapData,\n#endif\nin mat3 TBN,\nin vec3 normalW,\nin vec3 viewDirectionW\n)\n{anisotropicOutParams outParams;float anisotropy=vAnisotropy.b;vec3 anisotropyDirection=vec3(vAnisotropy.xy,0.);\n#ifdef ANISOTROPIC_TEXTURE\nanisotropy*=anisotropyMapData.b;\n#if DEBUGMODE>0\noutParams.anisotropyMapData=anisotropyMapData;\n#endif\nanisotropyMapData.rg=anisotropyMapData.rg*2.0-1.0;\n#ifdef ANISOTROPIC_LEGACY\nanisotropyDirection.rg*=anisotropyMapData.rg;\n#else\nanisotropyDirection.xy=mat2(anisotropyDirection.x,anisotropyDirection.y,-anisotropyDirection.y,anisotropyDirection.x)*normalize(anisotropyMapData.rg);\n#endif\n#endif\nmat3 anisoTBN=mat3(normalize(TBN[0]),normalize(TBN[1]),normalize(TBN[2]));vec3 anisotropicTangent=normalize(anisoTBN*anisotropyDirection);vec3 anisotropicBitangent=normalize(cross(anisoTBN[2],anisotropicTangent));outParams.anisotropy=anisotropy;outParams.anisotropicTangent=anisotropicTangent;outParams.anisotropicBitangent=anisotropicBitangent;outParams.anisotropicNormal=getAnisotropicBentNormals(anisotropicTangent,anisotropicBitangent,normalW,viewDirectionW,anisotropy,roughness);return outParams;}\n#endif\n";a.v.IncludesShadersStore.pbrBlockAnisotropic||(a.v.IncludesShadersStore.pbrBlockAnisotropic=s);const E="#ifdef REFLECTION\nstruct reflectionOutParams\n{vec4 environmentRadiance;vec3 environmentIrradiance;\n#ifdef REFLECTIONMAP_3D\nvec3 reflectionCoords;\n#else\nvec2 reflectionCoords;\n#endif\n#ifdef SS_TRANSLUCENCY\n#ifdef USESPHERICALFROMREFLECTIONMAP\n#if !defined(NORMAL) || !defined(USESPHERICALINVERTEX)\nvec3 irradianceVector;\n#endif\n#endif\n#endif\n};\n#define pbr_inline\nvoid createReflectionCoords(\nin vec3 vPositionW,\nin vec3 normalW,\n#ifdef ANISOTROPIC\nin anisotropicOutParams anisotropicOut,\n#endif\n#ifdef REFLECTIONMAP_3D\nout vec3 reflectionCoords\n#else\nout vec2 reflectionCoords\n#endif\n)\n{\n#ifdef ANISOTROPIC\nvec3 reflectionVector=computeReflectionCoords(vec4(vPositionW,1.0),anisotropicOut.anisotropicNormal);\n#else\nvec3 reflectionVector=computeReflectionCoords(vec4(vPositionW,1.0),normalW);\n#endif\n#ifdef REFLECTIONMAP_OPPOSITEZ\nreflectionVector.z*=-1.0;\n#endif\n#ifdef REFLECTIONMAP_3D\nreflectionCoords=reflectionVector;\n#else\nreflectionCoords=reflectionVector.xy;\n#ifdef REFLECTIONMAP_PROJECTION\nreflectionCoords/=reflectionVector.z;\n#endif\nreflectionCoords.y=1.0-reflectionCoords.y;\n#endif\n}\n#define pbr_inline\n#define inline\nvoid sampleReflectionTexture(\nin float alphaG,\nin vec3 vReflectionMicrosurfaceInfos,\nin vec2 vReflectionInfos,\nin vec3 vReflectionColor,\n#if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)\nin float NdotVUnclamped,\n#endif\n#ifdef LINEARSPECULARREFLECTION\nin float roughness,\n#endif\n#ifdef REFLECTIONMAP_3D\nin samplerCube reflectionSampler,\nconst vec3 reflectionCoords,\n#else\nin sampler2D reflectionSampler,\nconst vec2 reflectionCoords,\n#endif\n#ifndef LODBASEDMICROSFURACE\n#ifdef REFLECTIONMAP_3D\nin samplerCube reflectionSamplerLow,\nin samplerCube reflectionSamplerHigh,\n#else\nin sampler2D reflectionSamplerLow,\nin sampler2D reflectionSamplerHigh,\n#endif\n#endif\n#ifdef REALTIME_FILTERING\nin vec2 vReflectionFilteringInfo,\n#endif\nout vec4 environmentRadiance\n)\n{\n#if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)\nfloat reflectionLOD=getLodFromAlphaG(vReflectionMicrosurfaceInfos.x,alphaG,NdotVUnclamped);\n#elif defined(LINEARSPECULARREFLECTION)\nfloat reflectionLOD=getLinearLodFromRoughness(vReflectionMicrosurfaceInfos.x,roughness);\n#else\nfloat reflectionLOD=getLodFromAlphaG(vReflectionMicrosurfaceInfos.x,alphaG);\n#endif\n#ifdef LODBASEDMICROSFURACE\nreflectionLOD=reflectionLOD*vReflectionMicrosurfaceInfos.y+vReflectionMicrosurfaceInfos.z;\n#ifdef LODINREFLECTIONALPHA\nfloat automaticReflectionLOD=UNPACK_LOD(sampleReflection(reflectionSampler,reflectionCoords).a);float requestedReflectionLOD=max(automaticReflectionLOD,reflectionLOD);\n#else\nfloat requestedReflectionLOD=reflectionLOD;\n#endif\n#ifdef REALTIME_FILTERING\nenvironmentRadiance=vec4(radiance(alphaG,reflectionSampler,reflectionCoords,vReflectionFilteringInfo),1.0);\n#else\nenvironmentRadiance=sampleReflectionLod(reflectionSampler,reflectionCoords,reflectionLOD);\n#endif\n#else\nfloat lodReflectionNormalized=saturate(reflectionLOD/log2(vReflectionMicrosurfaceInfos.x));float lodReflectionNormalizedDoubled=lodReflectionNormalized*2.0;vec4 environmentMid=sampleReflection(reflectionSampler,reflectionCoords);if (lodReflectionNormalizedDoubled<1.0){environmentRadiance=mix(\nsampleReflection(reflectionSamplerHigh,reflectionCoords),\nenvironmentMid,\nlodReflectionNormalizedDoubled\n);} else {environmentRadiance=mix(\nenvironmentMid,\nsampleReflection(reflectionSamplerLow,reflectionCoords),\nlodReflectionNormalizedDoubled-1.0\n);}\n#endif\n#ifdef RGBDREFLECTION\nenvironmentRadiance.rgb=fromRGBD(environmentRadiance);\n#endif\n#ifdef GAMMAREFLECTION\nenvironmentRadiance.rgb=toLinearSpace(environmentRadiance.rgb);\n#endif\nenvironmentRadiance.rgb*=vReflectionInfos.x;environmentRadiance.rgb*=vReflectionColor.rgb;}\n#define pbr_inline\n#define inline\nreflectionOutParams reflectionBlock(\nin vec3 vPositionW\n,in vec3 normalW\n,in float alphaG\n,in vec3 vReflectionMicrosurfaceInfos\n,in vec2 vReflectionInfos\n,in vec3 vReflectionColor\n#ifdef ANISOTROPIC\n,in anisotropicOutParams anisotropicOut\n#endif\n#if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)\n,in float NdotVUnclamped\n#endif\n#ifdef LINEARSPECULARREFLECTION\n,in float roughness\n#endif\n#ifdef REFLECTIONMAP_3D\n,in samplerCube reflectionSampler\n#else\n,in sampler2D reflectionSampler\n#endif\n#if defined(NORMAL) && defined(USESPHERICALINVERTEX)\n,in vec3 vEnvironmentIrradiance\n#endif\n#if (defined(USESPHERICALFROMREFLECTIONMAP) && (!defined(NORMAL) || !defined(USESPHERICALINVERTEX))) || (defined(USEIRRADIANCEMAP) && defined(REFLECTIONMAP_3D))\n,in mat4 reflectionMatrix\n#endif\n#ifdef USEIRRADIANCEMAP\n#ifdef REFLECTIONMAP_3D\n,in samplerCube irradianceSampler\n#else\n,in sampler2D irradianceSampler\n#endif\n#ifdef USE_IRRADIANCE_DOMINANT_DIRECTION\n,in vec3 reflectionDominantDirection\n#endif\n#endif\n#ifndef LODBASEDMICROSFURACE\n#ifdef REFLECTIONMAP_3D\n,in samplerCube reflectionSamplerLow\n,in samplerCube reflectionSamplerHigh\n#else\n,in sampler2D reflectionSamplerLow\n,in sampler2D reflectionSamplerHigh\n#endif\n#endif\n#ifdef REALTIME_FILTERING\n,in vec2 vReflectionFilteringInfo\n#ifdef IBL_CDF_FILTERING\n,in sampler2D icdfSampler\n#endif\n#endif\n,in vec3 viewDirectionW\n,in float diffuseRoughness\n,in vec3 surfaceAlbedo\n)\n{reflectionOutParams outParams;vec4 environmentRadiance=vec4(0.,0.,0.,0.);\n#ifdef REFLECTIONMAP_3D\nvec3 reflectionCoords=vec3(0.);\n#else\nvec2 reflectionCoords=vec2(0.);\n#endif\ncreateReflectionCoords(\nvPositionW,\nnormalW,\n#ifdef ANISOTROPIC\nanisotropicOut,\n#endif\nreflectionCoords\n);sampleReflectionTexture(\nalphaG,\nvReflectionMicrosurfaceInfos,\nvReflectionInfos,\nvReflectionColor,\n#if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)\nNdotVUnclamped,\n#endif\n#ifdef LINEARSPECULARREFLECTION\nroughness,\n#endif\n#ifdef REFLECTIONMAP_3D\nreflectionSampler,\nreflectionCoords,\n#else\nreflectionSampler,\nreflectionCoords,\n#endif\n#ifndef LODBASEDMICROSFURACE\nreflectionSamplerLow,\nreflectionSamplerHigh,\n#endif\n#ifdef REALTIME_FILTERING\nvReflectionFilteringInfo,\n#endif\nenvironmentRadiance\n);vec3 environmentIrradiance=vec3(0.,0.,0.);\n#if (defined(USESPHERICALFROMREFLECTIONMAP) && (!defined(NORMAL) || !defined(USESPHERICALINVERTEX))) || (defined(USEIRRADIANCEMAP) && defined(REFLECTIONMAP_3D))\n#ifdef ANISOTROPIC\nvec3 irradianceVector=vec3(reflectionMatrix*vec4(anisotropicOut.anisotropicNormal,0)).xyz;\n#else\nvec3 irradianceVector=vec3(reflectionMatrix*vec4(normalW,0)).xyz;\n#endif\nvec3 irradianceView=vec3(reflectionMatrix*vec4(viewDirectionW,0)).xyz;\n#if !defined(USE_IRRADIANCE_DOMINANT_DIRECTION) && !defined(REALTIME_FILTERING)\n#if BASE_DIFFUSE_MODEL != BRDF_DIFFUSE_MODEL_LAMBERT && BASE_DIFFUSE_MODEL != BRDF_DIFFUSE_MODEL_LEGACY\nfloat NdotV=max(dot(normalW,viewDirectionW),0.0);irradianceVector=mix(irradianceVector,irradianceView,(0.5*(1.0-NdotV))*diffuseRoughness);\n#endif\n#endif\n#ifdef REFLECTIONMAP_OPPOSITEZ\nirradianceVector.z*=-1.0;\n#endif\n#ifdef INVERTCUBICMAP\nirradianceVector.y*=-1.0;\n#endif\n#endif\n#ifdef USESPHERICALFROMREFLECTIONMAP\n#if defined(NORMAL) && defined(USESPHERICALINVERTEX)\nenvironmentIrradiance=vEnvironmentIrradiance;\n#else\n#if defined(REALTIME_FILTERING)\nenvironmentIrradiance=irradiance(reflectionSampler,irradianceVector,vReflectionFilteringInfo,diffuseRoughness,surfaceAlbedo,irradianceView\n#ifdef IBL_CDF_FILTERING\n,icdfSampler\n#endif\n);\n#else\nenvironmentIrradiance=computeEnvironmentIrradiance(irradianceVector);\n#endif\n#ifdef SS_TRANSLUCENCY\noutParams.irradianceVector=irradianceVector;\n#endif\n#endif\n#elif defined(USEIRRADIANCEMAP)\n#ifdef REFLECTIONMAP_3D\nvec4 environmentIrradiance4=sampleReflection(irradianceSampler,irradianceVector);\n#else\nvec4 environmentIrradiance4=sampleReflection(irradianceSampler,reflectionCoords);\n#endif\nenvironmentIrradiance=environmentIrradiance4.rgb;\n#ifdef RGBDREFLECTION\nenvironmentIrradiance.rgb=fromRGBD(environmentIrradiance4);\n#endif\n#ifdef GAMMAREFLECTION\nenvironmentIrradiance.rgb=toLinearSpace(environmentIrradiance.rgb);\n#endif\n#ifdef USE_IRRADIANCE_DOMINANT_DIRECTION\nvec3 Ls=normalize(reflectionDominantDirection);float NoL=dot(irradianceVector,Ls);float NoV=dot(irradianceVector,irradianceView);vec3 diffuseRoughnessTerm=vec3(1.0);\n#if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON\nfloat LoV=dot (Ls,irradianceView);float mag=length(reflectionDominantDirection)*2.0;vec3 clampedAlbedo=clamp(surfaceAlbedo,vec3(0.1),vec3(1.0));diffuseRoughnessTerm=diffuseBRDF_EON(clampedAlbedo,diffuseRoughness,NoL,NoV,LoV)*PI;diffuseRoughnessTerm=diffuseRoughnessTerm/clampedAlbedo;diffuseRoughnessTerm=mix(vec3(1.0),diffuseRoughnessTerm,sqrt(clamp(mag*NoV,0.0,1.0)));\n#elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_BURLEY\nvec3 H=(irradianceView+Ls)*0.5;float VoH=dot(irradianceView,H);diffuseRoughnessTerm=vec3(diffuseBRDF_Burley(NoL,NoV,VoH,diffuseRoughness)*PI);\n#endif\nenvironmentIrradiance=environmentIrradiance.rgb*diffuseRoughnessTerm;\n#endif\n#endif\nenvironmentIrradiance*=vReflectionColor.rgb*vReflectionInfos.x;\n#ifdef MIX_IBL_RADIANCE_WITH_IRRADIANCE\noutParams.environmentRadiance=vec4(mix(environmentRadiance.rgb,environmentIrradiance,alphaG),environmentRadiance.a);\n#else\noutParams.environmentRadiance=environmentRadiance;\n#endif\noutParams.environmentIrradiance=environmentIrradiance;outParams.reflectionCoords=reflectionCoords;return outParams;}\n#endif\n";a.v.IncludesShadersStore.pbrBlockReflection||(a.v.IncludesShadersStore.pbrBlockReflection=E);const R="#ifdef SHEEN\nstruct sheenOutParams\n{float sheenIntensity;vec3 sheenColor;float sheenRoughness;\n#ifdef SHEEN_LINKWITHALBEDO\nvec3 surfaceAlbedo;\n#endif\n#if defined(ENVIRONMENTBRDF) && defined(SHEEN_ALBEDOSCALING)\nfloat sheenAlbedoScaling;\n#endif\n#if defined(REFLECTION) && defined(ENVIRONMENTBRDF)\nvec3 finalSheenRadianceScaled;\n#endif\n#if DEBUGMODE>0\n#ifdef SHEEN_TEXTURE\nvec4 sheenMapData;\n#endif\n#if defined(REFLECTION) && defined(ENVIRONMENTBRDF)\nvec3 sheenEnvironmentReflectance;\n#endif\n#endif\n};\n#define pbr_inline\n#define inline\nsheenOutParams sheenBlock(\nin vec4 vSheenColor\n#ifdef SHEEN_ROUGHNESS\n,in float vSheenRoughness\n#if defined(SHEEN_TEXTURE_ROUGHNESS) && !defined(SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE)\n,in vec4 sheenMapRoughnessData\n#endif\n#endif\n,in float roughness\n#ifdef SHEEN_TEXTURE\n,in vec4 sheenMapData\n,in float sheenMapLevel\n#endif\n,in float reflectance\n#ifdef SHEEN_LINKWITHALBEDO\n,in vec3 baseColor\n,in vec3 surfaceAlbedo\n#endif\n#ifdef ENVIRONMENTBRDF\n,in float NdotV\n,in vec3 environmentBrdf\n#endif\n#if defined(REFLECTION) && defined(ENVIRONMENTBRDF)\n,in vec2 AARoughnessFactors\n,in vec3 vReflectionMicrosurfaceInfos\n,in vec2 vReflectionInfos\n,in vec3 vReflectionColor\n,in vec4 vLightingIntensity\n#ifdef REFLECTIONMAP_3D\n,in samplerCube reflectionSampler\n,in vec3 reflectionCoords\n#else\n,in sampler2D reflectionSampler\n,in vec2 reflectionCoords\n#endif\n,in float NdotVUnclamped\n#ifndef LODBASEDMICROSFURACE\n#ifdef REFLECTIONMAP_3D\n,in samplerCube reflectionSamplerLow\n,in samplerCube reflectionSamplerHigh\n#else\n,in sampler2D reflectionSamplerLow\n,in sampler2D reflectionSamplerHigh\n#endif\n#endif\n#ifdef REALTIME_FILTERING\n,in vec2 vReflectionFilteringInfo\n#endif\n#if !defined(REFLECTIONMAP_SKYBOX) && defined(RADIANCEOCCLUSION)\n,in float seo\n#endif\n#if !defined(REFLECTIONMAP_SKYBOX) && defined(HORIZONOCCLUSION) && defined(BUMP) && defined(REFLECTIONMAP_3D)\n,in float eho\n#endif\n#endif\n)\n{sheenOutParams outParams;float sheenIntensity=vSheenColor.a;\n#ifdef SHEEN_TEXTURE\n#if DEBUGMODE>0\noutParams.sheenMapData=sheenMapData;\n#endif\n#endif\n#ifdef SHEEN_LINKWITHALBEDO\nfloat sheenFactor=pow5(1.0-sheenIntensity);vec3 sheenColor=baseColor.rgb*(1.0-sheenFactor);float sheenRoughness=sheenIntensity;outParams.surfaceAlbedo=surfaceAlbedo*sheenFactor;\n#ifdef SHEEN_TEXTURE\nsheenIntensity*=sheenMapData.a;\n#endif\n#else\nvec3 sheenColor=vSheenColor.rgb;\n#ifdef SHEEN_TEXTURE\n#ifdef SHEEN_GAMMATEXTURE\nsheenColor.rgb*=toLinearSpace(sheenMapData.rgb);\n#else\nsheenColor.rgb*=sheenMapData.rgb;\n#endif\nsheenColor.rgb*=sheenMapLevel;\n#endif\n#ifdef SHEEN_ROUGHNESS\nfloat sheenRoughness=vSheenRoughness;\n#ifdef SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE\n#if defined(SHEEN_TEXTURE)\nsheenRoughness*=sheenMapData.a;\n#endif\n#elif defined(SHEEN_TEXTURE_ROUGHNESS)\nsheenRoughness*=sheenMapRoughnessData.a;\n#endif\n#else\nfloat sheenRoughness=roughness;\n#ifdef SHEEN_TEXTURE\nsheenIntensity*=sheenMapData.a;\n#endif\n#endif\n#if !defined(SHEEN_ALBEDOSCALING)\nsheenIntensity*=(1.-reflectance);\n#endif\nsheenColor*=sheenIntensity;\n#endif\n#ifdef ENVIRONMENTBRDF\n/*#ifdef SHEEN_SOFTER\nvec3 environmentSheenBrdf=vec3(0.,0.,getBRDFLookupCharlieSheen(NdotV,sheenRoughness));\n#else*/\n#ifdef SHEEN_ROUGHNESS\nvec3 environmentSheenBrdf=getBRDFLookup(NdotV,sheenRoughness);\n#else\nvec3 environmentSheenBrdf=environmentBrdf;\n#endif\n/*#endif*/\n#endif\n#if defined(REFLECTION) && defined(ENVIRONMENTBRDF)\nfloat sheenAlphaG=convertRoughnessToAverageSlope(sheenRoughness);\n#ifdef SPECULARAA\nsheenAlphaG+=AARoughnessFactors.y;\n#endif\nvec4 environmentSheenRadiance=vec4(0.,0.,0.,0.);sampleReflectionTexture(\nsheenAlphaG,\nvReflectionMicrosurfaceInfos,\nvReflectionInfos,\nvReflectionColor,\n#if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)\nNdotVUnclamped,\n#endif\n#ifdef LINEARSPECULARREFLECTION\nsheenRoughness,\n#endif\nreflectionSampler,\nreflectionCoords,\n#ifndef LODBASEDMICROSFURACE\nreflectionSamplerLow,\nreflectionSamplerHigh,\n#endif\n#ifdef REALTIME_FILTERING\nvReflectionFilteringInfo,\n#endif\nenvironmentSheenRadiance\n);vec3 sheenEnvironmentReflectance=getSheenReflectanceFromBRDFLookup(sheenColor,environmentSheenBrdf);\n#if !defined(REFLECTIONMAP_SKYBOX) && defined(RADIANCEOCCLUSION)\nsheenEnvironmentReflectance*=seo;\n#endif\n#if !defined(REFLECTIONMAP_SKYBOX) && defined(HORIZONOCCLUSION) && defined(BUMP) && defined(REFLECTIONMAP_3D)\nsheenEnvironmentReflectance*=eho;\n#endif\n#if DEBUGMODE>0\noutParams.sheenEnvironmentReflectance=sheenEnvironmentReflectance;\n#endif\noutParams.finalSheenRadianceScaled=\nenvironmentSheenRadiance.rgb *\nsheenEnvironmentReflectance *\nvLightingIntensity.z;\n#endif\n#if defined(ENVIRONMENTBRDF) && defined(SHEEN_ALBEDOSCALING)\noutParams.sheenAlbedoScaling=1.0-sheenIntensity*max(max(sheenColor.r,sheenColor.g),sheenColor.b)*environmentSheenBrdf.b;\n#endif\noutParams.sheenIntensity=sheenIntensity;outParams.sheenColor=sheenColor;outParams.sheenRoughness=sheenRoughness;return outParams;}\n#endif\n";a.v.IncludesShadersStore.pbrBlockSheen||(a.v.IncludesShadersStore.pbrBlockSheen=R);const u="struct clearcoatOutParams\n{vec3 specularEnvironmentR0;float conservationFactor;vec3 clearCoatNormalW;vec2 clearCoatAARoughnessFactors;float clearCoatIntensity;float clearCoatRoughness;\n#ifdef REFLECTION\nvec3 finalClearCoatRadianceScaled;\n#endif\n#ifdef CLEARCOAT_TINT\nvec3 absorption;float clearCoatNdotVRefract;vec3 clearCoatColor;float clearCoatThickness;\n#endif\n#if defined(ENVIRONMENTBRDF) && defined(MS_BRDF_ENERGY_CONSERVATION)\nvec3 energyConservationFactorClearCoat;\n#endif\n#if DEBUGMODE>0\n#ifdef CLEARCOAT_BUMP\nmat3 TBNClearCoat;\n#endif\n#ifdef CLEARCOAT_TEXTURE\nvec2 clearCoatMapData;\n#endif\n#if defined(CLEARCOAT_TINT) && defined(CLEARCOAT_TINT_TEXTURE)\nvec4 clearCoatTintMapData;\n#endif\n#ifdef REFLECTION\nvec4 environmentClearCoatRadiance;vec3 clearCoatEnvironmentReflectance;\n#endif\nfloat clearCoatNdotV;\n#endif\n};\n#ifdef CLEARCOAT\n#define pbr_inline\n#define inline\nclearcoatOutParams clearcoatBlock(\nin vec3 vPositionW\n,in vec3 geometricNormalW\n,in vec3 viewDirectionW\n,in vec2 vClearCoatParams\n#if defined(CLEARCOAT_TEXTURE_ROUGHNESS) && !defined(CLEARCOAT_TEXTURE_ROUGHNESS_IDENTICAL) && !defined(CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE)\n,in vec4 clearCoatMapRoughnessData\n#endif\n,in vec3 specularEnvironmentR0\n#ifdef CLEARCOAT_TEXTURE\n,in vec2 clearCoatMapData\n#endif\n#ifdef CLEARCOAT_TINT\n,in vec4 vClearCoatTintParams\n,in float clearCoatColorAtDistance\n,in vec4 vClearCoatRefractionParams\n#ifdef CLEARCOAT_TINT_TEXTURE\n,in vec4 clearCoatTintMapData\n#endif\n#endif\n#ifdef CLEARCOAT_BUMP\n,in vec2 vClearCoatBumpInfos\n,in vec4 clearCoatBumpMapData\n,in vec2 vClearCoatBumpUV\n#if defined(TANGENT) && defined(NORMAL)\n,in mat3 vTBN\n#else\n,in vec2 vClearCoatTangentSpaceParams\n#endif\n#ifdef OBJECTSPACE_NORMALMAP\n,in mat4 normalMatrix\n#endif\n#endif\n#if defined(FORCENORMALFORWARD) && defined(NORMAL)\n,in vec3 faceNormal\n#endif\n#ifdef REFLECTION\n,in vec3 vReflectionMicrosurfaceInfos\n,in vec2 vReflectionInfos\n,in vec3 vReflectionColor\n,in vec4 vLightingIntensity\n#ifdef REFLECTIONMAP_3D\n,in samplerCube reflectionSampler\n#else\n,in sampler2D reflectionSampler\n#endif\n#ifndef LODBASEDMICROSFURACE\n#ifdef REFLECTIONMAP_3D\n,in samplerCube reflectionSamplerLow\n,in samplerCube reflectionSamplerHigh\n#else\n,in sampler2D reflectionSamplerLow\n,in sampler2D reflectionSamplerHigh\n#endif\n#endif\n#ifdef REALTIME_FILTERING\n,in vec2 vReflectionFilteringInfo\n#endif\n#endif\n#if defined(CLEARCOAT_BUMP) || defined(TWOSIDEDLIGHTING)\n,in float frontFacingMultiplier\n#endif\n)\n{clearcoatOutParams outParams;float clearCoatIntensity=vClearCoatParams.x;float clearCoatRoughness=vClearCoatParams.y;\n#ifdef CLEARCOAT_TEXTURE\nclearCoatIntensity*=clearCoatMapData.x;\n#ifdef CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE\nclearCoatRoughness*=clearCoatMapData.y;\n#endif\n#if DEBUGMODE>0\noutParams.clearCoatMapData=clearCoatMapData;\n#endif\n#endif\n#if defined(CLEARCOAT_TEXTURE_ROUGHNESS) && !defined(CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE)\nclearCoatRoughness*=clearCoatMapRoughnessData.y;\n#endif\noutParams.clearCoatIntensity=clearCoatIntensity;outParams.clearCoatRoughness=clearCoatRoughness;\n#ifdef CLEARCOAT_TINT\nvec3 clearCoatColor=vClearCoatTintParams.rgb;float clearCoatThickness=vClearCoatTintParams.a;\n#ifdef CLEARCOAT_TINT_TEXTURE\n#ifdef CLEARCOAT_TINT_GAMMATEXTURE\nclearCoatColor*=toLinearSpace(clearCoatTintMapData.rgb);\n#else\nclearCoatColor*=clearCoatTintMapData.rgb;\n#endif\nclearCoatThickness*=clearCoatTintMapData.a;\n#if DEBUGMODE>0\noutParams.clearCoatTintMapData=clearCoatTintMapData;\n#endif\n#endif\noutParams.clearCoatColor=computeColorAtDistanceInMedia(clearCoatColor,clearCoatColorAtDistance);outParams.clearCoatThickness=clearCoatThickness;\n#endif\n#ifdef CLEARCOAT_REMAP_F0\nvec3 specularEnvironmentR0Updated=getR0RemappedForClearCoat(specularEnvironmentR0);\n#else\nvec3 specularEnvironmentR0Updated=specularEnvironmentR0;\n#endif\noutParams.specularEnvironmentR0=mix(specularEnvironmentR0,specularEnvironmentR0Updated,clearCoatIntensity);vec3 clearCoatNormalW=geometricNormalW;\n#ifdef CLEARCOAT_BUMP\n#ifdef NORMALXYSCALE\nfloat clearCoatNormalScale=1.0;\n#else\nfloat clearCoatNormalScale=vClearCoatBumpInfos.y;\n#endif\n#if defined(TANGENT) && defined(NORMAL)\nmat3 TBNClearCoat=vTBN;\n#else\nvec2 TBNClearCoatUV=vClearCoatBumpUV*frontFacingMultiplier;mat3 TBNClearCoat=cotangent_frame(clearCoatNormalW*clearCoatNormalScale,vPositionW,TBNClearCoatUV,vClearCoatTangentSpaceParams);\n#endif\n#if DEBUGMODE>0\noutParams.TBNClearCoat=TBNClearCoat;\n#endif\n#ifdef OBJECTSPACE_NORMALMAP\nclearCoatNormalW=normalize(clearCoatBumpMapData.xyz *2.0-1.0);clearCoatNormalW=normalize(mat3(normalMatrix)*clearCoatNormalW);\n#else\nclearCoatNormalW=perturbNormal(TBNClearCoat,clearCoatBumpMapData.xyz,vClearCoatBumpInfos.y);\n#endif\n#endif\n#if defined(FORCENORMALFORWARD) && defined(NORMAL)\nclearCoatNormalW*=sign(dot(clearCoatNormalW,faceNormal));\n#endif\n#if defined(TWOSIDEDLIGHTING) && defined(NORMAL)\nclearCoatNormalW=clearCoatNormalW*frontFacingMultiplier;\n#endif\noutParams.clearCoatNormalW=clearCoatNormalW;outParams.clearCoatAARoughnessFactors=getAARoughnessFactors(clearCoatNormalW.xyz);float clearCoatNdotVUnclamped=dot(clearCoatNormalW,viewDirectionW);float clearCoatNdotV=absEps(clearCoatNdotVUnclamped);\n#if DEBUGMODE>0\noutParams.clearCoatNdotV=clearCoatNdotV;\n#endif\n#ifdef CLEARCOAT_TINT\nvec3 clearCoatVRefract=refract(-viewDirectionW,clearCoatNormalW,vClearCoatRefractionParams.y);outParams.clearCoatNdotVRefract=absEps(dot(clearCoatNormalW,clearCoatVRefract));\n#endif\n#if defined(ENVIRONMENTBRDF) && (!defined(REFLECTIONMAP_SKYBOX) || defined(MS_BRDF_ENERGY_CONSERVATION))\nvec3 environmentClearCoatBrdf=getBRDFLookup(clearCoatNdotV,clearCoatRoughness);\n#endif\n#if defined(REFLECTION)\nfloat clearCoatAlphaG=convertRoughnessToAverageSlope(clearCoatRoughness);\n#ifdef SPECULARAA\nclearCoatAlphaG+=outParams.clearCoatAARoughnessFactors.y;\n#endif\nvec4 environmentClearCoatRadiance=vec4(0.,0.,0.,0.);vec3 clearCoatReflectionVector=computeReflectionCoords(vec4(vPositionW,1.0),clearCoatNormalW);\n#ifdef REFLECTIONMAP_OPPOSITEZ\nclearCoatReflectionVector.z*=-1.0;\n#endif\n#ifdef REFLECTIONMAP_3D\nvec3 clearCoatReflectionCoords=clearCoatReflectionVector;\n#else\nvec2 clearCoatReflectionCoords=clearCoatReflectionVector.xy;\n#ifdef REFLECTIONMAP_PROJECTION\nclearCoatReflectionCoords/=clearCoatReflectionVector.z;\n#endif\nclearCoatReflectionCoords.y=1.0-clearCoatReflectionCoords.y;\n#endif\nsampleReflectionTexture(\nclearCoatAlphaG,\nvReflectionMicrosurfaceInfos,\nvReflectionInfos,\nvReflectionColor,\n#if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)\nclearCoatNdotVUnclamped,\n#endif\n#ifdef LINEARSPECULARREFLECTION\nclearCoatRoughness,\n#endif\nreflectionSampler,\nclearCoatReflectionCoords,\n#ifndef LODBASEDMICROSFURACE\nreflectionSamplerLow,\nreflectionSamplerHigh,\n#endif\n#ifdef REALTIME_FILTERING\nvReflectionFilteringInfo,\n#endif\nenvironmentClearCoatRadiance\n);\n#if DEBUGMODE>0\noutParams.environmentClearCoatRadiance=environmentClearCoatRadiance;\n#endif\n#if defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX)\nvec3 clearCoatEnvironmentReflectance=getReflectanceFromBRDFLookup(vec3(vClearCoatRefractionParams.x),environmentClearCoatBrdf);\n#ifdef HORIZONOCCLUSION\n#ifdef BUMP\n#ifdef REFLECTIONMAP_3D\nfloat clearCoatEho=environmentHorizonOcclusion(-viewDirectionW,clearCoatNormalW,geometricNormalW);clearCoatEnvironmentReflectance*=clearCoatEho;\n#endif\n#endif\n#endif\n#else\nvec3 clearCoatEnvironmentReflectance=getReflectanceFromAnalyticalBRDFLookup_Jones(clearCoatNdotV,vec3(1.),vec3(1.),sqrt(1.-clearCoatRoughness));\n#endif\nclearCoatEnvironmentReflectance*=clearCoatIntensity;\n#if DEBUGMODE>0\noutParams.clearCoatEnvironmentReflectance=clearCoatEnvironmentReflectance;\n#endif\noutParams.finalClearCoatRadianceScaled=\nenvironmentClearCoatRadiance.rgb *\nclearCoatEnvironmentReflectance *\nvLightingIntensity.z;\n#endif\n#if defined(CLEARCOAT_TINT)\noutParams.absorption=computeClearCoatAbsorption(outParams.clearCoatNdotVRefract,outParams.clearCoatNdotVRefract,outParams.clearCoatColor,clearCoatThickness,clearCoatIntensity);\n#endif\nfloat fresnelIBLClearCoat=fresnelSchlickGGX(clearCoatNdotV,vClearCoatRefractionParams.x,CLEARCOATREFLECTANCE90);fresnelIBLClearCoat*=clearCoatIntensity;outParams.conservationFactor=(1.-fresnelIBLClearCoat);\n#if defined(ENVIRONMENTBRDF) && defined(MS_BRDF_ENERGY_CONSERVATION)\noutParams.energyConservationFactorClearCoat=getEnergyConservationFactor(outParams.specularEnvironmentR0,environmentClearCoatBrdf);\n#endif\nreturn outParams;}\n#endif\n";a.v.IncludesShadersStore.pbrBlockClearcoat||(a.v.IncludesShadersStore.pbrBlockClearcoat=u);const C="struct iridescenceOutParams\n{float iridescenceIntensity;float iridescenceIOR;float iridescenceThickness;vec3 specularEnvironmentR0;};\n#ifdef IRIDESCENCE\n#define pbr_inline\n#define inline\niridescenceOutParams iridescenceBlock(\nin vec4 vIridescenceParams\n,in float viewAngle\n,in vec3 specularEnvironmentR0\n#ifdef IRIDESCENCE_TEXTURE\n,in vec2 iridescenceMapData\n#endif\n#ifdef IRIDESCENCE_THICKNESS_TEXTURE\n,in vec2 iridescenceThicknessMapData\n#endif\n#ifdef CLEARCOAT\n,in float NdotVUnclamped\n,in vec2 vClearCoatParams\n#ifdef CLEARCOAT_TEXTURE\n,in vec2 clearCoatMapData\n#endif\n#endif\n)\n{iridescenceOutParams outParams;float iridescenceIntensity=vIridescenceParams.x;float iridescenceIOR=vIridescenceParams.y;float iridescenceThicknessMin=vIridescenceParams.z;float iridescenceThicknessMax=vIridescenceParams.w;float iridescenceThicknessWeight=1.;\n#ifdef IRIDESCENCE_TEXTURE\niridescenceIntensity*=iridescenceMapData.x;\n#endif\n#if defined(IRIDESCENCE_THICKNESS_TEXTURE)\niridescenceThicknessWeight=iridescenceThicknessMapData.g;\n#endif\nfloat iridescenceThickness=mix(iridescenceThicknessMin,iridescenceThicknessMax,iridescenceThicknessWeight);float topIor=1.; \n#ifdef CLEARCOAT\nfloat clearCoatIntensity=vClearCoatParams.x;\n#ifdef CLEARCOAT_TEXTURE\nclearCoatIntensity*=clearCoatMapData.x;\n#endif\ntopIor=mix(1.0,vClearCoatRefractionParams.w-1.,clearCoatIntensity);viewAngle=sqrt(1.0+square(1.0/topIor)*(square(NdotVUnclamped)-1.0));\n#endif\nvec3 iridescenceFresnel=evalIridescence(topIor,iridescenceIOR,viewAngle,iridescenceThickness,specularEnvironmentR0);outParams.specularEnvironmentR0=mix(specularEnvironmentR0,iridescenceFresnel,iridescenceIntensity);outParams.iridescenceIntensity=iridescenceIntensity;outParams.iridescenceThickness=iridescenceThickness;outParams.iridescenceIOR=iridescenceIOR;return outParams;}\n#endif\n";a.v.IncludesShadersStore.pbrBlockIridescence||(a.v.IncludesShadersStore.pbrBlockIridescence=C);const S="struct subSurfaceOutParams\n{vec3 specularEnvironmentReflectance;\n#ifdef SS_REFRACTION\nvec3 finalRefraction;vec3 surfaceAlbedo;\n#ifdef SS_LINKREFRACTIONTOTRANSPARENCY\nfloat alpha;\n#endif\nfloat refractionOpacity;\n#endif\n#ifdef SS_TRANSLUCENCY\nvec3 transmittance;float translucencyIntensity;\n#ifdef REFLECTION\nvec3 refractionIrradiance;\n#endif\n#endif\n#if DEBUGMODE>0\n#ifdef SS_THICKNESSANDMASK_TEXTURE\nvec4 thicknessMap;\n#endif\n#ifdef SS_REFRACTION\nvec4 environmentRefraction;vec3 refractionTransmittance;\n#endif\n#endif\n};\n#ifdef SUBSURFACE\n#ifdef SS_REFRACTION\n#define pbr_inline\n#define inline\nvec4 sampleEnvironmentRefraction(\nin float ior\n,in float thickness\n,in float refractionLOD\n,in vec3 normalW\n,in vec3 vPositionW\n,in vec3 viewDirectionW\n,in mat4 view\n,in vec4 vRefractionInfos\n,in mat4 refractionMatrix\n,in vec4 vRefractionMicrosurfaceInfos\n,in float alphaG\n#ifdef SS_REFRACTIONMAP_3D\n,in samplerCube refractionSampler\n#ifndef LODBASEDMICROSFURACE\n,in samplerCube refractionSamplerLow\n,in samplerCube refractionSamplerHigh\n#endif\n#else\n,in sampler2D refractionSampler\n#ifndef LODBASEDMICROSFURACE\n,in sampler2D refractionSamplerLow\n,in sampler2D refractionSamplerHigh\n#endif\n#endif\n#ifdef ANISOTROPIC\n,in anisotropicOutParams anisotropicOut\n#endif\n#ifdef REALTIME_FILTERING\n,in vec2 vRefractionFilteringInfo\n#endif\n#ifdef SS_USE_LOCAL_REFRACTIONMAP_CUBIC\n,in vec3 refractionPosition\n,in vec3 refractionSize\n#endif\n) {vec4 environmentRefraction=vec4(0.,0.,0.,0.);\n#ifdef ANISOTROPIC\nvec3 refractionVector=refract(-viewDirectionW,anisotropicOut.anisotropicNormal,ior);\n#else\nvec3 refractionVector=refract(-viewDirectionW,normalW,ior);\n#endif\n#ifdef SS_REFRACTIONMAP_OPPOSITEZ\nrefractionVector.z*=-1.0;\n#endif\n#ifdef SS_REFRACTIONMAP_3D\n#ifdef SS_USE_LOCAL_REFRACTIONMAP_CUBIC\nrefractionVector=parallaxCorrectNormal(vPositionW,refractionVector,refractionSize,refractionPosition);\n#endif\nrefractionVector.y=refractionVector.y*vRefractionInfos.w;vec3 refractionCoords=refractionVector;refractionCoords=vec3(refractionMatrix*vec4(refractionCoords,0));\n#else\n#ifdef SS_USE_THICKNESS_AS_DEPTH\nvec3 vRefractionUVW=vec3(refractionMatrix*(view*vec4(vPositionW+refractionVector*thickness,1.0)));\n#else\nvec3 vRefractionUVW=vec3(refractionMatrix*(view*vec4(vPositionW+refractionVector*vRefractionInfos.z,1.0)));\n#endif\nvec2 refractionCoords=vRefractionUVW.xy/vRefractionUVW.z;refractionCoords.y=1.0-refractionCoords.y;\n#endif\n#ifdef LODBASEDMICROSFURACE\nrefractionLOD=refractionLOD*vRefractionMicrosurfaceInfos.y+vRefractionMicrosurfaceInfos.z;\n#ifdef SS_LODINREFRACTIONALPHA\nfloat automaticRefractionLOD=UNPACK_LOD(sampleRefraction(refractionSampler,refractionCoords).a);float requestedRefractionLOD=max(automaticRefractionLOD,refractionLOD);\n#else\nfloat requestedRefractionLOD=refractionLOD;\n#endif\n#if defined(REALTIME_FILTERING) && defined(SS_REFRACTIONMAP_3D)\nenvironmentRefraction=vec4(radiance(alphaG,refractionSampler,refractionCoords,vRefractionFilteringInfo),1.0);\n#else\nenvironmentRefraction=sampleRefractionLod(refractionSampler,refractionCoords,requestedRefractionLOD);\n#endif\n#else\nfloat lodRefractionNormalized=saturate(refractionLOD/log2(vRefractionMicrosurfaceInfos.x));float lodRefractionNormalizedDoubled=lodRefractionNormalized*2.0;vec4 environmentRefractionMid=sampleRefraction(refractionSampler,refractionCoords);if (lodRefractionNormalizedDoubled<1.0){environmentRefraction=mix(\nsampleRefraction(refractionSamplerHigh,refractionCoords),\nenvironmentRefractionMid,\nlodRefractionNormalizedDoubled\n);} else {environmentRefraction=mix(\nenvironmentRefractionMid,\nsampleRefraction(refractionSamplerLow,refractionCoords),\nlodRefractionNormalizedDoubled-1.0\n);}\n#endif\n#ifdef SS_RGBDREFRACTION\nenvironmentRefraction.rgb=fromRGBD(environmentRefraction);\n#endif\n#ifdef SS_GAMMAREFRACTION\nenvironmentRefraction.rgb=toLinearSpace(environmentRefraction.rgb);\n#endif\nreturn environmentRefraction;}\n#endif\n#define pbr_inline\n#define inline\nsubSurfaceOutParams subSurfaceBlock(\nin vec3 vSubSurfaceIntensity\n,in vec2 vThicknessParam\n,in vec4 vTintColor\n,in vec3 normalW\n,in vec3 vSpecularEnvironmentReflectance\n#ifdef SS_THICKNESSANDMASK_TEXTURE\n,in vec4 thicknessMap\n#endif\n#ifdef SS_REFRACTIONINTENSITY_TEXTURE\n,in vec4 refractionIntensityMap\n#endif\n#ifdef SS_TRANSLUCENCYINTENSITY_TEXTURE\n,in vec4 translucencyIntensityMap\n#endif\n#ifdef REFLECTION\n#ifdef SS_TRANSLUCENCY\n,in mat4 reflectionMatrix\n#ifdef USESPHERICALFROMREFLECTIONMAP\n#if !defined(NORMAL) || !defined(USESPHERICALINVERTEX)\n,in vec3 irradianceVector_\n#endif\n#if defined(REALTIME_FILTERING)\n,in samplerCube reflectionSampler\n,in vec2 vReflectionFilteringInfo\n#ifdef IBL_CDF_FILTERING\n,in sampler2D icdfSampler\n#endif\n#endif\n#endif\n#ifdef USEIRRADIANCEMAP\n#ifdef REFLECTIONMAP_3D\n,in samplerCube irradianceSampler\n#else\n,in sampler2D irradianceSampler\n#endif\n#endif\n#endif\n#endif\n#if defined(SS_REFRACTION) || defined(SS_TRANSLUCENCY)\n,in vec3 surfaceAlbedo\n#endif\n#ifdef SS_REFRACTION\n,in vec3 vPositionW\n,in vec3 viewDirectionW\n,in mat4 view\n,in vec4 vRefractionInfos\n,in mat4 refractionMatrix\n,in vec4 vRefractionMicrosurfaceInfos\n,in vec4 vLightingIntensity\n#ifdef SS_LINKREFRACTIONTOTRANSPARENCY\n,in float alpha\n#endif\n#ifdef SS_LODINREFRACTIONALPHA\n,in float NdotVUnclamped\n#endif\n#ifdef SS_LINEARSPECULARREFRACTION\n,in float roughness\n#endif\n,in float alphaG\n#ifdef SS_REFRACTIONMAP_3D\n,in samplerCube refractionSampler\n#ifndef LODBASEDMICROSFURACE\n,in samplerCube refractionSamplerLow\n,in samplerCube refractionSamplerHigh\n#endif\n#else\n,in sampler2D refractionSampler\n#ifndef LODBASEDMICROSFURACE\n,in sampler2D refractionSamplerLow\n,in sampler2D refractionSamplerHigh\n#endif\n#endif\n#ifdef ANISOTROPIC\n,in anisotropicOutParams anisotropicOut\n#endif\n#ifdef REALTIME_FILTERING\n,in vec2 vRefractionFilteringInfo\n#endif\n#ifdef SS_USE_LOCAL_REFRACTIONMAP_CUBIC\n,in vec3 refractionPosition\n,in vec3 refractionSize\n#endif\n#ifdef SS_DISPERSION\n,in float dispersion\n#endif\n#endif\n#ifdef SS_TRANSLUCENCY\n,in vec3 vDiffusionDistance\n,in vec4 vTranslucencyColor\n#ifdef SS_TRANSLUCENCYCOLOR_TEXTURE\n,in vec4 translucencyColorMap\n#endif\n#endif\n)\n{subSurfaceOutParams outParams;outParams.specularEnvironmentReflectance=vSpecularEnvironmentReflectance;\n#ifdef SS_REFRACTION\nfloat refractionIntensity=vSubSurfaceIntensity.x;\n#ifdef SS_LINKREFRACTIONTOTRANSPARENCY\nrefractionIntensity*=(1.0-alpha);outParams.alpha=1.0;\n#endif\n#endif\n#ifdef SS_TRANSLUCENCY\nfloat translucencyIntensity=vSubSurfaceIntensity.y;\n#endif\n#ifdef SS_THICKNESSANDMASK_TEXTURE\n#ifdef SS_USE_GLTF_TEXTURES\nfloat thickness=thicknessMap.g*vThicknessParam.y+vThicknessParam.x;\n#else\nfloat thickness=thicknessMap.r*vThicknessParam.y+vThicknessParam.x;\n#endif\n#if DEBUGMODE>0\noutParams.thicknessMap=thicknessMap;\n#endif\n#if defined(SS_REFRACTION) && defined(SS_REFRACTION_USE_INTENSITY_FROM_THICKNESS)\n#ifdef SS_USE_GLTF_TEXTURES\nrefractionIntensity*=thicknessMap.r;\n#else\nrefractionIntensity*=thicknessMap.g;\n#endif\n#endif\n#if defined(SS_TRANSLUCENCY) && defined(SS_TRANSLUCENCY_USE_INTENSITY_FROM_THICKNESS)\n#ifdef SS_USE_GLTF_TEXTURES\ntranslucencyIntensity*=thicknessMap.a;\n#else\ntranslucencyIntensity*=thicknessMap.b;\n#endif\n#endif\n#else\nfloat thickness=vThicknessParam.y;\n#endif\n#if defined(SS_REFRACTION) && defined(SS_REFRACTIONINTENSITY_TEXTURE)\n#ifdef SS_USE_GLTF_TEXTURES\nrefractionIntensity*=refractionIntensityMap.r;\n#else\nrefractionIntensity*=refractionIntensityMap.g;\n#endif\n#endif\n#if defined(SS_TRANSLUCENCY) && defined(SS_TRANSLUCENCYINTENSITY_TEXTURE)\n#ifdef SS_USE_GLTF_TEXTURES\ntranslucencyIntensity*=translucencyIntensityMap.a;\n#else\ntranslucencyIntensity*=translucencyIntensityMap.b;\n#endif\n#endif\n#ifdef SS_TRANSLUCENCY\nthickness=maxEps(thickness);vec4 translucencyColor=vTranslucencyColor;\n#ifdef SS_TRANSLUCENCYCOLOR_TEXTURE\ntranslucencyColor*=translucencyColorMap;\n#endif\nvec3 transmittance=transmittanceBRDF_Burley(translucencyColor.rgb,vDiffusionDistance,thickness);transmittance*=translucencyIntensity;outParams.transmittance=transmittance;outParams.translucencyIntensity=translucencyIntensity;\n#endif\n#ifdef SS_REFRACTION\nvec4 environmentRefraction=vec4(0.,0.,0.,0.);\n#ifdef SS_HAS_THICKNESS\nfloat ior=vRefractionInfos.y;\n#else\nfloat ior=vRefractionMicrosurfaceInfos.w;\n#endif\n#ifdef SS_LODINREFRACTIONALPHA\nfloat refractionAlphaG=alphaG;refractionAlphaG=mix(alphaG,0.0,clamp(ior*3.0-2.0,0.0,1.0));float refractionLOD=getLodFromAlphaG(vRefractionMicrosurfaceInfos.x,refractionAlphaG,NdotVUnclamped);\n#elif defined(SS_LINEARSPECULARREFRACTION)\nfloat refractionRoughness=alphaG;refractionRoughness=mix(alphaG,0.0,clamp(ior*3.0-2.0,0.0,1.0));float refractionLOD=getLinearLodFromRoughness(vRefractionMicrosurfaceInfos.x,refractionRoughness);\n#else\nfloat refractionAlphaG=alphaG;refractionAlphaG=mix(alphaG,0.0,clamp(ior*3.0-2.0,0.0,1.0));float refractionLOD=getLodFromAlphaG(vRefractionMicrosurfaceInfos.x,refractionAlphaG);\n#endif\nfloat refraction_ior=vRefractionInfos.y;\n#ifdef SS_DISPERSION\nfloat realIOR=1.0/refraction_ior;float iorDispersionSpread=0.04*dispersion*(realIOR-1.0);vec3 iors=vec3(1.0/(realIOR-iorDispersionSpread),refraction_ior,1.0/(realIOR+iorDispersionSpread));for (int i=0; i<3; i++) {refraction_ior=iors[i];\n#endif\nvec4 envSample=sampleEnvironmentRefraction(refraction_ior,thickness,refractionLOD,normalW,vPositionW,viewDirectionW,view,vRefractionInfos,refractionMatrix,vRefractionMicrosurfaceInfos,alphaG\n#ifdef SS_REFRACTIONMAP_3D\n,refractionSampler\n#ifndef LODBASEDMICROSFURACE\n,refractionSamplerLow\n,refractionSamplerHigh\n#endif\n#else\n,refractionSampler\n#ifndef LODBASEDMICROSFURACE\n,refractionSamplerLow\n,refractionSamplerHigh\n#endif\n#endif\n#ifdef ANISOTROPIC\n,anisotropicOut\n#endif\n#ifdef REALTIME_FILTERING\n,vRefractionFilteringInfo\n#endif\n#ifdef SS_USE_LOCAL_REFRACTIONMAP_CUBIC\n,refractionPosition\n,refractionSize\n#endif\n);\n#ifdef SS_DISPERSION\nenvironmentRefraction[i]=envSample[i];}\n#else\nenvironmentRefraction=envSample;\n#endif\nenvironmentRefraction.rgb*=vRefractionInfos.x;\n#endif\n#ifdef SS_REFRACTION\nvec3 refractionTransmittance=vec3(refractionIntensity);\n#ifdef SS_THICKNESSANDMASK_TEXTURE\nvec3 volumeAlbedo=computeColorAtDistanceInMedia(vTintColor.rgb,vTintColor.w);refractionTransmittance*=cocaLambert(volumeAlbedo,thickness);\n#elif defined(SS_LINKREFRACTIONTOTRANSPARENCY)\nfloat maxChannel=max(max(surfaceAlbedo.r,surfaceAlbedo.g),surfaceAlbedo.b);vec3 volumeAlbedo=saturate(maxChannel*surfaceAlbedo);environmentRefraction.rgb*=volumeAlbedo;\n#else\nvec3 volumeAlbedo=computeColorAtDistanceInMedia(vTintColor.rgb,vTintColor.w);refractionTransmittance*=cocaLambert(volumeAlbedo,vThicknessParam.y);\n#endif\n#ifdef SS_ALBEDOFORREFRACTIONTINT\nenvironmentRefraction.rgb*=surfaceAlbedo.rgb;\n#endif\noutParams.surfaceAlbedo=surfaceAlbedo;outParams.refractionOpacity=1.-refractionIntensity;\n#ifdef LEGACY_SPECULAR_ENERGY_CONSERVATION\noutParams.surfaceAlbedo*=outParams.refractionOpacity;\n#endif\n#ifdef UNUSED_MULTIPLEBOUNCES\nvec3 bounceSpecularEnvironmentReflectance=(2.0*vSpecularEnvironmentReflectance)/(1.0+vSpecularEnvironmentReflectance);outParams.specularEnvironmentReflectance=mix(bounceSpecularEnvironmentReflectance,vSpecularEnvironmentReflectance,refractionIntensity);\n#endif\n#if DEBUGMODE>0\noutParams.refractionTransmittance=refractionTransmittance;\n#endif\noutParams.finalRefraction=environmentRefraction.rgb*refractionTransmittance*vLightingIntensity.z;outParams.finalRefraction*=vec3(1.0)-vSpecularEnvironmentReflectance;\n#if DEBUGMODE>0\noutParams.environmentRefraction=environmentRefraction;\n#endif\n#endif\n#if defined(REFLECTION) && defined(SS_TRANSLUCENCY)\n#if defined(NORMAL) && defined(USESPHERICALINVERTEX) || !defined(USESPHERICALFROMREFLECTIONMAP)\nvec3 irradianceVector=vec3(reflectionMatrix*vec4(normalW,0)).xyz;\n#ifdef REFLECTIONMAP_OPPOSITEZ\nirradianceVector.z*=-1.0;\n#endif\n#ifdef INVERTCUBICMAP\nirradianceVector.y*=-1.0;\n#endif\n#else\nvec3 irradianceVector=irradianceVector_;\n#endif\n#if defined(USESPHERICALFROMREFLECTIONMAP)\n#if defined(REALTIME_FILTERING)\nvec3 refractionIrradiance=irradiance(reflectionSampler,-irradianceVector,vReflectionFilteringInfo,0.0,surfaceAlbedo,irradianceVector\n#ifdef IBL_CDF_FILTERING\n,icdfSampler\n#endif\n);\n#else\nvec3 refractionIrradiance=computeEnvironmentIrradiance(-irradianceVector);\n#endif\n#elif defined(USEIRRADIANCEMAP)\n#ifdef REFLECTIONMAP_3D\nvec3 irradianceCoords=irradianceVector;\n#else\nvec2 irradianceCoords=irradianceVector.xy;\n#ifdef REFLECTIONMAP_PROJECTION\nirradianceCoords/=irradianceVector.z;\n#endif\nirradianceCoords.y=1.0-irradianceCoords.y;\n#endif\nvec4 refractionIrradiance=sampleReflection(irradianceSampler,-irradianceCoords);\n#ifdef RGBDREFLECTION\nrefractionIrradiance.rgb=fromRGBD(refractionIrradiance);\n#endif\n#ifdef GAMMAREFLECTION\nrefractionIrradiance.rgb=toLinearSpace(refractionIrradiance.rgb);\n#endif\n#else\nvec4 refractionIrradiance=vec4(0.);\n#endif\nrefractionIrradiance.rgb*=transmittance;\n#ifdef SS_ALBEDOFORTRANSLUCENCYTINT\nrefractionIrradiance.rgb*=surfaceAlbedo.rgb;\n#endif\noutParams.refractionIrradiance=refractionIrradiance.rgb;\n#endif\nreturn outParams;}\n#endif\n";a.v.IncludesShadersStore.pbrBlockSubSurface||(a.v.IncludesShadersStore.pbrBlockSubSurface=S);i(38269);const I="float reflectanceF0=reflectivityOut.reflectanceF0;vec3 specularEnvironmentR0=reflectivityOut.colorReflectanceF0;vec3 specularEnvironmentR90=reflectivityOut.colorReflectanceF90;\n#ifdef ALPHAFRESNEL\nfloat reflectance90=fresnelGrazingReflectance(reflectanceF0);specularEnvironmentR90=specularEnvironmentR90*reflectance90;\n#endif\n";a.v.IncludesShadersStore.pbrBlockReflectance0||(a.v.IncludesShadersStore.pbrBlockReflectance0=I);const m="#if defined(CLUSTLIGHT_BATCH) && CLUSTLIGHT_BATCH>0\n#include<clusteredLightingFunctions>\n#define inline\nlightingInfo computeClusteredLighting(\nsampler2D lightDataTexture,\nsampler2D tileMaskTexture,\nvec4 lightData,\nivec2 sliceRange,\nvec3 V,\nvec3 N,\nvec3 posW,\nvec3 surfaceAlbedo,\nreflectivityOutParams reflectivityOut\n#ifdef IRIDESCENCE\n,float iridescenceIntensity\n#endif\n#ifdef SS_TRANSLUCENCY\n,subSurfaceOutParams subSurfaceOut\n#endif\n#ifdef SPECULARTERM\n,float AARoughnessFactor\n#endif\n#ifdef ANISOTROPIC\n,anisotropicOutParams anisotropicOut\n#endif\n#ifdef SHEEN\n,sheenOutParams sheenOut\n#endif\n#ifdef CLEARCOAT\n,clearcoatOutParams clearcoatOut\n#endif\n) {float NdotV=absEps(dot(N,V));\n#include<pbrBlockReflectance0>\n#ifdef CLEARCOAT\nspecularEnvironmentR0=clearcoatOut.specularEnvironmentR0;\n#endif\nlightingInfo result;ivec2 tilePosition=ivec2(gl_FragCoord.xy*lightData.xy);int maskHeight=int(lightData.z);tilePosition.y=min(tilePosition.y,maskHeight-1);ivec2 batchRange=sliceRange/CLUSTLIGHT_BATCH;int batchOffset=batchRange.x*CLUSTLIGHT_BATCH;tilePosition.y+=maskHeight*batchRange.x;for (int i=batchRange.x; i<=batchRange.y; i+=1) {uint mask=uint(texelFetch(tileMaskTexture,tilePosition,0).r);tilePosition.y+=maskHeight;int maskOffset=max(sliceRange.x-batchOffset,0);int maskWidth=min(sliceRange.y-batchOffset+1,CLUSTLIGHT_BATCH);mask=extractBits(mask,maskOffset,maskWidth);while (mask != 0u) {uint bit=mask & -mask;mask ^= bit;int position=onlyBitPosition(bit);ClusteredLight light=getClusteredLight(lightDataTexture,batchOffset+maskOffset+position);preLightingInfo preInfo=computePointAndSpotPreLightingInfo(light.vLightData,V,N,posW);preInfo.NdotV=NdotV;preInfo.attenuation=computeDistanceLightFalloff(preInfo.lightOffset,preInfo.lightDistanceSquared,light.vLightFalloff.x,light.vLightFalloff.y);if (light.vLightDirection.w>=0.0) {preInfo.attenuation*=computeDirectionalLightFalloff(light.vLightDirection.xyz,preInfo.L,light.vLightDirection.w,light.vLightData.w,light.vLightFalloff.z,light.vLightFalloff.w);}\npreInfo.roughness=adjustRoughnessFromLightProperties(reflectivityOut.roughness,light.vLightSpecular.a,preInfo.lightDistance);preInfo.diffuseRoughness=reflectivityOut.diffuseRoughness;preInfo.surfaceAlbedo=surfaceAlbedo;\n#ifdef IRIDESCENCE\npreInfo.iridescenceIntensity=iridescenceIntensity;\n#endif\nlightingInfo info;\n#ifdef SS_TRANSLUCENCY\n#ifdef SS_TRANSLUCENCY_LEGACY\ninfo.diffuse=computeDiffuseTransmittedLighting(preInfo,light.vLightDiffuse.rgb,subSurfaceOut.transmittance);info.diffuseTransmission=vec3(0);\n#else\ninfo.diffuse=computeDiffuseLighting(preInfo,light.vLightDiffuse.rgb)*(1.0-subSurfaceOut.translucencyIntensity);info.diffuseTransmission=computeDiffuseTransmittedLighting(preInfo,light.vLightDiffuse.rgb,subSurfaceOut.transmittance);\n#endif\n#else\ninfo.diffuse=computeDiffuseLighting(preInfo,light.vLightDiffuse.rgb);\n#endif\n#ifdef SPECULARTERM\n#if CONDUCTOR_SPECULAR_MODEL==CONDUCTOR_SPECULAR_MODEL_OPENPBR\nvec3 metalFresnel=reflectivityOut.specularWeight*getF82Specular(preInfo.VdotH,specularEnvironmentR0,reflectivityOut.colorReflectanceF90,reflectivityOut.roughness);vec3 dielectricFresnel=fresnelSchlickGGX(preInfo.VdotH,reflectivityOut.dielectricColorF0,reflectivityOut.colorReflectanceF90);vec3 coloredFresnel=mix(dielectricFresnel,metalFresnel,reflectivityOut.metallic);\n#else\nvec3 coloredFresnel=fresnelSchlickGGX(preInfo.VdotH,specularEnvironmentR0,reflectivityOut.colorReflectanceF90);\n#endif\n#ifndef LEGACY_SPECULAR_ENERGY_CONSERVATION\nfloat NdotH=dot(N,preInfo.H);vec3 fresnel=fresnelSchlickGGX(NdotH,vec3(reflectanceF0),specularEnvironmentR90);info.diffuse*=(vec3(1.0)-fresnel);\n#endif\n#ifdef ANISOTROPIC\ninfo.specular=computeAnisotropicSpecularLighting(preInfo,V,N,anisotropicOut.anisotropicTangent,anisotropicOut.anisotropicBitangent,anisotropicOut.anisotropy,clearcoatOut.specularEnvironmentR0,specularEnvironmentR90,AARoughnessFactor,light.vLightDiffuse.rgb);\n#else\ninfo.specular=computeSpecularLighting(preInfo,N,specularEnvironmentR0,coloredFresnel,AARoughnessFactor,light.vLightDiffuse.rgb);\n#endif\n#endif\n#ifdef SHEEN\n#ifdef SHEEN_LINKWITHALBEDO\npreInfo.roughness=sheenOut.sheenIntensity;\n#else\npreInfo.roughness=adjustRoughnessFromLightProperties(sheenOut.sheenRoughness,light.vLightSpecular.a,preInfo.lightDistance);\n#endif\ninfo.sheen=computeSheenLighting(preInfo,normalW,sheenOut.sheenColor,specularEnvironmentR90,AARoughnessFactor,light.vLightDiffuse.rgb);\n#endif\n#ifdef CLEARCOAT\npreInfo.roughness=adjustRoughnessFromLightProperties(clearcoatOut.clearCoatRoughness,light.vLightSpecular.a,preInfo.lightDistance);info.clearCoat=computeClearCoatLighting(preInfo,clearcoatOut.clearCoatNormalW,clearcoatOut.clearCoatAARoughnessFactors.x,clearcoatOut.clearCoatIntensity,light.vLightDiffuse.rgb);\n#ifdef CLEARCOAT_TINT\nfloat absorption=computeClearCoatLightingAbsorption(clearcoatOut.clearCoatNdotVRefract,preInfo.L,clearcoatOut.clearCoatNormalW,clearcoatOut.clearCoatColor,clearcoatOut.clearCoatThickness,clearcoatOut.clearCoatIntensity);info.diffuse*=absorption;\n#ifdef SS_TRANSLUCENCY\ninfo.diffuseTransmission*=absorption;\n#endif\n#ifdef SPECULARTERM\ninfo.specular*=absorption;\n#endif\n#endif\ninfo.diffuse*=info.clearCoat.w;\n#ifdef SS_TRANSLUCENCY\ninfo.diffuseTransmission*=info.clearCoat.w;\n#endif\n#ifdef SPECULARTERM\ninfo.specular*=info.clearCoat.w;\n#endif\n#ifdef SHEEN\ninfo.sheen*=info.clearCoat.w;\n#endif\n#endif\nresult.diffuse+=info.diffuse;\n#ifdef SS_TRANSLUCENCY\nresult.diffuseTransmission+=info.diffuseTransmission;\n#endif\n#ifdef SPECULARTERM\nresult.specular+=info.specular;\n#endif\n#ifdef CLEARCOAT\nresult.clearCoat+=info.clearCoat;\n#endif\n#ifdef SHEEN\nresult.sheen+=info.sheen;\n#endif\n}\nbatchOffset+=CLUSTLIGHT_BATCH;}\nreturn result;}\n#endif\n";a.v.IncludesShadersStore.pbrClusteredLightingFunctions||(a.v.IncludesShadersStore.pbrClusteredLightingFunctions=m);i(15764),i(21599),i(16869);const v="#if defined(FORCENORMALFORWARD) && defined(NORMAL)\nvec3 faceNormal=normalize(cross(dFdx(vPositionW),dFdy(vPositionW)))*vEyePosition.w;\n#if defined(TWOSIDEDLIGHTING)\nfaceNormal=gl_FrontFacing ? faceNormal : -faceNormal;\n#endif\nnormalW*=sign(dot(normalW,faceNormal));\n#endif\n#if defined(TWOSIDEDLIGHTING) && defined(NORMAL)\n#if defined(MIRRORED)\nnormalW=gl_FrontFacing ? -normalW : normalW;\n#else\nnormalW=gl_FrontFacing ? normalW : -normalW;\n#endif\n#endif\n";a.v.IncludesShadersStore.pbrBlockNormalFinal||(a.v.IncludesShadersStore.pbrBlockNormalFinal=v);i(11054);const A="#ifdef LIGHTMAP\nvec4 lightmapColor=texture2D(lightmapSampler,vLightmapUV+uvOffset);\n#ifdef RGBDLIGHTMAP\nlightmapColor.rgb=fromRGBD(lightmapColor);\n#endif\n#ifdef GAMMALIGHTMAP\nlightmapColor.rgb=toLinearSpace(lightmapColor.rgb);\n#endif\nlightmapColor.rgb*=vLightmapInfos.y;\n#endif\n";a.v.IncludesShadersStore.pbrBlockLightmapInit||(a.v.IncludesShadersStore.pbrBlockLightmapInit=A);const h="float NdotVUnclamped=dot(normalW,viewDirectionW);float NdotV=absEps(NdotVUnclamped);float alphaG=convertRoughnessToAverageSlope(roughness);vec2 AARoughnessFactors=getAARoughnessFactors(normalW.xyz);\n#ifdef SPECULARAA\nalphaG+=AARoughnessFactors.y;\n#endif\n#if defined(ENVIRONMENTBRDF)\nvec3 environmentBrdf=getBRDFLookup(NdotV,roughness);\n#endif\n#if defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX)\n#ifdef RADIANCEOCCLUSION\n#ifdef AMBIENTINGRAYSCALE\nfloat ambientMonochrome=aoOut.ambientOcclusionColor.r;\n#else\nfloat ambientMonochrome=getLuminance(aoOut.ambientOcclusionColor);\n#endif\nfloat seo=environmentRadianceOcclusion(ambientMonochrome,NdotVUnclamped);\n#endif\n#ifdef HORIZONOCCLUSION\n#ifdef BUMP\n#ifdef REFLECTIONMAP_3D\nfloat eho=environmentHorizonOcclusion(-viewDirectionW,normalW,geometricNormalW);\n#endif\n#endif\n#endif\n#endif\n";a.v.IncludesShadersStore.pbrBlockGeometryInfo||(a.v.IncludesShadersStore.pbrBlockGeometryInfo=h);const T="#if defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX)\nvec3 baseSpecularEnvironmentReflectance=getReflectanceFromBRDFLookup(vec3(reflectanceF0),reflectivityOut.reflectanceF90,environmentBrdf);\n#if (CONDUCTOR_SPECULAR_MODEL==CONDUCTOR_SPECULAR_MODEL_OPENPBR)\nvec3 metalEnvironmentReflectance=reflectivityOut.specularWeight*getF82Specular(NdotV,clearcoatOut.specularEnvironmentR0,reflectivityOut.colorReflectanceF90,reflectivityOut.roughness);vec3 dielectricEnvironmentReflectance=getReflectanceFromBRDFLookup(reflectivityOut.dielectricColorF0,reflectivityOut.colorReflectanceF90,environmentBrdf);vec3 colorSpecularEnvironmentReflectance=mix(dielectricEnvironmentReflectance,metalEnvironmentReflectance,reflectivityOut.metallic);\n#else\nvec3 colorSpecularEnvironmentReflectance=getReflectanceFromBRDFLookup(clearcoatOut.specularEnvironmentR0,reflectivityOut.colorReflectanceF90,environmentBrdf);\n#endif\n#ifdef RADIANCEOCCLUSION\ncolorSpecularEnvironmentReflectance*=seo;\n#endif\n#ifdef HORIZONOCCLUSION\n#ifdef BUMP\n#ifdef REFLECTIONMAP_3D\ncolorSpecularEnvironmentReflectance*=eho;\n#endif\n#endif\n#endif\n#else\nvec3 colorSpecularEnvironmentReflectance=getReflectanceFromAnalyticalBRDFLookup_Jones(NdotV,clearcoatOut.specularEnvironmentR0,specularEnvironmentR90,sqrt(microSurface));vec3 baseSpecularEnvironmentReflectance=getReflectanceFromAnalyticalBRDFLookup_Jones(NdotV,vec3(reflectanceF0),reflectivityOut.reflectanceF90,sqrt(microSurface));\n#endif\n#ifdef CLEARCOAT\ncolorSpecularEnvironmentReflectance*=clearcoatOut.conservationFactor;\n#if defined(CLEARCOAT_TINT)\ncolorSpecularEnvironmentReflectance*=clearcoatOut.absorption;\n#endif\n#endif\n";a.v.IncludesShadersStore.pbrBlockReflectance||(a.v.IncludesShadersStore.pbrBlockReflectance=T);const p="vec3 diffuseBase=vec3(0.,0.,0.);\n#ifdef SS_TRANSLUCENCY\nvec3 diffuseTransmissionBase=vec3(0.,0.,0.);\n#endif\n#ifdef SPECULARTERM\nvec3 specularBase=vec3(0.,0.,0.);\n#endif\n#ifdef CLEARCOAT\nvec3 clearCoatBase=vec3(0.,0.,0.);\n#endif\n#ifdef SHEEN\nvec3 sheenBase=vec3(0.,0.,0.);\n#endif\n#if defined(SPECULARTERM) && defined(LIGHT0)\nvec3 coloredFresnel;\n#endif\npreLightingInfo preInfo;lightingInfo info;float shadow=1.; \nfloat aggShadow=0.;float numLights=0.;\n#if defined(CLEARCOAT) && defined(CLEARCOAT_TINT)\nvec3 absorption=vec3(0.);\n#endif\n";a.v.IncludesShadersStore.pbrBlockDirectLighting||(a.v.IncludesShadersStore.pbrBlockDirectLighting=p);i(6012);const O="aggShadow=aggShadow/numLights;\n#if defined(ENVIRONMENTBRDF)\n#ifdef MS_BRDF_ENERGY_CONSERVATION\nvec3 baseSpecularEnergyConservationFactor=getEnergyConservationFactor(vec3(reflectanceF0),environmentBrdf);vec3 coloredEnergyConservationFactor=getEnergyConservationFactor(clearcoatOut.specularEnvironmentR0,environmentBrdf);\n#endif\n#endif\n#if defined(SHEEN) && defined(SHEEN_ALBEDOSCALING) && defined(ENVIRONMENTBRDF)\nsurfaceAlbedo.rgb=sheenOut.sheenAlbedoScaling*surfaceAlbedo.rgb;\n#endif\n#ifdef LEGACY_SPECULAR_ENERGY_CONSERVATION\n#ifndef METALLICWORKFLOW\n#ifdef SPECULAR_GLOSSINESS_ENERGY_CONSERVATION\nsurfaceAlbedo.rgb=(1.-reflectanceF0)*surfaceAlbedo.rgb;\n#endif\n#endif\n#endif\n#ifdef REFLECTION\nvec3 finalIrradiance=reflectionOut.environmentIrradiance;\n#ifndef LEGACY_SPECULAR_ENERGY_CONSERVATION\n#if defined(METALLICWORKFLOW) || defined(SPECULAR_GLOSSINESS_ENERGY_CONSERVATION)\nvec3 baseSpecularEnergy=vec3(baseSpecularEnvironmentReflectance);\n#if defined(ENVIRONMENTBRDF)\n#ifdef MS_BRDF_ENERGY_CONSERVATION\nbaseSpecularEnergy*=baseSpecularEnergyConservationFactor;\n#endif\n#endif\nfinalIrradiance*=clamp(vec3(1.0)-baseSpecularEnergy,0.0,1.0);\n#endif\n#endif\n#if defined(CLEARCOAT)\nfinalIrradiance*=clearcoatOut.conservationFactor;\n#if defined(CLEARCOAT_TINT)\nfinalIrradiance*=clearcoatOut.absorption;\n#endif\n#endif\n#ifndef SS_APPLY_ALBEDO_AFTER_SUBSURFACE\nfinalIrradiance*=surfaceAlbedo.rgb;\n#endif\n#if defined(SS_REFRACTION)\nfinalIrradiance*=subSurfaceOut.refractionOpacity;\n#endif\n#if defined(SS_TRANSLUCENCY)\nfinalIrradiance*=(1.0-subSurfaceOut.translucencyIntensity);finalIrradiance+=subSurfaceOut.refractionIrradiance;\n#endif\n#ifdef SS_APPLY_ALBEDO_AFTER_SUBSURFACE\nfinalIrradiance*=surfaceAlbedo.rgb;\n#endif\nfinalIrradiance*=vLightingIntensity.z;finalIrradiance*=aoOut.ambientOcclusionColor;\n#endif\n#ifdef SPECULARTERM\nvec3 finalSpecular=specularBase;finalSpecular=max(finalSpecular,0.0);vec3 finalSpecularScaled=finalSpecular*vLightingIntensity.x*vLightingIntensity.w;\n#if defined(ENVIRONMENTBRDF) && defined(MS_BRDF_ENERGY_CONSERVATION)\nfinalSpecularScaled*=coloredEnergyConservationFactor;\n#endif\n#if defined(SHEEN) && defined(ENVIRONMENTBRDF) && defined(SHEEN_ALBEDOSCALING)\nfinalSpecularScaled*=sheenOut.sheenAlbedoScaling;\n#endif\n#endif\n#ifdef REFLECTION\nvec3 finalRadiance=reflectionOut.environmentRadiance.rgb;finalRadiance*=colorSpecularEnvironmentReflectance;vec3 finalRadianceScaled=finalRadiance*vLightingIntensity.z;\n#if defined(ENVIRONMENTBRDF) && defined(MS_BRDF_ENERGY_CONSERVATION)\nfinalRadianceScaled*=coloredEnergyConservationFactor;\n#endif\n#if defined(SHEEN) && defined(ENVIRONMENTBRDF) && defined(SHEEN_ALBEDOSCALING)\nfinalRadianceScaled*=sheenOut.sheenAlbedoScaling;\n#endif\n#endif\n#ifdef SHEEN\nvec3 finalSheen=sheenBase*sheenOut.sheenColor;finalSheen=max(finalSheen,0.0);vec3 finalSheenScaled=finalSheen*vLightingIntensity.x*vLightingIntensity.w;\n#if defined(CLEARCOAT) && defined(REFLECTION) && defined(ENVIRONMENTBRDF)\nsheenOut.finalSheenRadianceScaled*=clearcoatOut.conservationFactor;\n#if defined(CLEARCOAT_TINT)\nsheenOut.finalSheenRadianceScaled*=clearcoatOut.absorption;\n#endif\n#endif\n#endif\n#ifdef CLEARCOAT\nvec3 finalClearCoat=clearCoatBase;finalClearCoat=max(finalClearCoat,0.0);vec3 finalClearCoatScaled=finalClearCoat*vLightingIntensity.x*vLightingIntensity.w;\n#if defined(ENVIRONMENTBRDF) && defined(MS_BRDF_ENERGY_CONSERVATION)\nfinalClearCoatScaled*=clearcoatOut.energyConservationFactorClearCoat;\n#endif\n#ifdef SS_REFRACTION\nsubSurfaceOut.finalRefraction*=clearcoatOut.conservationFactor;\n#ifdef CLEARCOAT_TINT\nsubSurfaceOut.finalRefraction*=clearcoatOut.absorption;\n#endif\n#endif\n#endif\n#ifdef ALPHABLEND\nfloat luminanceOverAlpha=0.0;\n#if defined(REFLECTION) && defined(RADIANCEOVERALPHA)\nluminanceOverAlpha+=getLuminance(finalRadianceScaled);\n#if defined(CLEARCOAT)\nluminanceOverAlpha+=getLuminance(clearcoatOut.finalClearCoatRadianceScaled);\n#endif\n#endif\n#if defined(SPECULARTERM) && defined(SPECULAROVERALPHA)\nluminanceOverAlpha+=getLuminance(finalSpecularScaled);\n#endif\n#if defined(CLEARCOAT) && defined(CLEARCOATOVERALPHA)\nluminanceOverAlpha+=getLuminance(finalClearCoatScaled);\n#endif\n#if defined(RADIANCEOVERALPHA) || defined(SPECULAROVERALPHA) || defined(CLEARCOATOVERALPHA)\nalpha=saturate(alpha+luminanceOverAlpha*luminanceOverAlpha);\n#endif\n#endif\n";a.v.IncludesShadersStore.pbrBlockFinalLitComponents||(a.v.IncludesShadersStore.pbrBlockFinalLitComponents=O);const L="vec3 finalDiffuse=diffuseBase;finalDiffuse*=surfaceAlbedo;\n#if defined(SS_REFRACTION) && !defined(UNLIT) && !defined(LEGACY_SPECULAR_ENERGY_CONSERVATION)\nfinalDiffuse*=subSurfaceOut.refractionOpacity;\n#endif\n#if defined(SS_TRANSLUCENCY) && !defined(UNLIT)\nfinalDiffuse+=diffuseTransmissionBase;\n#endif\nfinalDiffuse=max(finalDiffuse,0.0);finalDiffuse*=vLightingIntensity.x;vec3 finalAmbient=vAmbientColor;finalAmbient*=surfaceAlbedo.rgb;vec3 finalEmissive=vEmissiveColor;\n#ifdef EMISSIVE\nvec3 emissiveColorTex=texture2D(emissiveSampler,vEmissiveUV+uvOffset).rgb;\n#ifdef GAMMAEMISSIVE\nfinalEmissive*=toLinearSpace(emissiveColorTex.rgb);\n#else\nfinalEmissive*=emissiveColorTex.rgb;\n#endif\nfinalEmissive*= vEmissiveInfos.y;\n#endif\nfinalEmissive*=vLightingIntensity.y;\n#ifdef AMBIENT\nvec3 ambientOcclusionForDirectDiffuse=mix(vec3(1.),aoOut.ambientOcclusionColor,vAmbientInfos.w);\n#else\nvec3 ambientOcclusionForDirectDiffuse=aoOut.ambientOcclusionColor;\n#endif\nfinalAmbient*=aoOut.ambientOcclusionColor;finalDiffuse*=ambientOcclusionForDirectDiffuse;\n";a.v.IncludesShadersStore.pbrBlockFinalUnlitComponents||(a.v.IncludesShadersStore.pbrBlockFinalUnlitComponents=L);const N="vec4 finalColor=vec4(\n#ifndef UNLIT\n#ifdef REFLECTION\nfinalIrradiance +\n#endif\n#ifdef SPECULARTERM\nfinalSpecularScaled +\n#endif\n#ifdef SHEEN\nfinalSheenScaled +\n#endif\n#ifdef CLEARCOAT\nfinalClearCoatScaled +\n#endif\n#ifdef REFLECTION\nfinalRadianceScaled +\n#if defined(SHEEN) && defined(ENVIRONMENTBRDF)\nsheenOut.finalSheenRadianceScaled +\n#endif\n#ifdef CLEARCOAT\nclearcoatOut.finalClearCoatRadianceScaled +\n#endif\n#endif\n#ifdef SS_REFRACTION\nsubSurfaceOut.finalRefraction +\n#endif\n#endif\nfinalAmbient +\nfinalDiffuse,\nalpha);\n#ifdef LIGHTMAP\n#ifndef LIGHTMAPEXCLUDED\n#ifdef USELIGHTMAPASSHADOWMAP\nfinalColor.rgb*=lightmapColor.rgb;\n#else\nfinalColor.rgb+=lightmapColor.rgb;\n#endif\n#endif\n#endif\nfinalColor.rgb+=finalEmissive;\n#define CUSTOM_FRAGMENT_BEFORE_FOG\nfinalColor=max(finalColor,0.0);\n";a.v.IncludesShadersStore.pbrBlockFinalColorComposition||(a.v.IncludesShadersStore.pbrBlockFinalColorComposition=N);i(66564),i(6216),i(3917),i(9858),i(20256),i(5887);const g="pbrPixelShader",D="#define PBR_FRAGMENT_SHADER\n#define CUSTOM_FRAGMENT_EXTENSION\n#if defined(BUMP) || !defined(NORMAL) || defined(FORCENORMALFORWARD) || defined(SPECULARAA) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC)\n#extension GL_OES_standard_derivatives : enable\n#endif\n#ifdef LODBASEDMICROSFURACE\n#extension GL_EXT_shader_texture_lod : enable\n#endif\n#define CUSTOM_FRAGMENT_BEGIN\n#ifdef LOGARITHMICDEPTH\n#extension GL_EXT_frag_depth : enable\n#endif\n#if SCENE_MRT_COUNT>0\n#include<prePassDeclaration>[SCENE_MRT_COUNT]\n#endif\nprecision highp float;\n#include<oitDeclaration>\n#ifndef FROMLINEARSPACE\n#define FROMLINEARSPACE\n#endif\n#include<__decl__pbrFragment>\n#include<pbrFragmentExtraDeclaration>\n#include<__decl__lightFragment>[0..maxSimultaneousLights]\n#include<pbrFragmentSamplersDeclaration>\n#include<imageProcessingDeclaration>\n#include<clipPlaneFragmentDeclaration>\n#include<logDepthDeclaration>\n#include<fogFragmentDeclaration>\n#include<helperFunctions>\n#include<subSurfaceScatteringFunctions>\n#include<importanceSampling>\n#include<pbrHelperFunctions>\n#include<imageProcessingFunctions>\n#include<shadowsFragmentFunctions>\n#include<harmonicsFunctions>\n#include<pbrDirectLightingSetupFunctions>\n#include<pbrDirectLightingFalloffFunctions>\n#include<pbrBRDFFunctions>\n#include<hdrFilteringFunctions>\n#include<pbrDirectLightingFunctions>\n#include<pbrIBLFunctions>\n#include<bumpFragmentMainFunctions>\n#include<bumpFragmentFunctions>\n#ifdef REFLECTION\n#include<reflectionFunction>\n#endif\n#define CUSTOM_FRAGMENT_DEFINITIONS\n#include<pbrBlockAlbedoOpacity>\n#include<pbrBlockReflectivity>\n#include<pbrBlockAmbientOcclusion>\n#include<pbrBlockAlphaFresnel>\n#include<pbrBlockAnisotropic>\n#include<pbrBlockReflection>\n#include<pbrBlockSheen>\n#include<pbrBlockClearcoat>\n#include<pbrBlockIridescence>\n#include<pbrBlockSubSurface>\n#include<pbrClusteredLightingFunctions>\nvoid main(void) {\n#define CUSTOM_FRAGMENT_MAIN_BEGIN\n#include<clipPlaneFragment>\n#include<pbrBlockNormalGeometric>\n#include<bumpFragment>\n#include<pbrBlockNormalFinal>\nalbedoOpacityOutParams albedoOpacityOut;\n#ifdef ALBEDO\nvec4 albedoTexture=texture2D(albedoSampler,vAlbedoUV+uvOffset);\n#endif\n#ifdef BASE_WEIGHT\nvec4 baseWeightTexture=texture2D(baseWeightSampler,vBaseWeightUV+uvOffset);\n#endif\n#ifdef OPACITY\nvec4 opacityMap=texture2D(opacitySampler,vOpacityUV+uvOffset);\n#endif\n#ifdef DECAL\nvec4 decalColor=texture2D(decalSampler,vDecalUV+uvOffset);\n#endif\nalbedoOpacityOut=albedoOpacityBlock(\nvAlbedoColor\n#ifdef ALBEDO\n,albedoTexture\n,vAlbedoInfos\n#endif\n,baseWeight\n#ifdef BASE_WEIGHT\n,baseWeightTexture\n,vBaseWeightInfos\n#endif\n#ifdef OPACITY\n,opacityMap\n,vOpacityInfos\n#endif\n#ifdef DETAIL\n,detailColor\n,vDetailInfos\n#endif\n#ifdef DECAL\n,decalColor\n,vDecalInfos\n#endif\n);vec3 surfaceAlbedo=albedoOpacityOut.surfaceAlbedo;float alpha=albedoOpacityOut.alpha;\n#define CUSTOM_FRAGMENT_UPDATE_ALPHA\n#include<depthPrePass>\n#define CUSTOM_FRAGMENT_BEFORE_LIGHTS\nambientOcclusionOutParams aoOut;\n#ifdef AMBIENT\nvec3 ambientOcclusionColorMap=texture2D(ambientSampler,vAmbientUV+uvOffset).rgb;\n#endif\naoOut=ambientOcclusionBlock(\n#ifdef AMBIENT\nambientOcclusionColorMap,\nvAmbientInfos\n#endif\n);\n#include<pbrBlockLightmapInit>\n#ifdef UNLIT\nvec3 diffuseBase=vec3(1.,1.,1.);\n#else \nvec3 baseColor=surfaceAlbedo;reflectivityOutParams reflectivityOut;\n#if defined(REFLECTIVITY)\nvec4 surfaceMetallicOrReflectivityColorMap=texture2D(reflectivitySampler,vReflectivityUV+uvOffset);vec4 baseReflectivity=surfaceMetallicOrReflectivityColorMap;\n#ifndef METALLICWORKFLOW\n#ifdef REFLECTIVITY_GAMMA\nsurfaceMetallicOrReflectivityColorMap=toLinearSpace(surfaceMetallicOrReflectivityColorMap);\n#endif\nsurfaceMetallicOrReflectivityColorMap.rgb*=vReflectivityInfos.y;\n#endif\n#endif\n#if defined(MICROSURFACEMAP)\nvec4 microSurfaceTexel=texture2D(microSurfaceSampler,vMicroSurfaceSamplerUV+uvOffset)*vMicroSurfaceSamplerInfos.y;\n#endif\n#ifdef METALLICWORKFLOW\nvec4 metallicReflectanceFactors=vMetallicReflectanceFactors;\n#ifdef REFLECTANCE\nvec4 reflectanceFactorsMap=texture2D(reflectanceSampler,vReflectanceUV+uvOffset);\n#ifdef REFLECTANCE_GAMMA\nreflectanceFactorsMap=toLinearSpace(reflectanceFactorsMap);\n#endif\nmetallicReflectanceFactors.rgb*=reflectanceFactorsMap.rgb;\n#endif\n#ifdef METALLIC_REFLECTANCE\nvec4 metallicReflectanceFactorsMap=texture2D(metallicReflectanceSampler,vMetallicReflectanceUV+uvOffset);\n#ifdef METALLIC_REFLECTANCE_GAMMA\nmetallicReflectanceFactorsMap=toLinearSpace(metallicReflectanceFactorsMap);\n#endif\n#ifndef METALLIC_REFLECTANCE_USE_ALPHA_ONLY\nmetallicReflectanceFactors.rgb*=metallicReflectanceFactorsMap.rgb;\n#endif\nmetallicReflectanceFactors.a*=metallicReflectanceFactorsMap.a;\n#endif\n#endif\n#ifdef BASE_DIFFUSE_ROUGHNESS\nfloat baseDiffuseRoughnessTexture=texture2D(baseDiffuseRoughnessSampler,vBaseDiffuseRoughnessUV+uvOffset).r;\n#endif\nreflectivityOut=reflectivityBlock(\nvReflectivityColor\n#ifdef METALLICWORKFLOW\n,surfaceAlbedo\n,metallicReflectanceFactors\n#endif\n,baseDiffuseRoughness\n#ifdef BASE_DIFFUSE_ROUGHNESS\n,baseDiffuseRoughnessTexture\n,vBaseDiffuseRoughnessInfos\n#endif\n#ifdef REFLECTIVITY\n,vReflectivityInfos\n,surfaceMetallicOrReflectivityColorMap\n#endif\n#if defined(METALLICWORKFLOW) && defined(REFLECTIVITY) && defined(AOSTOREINMETALMAPRED)\n,aoOut.ambientOcclusionColor\n#endif\n#ifdef MICROSURFACEMAP\n,microSurfaceTexel\n#endif\n#ifdef DETAIL\n,detailColor\n,vDetailInfos\n#endif\n);float microSurface=reflectivityOut.microSurface;float roughness=reflectivityOut.roughness;float diffuseRoughness=reflectivityOut.diffuseRoughness;\n#ifdef METALLICWORKFLOW\nsurfaceAlbedo=reflectivityOut.surfaceAlbedo;\n#endif\n#if defined(METALLICWORKFLOW) && defined(REFLECTIVITY) && defined(AOSTOREINMETALMAPRED)\naoOut.ambientOcclusionColor=reflectivityOut.ambientOcclusionColor;\n#endif\n#ifdef ALPHAFRESNEL\n#if defined(ALPHATEST) || defined(ALPHABLEND)\nalphaFresnelOutParams alphaFresnelOut;alphaFresnelOut=alphaFresnelBlock(\nnormalW,\nviewDirectionW,\nalpha,\nmicroSurface\n);alpha=alphaFresnelOut.alpha;\n#endif\n#endif\n#include<pbrBlockGeometryInfo>\n#ifdef ANISOTROPIC\nanisotropicOutParams anisotropicOut;\n#ifdef ANISOTROPIC_TEXTURE\nvec3 anisotropyMapData=texture2D(anisotropySampler,vAnisotropyUV+uvOffset).rgb*vAnisotropyInfos.y;\n#endif\nanisotropicOut=anisotropicBlock(\nvAnisotropy,\nroughness,\n#ifdef ANISOTROPIC_TEXTURE\nanisotropyMapData,\n#endif\nTBN,\nnormalW,\nviewDirectionW\n);\n#endif\n#ifdef REFLECTION\nreflectionOutParams reflectionOut;\n#ifndef USE_CUSTOM_REFLECTION\nreflectionOut=reflectionBlock(\nvPositionW\n,normalW\n,alphaG\n,vReflectionMicrosurfaceInfos\n,vReflectionInfos\n,vReflectionColor\n#ifdef ANISOTROPIC\n,anisotropicOut\n#endif\n#if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)\n,NdotVUnclamped\n#endif\n#ifdef LINEARSPECULARREFLECTION\n,roughness\n#endif\n,reflectionSampler\n#if defined(NORMAL) && defined(USESPHERICALINVERTEX)\n,vEnvironmentIrradiance\n#endif\n#if (defined(USESPHERICALFROMREFLECTIONMAP) && (!defined(NORMAL) || !defined(USESPHERICALINVERTEX))) || (defined(USEIRRADIANCEMAP) && defined(REFLECTIONMAP_3D))\n,reflectionMatrix\n#endif\n#ifdef USEIRRADIANCEMAP\n,irradianceSampler\n#ifdef USE_IRRADIANCE_DOMINANT_DIRECTION\n,vReflectionDominantDirection\n#endif\n#endif\n#ifndef LODBASEDMICROSFURACE\n,reflectionSamplerLow\n,reflectionSamplerHigh\n#endif\n#ifdef REALTIME_FILTERING\n,vReflectionFilteringInfo\n#ifdef IBL_CDF_FILTERING\n,icdfSampler\n#endif\n#endif\n,viewDirectionW\n,diffuseRoughness\n,baseColor\n);\n#else\n#define CUSTOM_REFLECTION\n#endif\n#endif\n#include<pbrBlockReflectance0>\n#ifdef SHEEN\nsheenOutParams sheenOut;\n#ifdef SHEEN_TEXTURE\nvec4 sheenMapData=texture2D(sheenSampler,vSheenUV+uvOffset);\n#endif\n#if defined(SHEEN_ROUGHNESS) && defined(SHEEN_TEXTURE_ROUGHNESS) && !defined(SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE)\nvec4 sheenMapRoughnessData=texture2D(sheenRoughnessSampler,vSheenRoughnessUV+uvOffset)*vSheenInfos.w;\n#endif\nsheenOut=sheenBlock(\nvSheenColor\n#ifdef SHEEN_ROUGHNESS\n,vSheenRoughness\n#if defined(SHEEN_TEXTURE_ROUGHNESS) && !defined(SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE)\n,sheenMapRoughnessData\n#endif\n#endif\n,roughness\n#ifdef SHEEN_TEXTURE\n,sheenMapData\n,vSheenInfos.y\n#endif\n,reflectanceF0\n#ifdef SHEEN_LINKWITHALBEDO\n,baseColor\n,surfaceAlbedo\n#endif\n#ifdef ENVIRONMENTBRDF\n,NdotV\n,environmentBrdf\n#endif\n#if defined(REFLECTION) && defined(ENVIRONMENTBRDF)\n,AARoughnessFactors\n,vReflectionMicrosurfaceInfos\n,vReflectionInfos\n,vReflectionColor\n,vLightingIntensity\n,reflectionSampler\n,reflectionOut.reflectionCoords\n,NdotVUnclamped\n#ifndef LODBASEDMICROSFURACE\n,reflectionSamplerLow\n,reflectionSamplerHigh\n#endif\n#ifdef REALTIME_FILTERING\n,vReflectionFilteringInfo\n#endif\n#if !defined(REFLECTIONMAP_SKYBOX) && defined(RADIANCEOCCLUSION)\n,seo\n#endif\n#if !defined(REFLECTIONMAP_SKYBOX) && defined(HORIZONOCCLUSION) && defined(BUMP) && defined(REFLECTIONMAP_3D)\n,eho\n#endif\n#endif\n);\n#ifdef SHEEN_LINKWITHALBEDO\nsurfaceAlbedo=sheenOut.surfaceAlbedo;\n#endif\n#endif\n#ifdef CLEARCOAT\n#ifdef CLEARCOAT_TEXTURE\nvec2 clearCoatMapData=texture2D(clearCoatSampler,vClearCoatUV+uvOffset).rg*vClearCoatInfos.y;\n#endif\n#endif\n#ifdef IRIDESCENCE\niridescenceOutParams iridescenceOut;\n#ifdef IRIDESCENCE_TEXTURE\nvec2 iridescenceMapData=texture2D(iridescenceSampler,vIridescenceUV+uvOffset).rg*vIridescenceInfos.y;\n#endif\n#ifdef IRIDESCENCE_THICKNESS_TEXTURE\nvec2 iridescenceThicknessMapData=texture2D(iridescenceThicknessSampler,vIridescenceThicknessUV+uvOffset).rg*vIridescenceInfos.w;\n#endif\niridescenceOut=iridescenceBlock(\nvIridescenceParams\n,NdotV\n,specularEnvironmentR0\n#ifdef IRIDESCENCE_TEXTURE\n,iridescenceMapData\n#endif\n#ifdef IRIDESCENCE_THICKNESS_TEXTURE\n,iridescenceThicknessMapData\n#endif\n#ifdef CLEARCOAT\n,NdotVUnclamped\n,vClearCoatParams\n#ifdef CLEARCOAT_TEXTURE\n,clearCoatMapData\n#endif\n#endif\n);float iridescenceIntensity=iridescenceOut.iridescenceIntensity;specularEnvironmentR0=iridescenceOut.specularEnvironmentR0;\n#endif\nclearcoatOutParams clearcoatOut;\n#ifdef CLEARCOAT\n#if defined(CLEARCOAT_TEXTURE_ROUGHNESS) && !defined(CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE)\nvec4 clearCoatMapRoughnessData=texture2D(clearCoatRoughnessSampler,vClearCoatRoughnessUV+uvOffset)*vClearCoatInfos.w;\n#endif\n#if defined(CLEARCOAT_TINT) && defined(CLEARCOAT_TINT_TEXTURE)\nvec4 clearCoatTintMapData=texture2D(clearCoatTintSampler,vClearCoatTintUV+uvOffset);\n#endif\n#ifdef CLEARCOAT_BUMP\nvec4 clearCoatBumpMapData=texture2D(clearCoatBumpSampler,vClearCoatBumpUV+uvOffset);\n#endif\nclearcoatOut=clearcoatBlock(\nvPositionW\n,geometricNormalW\n,viewDirectionW\n,vClearCoatParams\n#if defined(CLEARCOAT_TEXTURE_ROUGHNESS) && !defined(CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE)\n,clearCoatMapRoughnessData\n#endif\n,specularEnvironmentR0\n#ifdef CLEARCOAT_TEXTURE\n,clearCoatMapData\n#endif\n#ifdef CLEARCOAT_TINT\n,vClearCoatTintParams\n,clearCoatColorAtDistance\n,vClearCoatRefractionParams\n#ifdef CLEARCOAT_TINT_TEXTURE\n,clearCoatTintMapData\n#endif\n#endif\n#ifdef CLEARCOAT_BUMP\n,vClearCoatBumpInfos\n,clearCoatBumpMapData\n,vClearCoatBumpUV\n#if defined(TANGENT) && defined(NORMAL)\n,vTBN\n#else\n,vClearCoatTangentSpaceParams\n#endif\n#ifdef OBJECTSPACE_NORMALMAP\n,normalMatrix\n#endif\n#endif\n#if defined(FORCENORMALFORWARD) && defined(NORMAL)\n,faceNormal\n#endif\n#ifdef REFLECTION\n,vReflectionMicrosurfaceInfos\n,vReflectionInfos\n,vReflectionColor\n,vLightingIntensity\n,reflectionSampler\n#ifndef LODBASEDMICROSFURACE\n,reflectionSamplerLow\n,reflectionSamplerHigh\n#endif\n#ifdef REALTIME_FILTERING\n,vReflectionFilteringInfo\n#endif\n#endif\n#if defined(CLEARCOAT_BUMP) || defined(TWOSIDEDLIGHTING)\n,(gl_FrontFacing ? 1. : -1.)\n#endif\n);\n#else\nclearcoatOut.specularEnvironmentR0=specularEnvironmentR0;\n#endif\n#include<pbrBlockReflectance>\nsubSurfaceOutParams subSurfaceOut;\n#ifdef SUBSURFACE\n#ifdef SS_THICKNESSANDMASK_TEXTURE\nvec4 thicknessMap=texture2D(thicknessSampler,vThicknessUV+uvOffset);\n#endif\n#ifdef SS_REFRACTIONINTENSITY_TEXTURE\nvec4 refractionIntensityMap=texture2D(refractionIntensitySampler,vRefractionIntensityUV+uvOffset);\n#endif\n#ifdef SS_TRANSLUCENCYINTENSITY_TEXTURE\nvec4 translucencyIntensityMap=texture2D(translucencyIntensitySampler,vTranslucencyIntensityUV+uvOffset);\n#endif\n#ifdef SS_TRANSLUCENCYCOLOR_TEXTURE\nvec4 translucencyColorMap=texture2D(translucencyColorSampler,vTranslucencyColorUV+uvOffset);\n#ifdef SS_TRANSLUCENCYCOLOR_TEXTURE_GAMMA\ntranslucencyColorMap=toLinearSpace(translucencyColorMap);\n#endif\n#endif\n#ifdef LEGACY_SPECULAR_ENERGY_CONSERVATION\nvec3 vSpecularEnvironmentReflectance=vec3(max(colorSpecularEnvironmentReflectance.r,max(colorSpecularEnvironmentReflectance.g,colorSpecularEnvironmentReflectance.b)));\n#endif\nsubSurfaceOut=subSurfaceBlock(\nvSubSurfaceIntensity\n,vThicknessParam\n,vTintColor\n,normalW\n#ifdef LEGACY_SPECULAR_ENERGY_CONSERVATION\n,vSpecularEnvironmentReflectance\n#else\n,baseSpecularEnvironmentReflectance\n#endif\n#ifdef SS_THICKNESSANDMASK_TEXTURE\n,thicknessMap\n#endif\n#ifdef SS_REFRACTIONINTENSITY_TEXTURE\n,refractionIntensityMap\n#endif\n#ifdef SS_TRANSLUCENCYINTENSITY_TEXTURE\n,translucencyIntensityMap\n#endif\n#ifdef REFLECTION\n#ifdef SS_TRANSLUCENCY\n,reflectionMatrix\n#ifdef USESPHERICALFROMREFLECTIONMAP\n#if !defined(NORMAL) || !defined(USESPHERICALINVERTEX)\n,reflectionOut.irradianceVector\n#endif\n#if defined(REALTIME_FILTERING)\n,reflectionSampler\n,vReflectionFilteringInfo\n#ifdef IBL_CDF_FILTERING\n,icdfSampler\n#endif\n#endif\n#endif\n#ifdef USEIRRADIANCEMAP\n,irradianceSampler\n#endif\n#endif\n#endif\n#if defined(SS_REFRACTION) || defined(SS_TRANSLUCENCY)\n,surfaceAlbedo\n#endif\n#ifdef SS_REFRACTION\n,vPositionW\n,viewDirectionW\n,view\n,vRefractionInfos\n,refractionMatrix\n,vRefractionMicrosurfaceInfos\n,vLightingIntensity\n#ifdef SS_LINKREFRACTIONTOTRANSPARENCY\n,alpha\n#endif\n#ifdef SS_LODINREFRACTIONALPHA\n,NdotVUnclamped\n#endif\n#ifdef SS_LINEARSPECULARREFRACTION\n,roughness\n#endif\n,alphaG\n,refractionSampler\n#ifndef LODBASEDMICROSFURACE\n,refractionSamplerLow\n,refractionSamplerHigh\n#endif\n#ifdef ANISOTROPIC\n,anisotropicOut\n#endif\n#ifdef REALTIME_FILTERING\n,vRefractionFilteringInfo\n#endif\n#ifdef SS_USE_LOCAL_REFRACTIONMAP_CUBIC\n,vRefractionPosition\n,vRefractionSize\n#endif\n#ifdef SS_DISPERSION\n,dispersion\n#endif\n#endif\n#ifdef SS_TRANSLUCENCY\n,vDiffusionDistance\n,vTranslucencyColor\n#ifdef SS_TRANSLUCENCYCOLOR_TEXTURE\n,translucencyColorMap\n#endif\n#endif\n);\n#ifdef SS_REFRACTION\nsurfaceAlbedo=subSurfaceOut.surfaceAlbedo;\n#ifdef SS_LINKREFRACTIONTOTRANSPARENCY\nalpha=subSurfaceOut.alpha;\n#endif\n#endif\n#else\nsubSurfaceOut.specularEnvironmentReflectance=colorSpecularEnvironmentReflectance;\n#endif\n#include<pbrBlockDirectLighting>\n#include<lightFragment>[0..maxSimultaneousLights]\n#include<pbrBlockFinalLitComponents>\n#endif \n#include<pbrBlockFinalUnlitComponents>\n#define CUSTOM_FRAGMENT_BEFORE_FINALCOLORCOMPOSITION\n#include<pbrBlockFinalColorComposition>\n#include<logDepthFragment>\n#include<fogFragment>(color,finalColor)\n#include<pbrBlockImageProcessing>\n#define CUSTOM_FRAGMENT_BEFORE_FRAGCOLOR\n#ifdef PREPASS\n#include<pbrBlockPrePass>\n#endif\n#if !defined(PREPASS) || defined(WEBGL2)\ngl_FragColor=finalColor;\n#endif\n#include<oitFragment>\n#if ORDER_INDEPENDENT_TRANSPARENCY\nif (fragDepth==nearestDepth) {frontColor.rgb+=finalColor.rgb*finalColor.a*alphaMultiplier;frontColor.a=1.0-alphaMultiplier*(1.0-finalColor.a);} else {backColor+=finalColor;}\n#endif\n#include<pbrDebug>\n#define CUSTOM_FRAGMENT_MAIN_END\n}\n";a.v.ShadersStore.pbrPixelShader||(a.v.ShadersStore.pbrPixelShader=D);const _={name:g,shader:D}}}]);
@@ -1 +0,0 @@
1
- /*! filename:4022 */
@@ -1,2 +0,0 @@
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(72781),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}}}}]);
@@ -1 +0,0 @@
1
- /*! filename:4049 */
@@ -1,2 +0,0 @@
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}}}]);
@@ -1 +0,0 @@
1
- /*! filename:4051 */
@@ -1,2 +0,0 @@
1
- /*! For license information please see 4091.real-time-viewer.umd.min.js.LICENSE.txt */
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 +0,0 @@
1
- /*! filename:4091 */
@@ -1,2 +0,0 @@
1
- /*! For license information please see 410.real-time-viewer.umd.min.js.LICENSE.txt */
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}}}}]);
@@ -1 +0,0 @@
1
- /*! filename:410 */
@@ -1,2 +0,0 @@
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}}}]);
@@ -1 +0,0 @@
1
- /*! filename:4141 */
@@ -1,2 +0,0 @@
1
- /*! For license information please see 4153.real-time-viewer.umd.min.js.LICENSE.txt */
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 mat4 diffuseMatrix;uniform float fFovMultiplier;uniform float pointSize;uniform float shadowLevel;uniform float alpha;uniform vec3 vBackgroundCenter;uniform vec4 vReflectionControl;uniform vec2 projectedGroundInfos;uniform vec2 vReflectionInfos;uniform mat4 reflectionMatrix;uniform vec3 vReflectionMicrosurfaceInfos;};\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#elif defined(CLUSTLIGHT{X})\nvec2 vSliceData;vec2 vSliceRanges[CLUSTLIGHT_SLICES];\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 +0,0 @@
1
- /*! filename:4153 */
@@ -1,2 +0,0 @@
1
- /*! For license information please see 4248.real-time-viewer.umd.min.js.LICENSE.txt */
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}}}]);
@@ -1 +0,0 @@
1
- /*! filename:4248 */
@@ -1,2 +0,0 @@
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)}}]);
@@ -1 +0,0 @@
1
- /*! filename:4358 */
@@ -1,2 +0,0 @@
1
- /*! For license information please see 4378.real-time-viewer.umd.min.js.LICENSE.txt */
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 +0,0 @@
1
- /*! filename:4378 */
@@ -1,2 +0,0 @@
1
- /*! For license information please see 4431.real-time-viewer.umd.min.js.LICENSE.txt */
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);}\nrgb=max(rgb,vec3f(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}}}]);
@@ -1 +0,0 @@
1
- /*! filename:4431 */
@@ -1,2 +0,0 @@
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"}}}}]);
@@ -1 +0,0 @@
1
- /*! filename:4478 */
@@ -1,2 +0,0 @@
1
- /*! For license information please see 4486.real-time-viewer.umd.min.js.LICENSE.txt */
2
- "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[4486],{34486:(e,r,n)=>{n.r(r),n.d(r,{hdrIrradianceFilteringPixelShaderWGSL:()=>u});var i=n(17416);n(22842),n(5442),n(34366),n(58632);const t="hdrIrradianceFilteringPixelShader",a="#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);}";i.v.ShadersStoreWGSL[t]||(i.v.ShadersStoreWGSL[t]=a);const u={name:t,shader:a}}}]);
@@ -1 +0,0 @@
1
- /*! filename:4486 */
@@ -1,2 +0,0 @@
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)}}]);
@@ -1 +0,0 @@
1
- /*! filename:4555 */
@@ -1,2 +0,0 @@
1
- /*! For license information please see 4560.real-time-viewer.umd.min.js.LICENSE.txt */
2
- "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[4560],{94560:(a,e,i)=>{i.r(e),i.d(e,{FlowGraphSetVariableBlock:()=>FlowGraphSetVariableBlock});var r=i(20538),t=i(36442),l=i(39426);class FlowGraphSetVariableBlock extends t.F{constructor(a){if(super(a),!a.variable&&!a.variables)throw new Error("FlowGraphSetVariableBlock: variable/variables is not defined");if(a.variables&&a.variable)throw new Error("FlowGraphSetVariableBlock: variable and variables are both defined");if(a.variables)for(const e of a.variables)this.registerDataInput(e,l.s8);else this.registerDataInput("value",l.s8)}_execute(a,e){if(this.config?.variables)for(const e of this.config.variables)this._saveVariable(a,e);else this._saveVariable(a,this.config?.variable,"value");this.out._activateSignal(a)}_saveVariable(a,e,i){const r=a._getGlobalContextVariable("currentlyRunningAnimationGroups",[]);for(const i of r){const t=a.assetsContext.animationGroups.find((a=>a.uniqueId==i));if(t)for(const l of t.targetedAnimations)if(l.target===a&&l.animation.targetProperty===e){t.stop();const e=r.indexOf(i);e>-1&&r.splice(e,1),a._setGlobalContextVariable("currentlyRunningAnimationGroups",r);break}}const t=this.getDataInput(i||e)?.getValue(a);a.setVariable(e,t)}getClassName(){return"FlowGraphSetVariableBlock"}serialize(a){super.serialize(a),a.config.variable=this.config?.variable}}(0,r.H7)("FlowGraphSetVariableBlock",FlowGraphSetVariableBlock)}}]);
@@ -1 +0,0 @@
1
- /*! filename:4560 */
@@ -1,2 +0,0 @@
1
- /*! For license information please see 4602.real-time-viewer.umd.min.js.LICENSE.txt */
2
- "use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[4602],{76236:(e,n,r)=>{var t=r(17416);const i="fogVertex",o="#ifdef FOG\n#ifdef SCENE_UBO\nvertexOutputs.vFogDistance=(scene.view*worldPos).xyz;\n#else\nvertexOutputs.vFogDistance=(uniforms.view*worldPos).xyz;\n#endif\n#endif\n";t.v.IncludesShadersStoreWGSL[i]||(t.v.IncludesShadersStoreWGSL[i]=o)},15472:(e,n,r)=>{var t=r(17416);const i="fogVertexDeclaration",o="#ifdef FOG\nvarying vFogDistance: vec3f;\n#endif\n";t.v.IncludesShadersStoreWGSL[i]||(t.v.IncludesShadersStoreWGSL[i]=o)},850:(e,n,r)=>{var t=r(17416);const i="vertexColorMixing",o="#if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES)\nvertexOutputs.vColor=vec4f(1.0);\n#ifdef VERTEXCOLOR\n#ifdef VERTEXALPHA\nvertexOutputs.vColor*=vertexInputs.color;\n#else\nvertexOutputs.vColor=vec4f(vertexOutputs.vColor.rgb*vertexInputs.color.rgb,vertexOutputs.vColor.a);\n#endif\n#endif\n#ifdef INSTANCESCOLOR\nvertexOutputs.vColor*=vertexInputs.instanceColor;\n#endif\n#endif\n";t.v.IncludesShadersStoreWGSL[i]||(t.v.IncludesShadersStoreWGSL[i]=o)},84602:(e,n,r)=>{r.r(n),r.d(n,{colorVertexShaderWGSL:()=>d});var t=r(17416);r(97762),r(31990),r(80870),r(15472),r(42724),r(49413),r(58333),r(28439),r(56601),r(76236),r(850);const i="colorVertexShader",o="attribute position: vec3f;\n#ifdef VERTEXCOLOR\nattribute color: vec4f;\n#endif\n#include<bonesDeclaration>\n#include<bakedVertexAnimationDeclaration>\n#include<clipPlaneVertexDeclaration>\n#include<fogVertexDeclaration>\n#ifdef FOG\nuniform view: mat4x4f;\n#endif\n#include<instancesDeclaration>\nuniform viewProjection: mat4x4f;\n#if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES)\nvarying vColor: vec4f;\n#endif\n#define CUSTOM_VERTEX_DEFINITIONS\n@vertex\nfn main(input : VertexInputs)->FragmentInputs {\n#define CUSTOM_VERTEX_MAIN_BEGIN\n#ifdef VERTEXCOLOR\nvar colorUpdated: vec4f=vertexInputs.color;\n#endif\n#include<instancesVertex>\n#include<bonesVertex>\n#include<bakedVertexAnimation>\nvar worldPos: vec4f=finalWorld* vec4f(input.position,1.0);vertexOutputs.position=uniforms.viewProjection*worldPos;\n#include<clipPlaneVertex>\n#include<fogVertex>\n#include<vertexColorMixing>\n#define CUSTOM_VERTEX_MAIN_END\n}";t.v.ShadersStoreWGSL[i]||(t.v.ShadersStoreWGSL[i]=o);const d={name:i,shader:o}}}]);
@@ -1 +0,0 @@
1
- /*! filename:4602 */