@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,2560 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,31614,e=>{"use strict";var a=e.i(12423),r=e.i(19640),i=e.i(22548),n=e.i(60106),f=e.i(50008),o=e.i(66854),t=e.i(39780),c=e.i(6320),l=e.i(14640),d=e.i(67367);let s="samplerFragmentAlternateDeclaration",E=`#ifdef _DEFINENAME_
2
+ #if _DEFINENAME_DIRECTUV==1
3
+ #define v_VARYINGNAME_UV vMainUV1
4
+ #elif _DEFINENAME_DIRECTUV==2
5
+ #define v_VARYINGNAME_UV vMainUV2
6
+ #elif _DEFINENAME_DIRECTUV==3
7
+ #define v_VARYINGNAME_UV vMainUV3
8
+ #elif _DEFINENAME_DIRECTUV==4
9
+ #define v_VARYINGNAME_UV vMainUV4
10
+ #elif _DEFINENAME_DIRECTUV==5
11
+ #define v_VARYINGNAME_UV vMainUV5
12
+ #elif _DEFINENAME_DIRECTUV==6
13
+ #define v_VARYINGNAME_UV vMainUV6
14
+ #else
15
+ varying v_VARYINGNAME_UV: vec2f;
16
+ #endif
17
+ #endif
18
+ `;a.ShaderStore.IncludesShadersStoreWGSL[s]||(a.ShaderStore.IncludesShadersStoreWGSL[s]=E);var S=e.i(90780);let R="pbrFragmentSamplersDeclaration",m=`#include<samplerFragmentDeclaration>(_DEFINENAME_,ALBEDO,_VARYINGNAME_,Albedo,_SAMPLERNAME_,albedo)
19
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,BASE_WEIGHT,_VARYINGNAME_,BaseWeight,_SAMPLERNAME_,baseWeight)
20
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,BASE_DIFFUSE_ROUGHNESS,_VARYINGNAME_,BaseDiffuseRoughness,_SAMPLERNAME_,baseDiffuseRoughness)
21
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,AMBIENT,_VARYINGNAME_,Ambient,_SAMPLERNAME_,ambient)
22
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,OPACITY,_VARYINGNAME_,Opacity,_SAMPLERNAME_,opacity)
23
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,EMISSIVE,_VARYINGNAME_,Emissive,_SAMPLERNAME_,emissive)
24
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,LIGHTMAP,_VARYINGNAME_,Lightmap,_SAMPLERNAME_,lightmap)
25
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,REFLECTIVITY,_VARYINGNAME_,Reflectivity,_SAMPLERNAME_,reflectivity)
26
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,MICROSURFACEMAP,_VARYINGNAME_,MicroSurfaceSampler,_SAMPLERNAME_,microSurface)
27
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,METALLIC_REFLECTANCE,_VARYINGNAME_,MetallicReflectance,_SAMPLERNAME_,metallicReflectance)
28
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,REFLECTANCE,_VARYINGNAME_,Reflectance,_SAMPLERNAME_,reflectance)
29
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,DECAL,_VARYINGNAME_,Decal,_SAMPLERNAME_,decal)
30
+ #ifdef CLEARCOAT
31
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,CLEARCOAT_TEXTURE,_VARYINGNAME_,ClearCoat,_SAMPLERNAME_,clearCoat)
32
+ #include<samplerFragmentAlternateDeclaration>(_DEFINENAME_,CLEARCOAT_TEXTURE_ROUGHNESS,_VARYINGNAME_,ClearCoatRoughness)
33
+ #if defined(CLEARCOAT_TEXTURE_ROUGHNESS)
34
+ var clearCoatRoughnessSamplerSampler: sampler;var clearCoatRoughnessSampler: texture_2d<f32>;
35
+ #endif
36
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,CLEARCOAT_BUMP,_VARYINGNAME_,ClearCoatBump,_SAMPLERNAME_,clearCoatBump)
37
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,CLEARCOAT_TINT_TEXTURE,_VARYINGNAME_,ClearCoatTint,_SAMPLERNAME_,clearCoatTint)
38
+ #endif
39
+ #ifdef IRIDESCENCE
40
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,IRIDESCENCE_TEXTURE,_VARYINGNAME_,Iridescence,_SAMPLERNAME_,iridescence)
41
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,IRIDESCENCE_THICKNESS_TEXTURE,_VARYINGNAME_,IridescenceThickness,_SAMPLERNAME_,iridescenceThickness)
42
+ #endif
43
+ #ifdef SHEEN
44
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,SHEEN_TEXTURE,_VARYINGNAME_,Sheen,_SAMPLERNAME_,sheen)
45
+ #include<samplerFragmentAlternateDeclaration>(_DEFINENAME_,SHEEN_TEXTURE_ROUGHNESS,_VARYINGNAME_,SheenRoughness)
46
+ #if defined(SHEEN_ROUGHNESS) && defined(SHEEN_TEXTURE_ROUGHNESS)
47
+ var sheenRoughnessSamplerSampler: sampler;var sheenRoughnessSampler: texture_2d<f32>;
48
+ #endif
49
+ #endif
50
+ #ifdef ANISOTROPIC
51
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,ANISOTROPIC_TEXTURE,_VARYINGNAME_,Anisotropy,_SAMPLERNAME_,anisotropy)
52
+ #endif
53
+ #include<pbrFragmentReflectionDeclaration>
54
+ #ifdef ENVIRONMENTBRDF
55
+ var environmentBrdfSamplerSampler: sampler;var environmentBrdfSampler: texture_2d<f32>;
56
+ #endif
57
+ #ifdef SUBSURFACE
58
+ #ifdef SS_REFRACTION
59
+ #ifdef SS_REFRACTIONMAP_3D
60
+ var refractionSamplerSampler: sampler;var refractionSampler: texture_cube<f32>;
61
+ #ifdef LODBASEDMICROSFURACE
62
+ #else
63
+ var refractionLowSamplerSampler: sampler;var refractionLowSampler: texture_cube<f32>;var refractionHighSamplerSampler: sampler;var refractionHighSampler: texture_cube<f32>;
64
+ #endif
65
+ #else
66
+ var refractionSamplerSampler: sampler;var refractionSampler: texture_2d<f32>;
67
+ #ifdef LODBASEDMICROSFURACE
68
+ #else
69
+ var refractionLowSamplerSampler: sampler;var refractionLowSampler: texture_2d<f32>;var refractionHighSamplerSampler: sampler;var refractionHighSampler: texture_2d<f32>;
70
+ #endif
71
+ #endif
72
+ #endif
73
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,SS_THICKNESSANDMASK_TEXTURE,_VARYINGNAME_,Thickness,_SAMPLERNAME_,thickness)
74
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,SS_REFRACTIONINTENSITY_TEXTURE,_VARYINGNAME_,RefractionIntensity,_SAMPLERNAME_,refractionIntensity)
75
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,SS_TRANSLUCENCYINTENSITY_TEXTURE,_VARYINGNAME_,TranslucencyIntensity,_SAMPLERNAME_,translucencyIntensity)
76
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,SS_TRANSLUCENCYCOLOR_TEXTURE,_VARYINGNAME_,TranslucencyColor,_SAMPLERNAME_,translucencyColor)
77
+ #endif
78
+ #ifdef IBL_CDF_FILTERING
79
+ var icdfSamplerSampler: sampler;var icdfSampler: texture_2d<f32>;
80
+ #endif
81
+ `;a.ShaderStore.IncludesShadersStoreWGSL[R]||(a.ShaderStore.IncludesShadersStoreWGSL[R]=m);var C=e.i(61059),u=e.i(35182),v=e.i(54758),I=e.i(25626),A=e.i(69488),p=e.i(4357),N=e.i(95538),O=e.i(90507),T=e.i(62424),L=e.i(30733),_=e.i(60315),M=e.i(99452),D=e.i(42420),F=e.i(42221),h=e.i(48373),g=e.i(61202),P=e.i(69075),U=e.i(87850),b=e.i(62026),y=e.i(28285),G=e.i(82518),B=e.i(28657),V=e.i(78875),W=e.i(23356),H=e.i(21439);let x="pbrBlockAlbedoOpacity",X=`struct albedoOpacityOutParams
82
+ {surfaceAlbedo: vec3f,
83
+ alpha: f32};
84
+ #define pbr_inline
85
+ fn albedoOpacityBlock(
86
+ vAlbedoColor: vec4f
87
+ #ifdef ALBEDO
88
+ ,albedoTexture: vec4f
89
+ ,albedoInfos: vec2f
90
+ #endif
91
+ ,baseWeight: f32
92
+ #ifdef BASE_WEIGHT
93
+ ,baseWeightTexture: vec4f
94
+ ,vBaseWeightInfos: vec2f
95
+ #endif
96
+ #ifdef OPACITY
97
+ ,opacityMap: vec4f
98
+ ,vOpacityInfos: vec2f
99
+ #endif
100
+ #ifdef DETAIL
101
+ ,detailColor: vec4f
102
+ ,vDetailInfos: vec4f
103
+ #endif
104
+ #ifdef DECAL
105
+ ,decalColor: vec4f
106
+ ,vDecalInfos: vec4f
107
+ #endif
108
+ )->albedoOpacityOutParams
109
+ {var outParams: albedoOpacityOutParams;var surfaceAlbedo: vec3f=vAlbedoColor.rgb;var alpha: f32=vAlbedoColor.a;
110
+ #ifdef ALBEDO
111
+ #if defined(ALPHAFROMALBEDO) || defined(ALPHATEST)
112
+ alpha*=albedoTexture.a;
113
+ #endif
114
+ #ifdef GAMMAALBEDO
115
+ surfaceAlbedo*=toLinearSpaceVec3(albedoTexture.rgb);
116
+ #else
117
+ surfaceAlbedo*=albedoTexture.rgb;
118
+ #endif
119
+ surfaceAlbedo*=albedoInfos.y;
120
+ #endif
121
+ #ifndef DECAL_AFTER_DETAIL
122
+ #include<decalFragment>
123
+ #endif
124
+ #if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES)
125
+ surfaceAlbedo*=fragmentInputs.vColor.rgb;
126
+ #endif
127
+ #ifdef DETAIL
128
+ var detailAlbedo: f32=2.0*mix(0.5,detailColor.r,vDetailInfos.y);surfaceAlbedo=surfaceAlbedo.rgb*detailAlbedo*detailAlbedo;
129
+ #endif
130
+ #ifdef DECAL_AFTER_DETAIL
131
+ #include<decalFragment>
132
+ #endif
133
+ #define CUSTOM_FRAGMENT_UPDATE_ALBEDO
134
+ surfaceAlbedo*=baseWeight;
135
+ #ifdef BASE_WEIGHT
136
+ surfaceAlbedo*=baseWeightTexture.r;
137
+ #endif
138
+ #ifdef OPACITY
139
+ #ifdef OPACITYRGB
140
+ alpha=getLuminance(opacityMap.rgb);
141
+ #else
142
+ alpha*=opacityMap.a;
143
+ #endif
144
+ alpha*=vOpacityInfos.y;
145
+ #endif
146
+ #if defined(VERTEXALPHA) || defined(INSTANCESCOLOR) && defined(INSTANCES)
147
+ alpha*=fragmentInputs.vColor.a;
148
+ #endif
149
+ #if !defined(SS_LINKREFRACTIONTOTRANSPARENCY) && !defined(ALPHAFRESNEL)
150
+ #ifdef ALPHATEST
151
+ #if DEBUGMODE != 88
152
+ if (alpha<ALPHATESTVALUE) {discard;}
153
+ #endif
154
+ #ifndef ALPHABLEND
155
+ alpha=1.0;
156
+ #endif
157
+ #endif
158
+ #endif
159
+ outParams.surfaceAlbedo=surfaceAlbedo;outParams.alpha=alpha;return outParams;}
160
+ `;a.ShaderStore.IncludesShadersStoreWGSL[x]||(a.ShaderStore.IncludesShadersStoreWGSL[x]=X);let Y="pbrBlockReflectivity",w=`struct reflectivityOutParams
161
+ {microSurface: f32,
162
+ roughness: f32,
163
+ diffuseRoughness: f32,
164
+ reflectanceF0: f32,
165
+ reflectanceF90: vec3f,
166
+ colorReflectanceF0: vec3f,
167
+ colorReflectanceF90: vec3f,
168
+ #ifdef METALLICWORKFLOW
169
+ surfaceAlbedo: vec3f,
170
+ metallic: f32,
171
+ specularWeight: f32,
172
+ dielectricColorF0: vec3f,
173
+ #endif
174
+ #if defined(METALLICWORKFLOW) && defined(REFLECTIVITY) && defined(AOSTOREINMETALMAPRED)
175
+ ambientOcclusionColor: vec3f,
176
+ #endif
177
+ #if DEBUGMODE>0
178
+ #ifdef METALLICWORKFLOW
179
+ #ifdef REFLECTIVITY
180
+ surfaceMetallicColorMap: vec4f,
181
+ #endif
182
+ metallicF0: vec3f,
183
+ #else
184
+ #ifdef REFLECTIVITY
185
+ surfaceReflectivityColorMap: vec4f,
186
+ #endif
187
+ #endif
188
+ #endif
189
+ };
190
+ #define pbr_inline
191
+ fn reflectivityBlock(
192
+ reflectivityColor: vec4f
193
+ #ifdef METALLICWORKFLOW
194
+ ,surfaceAlbedo: vec3f
195
+ ,metallicReflectanceFactors: vec4f
196
+ #endif
197
+ ,baseDiffuseRoughness: f32
198
+ #ifdef BASE_DIFFUSE_ROUGHNESS
199
+ ,baseDiffuseRoughnessTexture: f32
200
+ ,baseDiffuseRoughnessInfos: vec2f
201
+ #endif
202
+ #ifdef REFLECTIVITY
203
+ ,reflectivityInfos: vec3f
204
+ ,surfaceMetallicOrReflectivityColorMap: vec4f
205
+ #endif
206
+ #if defined(METALLICWORKFLOW) && defined(REFLECTIVITY) && defined(AOSTOREINMETALMAPRED)
207
+ ,ambientOcclusionColorIn: vec3f
208
+ #endif
209
+ #ifdef MICROSURFACEMAP
210
+ ,microSurfaceTexel: vec4f
211
+ #endif
212
+ #ifdef DETAIL
213
+ ,detailColor: vec4f
214
+ ,vDetailInfos: vec4f
215
+ #endif
216
+ )->reflectivityOutParams
217
+ {var outParams: reflectivityOutParams;var microSurface: f32=reflectivityColor.a;var surfaceReflectivityColor: vec3f=reflectivityColor.rgb;
218
+ #ifdef METALLICWORKFLOW
219
+ var metallicRoughness: vec2f=surfaceReflectivityColor.rg;var ior: f32=surfaceReflectivityColor.b;
220
+ #ifdef REFLECTIVITY
221
+ #if DEBUGMODE>0
222
+ outParams.surfaceMetallicColorMap=surfaceMetallicOrReflectivityColorMap;
223
+ #endif
224
+ #ifdef AOSTOREINMETALMAPRED
225
+ var aoStoreInMetalMap: vec3f= vec3f(surfaceMetallicOrReflectivityColorMap.r,surfaceMetallicOrReflectivityColorMap.r,surfaceMetallicOrReflectivityColorMap.r);outParams.ambientOcclusionColor=mix(ambientOcclusionColorIn,aoStoreInMetalMap,reflectivityInfos.z);
226
+ #endif
227
+ #ifdef METALLNESSSTOREINMETALMAPBLUE
228
+ metallicRoughness.r*=surfaceMetallicOrReflectivityColorMap.b;
229
+ #else
230
+ metallicRoughness.r*=surfaceMetallicOrReflectivityColorMap.r;
231
+ #endif
232
+ #ifdef ROUGHNESSSTOREINMETALMAPALPHA
233
+ metallicRoughness.g*=surfaceMetallicOrReflectivityColorMap.a;
234
+ #else
235
+ #ifdef ROUGHNESSSTOREINMETALMAPGREEN
236
+ metallicRoughness.g*=surfaceMetallicOrReflectivityColorMap.g;
237
+ #endif
238
+ #endif
239
+ #endif
240
+ #ifdef DETAIL
241
+ var detailRoughness: f32=mix(0.5,detailColor.b,vDetailInfos.w);var loLerp: f32=mix(0.,metallicRoughness.g,detailRoughness*2.);var hiLerp: f32=mix(metallicRoughness.g,1.,(detailRoughness-0.5)*2.);metallicRoughness.g=mix(loLerp,hiLerp,step(detailRoughness,0.5));
242
+ #endif
243
+ #ifdef MICROSURFACEMAP
244
+ metallicRoughness.g*=microSurfaceTexel.r;
245
+ #endif
246
+ #define CUSTOM_FRAGMENT_UPDATE_METALLICROUGHNESS
247
+ microSurface=1.0-metallicRoughness.g;var baseColor: vec3f=surfaceAlbedo;outParams.metallic=metallicRoughness.r;outParams.specularWeight=metallicReflectanceFactors.a;var dielectricF0 : f32=reflectivityColor.a*outParams.specularWeight;surfaceReflectivityColor=metallicReflectanceFactors.rgb;
248
+ #if DEBUGMODE>0
249
+ outParams.metallicF0=dielectricF0*surfaceReflectivityColor;
250
+ #endif
251
+ #ifdef LEGACY_SPECULAR_ENERGY_CONSERVATION
252
+ outParams.surfaceAlbedo=baseColor.rgb*(vec3f(1.0)-vec3f(dielectricF0)*surfaceReflectivityColor)*(1.0-outParams.metallic);
253
+ #else
254
+ outParams.surfaceAlbedo=baseColor.rgb;
255
+ #endif
256
+ #ifdef LEGACY_SPECULAR_ENERGY_CONSERVATION
257
+ {let reflectivityColor: vec3f=mix(dielectricF0*surfaceReflectivityColor,baseColor.rgb,outParams.metallic);outParams.reflectanceF0=max(reflectivityColor.r,max(reflectivityColor.g,reflectivityColor.b));}
258
+ #else
259
+ #if DIELECTRIC_SPECULAR_MODEL==DIELECTRIC_SPECULAR_MODEL_GLTF
260
+ let maxF0: f32=max(surfaceReflectivityColor.r,max(surfaceReflectivityColor.g,surfaceReflectivityColor.b));outParams.reflectanceF0=mix(dielectricF0*maxF0,1.0f,outParams.metallic);
261
+ #else
262
+ outParams.reflectanceF0=mix(dielectricF0,1.0,outParams.metallic);
263
+ #endif
264
+ #endif
265
+ #ifdef LEGACY_SPECULAR_ENERGY_CONSERVATION
266
+ outParams.reflectanceF90=vec3(outParams.specularWeight);var f90Scale: f32=1.0;
267
+ #else
268
+ var f90Scale: f32=clamp(2.0*(ior-1.0),0.0,1.0);outParams.reflectanceF90=vec3(mix(
269
+ outParams.specularWeight*f90Scale,1.0,outParams.metallic));
270
+ #endif
271
+ outParams.dielectricColorF0=vec3f(dielectricF0*surfaceReflectivityColor);var metallicColorF0: vec3f=baseColor.rgb;outParams.colorReflectanceF0=mix(outParams.dielectricColorF0,metallicColorF0,outParams.metallic);
272
+ #if (DIELECTRIC_SPECULAR_MODEL==DIELECTRIC_SPECULAR_MODEL_OPENPBR)
273
+ let dielectricColorF90
274
+ : vec3f=surfaceReflectivityColor *
275
+ vec3f(outParams.specularWeight*f90Scale);
276
+ #else
277
+ let dielectricColorF90
278
+ : vec3f=vec3f(outParams.specularWeight*f90Scale);
279
+ #endif
280
+ #if (CONDUCTOR_SPECULAR_MODEL==CONDUCTOR_SPECULAR_MODEL_OPENPBR)
281
+ let conductorColorF90: vec3f=surfaceReflectivityColor;
282
+ #else
283
+ #ifdef LEGACY_SPECULAR_ENERGY_CONSERVATION
284
+ let conductorColorF90: vec3f=outParams.reflectanceF90;
285
+ #else
286
+ let conductorColorF90: vec3f=vec3f(1.0f);
287
+ #endif
288
+ #endif
289
+ outParams.colorReflectanceF90=mix(dielectricColorF90,conductorColorF90,outParams.metallic);
290
+ #else
291
+ #ifdef REFLECTIVITY
292
+ surfaceReflectivityColor*=surfaceMetallicOrReflectivityColorMap.rgb;
293
+ #if DEBUGMODE>0
294
+ outParams.surfaceReflectivityColorMap=surfaceMetallicOrReflectivityColorMap;
295
+ #endif
296
+ #ifdef MICROSURFACEFROMREFLECTIVITYMAP
297
+ microSurface*=surfaceMetallicOrReflectivityColorMap.a;microSurface*=reflectivityInfos.z;
298
+ #else
299
+ #ifdef MICROSURFACEAUTOMATIC
300
+ microSurface*=computeDefaultMicroSurface(microSurface,surfaceReflectivityColor);
301
+ #endif
302
+ #ifdef MICROSURFACEMAP
303
+ microSurface*=microSurfaceTexel.r;
304
+ #endif
305
+ #define CUSTOM_FRAGMENT_UPDATE_MICROSURFACE
306
+ #endif
307
+ #endif
308
+ outParams.colorReflectanceF0=surfaceReflectivityColor;outParams.reflectanceF0=max(surfaceReflectivityColor.r,max(surfaceReflectivityColor.g,surfaceReflectivityColor.b));outParams.reflectanceF90=vec3f(1.0);
309
+ #if (DIELECTRIC_SPECULAR_MODEL==DIELECTRIC_SPECULAR_MODEL_OPENPBR)
310
+ outParams.colorReflectanceF90=surfaceReflectivityColor;
311
+ #else
312
+ outParams.colorReflectanceF90=vec3(1.0);
313
+ #endif
314
+ #endif
315
+ microSurface=saturate(microSurface);var roughness: f32=1.-microSurface;var diffuseRoughness: f32=baseDiffuseRoughness;
316
+ #ifdef BASE_DIFFUSE_ROUGHNESS
317
+ diffuseRoughness*=baseDiffuseRoughnessTexture*baseDiffuseRoughnessInfos.y;
318
+ #endif
319
+ outParams.microSurface=microSurface;outParams.roughness=roughness;outParams.diffuseRoughness=diffuseRoughness;return outParams;}
320
+ `;a.ShaderStore.IncludesShadersStoreWGSL[Y]||(a.ShaderStore.IncludesShadersStoreWGSL[Y]=w);let k="pbrBlockAmbientOcclusion",z=`struct ambientOcclusionOutParams
321
+ {ambientOcclusionColor: vec3f,
322
+ #if DEBUGMODE>0 && defined(AMBIENT)
323
+ ambientOcclusionColorMap: vec3f
324
+ #endif
325
+ };
326
+ #define pbr_inline
327
+ fn ambientOcclusionBlock(
328
+ #ifdef AMBIENT
329
+ ambientOcclusionColorMap_: vec3f,
330
+ vAmbientInfos: vec4f
331
+ #endif
332
+ )->ambientOcclusionOutParams
333
+ {
334
+ var outParams: ambientOcclusionOutParams;var ambientOcclusionColor: vec3f= vec3f(1.,1.,1.);
335
+ #ifdef AMBIENT
336
+ var ambientOcclusionColorMap: vec3f=ambientOcclusionColorMap_*vAmbientInfos.y;
337
+ #ifdef AMBIENTINGRAYSCALE
338
+ ambientOcclusionColorMap= vec3f(ambientOcclusionColorMap.r,ambientOcclusionColorMap.r,ambientOcclusionColorMap.r);
339
+ #endif
340
+ ambientOcclusionColor=mix(ambientOcclusionColor,ambientOcclusionColorMap,vAmbientInfos.z);
341
+ #if DEBUGMODE>0
342
+ outParams.ambientOcclusionColorMap=ambientOcclusionColorMap;
343
+ #endif
344
+ #endif
345
+ outParams.ambientOcclusionColor=ambientOcclusionColor;return outParams;}
346
+ `;a.ShaderStore.IncludesShadersStoreWGSL[k]||(a.ShaderStore.IncludesShadersStoreWGSL[k]=z);let K="pbrBlockAlphaFresnel",q=`#ifdef ALPHAFRESNEL
347
+ #if defined(ALPHATEST) || defined(ALPHABLEND)
348
+ struct alphaFresnelOutParams
349
+ {alpha: f32};fn faceforward(N: vec3<f32>,I: vec3<f32>,Nref: vec3<f32>)->vec3<f32> {return select(N,-N,dot(Nref,I)>0.0);}
350
+ #define pbr_inline
351
+ fn alphaFresnelBlock(
352
+ normalW: vec3f,
353
+ viewDirectionW: vec3f,
354
+ alpha: f32,
355
+ microSurface: f32
356
+ )->alphaFresnelOutParams
357
+ {var outParams: alphaFresnelOutParams;var opacityPerceptual: f32=alpha;
358
+ #ifdef LINEARALPHAFRESNEL
359
+ var opacity0: f32=opacityPerceptual;
360
+ #else
361
+ var opacity0: f32=opacityPerceptual*opacityPerceptual;
362
+ #endif
363
+ var opacity90: f32=fresnelGrazingReflectance(opacity0);var normalForward: vec3f=faceforward(normalW,-viewDirectionW,normalW);outParams.alpha=getReflectanceFromAnalyticalBRDFLookup_Jones(saturate(dot(viewDirectionW,normalForward)), vec3f(opacity0), vec3f(opacity90),sqrt(microSurface)).x;
364
+ #ifdef ALPHATEST
365
+ if (outParams.alpha<ALPHATESTVALUE) {discard;}
366
+ #ifndef ALPHABLEND
367
+ outParams.alpha=1.0;
368
+ #endif
369
+ #endif
370
+ return outParams;}
371
+ #endif
372
+ #endif
373
+ `;a.ShaderStore.IncludesShadersStoreWGSL[K]||(a.ShaderStore.IncludesShadersStoreWGSL[K]=q);let Z="pbrBlockAnisotropic",J=`#ifdef ANISOTROPIC
374
+ struct anisotropicOutParams
375
+ {anisotropy: f32,
376
+ anisotropicTangent: vec3f,
377
+ anisotropicBitangent: vec3f,
378
+ anisotropicNormal: vec3f,
379
+ #if DEBUGMODE>0 && defined(ANISOTROPIC_TEXTURE)
380
+ anisotropyMapData: vec3f
381
+ #endif
382
+ };
383
+ #define pbr_inline
384
+ fn anisotropicBlock(
385
+ vAnisotropy: vec3f,
386
+ roughness: f32,
387
+ #ifdef ANISOTROPIC_TEXTURE
388
+ anisotropyMapData: vec3f,
389
+ #endif
390
+ TBN: mat3x3f,
391
+ normalW: vec3f,
392
+ viewDirectionW: vec3f
393
+ )->anisotropicOutParams
394
+ {
395
+ var outParams: anisotropicOutParams;var anisotropy: f32=vAnisotropy.b;var anisotropyDirection: vec3f= vec3f(vAnisotropy.xy,0.);
396
+ #ifdef ANISOTROPIC_TEXTURE
397
+ var amd=anisotropyMapData.rg;anisotropy*=anisotropyMapData.b;
398
+ #if DEBUGMODE>0
399
+ outParams.anisotropyMapData=anisotropyMapData;
400
+ #endif
401
+ amd=amd*2.0-1.0;
402
+ #ifdef ANISOTROPIC_LEGACY
403
+ anisotropyDirection=vec3f(anisotropyDirection.xy*amd,anisotropyDirection.z);
404
+ #else
405
+ anisotropyDirection=vec3f(mat2x2f(anisotropyDirection.x,anisotropyDirection.y,-anisotropyDirection.y,anisotropyDirection.x)*normalize(amd),anisotropyDirection.z);
406
+ #endif
407
+ #endif
408
+ var anisoTBN: mat3x3f= mat3x3f(normalize(TBN[0]),normalize(TBN[1]),normalize(TBN[2]));var anisotropicTangent: vec3f=normalize(anisoTBN*anisotropyDirection);var anisotropicBitangent: vec3f=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;}
409
+ #endif
410
+ `;a.ShaderStore.IncludesShadersStoreWGSL[Z]||(a.ShaderStore.IncludesShadersStoreWGSL[Z]=J);let Q="pbrBlockReflection",j=`#ifdef REFLECTION
411
+ struct reflectionOutParams
412
+ {environmentRadiance: vec4f
413
+ ,environmentIrradiance: vec3f
414
+ #ifdef REFLECTIONMAP_3D
415
+ ,reflectionCoords: vec3f
416
+ #else
417
+ ,reflectionCoords: vec2f
418
+ #endif
419
+ #ifdef SS_TRANSLUCENCY
420
+ #ifdef USESPHERICALFROMREFLECTIONMAP
421
+ #if !defined(NORMAL) || !defined(USESPHERICALINVERTEX)
422
+ ,irradianceVector: vec3f
423
+ #endif
424
+ #endif
425
+ #endif
426
+ };
427
+ #define pbr_inline
428
+ #ifdef REFLECTIONMAP_3D
429
+ fn createReflectionCoords(
430
+ vPositionW: vec3f,
431
+ normalW: vec3f,
432
+ #ifdef ANISOTROPIC
433
+ anisotropicOut: anisotropicOutParams,
434
+ #endif
435
+ )->vec3f
436
+ {var reflectionCoords: vec3f;
437
+ #else
438
+ fn createReflectionCoords(
439
+ vPositionW: vec3f,
440
+ normalW: vec3f,
441
+ #ifdef ANISOTROPIC
442
+ anisotropicOut: anisotropicOutParams,
443
+ #endif
444
+ )->vec2f
445
+ {
446
+ var reflectionCoords: vec2f;
447
+ #endif
448
+ #ifdef ANISOTROPIC
449
+ var reflectionVector: vec3f=computeReflectionCoords( vec4f(vPositionW,1.0),anisotropicOut.anisotropicNormal);
450
+ #else
451
+ var reflectionVector: vec3f=computeReflectionCoords( vec4f(vPositionW,1.0),normalW);
452
+ #endif
453
+ #ifdef REFLECTIONMAP_OPPOSITEZ
454
+ reflectionVector.z*=-1.0;
455
+ #endif
456
+ #ifdef REFLECTIONMAP_3D
457
+ reflectionCoords=reflectionVector;
458
+ #else
459
+ reflectionCoords=reflectionVector.xy;
460
+ #ifdef REFLECTIONMAP_PROJECTION
461
+ reflectionCoords/=reflectionVector.z;
462
+ #endif
463
+ reflectionCoords.y=1.0-reflectionCoords.y;
464
+ #endif
465
+ return reflectionCoords;}
466
+ #define pbr_inline
467
+ fn sampleReflectionTexture(
468
+ alphaG: f32
469
+ ,vReflectionMicrosurfaceInfos: vec3f
470
+ ,vReflectionInfos: vec2f
471
+ ,vReflectionColor: vec3f
472
+ #if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)
473
+ ,NdotVUnclamped: f32
474
+ #endif
475
+ #ifdef LINEARSPECULARREFLECTION
476
+ ,roughness: f32
477
+ #endif
478
+ #ifdef REFLECTIONMAP_3D
479
+ ,reflectionSampler: texture_cube<f32>
480
+ ,reflectionSamplerSampler: sampler
481
+ ,reflectionCoords: vec3f
482
+ #else
483
+ ,reflectionSampler: texture_2d<f32>
484
+ ,reflectionSamplerSampler: sampler
485
+ ,reflectionCoords: vec2f
486
+ #endif
487
+ #ifndef LODBASEDMICROSFURACE
488
+ #ifdef REFLECTIONMAP_3D
489
+ ,reflectionLowSampler: texture_cube<f32>
490
+ ,reflectionLowSamplerSampler: sampler
491
+ ,reflectionHighSampler: texture_cube<f32>
492
+ ,reflectionHighSamplerSampler: sampler
493
+ #else
494
+ ,reflectionLowSampler: texture_2d<f32>
495
+ ,reflectionLowSamplerSampler: sampler
496
+ ,reflectionHighSampler: texture_2d<f32>
497
+ ,reflectionHighSamplerSampler: sampler
498
+ #endif
499
+ #endif
500
+ #ifdef REALTIME_FILTERING
501
+ ,vReflectionFilteringInfo: vec2f
502
+ #endif
503
+ )->vec4f
504
+ {var environmentRadiance: vec4f;
505
+ #if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)
506
+ var reflectionLOD: f32=getLodFromAlphaGNdotV(vReflectionMicrosurfaceInfos.x,alphaG,NdotVUnclamped);
507
+ #elif defined(LINEARSPECULARREFLECTION)
508
+ var reflectionLOD: f32=getLinearLodFromRoughness(vReflectionMicrosurfaceInfos.x,roughness);
509
+ #else
510
+ var reflectionLOD: f32=getLodFromAlphaG(vReflectionMicrosurfaceInfos.x,alphaG);
511
+ #endif
512
+ #ifdef LODBASEDMICROSFURACE
513
+ reflectionLOD=reflectionLOD*vReflectionMicrosurfaceInfos.y+vReflectionMicrosurfaceInfos.z;
514
+ #ifdef LODINREFLECTIONALPHA
515
+ var automaticReflectionLOD: f32=UNPACK_LOD(textureSample(reflectionSampler,reflectionSamplerSampler,reflectionCoords).a);var requestedReflectionLOD: f32=max(automaticReflectionLOD,reflectionLOD);
516
+ #else
517
+ var requestedReflectionLOD: f32=reflectionLOD;
518
+ #endif
519
+ #ifdef REALTIME_FILTERING
520
+ environmentRadiance= vec4f(radiance(alphaG,reflectionSampler,reflectionSamplerSampler,reflectionCoords,vReflectionFilteringInfo),1.0);
521
+ #else
522
+ environmentRadiance=textureSampleLevel(reflectionSampler,reflectionSamplerSampler,reflectionCoords,reflectionLOD);
523
+ #endif
524
+ #else
525
+ var lodReflectionNormalized: f32=saturate(reflectionLOD/log2(vReflectionMicrosurfaceInfos.x));var lodReflectionNormalizedDoubled: f32=lodReflectionNormalized*2.0;var environmentMid: vec4f=textureSample(reflectionSampler,reflectionSamplerSampler,reflectionCoords);if (lodReflectionNormalizedDoubled<1.0){environmentRadiance=mix(
526
+ textureSample(reflectionHighSampler,reflectionHighSamplerSampler,reflectionCoords),
527
+ environmentMid,
528
+ lodReflectionNormalizedDoubled
529
+ );} else {environmentRadiance=mix(
530
+ environmentMid,
531
+ textureSample(reflectionLowSampler,reflectionLowSamplerSampler,reflectionCoords),
532
+ lodReflectionNormalizedDoubled-1.0
533
+ );}
534
+ #endif
535
+ var envRadiance=environmentRadiance.rgb;
536
+ #ifdef RGBDREFLECTION
537
+ envRadiance=fromRGBD(environmentRadiance);
538
+ #endif
539
+ #ifdef GAMMAREFLECTION
540
+ envRadiance=toLinearSpaceVec3(environmentRadiance.rgb);
541
+ #endif
542
+ envRadiance*=vReflectionInfos.x;envRadiance*=vReflectionColor.rgb;return vec4f(envRadiance,environmentRadiance.a);}
543
+ #define pbr_inline
544
+ fn reflectionBlock(
545
+ vPositionW: vec3f
546
+ ,normalW: vec3f
547
+ ,alphaG: f32
548
+ ,vReflectionMicrosurfaceInfos: vec3f
549
+ ,vReflectionInfos: vec2f
550
+ ,vReflectionColor: vec3f
551
+ #ifdef ANISOTROPIC
552
+ ,anisotropicOut: anisotropicOutParams
553
+ #endif
554
+ #if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)
555
+ ,NdotVUnclamped: f32
556
+ #endif
557
+ #ifdef LINEARSPECULARREFLECTION
558
+ ,roughness: f32
559
+ #endif
560
+ #ifdef REFLECTIONMAP_3D
561
+ ,reflectionSampler: texture_cube<f32>
562
+ ,reflectionSamplerSampler: sampler
563
+ #else
564
+ ,reflectionSampler: texture_2d<f32>
565
+ ,reflectionSamplerSampler: sampler
566
+ #endif
567
+ #if defined(NORMAL) && defined(USESPHERICALINVERTEX)
568
+ ,vEnvironmentIrradiance: vec3f
569
+ #endif
570
+ #if (defined(USESPHERICALFROMREFLECTIONMAP) && (!defined(NORMAL) || !defined(USESPHERICALINVERTEX))) || (defined(USEIRRADIANCEMAP) && defined(REFLECTIONMAP_3D))
571
+ ,reflectionMatrix: mat4x4f
572
+ #endif
573
+ #ifdef USEIRRADIANCEMAP
574
+ #ifdef REFLECTIONMAP_3D
575
+ ,irradianceSampler: texture_cube<f32>
576
+ ,irradianceSamplerSampler: sampler
577
+ #else
578
+ ,irradianceSampler: texture_2d<f32>
579
+ ,irradianceSamplerSampler: sampler
580
+ #endif
581
+ #ifdef USE_IRRADIANCE_DOMINANT_DIRECTION
582
+ ,reflectionDominantDirection: vec3f
583
+ #endif
584
+ #endif
585
+ #ifndef LODBASEDMICROSFURACE
586
+ #ifdef REFLECTIONMAP_3D
587
+ ,reflectionLowSampler: texture_cube<f32>
588
+ ,reflectionLowSamplerSampler: sampler
589
+ ,reflectionHighSampler: texture_cube<f32>
590
+ ,reflectionHighSamplerSampler: sampler
591
+ #else
592
+ ,reflectionLowSampler: texture_2d<f32>
593
+ ,reflectionLowSamplerSampler: sampler
594
+ ,reflectionHighSampler: texture_2d<f32>
595
+ ,reflectionHighSamplerSampler: sampler
596
+ #endif
597
+ #endif
598
+ #ifdef REALTIME_FILTERING
599
+ ,vReflectionFilteringInfo: vec2f
600
+ #ifdef IBL_CDF_FILTERING
601
+ ,icdfSampler: texture_2d<f32>
602
+ ,icdfSamplerSampler: sampler
603
+ #endif
604
+ #endif
605
+ ,viewDirectionW: vec3f
606
+ ,diffuseRoughness: f32
607
+ ,surfaceAlbedo: vec3f
608
+ )->reflectionOutParams
609
+ {var outParams: reflectionOutParams;var environmentRadiance: vec4f= vec4f(0.,0.,0.,0.);
610
+ #ifdef REFLECTIONMAP_3D
611
+ var reflectionCoords: vec3f= vec3f(0.);
612
+ #else
613
+ var reflectionCoords: vec2f= vec2f(0.);
614
+ #endif
615
+ reflectionCoords=createReflectionCoords(
616
+ vPositionW,
617
+ normalW,
618
+ #ifdef ANISOTROPIC
619
+ anisotropicOut,
620
+ #endif
621
+ );environmentRadiance=sampleReflectionTexture(
622
+ alphaG
623
+ ,vReflectionMicrosurfaceInfos
624
+ ,vReflectionInfos
625
+ ,vReflectionColor
626
+ #if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)
627
+ ,NdotVUnclamped
628
+ #endif
629
+ #ifdef LINEARSPECULARREFLECTION
630
+ ,roughness
631
+ #endif
632
+ #ifdef REFLECTIONMAP_3D
633
+ ,reflectionSampler
634
+ ,reflectionSamplerSampler
635
+ ,reflectionCoords
636
+ #else
637
+ ,reflectionSampler
638
+ ,reflectionSamplerSampler
639
+ ,reflectionCoords
640
+ #endif
641
+ #ifndef LODBASEDMICROSFURACE
642
+ ,reflectionLowSampler
643
+ ,reflectionLowSamplerSampler
644
+ ,reflectionHighSampler
645
+ ,reflectionHighSamplerSampler
646
+ #endif
647
+ #ifdef REALTIME_FILTERING
648
+ ,vReflectionFilteringInfo
649
+ #endif
650
+ );var environmentIrradiance: vec3f= vec3f(0.,0.,0.);
651
+ #if (defined(USESPHERICALFROMREFLECTIONMAP) && (!defined(NORMAL) || !defined(USESPHERICALINVERTEX))) || (defined(USEIRRADIANCEMAP) && defined(REFLECTIONMAP_3D))
652
+ #ifdef ANISOTROPIC
653
+ var irradianceVector: vec3f= (reflectionMatrix* vec4f(anisotropicOut.anisotropicNormal,0)).xyz;
654
+ #else
655
+ var irradianceVector: vec3f= (reflectionMatrix* vec4f(normalW,0)).xyz;
656
+ #endif
657
+ var irradianceView: vec3f= (reflectionMatrix* vec4f(viewDirectionW,0)).xyz;
658
+ #if !defined(USE_IRRADIANCE_DOMINANT_DIRECTION) && !defined(REALTIME_FILTERING)
659
+ #if BASE_DIFFUSE_MODEL != BRDF_DIFFUSE_MODEL_LAMBERT && BASE_DIFFUSE_MODEL != BRDF_DIFFUSE_MODEL_LEGACY
660
+ var NdotV: f32=max(dot(normalW,viewDirectionW),0.0);irradianceVector=mix(irradianceVector,irradianceView,(0.5*(1.0-NdotV))*diffuseRoughness);
661
+ #endif
662
+ #endif
663
+ #ifdef REFLECTIONMAP_OPPOSITEZ
664
+ irradianceVector.z*=-1.0;irradianceView.z*=-1.0;
665
+ #endif
666
+ #ifdef INVERTCUBICMAP
667
+ irradianceVector.y*=-1.0;irradianceView.y*=-1.0;
668
+ #endif
669
+ #endif
670
+ #ifdef USESPHERICALFROMREFLECTIONMAP
671
+ #if defined(NORMAL) && defined(USESPHERICALINVERTEX)
672
+ environmentIrradiance=vEnvironmentIrradiance;
673
+ #else
674
+ #if defined(REALTIME_FILTERING)
675
+ environmentIrradiance=irradiance(reflectionSampler,reflectionSamplerSampler,irradianceVector,vReflectionFilteringInfo,diffuseRoughness,surfaceAlbedo,irradianceView
676
+ #ifdef IBL_CDF_FILTERING
677
+ ,icdfSampler
678
+ ,icdfSamplerSampler
679
+ #endif
680
+ );
681
+ #else
682
+ environmentIrradiance=computeEnvironmentIrradiance(irradianceVector);
683
+ #endif
684
+ #ifdef SS_TRANSLUCENCY
685
+ outParams.irradianceVector=irradianceVector;
686
+ #endif
687
+ #endif
688
+ #elif defined(USEIRRADIANCEMAP)
689
+ #ifdef REFLECTIONMAP_3D
690
+ var environmentIrradiance4: vec4f=textureSample(irradianceSampler,irradianceSamplerSampler,irradianceVector);
691
+ #else
692
+ var environmentIrradiance4: vec4f=textureSample(irradianceSampler,irradianceSamplerSampler,reflectionCoords);
693
+ #endif
694
+ #ifdef USE_IRRADIANCE_DOMINANT_DIRECTION
695
+ var Ls: vec3f=normalize(reflectionDominantDirection);var NoL: f32=dot(irradianceVector,Ls);var NoV: f32=dot(irradianceVector,irradianceView);var diffuseRoughnessTerm: vec3f=vec3f(1.0);
696
+ #if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON
697
+ var LoV: f32=dot(Ls,irradianceView);var mag: f32=length(reflectionDominantDirection)*2.0f;var clampedAlbedo: vec3f=clamp(surfaceAlbedo,vec3f(0.1),vec3f(1.0));diffuseRoughnessTerm=diffuseBRDF_EON(clampedAlbedo,diffuseRoughness,NoL,NoV,LoV)*PI;diffuseRoughnessTerm=diffuseRoughnessTerm/clampedAlbedo;diffuseRoughnessTerm=mix(vec3f(1.0),diffuseRoughnessTerm,sqrt(clamp(mag*NoV,0.0,1.0f)));
698
+ #elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_BURLEY
699
+ var H: vec3f=(irradianceView+Ls)*0.5f;var VoH: f32=dot(irradianceView,H);diffuseRoughnessTerm=vec3f(diffuseBRDF_Burley(NoL,NoV,VoH,diffuseRoughness)*PI);
700
+ #endif
701
+ environmentIrradiance=environmentIrradiance4.rgb*diffuseRoughnessTerm;
702
+ #else
703
+ environmentIrradiance=environmentIrradiance4.rgb;
704
+ #endif
705
+ #ifdef RGBDREFLECTION
706
+ environmentIrradiance=fromRGBD(environmentIrradiance4);
707
+ #endif
708
+ #ifdef GAMMAREFLECTION
709
+ environmentIrradiance=toLinearSpaceVec3(environmentIrradiance.rgb);
710
+ #endif
711
+ #endif
712
+ environmentIrradiance*=vReflectionColor.rgb*vReflectionInfos.x;
713
+ #ifdef MIX_IBL_RADIANCE_WITH_IRRADIANCE
714
+ outParams.environmentRadiance=vec4f(mix(environmentRadiance.rgb,environmentIrradiance,alphaG),environmentRadiance.a);
715
+ #else
716
+ outParams.environmentRadiance=environmentRadiance;
717
+ #endif
718
+ outParams.environmentIrradiance=environmentIrradiance;outParams.reflectionCoords=reflectionCoords;return outParams;}
719
+ #endif
720
+ `;a.ShaderStore.IncludesShadersStoreWGSL[Q]||(a.ShaderStore.IncludesShadersStoreWGSL[Q]=j);let $="pbrBlockSheen",ee=`#ifdef SHEEN
721
+ struct sheenOutParams
722
+ {sheenIntensity: f32
723
+ ,sheenColor: vec3f
724
+ ,sheenRoughness: f32
725
+ #ifdef SHEEN_LINKWITHALBEDO
726
+ ,surfaceAlbedo: vec3f
727
+ #endif
728
+ #if defined(ENVIRONMENTBRDF) && defined(SHEEN_ALBEDOSCALING)
729
+ ,sheenAlbedoScaling: f32
730
+ #endif
731
+ #if defined(REFLECTION) && defined(ENVIRONMENTBRDF)
732
+ ,finalSheenRadianceScaled: vec3f
733
+ #endif
734
+ #if DEBUGMODE>0
735
+ #ifdef SHEEN_TEXTURE
736
+ ,sheenMapData: vec4f
737
+ #endif
738
+ #if defined(REFLECTION) && defined(ENVIRONMENTBRDF)
739
+ ,sheenEnvironmentReflectance: vec3f
740
+ #endif
741
+ #endif
742
+ };
743
+ #define pbr_inline
744
+ fn sheenBlock(
745
+ vSheenColor: vec4f
746
+ #ifdef SHEEN_ROUGHNESS
747
+ ,vSheenRoughness: f32
748
+ #if defined(SHEEN_TEXTURE_ROUGHNESS) && !defined(SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE)
749
+ ,sheenMapRoughnessData: vec4f
750
+ #endif
751
+ #endif
752
+ ,roughness: f32
753
+ #ifdef SHEEN_TEXTURE
754
+ ,sheenMapData: vec4f
755
+ ,sheenMapLevel: f32
756
+ #endif
757
+ ,reflectance: f32
758
+ #ifdef SHEEN_LINKWITHALBEDO
759
+ ,baseColor: vec3f
760
+ ,surfaceAlbedo: vec3f
761
+ #endif
762
+ #ifdef ENVIRONMENTBRDF
763
+ ,NdotV: f32
764
+ ,environmentBrdf: vec3f
765
+ #endif
766
+ #if defined(REFLECTION) && defined(ENVIRONMENTBRDF)
767
+ ,AARoughnessFactors: vec2f
768
+ ,vReflectionMicrosurfaceInfos: vec3f
769
+ ,vReflectionInfos: vec2f
770
+ ,vReflectionColor: vec3f
771
+ ,vLightingIntensity: vec4f
772
+ #ifdef REFLECTIONMAP_3D
773
+ ,reflectionSampler: texture_cube<f32>
774
+ ,reflectionSamplerSampler: sampler
775
+ ,reflectionCoords: vec3f
776
+ #else
777
+ ,reflectionSampler: texture_2d<f32>
778
+ ,reflectionSamplerSampler: sampler
779
+ ,reflectionCoords: vec2f
780
+ #endif
781
+ ,NdotVUnclamped: f32
782
+ #ifndef LODBASEDMICROSFURACE
783
+ #ifdef REFLECTIONMAP_3D
784
+ ,reflectionLowSampler: texture_cube<f32>
785
+ ,reflectionLowSamplerSampler: sampler
786
+ ,reflectionHighSampler: texture_cube<f32>
787
+ ,reflectionHighSamplerSampler: sampler
788
+ #else
789
+ ,reflectionLowSampler: texture_2d<f32>
790
+ ,reflectionLowSamplerSampler: sampler
791
+ ,reflectionHighSampler: texture_2d<f32>
792
+ ,reflectionHighSamplerSampler: sampler
793
+ #endif
794
+ #endif
795
+ #ifdef REALTIME_FILTERING
796
+ ,vReflectionFilteringInfo: vec2f
797
+ #endif
798
+ #if !defined(REFLECTIONMAP_SKYBOX) && defined(RADIANCEOCCLUSION)
799
+ ,seo: f32
800
+ #endif
801
+ #if !defined(REFLECTIONMAP_SKYBOX) && defined(HORIZONOCCLUSION) && defined(BUMP) && defined(REFLECTIONMAP_3D)
802
+ ,eho: f32
803
+ #endif
804
+ #endif
805
+ )->sheenOutParams
806
+ {var outParams: sheenOutParams;var sheenIntensity: f32=vSheenColor.a;
807
+ #ifdef SHEEN_TEXTURE
808
+ #if DEBUGMODE>0
809
+ outParams.sheenMapData=sheenMapData;
810
+ #endif
811
+ #endif
812
+ #ifdef SHEEN_LINKWITHALBEDO
813
+ var sheenFactor: f32=pow5(1.0-sheenIntensity);var sheenColor: vec3f=baseColor.rgb*(1.0-sheenFactor);var sheenRoughness: f32=sheenIntensity;outParams.surfaceAlbedo=surfaceAlbedo*sheenFactor;
814
+ #ifdef SHEEN_TEXTURE
815
+ sheenIntensity*=sheenMapData.a;
816
+ #endif
817
+ #else
818
+ var sheenColor: vec3f=vSheenColor.rgb;
819
+ #ifdef SHEEN_TEXTURE
820
+ #ifdef SHEEN_GAMMATEXTURE
821
+ sheenColor*=toLinearSpaceVec3(sheenMapData.rgb);
822
+ #else
823
+ sheenColor*=sheenMapData.rgb;
824
+ #endif
825
+ sheenColor*=sheenMapLevel;
826
+ #endif
827
+ #ifdef SHEEN_ROUGHNESS
828
+ var sheenRoughness: f32=vSheenRoughness;
829
+ #ifdef SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE
830
+ #if defined(SHEEN_TEXTURE)
831
+ sheenRoughness*=sheenMapData.a;
832
+ #endif
833
+ #elif defined(SHEEN_TEXTURE_ROUGHNESS)
834
+ sheenRoughness*=sheenMapRoughnessData.a;
835
+ #endif
836
+ #else
837
+ var sheenRoughness: f32=roughness;
838
+ #ifdef SHEEN_TEXTURE
839
+ sheenIntensity*=sheenMapData.a;
840
+ #endif
841
+ #endif
842
+ #if !defined(SHEEN_ALBEDOSCALING)
843
+ sheenIntensity*=(1.-reflectance);
844
+ #endif
845
+ sheenColor*=sheenIntensity;
846
+ #endif
847
+ #ifdef ENVIRONMENTBRDF
848
+ /*#ifdef SHEEN_SOFTER
849
+ var environmentSheenBrdf: vec3f= vec3f(0.,0.,getBRDFLookupCharlieSheen(NdotV,sheenRoughness));
850
+ #else*/
851
+ #ifdef SHEEN_ROUGHNESS
852
+ var environmentSheenBrdf: vec3f=getBRDFLookup(NdotV,sheenRoughness);
853
+ #else
854
+ var environmentSheenBrdf: vec3f=environmentBrdf;
855
+ #endif
856
+ /*#endif*/
857
+ #endif
858
+ #if defined(REFLECTION) && defined(ENVIRONMENTBRDF)
859
+ var sheenAlphaG: f32=convertRoughnessToAverageSlope(sheenRoughness);
860
+ #ifdef SPECULARAA
861
+ sheenAlphaG+=AARoughnessFactors.y;
862
+ #endif
863
+ var environmentSheenRadiance: vec4f= vec4f(0.,0.,0.,0.);environmentSheenRadiance=sampleReflectionTexture(
864
+ sheenAlphaG
865
+ ,vReflectionMicrosurfaceInfos
866
+ ,vReflectionInfos
867
+ ,vReflectionColor
868
+ #if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)
869
+ ,NdotVUnclamped
870
+ #endif
871
+ #ifdef LINEARSPECULARREFLECTION
872
+ ,sheenRoughness
873
+ #endif
874
+ ,reflectionSampler
875
+ ,reflectionSamplerSampler
876
+ ,reflectionCoords
877
+ #ifndef LODBASEDMICROSFURACE
878
+ ,reflectionLowSampler
879
+ ,reflectionLowSamplerSampler
880
+ ,reflectionHighSampler
881
+ ,reflectionHighSamplerSampler
882
+ #endif
883
+ #ifdef REALTIME_FILTERING
884
+ ,vReflectionFilteringInfo
885
+ #endif
886
+ );var sheenEnvironmentReflectance: vec3f=getSheenReflectanceFromBRDFLookup(sheenColor,environmentSheenBrdf);
887
+ #if !defined(REFLECTIONMAP_SKYBOX) && defined(RADIANCEOCCLUSION)
888
+ sheenEnvironmentReflectance*=seo;
889
+ #endif
890
+ #if !defined(REFLECTIONMAP_SKYBOX) && defined(HORIZONOCCLUSION) && defined(BUMP) && defined(REFLECTIONMAP_3D)
891
+ sheenEnvironmentReflectance*=eho;
892
+ #endif
893
+ #if DEBUGMODE>0
894
+ outParams.sheenEnvironmentReflectance=sheenEnvironmentReflectance;
895
+ #endif
896
+ outParams.finalSheenRadianceScaled=
897
+ environmentSheenRadiance.rgb *
898
+ sheenEnvironmentReflectance *
899
+ vLightingIntensity.z;
900
+ #endif
901
+ #if defined(ENVIRONMENTBRDF) && defined(SHEEN_ALBEDOSCALING)
902
+ outParams.sheenAlbedoScaling=1.0-sheenIntensity*max(max(sheenColor.r,sheenColor.g),sheenColor.b)*environmentSheenBrdf.b;
903
+ #endif
904
+ outParams.sheenIntensity=sheenIntensity;outParams.sheenColor=sheenColor;outParams.sheenRoughness=sheenRoughness;return outParams;}
905
+ #endif
906
+ `;a.ShaderStore.IncludesShadersStoreWGSL[$]||(a.ShaderStore.IncludesShadersStoreWGSL[$]=ee);let ea="pbrBlockClearcoat",er=`struct clearcoatOutParams
907
+ {specularEnvironmentR0: vec3f,
908
+ conservationFactor: f32,
909
+ clearCoatNormalW: vec3f,
910
+ clearCoatAARoughnessFactors: vec2f,
911
+ clearCoatIntensity: f32,
912
+ clearCoatRoughness: f32,
913
+ #ifdef REFLECTION
914
+ finalClearCoatRadianceScaled: vec3f,
915
+ #endif
916
+ #ifdef CLEARCOAT_TINT
917
+ absorption: vec3f,
918
+ clearCoatNdotVRefract: f32,
919
+ clearCoatColor: vec3f,
920
+ clearCoatThickness: f32,
921
+ #endif
922
+ #if defined(ENVIRONMENTBRDF) && defined(MS_BRDF_ENERGY_CONSERVATION)
923
+ energyConservationFactorClearCoat: vec3f,
924
+ #endif
925
+ #if DEBUGMODE>0
926
+ #ifdef CLEARCOAT_BUMP
927
+ TBNClearCoat: mat3x3f,
928
+ #endif
929
+ #ifdef CLEARCOAT_TEXTURE
930
+ clearCoatMapData: vec2f,
931
+ #endif
932
+ #if defined(CLEARCOAT_TINT) && defined(CLEARCOAT_TINT_TEXTURE)
933
+ clearCoatTintMapData: vec4f,
934
+ #endif
935
+ #ifdef REFLECTION
936
+ environmentClearCoatRadiance: vec4f,
937
+ clearCoatEnvironmentReflectance: vec3f,
938
+ #endif
939
+ clearCoatNdotV: f32
940
+ #endif
941
+ };
942
+ #ifdef CLEARCOAT
943
+ #define pbr_inline
944
+ fn clearcoatBlock(
945
+ vPositionW: vec3f
946
+ ,geometricNormalW: vec3f
947
+ ,viewDirectionW: vec3f
948
+ ,vClearCoatParams: vec2f
949
+ #if defined(CLEARCOAT_TEXTURE_ROUGHNESS) && !defined(CLEARCOAT_TEXTURE_ROUGHNESS_IDENTICAL) && !defined(CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE)
950
+ ,clearCoatMapRoughnessData: vec4f
951
+ #endif
952
+ ,specularEnvironmentR0: vec3f
953
+ #ifdef CLEARCOAT_TEXTURE
954
+ ,clearCoatMapData: vec2f
955
+ #endif
956
+ #ifdef CLEARCOAT_TINT
957
+ ,vClearCoatTintParams: vec4f
958
+ ,clearCoatColorAtDistance: f32
959
+ ,vClearCoatRefractionParams: vec4f
960
+ #ifdef CLEARCOAT_TINT_TEXTURE
961
+ ,clearCoatTintMapData: vec4f
962
+ #endif
963
+ #endif
964
+ #ifdef CLEARCOAT_BUMP
965
+ ,vClearCoatBumpInfos: vec2f
966
+ ,clearCoatBumpMapData: vec4f
967
+ ,vClearCoatBumpUV: vec2f
968
+ #if defined(TANGENT) && defined(NORMAL)
969
+ ,vTBN: mat3x3f
970
+ #else
971
+ ,vClearCoatTangentSpaceParams: vec2f
972
+ #endif
973
+ #ifdef OBJECTSPACE_NORMALMAP
974
+ ,normalMatrix: mat4x4f
975
+ #endif
976
+ #endif
977
+ #if defined(FORCENORMALFORWARD) && defined(NORMAL)
978
+ ,faceNormal: vec3f
979
+ #endif
980
+ #ifdef REFLECTION
981
+ ,vReflectionMicrosurfaceInfos: vec3f
982
+ ,vReflectionInfos: vec2f
983
+ ,vReflectionColor: vec3f
984
+ ,vLightingIntensity: vec4f
985
+ #ifdef REFLECTIONMAP_3D
986
+ ,reflectionSampler: texture_cube<f32>
987
+ ,reflectionSamplerSampler: sampler
988
+ #else
989
+ ,reflectionSampler: texture_2d<f32>
990
+ ,reflectionSamplerSampler: sampler
991
+ #endif
992
+ #ifndef LODBASEDMICROSFURACE
993
+ #ifdef REFLECTIONMAP_3D
994
+ ,reflectionLowSampler: texture_cube<f32>
995
+ ,reflectionLowSamplerSampler: sampler
996
+ ,reflectionHighSampler: texture_cube<f32>
997
+ ,reflectionHighSamplerSampler: sampler
998
+ #else
999
+ ,reflectionLowSampler: texture_2d<f32>
1000
+ ,reflectionLowSamplerSampler: sampler
1001
+ ,reflectionHighSampler: texture_2d<f32>
1002
+ ,reflectionHighSamplerSampler: sampler
1003
+ #endif
1004
+ #endif
1005
+ #ifdef REALTIME_FILTERING
1006
+ ,vReflectionFilteringInfo: vec2f
1007
+ #endif
1008
+ #endif
1009
+ #if defined(CLEARCOAT_BUMP) || defined(TWOSIDEDLIGHTING)
1010
+ ,frontFacingMultiplier: f32
1011
+ #endif
1012
+ )->clearcoatOutParams
1013
+ {var outParams: clearcoatOutParams;var clearCoatIntensity: f32=vClearCoatParams.x;var clearCoatRoughness: f32=vClearCoatParams.y;
1014
+ #ifdef CLEARCOAT_TEXTURE
1015
+ clearCoatIntensity*=clearCoatMapData.x;
1016
+ #ifdef CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE
1017
+ clearCoatRoughness*=clearCoatMapData.y;
1018
+ #endif
1019
+ #if DEBUGMODE>0
1020
+ outParams.clearCoatMapData=clearCoatMapData;
1021
+ #endif
1022
+ #endif
1023
+ #if defined(CLEARCOAT_TEXTURE_ROUGHNESS) && !defined(CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE)
1024
+ clearCoatRoughness*=clearCoatMapRoughnessData.y;
1025
+ #endif
1026
+ outParams.clearCoatIntensity=clearCoatIntensity;outParams.clearCoatRoughness=clearCoatRoughness;
1027
+ #ifdef CLEARCOAT_TINT
1028
+ var clearCoatColor: vec3f=vClearCoatTintParams.rgb;var clearCoatThickness: f32=vClearCoatTintParams.a;
1029
+ #ifdef CLEARCOAT_TINT_TEXTURE
1030
+ #ifdef CLEARCOAT_TINT_GAMMATEXTURE
1031
+ clearCoatColor*=toLinearSpaceVec3(clearCoatTintMapData.rgb);
1032
+ #else
1033
+ clearCoatColor*=clearCoatTintMapData.rgb;
1034
+ #endif
1035
+ clearCoatThickness*=clearCoatTintMapData.a;
1036
+ #if DEBUGMODE>0
1037
+ outParams.clearCoatTintMapData=clearCoatTintMapData;
1038
+ #endif
1039
+ #endif
1040
+ outParams.clearCoatColor=computeColorAtDistanceInMedia(clearCoatColor,clearCoatColorAtDistance);outParams.clearCoatThickness=clearCoatThickness;
1041
+ #endif
1042
+ #ifdef CLEARCOAT_REMAP_F0
1043
+ var specularEnvironmentR0Updated: vec3f=getR0RemappedForClearCoat(specularEnvironmentR0);
1044
+ #else
1045
+ var specularEnvironmentR0Updated: vec3f=specularEnvironmentR0;
1046
+ #endif
1047
+ outParams.specularEnvironmentR0=mix(specularEnvironmentR0,specularEnvironmentR0Updated,clearCoatIntensity);var clearCoatNormalW: vec3f=geometricNormalW;
1048
+ #ifdef CLEARCOAT_BUMP
1049
+ #ifdef NORMALXYSCALE
1050
+ var clearCoatNormalScale: f32=1.0;
1051
+ #else
1052
+ var clearCoatNormalScale: f32=vClearCoatBumpInfos.y;
1053
+ #endif
1054
+ #if defined(TANGENT) && defined(NORMAL)
1055
+ var TBNClearCoat: mat3x3f=vTBN;
1056
+ #else
1057
+ var TBNClearCoatUV: vec2f=vClearCoatBumpUV*frontFacingMultiplier;var TBNClearCoat: mat3x3f=cotangent_frame(clearCoatNormalW*clearCoatNormalScale,vPositionW,TBNClearCoatUV,vClearCoatTangentSpaceParams);
1058
+ #endif
1059
+ #if DEBUGMODE>0
1060
+ outParams.TBNClearCoat=TBNClearCoat;
1061
+ #endif
1062
+ #ifdef OBJECTSPACE_NORMALMAP
1063
+ clearCoatNormalW=normalize(clearCoatBumpMapData.xyz *2.0-1.0);clearCoatNormalW=normalize( mat3x3f(normalMatrix[0].xyz,normalMatrix[1].xyz,normalMatrix[2].xyz)*clearCoatNormalW);
1064
+ #else
1065
+ clearCoatNormalW=perturbNormal(TBNClearCoat,clearCoatBumpMapData.xyz,vClearCoatBumpInfos.y);
1066
+ #endif
1067
+ #endif
1068
+ #if defined(FORCENORMALFORWARD) && defined(NORMAL)
1069
+ clearCoatNormalW*=sign(dot(clearCoatNormalW,faceNormal));
1070
+ #endif
1071
+ #if defined(TWOSIDEDLIGHTING) && defined(NORMAL)
1072
+ clearCoatNormalW=clearCoatNormalW*frontFacingMultiplier;
1073
+ #endif
1074
+ outParams.clearCoatNormalW=clearCoatNormalW;outParams.clearCoatAARoughnessFactors=getAARoughnessFactors(clearCoatNormalW.xyz);var clearCoatNdotVUnclamped: f32=dot(clearCoatNormalW,viewDirectionW);var clearCoatNdotV: f32=absEps(clearCoatNdotVUnclamped);
1075
+ #if DEBUGMODE>0
1076
+ outParams.clearCoatNdotV=clearCoatNdotV;
1077
+ #endif
1078
+ #ifdef CLEARCOAT_TINT
1079
+ var clearCoatVRefract: vec3f=refract(-viewDirectionW,clearCoatNormalW,vClearCoatRefractionParams.y);outParams.clearCoatNdotVRefract=absEps(dot(clearCoatNormalW,clearCoatVRefract));
1080
+ #endif
1081
+ #if defined(ENVIRONMENTBRDF) && (!defined(REFLECTIONMAP_SKYBOX) || defined(MS_BRDF_ENERGY_CONSERVATION))
1082
+ var environmentClearCoatBrdf: vec3f=getBRDFLookup(clearCoatNdotV,clearCoatRoughness);
1083
+ #endif
1084
+ #if defined(REFLECTION)
1085
+ var clearCoatAlphaG: f32=convertRoughnessToAverageSlope(clearCoatRoughness);
1086
+ #ifdef SPECULARAA
1087
+ clearCoatAlphaG+=outParams.clearCoatAARoughnessFactors.y;
1088
+ #endif
1089
+ var environmentClearCoatRadiance: vec4f= vec4f(0.,0.,0.,0.);var clearCoatReflectionVector: vec3f=computeReflectionCoords( vec4f(vPositionW,1.0),clearCoatNormalW);
1090
+ #ifdef REFLECTIONMAP_OPPOSITEZ
1091
+ clearCoatReflectionVector.z*=-1.0;
1092
+ #endif
1093
+ #ifdef REFLECTIONMAP_3D
1094
+ var clearCoatReflectionCoords: vec3f=clearCoatReflectionVector;
1095
+ #else
1096
+ var clearCoatReflectionCoords: vec2f=clearCoatReflectionVector.xy;
1097
+ #ifdef REFLECTIONMAP_PROJECTION
1098
+ clearCoatReflectionCoords/=clearCoatReflectionVector.z;
1099
+ #endif
1100
+ clearCoatReflectionCoords.y=1.0-clearCoatReflectionCoords.y;
1101
+ #endif
1102
+ environmentClearCoatRadiance=sampleReflectionTexture(
1103
+ clearCoatAlphaG
1104
+ ,vReflectionMicrosurfaceInfos
1105
+ ,vReflectionInfos
1106
+ ,vReflectionColor
1107
+ #if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)
1108
+ ,clearCoatNdotVUnclamped
1109
+ #endif
1110
+ #ifdef LINEARSPECULARREFLECTION
1111
+ ,clearCoatRoughness
1112
+ #endif
1113
+ ,reflectionSampler
1114
+ ,reflectionSamplerSampler
1115
+ ,clearCoatReflectionCoords
1116
+ #ifndef LODBASEDMICROSFURACE
1117
+ ,reflectionLowSampler
1118
+ ,reflectionLowSamplerSampler
1119
+ ,reflectionHighSampler
1120
+ ,reflectionHighSamplerSampler
1121
+ #endif
1122
+ #ifdef REALTIME_FILTERING
1123
+ ,vReflectionFilteringInfo
1124
+ #endif
1125
+ );
1126
+ #if DEBUGMODE>0
1127
+ outParams.environmentClearCoatRadiance=environmentClearCoatRadiance;
1128
+ #endif
1129
+ #if defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX)
1130
+ var clearCoatEnvironmentReflectance: vec3f=getReflectanceFromBRDFLookup(vec3f(uniforms.vClearCoatRefractionParams.x),environmentClearCoatBrdf);
1131
+ #ifdef HORIZONOCCLUSION
1132
+ #ifdef BUMP
1133
+ #ifdef REFLECTIONMAP_3D
1134
+ var clearCoatEho: f32=environmentHorizonOcclusion(-viewDirectionW,clearCoatNormalW,geometricNormalW);clearCoatEnvironmentReflectance*=clearCoatEho;
1135
+ #endif
1136
+ #endif
1137
+ #endif
1138
+ #else
1139
+ var clearCoatEnvironmentReflectance: vec3f=getReflectanceFromAnalyticalBRDFLookup_Jones(clearCoatNdotV, vec3f(1.), vec3f(1.),sqrt(1.-clearCoatRoughness));
1140
+ #endif
1141
+ clearCoatEnvironmentReflectance*=clearCoatIntensity;
1142
+ #if DEBUGMODE>0
1143
+ outParams.clearCoatEnvironmentReflectance=clearCoatEnvironmentReflectance;
1144
+ #endif
1145
+ outParams.finalClearCoatRadianceScaled=
1146
+ environmentClearCoatRadiance.rgb *
1147
+ clearCoatEnvironmentReflectance *
1148
+ vLightingIntensity.z;
1149
+ #endif
1150
+ #if defined(CLEARCOAT_TINT)
1151
+ outParams.absorption=computeClearCoatAbsorption(outParams.clearCoatNdotVRefract,outParams.clearCoatNdotVRefract,outParams.clearCoatColor,clearCoatThickness,clearCoatIntensity);
1152
+ #endif
1153
+ var fresnelIBLClearCoat: f32=fresnelSchlickGGX(clearCoatNdotV,uniforms.vClearCoatRefractionParams.x,CLEARCOATREFLECTANCE90);fresnelIBLClearCoat*=clearCoatIntensity;outParams.conservationFactor=(1.-fresnelIBLClearCoat);
1154
+ #if defined(ENVIRONMENTBRDF) && defined(MS_BRDF_ENERGY_CONSERVATION)
1155
+ outParams.energyConservationFactorClearCoat=getEnergyConservationFactor(outParams.specularEnvironmentR0,environmentClearCoatBrdf);
1156
+ #endif
1157
+ return outParams;}
1158
+ #endif
1159
+ `;a.ShaderStore.IncludesShadersStoreWGSL[ea]||(a.ShaderStore.IncludesShadersStoreWGSL[ea]=er);let ei="pbrBlockIridescence",en=`struct iridescenceOutParams
1160
+ {iridescenceIntensity: f32,
1161
+ iridescenceIOR: f32,
1162
+ iridescenceThickness: f32,
1163
+ specularEnvironmentR0: vec3f};
1164
+ #ifdef IRIDESCENCE
1165
+ fn iridescenceBlock(
1166
+ vIridescenceParams: vec4f
1167
+ ,viewAngle_: f32
1168
+ ,specularEnvironmentR0: vec3f
1169
+ #ifdef IRIDESCENCE_TEXTURE
1170
+ ,iridescenceMapData: vec2f
1171
+ #endif
1172
+ #ifdef IRIDESCENCE_THICKNESS_TEXTURE
1173
+ ,iridescenceThicknessMapData: vec2f
1174
+ #endif
1175
+ #ifdef CLEARCOAT
1176
+ ,NdotVUnclamped: f32
1177
+ ,vClearCoatParams: vec2f
1178
+ #ifdef CLEARCOAT_TEXTURE
1179
+ ,clearCoatMapData: vec2f
1180
+ #endif
1181
+ #endif
1182
+ )->iridescenceOutParams
1183
+ {var outParams: iridescenceOutParams;var iridescenceIntensity: f32=vIridescenceParams.x;var iridescenceIOR: f32=vIridescenceParams.y;var iridescenceThicknessMin: f32=vIridescenceParams.z;var iridescenceThicknessMax: f32=vIridescenceParams.w;var iridescenceThicknessWeight: f32=1.;var viewAngle=viewAngle_;
1184
+ #ifdef IRIDESCENCE_TEXTURE
1185
+ iridescenceIntensity*=iridescenceMapData.x;
1186
+ #endif
1187
+ #if defined(IRIDESCENCE_THICKNESS_TEXTURE)
1188
+ iridescenceThicknessWeight=iridescenceThicknessMapData.g;
1189
+ #endif
1190
+ var iridescenceThickness: f32=mix(iridescenceThicknessMin,iridescenceThicknessMax,iridescenceThicknessWeight);var topIor: f32=1.;
1191
+ #ifdef CLEARCOAT
1192
+ var clearCoatIntensity: f32=vClearCoatParams.x;
1193
+ #ifdef CLEARCOAT_TEXTURE
1194
+ clearCoatIntensity*=clearCoatMapData.x;
1195
+ #endif
1196
+ topIor=mix(1.0,uniforms.vClearCoatRefractionParams.w-1.,clearCoatIntensity);viewAngle=sqrt(1.0+((1.0/topIor)*(1.0/topIor))*((NdotVUnclamped*NdotVUnclamped)-1.0));
1197
+ #endif
1198
+ var iridescenceFresnel: vec3f=evalIridescence(topIor,iridescenceIOR,viewAngle,iridescenceThickness,specularEnvironmentR0);outParams.specularEnvironmentR0=mix(specularEnvironmentR0,iridescenceFresnel,iridescenceIntensity);outParams.iridescenceIntensity=iridescenceIntensity;outParams.iridescenceThickness=iridescenceThickness;outParams.iridescenceIOR=iridescenceIOR;return outParams;}
1199
+ #endif
1200
+ `;a.ShaderStore.IncludesShadersStoreWGSL[ei]||(a.ShaderStore.IncludesShadersStoreWGSL[ei]=en);let ef="pbrBlockSubSurface",eo=`struct subSurfaceOutParams
1201
+ {specularEnvironmentReflectance: vec3f,
1202
+ #ifdef SS_REFRACTION
1203
+ finalRefraction: vec3f,
1204
+ surfaceAlbedo: vec3f,
1205
+ #ifdef SS_LINKREFRACTIONTOTRANSPARENCY
1206
+ alpha: f32,
1207
+ #endif
1208
+ refractionOpacity: f32,
1209
+ #endif
1210
+ #ifdef SS_TRANSLUCENCY
1211
+ transmittance: vec3f,
1212
+ translucencyIntensity: f32,
1213
+ #ifdef REFLECTION
1214
+ refractionIrradiance: vec3f,
1215
+ #endif
1216
+ #endif
1217
+ #if DEBUGMODE>0
1218
+ #ifdef SS_THICKNESSANDMASK_TEXTURE
1219
+ thicknessMap: vec4f,
1220
+ #endif
1221
+ #ifdef SS_REFRACTION
1222
+ environmentRefraction: vec4f,
1223
+ refractionTransmittance: vec3f
1224
+ #endif
1225
+ #endif
1226
+ };
1227
+ #ifdef SUBSURFACE
1228
+ #ifdef SS_REFRACTION
1229
+ #define pbr_inline
1230
+ fn sampleEnvironmentRefraction(
1231
+ ior: f32
1232
+ ,thickness: f32
1233
+ ,refractionLOD: f32
1234
+ ,normalW: vec3f
1235
+ ,vPositionW: vec3f
1236
+ ,viewDirectionW: vec3f
1237
+ ,view: mat4x4f
1238
+ ,vRefractionInfos: vec4f
1239
+ ,refractionMatrix: mat4x4f
1240
+ ,vRefractionMicrosurfaceInfos: vec4f
1241
+ ,alphaG: f32
1242
+ #ifdef SS_REFRACTIONMAP_3D
1243
+ ,refractionSampler: texture_cube<f32>
1244
+ ,refractionSamplerSampler: sampler
1245
+ #ifndef LODBASEDMICROSFURACE
1246
+ ,refractionLowSampler: texture_cube<f32>
1247
+ ,refractionLowSamplerSampler: sampler
1248
+ ,refractionHighSampler: texture_cube<f32>
1249
+ ,refractionHighSamplerSampler: sampler
1250
+ #endif
1251
+ #else
1252
+ ,refractionSampler: texture_2d<f32>
1253
+ ,refractionSamplerSampler: sampler
1254
+ #ifndef LODBASEDMICROSFURACE
1255
+ ,refractionLowSampler: texture_2d<f32>
1256
+ ,refractionLowSamplerSampler: sampler
1257
+ ,refractionHighSampler: texture_2d<f32>
1258
+ ,refractionHighSamplerSampler: sampler
1259
+ #endif
1260
+ #endif
1261
+ #ifdef ANISOTROPIC
1262
+ ,anisotropicOut: anisotropicOutParams
1263
+ #endif
1264
+ #ifdef REALTIME_FILTERING
1265
+ ,vRefractionFilteringInfo: vec2f
1266
+ #endif
1267
+ #ifdef SS_USE_LOCAL_REFRACTIONMAP_CUBIC
1268
+ ,refractionPosition: vec3f
1269
+ ,refractionSize: vec3f
1270
+ #endif
1271
+ )->vec4f {var environmentRefraction: vec4f= vec4f(0.,0.,0.,0.);
1272
+ #ifdef ANISOTROPIC
1273
+ var refractionVector: vec3f=refract(-viewDirectionW,anisotropicOut.anisotropicNormal,ior);
1274
+ #else
1275
+ var refractionVector: vec3f=refract(-viewDirectionW,normalW,ior);
1276
+ #endif
1277
+ #ifdef SS_REFRACTIONMAP_OPPOSITEZ
1278
+ refractionVector.z*=-1.0;
1279
+ #endif
1280
+ #ifdef SS_REFRACTIONMAP_3D
1281
+ #ifdef SS_USE_LOCAL_REFRACTIONMAP_CUBIC
1282
+ refractionVector=parallaxCorrectNormal(vPositionW,refractionVector,refractionSize,refractionPosition);
1283
+ #endif
1284
+ refractionVector.y=refractionVector.y*vRefractionInfos.w;var refractionCoords: vec3f=refractionVector;refractionCoords= (refractionMatrix* vec4f(refractionCoords,0)).xyz;
1285
+ #else
1286
+ #ifdef SS_USE_THICKNESS_AS_DEPTH
1287
+ var vRefractionUVW: vec3f= (refractionMatrix*(view* vec4f(vPositionW+refractionVector*thickness,1.0))).xyz;
1288
+ #else
1289
+ var vRefractionUVW: vec3f= (refractionMatrix*(view* vec4f(vPositionW+refractionVector*vRefractionInfos.z,1.0))).xyz;
1290
+ #endif
1291
+ var refractionCoords: vec2f=vRefractionUVW.xy/vRefractionUVW.z;refractionCoords.y=1.0-refractionCoords.y;
1292
+ #endif
1293
+ #ifdef LODBASEDMICROSFURACE
1294
+ var lod=refractionLOD*vRefractionMicrosurfaceInfos.y+vRefractionMicrosurfaceInfos.z;
1295
+ #ifdef SS_LODINREFRACTIONALPHA
1296
+ var automaticRefractionLOD: f32=UNPACK_LOD(textureSample(refractionSampler,refractionSamplerSampler,refractionCoords).a);var requestedRefractionLOD: f32=max(automaticRefractionLOD,lod);
1297
+ #else
1298
+ var requestedRefractionLOD: f32=lod;
1299
+ #endif
1300
+ #if defined(REALTIME_FILTERING) && defined(SS_REFRACTIONMAP_3D)
1301
+ environmentRefraction= vec4f(radiance(alphaG,refractionSampler,refractionSamplerSampler,refractionCoords,vRefractionFilteringInfo),1.0);
1302
+ #else
1303
+ environmentRefraction=textureSampleLevel(refractionSampler,refractionSamplerSampler,refractionCoords,requestedRefractionLOD);
1304
+ #endif
1305
+ #else
1306
+ var lodRefractionNormalized: f32=saturate(refractionLOD/log2(vRefractionMicrosurfaceInfos.x));var lodRefractionNormalizedDoubled: f32=lodRefractionNormalized*2.0;var environmentRefractionMid: vec4f=textureSample(refractionSampler,refractionSamplerSampler,refractionCoords);if (lodRefractionNormalizedDoubled<1.0){environmentRefraction=mix(
1307
+ textureSample(refractionHighSampler,refractionHighSamplerSampler,refractionCoords),
1308
+ environmentRefractionMid,
1309
+ lodRefractionNormalizedDoubled
1310
+ );} else {environmentRefraction=mix(
1311
+ environmentRefractionMid,
1312
+ textureSample(refractionLowSampler,refractionLowSamplerSampler,refractionCoords),
1313
+ lodRefractionNormalizedDoubled-1.0
1314
+ );}
1315
+ #endif
1316
+ var refraction=environmentRefraction.rgb;
1317
+ #ifdef SS_RGBDREFRACTION
1318
+ refraction=fromRGBD(environmentRefraction);
1319
+ #endif
1320
+ #ifdef SS_GAMMAREFRACTION
1321
+ refraction=toLinearSpaceVec3(environmentRefraction.rgb);
1322
+ #endif
1323
+ return vec4f(refraction,environmentRefraction.a);}
1324
+ #endif
1325
+ #define pbr_inline
1326
+ fn subSurfaceBlock(
1327
+ vSubSurfaceIntensity: vec3f
1328
+ ,vThicknessParam: vec2f
1329
+ ,vTintColor: vec4f
1330
+ ,normalW: vec3f
1331
+ ,specularEnvironmentReflectance: vec3f
1332
+ #ifdef SS_THICKNESSANDMASK_TEXTURE
1333
+ ,thicknessMap: vec4f
1334
+ #endif
1335
+ #ifdef SS_REFRACTIONINTENSITY_TEXTURE
1336
+ ,refractionIntensityMap: vec4f
1337
+ #endif
1338
+ #ifdef SS_TRANSLUCENCYINTENSITY_TEXTURE
1339
+ ,translucencyIntensityMap: vec4f
1340
+ #endif
1341
+ #ifdef REFLECTION
1342
+ #ifdef SS_TRANSLUCENCY
1343
+ ,reflectionMatrix: mat4x4f
1344
+ #ifdef USESPHERICALFROMREFLECTIONMAP
1345
+ #if !defined(NORMAL) || !defined(USESPHERICALINVERTEX)
1346
+ ,irradianceVector_: vec3f
1347
+ #endif
1348
+ #if defined(REALTIME_FILTERING)
1349
+ ,reflectionSampler: texture_cube<f32>
1350
+ ,reflectionSamplerSampler: sampler
1351
+ ,vReflectionFilteringInfo: vec2f
1352
+ #ifdef IBL_CDF_FILTERING
1353
+ ,icdfSampler: texture_2d<f32>
1354
+ ,icdfSamplerSampler: sampler
1355
+ #endif
1356
+ #endif
1357
+ #endif
1358
+ #ifdef USEIRRADIANCEMAP
1359
+ #ifdef REFLECTIONMAP_3D
1360
+ ,irradianceSampler: texture_cube<f32>
1361
+ ,irradianceSamplerSampler: sampler
1362
+ #else
1363
+ ,irradianceSampler: texture_2d<f32>
1364
+ ,irradianceSamplerSampler: sampler
1365
+ #endif
1366
+ #endif
1367
+ #endif
1368
+ #endif
1369
+ #if defined(SS_REFRACTION) || defined(SS_TRANSLUCENCY)
1370
+ ,surfaceAlbedo: vec3f
1371
+ #endif
1372
+ #ifdef SS_REFRACTION
1373
+ ,vPositionW: vec3f
1374
+ ,viewDirectionW: vec3f
1375
+ ,view: mat4x4f
1376
+ ,vRefractionInfos: vec4f
1377
+ ,refractionMatrix: mat4x4f
1378
+ ,vRefractionMicrosurfaceInfos: vec4f
1379
+ ,vLightingIntensity: vec4f
1380
+ #ifdef SS_LINKREFRACTIONTOTRANSPARENCY
1381
+ ,alpha: f32
1382
+ #endif
1383
+ #ifdef SS_LODINREFRACTIONALPHA
1384
+ ,NdotVUnclamped: f32
1385
+ #endif
1386
+ #ifdef SS_LINEARSPECULARREFRACTION
1387
+ ,roughness: f32
1388
+ #endif
1389
+ ,alphaG: f32
1390
+ #ifdef SS_REFRACTIONMAP_3D
1391
+ ,refractionSampler: texture_cube<f32>
1392
+ ,refractionSamplerSampler: sampler
1393
+ #ifndef LODBASEDMICROSFURACE
1394
+ ,refractionLowSampler: texture_cube<f32>
1395
+ ,refractionLowSamplerSampler: sampler
1396
+ ,refractionHighSampler: texture_cube<f32>
1397
+ ,refractionHighSamplerSampler: sampler
1398
+ #endif
1399
+ #else
1400
+ ,refractionSampler: texture_2d<f32>
1401
+ ,refractionSamplerSampler: sampler
1402
+ #ifndef LODBASEDMICROSFURACE
1403
+ ,refractionLowSampler: texture_2d<f32>
1404
+ ,refractionLowSamplerSampler: sampler
1405
+ ,refractionHighSampler: texture_2d<f32>
1406
+ ,refractionHighSamplerSampler: sampler
1407
+ #endif
1408
+ #endif
1409
+ #ifdef ANISOTROPIC
1410
+ ,anisotropicOut: anisotropicOutParams
1411
+ #endif
1412
+ #ifdef REALTIME_FILTERING
1413
+ ,vRefractionFilteringInfo: vec2f
1414
+ #endif
1415
+ #ifdef SS_USE_LOCAL_REFRACTIONMAP_CUBIC
1416
+ ,refractionPosition: vec3f
1417
+ ,refractionSize: vec3f
1418
+ #endif
1419
+ #ifdef SS_DISPERSION
1420
+ ,dispersion: f32
1421
+ #endif
1422
+ #endif
1423
+ #ifdef SS_TRANSLUCENCY
1424
+ ,vDiffusionDistance: vec3f
1425
+ ,vTranslucencyColor: vec4f
1426
+ #ifdef SS_TRANSLUCENCYCOLOR_TEXTURE
1427
+ ,translucencyColorMap: vec4f
1428
+ #endif
1429
+ #endif
1430
+ )->subSurfaceOutParams
1431
+ {var outParams: subSurfaceOutParams;outParams.specularEnvironmentReflectance=specularEnvironmentReflectance;
1432
+ #ifdef SS_REFRACTION
1433
+ var refractionIntensity: f32=vSubSurfaceIntensity.x;
1434
+ #ifdef SS_LINKREFRACTIONTOTRANSPARENCY
1435
+ refractionIntensity*=(1.0-alpha);outParams.alpha=1.0;
1436
+ #endif
1437
+ #endif
1438
+ #ifdef SS_TRANSLUCENCY
1439
+ var translucencyIntensity: f32=vSubSurfaceIntensity.y;
1440
+ #endif
1441
+ #ifdef SS_THICKNESSANDMASK_TEXTURE
1442
+ #ifdef SS_USE_GLTF_TEXTURES
1443
+ var thickness: f32=thicknessMap.g*vThicknessParam.y+vThicknessParam.x;
1444
+ #else
1445
+ var thickness: f32=thicknessMap.r*vThicknessParam.y+vThicknessParam.x;
1446
+ #endif
1447
+ #if DEBUGMODE>0
1448
+ outParams.thicknessMap=thicknessMap;
1449
+ #endif
1450
+ #if defined(SS_REFRACTION) && defined(SS_REFRACTION_USE_INTENSITY_FROM_THICKNESS)
1451
+ #ifdef SS_USE_GLTF_TEXTURES
1452
+ refractionIntensity*=thicknessMap.r;
1453
+ #else
1454
+ refractionIntensity*=thicknessMap.g;
1455
+ #endif
1456
+ #endif
1457
+ #if defined(SS_TRANSLUCENCY) && defined(SS_TRANSLUCENCY_USE_INTENSITY_FROM_THICKNESS)
1458
+ #ifdef SS_USE_GLTF_TEXTURES
1459
+ translucencyIntensity*=thicknessMap.a;
1460
+ #else
1461
+ translucencyIntensity*=thicknessMap.b;
1462
+ #endif
1463
+ #endif
1464
+ #else
1465
+ var thickness: f32=vThicknessParam.y;
1466
+ #endif
1467
+ #if defined(SS_REFRACTION) && defined(SS_REFRACTIONINTENSITY_TEXTURE)
1468
+ #ifdef SS_USE_GLTF_TEXTURES
1469
+ refractionIntensity*=refractionIntensityMap.r;
1470
+ #else
1471
+ refractionIntensity*=refractionIntensityMap.g;
1472
+ #endif
1473
+ #endif
1474
+ #if defined(SS_TRANSLUCENCY) && defined(SS_TRANSLUCENCYINTENSITY_TEXTURE)
1475
+ #ifdef SS_USE_GLTF_TEXTURES
1476
+ translucencyIntensity*=translucencyIntensityMap.a;
1477
+ #else
1478
+ translucencyIntensity*=translucencyIntensityMap.b;
1479
+ #endif
1480
+ #endif
1481
+ #ifdef SS_TRANSLUCENCY
1482
+ thickness=maxEps(thickness);var translucencyColor: vec4f=vTranslucencyColor;
1483
+ #ifdef SS_TRANSLUCENCYCOLOR_TEXTURE
1484
+ translucencyColor*=translucencyColorMap;
1485
+ #endif
1486
+ var transmittance: vec3f=transmittanceBRDF_Burley(translucencyColor.rgb,vDiffusionDistance,thickness);transmittance*=translucencyIntensity;outParams.transmittance=transmittance;outParams.translucencyIntensity=translucencyIntensity;
1487
+ #endif
1488
+ #ifdef SS_REFRACTION
1489
+ var environmentRefraction: vec4f= vec4f(0.,0.,0.,0.);
1490
+ #ifdef SS_HAS_THICKNESS
1491
+ var ior: f32=vRefractionInfos.y;
1492
+ #else
1493
+ var ior: f32=vRefractionMicrosurfaceInfos.w;
1494
+ #endif
1495
+ #ifdef SS_LODINREFRACTIONALPHA
1496
+ var refractionAlphaG: f32=alphaG;refractionAlphaG=mix(alphaG,0.0,clamp(ior*3.0-2.0,0.0,1.0));var refractionLOD: f32=getLodFromAlphaGNdotV(vRefractionMicrosurfaceInfos.x,refractionAlphaG,NdotVUnclamped);
1497
+ #elif defined(SS_LINEARSPECULARREFRACTION)
1498
+ var refractionRoughness: f32=alphaG;refractionRoughness=mix(alphaG,0.0,clamp(ior*3.0-2.0,0.0,1.0));var refractionLOD: f32=getLinearLodFromRoughness(vRefractionMicrosurfaceInfos.x,refractionRoughness);
1499
+ #else
1500
+ var refractionAlphaG: f32=alphaG;refractionAlphaG=mix(alphaG,0.0,clamp(ior*3.0-2.0,0.0,1.0));var refractionLOD: f32=getLodFromAlphaG(vRefractionMicrosurfaceInfos.x,refractionAlphaG);
1501
+ #endif
1502
+ var refraction_ior: f32=vRefractionInfos.y;
1503
+ #ifdef SS_DISPERSION
1504
+ var realIOR: f32=1.0/refraction_ior;var iorDispersionSpread: f32=0.04*dispersion*(realIOR-1.0);var iors: vec3f= vec3f(1.0/(realIOR-iorDispersionSpread),refraction_ior,1.0/(realIOR+iorDispersionSpread));for (var i: i32=0; i<3; i++) {refraction_ior=iors[i];
1505
+ #endif
1506
+ var envSample: vec4f=sampleEnvironmentRefraction(refraction_ior,thickness,refractionLOD,normalW,vPositionW,viewDirectionW,view,vRefractionInfos,refractionMatrix,vRefractionMicrosurfaceInfos,alphaG
1507
+ #ifdef SS_REFRACTIONMAP_3D
1508
+ ,refractionSampler
1509
+ ,refractionSamplerSampler
1510
+ #ifndef LODBASEDMICROSFURACE
1511
+ ,refractionLowSampler
1512
+ ,refractionLowSamplerSampler
1513
+ ,refractionHighSampler
1514
+ ,refractionHighSamplerSampler
1515
+ #endif
1516
+ #else
1517
+ ,refractionSampler
1518
+ ,refractionSamplerSampler
1519
+ #ifndef LODBASEDMICROSFURACE
1520
+ ,refractionLowSampler
1521
+ ,refractionLowSamplerSampler
1522
+ ,refractionHighSampler
1523
+ ,refractionHighSamplerSampler
1524
+ #endif
1525
+ #endif
1526
+ #ifdef ANISOTROPIC
1527
+ ,anisotropicOut
1528
+ #endif
1529
+ #ifdef REALTIME_FILTERING
1530
+ ,vRefractionFilteringInfo
1531
+ #endif
1532
+ #ifdef SS_USE_LOCAL_REFRACTIONMAP_CUBIC
1533
+ ,refractionPosition
1534
+ ,refractionSize
1535
+ #endif
1536
+ );
1537
+ #ifdef SS_DISPERSION
1538
+ environmentRefraction[i]=envSample[i];}
1539
+ #else
1540
+ environmentRefraction=envSample;
1541
+ #endif
1542
+ environmentRefraction=vec4f(environmentRefraction.rgb*vRefractionInfos.x,environmentRefraction.a);
1543
+ #endif
1544
+ #ifdef SS_REFRACTION
1545
+ var refractionTransmittance: vec3f= vec3f(refractionIntensity);
1546
+ #ifdef SS_THICKNESSANDMASK_TEXTURE
1547
+ var volumeAlbedo: vec3f=computeColorAtDistanceInMedia(vTintColor.rgb,vTintColor.w);refractionTransmittance*=cocaLambertVec3(volumeAlbedo,thickness);
1548
+ #elif defined(SS_LINKREFRACTIONTOTRANSPARENCY)
1549
+ var maxChannel: f32=max(max(surfaceAlbedo.r,surfaceAlbedo.g),surfaceAlbedo.b);var volumeAlbedo: vec3f=saturateVec3(maxChannel*surfaceAlbedo);environmentRefraction=vec4f(environmentRefraction.rgb*volumeAlbedo,environmentRefraction.a);
1550
+ #else
1551
+ var volumeAlbedo: vec3f=computeColorAtDistanceInMedia(vTintColor.rgb,vTintColor.w);refractionTransmittance*=cocaLambertVec3(volumeAlbedo,vThicknessParam.y);
1552
+ #endif
1553
+ #ifdef SS_ALBEDOFORREFRACTIONTINT
1554
+ environmentRefraction=vec4f(environmentRefraction.rgb*surfaceAlbedo.rgb,environmentRefraction.a);
1555
+ #endif
1556
+ outParams.surfaceAlbedo=surfaceAlbedo;outParams.refractionOpacity=1.-refractionIntensity;
1557
+ #ifdef LEGACY_SPECULAR_ENERGY_CONSERVATION
1558
+ outParams.surfaceAlbedo*=outParams.refractionOpacity;
1559
+ #endif
1560
+ #ifdef UNUSED_MULTIPLEBOUNCES
1561
+ var bounceSpecularEnvironmentReflectance: vec3f=(2.0*specularEnvironmentReflectance)/(1.0+specularEnvironmentReflectance);outParams.specularEnvironmentReflectance=mix(bounceSpecularEnvironmentReflectance,specularEnvironmentReflectance,refractionIntensity);
1562
+ #endif
1563
+ #if DEBUGMODE>0
1564
+ outParams.refractionTransmittance=refractionTransmittance;
1565
+ #endif
1566
+ outParams.finalRefraction=environmentRefraction.rgb*refractionTransmittance*vLightingIntensity.z;outParams.finalRefraction*=vec3f(1.0)-specularEnvironmentReflectance;
1567
+ #if DEBUGMODE>0
1568
+ outParams.environmentRefraction=environmentRefraction;
1569
+ #endif
1570
+ #endif
1571
+ #if defined(REFLECTION) && defined(SS_TRANSLUCENCY)
1572
+ #if defined(NORMAL) && defined(USESPHERICALINVERTEX) || !defined(USESPHERICALFROMREFLECTIONMAP)
1573
+ var irradianceVector: vec3f= (reflectionMatrix* vec4f(normalW,0)).xyz;
1574
+ #ifdef REFLECTIONMAP_OPPOSITEZ
1575
+ irradianceVector.z*=-1.0;
1576
+ #endif
1577
+ #ifdef INVERTCUBICMAP
1578
+ irradianceVector.y*=-1.0;
1579
+ #endif
1580
+ #else
1581
+ var irradianceVector: vec3f=irradianceVector_;
1582
+ #endif
1583
+ #if defined(USESPHERICALFROMREFLECTIONMAP)
1584
+ #if defined(REALTIME_FILTERING)
1585
+ var refractionIrradiance: vec3f=irradiance(reflectionSampler,reflectionSamplerSampler,-irradianceVector,vReflectionFilteringInfo,0.0,surfaceAlbedo,irradianceVector
1586
+ #ifdef IBL_CDF_FILTERING
1587
+ ,icdfSampler
1588
+ ,icdfSamplerSampler
1589
+ #endif
1590
+ );
1591
+ #else
1592
+ var refractionIrradiance: vec3f=computeEnvironmentIrradiance(-irradianceVector);
1593
+ #endif
1594
+ #elif defined(USEIRRADIANCEMAP)
1595
+ #ifdef REFLECTIONMAP_3D
1596
+ var irradianceCoords: vec3f=irradianceVector;
1597
+ #else
1598
+ var irradianceCoords: vec2f=irradianceVector.xy;
1599
+ #ifdef REFLECTIONMAP_PROJECTION
1600
+ irradianceCoords/=irradianceVector.z;
1601
+ #endif
1602
+ irradianceCoords.y=1.0-irradianceCoords.y;
1603
+ #endif
1604
+ var temp: vec4f=textureSample(irradianceSampler,irradianceSamplerSampler,-irradianceCoords);var refractionIrradiance=temp.rgb;
1605
+ #ifdef RGBDREFLECTION
1606
+ refractionIrradiance=fromRGBD(temp).rgb;
1607
+ #endif
1608
+ #ifdef GAMMAREFLECTION
1609
+ refractionIrradiance=toLinearSpaceVec3(refractionIrradiance);
1610
+ #endif
1611
+ #else
1612
+ var refractionIrradiance: vec3f= vec3f(0.);
1613
+ #endif
1614
+ refractionIrradiance*=transmittance;
1615
+ #ifdef SS_ALBEDOFORTRANSLUCENCYTINT
1616
+ refractionIrradiance*=surfaceAlbedo.rgb;
1617
+ #endif
1618
+ outParams.refractionIrradiance=refractionIrradiance;
1619
+ #endif
1620
+ return outParams;}
1621
+ #endif
1622
+ `;a.ShaderStore.IncludesShadersStoreWGSL[ef]||(a.ShaderStore.IncludesShadersStoreWGSL[ef]=eo);var et=e.i(63406),ec=e.i(74698),el=e.i(23344);let ed="pbrBlockNormalFinal",es=`#if defined(FORCENORMALFORWARD) && defined(NORMAL)
1623
+ var faceNormal: vec3f=normalize(cross(dpdx(fragmentInputs.vPositionW),dpdy(fragmentInputs.vPositionW)))*scene.vEyePosition.w;
1624
+ #if defined(TWOSIDEDLIGHTING)
1625
+ faceNormal=select(-faceNormal,faceNormal,fragmentInputs.frontFacing);
1626
+ #endif
1627
+ normalW*=sign(dot(normalW,faceNormal));
1628
+ #endif
1629
+ #if defined(TWOSIDEDLIGHTING) && defined(NORMAL)
1630
+ #if defined(MIRRORED)
1631
+ normalW=select(normalW,-normalW,fragmentInputs.frontFacing);
1632
+ #else
1633
+ normalW=select(-normalW,normalW,fragmentInputs.frontFacing);
1634
+ #endif
1635
+ #endif
1636
+ `;a.ShaderStore.IncludesShadersStoreWGSL[ed]||(a.ShaderStore.IncludesShadersStoreWGSL[ed]=es);var eE=e.i(31329);let eS="pbrBlockLightmapInit",eR=`#ifdef LIGHTMAP
1637
+ var lightmapColor: vec4f=TEXRD(lightmapSampler,lightmapSamplerSampler,fragmentInputs.vLightmapUV+uvOffset);
1638
+ #ifdef RGBDLIGHTMAP
1639
+ lightmapColor=vec4f(fromRGBD(lightmapColor),lightmapColor.a);
1640
+ #endif
1641
+ #ifdef GAMMALIGHTMAP
1642
+ lightmapColor=vec4f(toLinearSpaceVec3(lightmapColor.rgb),lightmapColor.a);
1643
+ #endif
1644
+ lightmapColor=vec4f(lightmapColor.rgb*uniforms.vLightmapInfos.y,lightmapColor.a);
1645
+ #endif
1646
+ `;a.ShaderStore.IncludesShadersStoreWGSL[eS]||(a.ShaderStore.IncludesShadersStoreWGSL[eS]=eR);let em="pbrBlockGeometryInfo",eC=`var NdotVUnclamped: f32=dot(normalW,viewDirectionW);var NdotV: f32=absEps(NdotVUnclamped);var alphaG: f32=convertRoughnessToAverageSlope(roughness);var AARoughnessFactors: vec2f=getAARoughnessFactors(normalW.xyz);
1647
+ #ifdef SPECULARAA
1648
+ alphaG+=AARoughnessFactors.y;
1649
+ #endif
1650
+ #if defined(ENVIRONMENTBRDF)
1651
+ var environmentBrdf: vec3f=getBRDFLookup(NdotV,roughness);
1652
+ #endif
1653
+ #if defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX)
1654
+ #ifdef RADIANCEOCCLUSION
1655
+ #ifdef AMBIENTINGRAYSCALE
1656
+ var ambientMonochrome: f32=aoOut.ambientOcclusionColor.r;
1657
+ #else
1658
+ var ambientMonochrome: f32=getLuminance(aoOut.ambientOcclusionColor);
1659
+ #endif
1660
+ var seo: f32=environmentRadianceOcclusion(ambientMonochrome,NdotVUnclamped);
1661
+ #endif
1662
+ #ifdef HORIZONOCCLUSION
1663
+ #ifdef BUMP
1664
+ #ifdef REFLECTIONMAP_3D
1665
+ var eho: f32=environmentHorizonOcclusion(-viewDirectionW,normalW,geometricNormalW);
1666
+ #endif
1667
+ #endif
1668
+ #endif
1669
+ #endif
1670
+ `;a.ShaderStore.IncludesShadersStoreWGSL[em]||(a.ShaderStore.IncludesShadersStoreWGSL[em]=eC);let eu="pbrBlockReflectance",ev=`#if defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX)
1671
+ var baseSpecularEnvironmentReflectance: vec3f=getReflectanceFromBRDFWithEnvLookup(vec3f(reflectanceF0),vec3f(reflectivityOut.reflectanceF90),environmentBrdf);
1672
+ #if (CONDUCTOR_SPECULAR_MODEL==CONDUCTOR_SPECULAR_MODEL_OPENPBR)
1673
+ let metalEnvironmentReflectance: vec3f=vec3f(reflectivityOut.specularWeight)*getF82Specular(NdotV,clearcoatOut.specularEnvironmentR0,reflectivityOut.colorReflectanceF90,reflectivityOut.roughness);let dielectricEnvironmentReflectance=getReflectanceFromBRDFWithEnvLookup(reflectivityOut.dielectricColorF0,reflectivityOut.colorReflectanceF90,environmentBrdf);var colorSpecularEnvironmentReflectance: vec3f=mix(dielectricEnvironmentReflectance,metalEnvironmentReflectance,reflectivityOut.metallic);
1674
+ #else
1675
+ var colorSpecularEnvironmentReflectance=getReflectanceFromBRDFWithEnvLookup(clearcoatOut.specularEnvironmentR0,reflectivityOut.colorReflectanceF90,environmentBrdf);
1676
+ #endif
1677
+ #ifdef RADIANCEOCCLUSION
1678
+ colorSpecularEnvironmentReflectance*=seo;
1679
+ #endif
1680
+ #ifdef HORIZONOCCLUSION
1681
+ #ifdef BUMP
1682
+ #ifdef REFLECTIONMAP_3D
1683
+ colorSpecularEnvironmentReflectance*=eho;
1684
+ #endif
1685
+ #endif
1686
+ #endif
1687
+ #else
1688
+ var colorSpecularEnvironmentReflectance: vec3f=getReflectanceFromAnalyticalBRDFLookup_Jones(NdotV,clearcoatOut.specularEnvironmentR0,specularEnvironmentR90,sqrt(microSurface));var baseSpecularEnvironmentReflectance: vec3f=getReflectanceFromAnalyticalBRDFLookup_Jones(NdotV,vec3f(reflectanceF0),vec3f(reflectivityOut.reflectanceF90),sqrt(microSurface));
1689
+ #endif
1690
+ #ifdef CLEARCOAT
1691
+ colorSpecularEnvironmentReflectance*=clearcoatOut.conservationFactor;
1692
+ #if defined(CLEARCOAT_TINT)
1693
+ colorSpecularEnvironmentReflectance*=clearcoatOut.absorption;
1694
+ #endif
1695
+ #endif
1696
+ `;a.ShaderStore.IncludesShadersStoreWGSL[eu]||(a.ShaderStore.IncludesShadersStoreWGSL[eu]=ev);let eI="pbrBlockDirectLighting",eA=`var diffuseBase: vec3f=vec3f(0.,0.,0.);
1697
+ #ifdef SS_TRANSLUCENCY
1698
+ var diffuseTransmissionBase: vec3f=vec3f(0.,0.,0.);
1699
+ #endif
1700
+ #ifdef SPECULARTERM
1701
+ var specularBase: vec3f=vec3f(0.,0.,0.);
1702
+ #endif
1703
+ #ifdef CLEARCOAT
1704
+ var clearCoatBase: vec3f=vec3f(0.,0.,0.);
1705
+ #endif
1706
+ #ifdef SHEEN
1707
+ var sheenBase: vec3f=vec3f(0.,0.,0.);
1708
+ #endif
1709
+ #if defined(SPECULARTERM) && defined(LIGHT0)
1710
+ var coloredFresnel: vec3f=vec3f(0.,0.,0.);
1711
+ #endif
1712
+ var preInfo: preLightingInfo;var info: lightingInfo;var shadow: f32=1.;
1713
+ var aggShadow: f32=0.;var numLights: f32=0.;
1714
+ #if defined(CLEARCOAT) && defined(CLEARCOAT_TINT)
1715
+ var absorption: vec3f=vec3f(0.);
1716
+ #endif
1717
+ `;a.ShaderStore.IncludesShadersStoreWGSL[eI]||(a.ShaderStore.IncludesShadersStoreWGSL[eI]=eA);var ep=e.i(49692);let eN="pbrBlockFinalLitComponents",eO=`aggShadow=aggShadow/numLights;
1718
+ #if defined(ENVIRONMENTBRDF)
1719
+ #ifdef MS_BRDF_ENERGY_CONSERVATION
1720
+ var baseSpecularEnergyConservationFactor: vec3f=getEnergyConservationFactor(vec3f(reflectanceF0),environmentBrdf);var coloredEnergyConservationFactor: vec3f=getEnergyConservationFactor(clearcoatOut.specularEnvironmentR0,environmentBrdf);
1721
+ #endif
1722
+ #endif
1723
+ #if defined(SHEEN) && defined(SHEEN_ALBEDOSCALING) && defined(ENVIRONMENTBRDF)
1724
+ surfaceAlbedo=sheenOut.sheenAlbedoScaling*surfaceAlbedo.rgb;
1725
+ #endif
1726
+ #ifdef LEGACY_SPECULAR_ENERGY_CONSERVATION
1727
+ #ifndef METALLICWORKFLOW
1728
+ #ifdef SPECULAR_GLOSSINESS_ENERGY_CONSERVATION
1729
+ surfaceAlbedo=vec3f(1.-reflectanceF0)*surfaceAlbedo.rgb;
1730
+ #endif
1731
+ #endif
1732
+ #endif
1733
+ #ifdef REFLECTION
1734
+ var finalIrradiance: vec3f=reflectionOut.environmentIrradiance;
1735
+ #ifndef LEGACY_SPECULAR_ENERGY_CONSERVATION
1736
+ #if defined(METALLICWORKFLOW) || defined(SPECULAR_GLOSSINESS_ENERGY_CONSERVATION)
1737
+ var baseSpecularEnergy: vec3f=vec3f(baseSpecularEnvironmentReflectance);
1738
+ #if defined(ENVIRONMENTBRDF)
1739
+ #ifdef MS_BRDF_ENERGY_CONSERVATION
1740
+ baseSpecularEnergy*=baseSpecularEnergyConservationFactor;
1741
+ #endif
1742
+ #endif
1743
+ finalIrradiance*=clamp(vec3f(1.0)-baseSpecularEnergy,vec3f(0.0),vec3f(1.0));
1744
+ #endif
1745
+ #endif
1746
+ #if defined(CLEARCOAT)
1747
+ finalIrradiance*=clearcoatOut.conservationFactor;
1748
+ #if defined(CLEARCOAT_TINT)
1749
+ finalIrradiance*=clearcoatOut.absorption;
1750
+ #endif
1751
+ #endif
1752
+ #ifndef SS_APPLY_ALBEDO_AFTER_SUBSURFACE
1753
+ finalIrradiance*=surfaceAlbedo.rgb;
1754
+ #endif
1755
+ #if defined(SS_REFRACTION) && !defined(LEGACY_SPECULAR_ENERGY_CONSERVATION)
1756
+ finalIrradiance*=subSurfaceOut.refractionOpacity;
1757
+ #endif
1758
+ #if defined(SS_TRANSLUCENCY)
1759
+ finalIrradiance*=(1.0-subSurfaceOut.translucencyIntensity);finalIrradiance+=subSurfaceOut.refractionIrradiance;
1760
+ #endif
1761
+ #ifdef SS_APPLY_ALBEDO_AFTER_SUBSURFACE
1762
+ finalIrradiance*=surfaceAlbedo.rgb;
1763
+ #endif
1764
+ finalIrradiance*=uniforms.vLightingIntensity.z;finalIrradiance*=aoOut.ambientOcclusionColor;
1765
+ #endif
1766
+ #ifdef SPECULARTERM
1767
+ var finalSpecular: vec3f=specularBase;finalSpecular=max(finalSpecular,vec3f(0.0));var finalSpecularScaled: vec3f=finalSpecular*uniforms.vLightingIntensity.x*uniforms.vLightingIntensity.w;
1768
+ #if defined(ENVIRONMENTBRDF) && defined(MS_BRDF_ENERGY_CONSERVATION)
1769
+ finalSpecularScaled*=coloredEnergyConservationFactor;
1770
+ #endif
1771
+ #if defined(SHEEN) && defined(ENVIRONMENTBRDF) && defined(SHEEN_ALBEDOSCALING)
1772
+ finalSpecularScaled*=sheenOut.sheenAlbedoScaling;
1773
+ #endif
1774
+ #endif
1775
+ #ifdef REFLECTION
1776
+ var finalRadiance: vec3f=reflectionOut.environmentRadiance.rgb;finalRadiance*=colorSpecularEnvironmentReflectance;;var finalRadianceScaled: vec3f=finalRadiance*uniforms.vLightingIntensity.z;
1777
+ #if defined(ENVIRONMENTBRDF) && defined(MS_BRDF_ENERGY_CONSERVATION)
1778
+ finalRadianceScaled*=coloredEnergyConservationFactor;
1779
+ #endif
1780
+ #if defined(SHEEN) && defined(ENVIRONMENTBRDF) && defined(SHEEN_ALBEDOSCALING)
1781
+ finalRadianceScaled*=sheenOut.sheenAlbedoScaling;
1782
+ #endif
1783
+ #endif
1784
+ #ifdef SHEEN
1785
+ var finalSheen: vec3f=sheenBase*sheenOut.sheenColor;finalSheen=max(finalSheen,vec3f(0.0));var finalSheenScaled: vec3f=finalSheen*uniforms.vLightingIntensity.x*uniforms.vLightingIntensity.w;
1786
+ #if defined(CLEARCOAT) && defined(REFLECTION) && defined(ENVIRONMENTBRDF)
1787
+ sheenOut.finalSheenRadianceScaled*=clearcoatOut.conservationFactor;
1788
+ #if defined(CLEARCOAT_TINT)
1789
+ sheenOut.finalSheenRadianceScaled*=clearcoatOut.absorption;
1790
+ #endif
1791
+ #endif
1792
+ #endif
1793
+ #ifdef CLEARCOAT
1794
+ var finalClearCoat: vec3f=clearCoatBase;finalClearCoat=max(finalClearCoat,vec3f(0.0));var finalClearCoatScaled: vec3f=finalClearCoat*uniforms.vLightingIntensity.x*uniforms.vLightingIntensity.w;
1795
+ #if defined(ENVIRONMENTBRDF) && defined(MS_BRDF_ENERGY_CONSERVATION)
1796
+ finalClearCoatScaled*=clearcoatOut.energyConservationFactorClearCoat;
1797
+ #endif
1798
+ #ifdef SS_REFRACTION
1799
+ subSurfaceOut.finalRefraction*=clearcoatOut.conservationFactor;
1800
+ #ifdef CLEARCOAT_TINT
1801
+ subSurfaceOut.finalRefraction*=clearcoatOut.absorption;
1802
+ #endif
1803
+ #endif
1804
+ #endif
1805
+ #ifdef ALPHABLEND
1806
+ var luminanceOverAlpha: f32=0.0;
1807
+ #if defined(REFLECTION) && defined(RADIANCEOVERALPHA)
1808
+ luminanceOverAlpha+=getLuminance(finalRadianceScaled);
1809
+ #if defined(CLEARCOAT)
1810
+ luminanceOverAlpha+=getLuminance(clearcoatOut.finalClearCoatRadianceScaled);
1811
+ #endif
1812
+ #endif
1813
+ #if defined(SPECULARTERM) && defined(SPECULAROVERALPHA)
1814
+ luminanceOverAlpha+=getLuminance(finalSpecularScaled);
1815
+ #endif
1816
+ #if defined(CLEARCOAT) && defined(CLEARCOATOVERALPHA)
1817
+ luminanceOverAlpha+=getLuminance(finalClearCoatScaled);
1818
+ #endif
1819
+ #if defined(RADIANCEOVERALPHA) || defined(SPECULAROVERALPHA) || defined(CLEARCOATOVERALPHA)
1820
+ alpha=saturate(alpha+luminanceOverAlpha*luminanceOverAlpha);
1821
+ #endif
1822
+ #endif
1823
+ `;a.ShaderStore.IncludesShadersStoreWGSL[eN]||(a.ShaderStore.IncludesShadersStoreWGSL[eN]=eO);let eT="pbrBlockFinalUnlitComponents",eL=`var finalDiffuse: vec3f=diffuseBase;finalDiffuse*=surfaceAlbedo;
1824
+ #if defined(SS_REFRACTION) && !defined(UNLIT) && !defined(LEGACY_SPECULAR_ENERGY_CONSERVATION)
1825
+ finalDiffuse*=subSurfaceOut.refractionOpacity;
1826
+ #endif
1827
+ #if defined(SS_TRANSLUCENCY) && !defined(UNLIT)
1828
+ finalDiffuse+=diffuseTransmissionBase;
1829
+ #endif
1830
+ finalDiffuse=max(finalDiffuse,vec3f(0.0));finalDiffuse*=uniforms.vLightingIntensity.x;var finalAmbient: vec3f=uniforms.vAmbientColor;finalAmbient=finalAmbient*surfaceAlbedo.rgb;var finalEmissive: vec3f=uniforms.vEmissiveColor;
1831
+ #ifdef EMISSIVE
1832
+ var emissiveColorTex: vec3f=TEXRD(emissiveSampler,emissiveSamplerSampler,fragmentInputs.vEmissiveUV+uvOffset).rgb;
1833
+ #ifdef GAMMAEMISSIVE
1834
+ finalEmissive*=toLinearSpaceVec3(emissiveColorTex.rgb);
1835
+ #else
1836
+ finalEmissive*=emissiveColorTex.rgb;
1837
+ #endif
1838
+ finalEmissive*= uniforms.vEmissiveInfos.y;
1839
+ #endif
1840
+ finalEmissive*=uniforms.vLightingIntensity.y;
1841
+ #ifdef AMBIENT
1842
+ var ambientOcclusionForDirectDiffuse: vec3f=mix( vec3f(1.),aoOut.ambientOcclusionColor,uniforms.vAmbientInfos.w);
1843
+ #else
1844
+ var ambientOcclusionForDirectDiffuse: vec3f=aoOut.ambientOcclusionColor;
1845
+ #endif
1846
+ finalAmbient*=aoOut.ambientOcclusionColor;finalDiffuse*=ambientOcclusionForDirectDiffuse;
1847
+ `;a.ShaderStore.IncludesShadersStoreWGSL[eT]||(a.ShaderStore.IncludesShadersStoreWGSL[eT]=eL);let e_="pbrBlockFinalColorComposition",eM=`var finalColor: vec4f= vec4f(
1848
+ #ifndef UNLIT
1849
+ #ifdef REFLECTION
1850
+ finalIrradiance +
1851
+ #endif
1852
+ #ifdef SPECULARTERM
1853
+ finalSpecularScaled +
1854
+ #endif
1855
+ #ifdef SHEEN
1856
+ finalSheenScaled +
1857
+ #endif
1858
+ #ifdef CLEARCOAT
1859
+ finalClearCoatScaled +
1860
+ #endif
1861
+ #ifdef REFLECTION
1862
+ finalRadianceScaled +
1863
+ #if defined(SHEEN) && defined(ENVIRONMENTBRDF)
1864
+ sheenOut.finalSheenRadianceScaled +
1865
+ #endif
1866
+ #ifdef CLEARCOAT
1867
+ clearcoatOut.finalClearCoatRadianceScaled +
1868
+ #endif
1869
+ #endif
1870
+ #ifdef SS_REFRACTION
1871
+ subSurfaceOut.finalRefraction +
1872
+ #endif
1873
+ #endif
1874
+ finalAmbient +
1875
+ finalDiffuse,
1876
+ alpha);
1877
+ #ifdef LIGHTMAP
1878
+ #ifndef LIGHTMAPEXCLUDED
1879
+ #ifdef USELIGHTMAPASSHADOWMAP
1880
+ finalColor=vec4f(finalColor.rgb*lightmapColor.rgb,finalColor.a);
1881
+ #else
1882
+ finalColor=vec4f(finalColor.rgb+lightmapColor.rgb,finalColor.a);
1883
+ #endif
1884
+ #endif
1885
+ #endif
1886
+ finalColor=vec4f(finalColor.rgb+finalEmissive,finalColor.a);
1887
+ #define CUSTOM_FRAGMENT_BEFORE_FOG
1888
+ finalColor=max(finalColor,vec4f(0.0));
1889
+ `;a.ShaderStore.IncludesShadersStoreWGSL[e_]||(a.ShaderStore.IncludesShadersStoreWGSL[e_]=eM);var eD=e.i(23009),eF=e.i(31213),eh=e.i(52640);let eg="pbrBlockPrePass",eP=`#if SCENE_MRT_COUNT>0
1890
+ var writeGeometryInfo: f32=select(0.0,1.0,finalColor.a>ALPHATESTVALUE);var fragData: array<vec4<f32>,SCENE_MRT_COUNT>;
1891
+ #ifdef PREPASS_POSITION
1892
+ fragData[PREPASS_POSITION_INDEX]= vec4f(fragmentInputs.vPositionW,writeGeometryInfo);
1893
+ #endif
1894
+ #ifdef PREPASS_LOCAL_POSITION
1895
+ fragData[PREPASS_LOCAL_POSITION_INDEX]=vec4f(fragmentInputs.vPosition,writeGeometryInfo);
1896
+ #endif
1897
+ #ifdef PREPASS_VELOCITY
1898
+ var a: vec2f=(fragmentInputs.vCurrentPosition.xy/fragmentInputs.vCurrentPosition.w)*0.5+0.5;var b: vec2f=(fragmentInputs.vPreviousPosition.xy/fragmentInputs.vPreviousPosition.w)*0.5+0.5;var velocity: vec2f=abs(a-b);velocity= vec2f(pow(velocity.x,1.0/3.0),pow(velocity.y,1.0/3.0))*sign(a-b)*0.5+0.5;fragData[PREPASS_VELOCITY_INDEX]= vec4f(velocity,0.0,writeGeometryInfo);
1899
+ #elif defined(PREPASS_VELOCITY_LINEAR)
1900
+ var velocity : vec2f=vec2f(0.5)*((fragmentInputs.vPreviousPosition.xy/fragmentInputs.vPreviousPosition.w) -
1901
+ (fragmentInputs.vCurrentPosition.xy/fragmentInputs.vCurrentPosition.w));fragData[PREPASS_VELOCITY_LINEAR_INDEX]=vec4f(velocity,0.0,writeGeometryInfo);
1902
+ #endif
1903
+ #ifdef PREPASS_ALBEDO
1904
+ fragData[PREPASS_ALBEDO_INDEX]=vec4f(surfaceAlbedo,writeGeometryInfo);
1905
+ #endif
1906
+ #ifdef PREPASS_ALBEDO_SQRT
1907
+ var sqAlbedo : vec3f=sqrt(surfaceAlbedo);
1908
+ #endif
1909
+ #ifdef PREPASS_IRRADIANCE_LEGACY
1910
+ var irradiance : vec3f=finalDiffuse;
1911
+ #ifndef UNLIT
1912
+ #ifdef REFLECTION
1913
+ irradiance+=finalIrradiance;
1914
+ #endif
1915
+ #endif
1916
+ #ifdef SS_SCATTERING
1917
+ #ifdef PREPASS_COLOR
1918
+ fragData[PREPASS_COLOR_INDEX]=vec4f(finalColor.rgb-irradiance,finalColor.a);
1919
+ #endif
1920
+ irradiance/=sqAlbedo;fragData[PREPASS_IRRADIANCE_LEGACY_INDEX]=vec4f(clamp(irradiance,vec3f(0.),vec3f(1.)),writeGeometryInfo*uniforms.scatteringDiffusionProfile/255.);
1921
+ #else
1922
+ #ifdef PREPASS_COLOR
1923
+ fragData[PREPASS_COLOR_INDEX]=finalColor;
1924
+ #endif
1925
+ fragData[PREPASS_IRRADIANCE_LEGACY_INDEX]=vec4f(clamp(irradiance,vec3f(0.),vec3f(1.)),writeGeometryInfo);
1926
+ #endif
1927
+ #else
1928
+ #ifdef PREPASS_IRRADIANCE
1929
+ var irradiance : vec3f=finalDiffuse;
1930
+ #ifndef UNLIT
1931
+ #ifdef REFLECTION
1932
+ irradiance+=finalIrradiance;
1933
+ #endif
1934
+ #endif
1935
+ fragData[PREPASS_IRRADIANCE_INDEX]=vec4f(irradiance,writeGeometryInfo);
1936
+ #endif
1937
+ #ifdef PREPASS_COLOR
1938
+ fragData[PREPASS_COLOR_INDEX]=vec4f(finalColor.rgb,finalColor.a);
1939
+ #endif
1940
+ #endif
1941
+ #ifdef PREPASS_DEPTH
1942
+ fragData[PREPASS_DEPTH_INDEX]=vec4f(fragmentInputs.vViewPos.z,0.0,0.0,writeGeometryInfo);
1943
+ #endif
1944
+ #ifdef PREPASS_SCREENSPACE_DEPTH
1945
+ fragData[PREPASS_SCREENSPACE_DEPTH_INDEX]=vec4f(fragmentInputs.position.z,0.0,0.0,writeGeometryInfo);
1946
+ #endif
1947
+ #ifdef PREPASS_NORMALIZED_VIEW_DEPTH
1948
+ fragData[PREPASS_NORMALIZED_VIEW_DEPTH_INDEX]=vec4f(fragmentInputs.vNormViewDepth,0.0,0.0,writeGeometryInfo);
1949
+ #endif
1950
+ #ifdef PREPASS_NORMAL
1951
+ #ifdef PREPASS_NORMAL_WORLDSPACE
1952
+ fragData[PREPASS_NORMAL_INDEX]=vec4f(normalW,writeGeometryInfo);
1953
+ #else
1954
+ fragData[PREPASS_NORMAL_INDEX]=vec4f(normalize((scene.view*vec4f(normalW,0.0)).rgb),writeGeometryInfo);
1955
+ #endif
1956
+ #endif
1957
+ #ifdef PREPASS_WORLD_NORMAL
1958
+ fragData[PREPASS_WORLD_NORMAL_INDEX]=vec4f(normalW*0.5+0.5,writeGeometryInfo);
1959
+ #endif
1960
+ #ifdef PREPASS_ALBEDO_SQRT
1961
+ fragData[PREPASS_ALBEDO_SQRT_INDEX]=vec4f(sqAlbedo,writeGeometryInfo);
1962
+ #endif
1963
+ #ifdef PREPASS_REFLECTIVITY
1964
+ #ifndef UNLIT
1965
+ fragData[PREPASS_REFLECTIVITY_INDEX]=vec4f(specularEnvironmentR0,microSurface)*writeGeometryInfo;
1966
+ #else
1967
+ fragData[PREPASS_REFLECTIVITY_INDEX]=vec4f(0.0,0.0,0.0,1.0)*writeGeometryInfo;
1968
+ #endif
1969
+ #endif
1970
+ #if SCENE_MRT_COUNT>0
1971
+ fragmentOutputs.fragData0=fragData[0];
1972
+ #endif
1973
+ #if SCENE_MRT_COUNT>1
1974
+ fragmentOutputs.fragData1=fragData[1];
1975
+ #endif
1976
+ #if SCENE_MRT_COUNT>2
1977
+ fragmentOutputs.fragData2=fragData[2];
1978
+ #endif
1979
+ #if SCENE_MRT_COUNT>3
1980
+ fragmentOutputs.fragData3=fragData[3];
1981
+ #endif
1982
+ #if SCENE_MRT_COUNT>4
1983
+ fragmentOutputs.fragData4=fragData[4];
1984
+ #endif
1985
+ #if SCENE_MRT_COUNT>5
1986
+ fragmentOutputs.fragData5=fragData[5];
1987
+ #endif
1988
+ #if SCENE_MRT_COUNT>6
1989
+ fragmentOutputs.fragData6=fragData[6];
1990
+ #endif
1991
+ #if SCENE_MRT_COUNT>7
1992
+ fragmentOutputs.fragData7=fragData[7];
1993
+ #endif
1994
+ #endif
1995
+ `;a.ShaderStore.IncludesShadersStoreWGSL[eg]||(a.ShaderStore.IncludesShadersStoreWGSL[eg]=eP);var eU=e.i(4818),eb=e.i(87693);let ey="pbrPixelShader",eG=`#define PBR_FRAGMENT_SHADER
1996
+ #define CUSTOM_FRAGMENT_BEGIN
1997
+ #include<prePassDeclaration>[SCENE_MRT_COUNT]
1998
+ #include<oitDeclaration>
1999
+ #ifndef FROMLINEARSPACE
2000
+ #define FROMLINEARSPACE
2001
+ #endif
2002
+ #include<pbrUboDeclaration>
2003
+ #include<pbrFragmentExtraDeclaration>
2004
+ #include<lightUboDeclaration>[0..maxSimultaneousLights]
2005
+ #include<pbrFragmentSamplersDeclaration>
2006
+ #include<imageProcessingDeclaration>
2007
+ #include<clipPlaneFragmentDeclaration>
2008
+ #include<logDepthDeclaration>
2009
+ #include<fogFragmentDeclaration>
2010
+ #include<textureRepetitionFunctions>
2011
+ #include<helperFunctions>
2012
+ #include<subSurfaceScatteringFunctions>
2013
+ #include<importanceSampling>
2014
+ #include<pbrHelperFunctions>
2015
+ #include<imageProcessingFunctions>
2016
+ #include<shadowsFragmentFunctions>
2017
+ #include<harmonicsFunctions>
2018
+ #include<pbrDirectLightingSetupFunctions>
2019
+ #include<pbrDirectLightingFalloffFunctions>
2020
+ #include<pbrBRDFFunctions>
2021
+ #include<hdrFilteringFunctions>
2022
+ #include<pbrDirectLightingFunctions>
2023
+ #include<pbrIBLFunctions>
2024
+ #include<bumpFragmentMainFunctions>
2025
+ #include<bumpFragmentFunctions>
2026
+ #ifdef REFLECTION
2027
+ #include<reflectionFunction>
2028
+ #endif
2029
+ #define CUSTOM_FRAGMENT_DEFINITIONS
2030
+ #include<pbrBlockAlbedoOpacity>
2031
+ #include<pbrBlockReflectivity>
2032
+ #include<pbrBlockAmbientOcclusion>
2033
+ #include<pbrBlockAlphaFresnel>
2034
+ #include<pbrBlockAnisotropic>
2035
+ #include<pbrBlockReflection>
2036
+ #include<pbrBlockSheen>
2037
+ #include<pbrBlockClearcoat>
2038
+ #include<pbrBlockIridescence>
2039
+ #include<pbrBlockSubSurface>
2040
+ @fragment
2041
+ fn main(input: FragmentInputs)->FragmentOutputs {
2042
+ #define CUSTOM_FRAGMENT_MAIN_BEGIN
2043
+ #include<clipPlaneFragment>
2044
+ #include<pbrBlockNormalGeometric>
2045
+ #include<bumpFragment>
2046
+ #include<pbrBlockNormalFinal>
2047
+ var albedoOpacityOut: albedoOpacityOutParams;
2048
+ #ifdef ALBEDO
2049
+ var albedoTexture: vec4f=TEXRD(albedoSampler,albedoSamplerSampler,fragmentInputs.vAlbedoUV+uvOffset);
2050
+ #endif
2051
+ #ifdef BASE_WEIGHT
2052
+ var baseWeightTexture: vec4f=TEXRD(baseWeightSampler,baseWeightSamplerSampler,fragmentInputs.vBaseWeightUV+uvOffset);
2053
+ #endif
2054
+ #ifdef OPACITY
2055
+ var opacityMap: vec4f=TEXRD(opacitySampler,opacitySamplerSampler,fragmentInputs.vOpacityUV+uvOffset);
2056
+ #endif
2057
+ #ifdef DECAL
2058
+ var decalColor: vec4f=textureSample(decalSampler,decalSamplerSampler,fragmentInputs.vDecalUV+uvOffset);
2059
+ #endif
2060
+ albedoOpacityOut=albedoOpacityBlock(
2061
+ uniforms.vAlbedoColor
2062
+ #ifdef ALBEDO
2063
+ ,albedoTexture
2064
+ ,uniforms.vAlbedoInfos
2065
+ #endif
2066
+ ,uniforms.baseWeight
2067
+ #ifdef BASE_WEIGHT
2068
+ ,baseWeightTexture
2069
+ ,uniforms.vBaseWeightInfos
2070
+ #endif
2071
+ #ifdef OPACITY
2072
+ ,opacityMap
2073
+ ,uniforms.vOpacityInfos
2074
+ #endif
2075
+ #ifdef DETAIL
2076
+ ,detailColor
2077
+ ,uniforms.vDetailInfos
2078
+ #endif
2079
+ #ifdef DECAL
2080
+ ,decalColor
2081
+ ,uniforms.vDecalInfos
2082
+ #endif
2083
+ );var surfaceAlbedo: vec3f=albedoOpacityOut.surfaceAlbedo;var alpha: f32=albedoOpacityOut.alpha;
2084
+ #define CUSTOM_FRAGMENT_UPDATE_ALPHA
2085
+ #include<depthPrePass>
2086
+ #define CUSTOM_FRAGMENT_BEFORE_LIGHTS
2087
+ var aoOut: ambientOcclusionOutParams;
2088
+ #ifdef AMBIENT
2089
+ var ambientOcclusionColorMap: vec3f=TEXRD(ambientSampler,ambientSamplerSampler,fragmentInputs.vAmbientUV+uvOffset).rgb;
2090
+ #endif
2091
+ aoOut=ambientOcclusionBlock(
2092
+ #ifdef AMBIENT
2093
+ ambientOcclusionColorMap,
2094
+ uniforms.vAmbientInfos
2095
+ #endif
2096
+ );
2097
+ #include<pbrBlockLightmapInit>
2098
+ #ifdef UNLIT
2099
+ var diffuseBase: vec3f= vec3f(1.,1.,1.);
2100
+ #else
2101
+ var baseColor: vec3f=surfaceAlbedo;var reflectivityOut: reflectivityOutParams;
2102
+ #if defined(REFLECTIVITY)
2103
+ var surfaceMetallicOrReflectivityColorMap: vec4f=TEXRD(reflectivitySampler,reflectivitySamplerSampler,fragmentInputs.vReflectivityUV+uvOffset);var baseReflectivity: vec4f=surfaceMetallicOrReflectivityColorMap;
2104
+ #ifndef METALLICWORKFLOW
2105
+ #ifdef REFLECTIVITY_GAMMA
2106
+ surfaceMetallicOrReflectivityColorMap=toLinearSpaceVec4(surfaceMetallicOrReflectivityColorMap);
2107
+ #endif
2108
+ surfaceMetallicOrReflectivityColorMap=vec4f(surfaceMetallicOrReflectivityColorMap.rgb*uniforms.vReflectivityInfos.y,surfaceMetallicOrReflectivityColorMap.a);
2109
+ #endif
2110
+ #endif
2111
+ #if defined(MICROSURFACEMAP)
2112
+ var microSurfaceTexel: vec4f=TEXRD(microSurfaceSampler,microSurfaceSamplerSampler,fragmentInputs.vMicroSurfaceSamplerUV+uvOffset)*uniforms.vMicroSurfaceSamplerInfos.y;
2113
+ #endif
2114
+ #ifdef BASE_DIFFUSE_ROUGHNESS
2115
+ var baseDiffuseRoughnessTexture: f32=TEXRD(baseDiffuseRoughnessSampler,baseDiffuseRoughnessSamplerSampler,fragmentInputs.vBaseDiffuseRoughnessUV+uvOffset).x;
2116
+ #endif
2117
+ #ifdef METALLICWORKFLOW
2118
+ var metallicReflectanceFactors: vec4f=uniforms.vMetallicReflectanceFactors;
2119
+ #ifdef REFLECTANCE
2120
+ var reflectanceFactorsMap: vec4f=TEXRD(reflectanceSampler,reflectanceSamplerSampler,fragmentInputs.vReflectanceUV+uvOffset);
2121
+ #ifdef REFLECTANCE_GAMMA
2122
+ reflectanceFactorsMap=toLinearSpaceVec4(reflectanceFactorsMap);
2123
+ #endif
2124
+ metallicReflectanceFactors=vec4f(metallicReflectanceFactors.rgb*reflectanceFactorsMap.rgb,metallicReflectanceFactors.a);
2125
+ #endif
2126
+ #ifdef METALLIC_REFLECTANCE
2127
+ var metallicReflectanceFactorsMap: vec4f=TEXRD(metallicReflectanceSampler,metallicReflectanceSamplerSampler,fragmentInputs.vMetallicReflectanceUV+uvOffset);
2128
+ #ifdef METALLIC_REFLECTANCE_GAMMA
2129
+ metallicReflectanceFactorsMap=toLinearSpaceVec4(metallicReflectanceFactorsMap);
2130
+ #endif
2131
+ #ifndef METALLIC_REFLECTANCE_USE_ALPHA_ONLY
2132
+ metallicReflectanceFactors=vec4f(metallicReflectanceFactors.rgb*metallicReflectanceFactorsMap.rgb,metallicReflectanceFactors.a);
2133
+ #endif
2134
+ metallicReflectanceFactors.a*=metallicReflectanceFactorsMap.a;
2135
+ #endif
2136
+ #endif
2137
+ reflectivityOut=reflectivityBlock(
2138
+ uniforms.vReflectivityColor
2139
+ #ifdef METALLICWORKFLOW
2140
+ ,surfaceAlbedo
2141
+ ,metallicReflectanceFactors
2142
+ #endif
2143
+ ,uniforms.baseDiffuseRoughness
2144
+ #ifdef BASE_DIFFUSE_ROUGHNESS
2145
+ ,baseDiffuseRoughnessTexture
2146
+ ,uniforms.vBaseDiffuseRoughnessInfos
2147
+ #endif
2148
+ #ifdef REFLECTIVITY
2149
+ ,uniforms.vReflectivityInfos
2150
+ ,surfaceMetallicOrReflectivityColorMap
2151
+ #endif
2152
+ #if defined(METALLICWORKFLOW) && defined(REFLECTIVITY) && defined(AOSTOREINMETALMAPRED)
2153
+ ,aoOut.ambientOcclusionColor
2154
+ #endif
2155
+ #ifdef MICROSURFACEMAP
2156
+ ,microSurfaceTexel
2157
+ #endif
2158
+ #ifdef DETAIL
2159
+ ,detailColor
2160
+ ,uniforms.vDetailInfos
2161
+ #endif
2162
+ );var microSurface: f32=reflectivityOut.microSurface;var roughness: f32=reflectivityOut.roughness;var diffuseRoughness: f32=reflectivityOut.diffuseRoughness;
2163
+ #ifdef METALLICWORKFLOW
2164
+ surfaceAlbedo=reflectivityOut.surfaceAlbedo;
2165
+ #endif
2166
+ #if defined(METALLICWORKFLOW) && defined(REFLECTIVITY) && defined(AOSTOREINMETALMAPRED)
2167
+ aoOut.ambientOcclusionColor=reflectivityOut.ambientOcclusionColor;
2168
+ #endif
2169
+ #ifdef ALPHAFRESNEL
2170
+ #if defined(ALPHATEST) || defined(ALPHABLEND)
2171
+ var alphaFresnelOut: alphaFresnelOutParams;alphaFresnelOut=alphaFresnelBlock(
2172
+ normalW,
2173
+ viewDirectionW,
2174
+ alpha,
2175
+ microSurface
2176
+ );alpha=alphaFresnelOut.alpha;
2177
+ #endif
2178
+ #endif
2179
+ #include<pbrBlockGeometryInfo>
2180
+ #ifdef ANISOTROPIC
2181
+ var anisotropicOut: anisotropicOutParams;
2182
+ #ifdef ANISOTROPIC_TEXTURE
2183
+ var anisotropyMapData: vec3f=TEXRD(anisotropySampler,anisotropySamplerSampler,fragmentInputs.vAnisotropyUV+uvOffset).rgb*uniforms.vAnisotropyInfos.y;
2184
+ #endif
2185
+ anisotropicOut=anisotropicBlock(
2186
+ uniforms.vAnisotropy,
2187
+ roughness,
2188
+ #ifdef ANISOTROPIC_TEXTURE
2189
+ anisotropyMapData,
2190
+ #endif
2191
+ TBN,
2192
+ normalW,
2193
+ viewDirectionW
2194
+ );
2195
+ #endif
2196
+ #ifdef REFLECTION
2197
+ var reflectionOut: reflectionOutParams;
2198
+ #ifndef USE_CUSTOM_REFLECTION
2199
+ reflectionOut=reflectionBlock(
2200
+ fragmentInputs.vPositionW
2201
+ ,normalW
2202
+ ,alphaG
2203
+ ,uniforms.vReflectionMicrosurfaceInfos
2204
+ ,uniforms.vReflectionInfos
2205
+ ,uniforms.vReflectionColor
2206
+ #ifdef ANISOTROPIC
2207
+ ,anisotropicOut
2208
+ #endif
2209
+ #if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)
2210
+ ,NdotVUnclamped
2211
+ #endif
2212
+ #ifdef LINEARSPECULARREFLECTION
2213
+ ,roughness
2214
+ #endif
2215
+ ,reflectionSampler
2216
+ ,reflectionSamplerSampler
2217
+ #if defined(NORMAL) && defined(USESPHERICALINVERTEX)
2218
+ ,fragmentInputs.vEnvironmentIrradiance
2219
+ #endif
2220
+ #if (defined(USESPHERICALFROMREFLECTIONMAP) && (!defined(NORMAL) || !defined(USESPHERICALINVERTEX))) || (defined(USEIRRADIANCEMAP) && defined(REFLECTIONMAP_3D))
2221
+ ,uniforms.reflectionMatrix
2222
+ #endif
2223
+ #ifdef USEIRRADIANCEMAP
2224
+ ,irradianceSampler
2225
+ ,irradianceSamplerSampler
2226
+ #ifdef USE_IRRADIANCE_DOMINANT_DIRECTION
2227
+ ,uniforms.vReflectionDominantDirection
2228
+ #endif
2229
+ #endif
2230
+ #ifndef LODBASEDMICROSFURACE
2231
+ ,reflectionLowSampler
2232
+ ,reflectionLowSamplerSampler
2233
+ ,reflectionHighSampler
2234
+ ,reflectionHighSamplerSampler
2235
+ #endif
2236
+ #ifdef REALTIME_FILTERING
2237
+ ,uniforms.vReflectionFilteringInfo
2238
+ #ifdef IBL_CDF_FILTERING
2239
+ ,icdfSampler
2240
+ ,icdfSamplerSampler
2241
+ #endif
2242
+ #endif
2243
+ ,viewDirectionW
2244
+ ,diffuseRoughness
2245
+ ,surfaceAlbedo
2246
+ );
2247
+ #else
2248
+ #define CUSTOM_REFLECTION
2249
+ #endif
2250
+ #endif
2251
+ #include<pbrBlockReflectance0>
2252
+ #ifdef SHEEN
2253
+ var sheenOut: sheenOutParams;
2254
+ #ifdef SHEEN_TEXTURE
2255
+ var sheenMapData: vec4f=TEXRD(sheenSampler,sheenSamplerSampler,fragmentInputs.vSheenUV+uvOffset);
2256
+ #endif
2257
+ #if defined(SHEEN_ROUGHNESS) && defined(SHEEN_TEXTURE_ROUGHNESS) && !defined(SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE)
2258
+ var sheenMapRoughnessData: vec4f=TEXRD(sheenRoughnessSampler,sheenRoughnessSamplerSampler,fragmentInputs.vSheenRoughnessUV+uvOffset)*uniforms.vSheenInfos.w;
2259
+ #endif
2260
+ sheenOut=sheenBlock(
2261
+ uniforms.vSheenColor
2262
+ #ifdef SHEEN_ROUGHNESS
2263
+ ,uniforms.vSheenRoughness
2264
+ #if defined(SHEEN_TEXTURE_ROUGHNESS) && !defined(SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE)
2265
+ ,sheenMapRoughnessData
2266
+ #endif
2267
+ #endif
2268
+ ,roughness
2269
+ #ifdef SHEEN_TEXTURE
2270
+ ,sheenMapData
2271
+ ,uniforms.vSheenInfos.y
2272
+ #endif
2273
+ ,reflectanceF0
2274
+ #ifdef SHEEN_LINKWITHALBEDO
2275
+ ,baseColor
2276
+ ,surfaceAlbedo
2277
+ #endif
2278
+ #ifdef ENVIRONMENTBRDF
2279
+ ,NdotV
2280
+ ,environmentBrdf
2281
+ #endif
2282
+ #if defined(REFLECTION) && defined(ENVIRONMENTBRDF)
2283
+ ,AARoughnessFactors
2284
+ ,uniforms.vReflectionMicrosurfaceInfos
2285
+ ,uniforms.vReflectionInfos
2286
+ ,uniforms.vReflectionColor
2287
+ ,uniforms.vLightingIntensity
2288
+ ,reflectionSampler
2289
+ ,reflectionSamplerSampler
2290
+ ,reflectionOut.reflectionCoords
2291
+ ,NdotVUnclamped
2292
+ #ifndef LODBASEDMICROSFURACE
2293
+ ,reflectionLowSampler
2294
+ ,reflectionLowSamplerSampler
2295
+ ,reflectionHighSampler
2296
+ ,reflectionHighSamplerSampler
2297
+ #endif
2298
+ #ifdef REALTIME_FILTERING
2299
+ ,uniforms.vReflectionFilteringInfo
2300
+ #endif
2301
+ #if !defined(REFLECTIONMAP_SKYBOX) && defined(RADIANCEOCCLUSION)
2302
+ ,seo
2303
+ #endif
2304
+ #if !defined(REFLECTIONMAP_SKYBOX) && defined(HORIZONOCCLUSION) && defined(BUMP) && defined(REFLECTIONMAP_3D)
2305
+ ,eho
2306
+ #endif
2307
+ #endif
2308
+ );
2309
+ #ifdef SHEEN_LINKWITHALBEDO
2310
+ surfaceAlbedo=sheenOut.surfaceAlbedo;
2311
+ #endif
2312
+ #endif
2313
+ #ifdef CLEARCOAT
2314
+ #ifdef CLEARCOAT_TEXTURE
2315
+ var clearCoatMapData: vec2f=TEXRD(clearCoatSampler,clearCoatSamplerSampler,fragmentInputs.vClearCoatUV+uvOffset).rg*uniforms.vClearCoatInfos.y;
2316
+ #endif
2317
+ #endif
2318
+ #ifdef IRIDESCENCE
2319
+ var iridescenceOut: iridescenceOutParams;
2320
+ #ifdef IRIDESCENCE_TEXTURE
2321
+ var iridescenceMapData: vec2f=TEXRD(iridescenceSampler,iridescenceSamplerSampler,fragmentInputs.vIridescenceUV+uvOffset).rg*uniforms.vIridescenceInfos.y;
2322
+ #endif
2323
+ #ifdef IRIDESCENCE_THICKNESS_TEXTURE
2324
+ var iridescenceThicknessMapData: vec2f=TEXRD(iridescenceThicknessSampler,iridescenceThicknessSamplerSampler,fragmentInputs.vIridescenceThicknessUV+uvOffset).rg*uniforms.vIridescenceInfos.w;
2325
+ #endif
2326
+ iridescenceOut=iridescenceBlock(
2327
+ uniforms.vIridescenceParams
2328
+ ,NdotV
2329
+ ,specularEnvironmentR0
2330
+ #ifdef IRIDESCENCE_TEXTURE
2331
+ ,iridescenceMapData
2332
+ #endif
2333
+ #ifdef IRIDESCENCE_THICKNESS_TEXTURE
2334
+ ,iridescenceThicknessMapData
2335
+ #endif
2336
+ #ifdef CLEARCOAT
2337
+ ,NdotVUnclamped
2338
+ ,uniforms.vClearCoatParams
2339
+ #ifdef CLEARCOAT_TEXTURE
2340
+ ,clearCoatMapData
2341
+ #endif
2342
+ #endif
2343
+ );var iridescenceIntensity: f32=iridescenceOut.iridescenceIntensity;specularEnvironmentR0=iridescenceOut.specularEnvironmentR0;
2344
+ #endif
2345
+ var clearcoatOut: clearcoatOutParams;
2346
+ #ifdef CLEARCOAT
2347
+ #if defined(CLEARCOAT_TEXTURE_ROUGHNESS) && !defined(CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE)
2348
+ var clearCoatMapRoughnessData: vec4f=TEXRD(clearCoatRoughnessSampler,clearCoatRoughnessSamplerSampler,fragmentInputs.vClearCoatRoughnessUV+uvOffset)*uniforms.vClearCoatInfos.w;
2349
+ #endif
2350
+ #if defined(CLEARCOAT_TINT) && defined(CLEARCOAT_TINT_TEXTURE)
2351
+ var clearCoatTintMapData: vec4f=TEXRD(clearCoatTintSampler,clearCoatTintSamplerSampler,fragmentInputs.vClearCoatTintUV+uvOffset);
2352
+ #endif
2353
+ #ifdef CLEARCOAT_BUMP
2354
+ var clearCoatBumpMapData: vec4f=TEXRD(clearCoatBumpSampler,clearCoatBumpSamplerSampler,fragmentInputs.vClearCoatBumpUV+uvOffset);
2355
+ #endif
2356
+ clearcoatOut=clearcoatBlock(
2357
+ fragmentInputs.vPositionW
2358
+ ,geometricNormalW
2359
+ ,viewDirectionW
2360
+ ,uniforms.vClearCoatParams
2361
+ #if defined(CLEARCOAT_TEXTURE_ROUGHNESS) && !defined(CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE)
2362
+ ,clearCoatMapRoughnessData
2363
+ #endif
2364
+ ,specularEnvironmentR0
2365
+ #ifdef CLEARCOAT_TEXTURE
2366
+ ,clearCoatMapData
2367
+ #endif
2368
+ #ifdef CLEARCOAT_TINT
2369
+ ,uniforms.vClearCoatTintParams
2370
+ ,uniforms.clearCoatColorAtDistance
2371
+ ,uniforms.vClearCoatRefractionParams
2372
+ #ifdef CLEARCOAT_TINT_TEXTURE
2373
+ ,clearCoatTintMapData
2374
+ #endif
2375
+ #endif
2376
+ #ifdef CLEARCOAT_BUMP
2377
+ ,uniforms.vClearCoatBumpInfos
2378
+ ,clearCoatBumpMapData
2379
+ ,fragmentInputs.vClearCoatBumpUV
2380
+ #if defined(TANGENT) && defined(NORMAL)
2381
+ ,mat3x3<f32>(input.vTBN0,input.vTBN1,input.vTBN2)
2382
+ #else
2383
+ ,uniforms.vClearCoatTangentSpaceParams
2384
+ #endif
2385
+ #ifdef OBJECTSPACE_NORMALMAP
2386
+ ,uniforms.normalMatrix
2387
+ #endif
2388
+ #endif
2389
+ #if defined(FORCENORMALFORWARD) && defined(NORMAL)
2390
+ ,faceNormal
2391
+ #endif
2392
+ #ifdef REFLECTION
2393
+ ,uniforms.vReflectionMicrosurfaceInfos
2394
+ ,uniforms.vReflectionInfos
2395
+ ,uniforms.vReflectionColor
2396
+ ,uniforms.vLightingIntensity
2397
+ ,reflectionSampler
2398
+ ,reflectionSamplerSampler
2399
+ #ifndef LODBASEDMICROSFURACE
2400
+ ,reflectionLowSampler
2401
+ ,reflectionLowSamplerSampler
2402
+ ,reflectionHighSampler
2403
+ ,reflectionHighSamplerSampler
2404
+ #endif
2405
+ #ifdef REALTIME_FILTERING
2406
+ ,uniforms.vReflectionFilteringInfo
2407
+ #endif
2408
+ #endif
2409
+ #if defined(CLEARCOAT_BUMP) || defined(TWOSIDEDLIGHTING)
2410
+ ,select(-1.,1.,fragmentInputs.frontFacing)
2411
+ #endif
2412
+ );
2413
+ #else
2414
+ clearcoatOut.specularEnvironmentR0=specularEnvironmentR0;
2415
+ #endif
2416
+ #include<pbrBlockReflectance>
2417
+ var subSurfaceOut: subSurfaceOutParams;
2418
+ #ifdef SUBSURFACE
2419
+ #ifdef SS_THICKNESSANDMASK_TEXTURE
2420
+ var thicknessMap: vec4f=TEXRD(thicknessSampler,thicknessSamplerSampler,fragmentInputs.vThicknessUV+uvOffset);
2421
+ #endif
2422
+ #ifdef SS_REFRACTIONINTENSITY_TEXTURE
2423
+ var refractionIntensityMap: vec4f=TEXRD(refractionIntensitySampler,refractionIntensitySamplerSampler,fragmentInputs.vRefractionIntensityUV+uvOffset);
2424
+ #endif
2425
+ #ifdef SS_TRANSLUCENCYINTENSITY_TEXTURE
2426
+ var translucencyIntensityMap: vec4f=TEXRD(translucencyIntensitySampler,translucencyIntensitySamplerSampler,fragmentInputs.vTranslucencyIntensityUV+uvOffset);
2427
+ #endif
2428
+ #ifdef SS_TRANSLUCENCYCOLOR_TEXTURE
2429
+ var translucencyColorMap: vec4f=TEXRD(translucencyColorSampler,translucencyColorSamplerSampler,fragmentInputs.vTranslucencyColorUV+uvOffset);
2430
+ #ifdef SS_TRANSLUCENCYCOLOR_TEXTURE_GAMMA
2431
+ translucencyColorMap=toLinearSpaceVec4(translucencyColorMap);
2432
+ #endif
2433
+ #endif
2434
+ subSurfaceOut=subSurfaceBlock(
2435
+ uniforms.vSubSurfaceIntensity
2436
+ ,uniforms.vThicknessParam
2437
+ ,uniforms.vTintColor
2438
+ ,normalW
2439
+ #ifdef LEGACY_SPECULAR_ENERGY_CONSERVATION
2440
+ ,vec3f(max(colorSpecularEnvironmentReflectance.r,max(colorSpecularEnvironmentReflectance.g,colorSpecularEnvironmentReflectance.b)))
2441
+ #else
2442
+ ,baseSpecularEnvironmentReflectance
2443
+ #endif
2444
+ #ifdef SS_THICKNESSANDMASK_TEXTURE
2445
+ ,thicknessMap
2446
+ #endif
2447
+ #ifdef SS_REFRACTIONINTENSITY_TEXTURE
2448
+ ,refractionIntensityMap
2449
+ #endif
2450
+ #ifdef SS_TRANSLUCENCYINTENSITY_TEXTURE
2451
+ ,translucencyIntensityMap
2452
+ #endif
2453
+ #ifdef REFLECTION
2454
+ #ifdef SS_TRANSLUCENCY
2455
+ ,uniforms.reflectionMatrix
2456
+ #ifdef USESPHERICALFROMREFLECTIONMAP
2457
+ #if !defined(NORMAL) || !defined(USESPHERICALINVERTEX)
2458
+ ,reflectionOut.irradianceVector
2459
+ #endif
2460
+ #if defined(REALTIME_FILTERING)
2461
+ ,reflectionSampler
2462
+ ,reflectionSamplerSampler
2463
+ ,uniforms.vReflectionFilteringInfo
2464
+ #ifdef IBL_CDF_FILTERING
2465
+ ,icdfSampler
2466
+ ,icdfSamplerSampler
2467
+ #endif
2468
+ #endif
2469
+ #endif
2470
+ #ifdef USEIRRADIANCEMAP
2471
+ ,irradianceSampler
2472
+ ,irradianceSamplerSampler
2473
+ #endif
2474
+ #endif
2475
+ #endif
2476
+ #if defined(SS_REFRACTION) || defined(SS_TRANSLUCENCY)
2477
+ ,surfaceAlbedo
2478
+ #endif
2479
+ #ifdef SS_REFRACTION
2480
+ ,fragmentInputs.vPositionW
2481
+ ,viewDirectionW
2482
+ ,scene.view
2483
+ ,uniforms.vRefractionInfos
2484
+ ,uniforms.refractionMatrix
2485
+ ,uniforms.vRefractionMicrosurfaceInfos
2486
+ ,uniforms.vLightingIntensity
2487
+ #ifdef SS_LINKREFRACTIONTOTRANSPARENCY
2488
+ ,alpha
2489
+ #endif
2490
+ #ifdef SS_LODINREFRACTIONALPHA
2491
+ ,NdotVUnclamped
2492
+ #endif
2493
+ #ifdef SS_LINEARSPECULARREFRACTION
2494
+ ,roughness
2495
+ #endif
2496
+ ,alphaG
2497
+ ,refractionSampler
2498
+ ,refractionSamplerSampler
2499
+ #ifndef LODBASEDMICROSFURACE
2500
+ ,refractionLowSampler
2501
+ ,refractionLowSamplerSampler
2502
+ ,refractionHighSampler
2503
+ ,refractionHighSamplerSampler
2504
+ #endif
2505
+ #ifdef ANISOTROPIC
2506
+ ,anisotropicOut
2507
+ #endif
2508
+ #ifdef REALTIME_FILTERING
2509
+ ,uniforms.vRefractionFilteringInfo
2510
+ #endif
2511
+ #ifdef SS_USE_LOCAL_REFRACTIONMAP_CUBIC
2512
+ ,uniforms.vRefractionPosition
2513
+ ,uniforms.vRefractionSize
2514
+ #endif
2515
+ #ifdef SS_DISPERSION
2516
+ ,uniforms.dispersion
2517
+ #endif
2518
+ #endif
2519
+ #ifdef SS_TRANSLUCENCY
2520
+ ,uniforms.vDiffusionDistance
2521
+ ,uniforms.vTranslucencyColor
2522
+ #ifdef SS_TRANSLUCENCYCOLOR_TEXTURE
2523
+ ,translucencyColorMap
2524
+ #endif
2525
+ #endif
2526
+ );
2527
+ #ifdef SS_REFRACTION
2528
+ surfaceAlbedo=subSurfaceOut.surfaceAlbedo;
2529
+ #ifdef SS_LINKREFRACTIONTOTRANSPARENCY
2530
+ alpha=subSurfaceOut.alpha;
2531
+ #endif
2532
+ #endif
2533
+ #else
2534
+ subSurfaceOut.specularEnvironmentReflectance=colorSpecularEnvironmentReflectance;
2535
+ #endif
2536
+ #include<pbrBlockDirectLighting>
2537
+ #include<lightFragment>[0..maxSimultaneousLights]
2538
+ #include<pbrBlockFinalLitComponents>
2539
+ #endif
2540
+ #include<pbrBlockFinalUnlitComponents>
2541
+ #define CUSTOM_FRAGMENT_BEFORE_FINALCOLORCOMPOSITION
2542
+ #include<pbrBlockFinalColorComposition>
2543
+ #include<logDepthFragment>
2544
+ #include<fogFragment>(color,finalColor)
2545
+ #include<pbrBlockImageProcessing>
2546
+ #define CUSTOM_FRAGMENT_BEFORE_FRAGCOLOR
2547
+ #ifdef PREPASS
2548
+ #include<pbrBlockPrePass>
2549
+ #endif
2550
+ #if !defined(PREPASS) && !defined(ORDER_INDEPENDENT_TRANSPARENCY)
2551
+ fragmentOutputs.color=finalColor;
2552
+ #endif
2553
+ #include<oitFragment>
2554
+ #if ORDER_INDEPENDENT_TRANSPARENCY
2555
+ if (fragDepth==nearestDepth) {fragmentOutputs.frontColor=vec4f(fragmentOutputs.frontColor.rgb+finalColor.rgb*finalColor.a*alphaMultiplier,1.0-alphaMultiplier*(1.0-finalColor.a));} else {fragmentOutputs.backColor+=finalColor;}
2556
+ #endif
2557
+ #include<pbrDebug>
2558
+ #define CUSTOM_FRAGMENT_MAIN_END
2559
+ }
2560
+ `;for(let e of(a.ShaderStore.ShadersStoreWGSL[ey]||(a.ShaderStore.ShadersStoreWGSL[ey]=eG),[r.prePassDeclarationWGSL,i.oitDeclarationWGSL,n.sceneUboDeclarationWGSL,f.meshUboDeclarationWGSL,o.pbrUboDeclarationWGSL,t.mainUVVaryingDeclarationWGSL,c.pbrFragmentExtraDeclarationWGSL,l.lightUboDeclarationWGSL,d.samplerFragmentDeclarationWGSL,{name:s,shader:E},S.pbrFragmentReflectionDeclarationWGSL,{name:R,shader:m},C.imageProcessingDeclarationWGSL,u.clipPlaneFragmentDeclarationWGSL,v.logDepthDeclarationWGSL,I.fogFragmentDeclarationWGSL,A.textureRepetitionFunctionsWGSL,p.helperFunctionsWGSL,N.subSurfaceScatteringFunctionsWGSL,O.importanceSamplingWGSL,T.pbrHelperFunctionsWGSL,L.imageProcessingFunctionsWGSL,_.shadowsFragmentFunctionsWGSL,M.harmonicsFunctionsWGSL,D.ltcHelperFunctionsWGSL,F.pbrDirectLightingSetupFunctionsWGSL,h.pbrDirectLightingFalloffFunctionsWGSL,g.pbrBRDFFunctionsWGSL,P.hdrFilteringFunctionsWGSL,U.clusteredLightingFunctionsWGSL,b.pbrBlockReflectance0WGSL,y.pbrDirectLightingFunctionsWGSL,G.pbrIBLFunctionsWGSL,B.bumpFragmentMainFunctionsWGSL,V.bumpFragmentFunctionsWGSL,W.reflectionFunctionWGSL,H.decalFragmentWGSL,{name:x,shader:X},{name:Y,shader:w},{name:k,shader:z},{name:K,shader:q},{name:Z,shader:J},{name:Q,shader:j},{name:$,shader:ee},{name:ea,shader:er},{name:ei,shader:en},{name:ef,shader:eo},et.clipPlaneFragmentWGSL,ec.pbrBlockNormalGeometricWGSL,el.bumpFragmentWGSL,{name:ed,shader:es},eE.depthPrePassWGSL,{name:eS,shader:eR},{name:em,shader:eC},{name:eu,shader:ev},{name:eI,shader:eA},ep.lightFragmentWGSL,{name:eN,shader:eO},{name:eT,shader:eL},{name:e_,shader:eM},eD.logDepthFragmentWGSL,eF.fogFragmentWGSL,eh.pbrBlockImageProcessingWGSL,{name:eg,shader:eP},eU.oitFragmentWGSL,eb.pbrDebugWGSL]))a.ShaderStore.IncludesShadersStoreWGSL[e.name]||(a.ShaderStore.IncludesShadersStoreWGSL[e.name]=e.shader);e.s(["pbrPixelShaderWGSL",0,{name:ey,shader:eG}],31614)}]);