@uptimizr/dashboard 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (240) hide show
  1. package/out/404.html +1 -1
  2. package/out/__next.__PAGE__.txt +4 -4
  3. package/out/__next._full.txt +11 -11
  4. package/out/__next._head.txt +4 -4
  5. package/out/__next._index.txt +4 -4
  6. package/out/__next._tree.txt +2 -2
  7. package/out/_next/static/chunks/002cjeoit6-up.js +1 -0
  8. package/out/_next/static/chunks/02n1uiltexy3w.js +1 -0
  9. package/out/_next/static/chunks/03ab2khhe8-x5.js +1 -0
  10. package/out/_next/static/chunks/04_yytpc2paxy.js +1 -0
  11. package/out/_next/static/chunks/06qot1qvlsqaz.js +1 -0
  12. package/out/_next/static/chunks/07eeopuufsqp-.js +1501 -0
  13. package/out/_next/static/chunks/08a5xek662n8n.js +1 -0
  14. package/out/_next/static/chunks/08wuc9--s8zn_.js +1 -0
  15. package/out/_next/static/chunks/0927l-ygd5c8d.js +1 -0
  16. package/out/_next/static/chunks/09510356f0lad.js +1 -0
  17. package/out/_next/static/chunks/0_eu72k69lxj7.js +1 -0
  18. package/out/_next/static/chunks/0beajlqy8p8b5.js +1 -0
  19. package/out/_next/static/chunks/0c83pe1mpx456.js +1 -0
  20. package/out/_next/static/chunks/0echnagbkyx79.js +1198 -0
  21. package/out/_next/static/chunks/0eh1ml86u8dh7.js +1 -0
  22. package/out/_next/static/chunks/0fh-9h9ylxskr.js +674 -0
  23. package/out/_next/static/chunks/0fzmc1up21g1i.js +1 -0
  24. package/out/_next/static/chunks/0g_v2zswo4l6f.js +1 -0
  25. package/out/_next/static/chunks/0grlb9lo8e502.js +1 -0
  26. package/out/_next/static/chunks/0h22pg-0xrxnm.js +1 -0
  27. package/out/_next/static/chunks/0j6p1pmc14t96.js +1 -0
  28. package/out/_next/static/chunks/0j_6dx-sttgsy.js +1 -0
  29. package/out/_next/static/chunks/0j__xaq_8_di1.js +1 -0
  30. package/out/_next/static/chunks/0kfd-cvj5fvtz.js +1 -0
  31. package/out/_next/static/chunks/0o_mp98xzqfyf.js +1 -0
  32. package/out/_next/static/chunks/0otsec99kdkt7.js +213 -0
  33. package/out/_next/static/chunks/0ql-s-tsmel_u.js +151 -0
  34. package/out/_next/static/chunks/0r47gs_e93cka.js +1 -0
  35. package/out/_next/static/chunks/0sqys6o2pbe1q.js +1328 -0
  36. package/out/_next/static/chunks/0titqrn1qmcsv.js +1 -0
  37. package/out/_next/static/chunks/0tnlbw78tgaxp.js +4 -0
  38. package/out/_next/static/chunks/0tw4dyl-cp-hd.js +1 -0
  39. package/out/_next/static/chunks/0vbce-8omgurc.js +1 -0
  40. package/out/_next/static/chunks/0vfsg5byzep_0.js +1 -0
  41. package/out/_next/static/chunks/{0gv7mblzv3dl3.js → 0w8_1yjvol1f0.js} +20 -20
  42. package/out/_next/static/chunks/0xh144a5fz58h.js +1 -0
  43. package/out/_next/static/chunks/0xjltg_pph0c8.js +1 -0
  44. package/out/_next/static/chunks/0yeqgh0dnas8d.js +1 -0
  45. package/out/_next/static/chunks/101-7e_7up7rk.js +1 -0
  46. package/out/_next/static/chunks/128e51hj_04r0.js +1 -0
  47. package/out/_next/static/chunks/{10fnxpln_5xfd.js → 12kv810lohbsx.js} +2 -2
  48. package/out/_next/static/chunks/137xbvd4nd41j.js +3 -0
  49. package/out/_next/static/chunks/14bws-suyy5zu.js +1 -0
  50. package/out/_next/static/chunks/14ggsmqwej_tt.js +1656 -0
  51. package/out/_next/static/chunks/17genz6pkmty_.js +1 -0
  52. package/out/_next/static/chunks/17xd8hnazzr0g.js +1454 -0
  53. package/out/_next/static/chunks/18dczy9ylt2s_.js +1 -0
  54. package/out/_next/static/chunks/18xs_kvsaolb0.js +1 -0
  55. package/out/_next/static/chunks/19016f8-ry0z6.js +1 -0
  56. package/out/_next/static/chunks/1_6oejyxj39li.js +1 -0
  57. package/out/_next/static/chunks/1_aon8nz9p1fr.js +1 -0
  58. package/out/_next/static/chunks/1_qzlkuxukhpq.js +779 -0
  59. package/out/_next/static/chunks/1akaj5rhgitn3.js +1 -0
  60. package/out/_next/static/chunks/1bvl1ws7b_3gn.js +1 -0
  61. package/out/_next/static/chunks/1cdbk6kxyr1c9.js +1 -0
  62. package/out/_next/static/chunks/1fbjkk55uu4_g.js +1 -0
  63. package/out/_next/static/chunks/1furcfsgrw_3g.js +1 -0
  64. package/out/_next/static/chunks/1g0-f1g3gn_rs.js +1 -0
  65. package/out/_next/static/chunks/1g7emwu85bifo.js +557 -0
  66. package/out/_next/static/chunks/{37vzwr3ciejf1.js → 1gs-5722l4u59.js} +1 -1
  67. package/out/_next/static/chunks/1gt4kh0_xmigy.js +1 -0
  68. package/out/_next/static/chunks/1h8xzuuhhglu9.js +1 -0
  69. package/out/_next/static/chunks/1hatz-jlztrn0.js +1 -0
  70. package/out/_next/static/chunks/1iioifo7i0t0_.js +1 -0
  71. package/out/_next/static/chunks/{0impkpmxx3ttp.js → 1iiz7jqgj20z0.js} +1 -1
  72. package/out/_next/static/chunks/1kujmd5n0j9nk.js +1 -0
  73. package/out/_next/static/chunks/{2kazjq29jeamx.js → 1ltux4lwz7muf.js} +160 -372
  74. package/out/_next/static/chunks/1m_buecgcq67j.js +740 -0
  75. package/out/_next/static/chunks/1n9sy0yt5d2vq.js +1 -0
  76. package/out/_next/static/chunks/1p1gz6dseck--.js +1 -0
  77. package/out/_next/static/chunks/1p1xtsfwvpuqo.js +1 -0
  78. package/out/_next/static/chunks/1p8f6okk2ewbz.js +1 -0
  79. package/out/_next/static/chunks/1qg_etglhvp9h.js +740 -0
  80. package/out/_next/static/chunks/1th_t5ujeqlkf.js +1 -0
  81. package/out/_next/static/chunks/1thr-mdzbu96v.js +1 -0
  82. package/out/_next/static/chunks/1tta1a064979p.js +1 -0
  83. package/out/_next/static/chunks/1u_riwm0nfww7.js +1 -0
  84. package/out/_next/static/chunks/1ua15kzid0_8p.js +2560 -0
  85. package/out/_next/static/chunks/1uu-rt_8p1edp.js +2712 -0
  86. package/out/_next/static/chunks/1uu93wuxigx4k.js +1 -0
  87. package/out/_next/static/chunks/{1flb8adpj6_2o.js → 1xpwp4m1tqugp.js} +1 -1
  88. package/out/_next/static/chunks/1ynju1jqfrcv0.js +1 -0
  89. package/out/_next/static/chunks/1zfojlgb15okk.js +1 -0
  90. package/out/_next/static/chunks/1zj8x5wbgnzz-.js +1 -0
  91. package/out/_next/static/chunks/1zl6t15gh34nn.js +1 -0
  92. package/out/_next/static/chunks/{1thjncpj7u6pq.js → 223vrr_4sfhsj.js} +1 -1
  93. package/out/_next/static/chunks/22cr2b04btguf.js +1 -0
  94. package/out/_next/static/chunks/242xhzxxetctz.js +1 -0
  95. package/out/_next/static/chunks/24essz5mmvx-6.js +1 -0
  96. package/out/_next/static/chunks/256k1jw1m--l7.js +146 -0
  97. package/out/_next/static/chunks/259obyrpxcv6r.js +1 -0
  98. package/out/_next/static/chunks/26v9yqicofqba.js +1 -0
  99. package/out/_next/static/chunks/290d93hmm_e8b.js +1 -0
  100. package/out/_next/static/chunks/2_2fk7iddrs43.js +1 -0
  101. package/out/_next/static/chunks/{00k_j_r7bv_eb.js → 2bjlls8-qe05r.js} +9 -9
  102. package/out/_next/static/chunks/2ckd7f1wbfod-.js +1 -0
  103. package/out/_next/static/chunks/{163fa70v4mgxj.js → 2d6hru4qo23tt.js} +1 -1
  104. package/out/_next/static/chunks/2ejvntxtvf5o9.js +1 -0
  105. package/out/_next/static/chunks/2f7_3tzf7xhps.js +1 -0
  106. package/out/_next/static/chunks/2gxd_o1g89_bv.js +1 -0
  107. package/out/_next/static/chunks/2hd2txb4-m9k1.js +1 -0
  108. package/out/_next/static/chunks/2hpxou_cnp4f_.js +1 -0
  109. package/out/_next/static/chunks/2izioctrfc0s5.js +1 -0
  110. package/out/_next/static/chunks/2jhnk4h4n0udv.js +1 -0
  111. package/out/_next/static/chunks/2jpkhkk9zi8-f.js +1 -0
  112. package/out/_next/static/chunks/2kpet_l1kq2sx.js +1 -0
  113. package/out/_next/static/chunks/2mdbvf1b5h00_.css +3 -0
  114. package/out/_next/static/chunks/2nck5w4c7leb7.js +1 -0
  115. package/out/_next/static/chunks/2our10fwtj87e.js +1 -0
  116. package/out/_next/static/chunks/2qq3uzsbiicw3.js +1194 -0
  117. package/out/_next/static/chunks/2qqqpu0ahfdda.js +1 -0
  118. package/out/_next/static/chunks/2u-f7mmxvk8wj.js +1 -0
  119. package/out/_next/static/chunks/2ue1wo4ryk87z.js +1 -0
  120. package/out/_next/static/chunks/2uk-vwlxe9-xr.js +1 -0
  121. package/out/_next/static/chunks/2ur5-lxdvv1jm.js +1 -0
  122. package/out/_next/static/chunks/2veqsohwfhfqc.js +1 -0
  123. package/out/_next/static/chunks/2vqlv9wnewhu9.js +1 -0
  124. package/out/_next/static/chunks/{1zvc1tv--w8nn.js → 2wzshintp5lf8.js} +1 -1
  125. package/out/_next/static/chunks/2x-00glogc485.js +1 -0
  126. package/out/_next/static/chunks/2yfxy0f5fqs4o.js +1 -0
  127. package/out/_next/static/chunks/2z88mt3ixktu3.js +1 -0
  128. package/out/_next/static/chunks/2z_jn9ud28fk7.js +1 -0
  129. package/out/_next/static/chunks/3-eswqjobiqk1.js +1 -0
  130. package/out/_next/static/chunks/30-tbi7pys6fp.js +4 -0
  131. package/out/_next/static/chunks/30c-nsedy_ce0.js +1 -0
  132. package/out/_next/static/chunks/31u5lbu1vxznh.js +1 -0
  133. package/out/_next/static/chunks/{2feca0xcipcyt.js → 32ahba5ezp467.js} +156 -156
  134. package/out/_next/static/chunks/337hn35kts7ud.js +1 -0
  135. package/out/_next/static/chunks/33dgpebv-tf73.js +1 -0
  136. package/out/_next/static/chunks/36jkdhq6kb-cf.js +1 -0
  137. package/out/_next/static/chunks/37epa8fz59vba.js +1166 -0
  138. package/out/_next/static/chunks/3833xfnz0a-ub.js +1 -0
  139. package/out/_next/static/chunks/38awrh_qxn22k.js +1 -0
  140. package/out/_next/static/chunks/{0wrm9jr-9bw0e.js → 38x3c1ra5slhe.js} +383 -913
  141. package/out/_next/static/chunks/39idqlqlcp5b9.js +1 -0
  142. package/out/_next/static/chunks/{2a3spdq-m8drh.js → 3_gku1pwluoo0.js} +1 -1
  143. package/out/_next/static/chunks/3_mu-4rdjajna.js +1450 -0
  144. package/out/_next/static/chunks/3coacc4-g-g5c.js +1 -0
  145. package/out/_next/static/chunks/3e00fzdfkclzq.js +1 -0
  146. package/out/_next/static/chunks/3e8fmlq0k5wkg.js +1 -0
  147. package/out/_next/static/chunks/3e9tzyrt4_98z.js +1 -0
  148. package/out/_next/static/chunks/3edelqkq92pil.js +1 -0
  149. package/out/_next/static/chunks/3figbil1t4ssj.js +593 -0
  150. package/out/_next/static/chunks/3gimb3z_mteou.js +1 -0
  151. package/out/_next/static/chunks/{2p2vv6cc9i-3q.js → 3idaz_s77e-j_.js} +9 -9
  152. package/out/_next/static/chunks/3j-4wuhs5weba.js +1 -0
  153. package/out/_next/static/chunks/3jjfnwvybayy7.js +1 -0
  154. package/out/_next/static/chunks/3jwm5dfk_78gc.js +1 -0
  155. package/out/_next/static/chunks/3k9d4ylc3li2t.js +1352 -0
  156. package/out/_next/static/chunks/3l3_0ack3gy4k.js +1 -0
  157. package/out/_next/static/chunks/3lwhs5ja7tun3.js +1 -0
  158. package/out/_next/static/chunks/3m6nmp2dca6un.js +1342 -0
  159. package/out/_next/static/chunks/3mbnfpufs2-7e.js +7 -0
  160. package/out/_next/static/chunks/3mcd08gmt038z.js +1 -0
  161. package/out/_next/static/chunks/3mt5th7b1i_u9.js +1 -0
  162. package/out/_next/static/chunks/3ne77mjdz2y7o.js +1 -0
  163. package/out/_next/static/chunks/3puhrqtujktyv.js +1 -0
  164. package/out/_next/static/chunks/3rdifucupcgkg.js +1 -0
  165. package/out/_next/static/chunks/3riekaxl3uxfb.js +1195 -0
  166. package/out/_next/static/chunks/3sdoskq_buttj.js +1 -0
  167. package/out/_next/static/chunks/3tg-ma9tv9xu4.js +1 -0
  168. package/out/_next/static/chunks/3tm-pqpmq_ppw.js +1 -0
  169. package/out/_next/static/chunks/3w9go565cjhq3.js +1636 -0
  170. package/out/_next/static/chunks/3wi9gzq2mtr_q.js +8 -0
  171. package/out/_next/static/chunks/3xagd_2_9zft2.js +1 -0
  172. package/out/_next/static/chunks/3xsq_anpad-fb.js +1 -0
  173. package/out/_next/static/chunks/3ycv2qq7vpbua.js +1 -0
  174. package/out/_next/static/chunks/3z84au-mitjjw.js +1 -0
  175. package/out/_next/static/chunks/4030dhur2h70-.js +1 -0
  176. package/out/_next/static/chunks/40ffffml4h_3r.js +4 -0
  177. package/out/_next/static/chunks/{3-shckrcpvbxu.js → 41wt50z9tx9cx.js} +108 -711
  178. package/out/_next/static/chunks/431slrqh0wa0g.js +1 -0
  179. package/out/_next/static/chunks/43s_lbd1i2krj.js +1 -0
  180. package/out/_next/static/chunks/{0-2y-_oomza2l.js → 44nxswtahaq4w.js} +18 -18
  181. package/out/_next/static/chunks/45bwefvdpztfs.js +1 -0
  182. package/out/_next/static/chunks/{turbopack-0sgd6pfbe1fy6.js → turbopack-19105pdhzxp1x.js} +1 -1
  183. package/out/_not-found/__next._full.txt +9 -9
  184. package/out/_not-found/__next._head.txt +4 -4
  185. package/out/_not-found/__next._index.txt +4 -4
  186. package/out/_not-found/__next._not-found.__PAGE__.txt +2 -2
  187. package/out/_not-found/__next._not-found.txt +3 -3
  188. package/out/_not-found/__next._tree.txt +2 -2
  189. package/out/_not-found.html +1 -1
  190. package/out/_not-found.txt +9 -9
  191. package/out/index.html +1 -1
  192. package/out/index.txt +11 -11
  193. package/package.json +5 -4
  194. package/out/_next/static/chunks/068j6934u8j16.js +0 -1
  195. package/out/_next/static/chunks/09e4adtr6w0xe.js +0 -1
  196. package/out/_next/static/chunks/0_rf76jneiwal.js +0 -176
  197. package/out/_next/static/chunks/0aznt7717miff.js +0 -1
  198. package/out/_next/static/chunks/0cu-q5q3a7uf3.js +0 -1
  199. package/out/_next/static/chunks/0fskcfh9vbhtv.js +0 -1
  200. package/out/_next/static/chunks/0gg-ii7i6d_p6.js +0 -1
  201. package/out/_next/static/chunks/0tx1j_ghpz7rc.css +0 -3
  202. package/out/_next/static/chunks/0ufbyo1x3qkmo.js +0 -1
  203. package/out/_next/static/chunks/0wwcfw8i3j_zx.js +0 -1
  204. package/out/_next/static/chunks/0wwkrsvxwi57d.js +0 -1
  205. package/out/_next/static/chunks/0ys9-ozuluawt.js +0 -1
  206. package/out/_next/static/chunks/1-61zh4waha61.js +0 -1
  207. package/out/_next/static/chunks/10r_824wzt8hj.js +0 -1
  208. package/out/_next/static/chunks/123xxske5c9na.js +0 -1
  209. package/out/_next/static/chunks/13isnf0--pmx1.js +0 -1
  210. package/out/_next/static/chunks/157d9euci08yu.js +0 -1
  211. package/out/_next/static/chunks/18u58lorfahxi.js +0 -4
  212. package/out/_next/static/chunks/1_aahautsz2v_.js +0 -1
  213. package/out/_next/static/chunks/1o1d0p-v1z8ty.js +0 -1
  214. package/out/_next/static/chunks/1vdjn0pkoyypn.js +0 -1
  215. package/out/_next/static/chunks/1yehxf-fmeicg.js +0 -1
  216. package/out/_next/static/chunks/1zx2q-r32thv1.js +0 -4
  217. package/out/_next/static/chunks/2-sjjedfr0kfq.js +0 -1
  218. package/out/_next/static/chunks/25b9x-li-tvk2.js +0 -1
  219. package/out/_next/static/chunks/2aelw3far6rii.js +0 -1
  220. package/out/_next/static/chunks/2aor7m-wbis85.js +0 -1
  221. package/out/_next/static/chunks/2clzipqap01hp.js +0 -1
  222. package/out/_next/static/chunks/2fh-_9b6tqhvb.js +0 -1
  223. package/out/_next/static/chunks/2g5gecypj0rqe.js +0 -1
  224. package/out/_next/static/chunks/2szdcpl41-kzv.js +0 -1
  225. package/out/_next/static/chunks/2u6shh3oeycm-.js +0 -1
  226. package/out/_next/static/chunks/2unhhuv0arlcv.js +0 -1
  227. package/out/_next/static/chunks/2z5eqx5do5std.js +0 -1
  228. package/out/_next/static/chunks/310uz81hnnzsu.js +0 -1
  229. package/out/_next/static/chunks/3aqbf_wkg2sih.js +0 -3
  230. package/out/_next/static/chunks/3i3gbhccmhu7j.js +0 -210
  231. package/out/_next/static/chunks/3mqy-84_ul3t2.js +0 -1
  232. package/out/_next/static/chunks/3nz-dh9d7cehk.js +0 -1
  233. package/out/_next/static/chunks/3pufs8g4ui943.js +0 -1
  234. package/out/_next/static/chunks/3t06schbtqonl.js +0 -1
  235. package/out/_next/static/chunks/3v3-7fio3nw_t.js +0 -1
  236. package/out/_next/static/chunks/3v5ha25nxo43j.js +0 -1
  237. package/out/_next/static/chunks/3zskk1hxu3-_o.js +0 -1
  238. /package/out/_next/static/{vHD3x58R_2B6QWAhZXCg7 → M9ZSIaKJeBgkjz1qktYio}/_buildManifest.js +0 -0
  239. /package/out/_next/static/{vHD3x58R_2B6QWAhZXCg7 → M9ZSIaKJeBgkjz1qktYio}/_clientMiddlewareManifest.js +0 -0
  240. /package/out/_next/static/{vHD3x58R_2B6QWAhZXCg7 → M9ZSIaKJeBgkjz1qktYio}/_ssgManifest.js +0 -0
@@ -0,0 +1,1194 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,63539,80713,149,e=>{"use strict";var r=e.i(12423);let i="bumpFragmentMainFunctions",o=`#ifndef TEXRD_DEFINED
2
+ #define TEXRD(s,uv) texture2D(s,uv)
3
+ #define TEXRD_DEFINED
4
+ #endif
5
+ #if defined(BUMP) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) || defined(DETAIL)
6
+ #if defined(TANGENT) && defined(NORMAL)
7
+ varying mat3 vTBN;
8
+ #endif
9
+ #ifdef OBJECTSPACE_NORMALMAP
10
+ uniform mat4 normalMatrix;
11
+ #if defined(WEBGL2) || defined(WEBGPU)
12
+ mat4 toNormalMatrix(mat4 wMatrix)
13
+ {mat4 ret=inverse(wMatrix);ret=transpose(ret);ret[0][3]=0.;ret[1][3]=0.;ret[2][3]=0.;ret[3]=vec4(0.,0.,0.,1.);return ret;}
14
+ #else
15
+ mat4 toNormalMatrix(mat4 m)
16
+ {float
17
+ a00=m[0][0],a01=m[0][1],a02=m[0][2],a03=m[0][3],
18
+ a10=m[1][0],a11=m[1][1],a12=m[1][2],a13=m[1][3],
19
+ a20=m[2][0],a21=m[2][1],a22=m[2][2],a23=m[2][3],
20
+ a30=m[3][0],a31=m[3][1],a32=m[3][2],a33=m[3][3],
21
+ b00=a00*a11-a01*a10,
22
+ b01=a00*a12-a02*a10,
23
+ b02=a00*a13-a03*a10,
24
+ b03=a01*a12-a02*a11,
25
+ b04=a01*a13-a03*a11,
26
+ b05=a02*a13-a03*a12,
27
+ b06=a20*a31-a21*a30,
28
+ b07=a20*a32-a22*a30,
29
+ b08=a20*a33-a23*a30,
30
+ b09=a21*a32-a22*a31,
31
+ b10=a21*a33-a23*a31,
32
+ b11=a22*a33-a23*a32,
33
+ det=b00*b11-b01*b10+b02*b09+b03*b08-b04*b07+b05*b06;mat4 mi=mat4(
34
+ a11*b11-a12*b10+a13*b09,
35
+ a02*b10-a01*b11-a03*b09,
36
+ a31*b05-a32*b04+a33*b03,
37
+ a22*b04-a21*b05-a23*b03,
38
+ a12*b08-a10*b11-a13*b07,
39
+ a00*b11-a02*b08+a03*b07,
40
+ a32*b02-a30*b05-a33*b01,
41
+ a20*b05-a22*b02+a23*b01,
42
+ a10*b10-a11*b08+a13*b06,
43
+ a01*b08-a00*b10-a03*b06,
44
+ a30*b04-a31*b02+a33*b00,
45
+ a21*b02-a20*b04-a23*b00,
46
+ a11*b07-a10*b09-a12*b06,
47
+ a00*b09-a01*b07+a02*b06,
48
+ a31*b01-a30*b03-a32*b00,
49
+ a20*b03-a21*b01+a22*b00)/det;return mat4(mi[0][0],mi[1][0],mi[2][0],mi[3][0],
50
+ mi[0][1],mi[1][1],mi[2][1],mi[3][1],
51
+ mi[0][2],mi[1][2],mi[2][2],mi[3][2],
52
+ mi[0][3],mi[1][3],mi[2][3],mi[3][3]);}
53
+ #endif
54
+ #endif
55
+ vec3 perturbNormalBase(mat3 cotangentFrame,vec3 normal,float scale)
56
+ {
57
+ #ifdef NORMALXYSCALE
58
+ normal=normalize(normal*vec3(scale,scale,1.0));
59
+ #endif
60
+ return normalize(cotangentFrame*normal);}
61
+ vec3 perturbNormal(mat3 cotangentFrame,vec3 textureSample,float scale)
62
+ {return perturbNormalBase(cotangentFrame,textureSample*2.0-1.0,scale);}
63
+ mat3 cotangent_frame(vec3 normal,vec3 p,vec2 uv,vec2 tangentSpaceParams)
64
+ {vec3 dp1=dFdx(p);vec3 dp2=dFdy(p);vec2 duv1=dFdx(uv);vec2 duv2=dFdy(uv);vec3 dp2perp=cross(dp2,normal);vec3 dp1perp=cross(normal,dp1);vec3 tangent=dp2perp*duv1.x+dp1perp*duv2.x;vec3 bitangent=dp2perp*duv1.y+dp1perp*duv2.y;tangent*=tangentSpaceParams.x;bitangent*=tangentSpaceParams.y;float det=max(dot(tangent,tangent),dot(bitangent,bitangent));float invmax=det==0.0 ? 0.0 : inversesqrt(det);return mat3(tangent*invmax,bitangent*invmax,normal);}
65
+ #endif
66
+ `;r.ShaderStore.IncludesShadersStore[i]||(r.ShaderStore.IncludesShadersStore[i]=o),e.s(["bumpFragmentMainFunctions",0,{name:i,shader:o}],63539),e.i(80825);let a="bumpFragmentFunctions",n=`#if defined(BUMP)
67
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,BUMP,_VARYINGNAME_,Bump,_SAMPLERNAME_,bump)
68
+ #endif
69
+ #if defined(DETAIL)
70
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,DETAIL,_VARYINGNAME_,Detail,_SAMPLERNAME_,detail)
71
+ #endif
72
+ #if defined(BUMP) && defined(PARALLAX)
73
+ const float minSamples=4.;const float maxSamples=15.;const int iMaxSamples=15;vec2 parallaxOcclusion(vec3 vViewDirCoT,vec3 vNormalCoT,vec2 texCoord,float parallaxScale) {float parallaxLimit=length(vViewDirCoT.xy)/vViewDirCoT.z;parallaxLimit*=parallaxScale;vec2 vOffsetDir=normalize(vViewDirCoT.xy);vec2 vMaxOffset=vOffsetDir*parallaxLimit;float numSamples=maxSamples+(dot(vViewDirCoT,vNormalCoT)*(minSamples-maxSamples));float stepSize=1.0/numSamples;float currRayHeight=1.0;vec2 vCurrOffset=vec2(0,0);vec2 vLastOffset=vec2(0,0);float lastSampledHeight=1.0;float currSampledHeight=1.0;bool keepWorking=true;for (int i=0; i<iMaxSamples; i++)
74
+ {currSampledHeight=texture2D(bumpSampler,texCoord+vCurrOffset).w;if (!keepWorking)
75
+ {}
76
+ else if (currSampledHeight>currRayHeight)
77
+ {float delta1=currSampledHeight-currRayHeight;float delta2=(currRayHeight+stepSize)-lastSampledHeight;float ratio=delta1/(delta1+delta2);vCurrOffset=(ratio)* vLastOffset+(1.0-ratio)*vCurrOffset;keepWorking=false;}
78
+ else
79
+ {currRayHeight-=stepSize;vLastOffset=vCurrOffset;
80
+ #ifdef PARALLAX_RHS
81
+ vCurrOffset-=stepSize*vMaxOffset;
82
+ #else
83
+ vCurrOffset+=stepSize*vMaxOffset;
84
+ #endif
85
+ lastSampledHeight=currSampledHeight;}}
86
+ return vCurrOffset;}
87
+ vec2 parallaxOffset(vec3 viewDir,float heightScale)
88
+ {float height=texture2D(bumpSampler,vBumpUV).w;vec2 texCoordOffset=heightScale*viewDir.xy*height;
89
+ #ifdef PARALLAX_RHS
90
+ return texCoordOffset;
91
+ #else
92
+ return -texCoordOffset;
93
+ #endif
94
+ }
95
+ #endif
96
+ `;r.ShaderStore.IncludesShadersStore[a]||(r.ShaderStore.IncludesShadersStore[a]=n),e.s(["bumpFragmentFunctions",0,{name:a,shader:n}],80713);let t="bumpFragment",c=`vec2 uvOffset=vec2(0.0,0.0);
97
+ #if defined(BUMP) || defined(PARALLAX) || defined(DETAIL)
98
+ #ifdef NORMALXYSCALE
99
+ float normalScale=1.0;
100
+ #elif defined(BUMP)
101
+ float normalScale=vBumpInfos.y;
102
+ #else
103
+ float normalScale=1.0;
104
+ #endif
105
+ #if defined(TANGENT) && defined(NORMAL)
106
+ mat3 TBN=vTBN;
107
+ #elif defined(BUMP)
108
+ vec2 TBNUV=gl_FrontFacing ? vBumpUV : -vBumpUV;mat3 TBN=cotangent_frame(normalW*normalScale,vPositionW,TBNUV,vTangentSpaceParams);
109
+ #else
110
+ vec2 TBNUV=gl_FrontFacing ? vDetailUV : -vDetailUV;mat3 TBN=cotangent_frame(normalW*normalScale,vPositionW,TBNUV,vec2(1.,1.));
111
+ #endif
112
+ #elif defined(ANISOTROPIC)
113
+ #if defined(TANGENT) && defined(NORMAL)
114
+ mat3 TBN=vTBN;
115
+ #else
116
+ vec2 TBNUV=gl_FrontFacing ? vMainUV1 : -vMainUV1;mat3 TBN=cotangent_frame(normalW,vPositionW,TBNUV,vec2(1.,1.));
117
+ #endif
118
+ #endif
119
+ #ifdef PARALLAX
120
+ mat3 invTBN=transposeMat3(TBN);
121
+ #ifdef PARALLAXOCCLUSION
122
+ uvOffset=parallaxOcclusion(invTBN*-viewDirectionW,invTBN*normalW,vBumpUV,vBumpInfos.z);
123
+ #else
124
+ uvOffset=parallaxOffset(invTBN*viewDirectionW,vBumpInfos.z);
125
+ #endif
126
+ #endif
127
+ #ifdef DETAIL
128
+ vec4 detailColor=texture2D(detailSampler,vDetailUV+uvOffset);vec2 detailNormalRG=detailColor.wy*2.0-1.0;float detailNormalB=sqrt(1.-saturate(dot(detailNormalRG,detailNormalRG)));vec3 detailNormal=vec3(detailNormalRG,detailNormalB);
129
+ #endif
130
+ #ifdef BUMP
131
+ #ifdef OBJECTSPACE_NORMALMAP
132
+ #define CUSTOM_FRAGMENT_BUMP_FRAGMENT
133
+ normalW=normalize(TEXRD(bumpSampler,vBumpUV).xyz *2.0-1.0);normalW=normalize(mat3(normalMatrix)*normalW);
134
+ #elif !defined(DETAIL)
135
+ normalW=perturbNormal(TBN,TEXRD(bumpSampler,vBumpUV+uvOffset).xyz,vBumpInfos.y);
136
+ #else
137
+ vec3 bumpNormal=TEXRD(bumpSampler,vBumpUV+uvOffset).xyz*2.0-1.0;
138
+ #if DETAIL_NORMALBLENDMETHOD==0
139
+ detailNormal.xy*=vDetailInfos.z;vec3 blendedNormal=normalize(vec3(bumpNormal.xy+detailNormal.xy,bumpNormal.z*detailNormal.z));
140
+ #elif DETAIL_NORMALBLENDMETHOD==1
141
+ detailNormal.xy*=vDetailInfos.z;bumpNormal+=vec3(0.0,0.0,1.0);detailNormal*=vec3(-1.0,-1.0,1.0);vec3 blendedNormal=bumpNormal*dot(bumpNormal,detailNormal)/bumpNormal.z-detailNormal;
142
+ #endif
143
+ normalW=perturbNormalBase(TBN,blendedNormal,vBumpInfos.y);
144
+ #endif
145
+ #elif defined(DETAIL)
146
+ detailNormal.xy*=vDetailInfos.z;normalW=perturbNormalBase(TBN,detailNormal,vDetailInfos.z);
147
+ #endif
148
+ `;r.ShaderStore.IncludesShadersStore[t]||(r.ShaderStore.IncludesShadersStore[t]=c),e.s(["bumpFragment",0,{name:t,shader:c}],149)},65296,e=>{"use strict";var r=e.i(12423);let i="helperFunctions",o=`const float PI=3.1415926535897932384626433832795;const float TWO_PI=6.283185307179586;const float HALF_PI=1.5707963267948966;const float RECIPROCAL_PI=0.3183098861837907;const float RECIPROCAL_PI2=0.15915494309189535;const float RECIPROCAL_PI4=0.07957747154594767;const float HALF_MIN=5.96046448e-08;
149
+ const float LinearEncodePowerApprox=2.2;const float GammaEncodePowerApprox=1.0/LinearEncodePowerApprox;const vec3 LuminanceEncodeApprox=vec3(0.2126,0.7152,0.0722);const float Epsilon=0.0000001;
150
+ #define saturate(x) clamp(x,0.0,1.0)
151
+ #define absEps(x) abs(x)+Epsilon
152
+ #define maxEps(x) max(x,Epsilon)
153
+ #define saturateEps(x) clamp(x,Epsilon,1.0)
154
+ mat3 transposeMat3(mat3 inMatrix) {vec3 i0=inMatrix[0];vec3 i1=inMatrix[1];vec3 i2=inMatrix[2];mat3 outMatrix=mat3(
155
+ vec3(i0.x,i1.x,i2.x),
156
+ vec3(i0.y,i1.y,i2.y),
157
+ vec3(i0.z,i1.z,i2.z)
158
+ );return outMatrix;}
159
+ mat3 inverseMat3(mat3 inMatrix) {float a00=inMatrix[0][0],a01=inMatrix[0][1],a02=inMatrix[0][2];float a10=inMatrix[1][0],a11=inMatrix[1][1],a12=inMatrix[1][2];float a20=inMatrix[2][0],a21=inMatrix[2][1],a22=inMatrix[2][2];float b01=a22*a11-a12*a21;float b11=-a22*a10+a12*a20;float b21=a21*a10-a11*a20;float det=a00*b01+a01*b11+a02*b21;return mat3(b01,(-a22*a01+a02*a21),(a12*a01-a02*a11),
160
+ b11,(a22*a00-a02*a20),(-a12*a00+a02*a10),
161
+ b21,(-a21*a00+a01*a20),(a11*a00-a01*a10))/det;}
162
+ #if USE_EXACT_SRGB_CONVERSIONS
163
+ vec3 toLinearSpaceExact(vec3 color)
164
+ {vec3 nearZeroSection=0.0773993808*color;vec3 remainingSection=pow(0.947867299*(color+vec3(0.055)),vec3(2.4));
165
+ #if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)
166
+ return mix(remainingSection,nearZeroSection,lessThanEqual(color,vec3(0.04045)));
167
+ #else
168
+ return
169
+ vec3(
170
+ color.r<=0.04045 ? nearZeroSection.r : remainingSection.r,
171
+ color.g<=0.04045 ? nearZeroSection.g : remainingSection.g,
172
+ color.b<=0.04045 ? nearZeroSection.b : remainingSection.b);
173
+ #endif
174
+ }
175
+ vec3 toGammaSpaceExact(vec3 color)
176
+ {vec3 nearZeroSection=12.92*color;vec3 remainingSection=1.055*pow(color,vec3(0.41666))-vec3(0.055);
177
+ #if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)
178
+ return mix(remainingSection,nearZeroSection,lessThanEqual(color,vec3(0.0031308)));
179
+ #else
180
+ return
181
+ vec3(
182
+ color.r<=0.0031308 ? nearZeroSection.r : remainingSection.r,
183
+ color.g<=0.0031308 ? nearZeroSection.g : remainingSection.g,
184
+ color.b<=0.0031308 ? nearZeroSection.b : remainingSection.b);
185
+ #endif
186
+ }
187
+ #endif
188
+ float toLinearSpace(float color)
189
+ {
190
+ #if USE_EXACT_SRGB_CONVERSIONS
191
+ float nearZeroSection=0.0773993808*color;float remainingSection=pow(0.947867299*(color+0.055),2.4);return color<=0.04045 ? nearZeroSection : remainingSection;
192
+ #else
193
+ return pow(color,LinearEncodePowerApprox);
194
+ #endif
195
+ }
196
+ vec3 toLinearSpace(vec3 color)
197
+ {
198
+ #if USE_EXACT_SRGB_CONVERSIONS
199
+ return toLinearSpaceExact(color);
200
+ #else
201
+ return pow(color,vec3(LinearEncodePowerApprox));
202
+ #endif
203
+ }
204
+ vec4 toLinearSpace(vec4 color)
205
+ {
206
+ #if USE_EXACT_SRGB_CONVERSIONS
207
+ return vec4(toLinearSpaceExact(color.rgb),color.a);
208
+ #else
209
+ return vec4(pow(color.rgb,vec3(LinearEncodePowerApprox)),color.a);
210
+ #endif
211
+ }
212
+ float toGammaSpace(float color)
213
+ {
214
+ #if USE_EXACT_SRGB_CONVERSIONS
215
+ float nearZeroSection=12.92*color;float remainingSection=1.055*pow(color,0.41666)-0.055;return color<=0.0031308 ? nearZeroSection : remainingSection;
216
+ #else
217
+ return pow(color,GammaEncodePowerApprox);
218
+ #endif
219
+ }
220
+ vec3 toGammaSpace(vec3 color)
221
+ {
222
+ #if USE_EXACT_SRGB_CONVERSIONS
223
+ return toGammaSpaceExact(color);
224
+ #else
225
+ return pow(color,vec3(GammaEncodePowerApprox));
226
+ #endif
227
+ }
228
+ vec4 toGammaSpace(vec4 color)
229
+ {
230
+ #if USE_EXACT_SRGB_CONVERSIONS
231
+ return vec4(toGammaSpaceExact(color.rgb),color.a);
232
+ #else
233
+ return vec4(pow(color.rgb,vec3(GammaEncodePowerApprox)),color.a);
234
+ #endif
235
+ }
236
+ float square(float value)
237
+ {return value*value;}
238
+ vec3 square(vec3 value)
239
+ {return value*value;}
240
+ float pow5(float value) {float sq=value*value;return sq*sq*value;}
241
+ vec3 double_refract(vec3 I,vec3 N,float eta) {vec3 Tfront=refract(I,N,1.0/eta);vec3 Nback=normalize(reflect(N,Tfront));return refract(Tfront,-Nback,eta);}
242
+ float getLuminanceUnclamped(vec3 color)
243
+ {return dot(color,LuminanceEncodeApprox);}
244
+ float getLuminance(vec3 color)
245
+ {return saturate(getLuminanceUnclamped(color));}
246
+ float getRand(vec2 seed) {return fract(sin(dot(seed.xy ,vec2(12.9898,78.233)))*43758.5453);}
247
+ float dither(vec2 seed,float varianceAmount) {float rand=getRand(seed);float normVariance=varianceAmount/255.0;float dither=mix(-normVariance,normVariance,rand);return dither;}
248
+ const float rgbdMaxRange=255.;vec4 toRGBD(vec3 color) {float maxRGB=maxEps(max(color.r,max(color.g,color.b)));float D =max(rgbdMaxRange/maxRGB,1.);D =saturate(floor(D)/255.);vec3 rgb=color.rgb*D;rgb=toGammaSpace(rgb);return vec4(saturate(rgb),D);}
249
+ vec3 fromRGBD(vec4 rgbd) {rgbd.rgb=toLinearSpace(rgbd.rgb);return rgbd.rgb/rgbd.a;}
250
+ vec3 parallaxCorrectNormal( vec3 vertexPos,vec3 origVec,vec3 cubeSize,vec3 cubePos ) {vec3 invOrigVec=vec3(1.)/origVec;vec3 halfSize=cubeSize*0.5;vec3 intersecAtMaxPlane=(cubePos+halfSize-vertexPos)*invOrigVec;vec3 intersecAtMinPlane=(cubePos-halfSize-vertexPos)*invOrigVec;vec3 largestIntersec=max(intersecAtMaxPlane,intersecAtMinPlane);float distance=min(min(largestIntersec.x,largestIntersec.y),largestIntersec.z);vec3 intersectPositionWS=vertexPos+origVec*distance;return intersectPositionWS-cubePos;}
251
+ vec3 equirectangularToCubemapDirection(vec2 uv) {float longitude=uv.x*TWO_PI-PI;float latitude=HALF_PI-uv.y*PI;vec3 direction;direction.x=cos(latitude)*sin(longitude);direction.y=sin(latitude);direction.z=cos(latitude)*cos(longitude);return direction;}
252
+ float sqrtClamped(float value) {return sqrt(max(value,0.));}
253
+ float avg(vec3 value) {return dot(value,vec3(0.333333333));}
254
+ #if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)
255
+ uint extractBits(uint value,int offset,int width) {return (value>>offset) & ((1u<<width)-1u);}
256
+ int onlyBitPosition(uint value) {return (floatBitsToInt(float(value))>>23)-0x7f;}
257
+ vec3 singleScatterToMultiScatterAlbedo(vec3 rho_ss) {vec3 s=sqrt(max(vec3(1.0)-rho_ss,vec3(0.0)));return (vec3(1.0)-s)*(vec3(1.0)-vec3(0.139)*s)/(vec3(1.0)+vec3(1.17)*s);}
258
+ vec3 multiScatterToSingleScatterAlbedo(vec3 rho_ms) {vec3 s=4.09712+4.20863*rho_ms-sqrt(9.59217+41.6808*rho_ms+17.7126*rho_ms*rho_ms);return 1.0-s*s;}
259
+ vec3 multiScatterToSingleScatterAlbedo(vec3 rho_ms,float aniso) {vec3 s=4.09712+4.20863*rho_ms-sqrt(9.59217+41.6808*rho_ms+17.7126*rho_ms*rho_ms);return (1.0-s*s)/maxEps(1.0-aniso*s*s);}
260
+ float min3(vec3 v) {return min(v.x,min(v.y,v.z));}
261
+ float max3(vec3 v) {return max(v.x,max(v.y,v.z));}
262
+ float uint2float(uint i) {return uintBitsToFloat(0x3F800000u | (i>>9u))-1.0;}
263
+ vec2 plasticSequence(const uint rstate) {return vec2(uint2float(rstate*3242174889u),
264
+ uint2float(rstate*2447445414u));}
265
+ #endif
266
+ `;r.ShaderStore.IncludesShadersStore[i]||(r.ShaderStore.IncludesShadersStore[i]=o),e.s(["helperFunctions",0,{name:i,shader:o}])},85668,e=>{"use strict";var r=e.i(12423);let i="sceneUboDeclaration",o=`layout(std140,column_major) uniform;uniform Scene {mat4 viewProjection;
267
+ #ifdef MULTIVIEW
268
+ mat4 viewProjectionR;
269
+ #endif
270
+ mat4 view;mat4 projection;vec4 vEyePosition;mat4 inverseProjection;};
271
+ `;r.ShaderStore.IncludesShadersStore[i]||(r.ShaderStore.IncludesShadersStore[i]=o),e.s(["sceneUboDeclaration",0,{name:i,shader:o}])},60990,e=>{"use strict";var r=e.i(12423);let i="pbrBRDFFunctions",o=`#define FRESNEL_MAXIMUM_ON_ROUGH 0.25
272
+ #define BRDF_DIFFUSE_MODEL_EON 0
273
+ #define BRDF_DIFFUSE_MODEL_BURLEY 1
274
+ #define BRDF_DIFFUSE_MODEL_LAMBERT 2
275
+ #define BRDF_DIFFUSE_MODEL_LEGACY 3
276
+ #define DIELECTRIC_SPECULAR_MODEL_GLTF 0
277
+ #define DIELECTRIC_SPECULAR_MODEL_OPENPBR 1
278
+ #define CONDUCTOR_SPECULAR_MODEL_GLTF 0
279
+ #define CONDUCTOR_SPECULAR_MODEL_OPENPBR 1
280
+ #if !defined(PBR_VERTEX_SHADER) && !defined(OPENPBR_VERTEX_SHADER)
281
+ #ifdef MS_BRDF_ENERGY_CONSERVATION
282
+ vec3 getEnergyConservationFactor(const vec3 specularEnvironmentR0,const vec3 environmentBrdf) {return 1.0+specularEnvironmentR0*(1.0/environmentBrdf.y-1.0);}
283
+ #endif
284
+ #if CONDUCTOR_SPECULAR_MODEL==CONDUCTOR_SPECULAR_MODEL_OPENPBR
285
+ #define F82_COS_THETA_MAX 0.142857143
286
+ #define F82_ONE_MINUS_CTM_POW5 0.462664366
287
+ #define F82_ONE_MINUS_CTM_POW6 0.396569457
288
+ #define F82_B_DENOMINATOR_RECIP 17.6512785
289
+ #define BRDF_Z_SCALE 16.0
290
+ vec3 getF82Specular(float NdotV,vec3 F0,vec3 edgeTint,float roughness) {vec3 white_minus_F0=vec3(1.0)-F0;vec3 b=(F0+white_minus_F0*F82_ONE_MINUS_CTM_POW5)*(vec3(1.0)-edgeTint)*F82_B_DENOMINATOR_RECIP;float cos_theta=max(roughness,NdotV);float one_minus_cos_theta=1.0-cos_theta;vec3 offset_from_F0=(white_minus_F0-b*cos_theta*one_minus_cos_theta)*pow(one_minus_cos_theta,5.0);return clamp(F0+offset_from_F0,0.0,1.0);}
291
+ vec3 getF82B(vec3 F0,vec3 edgeTint) {return (F0+(vec3(1.0)-F0)*F82_ONE_MINUS_CTM_POW5)*(vec3(1.0)-edgeTint)*F82_B_DENOMINATOR_RECIP;}
292
+ vec3 getF82DirectionalAlbedo(vec3 F0,vec3 F90,vec3 b,vec3 environmentBrdf) {return (F90-F0)*environmentBrdf.x+F0*environmentBrdf.y-b*environmentBrdf.z;}
293
+ vec3 getF82AverageFresnel(vec3 F0,vec3 b) {return F0+(vec3(1.0)-F0)/21.0-b/126.0;}
294
+ #endif
295
+ #ifdef FUZZENVIRONMENTBRDF
296
+ vec3 getFuzzBRDFLookup(float NdotV,float perceptualRoughness) {vec2 UV=vec2(perceptualRoughness,NdotV);vec4 brdfLookup=texture2D(environmentFuzzBrdfSampler,UV);const vec2 RiRange=vec2(0.0,0.75);const vec2 ARange =vec2(0.005,0.88);const vec2 BRange =vec2(-0.18,0.002);brdfLookup.r=mix(ARange.x, ARange.y, brdfLookup.r);brdfLookup.g=mix(BRange.x, BRange.y, brdfLookup.g);brdfLookup.b=mix(RiRange.x,RiRange.y,brdfLookup.b);return brdfLookup.rgb;}
297
+ #endif
298
+ #ifdef ENVIRONMENTBRDF
299
+ vec3 getBRDFLookup(float NdotV,float perceptualRoughness) {vec2 UV=vec2(NdotV,perceptualRoughness);vec4 brdfLookup=texture2D(environmentBrdfSampler,UV);
300
+ #ifdef ENVIRONMENTBRDF_RGBD
301
+ brdfLookup.rgb=fromRGBD(brdfLookup.rgba);
302
+ #endif
303
+ return brdfLookup.rgb;}
304
+ vec3 getReflectanceFromBRDFLookup(const vec3 specularEnvironmentR0,const vec3 specularEnvironmentR90,const vec3 environmentBrdf) {
305
+ #ifdef BRDF_V_HEIGHT_CORRELATED
306
+ vec3 reflectance=(specularEnvironmentR90-specularEnvironmentR0)*environmentBrdf.x+specularEnvironmentR0*environmentBrdf.y;
307
+ #else
308
+ vec3 reflectance=specularEnvironmentR0*environmentBrdf.x+specularEnvironmentR90*environmentBrdf.y;
309
+ #endif
310
+ return reflectance;}
311
+ vec3 getReflectanceFromBRDFLookup(const vec3 specularEnvironmentR0,const vec3 environmentBrdf) {
312
+ #ifdef BRDF_V_HEIGHT_CORRELATED
313
+ vec3 reflectance=mix(environmentBrdf.xxx,environmentBrdf.yyy,specularEnvironmentR0);
314
+ #else
315
+ vec3 reflectance=specularEnvironmentR0*environmentBrdf.x+environmentBrdf.y;
316
+ #endif
317
+ return reflectance;}
318
+ #endif
319
+ /* NOT USED
320
+ #if defined(SHEEN) && defined(SHEEN_SOFTER)
321
+ float getBRDFLookupCharlieSheen(float NdotV,float perceptualRoughness)
322
+ {float c=1.0-NdotV;float c3=c*c*c;return 0.65584461*c3+1.0/(4.16526551+exp(-7.97291361*perceptualRoughness+6.33516894));}
323
+ #endif
324
+ */
325
+ #if !defined(ENVIRONMENTBRDF) || defined(REFLECTIONMAP_SKYBOX) || defined(ALPHAFRESNEL)
326
+ vec3 getReflectanceFromAnalyticalBRDFLookup_Jones(float VdotN,vec3 reflectance0,vec3 reflectance90,float smoothness)
327
+ {float weight=mix(FRESNEL_MAXIMUM_ON_ROUGH,1.0,smoothness);return reflectance0+weight*(reflectance90-reflectance0)*pow5(saturate(1.0-VdotN));}
328
+ #endif
329
+ #if defined(SHEEN) && defined(ENVIRONMENTBRDF)
330
+ /**
331
+ * The sheen BRDF not containing F can be easily stored in the blue channel of the BRDF texture.
332
+ * The blue channel contains DCharlie*VAshikhmin*NdotL as a lokkup table
333
+ */
334
+ vec3 getSheenReflectanceFromBRDFLookup(const vec3 reflectance0,const vec3 environmentBrdf) {vec3 sheenEnvironmentReflectance=reflectance0*environmentBrdf.b;return sheenEnvironmentReflectance;}
335
+ #endif
336
+ vec3 fresnelSchlickGGX(float VdotH,vec3 reflectance0,vec3 reflectance90)
337
+ {return reflectance0+(reflectance90-reflectance0)*pow5(1.0-VdotH);}
338
+ float fresnelSchlickGGX(float VdotH,float reflectance0,float reflectance90)
339
+ {return reflectance0+(reflectance90-reflectance0)*pow5(1.0-VdotH);}
340
+ #ifdef CLEARCOAT
341
+ vec3 getR0RemappedForClearCoat(vec3 f0) {
342
+ #ifdef CLEARCOAT_DEFAULTIOR
343
+ #ifdef MOBILE
344
+ return saturate(f0*(f0*0.526868+0.529324)-0.0482256);
345
+ #else
346
+ return saturate(f0*(f0*(0.941892-0.263008*f0)+0.346479)-0.0285998);
347
+ #endif
348
+ #else
349
+ vec3 s=sqrt(f0);vec3 t=(vClearCoatRefractionParams.z+vClearCoatRefractionParams.w*s)/(vClearCoatRefractionParams.w+vClearCoatRefractionParams.z*s);return square(t);
350
+ #endif
351
+ }
352
+ #endif
353
+ #ifdef IRIDESCENCE
354
+ const mat3 XYZ_TO_REC709=mat3(
355
+ 3.2404542,-0.9692660, 0.0556434,
356
+ -1.5371385, 1.8760108,-0.2040259,
357
+ -0.4985314, 0.0415560, 1.0572252
358
+ );vec3 getIORTfromAirToSurfaceR0(vec3 f0) {vec3 sqrtF0=sqrt(f0);return (1.+sqrtF0)/(1.-sqrtF0);}
359
+ vec3 getR0fromIORs(vec3 iorT,float iorI) {return square((iorT-vec3(iorI))/(iorT+vec3(iorI)));}
360
+ float getR0fromIORs(float iorT,float iorI) {return square((iorT-iorI)/(iorT+iorI));}
361
+ vec3 evalSensitivity(float opd,vec3 shift) {float phase=2.0*PI*opd*1.0e-9;const vec3 val=vec3(5.4856e-13,4.4201e-13,5.2481e-13);const vec3 pos=vec3(1.6810e+06,1.7953e+06,2.2084e+06);const vec3 var=vec3(4.3278e+09,9.3046e+09,6.6121e+09);vec3 xyz=val*sqrt(2.0*PI*var)*cos(pos*phase+shift)*exp(-square(phase)*var);xyz.x+=9.7470e-14*sqrt(2.0*PI*4.5282e+09)*cos(2.2399e+06*phase+shift[0])*exp(-4.5282e+09*square(phase));xyz/=1.0685e-7;vec3 srgb=XYZ_TO_REC709*xyz;return srgb;}
362
+ vec3 evalIridescence(float outsideIOR,float eta2,float cosTheta1,float thinFilmThickness,vec3 baseF0) {vec3 I=vec3(1.0);float iridescenceIOR=mix(outsideIOR,eta2,smoothstep(0.0,0.03,thinFilmThickness));float sinTheta2Sq=square(outsideIOR/iridescenceIOR)*(1.0-square(cosTheta1));float cosTheta2Sq=1.0-sinTheta2Sq;if (cosTheta2Sq<0.0) {return I;}
363
+ float cosTheta2=sqrt(cosTheta2Sq);float R0=getR0fromIORs(iridescenceIOR,outsideIOR);float R12=fresnelSchlickGGX(cosTheta1,R0,1.);float R21=R12;float T121=1.0-R12;float phi12=0.0;if (iridescenceIOR<outsideIOR) phi12=PI;float phi21=PI-phi12;vec3 baseIOR=getIORTfromAirToSurfaceR0(clamp(baseF0,0.0,0.9999));
364
+ vec3 R1=getR0fromIORs(baseIOR,iridescenceIOR);float maxR1=max(R1.r,max(R1.g,R1.b));if (maxR1<1e-6) {return max(vec3(R12),vec3(0.0));}
365
+ vec3 R23=fresnelSchlickGGX(cosTheta2,R1,vec3(1.));vec3 phi23=vec3(0.0);if (baseIOR[0]<iridescenceIOR) phi23[0]=PI;if (baseIOR[1]<iridescenceIOR) phi23[1]=PI;if (baseIOR[2]<iridescenceIOR) phi23[2]=PI;float opd=2.0*iridescenceIOR*thinFilmThickness*cosTheta2;vec3 phi=vec3(phi21)+phi23;vec3 R123=clamp(R12*R23,1e-5,0.9999);vec3 r123=sqrt(R123);vec3 Rs=square(T121)*R23/(vec3(1.0)-R123);vec3 C0=R12+Rs;I=C0;vec3 Cm=Rs-T121;for (int m=1; m<=2; ++m)
366
+ {Cm*=r123;vec3 Sm=2.0*evalSensitivity(float(m)*opd,float(m)*phi);I+=Cm*Sm;}
367
+ return max(I,vec3(0.0));}
368
+ #endif
369
+ float normalDistributionFunction_TrowbridgeReitzGGX(float NdotH,float alphaG)
370
+ {float a2=square(alphaG);float d=NdotH*NdotH*(a2-1.0)+1.0;return a2/(PI*d*d);}
371
+ #ifdef SHEEN
372
+ float normalDistributionFunction_CharlieSheen(float NdotH,float alphaG)
373
+ {float invR=1./alphaG;float cos2h=NdotH*NdotH;float sin2h=1.-cos2h;return (2.+invR)*pow(sin2h,invR*.5)/(2.*PI);}
374
+ #endif
375
+ #ifdef ANISOTROPIC
376
+ float normalDistributionFunction_BurleyGGX_Anisotropic(float NdotH,float TdotH,float BdotH,const vec2 alphaTB) {float a2=alphaTB.x*alphaTB.y;vec3 v=vec3(alphaTB.y*TdotH,alphaTB.x *BdotH,a2*NdotH);float v2=dot(v,v);float w2=a2/v2;return a2*w2*w2*RECIPROCAL_PI;}
377
+ #endif
378
+ #ifdef BRDF_V_HEIGHT_CORRELATED
379
+ float smithVisibility_GGXCorrelated(float NdotL,float NdotV,float alphaG) {
380
+ #ifdef MOBILE
381
+ float GGXV=NdotL*(NdotV*(1.0-alphaG)+alphaG);float GGXL=NdotV*(NdotL*(1.0-alphaG)+alphaG);return 0.5/(GGXV+GGXL);
382
+ #else
383
+ float a2=alphaG*alphaG;float GGXV=NdotL*sqrt(NdotV*(NdotV-a2*NdotV)+a2);float GGXL=NdotV*sqrt(NdotL*(NdotL-a2*NdotL)+a2);return 0.5/(GGXV+GGXL);
384
+ #endif
385
+ }
386
+ #else
387
+ float smithVisibilityG1_TrowbridgeReitzGGXFast(float dot,float alphaG)
388
+ {
389
+ #ifdef MOBILE
390
+ return 1.0/(dot+alphaG+(1.0-alphaG)*dot ));
391
+ #else
392
+ float alphaSquared=alphaG*alphaG;return 1.0/(dot+sqrt(alphaSquared+(1.0-alphaSquared)*dot*dot));
393
+ #endif
394
+ }
395
+ float smithVisibility_TrowbridgeReitzGGXFast(float NdotL,float NdotV,float alphaG)
396
+ {float visibility=smithVisibilityG1_TrowbridgeReitzGGXFast(NdotL,alphaG)*smithVisibilityG1_TrowbridgeReitzGGXFast(NdotV,alphaG);return visibility;}
397
+ #endif
398
+ #ifdef ANISOTROPIC
399
+ float smithVisibility_GGXCorrelated_Anisotropic(float NdotL,float NdotV,float TdotV,float BdotV,float TdotL,float BdotL,const vec2 alphaTB) {float lambdaV=NdotL*length(vec3(alphaTB.x*TdotV,alphaTB.y*BdotV,NdotV));float lambdaL=NdotV*length(vec3(alphaTB.x*TdotL,alphaTB.y*BdotL,NdotL));float v=0.5/(lambdaV+lambdaL);return v;}
400
+ #endif
401
+ #ifdef CLEARCOAT
402
+ float visibility_Kelemen(float VdotH) {return 0.25/(VdotH*VdotH); }
403
+ #endif
404
+ #ifdef SHEEN
405
+ float visibility_Ashikhmin(float NdotL,float NdotV)
406
+ {return 1./(4.*(NdotL+NdotV-NdotL*NdotV));}
407
+ /* NOT USED
408
+ #ifdef SHEEN_SOFTER
409
+ float l(float x,float alphaG)
410
+ {float oneMinusAlphaSq=(1.0-alphaG)*(1.0-alphaG);float a=mix(21.5473,25.3245,oneMinusAlphaSq);float b=mix(3.82987,3.32435,oneMinusAlphaSq);float c=mix(0.19823,0.16801,oneMinusAlphaSq);float d=mix(-1.97760,-1.27393,oneMinusAlphaSq);float e=mix(-4.32054,-4.85967,oneMinusAlphaSq);return a/(1.0+b*pow(x,c))+d*x+e;}
411
+ float lambdaSheen(float cosTheta,float alphaG)
412
+ {return abs(cosTheta)<0.5 ? exp(l(cosTheta,alphaG)) : exp(2.0*l(0.5,alphaG)-l(1.0-cosTheta,alphaG));}
413
+ float visibility_CharlieSheen(float NdotL,float NdotV,float alphaG)
414
+ {float G=1.0/(1.0+lambdaSheen(NdotV,alphaG)+lambdaSheen(NdotL,alphaG));return G/(4.0*NdotV*NdotL);}
415
+ #endif
416
+ */
417
+ #endif
418
+ float diffuseBRDF_Burley(float NdotL,float NdotV,float VdotH,float roughness) {float diffuseFresnelNV=pow5(saturateEps(1.0-NdotL));float diffuseFresnelNL=pow5(saturateEps(1.0-NdotV));float diffuseFresnel90=0.5+2.0*VdotH*VdotH*roughness;float fresnel =
419
+ (1.0+(diffuseFresnel90-1.0)*diffuseFresnelNL) *
420
+ (1.0+(diffuseFresnel90-1.0)*diffuseFresnelNV);return fresnel/PI;}
421
+ const float constant1_FON=0.5-2.0/(3.0*PI);const float constant2_FON=2.0/3.0-28.0/(15.0*PI);float E_FON_approx(float mu,float roughness)
422
+ {float sigma=roughness;
423
+ float mucomp=1.0-mu;float mucomp2=mucomp*mucomp;const mat2 Gcoeffs=mat2(0.0571085289,-0.332181442,
424
+ 0.491881867,0.0714429953);float GoverPi=dot(Gcoeffs*vec2(mucomp,mucomp2),vec2(1.0,mucomp2));return (1.0+sigma*GoverPi)/(1.0+constant1_FON*sigma);}
425
+ vec3 diffuseBRDF_EON(vec3 albedo,float roughness,float NdotL,float NdotV,float LdotV)
426
+ {vec3 rho=albedo;float sigma=roughness;
427
+ float mu_i=NdotL;
428
+ float mu_o=NdotV;
429
+ float s=LdotV-mu_i*mu_o;
430
+ float sovertF=s>0.0 ? s/max(mu_i,mu_o) : s;
431
+ float AF=1.0/(1.0+constant1_FON*sigma);
432
+ vec3 f_ss=(rho*RECIPROCAL_PI)*AF*(1.0+sigma*sovertF);
433
+ float EFo=E_FON_approx(mu_o,sigma);
434
+ float EFi=E_FON_approx(mu_i,sigma);
435
+ float avgEF=AF*(1.0+constant2_FON*sigma);
436
+ vec3 rho_ms=(rho*rho)*avgEF/(vec3(1.0)-rho*(1.0-avgEF));const float eps=1.0e-7;vec3 f_ms=(rho_ms*RECIPROCAL_PI)*max(eps,1.0-EFo)
437
+ * max(eps,1.0-EFi)
438
+ / max(eps,1.0-avgEF);return (f_ss+f_ms);}
439
+ #ifdef SS_TRANSLUCENCY
440
+ vec3 transmittanceBRDF_Burley(const vec3 tintColor,const vec3 diffusionDistance,float thickness) {vec3 S=1./maxEps(diffusionDistance);vec3 temp=exp((-0.333333333*thickness)*S);return tintColor.rgb*0.25*(temp*temp*temp+3.0*temp);}
441
+ float computeWrappedDiffuseNdotL(float NdotL,float w) {float t=1.0+w;float invt2=1.0/square(t);return saturate((NdotL+w)*invt2);}
442
+ #endif
443
+ #endif
444
+ `;r.ShaderStore.IncludesShadersStore[i]||(r.ShaderStore.IncludesShadersStore[i]=o),e.s(["pbrBRDFFunctions",0,{name:i,shader:o}])},29981,69838,e=>{"use strict";var r=e.i(12423);let i="clipPlaneFragmentDeclaration",o=`#ifdef CLIPPLANE
445
+ varying float fClipDistance;
446
+ #endif
447
+ #ifdef CLIPPLANE2
448
+ varying float fClipDistance2;
449
+ #endif
450
+ #ifdef CLIPPLANE3
451
+ varying float fClipDistance3;
452
+ #endif
453
+ #ifdef CLIPPLANE4
454
+ varying float fClipDistance4;
455
+ #endif
456
+ #ifdef CLIPPLANE5
457
+ varying float fClipDistance5;
458
+ #endif
459
+ #ifdef CLIPPLANE6
460
+ varying float fClipDistance6;
461
+ #endif
462
+ `;r.ShaderStore.IncludesShadersStore[i]||(r.ShaderStore.IncludesShadersStore[i]=o),e.s(["clipPlaneFragmentDeclaration",0,{name:i,shader:o}],29981);let a="clipPlaneFragment",n=`#if defined(CLIPPLANE) || defined(CLIPPLANE2) || defined(CLIPPLANE3) || defined(CLIPPLANE4) || defined(CLIPPLANE5) || defined(CLIPPLANE6)
463
+ if (false) {}
464
+ #endif
465
+ #ifdef CLIPPLANE
466
+ else if (fClipDistance>0.0)
467
+ {discard;}
468
+ #endif
469
+ #ifdef CLIPPLANE2
470
+ else if (fClipDistance2>0.0)
471
+ {discard;}
472
+ #endif
473
+ #ifdef CLIPPLANE3
474
+ else if (fClipDistance3>0.0)
475
+ {discard;}
476
+ #endif
477
+ #ifdef CLIPPLANE4
478
+ else if (fClipDistance4>0.0)
479
+ {discard;}
480
+ #endif
481
+ #ifdef CLIPPLANE5
482
+ else if (fClipDistance5>0.0)
483
+ {discard;}
484
+ #endif
485
+ #ifdef CLIPPLANE6
486
+ else if (fClipDistance6>0.0)
487
+ {discard;}
488
+ #endif
489
+ `;r.ShaderStore.IncludesShadersStore[a]||(r.ShaderStore.IncludesShadersStore[a]=n),e.s(["clipPlaneFragment",0,{name:a,shader:n}],69838)},80825,9275,e=>{"use strict";var r=e.i(12423);let i="samplerFragmentDeclaration",o=`#ifdef _DEFINENAME_
490
+ #if _DEFINENAME_DIRECTUV==1
491
+ #define v_VARYINGNAME_UV vMainUV1
492
+ #elif _DEFINENAME_DIRECTUV==2
493
+ #define v_VARYINGNAME_UV vMainUV2
494
+ #elif _DEFINENAME_DIRECTUV==3
495
+ #define v_VARYINGNAME_UV vMainUV3
496
+ #elif _DEFINENAME_DIRECTUV==4
497
+ #define v_VARYINGNAME_UV vMainUV4
498
+ #elif _DEFINENAME_DIRECTUV==5
499
+ #define v_VARYINGNAME_UV vMainUV5
500
+ #elif _DEFINENAME_DIRECTUV==6
501
+ #define v_VARYINGNAME_UV vMainUV6
502
+ #else
503
+ varying vec2 v_VARYINGNAME_UV;
504
+ #endif
505
+ uniform sampler2D _SAMPLERNAME_Sampler;
506
+ #endif
507
+ `;r.ShaderStore.IncludesShadersStore[i]||(r.ShaderStore.IncludesShadersStore[i]=o),e.s(["samplerFragmentDeclaration",0,{name:i,shader:o}],80825);let a="reflectionFunction",n=`vec3 computeFixedEquirectangularCoords(vec4 worldPos,vec3 worldNormal,vec3 direction)
508
+ {float lon=atan(direction.z,direction.x);float lat=acos(direction.y);vec2 sphereCoords=vec2(lon,lat)*RECIPROCAL_PI2*2.0;float s=sphereCoords.x*0.5+0.5;float t=sphereCoords.y;return vec3(s,t,0); }
509
+ vec3 computeMirroredFixedEquirectangularCoords(vec4 worldPos,vec3 worldNormal,vec3 direction)
510
+ {float lon=atan(direction.z,direction.x);float lat=acos(direction.y);vec2 sphereCoords=vec2(lon,lat)*RECIPROCAL_PI2*2.0;float s=sphereCoords.x*0.5+0.5;float t=sphereCoords.y;return vec3(1.0-s,t,0); }
511
+ vec3 computeEquirectangularCoords(vec4 worldPos,vec3 worldNormal,vec3 eyePosition,mat4 reflectionMatrix)
512
+ {vec3 cameraToVertex=normalize(worldPos.xyz-eyePosition);vec3 r=normalize(reflect(cameraToVertex,worldNormal));r=vec3(reflectionMatrix*vec4(r,0));float lon=atan(r.z,r.x);float lat=acos(r.y);vec2 sphereCoords=vec2(lon,lat)*RECIPROCAL_PI2*2.0;float s=sphereCoords.x*0.5+0.5;float t=sphereCoords.y;return vec3(s,t,0);}
513
+ vec3 computeSphericalCoords(vec4 worldPos,vec3 worldNormal,mat4 view,mat4 reflectionMatrix)
514
+ {vec3 viewDir=normalize(vec3(view*worldPos));vec3 viewNormal=normalize(vec3(view*vec4(worldNormal,0.0)));vec3 r=reflect(viewDir,viewNormal);r=vec3(reflectionMatrix*vec4(r,0));r.z=r.z-1.0;float m=2.0*length(r);return vec3(r.x/m+0.5,1.0-r.y/m-0.5,0);}
515
+ vec3 computePlanarCoords(vec4 worldPos,vec3 worldNormal,vec3 eyePosition,mat4 reflectionMatrix)
516
+ {vec3 viewDir=worldPos.xyz-eyePosition;vec3 coords=normalize(reflect(viewDir,worldNormal));return vec3(reflectionMatrix*vec4(coords,1));}
517
+ vec3 computeCubicCoords(vec4 worldPos,vec3 worldNormal,vec3 eyePosition,mat4 reflectionMatrix)
518
+ {vec3 viewDir=normalize(worldPos.xyz-eyePosition);vec3 coords=reflect(viewDir,worldNormal);coords=vec3(reflectionMatrix*vec4(coords,0));
519
+ #ifdef INVERTCUBICMAP
520
+ coords.y*=-1.0;
521
+ #endif
522
+ return coords;}
523
+ vec3 computeCubicLocalCoords(vec4 worldPos,vec3 worldNormal,vec3 eyePosition,mat4 reflectionMatrix,vec3 reflectionSize,vec3 reflectionPosition)
524
+ {vec3 viewDir=normalize(worldPos.xyz-eyePosition);vec3 coords=reflect(viewDir,worldNormal);coords=parallaxCorrectNormal(worldPos.xyz,coords,reflectionSize,reflectionPosition);coords=vec3(reflectionMatrix*vec4(coords,0));
525
+ #ifdef INVERTCUBICMAP
526
+ coords.y*=-1.0;
527
+ #endif
528
+ return coords;}
529
+ vec3 computeProjectionCoords(vec4 worldPos,mat4 view,mat4 reflectionMatrix)
530
+ {return vec3(reflectionMatrix*(view*worldPos));}
531
+ vec3 computeSkyBoxCoords(vec3 positionW,mat4 reflectionMatrix)
532
+ {return vec3(reflectionMatrix*vec4(positionW,1.));}
533
+ #ifdef REFLECTION
534
+ vec3 computeReflectionCoords(vec4 worldPos,vec3 worldNormal)
535
+ {
536
+ #ifdef REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED
537
+ vec3 direction=normalize(vDirectionW);return computeMirroredFixedEquirectangularCoords(worldPos,worldNormal,direction);
538
+ #endif
539
+ #ifdef REFLECTIONMAP_EQUIRECTANGULAR_FIXED
540
+ vec3 direction=normalize(vDirectionW);return computeFixedEquirectangularCoords(worldPos,worldNormal,direction);
541
+ #endif
542
+ #ifdef REFLECTIONMAP_EQUIRECTANGULAR
543
+ return computeEquirectangularCoords(worldPos,worldNormal,vEyePosition.xyz,reflectionMatrix);
544
+ #endif
545
+ #ifdef REFLECTIONMAP_SPHERICAL
546
+ return computeSphericalCoords(worldPos,worldNormal,view,reflectionMatrix);
547
+ #endif
548
+ #ifdef REFLECTIONMAP_PLANAR
549
+ return computePlanarCoords(worldPos,worldNormal,vEyePosition.xyz,reflectionMatrix);
550
+ #endif
551
+ #ifdef REFLECTIONMAP_CUBIC
552
+ #ifdef USE_LOCAL_REFLECTIONMAP_CUBIC
553
+ return computeCubicLocalCoords(worldPos,worldNormal,vEyePosition.xyz,reflectionMatrix,vReflectionSize,vReflectionPosition);
554
+ #else
555
+ return computeCubicCoords(worldPos,worldNormal,vEyePosition.xyz,reflectionMatrix);
556
+ #endif
557
+ #endif
558
+ #ifdef REFLECTIONMAP_PROJECTION
559
+ return computeProjectionCoords(worldPos,view,reflectionMatrix);
560
+ #endif
561
+ #ifdef REFLECTIONMAP_SKYBOX
562
+ return computeSkyBoxCoords(vPositionUVW,reflectionMatrix);
563
+ #endif
564
+ #ifdef REFLECTIONMAP_EXPLICIT
565
+ return vec3(0,0,0);
566
+ #endif
567
+ }
568
+ #endif
569
+ `;r.ShaderStore.IncludesShadersStore[a]||(r.ShaderStore.IncludesShadersStore[a]=n),e.s(["reflectionFunction",0,{name:a,shader:n}],9275)},66437,93263,e=>{"use strict";var r=e.i(12423);let i="pbrFragmentReflectionDeclaration",o=`#ifdef REFLECTION
570
+ #ifdef REFLECTIONMAP_3D
571
+ #define sampleReflection(s,c) textureCube(s,c)
572
+ uniform samplerCube reflectionSampler;
573
+ #ifdef LODBASEDMICROSFURACE
574
+ #define sampleReflectionLod(s,c,l) textureCubeLodEXT(s,c,l)
575
+ #else
576
+ uniform samplerCube reflectionSamplerLow;uniform samplerCube reflectionSamplerHigh;
577
+ #endif
578
+ #ifdef USEIRRADIANCEMAP
579
+ uniform samplerCube irradianceSampler;
580
+ #endif
581
+ #else
582
+ #define sampleReflection(s,c) texture2D(s,c)
583
+ uniform sampler2D reflectionSampler;
584
+ #ifdef LODBASEDMICROSFURACE
585
+ #define sampleReflectionLod(s,c,l) texture2DLodEXT(s,c,l)
586
+ #else
587
+ uniform sampler2D reflectionSamplerLow;uniform sampler2D reflectionSamplerHigh;
588
+ #endif
589
+ #ifdef USEIRRADIANCEMAP
590
+ uniform sampler2D irradianceSampler;
591
+ #endif
592
+ #endif
593
+ #ifdef REFLECTIONMAP_SKYBOX
594
+ varying vec3 vPositionUVW;
595
+ #else
596
+ #if defined(REFLECTIONMAP_EQUIRECTANGULAR_FIXED) || defined(REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED)
597
+ varying vec3 vDirectionW;
598
+ #endif
599
+ #endif
600
+ #endif
601
+ `;r.ShaderStore.IncludesShadersStore[i]||(r.ShaderStore.IncludesShadersStore[i]=o),e.s(["pbrFragmentReflectionDeclaration",0,{name:i,shader:o}],66437);let a="pbrIBLFunctions",n=`#if defined(REFLECTION) || defined(SS_REFRACTION)
602
+ float getLodFromAlphaG(float cubeMapDimensionPixels,float microsurfaceAverageSlope) {float microsurfaceAverageSlopeTexels=cubeMapDimensionPixels*microsurfaceAverageSlope;float lod=log2(microsurfaceAverageSlopeTexels);return lod;}
603
+ float getLinearLodFromRoughness(float cubeMapDimensionPixels,float roughness) {float lod=log2(cubeMapDimensionPixels)*roughness;return lod;}
604
+ #endif
605
+ #if defined(ENVIRONMENTBRDF) && defined(RADIANCEOCCLUSION)
606
+ float environmentRadianceOcclusion(float ambientOcclusion,float NdotVUnclamped) {float temp=NdotVUnclamped+ambientOcclusion;return saturate(square(temp)-1.0+ambientOcclusion);}
607
+ #endif
608
+ #if defined(ENVIRONMENTBRDF) && defined(HORIZONOCCLUSION)
609
+ float environmentHorizonOcclusion(vec3 view,vec3 normal,vec3 geometricNormal) {vec3 reflection=reflect(view,normal);float temp=saturate(1.0+1.1*dot(reflection,geometricNormal));return square(temp);}
610
+ #endif
611
+ #if defined(LODINREFLECTIONALPHA) || defined(SS_LODINREFRACTIONALPHA)
612
+ #define UNPACK_LOD(x) (1.0-x)*255.0
613
+ float getLodFromAlphaG(float cubeMapDimensionPixels,float alphaG,float NdotV) {float microsurfaceAverageSlope=alphaG;microsurfaceAverageSlope*=sqrt(abs(NdotV));return getLodFromAlphaG(cubeMapDimensionPixels,microsurfaceAverageSlope);}
614
+ #endif
615
+ `;r.ShaderStore.IncludesShadersStore[a]||(r.ShaderStore.IncludesShadersStore[a]=n),e.s(["pbrIBLFunctions",0,{name:a,shader:n}],93263)},28189,74545,22633,50898,e=>{"use strict";var r=e.i(12423);let i="sceneFragmentDeclaration",o=`uniform mat4 viewProjection;
616
+ #ifdef MULTIVIEW
617
+ uniform mat4 viewProjectionR;
618
+ #endif
619
+ uniform mat4 view;uniform mat4 projection;uniform vec4 vEyePosition;uniform mat4 inverseProjection;
620
+ `;r.ShaderStore.IncludesShadersStore[i]||(r.ShaderStore.IncludesShadersStore[i]=o),e.s(["sceneFragmentDeclaration",0,{name:i,shader:o}],28189);let a="openpbrDielectricReflectance",n=`struct ReflectanceParams
621
+ {float F0;float F90;vec3 coloredF0;vec3 coloredF90;};
622
+ #define pbr_inline
623
+ ReflectanceParams dielectricReflectance(
624
+ in float insideIOR,in float outsideIOR,in vec3 specularColor,in float specularWeight
625
+ )
626
+ {ReflectanceParams outParams;float dielectricF0=pow((insideIOR-outsideIOR)/(insideIOR+outsideIOR),2.0);float dielectricF0_NoSpec=pow((1.0-outsideIOR)/(1.0+outsideIOR),2.0);float f90Scale=clamp(2.0*abs(insideIOR-outsideIOR),0.0,1.0);float f90Scale_NoSpec=clamp(2.0*abs(1.0-outsideIOR),0.0,1.0);
627
+ #if (DIELECTRIC_SPECULAR_MODEL==DIELECTRIC_SPECULAR_MODEL_OPENPBR)
628
+ vec3 dielectricColorF90=specularColor.rgb*vec3(f90Scale);vec3 dielectricColorF90_NoSpec=specularColor.rgb*vec3(f90Scale_NoSpec);
629
+ #else
630
+ vec3 dielectricColorF90=vec3(f90Scale);vec3 dielectricColorF90_NoSpec=vec3(f90Scale_NoSpec);
631
+ #endif
632
+ #if DIELECTRIC_SPECULAR_MODEL==DIELECTRIC_SPECULAR_MODEL_GLTF
633
+ float maxF0=max(specularColor.r,max(specularColor.g,specularColor.b));outParams.F0=mix(dielectricF0_NoSpec,dielectricF0,specularWeight)*maxF0;
634
+ #else
635
+ outParams.F0=mix(dielectricF0_NoSpec,dielectricF0,specularWeight);
636
+ #endif
637
+ outParams.F90=mix(f90Scale_NoSpec,f90Scale,specularWeight);outParams.coloredF0=mix(vec3(dielectricF0_NoSpec),vec3(dielectricF0),specularWeight)*specularColor.rgb;outParams.coloredF90=mix(dielectricColorF90_NoSpec,dielectricColorF90,specularWeight);return outParams;}
638
+ `;r.ShaderStore.IncludesShadersStore[a]||(r.ShaderStore.IncludesShadersStore[a]=n),e.s(["openpbrDielectricReflectance",0,{name:a,shader:n}],74545);let t="openpbrGeometryInfo",c=`struct geometryInfoOutParams
639
+ {float NdotV;float NdotVUnclamped;vec3 environmentBrdf;float horizonOcclusion;};struct geometryInfoAnisoOutParams
640
+ {float NdotV;float NdotVUnclamped;vec3 environmentBrdf;float horizonOcclusion;float anisotropy;vec3 anisotropicTangent;vec3 anisotropicBitangent;mat3 TBN;};
641
+ #define pbr_inline
642
+ geometryInfoOutParams geometryInfo(
643
+ in vec3 normalW,in vec3 viewDirectionW,in float roughness,in vec3 geometricNormalW
644
+ )
645
+ {geometryInfoOutParams outParams;outParams.NdotVUnclamped=dot(normalW,viewDirectionW);outParams.NdotV=absEps(outParams.NdotVUnclamped);
646
+ #if defined(ENVIRONMENTBRDF)
647
+ outParams.environmentBrdf=getBRDFLookup(outParams.NdotV,roughness);
648
+ #else
649
+ outParams.environmentBrdf=vec3(0.0);
650
+ #endif
651
+ outParams.horizonOcclusion=1.0;
652
+ #if defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX)
653
+ #ifdef HORIZONOCCLUSION
654
+ #if defined(GEOMETRY_NORMAL) || defined(GEOMETRY_COAT_NORMAL)
655
+ #ifdef REFLECTIONMAP_3D
656
+ outParams.horizonOcclusion=environmentHorizonOcclusion(-viewDirectionW,normalW,geometricNormalW);
657
+ #endif
658
+ #endif
659
+ #endif
660
+ #endif
661
+ return outParams;}
662
+ #define pbr_inline
663
+ geometryInfoAnisoOutParams geometryInfoAniso(
664
+ in vec3 normalW,in vec3 viewDirectionW,in float roughness,in vec3 geometricNormalW
665
+ ,in vec3 vAnisotropy,in mat3 TBN
666
+ )
667
+ {geometryInfoOutParams geoInfo=geometryInfo(normalW,viewDirectionW,roughness,geometricNormalW);geometryInfoAnisoOutParams outParams;outParams.NdotV=geoInfo.NdotV;outParams.NdotVUnclamped=geoInfo.NdotVUnclamped;outParams.environmentBrdf=geoInfo.environmentBrdf;outParams.horizonOcclusion=geoInfo.horizonOcclusion;outParams.anisotropy=vAnisotropy.b;vec3 anisotropyDirection=vec3(vAnisotropy.xy,0.);mat3 anisoTBN=mat3(normalize(TBN[0]),normalize(TBN[1]),normalize(TBN[2]));outParams.anisotropicTangent=normalize(anisoTBN*anisotropyDirection);outParams.anisotropicBitangent=normalize(cross(anisoTBN[2],outParams.anisotropicTangent));outParams.TBN=TBN;return outParams;}`;r.ShaderStore.IncludesShadersStore[t]||(r.ShaderStore.IncludesShadersStore[t]=c),e.s(["openpbrGeometryInfo",0,{name:t,shader:c}],22633);let f="openpbrIblFunctions",l=`#ifdef REFLECTION
668
+ vec3 sampleIrradiance(
669
+ in vec3 surfaceNormal
670
+ #if defined(NORMAL) && defined(USESPHERICALINVERTEX)
671
+ ,in vec3 vEnvironmentIrradianceSH
672
+ #endif
673
+ #if (defined(USESPHERICALFROMREFLECTIONMAP) && (!defined(NORMAL) || !defined(USESPHERICALINVERTEX))) || (defined(USEIRRADIANCEMAP) && defined(REFLECTIONMAP_3D))
674
+ ,in mat4 iblMatrix
675
+ #endif
676
+ #ifdef USEIRRADIANCEMAP
677
+ #ifdef REFLECTIONMAP_3D
678
+ ,in samplerCube irradianceSampler
679
+ #else
680
+ ,in sampler2D irradianceSampler
681
+ #endif
682
+ #ifdef USE_IRRADIANCE_DOMINANT_DIRECTION
683
+ ,in vec3 reflectionDominantDirection
684
+ #endif
685
+ #endif
686
+ #ifdef REALTIME_FILTERING
687
+ ,in vec2 vReflectionFilteringInfo
688
+ #ifdef IBL_CDF_FILTERING
689
+ ,in sampler2D icdfSampler
690
+ #endif
691
+ #endif
692
+ ,in vec2 vReflectionInfos
693
+ ,in vec3 viewDirectionW
694
+ ,in float diffuseRoughness
695
+ ,in vec3 surfaceAlbedo
696
+ ) {vec3 environmentIrradiance=vec3(0.,0.,0.);
697
+ #if (defined(USESPHERICALFROMREFLECTIONMAP) && (!defined(NORMAL) || !defined(USESPHERICALINVERTEX))) || (defined(USEIRRADIANCEMAP) && defined(REFLECTIONMAP_3D))
698
+ vec3 irradianceVector=(iblMatrix*vec4(surfaceNormal,0)).xyz;vec3 irradianceView=(iblMatrix*vec4(viewDirectionW,0)).xyz;
699
+ #if !defined(USE_IRRADIANCE_DOMINANT_DIRECTION) && !defined(REALTIME_FILTERING)
700
+ #if BASE_DIFFUSE_MODEL != BRDF_DIFFUSE_MODEL_LAMBERT && BASE_DIFFUSE_MODEL != BRDF_DIFFUSE_MODEL_LEGACY
701
+ {float NdotV=max(dot(surfaceNormal,viewDirectionW),0.0);irradianceVector=mix(irradianceVector,irradianceView,(0.5*(1.0-NdotV))*diffuseRoughness);}
702
+ #endif
703
+ #endif
704
+ #ifdef REFLECTIONMAP_OPPOSITEZ
705
+ irradianceVector.z*=-1.0;irradianceView.z*=-1.0;
706
+ #endif
707
+ #ifdef INVERTCUBICMAP
708
+ irradianceVector.y*=-1.0;irradianceView.y*=-1.0;
709
+ #endif
710
+ #endif
711
+ #ifdef USESPHERICALFROMREFLECTIONMAP
712
+ #if defined(NORMAL) && defined(USESPHERICALINVERTEX)
713
+ environmentIrradiance=vEnvironmentIrradianceSH;
714
+ #else
715
+ #if defined(REALTIME_FILTERING)
716
+ environmentIrradiance=irradiance(reflectionSampler,irradianceVector,vReflectionFilteringInfo,diffuseRoughness,surfaceAlbedo,irradianceView
717
+ #ifdef IBL_CDF_FILTERING
718
+ ,icdfSampler
719
+ #endif
720
+ );
721
+ #else
722
+ environmentIrradiance=computeEnvironmentIrradiance(irradianceVector);
723
+ #endif
724
+ #endif
725
+ #elif defined(USEIRRADIANCEMAP)
726
+ #ifdef REFLECTIONMAP_3D
727
+ vec4 environmentIrradianceFromTexture=sampleReflection(irradianceSampler,irradianceVector);
728
+ #else
729
+ vec4 environmentIrradianceFromTexture=sampleReflection(irradianceSampler,reflectionCoords);
730
+ #endif
731
+ environmentIrradiance=environmentIrradianceFromTexture.rgb;
732
+ #ifdef RGBDREFLECTION
733
+ environmentIrradiance.rgb=fromRGBD(environmentIrradianceFromTexture);
734
+ #endif
735
+ #ifdef GAMMAREFLECTION
736
+ environmentIrradiance.rgb=toLinearSpace(environmentIrradiance.rgb);
737
+ #endif
738
+ #ifdef USE_IRRADIANCE_DOMINANT_DIRECTION
739
+ vec3 Ls=normalize(reflectionDominantDirection);float NoL=dot(irradianceVector,Ls);float NoV=dot(irradianceVector,irradianceView);vec3 diffuseRoughnessTerm=vec3(1.0);
740
+ #if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON
741
+ float 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)));
742
+ #elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_BURLEY
743
+ vec3 H=(irradianceView+Ls)*0.5;float VoH=dot(irradianceView,H);diffuseRoughnessTerm=vec3(diffuseBRDF_Burley(NoL,NoV,VoH,diffuseRoughness)*PI);
744
+ #endif
745
+ environmentIrradiance=environmentIrradiance.rgb*diffuseRoughnessTerm;
746
+ #endif
747
+ #endif
748
+ environmentIrradiance*=vReflectionInfos.x;return environmentIrradiance;}
749
+ #define pbr_inline
750
+ #ifdef REFLECTIONMAP_3D
751
+ vec3 createReflectionCoords(
752
+ #else
753
+ vec2 createReflectionCoords(
754
+ #endif
755
+ in vec3 vPositionW
756
+ ,in vec3 normalW
757
+ )
758
+ {vec3 reflectionVector=computeReflectionCoords(vec4(vPositionW,1.0),normalW);
759
+ #ifdef REFLECTIONMAP_OPPOSITEZ
760
+ reflectionVector.z*=-1.0;
761
+ #endif
762
+ #ifdef REFLECTIONMAP_3D
763
+ vec3 reflectionCoords=reflectionVector;
764
+ #else
765
+ vec2 reflectionCoords=reflectionVector.xy;
766
+ #ifdef REFLECTIONMAP_PROJECTION
767
+ reflectionCoords/=reflectionVector.z;
768
+ #endif
769
+ reflectionCoords.y=1.0-reflectionCoords.y;
770
+ #endif
771
+ return reflectionCoords;}
772
+ #define pbr_inline
773
+ #define inline
774
+ vec3 sampleRadiance(
775
+ in float alphaG
776
+ ,in vec3 vReflectionMicrosurfaceInfos
777
+ ,in vec2 vReflectionInfos
778
+ ,in geometryInfoOutParams geoInfo
779
+ #ifdef REFLECTIONMAP_3D
780
+ ,in samplerCube reflectionSampler
781
+ ,const vec3 reflectionCoords
782
+ #else
783
+ ,in sampler2D reflectionSampler
784
+ ,const vec2 reflectionCoords
785
+ #endif
786
+ #ifdef REALTIME_FILTERING
787
+ ,in vec2 vReflectionFilteringInfo
788
+ #endif
789
+ )
790
+ {vec4 environmentRadiance=vec4(0.,0.,0.,0.);
791
+ #if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)
792
+ float reflectionLOD=getLodFromAlphaG(vReflectionMicrosurfaceInfos.x,alphaG,geoInfo.NdotVUnclamped);
793
+ #elif defined(LINEARSPECULARREFLECTION)
794
+ float reflectionLOD=getLinearLodFromRoughness(vReflectionMicrosurfaceInfos.x,roughness);
795
+ #else
796
+ float reflectionLOD=getLodFromAlphaG(vReflectionMicrosurfaceInfos.x,alphaG);
797
+ #endif
798
+ reflectionLOD=reflectionLOD*vReflectionMicrosurfaceInfos.y+vReflectionMicrosurfaceInfos.z;
799
+ #ifdef REALTIME_FILTERING
800
+ environmentRadiance=vec4(radiance(alphaG,reflectionSampler,reflectionCoords,vReflectionFilteringInfo),1.0);
801
+ #else
802
+ environmentRadiance=sampleReflectionLod(reflectionSampler,reflectionCoords,reflectionLOD);
803
+ #endif
804
+ #ifdef RGBDREFLECTION
805
+ environmentRadiance.rgb=fromRGBD(environmentRadiance);
806
+ #endif
807
+ #ifdef GAMMAREFLECTION
808
+ environmentRadiance.rgb=toLinearSpace(environmentRadiance.rgb);
809
+ #endif
810
+ environmentRadiance.rgb*=vec3(vReflectionInfos.x);return environmentRadiance.rgb;}
811
+ #if defined(ANISOTROPIC)
812
+ #define pbr_inline
813
+ #define inline
814
+ vec3 sampleRadianceAnisotropic(
815
+ in float alphaG
816
+ ,in vec3 vReflectionMicrosurfaceInfos
817
+ ,in vec2 vReflectionInfos
818
+ ,in geometryInfoAnisoOutParams geoInfo
819
+ ,const vec3 normalW
820
+ ,const vec3 viewDirectionW
821
+ ,const vec3 positionW
822
+ ,const vec3 noise
823
+ ,bool isRefraction
824
+ ,float ior
825
+ #ifdef REFLECTIONMAP_3D
826
+ ,in samplerCube reflectionSampler
827
+ #else
828
+ ,in sampler2D reflectionSampler
829
+ #endif
830
+ #ifdef REALTIME_FILTERING
831
+ ,in vec2 vReflectionFilteringInfo
832
+ #endif
833
+ )
834
+ {vec4 environmentRadiance=vec4(0.,0.,0.,0.);float alphaT=alphaG*sqrt(2.0/(1.0+(1.0-geoInfo.anisotropy)*(1.0-geoInfo.anisotropy)));float alphaB=(1.0-geoInfo.anisotropy)*alphaT;alphaG=alphaB;
835
+ #if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)
836
+ float reflectionLOD=getLodFromAlphaG(vReflectionMicrosurfaceInfos.x,alphaG,geoInfo.NdotVUnclamped);
837
+ #elif defined(LINEARSPECULARREFLECTION)
838
+ float reflectionLOD=getLinearLodFromRoughness(vReflectionMicrosurfaceInfos.x,roughness);
839
+ #else
840
+ float reflectionLOD=getLodFromAlphaG(vReflectionMicrosurfaceInfos.x,alphaG);
841
+ #endif
842
+ reflectionLOD=reflectionLOD*vReflectionMicrosurfaceInfos.y+vReflectionMicrosurfaceInfos.z;
843
+ #ifdef REALTIME_FILTERING
844
+ vec3 view=(reflectionMatrix*vec4(viewDirectionW,0.0)).xyz;vec3 tangent=(reflectionMatrix*vec4(geoInfo.anisotropicTangent,0.0)).xyz;vec3 bitangent=(reflectionMatrix*vec4(geoInfo.anisotropicBitangent,0.0)).xyz;vec3 normal=(reflectionMatrix*vec4(normalW,0.0)).xyz;
845
+ #ifdef REFLECTIONMAP_OPPOSITEZ
846
+ view.z*=-1.0;tangent.z*=-1.0;bitangent.z*=-1.0;normal.z*=-1.0;
847
+ #endif
848
+ environmentRadiance =
849
+ vec4(radianceAnisotropic(alphaT,alphaB,reflectionSampler,
850
+ view,tangent,
851
+ bitangent,normal,
852
+ vReflectionFilteringInfo,noise.xy,isRefraction,ior),
853
+ 1.0);
854
+ #else
855
+ const int samples=16;vec4 radianceSample=vec4(0.0);vec3 reflectionCoords=vec3(0.0);float sample_weight=0.0;float total_weight=0.0;float step=1.0/float(max(samples-1,1));for (int i=0; i<samples; ++i) {float t=mix(-1.0,1.0,float(i)*step);t+=step*2.0*noise.x;sample_weight=max(1.0-abs(t),0.001);sample_weight*=sample_weight;t*=min(4.0*alphaT*geoInfo.anisotropy,1.0);vec3 bentNormal;if (t<0.0) {float blend=t+1.0;bentNormal=normalize(mix(-geoInfo.anisotropicTangent,normalW,blend));} else if (t>0.0) {float blend=t;bentNormal=normalize(mix(normalW,geoInfo.anisotropicTangent,blend));} else {bentNormal=normalW;}
856
+ if (isRefraction) {reflectionCoords=double_refract(-viewDirectionW,bentNormal,ior);} else {reflectionCoords=reflect(-viewDirectionW,bentNormal);}
857
+ reflectionCoords=vec3(reflectionMatrix*vec4(reflectionCoords,0));
858
+ #ifdef REFLECTIONMAP_OPPOSITEZ
859
+ reflectionCoords.z*=-1.0;
860
+ #endif
861
+ radianceSample=sampleReflectionLod(reflectionSampler,reflectionCoords,reflectionLOD);
862
+ #ifdef RGBDREFLECTION
863
+ environmentRadiance.rgb+=sample_weight*fromRGBD(radianceSample);
864
+ #elif defined(GAMMAREFLECTION)
865
+ environmentRadiance.rgb+=sample_weight*toLinearSpace(radianceSample.rgb);
866
+ #else
867
+ environmentRadiance.rgb+=sample_weight*radianceSample.rgb;
868
+ #endif
869
+ total_weight+=sample_weight;}
870
+ environmentRadiance=vec4(environmentRadiance.xyz/float(total_weight),1.0);
871
+ #endif
872
+ environmentRadiance.rgb*=vec3(vReflectionInfos.x);return environmentRadiance.rgb;}
873
+ #endif
874
+ #endif
875
+ #if defined(ENVIRONMENTBRDF)
876
+ #define pbr_inline
877
+ float computeDielectricIblFresnel(in ReflectanceParams reflectance,in vec3 environmentBrdf)
878
+ {float dielectricIblFresnel=getReflectanceFromBRDFLookup(vec3(reflectance.F0),vec3(reflectance.F90),environmentBrdf).r;float dielectricECF=1.0+reflectance.F0*(1.0/environmentBrdf.y-1.0);return clamp(dielectricIblFresnel*dielectricECF,0.0,1.0);}
879
+ #define pbr_inline
880
+ vec3 computeConductorIblFresnel(in ReflectanceParams reflectance,in vec3 environmentBrdf)
881
+ {
882
+ #if (CONDUCTOR_SPECULAR_MODEL==CONDUCTOR_SPECULAR_MODEL_OPENPBR) && defined(ENVIRONMENTBRDF)
883
+ vec3 openPBRBrdf=vec3(environmentBrdf.xy,environmentBrdf.z/BRDF_Z_SCALE);vec3 b =getF82B(reflectance.coloredF0,reflectance.coloredF90);vec3 E_F82=getF82DirectionalAlbedo(reflectance.coloredF0,vec3(1.0),b,openPBRBrdf);vec3 F_avg=getF82AverageFresnel(reflectance.coloredF0,b);vec3 ECF =vec3(1.0)+F_avg*(vec3(1.0)/openPBRBrdf.y-vec3(1.0));return clamp(E_F82*ECF,vec3(0.0),vec3(1.0));
884
+ #else
885
+ return getReflectanceFromBRDFLookup(reflectance.coloredF0,reflectance.coloredF90,environmentBrdf);
886
+ #endif
887
+ }
888
+ #endif
889
+ `;r.ShaderStore.IncludesShadersStore[f]||(r.ShaderStore.IncludesShadersStore[f]=l),e.s(["openpbrIblFunctions",0,{name:f,shader:l}],50898)},16630,e=>{"use strict";var r=e.i(12423);let i="openpbrSubsurfaceLayerData",o=`float subsurface_weight=vSubsurfaceWeight;vec3 subsurface_color=vSubsurfaceColor.rgb;float subsurface_radius=vSubsurfaceRadius;vec3 subsurface_radius_scale=vSubsurfaceRadiusScale;float subsurface_scatter_anisotropy=clamp(vSubsurfaceScatterAnisotropy,-0.9999,0.9999);
890
+ #ifdef SUBSURFACE_WEIGHT
891
+ vec4 subsurfaceWeightFromTexture=TEXRD(subsurfaceWeightSampler,vSubsurfaceWeightUV+uvOffset);
892
+ #endif
893
+ #ifdef SUBSURFACE_COLOR
894
+ vec4 subsurfaceColorFromTexture=TEXRD(subsurfaceColorSampler,vSubsurfaceColorUV+uvOffset);
895
+ #endif
896
+ #ifdef SUBSURFACE_RADIUS_SCALE
897
+ vec4 subsurfaceRadiusScaleFromTexture=TEXRD(subsurfaceRadiusScaleSampler,vSubsurfaceRadiusScaleUV+uvOffset);
898
+ #endif
899
+ #ifdef SUBSURFACE_WEIGHT
900
+ #ifdef SUBSURFACE_WEIGHT_FROM_TEXTURE_ALPHA
901
+ subsurface_weight*=subsurfaceWeightFromTexture.a;
902
+ #else
903
+ subsurface_weight*=subsurfaceWeightFromTexture.r;
904
+ #endif
905
+ #endif
906
+ #ifdef SUBSURFACE_COLOR
907
+ #ifdef SUBSURFACE_COLOR_GAMMA
908
+ subsurface_color*=toLinearSpace(subsurfaceColorFromTexture.rgb);
909
+ #else
910
+ subsurface_color*=subsurfaceColorFromTexture.rgb;
911
+ #endif
912
+ subsurface_color*=vSubsurfaceColorInfos.y;
913
+ #endif
914
+ #ifdef SUBSURFACE_RADIUS_SCALE
915
+ subsurface_radius_scale*=subsurfaceRadiusScaleFromTexture.rgb;
916
+ #endif
917
+ `;r.ShaderStore.IncludesShadersStore[i]||(r.ShaderStore.IncludesShadersStore[i]=o),e.s(["openpbrSubsurfaceLayerData",0,{name:i,shader:o}])},17796,e=>{"use strict";var r=e.i(12423);let i="openpbrTransmissionLayerData",o=`float transmission_weight=vTransmissionWeight;vec3 transmission_color=vTransmissionColor.rgb;float transmission_depth=vTransmissionDepth;vec3 transmission_scatter=vTransmissionScatter.rgb;float transmission_scatter_anisotropy=clamp(vTransmissionScatterAnisotropy,-0.9999,0.9999);float transmission_dispersion_scale=vTransmissionDispersionScale;float transmission_dispersion_abbe_number=vTransmissionDispersionAbbeNumber;
918
+ #ifdef TRANSMISSION_WEIGHT
919
+ vec4 transmissionWeightFromTexture=TEXRD(transmissionWeightSampler,vTransmissionWeightUV+uvOffset);
920
+ #endif
921
+ #ifdef TRANSMISSION_COLOR
922
+ vec4 transmissionColorFromTexture=TEXRD(transmissionColorSampler,vTransmissionColorUV+uvOffset);
923
+ #endif
924
+ #ifdef TRANSMISSION_DEPTH
925
+ vec4 transmissionDepthFromTexture=TEXRD(transmissionDepthSampler,vTransmissionDepthUV+uvOffset);
926
+ #endif
927
+ #ifdef TRANSMISSION_SCATTER
928
+ vec4 transmissionScatterFromTexture=TEXRD(transmissionScatterSampler,vTransmissionScatterUV+uvOffset);
929
+ #endif
930
+ #ifdef TRANSMISSION_DISPERSION_SCALE
931
+ vec4 transmissionDispersionScaleFromTexture=TEXRD(transmissionDispersionScaleSampler,vTransmissionDispersionScaleUV+uvOffset);
932
+ #endif
933
+ #ifdef TRANSMISSION_WEIGHT
934
+ transmission_weight*=transmissionWeightFromTexture.r;
935
+ #endif
936
+ #ifdef TRANSMISSION_COLOR
937
+ #ifdef TRANSMISSION_COLOR_GAMMA
938
+ transmission_color*=toLinearSpace(transmissionColorFromTexture.rgb);
939
+ #else
940
+ transmission_color*=transmissionColorFromTexture.rgb;
941
+ #endif
942
+ transmission_color*=vTransmissionColorInfos.y;
943
+ #endif
944
+ #ifdef TRANSMISSION_DEPTH
945
+ transmission_depth*=transmissionDepthFromTexture.r;
946
+ #endif
947
+ #ifdef TRANSMISSION_SCATTER
948
+ transmission_scatter*=transmissionScatterFromTexture.rgb;
949
+ #endif
950
+ #ifdef TRANSMISSION_DISPERSION_SCALE
951
+ transmission_dispersion_scale*=transmissionDispersionScaleFromTexture.r;
952
+ #endif
953
+ `;r.ShaderStore.IncludesShadersStore[i]||(r.ShaderStore.IncludesShadersStore[i]=o),e.s(["openpbrTransmissionLayerData",0,{name:i,shader:o}])},61120,e=>{"use strict";var r=e.i(12423),i=e.i(29981);let o="mrtFragmentDeclaration",a=`#if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)
954
+ layout(location=0) out vec4 glFragData[{X}];
955
+ #endif
956
+ `;r.ShaderStore.IncludesShadersStore[o]||(r.ShaderStore.IncludesShadersStore[o]=a);var n=e.i(63539),t=e.i(80825),c=e.i(80713),f=e.i(65296),l=e.i(66437),s=e.i(28189),d=e.i(85668),m=e.i(60990),v=e.i(74545),u=e.i(93263),E=e.i(9275),R=e.i(22633),p=e.i(50898),S=e.i(69838),I=e.i(149),N=e.i(16630),_=e.i(17796);let T="geometryPixelShader",A=`#extension GL_EXT_draw_buffers : require
957
+ #if defined(BUMP) || !defined(NORMAL)
958
+ #extension GL_OES_standard_derivatives : enable
959
+ #endif
960
+ precision highp float;
961
+ #ifdef BUMP
962
+ varying mat4 vWorldView;varying vec3 vNormalW;
963
+ #else
964
+ varying vec3 vNormalV;
965
+ #endif
966
+ varying vec4 vViewPos;
967
+ #if defined(POSITION) || defined(BUMP) || defined(IRRADIANCE)
968
+ varying vec3 vPositionW;
969
+ #endif
970
+ #if defined(VELOCITY) || defined(VELOCITY_LINEAR)
971
+ varying vec4 vCurrentPosition;varying vec4 vPreviousPosition;
972
+ #endif
973
+ #ifdef NEED_UV
974
+ varying vec2 vUV;
975
+ #endif
976
+ #ifdef BUMP
977
+ uniform vec3 vBumpInfos;uniform vec2 vTangentSpaceParams;
978
+ #endif
979
+ #if defined(REFLECTIVITY)
980
+ #if defined(ORMTEXTURE) || defined(SPECULARGLOSSINESSTEXTURE) || defined(REFLECTIVITYTEXTURE)
981
+ uniform sampler2D reflectivitySampler;varying vec2 vReflectivityUV;
982
+ #else
983
+ #ifdef METALLIC_TEXTURE
984
+ uniform sampler2D metallicSampler;varying vec2 vMetallicUV;
985
+ #endif
986
+ #ifdef ROUGHNESS_TEXTURE
987
+ uniform sampler2D roughnessSampler;varying vec2 vRoughnessUV;
988
+ #endif
989
+ #endif
990
+ #ifdef ALBEDOTEXTURE
991
+ varying vec2 vAlbedoUV;uniform sampler2D albedoSampler;
992
+ #endif
993
+ #ifdef REFLECTIVITYCOLOR
994
+ uniform vec3 reflectivityColor;
995
+ #endif
996
+ #ifdef ALBEDOCOLOR
997
+ uniform vec3 albedoColor;
998
+ #endif
999
+ #ifdef METALLIC
1000
+ uniform float metallic;
1001
+ #endif
1002
+ #if defined(ROUGHNESS) || defined(GLOSSINESS)
1003
+ uniform float glossiness;
1004
+ #endif
1005
+ #endif
1006
+ #if defined(ALPHATEST) && defined(NEED_UV)
1007
+ uniform sampler2D diffuseSampler;
1008
+ #endif
1009
+ #include<clipPlaneFragmentDeclaration>
1010
+ #include<mrtFragmentDeclaration>[SCENE_MRT_COUNT]
1011
+ #include<bumpFragmentMainFunctions>
1012
+ #include<bumpFragmentFunctions>
1013
+ #include<helperFunctions>
1014
+ #ifdef IRRADIANCE
1015
+ #include<pbrFragmentReflectionDeclaration>
1016
+ #ifdef REFLECTION
1017
+ #ifdef USEIRRADIANCEMAP
1018
+ #include<__decl__sceneFragment>
1019
+ uniform mat4 reflectionMatrix;uniform vec2 vReflectionInfos;uniform vec3 vReflectionDominantDirection;
1020
+ #include<pbrBRDFFunctions>
1021
+ #include<openpbrDielectricReflectance>
1022
+ #include<pbrIBLFunctions>
1023
+ #include<reflectionFunction>
1024
+ #include<openpbrGeometryInfo>
1025
+ #include<openpbrIblFunctions>
1026
+ #elif defined(USESPHERICALFROMREFLECTIONMAP)
1027
+ varying vec3 vEnvironmentIrradiance;
1028
+ #endif
1029
+ #ifdef IBL_SHADOW_TEXTURE
1030
+ uniform sampler2D iblShadowSampler;uniform vec2 shadowTextureSize;
1031
+ #endif
1032
+ #ifdef IRRADIANCE_SCATTER_MASK
1033
+ uniform float vSubsurfaceWeight;
1034
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,SUBSURFACE_WEIGHT,_VARYINGNAME_,SubsurfaceWeight,_SAMPLERNAME_,subsurfaceWeight)
1035
+ uniform float vSubsurfaceScatterAnisotropy;uniform float vTransmissionWeight;
1036
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,TRANSMISSION_WEIGHT,_VARYINGNAME_,TransmissionWeight,_SAMPLERNAME_,transmissionWeight)
1037
+ uniform float vTransmissionScatterAnisotropy;
1038
+ #endif
1039
+ #endif
1040
+ #endif
1041
+ void main() {
1042
+ #include<clipPlaneFragment>
1043
+ #ifdef ALPHATEST
1044
+ if (texture2D(diffuseSampler,vUV).a<0.4)
1045
+ discard;
1046
+ #endif
1047
+ vec3 normalOutput;
1048
+ #ifdef BUMP
1049
+ vec3 normalW=normalize(vNormalW);
1050
+ #include<bumpFragment>
1051
+ #ifdef NORMAL_WORLDSPACE
1052
+ normalOutput=normalW;
1053
+ #else
1054
+ normalOutput=normalize(vec3(vWorldView*vec4(normalW,0.0)));
1055
+ #endif
1056
+ #elif defined(HAS_NORMAL_ATTRIBUTE)
1057
+ normalOutput=normalize(vNormalV);
1058
+ #elif defined(POSITION)
1059
+ normalOutput=normalize(-cross(dFdx(vPositionW),dFdy(vPositionW)));
1060
+ #endif
1061
+ #ifdef ENCODE_NORMAL
1062
+ normalOutput=normalOutput*0.5+0.5;
1063
+ #endif
1064
+ #ifdef DEPTH
1065
+ gl_FragData[DEPTH_INDEX]=vec4(vViewPos.z/vViewPos.w,0.0,0.0,1.0);
1066
+ #endif
1067
+ #ifdef NORMAL
1068
+ gl_FragData[NORMAL_INDEX]=vec4(normalOutput,1.0);
1069
+ #endif
1070
+ #ifdef SCREENSPACE_DEPTH
1071
+ gl_FragData[SCREENSPACE_DEPTH_INDEX]=vec4(gl_FragCoord.z,0.0,0.0,1.0);
1072
+ #endif
1073
+ #ifdef POSITION
1074
+ gl_FragData[POSITION_INDEX]=vec4(vPositionW,1.0);
1075
+ #endif
1076
+ #ifdef VELOCITY
1077
+ vec2 a=(vCurrentPosition.xy/vCurrentPosition.w)*0.5+0.5;vec2 b=(vPreviousPosition.xy/vPreviousPosition.w)*0.5+0.5;vec2 velocity=abs(a-b);velocity=vec2(pow(velocity.x,1.0/3.0),pow(velocity.y,1.0/3.0))*sign(a-b)*0.5+0.5;gl_FragData[VELOCITY_INDEX]=vec4(velocity,0.0,1.0);
1078
+ #endif
1079
+ #ifdef VELOCITY_LINEAR
1080
+ vec2 velocity=vec2(0.5)*((vPreviousPosition.xy/vPreviousPosition.w) -
1081
+ (vCurrentPosition.xy/vCurrentPosition.w));gl_FragData[VELOCITY_LINEAR_INDEX]=vec4(velocity,0.0,1.0);
1082
+ #endif
1083
+ #ifdef REFLECTIVITY
1084
+ vec4 reflectivity=vec4(0.0,0.0,0.0,1.0);
1085
+ #ifdef METALLICWORKFLOW
1086
+ float metal=1.0;float roughness=1.0;
1087
+ #ifdef ORMTEXTURE
1088
+ metal*=texture2D(reflectivitySampler,vReflectivityUV).b;roughness*=texture2D(reflectivitySampler,vReflectivityUV).g;
1089
+ #else
1090
+ #ifdef METALLIC_TEXTURE
1091
+ metal*=texture2D(metallicSampler,vMetallicUV).r;
1092
+ #endif
1093
+ #ifdef ROUGHNESS_TEXTURE
1094
+ roughness*=texture2D(roughnessSampler,vRoughnessUV).r;
1095
+ #endif
1096
+ #endif
1097
+ #ifdef METALLIC
1098
+ metal*=metallic;
1099
+ #endif
1100
+ #ifdef ROUGHNESS
1101
+ roughness*=(1.0-glossiness);
1102
+ #endif
1103
+ reflectivity.a-=roughness;vec3 color=vec3(1.0);
1104
+ #ifdef ALBEDOTEXTURE
1105
+ color=texture2D(albedoSampler,vAlbedoUV).rgb;
1106
+ #ifdef GAMMAALBEDO
1107
+ color=toLinearSpace(color);
1108
+ #endif
1109
+ #endif
1110
+ #ifdef ALBEDOCOLOR
1111
+ color*=albedoColor.xyz;
1112
+ #endif
1113
+ reflectivity.rgb=mix(vec3(0.04),color,metal);
1114
+ #else
1115
+ #if defined(SPECULARGLOSSINESSTEXTURE) || defined(REFLECTIVITYTEXTURE)
1116
+ reflectivity=texture2D(reflectivitySampler,vReflectivityUV);
1117
+ #ifdef GAMMAREFLECTIVITYTEXTURE
1118
+ reflectivity.rgb=toLinearSpace(reflectivity.rgb);
1119
+ #endif
1120
+ #else
1121
+ #ifdef REFLECTIVITYCOLOR
1122
+ reflectivity.rgb=toLinearSpace(reflectivityColor.xyz);reflectivity.a=1.0;
1123
+ #endif
1124
+ #endif
1125
+ #ifdef GLOSSINESSS
1126
+ reflectivity.a*=glossiness;
1127
+ #endif
1128
+ #endif
1129
+ gl_FragData[REFLECTIVITY_INDEX]=reflectivity;
1130
+ #endif
1131
+ #ifdef IRRADIANCE
1132
+ vec3 irradiance=vec3(0.0);float irradiance_alpha=1.0;
1133
+ #ifdef REFLECTION
1134
+ #ifdef IRRADIANCE_SCATTER_MASK
1135
+ #ifndef BUMP
1136
+ vec2 uvOffset=vec2(0.0);
1137
+ #endif
1138
+ vec3 vSubsurfaceColor=vec3(1.0);float vSubsurfaceRadius=0.0;vec3 vSubsurfaceRadiusScale=vec3(1.0);
1139
+ #include<openpbrSubsurfaceLayerData>
1140
+ float vTransmissionDepth=1.0;vec3 vTransmissionColor=vec3(1.0);vec3 vTransmissionScatter=vec3(0.0);float vTransmissionDispersionScale=0.0;float vTransmissionDispersionAbbeNumber=0.0;
1141
+ #include<openpbrTransmissionLayerData>
1142
+ #endif
1143
+ #ifdef IBL_SHADOW_TEXTURE
1144
+ #ifdef COLORED_IBL_SHADOWS
1145
+ vec3 iblShadowValue=texture(iblShadowSampler,gl_FragCoord.xy/shadowTextureSize).rgb;
1146
+ #else
1147
+ vec3 iblShadowValue=vec3(texture(iblShadowSampler,gl_FragCoord.xy/shadowTextureSize).r);
1148
+ #endif
1149
+ #endif
1150
+ #if defined(USEIRRADIANCEMAP)
1151
+ #ifdef IRRADIANCE_SCATTER_MASK
1152
+ float bendAmount=subsurface_weight*-min(subsurface_scatter_anisotropy,0.0);bendAmount=mix(bendAmount,-min(transmission_scatter_anisotropy,0.0),transmission_weight);vec3 viewVector=normalize(vEyePosition.xyz-vPositionW.xyz);vec3 bentNormal=mix(normalOutput,viewVector,bendAmount*dot(normalOutput,viewVector));
1153
+ #else
1154
+ vec3 bentNormal=normalOutput;
1155
+ #endif
1156
+ irradiance=sampleIrradiance(
1157
+ bentNormal
1158
+ #if defined(NORMAL) && defined(USESPHERICALINVERTEX)
1159
+ ,vEnvironmentIrradiance
1160
+ #endif
1161
+ #if (defined(USESPHERICALFROMREFLECTIONMAP) && (!defined(NORMAL) || !defined(USESPHERICALINVERTEX))) || (defined(USEIRRADIANCEMAP) && defined(REFLECTIONMAP_3D))
1162
+ ,reflectionMatrix
1163
+ #endif
1164
+ #ifdef USEIRRADIANCEMAP
1165
+ ,irradianceSampler
1166
+ #ifdef USE_IRRADIANCE_DOMINANT_DIRECTION
1167
+ ,vReflectionDominantDirection
1168
+ #endif
1169
+ #endif
1170
+ #ifdef REALTIME_FILTERING
1171
+ ,vReflectionFilteringInfo
1172
+ #ifdef IBL_CDF_FILTERING
1173
+ ,icdfSampler
1174
+ #endif
1175
+ #endif
1176
+ ,vReflectionInfos
1177
+ ,vViewPos.xyz
1178
+ ,1.0
1179
+ ,vec3(1.0)
1180
+ );
1181
+ #elif defined(USESPHERICALFROMREFLECTIONMAP)
1182
+ irradiance=vEnvironmentIrradiance;
1183
+ #endif
1184
+ #ifdef IBL_SHADOW_TEXTURE
1185
+ irradiance*=iblShadowValue;
1186
+ #endif
1187
+ #ifdef IRRADIANCE_SCATTER_MASK
1188
+ irradiance_alpha=min(subsurface_weight+transmission_weight,1.0);
1189
+ #endif
1190
+ #endif
1191
+ gl_FragData[IRRADIANCE_INDEX]=vec4(irradiance,irradiance_alpha);
1192
+ #endif
1193
+ }
1194
+ `;for(let e of(r.ShaderStore.ShadersStore[T]||(r.ShaderStore.ShadersStore[T]=A),[i.clipPlaneFragmentDeclaration,{name:o,shader:a},n.bumpFragmentMainFunctions,t.samplerFragmentDeclaration,c.bumpFragmentFunctions,f.helperFunctions,l.pbrFragmentReflectionDeclaration,s.sceneFragmentDeclaration,d.sceneUboDeclaration,m.pbrBRDFFunctions,v.openpbrDielectricReflectance,u.pbrIBLFunctions,E.reflectionFunction,R.openpbrGeometryInfo,p.openpbrIblFunctions,S.clipPlaneFragment,I.bumpFragment,N.openpbrSubsurfaceLayerData,_.openpbrTransmissionLayerData]))r.ShaderStore.IncludesShadersStore[e.name]||(r.ShaderStore.IncludesShadersStore[e.name]=e.shader);e.s(["geometryPixelShader",0,{name:T,shader:A}],61120)}]);