@uptimizr/dashboard 0.4.5 → 0.4.7

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 (384) hide show
  1. package/out/404.html +1 -1
  2. package/out/__next.__PAGE__.txt +19 -5
  3. package/out/__next._full.txt +11 -11
  4. package/out/__next._tree.txt +2 -2
  5. package/out/_next/static/chunks/{3kalvwsf11-ss.js → 0-_j1khfoib6l.js} +119 -115
  6. package/out/_next/static/chunks/{0-tzsd_n-ywom.js → 005bbq_px7lke.js} +2 -2
  7. package/out/_next/static/chunks/00fbhtmui-yxg.js +1 -0
  8. package/out/_next/static/chunks/017pn-pen381_.js +1 -0
  9. package/out/_next/static/chunks/01vov6inx1zzt.js +1 -0
  10. package/out/_next/static/chunks/{3d76e_yd8l_0x.js → 02qk_wmkf9at-.js} +211 -211
  11. package/out/_next/static/chunks/03bd5plut08tg.js +1 -0
  12. package/out/_next/static/chunks/03dwfqmo73w_z.js +1 -0
  13. package/out/_next/static/chunks/03sn4419dam-h.js +5 -0
  14. package/out/_next/static/chunks/05ere0-228syf.js +1 -0
  15. package/out/_next/static/chunks/{2g_1ov-0j2kwd.js → 05h8u5lrypn5m.js} +1 -1
  16. package/out/_next/static/chunks/05s0t-besbvu1.css +3 -0
  17. package/out/_next/static/chunks/{3go-mst7n3udd.js → 05v-nubi896jg.js} +1 -1
  18. package/out/_next/static/chunks/05z79zh625ezu.js +1 -0
  19. package/out/_next/static/chunks/{1t2exh89lnazc.js → 060iult6f68_e.js} +504 -571
  20. package/out/_next/static/chunks/08lvtnv7b1cxp.js +1 -0
  21. package/out/_next/static/chunks/0_v2luu_qmeid.js +1 -0
  22. package/out/_next/static/chunks/0ai0zgbgjqb92.js +1 -0
  23. package/out/_next/static/chunks/0boov9mwycanf.js +1 -0
  24. package/out/_next/static/chunks/{0av6n_6q6kzo3.js → 0btmk0wmekl02.js} +2 -2
  25. package/out/_next/static/chunks/0d8x8m2x6ca_m.js +1 -0
  26. package/out/_next/static/chunks/0dmrdrwtd093b.js +1 -0
  27. package/out/_next/static/chunks/0e1jfrmioeuws.js +1 -0
  28. package/out/_next/static/chunks/0e7nlxmneb2j_.js +1 -0
  29. package/out/_next/static/chunks/0es97pusfxupl.js +1 -0
  30. package/out/_next/static/chunks/{05uqfgf-hh-p5.js → 0fd-0i1yt23kz.js} +1 -1
  31. package/out/_next/static/chunks/0fxdyvb1w23d1.js +1 -0
  32. package/out/_next/static/chunks/0fxhc24djjcgq.js +1 -0
  33. package/out/_next/static/chunks/0gf-ztg86zd80.js +1 -0
  34. package/out/_next/static/chunks/{380ivzcfb4o_3.js → 0grasqqf5dw7r.js} +2 -2
  35. package/out/_next/static/chunks/{0okbyggxe6mx5.js → 0hajwk2yd-rwr.js} +1 -1
  36. package/out/_next/static/chunks/0hk1wg7h4araz.js +1 -0
  37. package/out/_next/static/chunks/{1vmpltnr0cyos.js → 0j74ipw4fps-n.js} +1 -1
  38. package/out/_next/static/chunks/{03zip1uidm6x9.js → 0kj-vckdn7t5p.js} +1 -1
  39. package/out/_next/static/chunks/0lbs5xdyjuzuo.js +1 -0
  40. package/out/_next/static/chunks/0lep3_bqwfuin.js +1 -0
  41. package/out/_next/static/chunks/0mp0jh1gj7290.js +1 -0
  42. package/out/_next/static/chunks/0ngpoj2g5i4kz.js +1 -0
  43. package/out/_next/static/chunks/0nhljhguceh66.js +1 -0
  44. package/out/_next/static/chunks/0p6z73afb9dj2.js +1 -0
  45. package/out/_next/static/chunks/0p9zfmidzqkps.js +1 -0
  46. package/out/_next/static/chunks/0q75860p8u_ii.js +1 -0
  47. package/out/_next/static/chunks/{0-0hui1_v3h8b.js → 0rracz73p38mo.js} +26 -23
  48. package/out/_next/static/chunks/{3z4suna4kq4j5.js → 0sw-8gxbg4x0l.js} +568 -569
  49. package/out/_next/static/chunks/0sx-6rf3eteqn.js +1 -0
  50. package/out/_next/static/chunks/0thw099xk3_0p.js +3 -0
  51. package/out/_next/static/chunks/0u85f0dhb4i8e.js +1 -0
  52. package/out/_next/static/chunks/0uk7kigzm4vi2.js +31 -0
  53. package/out/_next/static/chunks/0ulufxnsrou61.js +1 -0
  54. package/out/_next/static/chunks/0xa9dyg6ezzyd.js +2 -0
  55. package/out/_next/static/chunks/0xvrfvur0p534.js +1 -0
  56. package/out/_next/static/chunks/{35aagg46wp139.js → 0ybs1u66q26su.js} +1 -1
  57. package/out/_next/static/chunks/0ydfhk-p6zvm0.js +1 -0
  58. package/out/_next/static/chunks/{29gv2swsp7tzu.js → 0z004fn14pbcu.js} +1 -1
  59. package/out/_next/static/chunks/{2z9mdtudj8crz.js → 0z9erbl3llr_b.js} +226 -224
  60. package/out/_next/static/chunks/0zcsxvcvog9ue.js +1 -0
  61. package/out/_next/static/chunks/0zqgq0lwtz9tn.js +1 -0
  62. package/out/_next/static/chunks/1-ogak5u00kwa.js +1 -0
  63. package/out/_next/static/chunks/{1ng-fqh2_n984.js → 10_5p5-xf2aoo.js} +1 -1
  64. package/out/_next/static/chunks/118qlrzdwpfmo.js +1 -0
  65. package/out/_next/static/chunks/11km5p4gd0ut4.js +1 -0
  66. package/out/_next/static/chunks/120rl4l29q9xs.js +1 -0
  67. package/out/_next/static/chunks/{1ho02fc091nj2.js → 129m5i93ltoym.js} +1 -1
  68. package/out/_next/static/chunks/12n73o884lyyl.js +1 -0
  69. package/out/_next/static/chunks/{3n-7bcmfbh299.js → 13zcn4lv0qj76.js} +11 -11
  70. package/out/_next/static/chunks/15jlgfcaeaki9.js +1 -0
  71. package/out/_next/static/chunks/{1ux1rpe-n1mai.js → 15o4_2t-l3rj5.js} +1 -1
  72. package/out/_next/static/chunks/{00o9hr_3hd0r8.js → 175st2ogkg_1o.js} +1 -1
  73. package/out/_next/static/chunks/19rsodtu91ja_.js +1 -0
  74. package/out/_next/static/chunks/1a2ouhup611bz.js +1 -0
  75. package/out/_next/static/chunks/{1solqr18og2ot.js → 1by60_b14x-3o.js} +1 -1
  76. package/out/_next/static/chunks/1cyq7i39885sl.js +1 -0
  77. package/out/_next/static/chunks/1d9it6yocgt54.js +1 -0
  78. package/out/_next/static/chunks/1dp1s1t-y7gal.js +1 -0
  79. package/out/_next/static/chunks/1dr7gh6xgypl8.js +1 -0
  80. package/out/_next/static/chunks/{32vaw89wdwv5_.js → 1dt30s_sp8415.js} +1 -1
  81. package/out/_next/static/chunks/{1t7nl8rx7mabd.js → 1e8_jl2cxd3rp.js} +576 -576
  82. package/out/_next/static/chunks/1f1rek_fxk3of.js +1 -0
  83. package/out/_next/static/chunks/1f2mna0k5efeq.js +1 -0
  84. package/out/_next/static/chunks/1gfz3sxwkkg3d.js +1 -0
  85. package/out/_next/static/chunks/1gr35qeguuws0.js +1 -0
  86. package/out/_next/static/chunks/{0g2wngc6oe7fd.js → 1gttu-n9am66k.js} +255 -253
  87. package/out/_next/static/chunks/1imi0xwi9hd99.js +1 -0
  88. package/out/_next/static/chunks/1ka5v5zu0cstt.js +1 -0
  89. package/out/_next/static/chunks/{17aahvhpls1l7.js → 1l_3oidssbhns.js} +298 -231
  90. package/out/_next/static/chunks/1m9zc5gm-327d.js +112 -0
  91. package/out/_next/static/chunks/1n9nhz-6azcp3.js +3 -0
  92. package/out/_next/static/chunks/1ncqwe81t_9_x.js +1 -0
  93. package/out/_next/static/chunks/1nix_lulkpklo.js +1 -0
  94. package/out/_next/static/chunks/{141tngxsk32hq.js → 1ntqovuz2c217.js} +1 -1
  95. package/out/_next/static/chunks/1pgs-98tfkq9_.js +1 -0
  96. package/out/_next/static/chunks/1q2z0aeopo8t8.js +1 -0
  97. package/out/_next/static/chunks/{2zpn7010iqgsy.js → 1q4lkgxfnqnew.js} +1 -1
  98. package/out/_next/static/chunks/{2khh_pmm224k5.js → 1qg1l7t00nyib.js} +97 -300
  99. package/out/_next/static/chunks/{1qxhgauuomthl.js → 1rcdimhu0qhlu.js} +407 -407
  100. package/out/_next/static/chunks/1rlfg62jxqj3z.js +1 -0
  101. package/out/_next/static/chunks/1ses023uud001.js +1 -0
  102. package/out/_next/static/chunks/1t5oynmttpfsw.js +1 -0
  103. package/out/_next/static/chunks/{25gf6xn9u1c57.js → 1t9i20i5-f8ze.js} +1 -1
  104. package/out/_next/static/chunks/{2h5nvlgky7fpa.js → 1tgj55b305g4h.js} +1 -1
  105. package/out/_next/static/chunks/{255knovck7pv2.js → 1u8snlm6a7uhi.js} +4 -4
  106. package/out/_next/static/chunks/{04_3ri5emyfcu.js → 1ug4k-1zhr63a.js} +1 -1
  107. package/out/_next/static/chunks/{3-_08i4_7yhno.js → 1uh9zgsy69g92.js} +1 -1
  108. package/out/_next/static/chunks/1vrpzlif-z_p0.js +1 -0
  109. package/out/_next/static/chunks/1vurgl6oz2qey.js +17 -0
  110. package/out/_next/static/chunks/1w-qc09n9ijtq.js +1 -0
  111. package/out/_next/static/chunks/1ycqxcht6x54p.js +1 -0
  112. package/out/_next/static/chunks/{2zyjw8g4tiu51.js → 1zj4307ugq0qz.js} +1 -1
  113. package/out/_next/static/chunks/{425epvuw3yy-n.js → 1zkd8v-qka--j.js} +169 -174
  114. package/out/_next/static/chunks/1zm52cjrfrq7c.js +1 -0
  115. package/out/_next/static/chunks/{267q_eg-c6f6m.js → 1zm6eo861i3c8.js} +1 -1
  116. package/out/_next/static/chunks/{1e_-_7biavwmb.js → 1zp9363yfhpom.js} +1 -1
  117. package/out/_next/static/chunks/1zt1xxovnjhkm.js +1 -0
  118. package/out/_next/static/chunks/2-3hk_db5fpok.js +1 -0
  119. package/out/_next/static/chunks/2-bv9a_0zgw1f.js +1 -0
  120. package/out/_next/static/chunks/209sxygecny37.js +1 -0
  121. package/out/_next/static/chunks/{1ccn725by19i1.js → 216uiih3_vdfd.js} +1 -1
  122. package/out/_next/static/chunks/21kfpd_bityxt.js +1 -0
  123. package/out/_next/static/chunks/22yqh0zlo_vwr.js +1 -0
  124. package/out/_next/static/chunks/24ecas0m9tao7.js +3 -0
  125. package/out/_next/static/chunks/24pq9210rng3f.js +1 -0
  126. package/out/_next/static/chunks/{0zf26k6juhlzo.js → 267prao6fyt22.js} +23 -20
  127. package/out/_next/static/chunks/26skkagvj1z96.js +1 -0
  128. package/out/_next/static/chunks/26y9sv8_-ykxf.js +1 -0
  129. package/out/_next/static/chunks/2701xfv_07wz_.js +1 -0
  130. package/out/_next/static/chunks/{1x99m91nt1m3b.js → 271333m8y3k0e.js} +1 -1
  131. package/out/_next/static/chunks/29rkmguzky-bp.js +1 -0
  132. package/out/_next/static/chunks/{077eo-0dhbxz-.js → 2a07so920b6aa.js} +1 -1
  133. package/out/_next/static/chunks/2a2oy8ryz2tsk.js +1 -0
  134. package/out/_next/static/chunks/2ao-3jzz7yw3p.js +532 -0
  135. package/out/_next/static/chunks/2apihn9ra2ufp.js +1 -0
  136. package/out/_next/static/chunks/2apnpj0-fs9ks.js +1 -0
  137. package/out/_next/static/chunks/2b481pitl4k85.js +1 -0
  138. package/out/_next/static/chunks/2bettxaqt3d2p.js +1 -0
  139. package/out/_next/static/chunks/{1fyh50hjt7hi_.js → 2c721vfva711t.js} +1 -1
  140. package/out/_next/static/chunks/{442e2l3jzxd-_.js → 2d2kl_m64j9cb.js} +1 -1
  141. package/out/_next/static/chunks/2droqjmvmgj13.js +1 -0
  142. package/out/_next/static/chunks/2dxbvwbbgpzoq.js +1 -0
  143. package/out/_next/static/chunks/2eqbsut829r5l.js +1 -0
  144. package/out/_next/static/chunks/2f3_mzxjh3gso.js +1 -0
  145. package/out/_next/static/chunks/2fsde0jwi5qtt.js +1 -0
  146. package/out/_next/static/chunks/2h249uvhh2sij.js +114 -0
  147. package/out/_next/static/chunks/{1gvdmbr65lpud.js → 2izok2otbk8-2.js} +505 -505
  148. package/out/_next/static/chunks/{0yvevihll7sz-.js → 2j120dkh7q3uf.js} +1 -1
  149. package/out/_next/static/chunks/2j2ynchpqh34-.js +1 -0
  150. package/out/_next/static/chunks/2kj6pzs_wap1v.js +1 -0
  151. package/out/_next/static/chunks/{2-p206i_ihx09.js → 2kok6zedeeltw.js} +1 -1
  152. package/out/_next/static/chunks/2lnj9jruy4nrv.js +1 -0
  153. package/out/_next/static/chunks/{41yy4p3-rtyz1.js → 2lsvk7xcfkarc.js} +1 -1
  154. package/out/_next/static/chunks/2n-pveub8b_5t.js +1 -0
  155. package/out/_next/static/chunks/{00xc-0pj7on2s.js → 2n3xu_wbvtj7h.js} +29 -29
  156. package/out/_next/static/chunks/{1oljzgz5jistn.js → 2of8q0kaeqpf0.js} +1 -1
  157. package/out/_next/static/chunks/2ofwtw6p08sfz.js +1 -0
  158. package/out/_next/static/chunks/2phl5ta4iim7l.js +12 -0
  159. package/out/_next/static/chunks/2q6l-xdqzgmpf.js +1 -0
  160. package/out/_next/static/chunks/2q8yg63br2jc9.js +1 -0
  161. package/out/_next/static/chunks/2r5qgieqldcd9.js +1 -0
  162. package/out/_next/static/chunks/2r7y401cvjc1s.js +1 -0
  163. package/out/_next/static/chunks/{22ja7c3gk0_ko.js → 2r96kyeehsji9.js} +1 -1
  164. package/out/_next/static/chunks/{3gyyjsot8mdav.js → 2rmc6ru7mc-kg.js} +1 -1
  165. package/out/_next/static/chunks/{1ephzzweysylq.js → 2s6kpclh6ie7o.js} +901 -973
  166. package/out/_next/static/chunks/{0vso09vdz38sr.js → 2sys9nj8lo3uk.js} +1 -1
  167. package/out/_next/static/chunks/{0w-hm7g7trtjg.js → 2tc3e-iqv71y_.js} +1 -1
  168. package/out/_next/static/chunks/2uo6vm7mfgrbf.js +1 -0
  169. package/out/_next/static/chunks/2urx6fow8c8c9.js +505 -0
  170. package/out/_next/static/chunks/2w2k1gveljyb7.js +1 -0
  171. package/out/_next/static/chunks/{22rl_arnzs-ve.js → 2w99knknr5i8c.js} +1 -1
  172. package/out/_next/static/chunks/2w_ptlw-ad8-9.js +4 -0
  173. package/out/_next/static/chunks/2ws1s9d52ayv8.js +1 -0
  174. package/out/_next/static/chunks/2x7enks3ydgai.js +1 -0
  175. package/out/_next/static/chunks/{2e46-2ubc90do.js → 2y8i7_nxm4r05.js} +5 -5
  176. package/out/_next/static/chunks/2ydub0t01728d.js +1 -0
  177. package/out/_next/static/chunks/{309f81l5ucsb_.js → 2z_iab7ozohhq.js} +60 -60
  178. package/out/_next/static/chunks/3-m_vzabs1uez.js +1 -0
  179. package/out/_next/static/chunks/{0t89-lfct-7m6.js → 302qk2fjdrthp.js} +5 -5
  180. package/out/_next/static/chunks/30bhz7czzs4mf.js +1 -0
  181. package/out/_next/static/chunks/{0tn-9w46cwydp.js → 30n4y_uu8chbh.js} +515 -514
  182. package/out/_next/static/chunks/{2-hdejef-mpka.js → 32_c4mbb6j1l6.js} +372 -169
  183. package/out/_next/static/chunks/33hp-khdfohdq.js +1 -0
  184. package/out/_next/static/chunks/{28ndw4nsw2t_4.js → 33i36o_l69sm5.js} +1 -1
  185. package/out/_next/static/chunks/3527r3jo5fj3i.js +1 -0
  186. package/out/_next/static/chunks/355dg8yaa94hr.js +1 -0
  187. package/out/_next/static/chunks/{11p92pnn5el0v.js → 35ntbr_c-yx44.js} +1 -1
  188. package/out/_next/static/chunks/{2rjfrjhp4kjev.js → 35sne1llxnc-m.js} +57 -57
  189. package/out/_next/static/chunks/36enkx1skkv2-.js +4 -0
  190. package/out/_next/static/chunks/{3-x7522okdy-7.js → 3772oce1n3t_g.js} +1 -1
  191. package/out/_next/static/chunks/{1rb8wewjbdisv.js → 37cnbm5ft1mqf.js} +1 -1
  192. package/out/_next/static/chunks/38xdo3cifphut.js +1 -0
  193. package/out/_next/static/chunks/{1tt1bbry-4f-6.js → 3_dgblylldcgb.js} +1 -1
  194. package/out/_next/static/chunks/3beawo-qwuk8k.js +1 -0
  195. package/out/_next/static/chunks/3cj_6sl9kr3e9.js +1 -0
  196. package/out/_next/static/chunks/3d-i_skta_wes.js +1 -0
  197. package/out/_next/static/chunks/3df_l2we755bb.js +1 -0
  198. package/out/_next/static/chunks/{43hwl25uke0l_.js → 3eve5y7fpzx2h.js} +1 -1
  199. package/out/_next/static/chunks/3ewgyb4y19w-3.js +1 -0
  200. package/out/_next/static/chunks/3f3789eh18_oy.js +1 -0
  201. package/out/_next/static/chunks/{1n_gxvu31aofy.js → 3f8qelpscqfym.js} +2 -2
  202. package/out/_next/static/chunks/3g3-e9m1en45q.js +1 -0
  203. package/out/_next/static/chunks/{0uxdbfa8gv6tk.js → 3h6akt2uu05ku.js} +29 -29
  204. package/out/_next/static/chunks/{3w4qettzp7khe.js → 3huu0tqmxwowu.js} +523 -522
  205. package/out/_next/static/chunks/3i239y-1hbkm-.js +1 -0
  206. package/out/_next/static/chunks/{1qsut_e3msg0l.js → 3ipx7xbxchsq9.js} +1 -1
  207. package/out/_next/static/chunks/{2ftp5xmq_w23j.js → 3j9xvdz55bi4p.js} +345 -345
  208. package/out/_next/static/chunks/3kp8qmhoi24oz.js +1 -0
  209. package/out/_next/static/chunks/3ksq69yq-40_r.js +1 -0
  210. package/out/_next/static/chunks/{2x83vs8ns4pww.js → 3njwfothmmg7u.js} +3 -3
  211. package/out/_next/static/chunks/{0bj_310rugcn1.js → 3oqxl46ukaojj.js} +11 -11
  212. package/out/_next/static/chunks/{1upkv4ltuh3s5.js → 3qn6r8-0u6dij.js} +352 -352
  213. package/out/_next/static/chunks/3qye1lytea2i8.js +1 -0
  214. package/out/_next/static/chunks/3rlp9yr75liz7.js +1 -0
  215. package/out/_next/static/chunks/{2i82rmjta9ijs.js → 3sa_hlx3konc7.js} +1 -1
  216. package/out/_next/static/chunks/3tyo643l62h3m.js +1 -0
  217. package/out/_next/static/chunks/3tz2tpqa9uvwm.js +1 -0
  218. package/out/_next/static/chunks/{2pbgsq7vvtk8_.js → 3utpc-fc6_y0f.js} +1 -1
  219. package/out/_next/static/chunks/3v-0c2aj6c0on.js +1 -0
  220. package/out/_next/static/chunks/3v6nxa28rxngq.js +1 -0
  221. package/out/_next/static/chunks/{1og49_atcksim.js → 3vbamaoiuk9yj.js} +1 -1
  222. package/out/_next/static/chunks/3vv99btjc-mky.js +1 -0
  223. package/out/_next/static/chunks/{1nqojcig-0m3c.js → 3w59kt5ztyvoq.js} +1 -1
  224. package/out/_next/static/chunks/3x02lxdo28u9i.js +1 -0
  225. package/out/_next/static/chunks/3xl-op0hwxytg.js +272 -0
  226. package/out/_next/static/chunks/3ydnxyc4rvad_.js +1 -0
  227. package/out/_next/static/chunks/3ylg4gfetwgxw.js +1 -0
  228. package/out/_next/static/chunks/{1-4v8oivkgnyl.js → 3zdtteq-r2fs5.js} +3 -3
  229. package/out/_next/static/chunks/3zkwt0gybqtgm.js +1 -0
  230. package/out/_next/static/chunks/{0wq_9f98weoe3.js → 3zs7l4362msjd.js} +1 -1
  231. package/out/_next/static/chunks/40etabvml_71y.js +1 -0
  232. package/out/_next/static/chunks/417jkzz0slv9m.js +1 -0
  233. package/out/_next/static/chunks/41b5gpyqbj58m.js +338 -0
  234. package/out/_next/static/chunks/41u2-5jayyajf.js +22 -0
  235. package/out/_next/static/chunks/42gcpy51w7lk1.js +1 -0
  236. package/out/_next/static/chunks/{1ph0tfo-4hl-f.js → 42ymanq326mo7.js} +1 -1
  237. package/out/_next/static/chunks/{3w_umk1xtj6to.js → 43fp64xnfy646.js} +1 -1
  238. package/out/_next/static/chunks/43v4y2gu5z9_h.js +1 -0
  239. package/out/_next/static/chunks/44cer242u-f8v.js +1 -0
  240. package/out/_next/static/chunks/{1ozi46t8jajqh.js → 44zi0gl0a6a8w.js} +1 -1
  241. package/out/_next/static/chunks/turbopack-0n2o5_bkskckx.js +1 -0
  242. package/out/_not-found/__next._full.txt +12 -12
  243. package/out/_not-found/__next._not-found.__PAGE__.txt +19 -2
  244. package/out/_not-found/__next._tree.txt +2 -2
  245. package/out/_not-found.html +1 -1
  246. package/out/_not-found.txt +12 -12
  247. package/out/index.html +1 -1
  248. package/out/index.txt +11 -11
  249. package/package.json +15 -15
  250. package/out/__next._head.txt +0 -6
  251. package/out/__next._index.txt +0 -5
  252. package/out/_next/static/chunks/00g5suuoa-_wn.js +0 -1
  253. package/out/_next/static/chunks/01fh3_bncbe5u.js +0 -1
  254. package/out/_next/static/chunks/01urdkl1j8o6l.js +0 -1
  255. package/out/_next/static/chunks/026vw95s88gsy.js +0 -1
  256. package/out/_next/static/chunks/02eui3ctddbd2.js +0 -1
  257. package/out/_next/static/chunks/04c4nksb5y9r-.js +0 -1
  258. package/out/_next/static/chunks/04g-l-_b4payc.js +0 -1
  259. package/out/_next/static/chunks/04j9pexbmysdy.js +0 -1
  260. package/out/_next/static/chunks/055baac5e-c2o.js +0 -1
  261. package/out/_next/static/chunks/05bdni_jrobq1.js +0 -1
  262. package/out/_next/static/chunks/05o0tb8l_htmw.js +0 -1
  263. package/out/_next/static/chunks/07z6p262h5hgl.js +0 -1
  264. package/out/_next/static/chunks/08m_4cihfmik8.js +0 -1
  265. package/out/_next/static/chunks/08obqw64faj8j.js +0 -1
  266. package/out/_next/static/chunks/099ilz3dmm1jw.js +0 -1
  267. package/out/_next/static/chunks/09ppu_k464q-n.js +0 -1
  268. package/out/_next/static/chunks/0bgcaf2x51kms.js +0 -1
  269. package/out/_next/static/chunks/0c5d3qn2mb3ew.js +0 -1
  270. package/out/_next/static/chunks/0dck67in84de0.js +0 -1
  271. package/out/_next/static/chunks/0dg4wxz-6u5lo.js +0 -1
  272. package/out/_next/static/chunks/0dva036n8ab62.js +0 -1
  273. package/out/_next/static/chunks/0erga_bzezbza.js +0 -1
  274. package/out/_next/static/chunks/0f0-i105odxqd.js +0 -1
  275. package/out/_next/static/chunks/0gyeqz9pagssf.js +0 -1
  276. package/out/_next/static/chunks/0i82k-t0fbn8f.js +0 -1
  277. package/out/_next/static/chunks/0kzw45f61wm3j.js +0 -1
  278. package/out/_next/static/chunks/0l8bfa2xewq69.js +0 -1
  279. package/out/_next/static/chunks/0n-zml1gn0o1u.js +0 -1
  280. package/out/_next/static/chunks/0n92hec_jb_-_.js +0 -1
  281. package/out/_next/static/chunks/0pv2wirx45e1m.js +0 -1
  282. package/out/_next/static/chunks/0qxd_8t3nca36.js +0 -1
  283. package/out/_next/static/chunks/0s1jghzw8jufz.js +0 -1
  284. package/out/_next/static/chunks/0s84ekz_f9ngx.js +0 -1
  285. package/out/_next/static/chunks/0ti58h622yo-_.js +0 -2
  286. package/out/_next/static/chunks/0u8yr4k1y6m2t.js +0 -1
  287. package/out/_next/static/chunks/0ubxyut5rr600.js +0 -1
  288. package/out/_next/static/chunks/0wbw9h7rsis2r.js +0 -1
  289. package/out/_next/static/chunks/0y4e49hpuucdi.js +0 -1
  290. package/out/_next/static/chunks/1-b44873bjsdw.js +0 -1
  291. package/out/_next/static/chunks/1-c3a1vnl8v1q.js +0 -1
  292. package/out/_next/static/chunks/1-xf86jgea22y.js +0 -1
  293. package/out/_next/static/chunks/10b0qqdnb_nox.js +0 -1
  294. package/out/_next/static/chunks/12kdmh0h_mboy.js +0 -1
  295. package/out/_next/static/chunks/14ijcpo72av4r.js +0 -1
  296. package/out/_next/static/chunks/16hdip1drt8o-.js +0 -1
  297. package/out/_next/static/chunks/18txc1wwwu9f9.js +0 -1
  298. package/out/_next/static/chunks/18wa83g0qfh-b.js +0 -1
  299. package/out/_next/static/chunks/19dp8nr4uygg2.js +0 -5
  300. package/out/_next/static/chunks/1_8acnu6_-qe-.js +0 -1
  301. package/out/_next/static/chunks/1__nujzr9e352.js +0 -3
  302. package/out/_next/static/chunks/1bmyq1b0by7ug.js +0 -1
  303. package/out/_next/static/chunks/1d1tpj9nm1nhf.js +0 -1
  304. package/out/_next/static/chunks/1dfwa563iciz3.js +0 -1
  305. package/out/_next/static/chunks/1di5enkavl9vx.js +0 -4
  306. package/out/_next/static/chunks/1fwsjnd1y-lx_.js +0 -1
  307. package/out/_next/static/chunks/1gaexq_suxai0.js +0 -1
  308. package/out/_next/static/chunks/1gnggc6370ji-.js +0 -1
  309. package/out/_next/static/chunks/1gtj_l5ame5mw.js +0 -1
  310. package/out/_next/static/chunks/1hsvckd0sgdgr.js +0 -1
  311. package/out/_next/static/chunks/1i4f3n_2_3ery.js +0 -1
  312. package/out/_next/static/chunks/1j7e3qpjuj89a.js +0 -1
  313. package/out/_next/static/chunks/1mrvp94tietcv.js +0 -1
  314. package/out/_next/static/chunks/1mvadj46owrck.js +0 -1
  315. package/out/_next/static/chunks/1nasz7q3tvb53.js +0 -1
  316. package/out/_next/static/chunks/1o3ggu95lfu6i.js +0 -1
  317. package/out/_next/static/chunks/1qjsgebn9m-0l.js +0 -1
  318. package/out/_next/static/chunks/1rr74xxjtckyv.js +0 -1
  319. package/out/_next/static/chunks/1uu55ejvi7q5u.js +0 -1
  320. package/out/_next/static/chunks/1xbzxfeq9789f.js +0 -1
  321. package/out/_next/static/chunks/1ybiu-rkt50_1.js +0 -1
  322. package/out/_next/static/chunks/20qelrstvz9_n.js +0 -1
  323. package/out/_next/static/chunks/21at65obnoo8z.js +0 -1
  324. package/out/_next/static/chunks/21ko5mxfderw0.js +0 -1
  325. package/out/_next/static/chunks/21muzwu43o8xg.js +0 -1
  326. package/out/_next/static/chunks/23d-hvrwpixpm.js +0 -1
  327. package/out/_next/static/chunks/2569rrrffvm2w.js +0 -31
  328. package/out/_next/static/chunks/29o74k0d6hkdf.js +0 -1
  329. package/out/_next/static/chunks/2bm95r0011asw.js +0 -1
  330. package/out/_next/static/chunks/2btabnibkm0db.js +0 -1
  331. package/out/_next/static/chunks/2c--awgkdcikq.js +0 -1
  332. package/out/_next/static/chunks/2c2dspoukng-5.js +0 -1
  333. package/out/_next/static/chunks/2ep7mjbaoeou0.js +0 -1
  334. package/out/_next/static/chunks/2ezgqm7atphi6.js +0 -1
  335. package/out/_next/static/chunks/2gfjzq_vjea4w.js +0 -1
  336. package/out/_next/static/chunks/2h5hase6ewoyc.js +0 -1
  337. package/out/_next/static/chunks/2hghi41nhdww2.css +0 -3
  338. package/out/_next/static/chunks/2ies66gmou203.js +0 -1
  339. package/out/_next/static/chunks/2jenu2eek9viz.js +0 -1
  340. package/out/_next/static/chunks/2luaj_cf5f19-.js +0 -1
  341. package/out/_next/static/chunks/2mgmvz66gh5ub.js +0 -1
  342. package/out/_next/static/chunks/2nwlqtv3vrzcv.js +0 -1
  343. package/out/_next/static/chunks/2o8k8x5zcepfy.js +0 -1
  344. package/out/_next/static/chunks/2pcdnd4nzcw4c.js +0 -1
  345. package/out/_next/static/chunks/2q0rz76kj6h5z.js +0 -1
  346. package/out/_next/static/chunks/2si5cg3hl5dtf.js +0 -4
  347. package/out/_next/static/chunks/2uhrhq35bki6u.js +0 -1
  348. package/out/_next/static/chunks/2wi7y3sfqyqdo.js +0 -3
  349. package/out/_next/static/chunks/2ymtumj-hfrjo.js +0 -1
  350. package/out/_next/static/chunks/2zdzgmacaoor9.js +0 -1
  351. package/out/_next/static/chunks/3-irhmtm1q5qw.js +0 -1
  352. package/out/_next/static/chunks/3-k74vn9exnb6.js +0 -1
  353. package/out/_next/static/chunks/31ei992g8gqz9.js +0 -1
  354. package/out/_next/static/chunks/34845aqksy1dl.js +0 -3
  355. package/out/_next/static/chunks/34y7nx6qmat06.js +0 -1
  356. package/out/_next/static/chunks/36rqw8h6ildpl.js +0 -1
  357. package/out/_next/static/chunks/3a_khw6q6pyh1.js +0 -1
  358. package/out/_next/static/chunks/3c_31f20z4jrl.js +0 -1
  359. package/out/_next/static/chunks/3ckp70rgr63u9.js +0 -1
  360. package/out/_next/static/chunks/3ed24zmt8qfys.js +0 -1
  361. package/out/_next/static/chunks/3ez20hi1mxw0w.js +0 -1
  362. package/out/_next/static/chunks/3fdx-rnos5ft-.js +0 -1
  363. package/out/_next/static/chunks/3fgfbxxb-j_bn.js +0 -4
  364. package/out/_next/static/chunks/3k-gz8qf-mj-p.js +0 -1
  365. package/out/_next/static/chunks/3lehc5pujwhsz.js +0 -1
  366. package/out/_next/static/chunks/3m0ytnc241yfz.js +0 -1
  367. package/out/_next/static/chunks/3mpe7c3iyxn5h.js +0 -1
  368. package/out/_next/static/chunks/3mvaub8qjdyuc.js +0 -1
  369. package/out/_next/static/chunks/3nw7u4bie0-g6.js +0 -1
  370. package/out/_next/static/chunks/3qatb38-tk_gd.js +0 -1
  371. package/out/_next/static/chunks/3tdcdi_utmoy_.js +0 -1
  372. package/out/_next/static/chunks/3tdzweqszru4y.js +0 -1
  373. package/out/_next/static/chunks/3tt_ir_va6262.js +0 -1
  374. package/out/_next/static/chunks/3y_51bmdnc0ey.js +0 -1
  375. package/out/_next/static/chunks/3yr66ufoli71t.js +0 -1
  376. package/out/_next/static/chunks/41qxc142snm22.js +0 -1
  377. package/out/_next/static/chunks/43qmngblcab8f.js +0 -1
  378. package/out/_next/static/chunks/turbopack-3r8yn0j92tqw_.js +0 -1
  379. package/out/_not-found/__next._head.txt +0 -6
  380. package/out/_not-found/__next._index.txt +0 -5
  381. package/out/_not-found/__next._not-found.txt +0 -5
  382. /package/out/_next/static/{BvOGdrl2Cfw-jVV73WY6a → A1hxMz783bIWo0Q9qqV3L}/_buildManifest.js +0 -0
  383. /package/out/_next/static/{BvOGdrl2Cfw-jVV73WY6a → A1hxMz783bIWo0Q9qqV3L}/_clientMiddlewareManifest.js +0 -0
  384. /package/out/_next/static/{BvOGdrl2Cfw-jVV73WY6a → A1hxMz783bIWo0Q9qqV3L}/_ssgManifest.js +0 -0
@@ -1,71 +1,19 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,39780,83958,e=>{"use strict";var o=e.i(37875);let t="clipPlaneFragmentDeclaration",i=`#ifdef CLIPPLANE
2
- varying float fClipDistance;
3
- #endif
4
- #ifdef CLIPPLANE2
5
- varying float fClipDistance2;
6
- #endif
7
- #ifdef CLIPPLANE3
8
- varying float fClipDistance3;
9
- #endif
10
- #ifdef CLIPPLANE4
11
- varying float fClipDistance4;
12
- #endif
13
- #ifdef CLIPPLANE5
14
- varying float fClipDistance5;
15
- #endif
16
- #ifdef CLIPPLANE6
17
- varying float fClipDistance6;
18
- #endif
19
- `;o.ShaderStore.IncludesShadersStore[t]||(o.ShaderStore.IncludesShadersStore[t]=i),e.s(["clipPlaneFragmentDeclaration",0,{name:t,shader:i}],39780);let r="clipPlaneFragment",a=`#if defined(CLIPPLANE) || defined(CLIPPLANE2) || defined(CLIPPLANE3) || defined(CLIPPLANE4) || defined(CLIPPLANE5) || defined(CLIPPLANE6)
20
- if (false) {}
21
- #endif
22
- #ifdef CLIPPLANE
23
- else if (fClipDistance>0.0)
24
- {discard;}
25
- #endif
26
- #ifdef CLIPPLANE2
27
- else if (fClipDistance2>0.0)
28
- {discard;}
29
- #endif
30
- #ifdef CLIPPLANE3
31
- else if (fClipDistance3>0.0)
32
- {discard;}
33
- #endif
34
- #ifdef CLIPPLANE4
35
- else if (fClipDistance4>0.0)
36
- {discard;}
37
- #endif
38
- #ifdef CLIPPLANE5
39
- else if (fClipDistance5>0.0)
40
- {discard;}
41
- #endif
42
- #ifdef CLIPPLANE6
43
- else if (fClipDistance6>0.0)
44
- {discard;}
45
- #endif
46
- `;o.ShaderStore.IncludesShadersStore[r]||(o.ShaderStore.IncludesShadersStore[r]=a),e.s(["clipPlaneFragment",0,{name:r,shader:a}],83958)},3107,51464,e=>{"use strict";var o=e.i(37875);let t="fogFragmentDeclaration",i=`#ifdef FOG
47
- #define FOGMODE_NONE 0.
48
- #define FOGMODE_EXP 1.
49
- #define FOGMODE_EXP2 2.
50
- #define FOGMODE_LINEAR 3.
51
- #define E 2.71828
52
- uniform vec4 vFogInfos;uniform vec3 vFogColor;varying vec3 vFogDistance;float CalcFogFactor()
53
- {float fogCoeff=1.0;float fogStart=vFogInfos.y;float fogEnd=vFogInfos.z;float fogDensity=vFogInfos.w;float fogDistance=length(vFogDistance);if (FOGMODE_LINEAR==vFogInfos.x)
54
- {fogCoeff=(fogEnd-fogDistance)/(fogEnd-fogStart);}
55
- else if (FOGMODE_EXP==vFogInfos.x)
56
- {fogCoeff=1.0/pow(E,fogDistance*fogDensity);}
57
- else if (FOGMODE_EXP2==vFogInfos.x)
58
- {fogCoeff=1.0/pow(E,fogDistance*fogDistance*fogDensity*fogDensity);}
59
- return clamp(fogCoeff,0.0,1.0);}
60
- #endif
61
- `;o.ShaderStore.IncludesShadersStore[t]||(o.ShaderStore.IncludesShadersStore[t]=i),e.s(["fogFragmentDeclaration",0,{name:t,shader:i}],3107);let r="fogFragment",a=`#ifdef FOG
62
- float fog=CalcFogFactor();
63
- #ifdef PBR
64
- fog=toLinearSpace(fog);
65
- #endif
66
- color.rgb=mix(vFogColor,color.rgb,fog);
67
- #endif
68
- `;o.ShaderStore.IncludesShadersStore[r]||(o.ShaderStore.IncludesShadersStore[r]=a),e.s(["fogFragment",0,{name:r,shader:a}],51464)},87027,e=>{"use strict";var o=e.i(37875);let t="helperFunctions",i=`const float PI=3.1415926535897932384626433832795;const float TWO_PI=6.283185307179586;const float HALF_PI=1.5707963267948966;const float RECIPROCAL_PI=0.3183098861837907;const float RECIPROCAL_PI2=0.15915494309189535;const float RECIPROCAL_PI4=0.07957747154594767;const float HALF_MIN=5.96046448e-08;
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,8500,e=>{"use strict";var o=e.i(2342);let t="harmonicsFunctions",i=`#ifdef USESPHERICALFROMREFLECTIONMAP
2
+ #ifdef SPHERICAL_HARMONICS
3
+ vec3 computeEnvironmentIrradiance(vec3 normal) {return vSphericalL00
4
+ + vSphericalL1_1*(normal.y)
5
+ + vSphericalL10*(normal.z)
6
+ + vSphericalL11*(normal.x)
7
+ + vSphericalL2_2*(normal.y*normal.x)
8
+ + vSphericalL2_1*(normal.y*normal.z)
9
+ + vSphericalL20*((3.0*normal.z*normal.z)-1.0)
10
+ + vSphericalL21*(normal.z*normal.x)
11
+ + vSphericalL22*(normal.x*normal.x-(normal.y*normal.y));}
12
+ #else
13
+ vec3 computeEnvironmentIrradiance(vec3 normal) {float Nx=normal.x;float Ny=normal.y;float Nz=normal.z;vec3 C1=vSphericalZZ.rgb;vec3 Cx=vSphericalX.rgb;vec3 Cy=vSphericalY.rgb;vec3 Cz=vSphericalZ.rgb;vec3 Cxx_zz=vSphericalXX_ZZ.rgb;vec3 Cyy_zz=vSphericalYY_ZZ.rgb;vec3 Cxy=vSphericalXY.rgb;vec3 Cyz=vSphericalYZ.rgb;vec3 Czx=vSphericalZX.rgb;vec3 a1=Cyy_zz*Ny+Cy;vec3 a2=Cyz*Nz+a1;vec3 b1=Czx*Nz+Cx;vec3 b2=Cxy*Ny+b1;vec3 b3=Cxx_zz*Nx+b2;vec3 t1=Cz *Nz+C1;vec3 t2=a2 *Ny+t1;vec3 t3=b3 *Nx+t2;return t3;}
14
+ #endif
15
+ #endif
16
+ `;o.ShaderStore.IncludesShadersStore[t]||(o.ShaderStore.IncludesShadersStore[t]=i),e.s(["harmonicsFunctions",0,{name:t,shader:i}])},62308,e=>{"use strict";var o=e.i(2342);let t="helperFunctions",i=`const float PI=3.1415926535897932384626433832795;const float TWO_PI=6.283185307179586;const float HALF_PI=1.5707963267948966;const float RECIPROCAL_PI=0.3183098861837907;const float RECIPROCAL_PI2=0.15915494309189535;const float RECIPROCAL_PI4=0.07957747154594767;const float HALF_MIN=5.96046448e-08;
69
17
  const float LinearEncodePowerApprox=2.2;const float GammaEncodePowerApprox=1.0/LinearEncodePowerApprox;const vec3 LuminanceEncodeApprox=vec3(0.2126,0.7152,0.0722);const float Epsilon=0.0000001;
70
18
  #define saturate(x) clamp(x,0.0,1.0)
71
19
  #define absEps(x) abs(x)+Epsilon
@@ -183,40 +131,89 @@ float uint2float(uint i) {return uintBitsToFloat(0x3F800000u | (i>>9u))-1.0;}
183
131
  vec2 plasticSequence(const uint rstate) {return vec2(uint2float(rstate*3242174889u),
184
132
  uint2float(rstate*2447445414u));}
185
133
  #endif
186
- `;o.ShaderStore.IncludesShadersStore[t]||(o.ShaderStore.IncludesShadersStore[t]=i),e.s(["helperFunctions",0,{name:t,shader:i}])},23044,e=>{"use strict";var o=e.i(37875);let t="sceneUboDeclaration",i=`layout(std140,column_major) uniform;uniform Scene {mat4 viewProjection;
187
- #ifdef MULTIVIEW
188
- mat4 viewProjectionR;
189
- #endif
190
- mat4 view;mat4 projection;vec4 vEyePosition;mat4 inverseProjection;};
191
- `;o.ShaderStore.IncludesShadersStore[t]||(o.ShaderStore.IncludesShadersStore[t]=i),e.s(["sceneUboDeclaration",0,{name:t,shader:i}])},64010,46349,85394,e=>{"use strict";var o=e.i(37875);let t="meshUboDeclaration",i=`#ifdef WEBGL2
134
+ `;o.ShaderStore.IncludesShadersStore[t]||(o.ShaderStore.IncludesShadersStore[t]=i),e.s(["helperFunctions",0,{name:t,shader:i}])},80790,e=>{"use strict";var o=e.i(2342);let t="logDepthDeclaration",i=`#ifdef LOGARITHMICDEPTH
135
+ uniform float logarithmicDepthConstant;varying float vFragmentDepth;
136
+ #endif
137
+ `;o.ShaderStore.IncludesShadersStore[t]||(o.ShaderStore.IncludesShadersStore[t]=i),e.s(["logDepthDeclaration",0,{name:t,shader:i}])},65225,e=>{"use strict";var o=e.i(2342);let t="mainUVVaryingDeclaration",i=`#ifdef MAINUV{X}
138
+ varying vec2 vMainUV{X};
139
+ #endif
140
+ `;o.ShaderStore.IncludesShadersStore[t]||(o.ShaderStore.IncludesShadersStore[t]=i),e.s(["mainUVVaryingDeclaration",0,{name:t,shader:i}])},49676,e=>{"use strict";var o=e.i(2342);let t="meshUboDeclaration",i=`#ifdef WEBGL2
192
141
  uniform mat4 world;uniform float visibility;
193
142
  #else
194
143
  layout(std140,column_major) uniform;uniform Mesh
195
144
  {mat4 world;float visibility;};
196
145
  #endif
197
146
  #define WORLD_UBO
198
- `;o.ShaderStore.IncludesShadersStore[t]||(o.ShaderStore.IncludesShadersStore[t]=i),e.s(["meshUboDeclaration",0,{name:t,shader:i}],64010);let r="mainUVVaryingDeclaration",a=`#ifdef MAINUV{X}
199
- varying vec2 vMainUV{X};
147
+ `;o.ShaderStore.IncludesShadersStore[t]||(o.ShaderStore.IncludesShadersStore[t]=i),e.s(["meshUboDeclaration",0,{name:t,shader:i}])},64541,e=>{"use strict";var o=e.i(2342);let t="openpbrSubsurfaceLayerData",i=`float subsurface_weight=vSubsurfaceWeight;vec3 subsurface_color=vSubsurfaceColor.rgb;float subsurface_radius=vSubsurfaceRadius;vec3 subsurface_radius_scale=vSubsurfaceRadiusScale;float subsurface_scatter_anisotropy=clamp(vSubsurfaceScatterAnisotropy,-0.9999,0.9999);
148
+ #ifdef SUBSURFACE_WEIGHT
149
+ vec4 subsurfaceWeightFromTexture=TEXRD(subsurfaceWeightSampler,vSubsurfaceWeightUV+uvOffset);
200
150
  #endif
201
- `;o.ShaderStore.IncludesShadersStore[r]||(o.ShaderStore.IncludesShadersStore[r]=a),e.s(["mainUVVaryingDeclaration",0,{name:r,shader:a}],46349);let n="logDepthDeclaration",l=`#ifdef LOGARITHMICDEPTH
202
- uniform float logarithmicDepthConstant;varying float vFragmentDepth;
151
+ #ifdef SUBSURFACE_COLOR
152
+ vec4 subsurfaceColorFromTexture=TEXRD(subsurfaceColorSampler,vSubsurfaceColorUV+uvOffset);
203
153
  #endif
204
- `;o.ShaderStore.IncludesShadersStore[n]||(o.ShaderStore.IncludesShadersStore[n]=l),e.s(["logDepthDeclaration",0,{name:n,shader:l}],85394)},98932,e=>{"use strict";var o=e.i(37875);let t="harmonicsFunctions",i=`#ifdef USESPHERICALFROMREFLECTIONMAP
205
- #ifdef SPHERICAL_HARMONICS
206
- vec3 computeEnvironmentIrradiance(vec3 normal) {return vSphericalL00
207
- + vSphericalL1_1*(normal.y)
208
- + vSphericalL10*(normal.z)
209
- + vSphericalL11*(normal.x)
210
- + vSphericalL2_2*(normal.y*normal.x)
211
- + vSphericalL2_1*(normal.y*normal.z)
212
- + vSphericalL20*((3.0*normal.z*normal.z)-1.0)
213
- + vSphericalL21*(normal.z*normal.x)
214
- + vSphericalL22*(normal.x*normal.x-(normal.y*normal.y));}
154
+ #ifdef SUBSURFACE_RADIUS_SCALE
155
+ vec4 subsurfaceRadiusScaleFromTexture=TEXRD(subsurfaceRadiusScaleSampler,vSubsurfaceRadiusScaleUV+uvOffset);
156
+ #endif
157
+ #ifdef SUBSURFACE_WEIGHT
158
+ #ifdef SUBSURFACE_WEIGHT_FROM_TEXTURE_ALPHA
159
+ subsurface_weight*=subsurfaceWeightFromTexture.a;
215
160
  #else
216
- vec3 computeEnvironmentIrradiance(vec3 normal) {float Nx=normal.x;float Ny=normal.y;float Nz=normal.z;vec3 C1=vSphericalZZ.rgb;vec3 Cx=vSphericalX.rgb;vec3 Cy=vSphericalY.rgb;vec3 Cz=vSphericalZ.rgb;vec3 Cxx_zz=vSphericalXX_ZZ.rgb;vec3 Cyy_zz=vSphericalYY_ZZ.rgb;vec3 Cxy=vSphericalXY.rgb;vec3 Cyz=vSphericalYZ.rgb;vec3 Czx=vSphericalZX.rgb;vec3 a1=Cyy_zz*Ny+Cy;vec3 a2=Cyz*Nz+a1;vec3 b1=Czx*Nz+Cx;vec3 b2=Cxy*Ny+b1;vec3 b3=Cxx_zz*Nx+b2;vec3 t1=Cz *Nz+C1;vec3 t2=a2 *Ny+t1;vec3 t3=b3 *Nx+t2;return t3;}
161
+ subsurface_weight*=subsurfaceWeightFromTexture.r;
162
+ #endif
163
+ #endif
164
+ #ifdef SUBSURFACE_COLOR
165
+ #ifdef SUBSURFACE_COLOR_GAMMA
166
+ subsurface_color*=toLinearSpace(subsurfaceColorFromTexture.rgb);
167
+ #else
168
+ subsurface_color*=subsurfaceColorFromTexture.rgb;
169
+ #endif
170
+ subsurface_color*=vSubsurfaceColorInfos.y;
171
+ #endif
172
+ #ifdef SUBSURFACE_RADIUS_SCALE
173
+ subsurface_radius_scale*=subsurfaceRadiusScaleFromTexture.rgb;
174
+ #endif
175
+ `;o.ShaderStore.IncludesShadersStore[t]||(o.ShaderStore.IncludesShadersStore[t]=i),e.s(["openpbrSubsurfaceLayerData",0,{name:t,shader:i}])},33521,e=>{"use strict";var o=e.i(2342);let t="openpbrTransmissionLayerData",i=`float transmission_weight=vTransmissionWeight;vec3 transmission_color=vTransmissionColor.rgb;float transmission_depth=vTransmissionDepth;vec3 transmission_scatter=vTransmissionScatter.rgb;float transmission_scatter_anisotropy=clamp(vTransmissionScatterAnisotropy,-0.9999,0.9999);float transmission_dispersion_scale=vTransmissionDispersionScale;float transmission_dispersion_abbe_number=vTransmissionDispersionAbbeNumber;
176
+ #ifdef TRANSMISSION_WEIGHT
177
+ vec4 transmissionWeightFromTexture=TEXRD(transmissionWeightSampler,vTransmissionWeightUV+uvOffset);
178
+ #endif
179
+ #ifdef TRANSMISSION_COLOR
180
+ vec4 transmissionColorFromTexture=TEXRD(transmissionColorSampler,vTransmissionColorUV+uvOffset);
217
181
  #endif
182
+ #ifdef TRANSMISSION_DEPTH
183
+ vec4 transmissionDepthFromTexture=TEXRD(transmissionDepthSampler,vTransmissionDepthUV+uvOffset);
184
+ #endif
185
+ #ifdef TRANSMISSION_SCATTER
186
+ vec4 transmissionScatterFromTexture=TEXRD(transmissionScatterSampler,vTransmissionScatterUV+uvOffset);
187
+ #endif
188
+ #ifdef TRANSMISSION_DISPERSION_SCALE
189
+ vec4 transmissionDispersionScaleFromTexture=TEXRD(transmissionDispersionScaleSampler,vTransmissionDispersionScaleUV+uvOffset);
190
+ #endif
191
+ #ifdef TRANSMISSION_WEIGHT
192
+ transmission_weight*=transmissionWeightFromTexture.r;
193
+ #endif
194
+ #ifdef TRANSMISSION_COLOR
195
+ #ifdef TRANSMISSION_COLOR_GAMMA
196
+ transmission_color*=toLinearSpace(transmissionColorFromTexture.rgb);
197
+ #else
198
+ transmission_color*=transmissionColorFromTexture.rgb;
199
+ #endif
200
+ transmission_color*=vTransmissionColorInfos.y;
201
+ #endif
202
+ #ifdef TRANSMISSION_DEPTH
203
+ transmission_depth*=transmissionDepthFromTexture.r;
204
+ #endif
205
+ #ifdef TRANSMISSION_SCATTER
206
+ transmission_scatter*=transmissionScatterFromTexture.rgb;
207
+ #endif
208
+ #ifdef TRANSMISSION_DISPERSION_SCALE
209
+ transmission_dispersion_scale*=transmissionDispersionScaleFromTexture.r;
218
210
  #endif
219
- `;o.ShaderStore.IncludesShadersStore[t]||(o.ShaderStore.IncludesShadersStore[t]=i),e.s(["harmonicsFunctions",0,{name:t,shader:i}])},85916,e=>{"use strict";var o=e.i(37875);let t="pbrBRDFFunctions",i=`#define FRESNEL_MAXIMUM_ON_ROUGH 0.25
211
+ `;o.ShaderStore.IncludesShadersStore[t]||(o.ShaderStore.IncludesShadersStore[t]=i),e.s(["openpbrTransmissionLayerData",0,{name:t,shader:i}])},91141,e=>{"use strict";var o=e.i(2342);e.i(19831),e.i(49676);let t="openpbrUboDeclaration",i=`layout(std140,column_major) uniform;uniform Material {vec2 vTangentSpaceParams;vec4 vLightingIntensity;float pointSize;vec2 vDebugMode;vec2 renderTargetSize;vec4 cameraInfo;vec4 vTextureRepetitionHexTilingParams;mat4 backgroundRefractionMatrix;vec3 vBackgroundRefractionInfos;vec2 vReflectionInfos;mat4 reflectionMatrix;vec3 vReflectionMicrosurfaceInfos;vec3 vReflectionPosition;vec3 vReflectionSize;vec2 vReflectionFilteringInfo;vec3 vReflectionDominantDirection;vec3 vReflectionColor;vec3 vSphericalL00;vec3 vSphericalL1_1;vec3 vSphericalL10;vec3 vSphericalL11;vec3 vSphericalL2_2;vec3 vSphericalL2_1;vec3 vSphericalL20;vec3 vSphericalL21;vec3 vSphericalL22;vec3 vSphericalX;vec3 vSphericalY;vec3 vSphericalZ;vec3 vSphericalXX_ZZ;vec3 vSphericalYY_ZZ;vec3 vSphericalZZ;vec3 vSphericalXY;vec3 vSphericalYZ;vec3 vSphericalZX;float vBaseWeight;vec4 vBaseColor;float vBaseDiffuseRoughness;vec4 vReflectanceInfo;vec4 vSpecularColor;vec3 vSpecularAnisotropy;float vTransmissionWeight;vec3 vTransmissionColor;float vTransmissionDepth;vec3 vTransmissionScatter;float vTransmissionScatterAnisotropy;float vTransmissionDispersionScale;float vTransmissionDispersionAbbeNumber;float vSubsurfaceWeight;vec3 vSubsurfaceColor;float vSubsurfaceRadius;vec3 vSubsurfaceRadiusScale;float vSubsurfaceScatterAnisotropy;float vCoatWeight;vec3 vCoatColor;float vCoatRoughness;float vCoatRoughnessAnisotropy;float vCoatIor;float vCoatDarkening;float vFuzzWeight;vec3 vFuzzColor;float vFuzzRoughness;float vGeometryThinWalled;vec2 vGeometryCoatTangent;float vGeometryThickness;vec3 vEmissionColor;float vThinFilmWeight;vec2 vThinFilmThickness;float vThinFilmIor;vec2 vBaseWeightInfos;mat4 baseWeightMatrix;vec2 vBaseColorInfos;mat4 baseColorMatrix;vec2 vBaseDiffuseRoughnessInfos;mat4 baseDiffuseRoughnessMatrix;vec2 vBaseMetalnessInfos;mat4 baseMetalnessMatrix;vec2 vSpecularWeightInfos;mat4 specularWeightMatrix;vec2 vSpecularColorInfos;mat4 specularColorMatrix;vec2 vSpecularRoughnessInfos;mat4 specularRoughnessMatrix;vec2 vSpecularRoughnessAnisotropyInfos;mat4 specularRoughnessAnisotropyMatrix;vec2 vTransmissionWeightInfos;mat4 transmissionWeightMatrix;vec2 vTransmissionColorInfos;mat4 transmissionColorMatrix;vec2 vTransmissionDepthInfos;mat4 transmissionDepthMatrix;vec2 vTransmissionScatterInfos;mat4 transmissionScatterMatrix;vec2 vTransmissionDispersionScaleInfos;mat4 transmissionDispersionScaleMatrix;vec2 vSubsurfaceWeightInfos;mat4 subsurfaceWeightMatrix;vec2 vSubsurfaceColorInfos;mat4 subsurfaceColorMatrix;vec2 vSubsurfaceRadiusScaleInfos;mat4 subsurfaceRadiusScaleMatrix;vec2 vCoatWeightInfos;mat4 coatWeightMatrix;vec2 vCoatColorInfos;mat4 coatColorMatrix;vec2 vCoatRoughnessInfos;mat4 coatRoughnessMatrix;vec2 vCoatRoughnessAnisotropyInfos;mat4 coatRoughnessAnisotropyMatrix;vec2 vCoatDarkeningInfos;mat4 coatDarkeningMatrix;vec2 vFuzzWeightInfos;mat4 fuzzWeightMatrix;vec2 vFuzzColorInfos;mat4 fuzzColorMatrix;vec2 vFuzzRoughnessInfos;mat4 fuzzRoughnessMatrix;vec2 vGeometryNormalInfos;mat4 geometryNormalMatrix;vec2 vGeometryTangentInfos;mat4 geometryTangentMatrix;vec2 vGeometryCoatNormalInfos;mat4 geometryCoatNormalMatrix;vec2 vGeometryCoatTangentInfos;mat4 geometryCoatTangentMatrix;vec2 vGeometryOpacityInfos;mat4 geometryOpacityMatrix;vec2 vGeometryThicknessInfos;mat4 geometryThicknessMatrix;vec2 vEmissionColorInfos;mat4 emissionColorMatrix;vec2 vThinFilmWeightInfos;mat4 thinFilmWeightMatrix;vec2 vThinFilmThicknessInfos;mat4 thinFilmThicknessMatrix;vec2 vAmbientOcclusionInfos;mat4 ambientOcclusionMatrix;
212
+ #define ADDITIONAL_UBO_DECLARATION
213
+ };
214
+ #include<sceneUboDeclaration>
215
+ #include<meshUboDeclaration>
216
+ `;o.ShaderStore.IncludesShadersStore[t]||(o.ShaderStore.IncludesShadersStore[t]=i),e.s(["openpbrUboDeclaration",0,{name:t,shader:i}])},74701,e=>{"use strict";var o=e.i(2342);let t="pbrBRDFFunctions",i=`#define FRESNEL_MAXIMUM_ON_ROUGH 0.25
220
217
  #define BRDF_DIFFUSE_MODEL_EON 0
221
218
  #define BRDF_DIFFUSE_MODEL_BURLEY 1
222
219
  #define BRDF_DIFFUSE_MODEL_LAMBERT 2
@@ -389,1062 +386,993 @@ vec3 transmittanceBRDF_Burley(const vec3 tintColor,const vec3 diffusionDistance,
389
386
  float computeWrappedDiffuseNdotL(float NdotL,float w) {float t=1.0+w;float invt2=1.0/square(t);return saturate((NdotL+w)*invt2);}
390
387
  #endif
391
388
  #endif
392
- `;o.ShaderStore.IncludesShadersStore[t]||(o.ShaderStore.IncludesShadersStore[t]=i),e.s(["pbrBRDFFunctions",0,{name:t,shader:i}])},9268,e=>{"use strict";var o=e.i(37875);e.i(23044),e.i(64010);let t="openpbrUboDeclaration",i=`layout(std140,column_major) uniform;uniform Material {vec2 vTangentSpaceParams;vec4 vLightingIntensity;float pointSize;vec2 vDebugMode;vec2 renderTargetSize;vec4 cameraInfo;vec4 vTextureRepetitionHexTilingParams;mat4 backgroundRefractionMatrix;vec3 vBackgroundRefractionInfos;vec2 vReflectionInfos;mat4 reflectionMatrix;vec3 vReflectionMicrosurfaceInfos;vec3 vReflectionPosition;vec3 vReflectionSize;vec2 vReflectionFilteringInfo;vec3 vReflectionDominantDirection;vec3 vReflectionColor;vec3 vSphericalL00;vec3 vSphericalL1_1;vec3 vSphericalL10;vec3 vSphericalL11;vec3 vSphericalL2_2;vec3 vSphericalL2_1;vec3 vSphericalL20;vec3 vSphericalL21;vec3 vSphericalL22;vec3 vSphericalX;vec3 vSphericalY;vec3 vSphericalZ;vec3 vSphericalXX_ZZ;vec3 vSphericalYY_ZZ;vec3 vSphericalZZ;vec3 vSphericalXY;vec3 vSphericalYZ;vec3 vSphericalZX;float vBaseWeight;vec4 vBaseColor;float vBaseDiffuseRoughness;vec4 vReflectanceInfo;vec4 vSpecularColor;vec3 vSpecularAnisotropy;float vTransmissionWeight;vec3 vTransmissionColor;float vTransmissionDepth;vec3 vTransmissionScatter;float vTransmissionScatterAnisotropy;float vTransmissionDispersionScale;float vTransmissionDispersionAbbeNumber;float vSubsurfaceWeight;vec3 vSubsurfaceColor;float vSubsurfaceRadius;vec3 vSubsurfaceRadiusScale;float vSubsurfaceScatterAnisotropy;float vCoatWeight;vec3 vCoatColor;float vCoatRoughness;float vCoatRoughnessAnisotropy;float vCoatIor;float vCoatDarkening;float vFuzzWeight;vec3 vFuzzColor;float vFuzzRoughness;float vGeometryThinWalled;vec2 vGeometryCoatTangent;float vGeometryThickness;vec3 vEmissionColor;float vThinFilmWeight;vec2 vThinFilmThickness;float vThinFilmIor;vec2 vBaseWeightInfos;mat4 baseWeightMatrix;vec2 vBaseColorInfos;mat4 baseColorMatrix;vec2 vBaseDiffuseRoughnessInfos;mat4 baseDiffuseRoughnessMatrix;vec2 vBaseMetalnessInfos;mat4 baseMetalnessMatrix;vec2 vSpecularWeightInfos;mat4 specularWeightMatrix;vec2 vSpecularColorInfos;mat4 specularColorMatrix;vec2 vSpecularRoughnessInfos;mat4 specularRoughnessMatrix;vec2 vSpecularRoughnessAnisotropyInfos;mat4 specularRoughnessAnisotropyMatrix;vec2 vTransmissionWeightInfos;mat4 transmissionWeightMatrix;vec2 vTransmissionColorInfos;mat4 transmissionColorMatrix;vec2 vTransmissionDepthInfos;mat4 transmissionDepthMatrix;vec2 vTransmissionScatterInfos;mat4 transmissionScatterMatrix;vec2 vTransmissionDispersionScaleInfos;mat4 transmissionDispersionScaleMatrix;vec2 vSubsurfaceWeightInfos;mat4 subsurfaceWeightMatrix;vec2 vSubsurfaceColorInfos;mat4 subsurfaceColorMatrix;vec2 vSubsurfaceRadiusScaleInfos;mat4 subsurfaceRadiusScaleMatrix;vec2 vCoatWeightInfos;mat4 coatWeightMatrix;vec2 vCoatColorInfos;mat4 coatColorMatrix;vec2 vCoatRoughnessInfos;mat4 coatRoughnessMatrix;vec2 vCoatRoughnessAnisotropyInfos;mat4 coatRoughnessAnisotropyMatrix;vec2 vCoatDarkeningInfos;mat4 coatDarkeningMatrix;vec2 vFuzzWeightInfos;mat4 fuzzWeightMatrix;vec2 vFuzzColorInfos;mat4 fuzzColorMatrix;vec2 vFuzzRoughnessInfos;mat4 fuzzRoughnessMatrix;vec2 vGeometryNormalInfos;mat4 geometryNormalMatrix;vec2 vGeometryTangentInfos;mat4 geometryTangentMatrix;vec2 vGeometryCoatNormalInfos;mat4 geometryCoatNormalMatrix;vec2 vGeometryCoatTangentInfos;mat4 geometryCoatTangentMatrix;vec2 vGeometryOpacityInfos;mat4 geometryOpacityMatrix;vec2 vGeometryThicknessInfos;mat4 geometryThicknessMatrix;vec2 vEmissionColorInfos;mat4 emissionColorMatrix;vec2 vThinFilmWeightInfos;mat4 thinFilmWeightMatrix;vec2 vThinFilmThicknessInfos;mat4 thinFilmThicknessMatrix;vec2 vAmbientOcclusionInfos;mat4 ambientOcclusionMatrix;
393
- #define ADDITIONAL_UBO_DECLARATION
394
- };
395
- #include<sceneUboDeclaration>
396
- #include<meshUboDeclaration>
397
- `;o.ShaderStore.IncludesShadersStore[t]||(o.ShaderStore.IncludesShadersStore[t]=i),e.s(["openpbrUboDeclaration",0,{name:t,shader:i}])},32172,33165,e=>{"use strict";var o=e.i(37875);let t="samplerFragmentDeclaration",i=`#ifdef _DEFINENAME_
398
- #if _DEFINENAME_DIRECTUV==1
399
- #define v_VARYINGNAME_UV vMainUV1
400
- #elif _DEFINENAME_DIRECTUV==2
401
- #define v_VARYINGNAME_UV vMainUV2
402
- #elif _DEFINENAME_DIRECTUV==3
403
- #define v_VARYINGNAME_UV vMainUV3
404
- #elif _DEFINENAME_DIRECTUV==4
405
- #define v_VARYINGNAME_UV vMainUV4
406
- #elif _DEFINENAME_DIRECTUV==5
407
- #define v_VARYINGNAME_UV vMainUV5
408
- #elif _DEFINENAME_DIRECTUV==6
409
- #define v_VARYINGNAME_UV vMainUV6
410
- #else
411
- varying vec2 v_VARYINGNAME_UV;
412
- #endif
413
- uniform sampler2D _SAMPLERNAME_Sampler;
414
- #endif
415
- `;o.ShaderStore.IncludesShadersStore[t]||(o.ShaderStore.IncludesShadersStore[t]=i),e.s(["samplerFragmentDeclaration",0,{name:t,shader:i}],32172);let r="reflectionFunction",a=`vec3 computeFixedEquirectangularCoords(vec4 worldPos,vec3 worldNormal,vec3 direction)
416
- {float lon=atan(direction.z,direction.x);float lat=acos(direction.y);vec2 sphereCoords=vec2(lon,lat)*RECIPROCAL_PI2*2.0;float s=sphereCoords.x*0.5+0.5;float t=sphereCoords.y;return vec3(s,t,0); }
417
- vec3 computeMirroredFixedEquirectangularCoords(vec4 worldPos,vec3 worldNormal,vec3 direction)
418
- {float lon=atan(direction.z,direction.x);float lat=acos(direction.y);vec2 sphereCoords=vec2(lon,lat)*RECIPROCAL_PI2*2.0;float s=sphereCoords.x*0.5+0.5;float t=sphereCoords.y;return vec3(1.0-s,t,0); }
419
- vec3 computeEquirectangularCoords(vec4 worldPos,vec3 worldNormal,vec3 eyePosition,mat4 reflectionMatrix)
420
- {vec3 cameraToVertex=normalize(worldPos.xyz-eyePosition);vec3 r=normalize(reflect(cameraToVertex,worldNormal));r=vec3(reflectionMatrix*vec4(r,0));float lon=atan(r.z,r.x);float lat=acos(r.y);vec2 sphereCoords=vec2(lon,lat)*RECIPROCAL_PI2*2.0;float s=sphereCoords.x*0.5+0.5;float t=sphereCoords.y;return vec3(s,t,0);}
421
- vec3 computeSphericalCoords(vec4 worldPos,vec3 worldNormal,mat4 view,mat4 reflectionMatrix)
422
- {vec3 viewDir=normalize(vec3(view*worldPos));vec3 viewNormal=normalize(vec3(view*vec4(worldNormal,0.0)));vec3 r=reflect(viewDir,viewNormal);r=vec3(reflectionMatrix*vec4(r,0));r.z=r.z-1.0;float m=2.0*length(r);return vec3(r.x/m+0.5,1.0-r.y/m-0.5,0);}
423
- vec3 computePlanarCoords(vec4 worldPos,vec3 worldNormal,vec3 eyePosition,mat4 reflectionMatrix)
424
- {vec3 viewDir=worldPos.xyz-eyePosition;vec3 coords=normalize(reflect(viewDir,worldNormal));return vec3(reflectionMatrix*vec4(coords,1));}
425
- vec3 computeCubicCoords(vec4 worldPos,vec3 worldNormal,vec3 eyePosition,mat4 reflectionMatrix)
426
- {vec3 viewDir=normalize(worldPos.xyz-eyePosition);vec3 coords=reflect(viewDir,worldNormal);coords=vec3(reflectionMatrix*vec4(coords,0));
427
- #ifdef INVERTCUBICMAP
428
- coords.y*=-1.0;
389
+ `;o.ShaderStore.IncludesShadersStore[t]||(o.ShaderStore.IncludesShadersStore[t]=i),e.s(["pbrBRDFFunctions",0,{name:t,shader:i}])},22488,70541,85374,26122,38385,25181,38416,54398,53804,22806,73400,e=>{"use strict";var o=e.i(2342);e.i(65225);let t="pbrFragmentExtraDeclaration",i=`varying vec3 vPositionW;
390
+ #if DEBUGMODE>0
391
+ varying vec4 vClipSpacePosition;
429
392
  #endif
430
- return coords;}
431
- vec3 computeCubicLocalCoords(vec4 worldPos,vec3 worldNormal,vec3 eyePosition,mat4 reflectionMatrix,vec3 reflectionSize,vec3 reflectionPosition)
432
- {vec3 viewDir=normalize(worldPos.xyz-eyePosition);vec3 coords=reflect(viewDir,worldNormal);coords=parallaxCorrectNormal(worldPos.xyz,coords,reflectionSize,reflectionPosition);coords=vec3(reflectionMatrix*vec4(coords,0));
433
- #ifdef INVERTCUBICMAP
434
- coords.y*=-1.0;
393
+ #include<mainUVVaryingDeclaration>[1..7]
394
+ #ifdef NORMAL
395
+ varying vec3 vNormalW;
396
+ #if defined(USESPHERICALFROMREFLECTIONMAP) && defined(USESPHERICALINVERTEX)
397
+ varying vec3 vEnvironmentIrradiance;
435
398
  #endif
436
- return coords;}
437
- vec3 computeProjectionCoords(vec4 worldPos,mat4 view,mat4 reflectionMatrix)
438
- {return vec3(reflectionMatrix*(view*worldPos));}
439
- vec3 computeSkyBoxCoords(vec3 positionW,mat4 reflectionMatrix)
440
- {return vec3(reflectionMatrix*vec4(positionW,1.));}
441
- #ifdef REFLECTION
442
- vec3 computeReflectionCoords(vec4 worldPos,vec3 worldNormal)
443
- {
444
- #ifdef REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED
445
- vec3 direction=normalize(vDirectionW);return computeMirroredFixedEquirectangularCoords(worldPos,worldNormal,direction);
446
399
  #endif
447
- #ifdef REFLECTIONMAP_EQUIRECTANGULAR_FIXED
448
- vec3 direction=normalize(vDirectionW);return computeFixedEquirectangularCoords(worldPos,worldNormal,direction);
400
+ #if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES)
401
+ varying vec4 vColor;
449
402
  #endif
450
- #ifdef REFLECTIONMAP_EQUIRECTANGULAR
451
- return computeEquirectangularCoords(worldPos,worldNormal,vEyePosition.xyz,reflectionMatrix);
403
+ #if defined(CLUSTLIGHT_BATCH) && CLUSTLIGHT_BATCH>0
404
+ varying float vViewDepth;
452
405
  #endif
453
- #ifdef REFLECTIONMAP_SPHERICAL
454
- return computeSphericalCoords(worldPos,worldNormal,view,reflectionMatrix);
406
+ `;o.ShaderStore.IncludesShadersStore[t]||(o.ShaderStore.IncludesShadersStore[t]=i),e.s(["pbrFragmentExtraDeclaration",0,{name:t,shader:i}],22488);let r="subSurfaceScatteringFunctions",a=`bool testLightingForSSS(float diffusionProfile)
407
+ {return diffusionProfile<1.;}`;o.ShaderStore.IncludesShadersStore[r]||(o.ShaderStore.IncludesShadersStore[r]=a),e.s(["subSurfaceScatteringFunctions",0,{name:r,shader:a}],70541);let n="importanceSampling",l=`vec3 hemisphereCosSample(vec2 u) {float phi=2.*PI*u.x;float cosTheta2=1.-u.y;float cosTheta=sqrt(cosTheta2);float sinTheta=sqrt(1.-cosTheta2);return vec3(sinTheta*cos(phi),sinTheta*sin(phi),cosTheta);}
408
+ vec3 hemisphereImportanceSampleDggx(vec2 u,float a) {float phi=2.*PI*u.x;float cosTheta2=(1.-u.y)/(1.+(a+1.)*((a-1.)*u.y));float cosTheta=sqrt(cosTheta2);float sinTheta=sqrt(1.-cosTheta2);return vec3(sinTheta*cos(phi),sinTheta*sin(phi),cosTheta);}
409
+ vec3 hemisphereImportanceSampleDggxAnisotropic(vec2 Xi,float alphaTangent,float alphaBitangent)
410
+ {alphaTangent=max(alphaTangent,0.0001);alphaBitangent=max(alphaBitangent,0.0001);float phi=atan(alphaBitangent/alphaTangent*tan(2.0*3.14159265*Xi.x));if (Xi.x>0.5) phi+=3.14159265;
411
+ float cosPhi=cos(phi);float sinPhi=sin(phi);float alpha2=(cosPhi*cosPhi)/(alphaTangent*alphaTangent) +
412
+ (sinPhi*sinPhi)/(alphaBitangent*alphaBitangent);float tanTheta2=Xi.y/(1.0-Xi.y)/alpha2;float cosTheta=1.0/sqrt(1.0+tanTheta2);float sinTheta=sqrt(max(0.0,1.0-cosTheta*cosTheta));return vec3(sinTheta*cosPhi,sinTheta*sinPhi,cosTheta);}
413
+ vec3 hemisphereImportanceSampleDCharlie(vec2 u,float a) {
414
+ float phi=2.*PI*u.x;float sinTheta=pow(u.y,a/(2.*a+1.));float cosTheta=sqrt(1.-sinTheta*sinTheta);return vec3(sinTheta*cos(phi),sinTheta*sin(phi),cosTheta);}`;o.ShaderStore.IncludesShadersStore[n]||(o.ShaderStore.IncludesShadersStore[n]=l),e.s(["importanceSampling",0,{name:n,shader:l}],85374);let c="pbrHelperFunctions",f=`#define MINIMUMVARIANCE 0.0005
415
+ #ifndef TEXRD_DEFINED
416
+ #define TEXRD(s,uv) texture2D(s,uv)
417
+ #define TEXRD_DEFINED
455
418
  #endif
456
- #ifdef REFLECTIONMAP_PLANAR
457
- return computePlanarCoords(worldPos,worldNormal,vEyePosition.xyz,reflectionMatrix);
419
+ float convertRoughnessToAverageSlope(float roughness)
420
+ {return square(roughness)+MINIMUMVARIANCE;}
421
+ float fresnelGrazingReflectance(float reflectance0) {float reflectance90=saturate(reflectance0*25.0);return reflectance90;}
422
+ vec2 getAARoughnessFactors(vec3 normalVector) {
423
+ #ifdef SPECULARAA
424
+ vec3 nDfdx=dFdx(normalVector.xyz);vec3 nDfdy=dFdy(normalVector.xyz);float slopeSquare=max(dot(nDfdx,nDfdx),dot(nDfdy,nDfdy));float geometricRoughnessFactor=pow(saturate(slopeSquare),0.333);float geometricAlphaGFactor=sqrt(slopeSquare);geometricAlphaGFactor*=0.75;return vec2(geometricRoughnessFactor,geometricAlphaGFactor);
425
+ #else
426
+ return vec2(0.);
458
427
  #endif
459
- #ifdef REFLECTIONMAP_CUBIC
460
- #ifdef USE_LOCAL_REFLECTIONMAP_CUBIC
461
- return computeCubicLocalCoords(worldPos,worldNormal,vEyePosition.xyz,reflectionMatrix,vReflectionSize,vReflectionPosition);
428
+ }
429
+ #ifdef ANISOTROPIC
430
+ #ifdef ANISOTROPIC_LEGACY
431
+ vec2 getAnisotropicRoughness(float alphaG,float anisotropy) {float alphaT=max(alphaG*(1.0+anisotropy),MINIMUMVARIANCE);float alphaB=max(alphaG*(1.0-anisotropy),MINIMUMVARIANCE);return vec2(alphaT,alphaB);}
432
+ vec3 getAnisotropicBentNormals(const vec3 T,const vec3 B,const vec3 N,const vec3 V,float anisotropy,float roughness) {vec3 anisotropicFrameDirection;if (anisotropy>=0.0) {anisotropicFrameDirection=B;} else {anisotropicFrameDirection=T;}
433
+ vec3 anisotropicFrameTangent=cross(normalize(anisotropicFrameDirection),V);vec3 anisotropicFrameNormal=cross(anisotropicFrameTangent,anisotropicFrameDirection);vec3 anisotropicNormal=normalize(mix(N,anisotropicFrameNormal,abs(anisotropy)));return anisotropicNormal;}
434
+ #elif ANISOTROPIC_OPENPBR
435
+ vec2 getAnisotropicRoughness(float alphaG,float anisotropy) {float alphaT=max(alphaG*alphaG*sqrt(2.0/(1.0+(1.0-anisotropy)*(1.0-anisotropy))),MINIMUMVARIANCE);float alphaB=max(alphaT*(1.0-anisotropy),MINIMUMVARIANCE);return vec2(alphaT,alphaB);}
462
436
  #else
463
- return computeCubicCoords(worldPos,worldNormal,vEyePosition.xyz,reflectionMatrix);
437
+ vec2 getAnisotropicRoughness(float alphaG,float anisotropy) {float alphaT=max(mix(alphaG,1.0,anisotropy*anisotropy),MINIMUMVARIANCE);float alphaB=max(alphaG,MINIMUMVARIANCE);return vec2(alphaT,alphaB);}
438
+ vec3 getAnisotropicBentNormals(const vec3 T,const vec3 B,const vec3 N,const vec3 V,float anisotropy,float roughness) {vec3 bentNormal=cross(B,V);bentNormal=normalize(cross(bentNormal,B));float a=square(square(1.0-anisotropy*(1.0-roughness)));bentNormal=normalize(mix(bentNormal,N,a));return bentNormal;}
464
439
  #endif
465
440
  #endif
466
- #ifdef REFLECTIONMAP_PROJECTION
467
- return computeProjectionCoords(worldPos,view,reflectionMatrix);
441
+ #if defined(CLEARCOAT) || defined(SS_REFRACTION)
442
+ vec3 cocaLambert(vec3 alpha,float distance) {return exp(-alpha*distance);}
443
+ vec3 cocaLambert(float NdotVRefract,float NdotLRefract,vec3 alpha,float thickness) {return cocaLambert(alpha,(thickness*((NdotLRefract+NdotVRefract)/(NdotLRefract*NdotVRefract))));}
444
+ vec3 computeColorAtDistanceInMedia(vec3 color,float distance) {return -log(color)/distance;}
445
+ vec3 computeClearCoatAbsorption(float NdotVRefract,float NdotLRefract,vec3 clearCoatColor,float clearCoatThickness,float clearCoatIntensity) {vec3 clearCoatAbsorption=mix(vec3(1.0),
446
+ cocaLambert(NdotVRefract,NdotLRefract,clearCoatColor,clearCoatThickness),
447
+ clearCoatIntensity);return clearCoatAbsorption;}
468
448
  #endif
469
- #ifdef REFLECTIONMAP_SKYBOX
470
- return computeSkyBoxCoords(vPositionUVW,reflectionMatrix);
449
+ #ifdef MICROSURFACEAUTOMATIC
450
+ float computeDefaultMicroSurface(float microSurface,vec3 reflectivityColor)
451
+ {const float kReflectivityNoAlphaWorkflow_SmoothnessMax=0.95;float reflectivityLuminance=getLuminance(reflectivityColor);float reflectivityLuma=sqrt(reflectivityLuminance);microSurface=reflectivityLuma*kReflectivityNoAlphaWorkflow_SmoothnessMax;return microSurface;}
471
452
  #endif
472
- #ifdef REFLECTIONMAP_EXPLICIT
473
- return vec3(0,0,0);
453
+ `;o.ShaderStore.IncludesShadersStore[c]||(o.ShaderStore.IncludesShadersStore[c]=f),e.s(["pbrHelperFunctions",0,{name:c,shader:f}],26122),e.i(83457);let s="pbrDirectLightingSetupFunctions",d=`struct preLightingInfo
454
+ {vec3 lightOffset;float lightDistanceSquared;float lightDistance;float attenuation;vec3 L;vec3 H;float NdotV;float NdotLUnclamped;float NdotL;float VdotH;float LdotV;float roughness;float diffuseRoughness;vec3 surfaceAlbedo;
455
+ #ifdef IRIDESCENCE
456
+ float iridescenceIntensity;
474
457
  #endif
475
- }
458
+ #if defined(AREALIGHTUSED) && defined(AREALIGHTSUPPORTED)
459
+ vec3 areaLightDiffuse;
460
+ #ifdef SPECULARTERM
461
+ vec3 areaLightSpecular;vec4 areaLightFresnel;
476
462
  #endif
477
- `;o.ShaderStore.IncludesShadersStore[r]||(o.ShaderStore.IncludesShadersStore[r]=a),e.s(["reflectionFunction",0,{name:r,shader:a}],33165)},82784,91468,e=>{"use strict";var o=e.i(37875);let t="pbrFragmentReflectionDeclaration",i=`#ifdef REFLECTION
478
- #ifdef REFLECTIONMAP_3D
479
- #define sampleReflection(s,c) textureCube(s,c)
480
- uniform samplerCube reflectionSampler;
481
- #ifdef LODBASEDMICROSFURACE
482
- #define sampleReflectionLod(s,c,l) textureCubeLodEXT(s,c,l)
483
- #else
484
- uniform samplerCube reflectionSamplerLow;uniform samplerCube reflectionSamplerHigh;
485
463
  #endif
486
- #ifdef USEIRRADIANCEMAP
487
- uniform samplerCube irradianceSampler;
464
+ };preLightingInfo computePointAndSpotPreLightingInfo(vec4 lightData,vec3 V,vec3 N,vec3 posW) {preLightingInfo result;result.lightOffset=lightData.xyz-posW;result.lightDistanceSquared=dot(result.lightOffset,result.lightOffset);result.lightDistance=sqrt(result.lightDistanceSquared);result.L=normalize(result.lightOffset);result.H=normalize(V+result.L);result.VdotH=saturate(dot(V,result.H));result.NdotLUnclamped=dot(N,result.L);result.NdotL=saturateEps(result.NdotLUnclamped);result.LdotV=0.;result.roughness=0.;result.diffuseRoughness=0.;result.surfaceAlbedo=vec3(0.);return result;}
465
+ preLightingInfo computeDirectionalPreLightingInfo(vec4 lightData,vec3 V,vec3 N) {preLightingInfo result;result.lightDistance=length(-lightData.xyz);result.L=normalize(-lightData.xyz);result.H=normalize(V+result.L);result.VdotH=saturate(dot(V,result.H));result.NdotLUnclamped=dot(N,result.L);result.NdotL=saturateEps(result.NdotLUnclamped);result.LdotV=dot(result.L,V);result.roughness=0.;result.diffuseRoughness=0.;result.surfaceAlbedo=vec3(0.);return result;}
466
+ preLightingInfo computeHemisphericPreLightingInfo(vec4 lightData,vec3 V,vec3 N) {preLightingInfo result;result.NdotL=dot(N,lightData.xyz)*0.5+0.5;result.NdotL=saturateEps(result.NdotL);result.NdotLUnclamped=result.NdotL;
467
+ #ifdef SPECULARTERM
468
+ result.L=normalize(lightData.xyz);result.H=normalize(V+result.L);result.VdotH=saturate(dot(V,result.H));
488
469
  #endif
489
- #else
490
- #define sampleReflection(s,c) texture2D(s,c)
491
- uniform sampler2D reflectionSampler;
492
- #ifdef LODBASEDMICROSFURACE
493
- #define sampleReflectionLod(s,c,l) texture2DLodEXT(s,c,l)
494
- #else
495
- uniform sampler2D reflectionSamplerLow;uniform sampler2D reflectionSamplerHigh;
470
+ result.LdotV=0.;result.roughness=0.;result.diffuseRoughness=0.;result.surfaceAlbedo=vec3(0.);return result;}
471
+ #if defined(AREALIGHTUSED) && defined(AREALIGHTSUPPORTED)
472
+ #include<ltcHelperFunctions>
473
+ uniform sampler2D areaLightsLTC1Sampler;uniform sampler2D areaLightsLTC2Sampler;preLightingInfo computeAreaPreLightingInfo(sampler2D ltc1,sampler2D ltc2,vec3 viewDirectionW,vec3 vNormal,vec3 vPosition,vec4 lightData,vec3 halfWidth,vec3 halfHeight,float roughness )
474
+ {preLightingInfo result;result.lightOffset=lightData.xyz-vPosition;result.lightDistanceSquared=dot(result.lightOffset,result.lightOffset);result.lightDistance=sqrt(result.lightDistanceSquared);areaLightData data=computeAreaLightSpecularDiffuseFresnel(ltc1,ltc2,viewDirectionW,vNormal,vPosition,lightData.xyz,halfWidth,halfHeight,roughness);
475
+ #ifdef SPECULARTERM
476
+ result.areaLightFresnel=data.Fresnel;result.areaLightSpecular=data.Specular;
496
477
  #endif
497
- #ifdef USEIRRADIANCEMAP
498
- uniform sampler2D irradianceSampler;
478
+ result.areaLightDiffuse=data.Diffuse;result.LdotV=0.;result.roughness=0.;result.diffuseRoughness=0.;result.surfaceAlbedo=vec3(0.);return result;}
479
+ preLightingInfo computeAreaPreLightingInfoWithTexture(sampler2D ltc1,sampler2D ltc2,sampler2D emissionTexture,vec3 viewDirectionW,vec3 vNormal,vec3 vPosition,vec4 lightData,vec3 halfWidth,vec3 halfHeight,float roughness )
480
+ {preLightingInfo result;result.lightOffset=lightData.xyz-vPosition;result.lightDistanceSquared=dot(result.lightOffset,result.lightOffset);result.lightDistance=sqrt(result.lightDistanceSquared);areaLightData data=computeAreaLightSpecularDiffuseFresnelWithEmission(ltc1,ltc2,emissionTexture,viewDirectionW,vNormal,vPosition,lightData.xyz,halfWidth,halfHeight,roughness);
481
+ #ifdef SPECULARTERM
482
+ result.areaLightFresnel=data.Fresnel;result.areaLightSpecular=data.Specular;
499
483
  #endif
484
+ result.areaLightDiffuse=data.Diffuse;result.LdotV=0.;result.roughness=0.;result.diffuseRoughness=0.;result.surfaceAlbedo=vec3(0.);return result;}
500
485
  #endif
501
- #ifdef REFLECTIONMAP_SKYBOX
502
- varying vec3 vPositionUVW;
486
+ `;o.ShaderStore.IncludesShadersStore[s]||(o.ShaderStore.IncludesShadersStore[s]=d),e.s(["pbrDirectLightingSetupFunctions",0,{name:s,shader:d}],38385);let u="pbrDirectLightingFalloffFunctions",v=`float computeDistanceLightFalloff_Standard(vec3 lightOffset,float range)
487
+ {return max(0.,1.0-length(lightOffset)/range);}
488
+ float computeDistanceLightFalloff_Physical(float lightDistanceSquared)
489
+ {return 1.0/maxEps(lightDistanceSquared);}
490
+ float computeDistanceLightFalloff_GLTF(float lightDistanceSquared,float inverseSquaredRange)
491
+ {float lightDistanceFalloff=1.0/maxEps(lightDistanceSquared);float factor=lightDistanceSquared*inverseSquaredRange;float attenuation=saturate(1.0-factor*factor);attenuation*=attenuation;lightDistanceFalloff*=attenuation;return lightDistanceFalloff;}
492
+ float computeDistanceLightFalloff(vec3 lightOffset,float lightDistanceSquared,float range,float inverseSquaredRange)
493
+ {
494
+ #ifdef USEPHYSICALLIGHTFALLOFF
495
+ return computeDistanceLightFalloff_Physical(lightDistanceSquared);
496
+ #elif defined(USEGLTFLIGHTFALLOFF)
497
+ return computeDistanceLightFalloff_GLTF(lightDistanceSquared,inverseSquaredRange);
503
498
  #else
504
- #if defined(REFLECTIONMAP_EQUIRECTANGULAR_FIXED) || defined(REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED)
505
- varying vec3 vDirectionW;
499
+ return computeDistanceLightFalloff_Standard(lightOffset,range);
506
500
  #endif
501
+ }
502
+ float computeDirectionalLightFalloff_Standard(vec3 lightDirection,vec3 directionToLightCenterW,float cosHalfAngle,float exponent)
503
+ {float falloff=0.0;float cosAngle=maxEps(dot(-lightDirection,directionToLightCenterW));if (cosAngle>=cosHalfAngle)
504
+ {falloff=max(0.,pow(cosAngle,exponent));}
505
+ return falloff;}
506
+ float computeDirectionalLightFalloff_IES(vec3 lightDirection,vec3 directionToLightCenterW,sampler2D iesLightSampler)
507
+ {float cosAngle=dot(-lightDirection,directionToLightCenterW);float angle=acos(cosAngle)/PI;return texture2D(iesLightSampler,vec2(angle,0.)).r;}
508
+ float computeDirectionalLightFalloff_Physical(vec3 lightDirection,vec3 directionToLightCenterW,float cosHalfAngle)
509
+ {const float kMinusLog2ConeAngleIntensityRatio=6.64385618977;
510
+ float concentrationKappa=kMinusLog2ConeAngleIntensityRatio/(1.0-cosHalfAngle);vec4 lightDirectionSpreadSG=vec4(-lightDirection*concentrationKappa,-concentrationKappa);float falloff=exp2(dot(vec4(directionToLightCenterW,1.0),lightDirectionSpreadSG));return falloff;}
511
+ float computeDirectionalLightFalloff_GLTF(vec3 lightDirection,vec3 directionToLightCenterW,float lightAngleScale,float lightAngleOffset)
512
+ {float cd=dot(-lightDirection,directionToLightCenterW);float falloff=saturate(cd*lightAngleScale+lightAngleOffset);falloff*=falloff;return falloff;}
513
+ float computeDirectionalLightFalloff(vec3 lightDirection,vec3 directionToLightCenterW,float cosHalfAngle,float exponent,float lightAngleScale,float lightAngleOffset)
514
+ {
515
+ #ifdef USEPHYSICALLIGHTFALLOFF
516
+ return computeDirectionalLightFalloff_Physical(lightDirection,directionToLightCenterW,cosHalfAngle);
517
+ #elif defined(USEGLTFLIGHTFALLOFF)
518
+ return computeDirectionalLightFalloff_GLTF(lightDirection,directionToLightCenterW,lightAngleScale,lightAngleOffset);
519
+ #else
520
+ return computeDirectionalLightFalloff_Standard(lightDirection,directionToLightCenterW,cosHalfAngle,exponent);
507
521
  #endif
522
+ }`;o.ShaderStore.IncludesShadersStore[u]||(o.ShaderStore.IncludesShadersStore[u]=v),e.s(["pbrDirectLightingFalloffFunctions",0,{name:u,shader:v}],25181);let m="hdrFilteringFunctions",g=`#if NUM_SAMPLES
523
+ #if NUM_SAMPLES>0
524
+ #if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)
525
+ float radicalInverse_VdC(uint bits)
526
+ {bits=(bits<<16u) | (bits>>16u);bits=((bits & 0x55555555u)<<1u) | ((bits & 0xAAAAAAAAu)>>1u);bits=((bits & 0x33333333u)<<2u) | ((bits & 0xCCCCCCCCu)>>2u);bits=((bits & 0x0F0F0F0Fu)<<4u) | ((bits & 0xF0F0F0F0u)>>4u);bits=((bits & 0x00FF00FFu)<<8u) | ((bits & 0xFF00FF00u)>>8u);return float(bits)*2.3283064365386963e-10; }
527
+ vec2 hammersley(uint i,uint N)
528
+ {return vec2(float(i)/float(N),radicalInverse_VdC(i));}
529
+ #else
530
+ float vanDerCorpus(int n,int base)
531
+ {float invBase=1.0/float(base);float denom =1.0;float result =0.0;for(int i=0; i<32; ++i)
532
+ {if(n>0)
533
+ {denom =mod(float(n),2.0);result+=denom*invBase;invBase=invBase/2.0;n =int(float(n)/2.0);}}
534
+ return result;}
535
+ vec2 hammersley(int i,int N)
536
+ {return vec2(float(i)/float(N),vanDerCorpus(i,2));}
508
537
  #endif
509
- `;o.ShaderStore.IncludesShadersStore[t]||(o.ShaderStore.IncludesShadersStore[t]=i),e.s(["pbrFragmentReflectionDeclaration",0,{name:t,shader:i}],82784);let r="pbrIBLFunctions",a=`#if defined(REFLECTION) || defined(SS_REFRACTION)
510
- float getLodFromAlphaG(float cubeMapDimensionPixels,float microsurfaceAverageSlope) {float microsurfaceAverageSlopeTexels=cubeMapDimensionPixels*microsurfaceAverageSlope;float lod=log2(microsurfaceAverageSlopeTexels);return lod;}
511
- float getLinearLodFromRoughness(float cubeMapDimensionPixels,float roughness) {float lod=log2(cubeMapDimensionPixels)*roughness;return lod;}
538
+ float log4(float x) {return log2(x)/2.;}
539
+ vec3 uv_to_normal(vec2 uv) {vec3 N;vec2 uvRange=uv;float theta=uvRange.x*2.*PI;float phi=uvRange.y*PI;float sinPhi=sin(phi);N.x=cos(theta)*sinPhi;N.z=sin(theta)*sinPhi;N.y=cos(phi);return N;}
540
+ const float NUM_SAMPLES_FLOAT=float(NUM_SAMPLES);const float NUM_SAMPLES_FLOAT_INVERSED=1./NUM_SAMPLES_FLOAT;const float K=4.;
541
+ #define inline
542
+ vec3 irradiance(
543
+ #ifdef CUSTOM_IRRADIANCE_FILTERING_INPUT
544
+ CUSTOM_IRRADIANCE_FILTERING_INPUT
545
+ #else
546
+ samplerCube inputTexture,
512
547
  #endif
513
- #if defined(ENVIRONMENTBRDF) && defined(RADIANCEOCCLUSION)
514
- float environmentRadianceOcclusion(float ambientOcclusion,float NdotVUnclamped) {float temp=NdotVUnclamped+ambientOcclusion;return saturate(square(temp)-1.0+ambientOcclusion);}
548
+ vec3 inputN,vec2 filteringInfo,
549
+ float diffuseRoughness,
550
+ vec3 surfaceAlbedo,
551
+ vec3 inputV
552
+ #if IBL_CDF_FILTERING
553
+ ,sampler2D icdfSampler
515
554
  #endif
516
- #if defined(ENVIRONMENTBRDF) && defined(HORIZONOCCLUSION)
517
- float environmentHorizonOcclusion(vec3 view,vec3 normal,vec3 geometricNormal) {vec3 reflection=reflect(view,normal);float temp=saturate(1.0+1.1*dot(reflection,geometricNormal));return square(temp);}
555
+ )
556
+ {vec3 n=normalize(inputN);vec3 result=vec3(0.);
557
+ #ifndef IBL_CDF_FILTERING
558
+ vec3 tangent=abs(n.z)<0.999 ? vec3(0.,0.,1.) : vec3(1.,0.,0.);tangent=normalize(cross(tangent,n));vec3 bitangent=cross(n,tangent);mat3 tbn=mat3(tangent,bitangent,n);mat3 tbnInverse=mat3(tangent.x,bitangent.x,n.x,tangent.y,bitangent.y,n.y,tangent.z,bitangent.z,n.z);
518
559
  #endif
519
- #if defined(LODINREFLECTIONALPHA) || defined(SS_LODINREFRACTIONALPHA)
520
- #define UNPACK_LOD(x) (1.0-x)*255.0
521
- float getLodFromAlphaG(float cubeMapDimensionPixels,float alphaG,float NdotV) {float microsurfaceAverageSlope=alphaG;microsurfaceAverageSlope*=sqrt(abs(NdotV));return getLodFromAlphaG(cubeMapDimensionPixels,microsurfaceAverageSlope);}
560
+ float maxLevel=filteringInfo.y;float dim0=filteringInfo.x;float omegaP=(4.*PI)/(6.*dim0*dim0);vec3 clampedAlbedo=clamp(surfaceAlbedo,vec3(0.1),vec3(1.0));
561
+ #if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)
562
+ for(uint i=0u; i<NUM_SAMPLES; ++i)
563
+ #else
564
+ for(int i=0; i<NUM_SAMPLES; ++i)
522
565
  #endif
523
- `;o.ShaderStore.IncludesShadersStore[r]||(o.ShaderStore.IncludesShadersStore[r]=a),e.s(["pbrIBLFunctions",0,{name:r,shader:a}],91468)},19752,31885,98744,33577,e=>{"use strict";var o=e.i(37875);let t="sceneFragmentDeclaration",i=`uniform mat4 viewProjection;
524
- #ifdef MULTIVIEW
525
- uniform mat4 viewProjectionR;
566
+ {vec2 Xi=hammersley(i,NUM_SAMPLES);
567
+ #if IBL_CDF_FILTERING
568
+ vec2 T;T.x=texture2D(icdfSampler,vec2(Xi.x,0.)).x;T.y=texture2D(icdfSampler,vec2(T.x,Xi.y)).y;vec3 Ls=uv_to_normal(vec2(1.0-fract(T.x+0.25),T.y));float NoL=dot(n,Ls);float NoV=dot(n,inputV);
569
+ #if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON
570
+ float LoV=dot (Ls,inputV);
571
+ #elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_BURLEY
572
+ vec3 H=(inputV+Ls)*0.5;float VoH=dot(inputV,H);
526
573
  #endif
527
- uniform mat4 view;uniform mat4 projection;uniform vec4 vEyePosition;uniform mat4 inverseProjection;
528
- `;o.ShaderStore.IncludesShadersStore[t]||(o.ShaderStore.IncludesShadersStore[t]=i),e.s(["sceneFragmentDeclaration",0,{name:t,shader:i}],19752);let r="openpbrDielectricReflectance",a=`struct ReflectanceParams
529
- {float F0;float F90;vec3 coloredF0;vec3 coloredF90;};
530
- #define pbr_inline
531
- ReflectanceParams dielectricReflectance(
532
- in float insideIOR,in float outsideIOR,in vec3 specularColor,in float specularWeight
533
- )
534
- {ReflectanceParams outParams;float dielectricF0=pow((insideIOR-outsideIOR)/(insideIOR+outsideIOR),2.0);float dielectricF0_NoSpec=pow((1.0-outsideIOR)/(1.0+outsideIOR),2.0);float f90Scale=clamp(2.0*abs(insideIOR-outsideIOR),0.0,1.0);float f90Scale_NoSpec=clamp(2.0*abs(1.0-outsideIOR),0.0,1.0);
535
- #if (DIELECTRIC_SPECULAR_MODEL==DIELECTRIC_SPECULAR_MODEL_OPENPBR)
536
- vec3 dielectricColorF90=specularColor.rgb*vec3(f90Scale);vec3 dielectricColorF90_NoSpec=specularColor.rgb*vec3(f90Scale_NoSpec);
537
574
  #else
538
- vec3 dielectricColorF90=vec3(f90Scale);vec3 dielectricColorF90_NoSpec=vec3(f90Scale_NoSpec);
575
+ vec3 Ls=hemisphereCosSample(Xi);Ls=normalize(Ls);float NoL=Ls.z;
576
+ vec3 V=tbnInverse*inputV;float NoV=V.z;
577
+ #if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON
578
+ float LoV=dot (Ls,V);
579
+ #elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_BURLEY
580
+ vec3 H=(V+Ls)*0.5;float VoH=dot(V,H);
539
581
  #endif
540
- #if DIELECTRIC_SPECULAR_MODEL==DIELECTRIC_SPECULAR_MODEL_GLTF
541
- float maxF0=max(specularColor.r,max(specularColor.g,specularColor.b));outParams.F0=mix(dielectricF0_NoSpec,dielectricF0,specularWeight)*maxF0;
542
- #else
543
- outParams.F0=mix(dielectricF0_NoSpec,dielectricF0,specularWeight);
544
582
  #endif
545
- outParams.F90=mix(f90Scale_NoSpec,f90Scale,specularWeight);outParams.coloredF0=mix(vec3(dielectricF0_NoSpec),vec3(dielectricF0),specularWeight)*specularColor.rgb;outParams.coloredF90=mix(dielectricColorF90_NoSpec,dielectricColorF90,specularWeight);return outParams;}
546
- `;o.ShaderStore.IncludesShadersStore[r]||(o.ShaderStore.IncludesShadersStore[r]=a),e.s(["openpbrDielectricReflectance",0,{name:r,shader:a}],31885);let n="openpbrGeometryInfo",l=`struct geometryInfoOutParams
547
- {float NdotV;float NdotVUnclamped;vec3 environmentBrdf;float horizonOcclusion;};struct geometryInfoAnisoOutParams
548
- {float NdotV;float NdotVUnclamped;vec3 environmentBrdf;float horizonOcclusion;float anisotropy;vec3 anisotropicTangent;vec3 anisotropicBitangent;mat3 TBN;};
549
- #define pbr_inline
550
- geometryInfoOutParams geometryInfo(
551
- in vec3 normalW,in vec3 viewDirectionW,in float roughness,in vec3 geometricNormalW
552
- )
553
- {geometryInfoOutParams outParams;outParams.NdotVUnclamped=dot(normalW,viewDirectionW);outParams.NdotV=absEps(outParams.NdotVUnclamped);
554
- #if defined(ENVIRONMENTBRDF)
555
- outParams.environmentBrdf=getBRDFLookup(outParams.NdotV,roughness);
583
+ if (NoL>0.) {
584
+ #if IBL_CDF_FILTERING
585
+ float pdf=texture2D(icdfSampler,T).z;vec3 c=textureCubeLodEXT(inputTexture,Ls,0.).rgb;
556
586
  #else
557
- outParams.environmentBrdf=vec3(0.0);
587
+ float pdf_inversed=PI/NoL;float omegaS=NUM_SAMPLES_FLOAT_INVERSED*pdf_inversed;float l=log4(omegaS)-log4(omegaP)+log4(K);float mipLevel=clamp(l,0.,maxLevel);
588
+ #ifdef CUSTOM_IRRADIANCE_FILTERING_FUNCTION
589
+ CUSTOM_IRRADIANCE_FILTERING_FUNCTION
590
+ #else
591
+ vec3 c=textureCubeLodEXT(inputTexture,tbn*Ls,mipLevel).rgb;
558
592
  #endif
559
- outParams.horizonOcclusion=1.0;
560
- #if defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX)
561
- #ifdef HORIZONOCCLUSION
562
- #if defined(GEOMETRY_NORMAL) || defined(GEOMETRY_COAT_NORMAL)
563
- #ifdef REFLECTIONMAP_3D
564
- outParams.horizonOcclusion=environmentHorizonOcclusion(-viewDirectionW,normalW,geometricNormalW);
565
593
  #endif
594
+ #if GAMMA_INPUT
595
+ c=toLinearSpace(c);
566
596
  #endif
597
+ vec3 diffuseRoughnessTerm=vec3(1.0);
598
+ #if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON
599
+ diffuseRoughnessTerm=diffuseBRDF_EON(clampedAlbedo,diffuseRoughness,NoL,NoV,LoV)*PI;
600
+ #elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_BURLEY
601
+ diffuseRoughnessTerm=vec3(diffuseBRDF_Burley(NoL,NoV,VoH,diffuseRoughness)*PI);
567
602
  #endif
603
+ #if IBL_CDF_FILTERING
604
+ vec3 light=pdf<1e-6 ? vec3(0.0) : vec3(1.0)/vec3(pdf)*c;result+=NoL*diffuseRoughnessTerm*light;
605
+ #else
606
+ result+=c*diffuseRoughnessTerm;
568
607
  #endif
569
- return outParams;}
570
- #define pbr_inline
571
- geometryInfoAnisoOutParams geometryInfoAniso(
572
- in vec3 normalW,in vec3 viewDirectionW,in float roughness,in vec3 geometricNormalW
573
- ,in vec3 vAnisotropy,in mat3 TBN
574
- )
575
- {geometryInfoOutParams geoInfo=geometryInfo(normalW,viewDirectionW,roughness,geometricNormalW);geometryInfoAnisoOutParams outParams;outParams.NdotV=geoInfo.NdotV;outParams.NdotVUnclamped=geoInfo.NdotVUnclamped;outParams.environmentBrdf=geoInfo.environmentBrdf;outParams.horizonOcclusion=geoInfo.horizonOcclusion;outParams.anisotropy=vAnisotropy.b;vec3 anisotropyDirection=vec3(vAnisotropy.xy,0.);mat3 anisoTBN=mat3(normalize(TBN[0]),normalize(TBN[1]),normalize(TBN[2]));outParams.anisotropicTangent=normalize(anisoTBN*anisotropyDirection);outParams.anisotropicBitangent=normalize(cross(anisoTBN[2],outParams.anisotropicTangent));outParams.TBN=TBN;return outParams;}`;o.ShaderStore.IncludesShadersStore[n]||(o.ShaderStore.IncludesShadersStore[n]=l),e.s(["openpbrGeometryInfo",0,{name:n,shader:l}],98744);let c="openpbrIblFunctions",f=`#ifdef REFLECTION
576
- vec3 sampleIrradiance(
577
- in vec3 surfaceNormal
578
- #if defined(NORMAL) && defined(USESPHERICALINVERTEX)
579
- ,in vec3 vEnvironmentIrradianceSH
608
+ }}
609
+ result=result*NUM_SAMPLES_FLOAT_INVERSED;
610
+ #if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON
611
+ result=result/clampedAlbedo;
580
612
  #endif
581
- #if (defined(USESPHERICALFROMREFLECTIONMAP) && (!defined(NORMAL) || !defined(USESPHERICALINVERTEX))) || (defined(USEIRRADIANCEMAP) && defined(REFLECTIONMAP_3D))
582
- ,in mat4 iblMatrix
613
+ return result;}
614
+ #define inline
615
+ vec3 radiance(float alphaG,samplerCube inputTexture,vec3 inputN,vec2 filteringInfo)
616
+ {vec3 n=normalize(inputN);vec3 c=textureCubeLodEXT(inputTexture,n,0.).rgb;
617
+ if (alphaG==0.) {
618
+ #if GAMMA_INPUT
619
+ c=toLinearSpace(c);
583
620
  #endif
584
- #ifdef USEIRRADIANCEMAP
585
- #ifdef REFLECTIONMAP_3D
586
- ,in samplerCube irradianceSampler
621
+ return c;} else {vec3 result=vec3(0.);vec3 tangent=abs(n.z)<0.999 ? vec3(0.,0.,1.) : vec3(1.,0.,0.);tangent=normalize(cross(tangent,n));vec3 bitangent=cross(n,tangent);mat3 tbn=mat3(tangent,bitangent,n);float maxLevel=filteringInfo.y;float dim0=filteringInfo.x;float omegaP=(4.*PI)/(6.*dim0*dim0);float weight=0.;
622
+ #if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)
623
+ for(uint i=0u; i<NUM_SAMPLES; ++i)
587
624
  #else
588
- ,in sampler2D irradianceSampler
625
+ for(int i=0; i<NUM_SAMPLES; ++i)
589
626
  #endif
590
- #ifdef USE_IRRADIANCE_DOMINANT_DIRECTION
591
- ,in vec3 reflectionDominantDirection
627
+ {vec2 Xi=hammersley(i,NUM_SAMPLES);vec3 H=hemisphereImportanceSampleDggx(Xi,alphaG);float NoV=1.;float NoH=H.z;float NoH2=H.z*H.z;float NoL=2.*NoH2-1.;vec3 L=vec3(2.*NoH*H.x,2.*NoH*H.y,NoL);L=normalize(L);if (NoL>0.) {float pdf_inversed=4./normalDistributionFunction_TrowbridgeReitzGGX(NoH,alphaG);float omegaS=NUM_SAMPLES_FLOAT_INVERSED*pdf_inversed;float l=log4(omegaS)-log4(omegaP)+log4(K);float mipLevel=clamp(float(l),0.0,maxLevel);weight+=NoL;vec3 c=textureCubeLodEXT(inputTexture,tbn*L,mipLevel).rgb;
628
+ #if GAMMA_INPUT
629
+ c=toLinearSpace(c);
592
630
  #endif
631
+ result+=c*NoL;}}
632
+ result=result/weight;return result;}}
633
+ #ifdef ANISOTROPIC
634
+ #define inline
635
+ vec3 radianceAnisotropic(
636
+ float alphaTangent,
637
+ float alphaBitangent,
638
+ samplerCube inputTexture,
639
+ vec3 inputView,
640
+ vec3 inputTangent,
641
+ vec3 inputBitangent,
642
+ vec3 inputNormal,
643
+ vec2 filteringInfo,
644
+ vec2 noiseInput,
645
+ bool isRefraction,
646
+ float ior
647
+ )
648
+ {vec3 V=inputView;vec3 N=inputNormal;vec3 T=inputTangent;vec3 B=inputBitangent;vec3 result=vec3(0.);float maxLevel=filteringInfo.y;float dim0=filteringInfo.x;float clampedAlphaT=max(alphaTangent,MINIMUMVARIANCE);float clampedAlphaB=max(alphaBitangent,MINIMUMVARIANCE);float effectiveDim=dim0*sqrt(clampedAlphaT*clampedAlphaB);float omegaP=(4.*PI)/(6.*effectiveDim*effectiveDim);const float noiseScale=clamp(log2(float(NUM_SAMPLES))/12.0,0.0,1.0);float weight=0.;
649
+ #if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)
650
+ for(uint i=0u; i<NUM_SAMPLES; ++i)
651
+ #else
652
+ for(int i=0; i<NUM_SAMPLES; ++i)
593
653
  #endif
594
- #ifdef REALTIME_FILTERING
595
- ,in vec2 vReflectionFilteringInfo
596
- #ifdef IBL_CDF_FILTERING
597
- ,in sampler2D icdfSampler
654
+ {vec2 Xi=hammersley(i,NUM_SAMPLES);Xi=fract(Xi+noiseInput*mix(0.5,0.015,noiseScale));
655
+ vec3 H_tangent=hemisphereImportanceSampleDggxAnisotropic(Xi,clampedAlphaT,clampedAlphaB);vec3 H=normalize(H_tangent.x*T+H_tangent.y*B+H_tangent.z*N);vec3 L;if (isRefraction) {L=refract(-V,H,1.0/ior);} else {L=reflect(-V,H);}
656
+ float NoH=max(dot(N,H),0.001);float VoH=max(dot(V,H),0.001);float NoL=max(dot(N,L),0.001);if (NoL>0.) {float pdf_inversed=4./normalDistributionFunction_BurleyGGX_Anisotropic(
657
+ H_tangent.z,H_tangent.x,H_tangent.y,vec2(clampedAlphaT,clampedAlphaB)
658
+ );float omegaS=NUM_SAMPLES_FLOAT_INVERSED*pdf_inversed;float l=log4(omegaS)-log4(omegaP)+log4(K);float mipLevel=clamp(float(l),0.0,maxLevel);weight+=NoL;vec3 c=textureCubeLodEXT(inputTexture,L,mipLevel).rgb;
659
+ #if GAMMA_INPUT
660
+ c=toLinearSpace(c);
598
661
  #endif
662
+ result+=c*NoL;}}
663
+ result=result/weight;return result;}
599
664
  #endif
600
- ,in vec2 vReflectionInfos
601
- ,in vec3 viewDirectionW
602
- ,in float diffuseRoughness
603
- ,in vec3 surfaceAlbedo
604
- ) {vec3 environmentIrradiance=vec3(0.,0.,0.);
605
- #if (defined(USESPHERICALFROMREFLECTIONMAP) && (!defined(NORMAL) || !defined(USESPHERICALINVERTEX))) || (defined(USEIRRADIANCEMAP) && defined(REFLECTIONMAP_3D))
606
- vec3 irradianceVector=(iblMatrix*vec4(surfaceNormal,0)).xyz;vec3 irradianceView=(iblMatrix*vec4(viewDirectionW,0)).xyz;
607
- #if !defined(USE_IRRADIANCE_DOMINANT_DIRECTION) && !defined(REALTIME_FILTERING)
608
- #if BASE_DIFFUSE_MODEL != BRDF_DIFFUSE_MODEL_LAMBERT && BASE_DIFFUSE_MODEL != BRDF_DIFFUSE_MODEL_LEGACY
609
- {float NdotV=max(dot(surfaceNormal,viewDirectionW),0.0);irradianceVector=mix(irradianceVector,irradianceView,(0.5*(1.0-NdotV))*diffuseRoughness);}
610
665
  #endif
611
666
  #endif
612
- #ifdef REFLECTIONMAP_OPPOSITEZ
613
- irradianceVector.z*=-1.0;irradianceView.z*=-1.0;
667
+ `;o.ShaderStore.IncludesShadersStore[m]||(o.ShaderStore.IncludesShadersStore[m]=g),e.s(["hdrFilteringFunctions",0,{name:m,shader:g}],38416);let E="pbrDirectLightingFunctions",p=`#define CLEARCOATREFLECTANCE90 1.0
668
+ struct lightingInfo
669
+ {vec3 diffuse;
670
+ #ifdef SS_TRANSLUCENCY
671
+ vec3 diffuseTransmission;
614
672
  #endif
615
- #ifdef INVERTCUBICMAP
616
- irradianceVector.y*=-1.0;irradianceView.y*=-1.0;
673
+ #ifdef SPECULARTERM
674
+ vec3 specular;
617
675
  #endif
676
+ #ifdef CLEARCOAT
677
+ vec4 clearCoat;
618
678
  #endif
619
- #ifdef USESPHERICALFROMREFLECTIONMAP
620
- #if defined(NORMAL) && defined(USESPHERICALINVERTEX)
621
- environmentIrradiance=vEnvironmentIrradianceSH;
622
- #else
623
- #if defined(REALTIME_FILTERING)
624
- environmentIrradiance=irradiance(reflectionSampler,irradianceVector,vReflectionFilteringInfo,diffuseRoughness,surfaceAlbedo,irradianceView
625
- #ifdef IBL_CDF_FILTERING
626
- ,icdfSampler
679
+ #ifdef SHEEN
680
+ vec3 sheen;
627
681
  #endif
628
- );
682
+ };float adjustRoughnessFromLightProperties(float roughness,float lightRadius,float lightDistance) {
683
+ #if defined(USEPHYSICALLIGHTFALLOFF) || defined(USEGLTFLIGHTFALLOFF)
684
+ float lightRoughness=lightRadius/lightDistance;float totalRoughness=saturate(lightRoughness+roughness);return totalRoughness;
629
685
  #else
630
- environmentIrradiance=computeEnvironmentIrradiance(irradianceVector);
686
+ return roughness;
631
687
  #endif
688
+ }
689
+ vec3 computeHemisphericDiffuseLighting(preLightingInfo info,vec3 lightColor,vec3 groundColor) {return mix(groundColor,lightColor,info.NdotL);}
690
+ #if defined(AREALIGHTUSED) && defined(AREALIGHTSUPPORTED)
691
+ vec3 computeAreaDiffuseLighting(preLightingInfo info,vec3 lightColor) {return info.areaLightDiffuse*lightColor;}
632
692
  #endif
633
- #elif defined(USEIRRADIANCEMAP)
634
- #ifdef REFLECTIONMAP_3D
635
- vec4 environmentIrradianceFromTexture=sampleReflection(irradianceSampler,irradianceVector);
636
- #else
637
- vec4 environmentIrradianceFromTexture=sampleReflection(irradianceSampler,reflectionCoords);
638
- #endif
639
- environmentIrradiance=environmentIrradianceFromTexture.rgb;
640
- #ifdef RGBDREFLECTION
641
- environmentIrradiance.rgb=fromRGBD(environmentIrradianceFromTexture);
642
- #endif
643
- #ifdef GAMMAREFLECTION
644
- environmentIrradiance.rgb=toLinearSpace(environmentIrradiance.rgb);
645
- #endif
646
- #ifdef USE_IRRADIANCE_DOMINANT_DIRECTION
647
- vec3 Ls=normalize(reflectionDominantDirection);float NoL=dot(irradianceVector,Ls);float NoV=dot(irradianceVector,irradianceView);vec3 diffuseRoughnessTerm=vec3(1.0);
648
- #if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON
649
- float LoV=dot (Ls,irradianceView);float mag=length(reflectionDominantDirection)*2.0;vec3 clampedAlbedo=clamp(surfaceAlbedo,vec3(0.1),vec3(1.0));diffuseRoughnessTerm=diffuseBRDF_EON(clampedAlbedo,diffuseRoughness,NoL,NoV,LoV)*PI;diffuseRoughnessTerm=diffuseRoughnessTerm/clampedAlbedo;diffuseRoughnessTerm=mix(vec3(1.0),diffuseRoughnessTerm,sqrt(clamp(mag*NoV,0.0,1.0)));
693
+ vec3 computeDiffuseLighting(preLightingInfo info,vec3 lightColor) {vec3 diffuseTerm=vec3(1.0/PI);
694
+ #if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_LEGACY
695
+ diffuseTerm=vec3(diffuseBRDF_Burley(info.NdotL,info.NdotV,info.VdotH,info.roughness));
650
696
  #elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_BURLEY
651
- vec3 H=(irradianceView+Ls)*0.5;float VoH=dot(irradianceView,H);diffuseRoughnessTerm=vec3(diffuseBRDF_Burley(NoL,NoV,VoH,diffuseRoughness)*PI);
697
+ diffuseTerm=vec3(diffuseBRDF_Burley(info.NdotL,info.NdotV,info.VdotH,info.diffuseRoughness));
698
+ #elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON
699
+ vec3 clampedAlbedo=clamp(info.surfaceAlbedo,vec3(0.1),vec3(1.0));diffuseTerm=diffuseBRDF_EON(clampedAlbedo,info.diffuseRoughness,info.NdotL,info.NdotV,info.LdotV);diffuseTerm/=clampedAlbedo;
652
700
  #endif
653
- environmentIrradiance=environmentIrradiance.rgb*diffuseRoughnessTerm;
701
+ return diffuseTerm*info.attenuation*info.NdotL*lightColor;}
702
+ #define inline
703
+ vec3 computeProjectionTextureDiffuseLighting(sampler2D projectionLightSampler,mat4 textureProjectionMatrix,vec3 posW){vec4 strq=textureProjectionMatrix*vec4(posW,1.0);strq/=strq.w;vec3 textureColor=texture2D(projectionLightSampler,strq.xy).rgb;return toLinearSpace(textureColor);}
704
+ #ifdef SS_TRANSLUCENCY
705
+ vec3 computeDiffuseTransmittedLighting(preLightingInfo info,vec3 lightColor,vec3 transmittance) {vec3 transmittanceNdotL=vec3(0.);float NdotL=absEps(info.NdotLUnclamped);
706
+ #ifndef SS_TRANSLUCENCY_LEGACY
707
+ if (info.NdotLUnclamped<0.0) {
654
708
  #endif
709
+ float wrapNdotL=computeWrappedDiffuseNdotL(NdotL,0.02);float trAdapt=step(0.,info.NdotLUnclamped);transmittanceNdotL=mix(transmittance*wrapNdotL,vec3(wrapNdotL),trAdapt);
710
+ #ifndef SS_TRANSLUCENCY_LEGACY
711
+ }
712
+ vec3 diffuseTerm=vec3(1.0/PI);
713
+ #if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_LEGACY
714
+ diffuseTerm=vec3(diffuseBRDF_Burley(info.NdotL,info.NdotV,info.VdotH,info.roughness));
715
+ #elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_BURLEY
716
+ diffuseTerm=vec3(diffuseBRDF_Burley(info.NdotL,info.NdotV,info.VdotH,info.diffuseRoughness));
717
+ #elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON
718
+ vec3 clampedAlbedo=clamp(info.surfaceAlbedo,vec3(0.1),vec3(1.0));diffuseTerm=diffuseBRDF_EON(clampedAlbedo,info.diffuseRoughness,info.NdotL,info.NdotV,info.LdotV);diffuseTerm/=clampedAlbedo;
655
719
  #endif
656
- environmentIrradiance*=vReflectionInfos.x;return environmentIrradiance;}
657
- #define pbr_inline
658
- #ifdef REFLECTIONMAP_3D
659
- vec3 createReflectionCoords(
660
720
  #else
661
- vec2 createReflectionCoords(
662
- #endif
663
- in vec3 vPositionW
664
- ,in vec3 normalW
665
- )
666
- {vec3 reflectionVector=computeReflectionCoords(vec4(vPositionW,1.0),normalW);
667
- #ifdef REFLECTIONMAP_OPPOSITEZ
668
- reflectionVector.z*=-1.0;
721
+ float diffuseTerm=diffuseBRDF_Burley(NdotL,info.NdotV,info.VdotH,info.roughness);
669
722
  #endif
670
- #ifdef REFLECTIONMAP_3D
671
- vec3 reflectionCoords=reflectionVector;
672
- #else
673
- vec2 reflectionCoords=reflectionVector.xy;
674
- #ifdef REFLECTIONMAP_PROJECTION
675
- reflectionCoords/=reflectionVector.z;
723
+ return diffuseTerm*transmittanceNdotL*info.attenuation*lightColor;}
676
724
  #endif
677
- reflectionCoords.y=1.0-reflectionCoords.y;
725
+ #ifdef SPECULARTERM
726
+ vec3 computeSpecularLighting(preLightingInfo info,vec3 N,vec3 reflectance0,vec3 fresnel,float geometricRoughnessFactor,vec3 lightColor) {float NdotH=saturateEps(dot(N,info.H));float roughness=max(info.roughness,geometricRoughnessFactor);float alphaG=convertRoughnessToAverageSlope(roughness);
727
+ #ifdef IRIDESCENCE
728
+ fresnel=mix(fresnel,reflectance0,info.iridescenceIntensity);
678
729
  #endif
679
- return reflectionCoords;}
680
- #define pbr_inline
681
- #define inline
682
- vec3 sampleRadiance(
683
- in float alphaG
684
- ,in vec3 vReflectionMicrosurfaceInfos
685
- ,in vec2 vReflectionInfos
686
- ,in geometryInfoOutParams geoInfo
687
- #ifdef REFLECTIONMAP_3D
688
- ,in samplerCube reflectionSampler
689
- ,const vec3 reflectionCoords
730
+ float distribution=normalDistributionFunction_TrowbridgeReitzGGX(NdotH,alphaG);
731
+ #ifdef BRDF_V_HEIGHT_CORRELATED
732
+ float smithVisibility=smithVisibility_GGXCorrelated(info.NdotL,info.NdotV,alphaG);
690
733
  #else
691
- ,in sampler2D reflectionSampler
692
- ,const vec2 reflectionCoords
734
+ float smithVisibility=smithVisibility_TrowbridgeReitzGGXFast(info.NdotL,info.NdotV,alphaG);
693
735
  #endif
694
- #ifdef REALTIME_FILTERING
695
- ,in vec2 vReflectionFilteringInfo
736
+ vec3 specTerm=fresnel*distribution*smithVisibility;return specTerm*info.attenuation*info.NdotL*lightColor;}
737
+ #if defined(AREALIGHTUSED) && defined(AREALIGHTSUPPORTED)
738
+ vec3 computeAreaSpecularLighting(preLightingInfo info,vec3 specularColor,vec3 reflectance0,vec3 reflectance90) {vec3 fresnel=specularColor*info.areaLightFresnel.x*reflectance0+( vec3( 1.0 )-specularColor )*info.areaLightFresnel.y*reflectance90;return specularColor*fresnel*info.areaLightSpecular;}
696
739
  #endif
697
- )
698
- {vec4 environmentRadiance=vec4(0.,0.,0.,0.);
699
- #if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)
700
- float reflectionLOD=getLodFromAlphaG(vReflectionMicrosurfaceInfos.x,alphaG,geoInfo.NdotVUnclamped);
701
- #elif defined(LINEARSPECULARREFLECTION)
702
- float reflectionLOD=getLinearLodFromRoughness(vReflectionMicrosurfaceInfos.x,roughness);
703
- #else
704
- float reflectionLOD=getLodFromAlphaG(vReflectionMicrosurfaceInfos.x,alphaG);
705
740
  #endif
706
- reflectionLOD=reflectionLOD*vReflectionMicrosurfaceInfos.y+vReflectionMicrosurfaceInfos.z;
707
- #ifdef REALTIME_FILTERING
708
- environmentRadiance=vec4(radiance(alphaG,reflectionSampler,reflectionCoords,vReflectionFilteringInfo),1.0);
709
- #else
710
- environmentRadiance=sampleReflectionLod(reflectionSampler,reflectionCoords,reflectionLOD);
741
+ #ifdef FUZZ
742
+ float evalFuzz(vec3 L,float NdotL,float NdotV,vec3 T,vec3 B,vec3 ltcLut)
743
+ {if (NdotL<=0.0 || NdotV<=0.0)
744
+ return 0.0;mat3 M=mat3(
745
+ vec3(ltcLut.r,0.0,0.0),
746
+ vec3(ltcLut.g,1.0,0.0),
747
+ vec3(0.0,0.0,1.0)
748
+ );vec3 Llocal=vec3(dot(L,T),dot(L,B),NdotL);vec3 Lwarp=normalize(M*Llocal);float cosThetaWarp=max(Lwarp.z,0.0);return cosThetaWarp*NdotL;}
711
749
  #endif
712
- #ifdef RGBDREFLECTION
713
- environmentRadiance.rgb=fromRGBD(environmentRadiance);
750
+ #if defined(ANISOTROPIC) && defined(ANISOTROPIC_OPENPBR)
751
+ vec3 computeAnisotropicSpecularLighting(preLightingInfo info,vec3 V,vec3 N,vec3 T,vec3 B,float anisotropy,float geometricRoughnessFactor,vec3 lightColor) {float NdotH=saturateEps(dot(N,info.H));float TdotH=dot(T,info.H);float BdotH=dot(B,info.H);float TdotV=dot(T,V);float BdotV=dot(B,V);float TdotL=dot(T,info.L);float BdotL=dot(B,info.L);float alphaG=convertRoughnessToAverageSlope(info.roughness);vec2 alphaTB=getAnisotropicRoughness(alphaG,anisotropy);float distribution=normalDistributionFunction_BurleyGGX_Anisotropic(NdotH,TdotH,BdotH,alphaTB);float smithVisibility=smithVisibility_GGXCorrelated_Anisotropic(info.NdotL,info.NdotV,TdotV,BdotV,TdotL,BdotL,alphaTB);vec3 specTerm=vec3(distribution*smithVisibility);return specTerm*info.attenuation*info.NdotL*lightColor;}
752
+ #elif defined(ANISOTROPIC)
753
+ vec3 computeAnisotropicSpecularLighting(preLightingInfo info,vec3 V,vec3 N,vec3 T,vec3 B,float anisotropy,vec3 reflectance0,vec3 reflectance90,float geometricRoughnessFactor,vec3 lightColor) {float NdotH=saturateEps(dot(N,info.H));float TdotH=dot(T,info.H);float BdotH=dot(B,info.H);float TdotV=dot(T,V);float BdotV=dot(B,V);float TdotL=dot(T,info.L);float BdotL=dot(B,info.L);float alphaG=convertRoughnessToAverageSlope(info.roughness);vec2 alphaTB=getAnisotropicRoughness(alphaG,anisotropy);alphaTB=max(alphaTB,square(geometricRoughnessFactor));vec3 fresnel=fresnelSchlickGGX(info.VdotH,reflectance0,reflectance90);
754
+ #ifdef IRIDESCENCE
755
+ fresnel=mix(fresnel,reflectance0,info.iridescenceIntensity);
714
756
  #endif
715
- #ifdef GAMMAREFLECTION
716
- environmentRadiance.rgb=toLinearSpace(environmentRadiance.rgb);
757
+ float distribution=normalDistributionFunction_BurleyGGX_Anisotropic(NdotH,TdotH,BdotH,alphaTB);float smithVisibility=smithVisibility_GGXCorrelated_Anisotropic(info.NdotL,info.NdotV,TdotV,BdotV,TdotL,BdotL,alphaTB);vec3 specTerm=fresnel*distribution*smithVisibility;return specTerm*info.attenuation*info.NdotL*lightColor;}
717
758
  #endif
718
- environmentRadiance.rgb*=vec3(vReflectionInfos.x);return environmentRadiance.rgb;}
719
- #if defined(ANISOTROPIC)
720
- #define pbr_inline
721
- #define inline
722
- vec3 sampleRadianceAnisotropic(
723
- in float alphaG
724
- ,in vec3 vReflectionMicrosurfaceInfos
725
- ,in vec2 vReflectionInfos
726
- ,in geometryInfoAnisoOutParams geoInfo
727
- ,const vec3 normalW
728
- ,const vec3 viewDirectionW
729
- ,const vec3 positionW
730
- ,const vec3 noise
731
- ,bool isRefraction
732
- ,float ior
733
- #ifdef REFLECTIONMAP_3D
734
- ,in samplerCube reflectionSampler
735
- #else
736
- ,in sampler2D reflectionSampler
759
+ #ifdef CLEARCOAT
760
+ vec4 computeClearCoatLighting(preLightingInfo info,vec3 Ncc,float geometricRoughnessFactor,float clearCoatIntensity,vec3 lightColor) {float NccdotL=saturateEps(dot(Ncc,info.L));float NccdotH=saturateEps(dot(Ncc,info.H));float clearCoatRoughness=max(info.roughness,geometricRoughnessFactor);float alphaG=convertRoughnessToAverageSlope(clearCoatRoughness);float fresnel=fresnelSchlickGGX(info.VdotH,vClearCoatRefractionParams.x,CLEARCOATREFLECTANCE90);fresnel*=clearCoatIntensity;float distribution=normalDistributionFunction_TrowbridgeReitzGGX(NccdotH,alphaG);float kelemenVisibility=visibility_Kelemen(info.VdotH);float clearCoatTerm=fresnel*distribution*kelemenVisibility;return vec4(
761
+ clearCoatTerm*info.attenuation*NccdotL*lightColor,
762
+ 1.0-fresnel
763
+ );}
764
+ vec3 computeClearCoatLightingAbsorption(float NdotVRefract,vec3 L,vec3 Ncc,vec3 clearCoatColor,float clearCoatThickness,float clearCoatIntensity) {vec3 LRefract=-refract(L,Ncc,vClearCoatRefractionParams.y);float NdotLRefract=saturateEps(dot(Ncc,LRefract));vec3 absorption=computeClearCoatAbsorption(NdotVRefract,NdotLRefract,clearCoatColor,clearCoatThickness,clearCoatIntensity);return absorption;}
737
765
  #endif
738
- #ifdef REALTIME_FILTERING
739
- ,in vec2 vReflectionFilteringInfo
766
+ #ifdef SHEEN
767
+ vec3 computeSheenLighting(preLightingInfo info,vec3 N,vec3 reflectance0,vec3 reflectance90,float geometricRoughnessFactor,vec3 lightColor) {float NdotH=saturateEps(dot(N,info.H));float roughness=max(info.roughness,geometricRoughnessFactor);float alphaG=convertRoughnessToAverageSlope(roughness);float fresnel=1.;float distribution=normalDistributionFunction_CharlieSheen(NdotH,alphaG);/*#ifdef SHEEN_SOFTER
768
+ float visibility=visibility_CharlieSheen(info.NdotL,info.NdotV,alphaG);
769
+ #else */
770
+ float visibility=visibility_Ashikhmin(info.NdotL,info.NdotV);/* #endif */
771
+ float sheenTerm=fresnel*distribution*visibility;return sheenTerm*info.attenuation*info.NdotL*lightColor;}
740
772
  #endif
741
- )
742
- {vec4 environmentRadiance=vec4(0.,0.,0.,0.);float alphaT=alphaG*sqrt(2.0/(1.0+(1.0-geoInfo.anisotropy)*(1.0-geoInfo.anisotropy)));float alphaB=(1.0-geoInfo.anisotropy)*alphaT;alphaG=alphaB;
743
- #if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)
744
- float reflectionLOD=getLodFromAlphaG(vReflectionMicrosurfaceInfos.x,alphaG,geoInfo.NdotVUnclamped);
745
- #elif defined(LINEARSPECULARREFLECTION)
746
- float reflectionLOD=getLinearLodFromRoughness(vReflectionMicrosurfaceInfos.x,roughness);
773
+ `;o.ShaderStore.IncludesShadersStore[E]||(o.ShaderStore.IncludesShadersStore[E]=p),e.s(["pbrDirectLightingFunctions",0,{name:E,shader:p}],54398);let h="pbrBlockNormalGeometric",S=`vec3 viewDirectionW=normalize(vEyePosition.xyz-vPositionW);
774
+ #ifdef NORMAL
775
+ vec3 normalW=normalize(vNormalW);
747
776
  #else
748
- float reflectionLOD=getLodFromAlphaG(vReflectionMicrosurfaceInfos.x,alphaG);
777
+ vec3 normalW=normalize(cross(dFdx(vPositionW),dFdy(vPositionW)))*vEyePosition.w;
749
778
  #endif
750
- reflectionLOD=reflectionLOD*vReflectionMicrosurfaceInfos.y+vReflectionMicrosurfaceInfos.z;
751
- #ifdef REALTIME_FILTERING
752
- vec3 view=(reflectionMatrix*vec4(viewDirectionW,0.0)).xyz;vec3 tangent=(reflectionMatrix*vec4(geoInfo.anisotropicTangent,0.0)).xyz;vec3 bitangent=(reflectionMatrix*vec4(geoInfo.anisotropicBitangent,0.0)).xyz;vec3 normal=(reflectionMatrix*vec4(normalW,0.0)).xyz;
753
- #ifdef REFLECTIONMAP_OPPOSITEZ
754
- view.z*=-1.0;tangent.z*=-1.0;bitangent.z*=-1.0;normal.z*=-1.0;
779
+ vec3 geometricNormalW=normalW;
780
+ #if defined(TWOSIDEDLIGHTING) && defined(NORMAL)
781
+ geometricNormalW=gl_FrontFacing ? geometricNormalW : -geometricNormalW;
755
782
  #endif
756
- environmentRadiance =
757
- vec4(radianceAnisotropic(alphaT,alphaB,reflectionSampler,
758
- view,tangent,
759
- bitangent,normal,
760
- vReflectionFilteringInfo,noise.xy,isRefraction,ior),
761
- 1.0);
762
- #else
763
- const int samples=16;vec4 radianceSample=vec4(0.0);vec3 reflectionCoords=vec3(0.0);float sample_weight=0.0;float total_weight=0.0;float step=1.0/float(max(samples-1,1));for (int i=0; i<samples; ++i) {float t=mix(-1.0,1.0,float(i)*step);t+=step*2.0*noise.x;sample_weight=max(1.0-abs(t),0.001);sample_weight*=sample_weight;t*=min(4.0*alphaT*geoInfo.anisotropy,1.0);vec3 bentNormal;if (t<0.0) {float blend=t+1.0;bentNormal=normalize(mix(-geoInfo.anisotropicTangent,normalW,blend));} else if (t>0.0) {float blend=t;bentNormal=normalize(mix(normalW,geoInfo.anisotropicTangent,blend));} else {bentNormal=normalW;}
764
- if (isRefraction) {reflectionCoords=double_refract(-viewDirectionW,bentNormal,ior);} else {reflectionCoords=reflect(-viewDirectionW,bentNormal);}
765
- reflectionCoords=vec3(reflectionMatrix*vec4(reflectionCoords,0));
766
- #ifdef REFLECTIONMAP_OPPOSITEZ
767
- reflectionCoords.z*=-1.0;
783
+ `;o.ShaderStore.IncludesShadersStore[h]||(o.ShaderStore.IncludesShadersStore[h]=S),e.s(["pbrBlockNormalGeometric",0,{name:h,shader:S}],53804);let R="pbrBlockImageProcessing",I=`#if defined(IMAGEPROCESSINGPOSTPROCESS) || defined(SS_SCATTERING)
784
+ #if !defined(SKIPFINALCOLORCLAMP)
785
+ finalColor.rgb=clamp(finalColor.rgb,0.,30.0);
768
786
  #endif
769
- radianceSample=sampleReflectionLod(reflectionSampler,reflectionCoords,reflectionLOD);
770
- #ifdef RGBDREFLECTION
771
- environmentRadiance.rgb+=sample_weight*fromRGBD(radianceSample);
772
- #elif defined(GAMMAREFLECTION)
773
- environmentRadiance.rgb+=sample_weight*toLinearSpace(radianceSample.rgb);
774
787
  #else
775
- environmentRadiance.rgb+=sample_weight*radianceSample.rgb;
776
- #endif
777
- total_weight+=sample_weight;}
778
- environmentRadiance=vec4(environmentRadiance.xyz/float(total_weight),1.0);
788
+ finalColor=applyImageProcessing(finalColor);
779
789
  #endif
780
- environmentRadiance.rgb*=vec3(vReflectionInfos.x);return environmentRadiance.rgb;}
790
+ finalColor.a*=visibility;
791
+ #ifdef PREMULTIPLYALPHA
792
+ finalColor.rgb*=finalColor.a;
781
793
  #endif
794
+ `;o.ShaderStore.IncludesShadersStore[R]||(o.ShaderStore.IncludesShadersStore[R]=I),e.s(["pbrBlockImageProcessing",0,{name:R,shader:I}],22806);let L="pbrDebug",N=`#if DEBUGMODE>0
795
+ if (vClipSpacePosition.x/vClipSpacePosition.w>=vDebugMode.x) {
796
+ #if DEBUGMODE==1
797
+ gl_FragColor.rgb=vPositionW.rgb;
798
+ #define DEBUGMODE_NORMALIZE
799
+ #elif DEBUGMODE==2 && defined(NORMAL)
800
+ gl_FragColor.rgb=vNormalW.rgb;
801
+ #define DEBUGMODE_NORMALIZE
802
+ #elif DEBUGMODE==3 && defined(BUMP) || DEBUGMODE==3 && defined(PARALLAX) || DEBUGMODE==3 && defined(ANISOTROPIC)
803
+ gl_FragColor.rgb=TBN[0];
804
+ #define DEBUGMODE_NORMALIZE
805
+ #elif DEBUGMODE==4 && defined(BUMP) || DEBUGMODE==4 && defined(PARALLAX) || DEBUGMODE==4 && defined(ANISOTROPIC)
806
+ gl_FragColor.rgb=TBN[1];
807
+ #define DEBUGMODE_NORMALIZE
808
+ #elif DEBUGMODE==5
809
+ gl_FragColor.rgb=normalW;
810
+ #define DEBUGMODE_NORMALIZE
811
+ #elif DEBUGMODE==6 && defined(MAINUV1)
812
+ gl_FragColor.rgb=vec3(vMainUV1,0.0);
813
+ #elif DEBUGMODE==7 && defined(MAINUV2)
814
+ gl_FragColor.rgb=vec3(vMainUV2,0.0);
815
+ #elif DEBUGMODE==8 && defined(CLEARCOAT) && defined(CLEARCOAT_BUMP)
816
+ gl_FragColor.rgb=clearcoatOut.TBNClearCoat[0];
817
+ #define DEBUGMODE_NORMALIZE
818
+ #elif DEBUGMODE==9 && defined(CLEARCOAT) && defined(CLEARCOAT_BUMP)
819
+ gl_FragColor.rgb=clearcoatOut.TBNClearCoat[1];
820
+ #define DEBUGMODE_NORMALIZE
821
+ #elif DEBUGMODE==10 && defined(CLEARCOAT)
822
+ gl_FragColor.rgb=clearcoatOut.clearCoatNormalW;
823
+ #define DEBUGMODE_NORMALIZE
824
+ #elif DEBUGMODE==11 && defined(ANISOTROPIC)
825
+ gl_FragColor.rgb=anisotropicOut.anisotropicNormal;
826
+ #define DEBUGMODE_NORMALIZE
827
+ #elif DEBUGMODE==12 && defined(ANISOTROPIC)
828
+ gl_FragColor.rgb=anisotropicOut.anisotropicTangent;
829
+ #define DEBUGMODE_NORMALIZE
830
+ #elif DEBUGMODE==13 && defined(ANISOTROPIC)
831
+ gl_FragColor.rgb=anisotropicOut.anisotropicBitangent;
832
+ #define DEBUGMODE_NORMALIZE
833
+ #elif DEBUGMODE==20 && defined(ALBEDO)
834
+ gl_FragColor.rgb=albedoTexture.rgb;
835
+ #ifndef GAMMAALBEDO
836
+ #define DEBUGMODE_GAMMA
782
837
  #endif
783
- #if defined(ENVIRONMENTBRDF)
784
- #define pbr_inline
785
- float computeDielectricIblFresnel(in ReflectanceParams reflectance,in vec3 environmentBrdf)
786
- {float dielectricIblFresnel=getReflectanceFromBRDFLookup(vec3(reflectance.F0),vec3(reflectance.F90),environmentBrdf).r;float dielectricECF=1.0+reflectance.F0*(1.0/environmentBrdf.y-1.0);return clamp(dielectricIblFresnel*dielectricECF,0.0,1.0);}
787
- #define pbr_inline
788
- vec3 computeConductorIblFresnel(in ReflectanceParams reflectance,in vec3 environmentBrdf)
789
- {
790
- #if (CONDUCTOR_SPECULAR_MODEL==CONDUCTOR_SPECULAR_MODEL_OPENPBR) && defined(ENVIRONMENTBRDF)
791
- vec3 openPBRBrdf=vec3(environmentBrdf.xy,environmentBrdf.z/BRDF_Z_SCALE);vec3 b =getF82B(reflectance.coloredF0,reflectance.coloredF90);vec3 E_F82=getF82DirectionalAlbedo(reflectance.coloredF0,vec3(1.0),b,openPBRBrdf);vec3 F_avg=getF82AverageFresnel(reflectance.coloredF0,b);vec3 ECF =vec3(1.0)+F_avg*(vec3(1.0)/openPBRBrdf.y-vec3(1.0));return clamp(E_F82*ECF,vec3(0.0),vec3(1.0));
792
- #else
793
- return getReflectanceFromBRDFLookup(reflectance.coloredF0,reflectance.coloredF90,environmentBrdf);
838
+ #elif DEBUGMODE==21 && defined(AMBIENT)
839
+ gl_FragColor.rgb=aoOut.ambientOcclusionColorMap.rgb;
840
+ #elif DEBUGMODE==22 && defined(OPACITY)
841
+ gl_FragColor.rgb=opacityMap.rgb;
842
+ #elif DEBUGMODE==23 && defined(EMISSIVE)
843
+ gl_FragColor.rgb=emissiveColorTex.rgb;
844
+ #ifndef GAMMAEMISSIVE
845
+ #define DEBUGMODE_GAMMA
794
846
  #endif
795
- }
847
+ #elif DEBUGMODE==24 && defined(LIGHTMAP)
848
+ gl_FragColor.rgb=lightmapColor.rgb;
849
+ #ifndef GAMMALIGHTMAP
850
+ #define DEBUGMODE_GAMMA
796
851
  #endif
797
- `;o.ShaderStore.IncludesShadersStore[c]||(o.ShaderStore.IncludesShadersStore[c]=f),e.s(["openpbrIblFunctions",0,{name:c,shader:f}],33577)},65345,e=>{"use strict";var o=e.i(37875);let t="openpbrTransmissionLayerData",i=`float transmission_weight=vTransmissionWeight;vec3 transmission_color=vTransmissionColor.rgb;float transmission_depth=vTransmissionDepth;vec3 transmission_scatter=vTransmissionScatter.rgb;float transmission_scatter_anisotropy=clamp(vTransmissionScatterAnisotropy,-0.9999,0.9999);float transmission_dispersion_scale=vTransmissionDispersionScale;float transmission_dispersion_abbe_number=vTransmissionDispersionAbbeNumber;
798
- #ifdef TRANSMISSION_WEIGHT
799
- vec4 transmissionWeightFromTexture=TEXRD(transmissionWeightSampler,vTransmissionWeightUV+uvOffset);
800
- #endif
801
- #ifdef TRANSMISSION_COLOR
802
- vec4 transmissionColorFromTexture=TEXRD(transmissionColorSampler,vTransmissionColorUV+uvOffset);
803
- #endif
804
- #ifdef TRANSMISSION_DEPTH
805
- vec4 transmissionDepthFromTexture=TEXRD(transmissionDepthSampler,vTransmissionDepthUV+uvOffset);
806
- #endif
807
- #ifdef TRANSMISSION_SCATTER
808
- vec4 transmissionScatterFromTexture=TEXRD(transmissionScatterSampler,vTransmissionScatterUV+uvOffset);
809
- #endif
810
- #ifdef TRANSMISSION_DISPERSION_SCALE
811
- vec4 transmissionDispersionScaleFromTexture=TEXRD(transmissionDispersionScaleSampler,vTransmissionDispersionScaleUV+uvOffset);
852
+ #elif DEBUGMODE==25 && defined(REFLECTIVITY) && defined(METALLICWORKFLOW)
853
+ gl_FragColor.rgb=reflectivityOut.surfaceMetallicColorMap.rgb;
854
+ #elif DEBUGMODE==26 && defined(REFLECTIVITY) && !defined(METALLICWORKFLOW)
855
+ gl_FragColor.rgb=reflectivityOut.surfaceReflectivityColorMap.rgb;
856
+ #define DEBUGMODE_GAMMA
857
+ #elif DEBUGMODE==27 && defined(CLEARCOAT) && defined(CLEARCOAT_TEXTURE)
858
+ gl_FragColor.rgb=vec3(clearcoatOut.clearCoatMapData.rg,0.0);
859
+ #elif DEBUGMODE==28 && defined(CLEARCOAT) && defined(CLEARCOAT_TINT) && defined(CLEARCOAT_TINT_TEXTURE)
860
+ gl_FragColor.rgb=clearcoatOut.clearCoatTintMapData.rgb;
861
+ #elif DEBUGMODE==29 && defined(SHEEN) && defined(SHEEN_TEXTURE)
862
+ gl_FragColor.rgb=sheenOut.sheenMapData.rgb;
863
+ #elif DEBUGMODE==30 && defined(ANISOTROPIC) && defined(ANISOTROPIC_TEXTURE)
864
+ gl_FragColor.rgb=anisotropicOut.anisotropyMapData.rgb;
865
+ #elif DEBUGMODE==31 && defined(SUBSURFACE) && defined(SS_THICKNESSANDMASK_TEXTURE)
866
+ gl_FragColor.rgb=subSurfaceOut.thicknessMap.rgb;
867
+ #elif DEBUGMODE==32 && defined(BUMP)
868
+ gl_FragColor.rgb=texture2D(bumpSampler,vBumpUV).rgb;
869
+ #elif DEBUGMODE==40 && defined(SS_REFRACTION)
870
+ gl_FragColor.rgb=subSurfaceOut.environmentRefraction.rgb;
871
+ #define DEBUGMODE_GAMMA
872
+ #elif DEBUGMODE==41 && defined(REFLECTION)
873
+ gl_FragColor.rgb=reflectionOut.environmentRadiance.rgb;
874
+ #ifndef GAMMAREFLECTION
875
+ #define DEBUGMODE_GAMMA
812
876
  #endif
813
- #ifdef TRANSMISSION_WEIGHT
814
- transmission_weight*=transmissionWeightFromTexture.r;
877
+ #elif DEBUGMODE==42 && defined(CLEARCOAT) && defined(REFLECTION)
878
+ gl_FragColor.rgb=clearcoatOut.environmentClearCoatRadiance.rgb;
879
+ #define DEBUGMODE_GAMMA
880
+ #elif DEBUGMODE==50
881
+ gl_FragColor.rgb=diffuseBase.rgb;
882
+ #define DEBUGMODE_GAMMA
883
+ #elif DEBUGMODE==51 && defined(SPECULARTERM)
884
+ gl_FragColor.rgb=specularBase.rgb;
885
+ #define DEBUGMODE_GAMMA
886
+ #elif DEBUGMODE==52 && defined(CLEARCOAT)
887
+ gl_FragColor.rgb=clearCoatBase.rgb;
888
+ #define DEBUGMODE_GAMMA
889
+ #elif DEBUGMODE==53 && defined(SHEEN)
890
+ gl_FragColor.rgb=sheenBase.rgb;
891
+ #define DEBUGMODE_GAMMA
892
+ #elif DEBUGMODE==54 && defined(REFLECTION)
893
+ gl_FragColor.rgb=reflectionOut.environmentIrradiance.rgb;
894
+ #ifndef GAMMAREFLECTION
895
+ #define DEBUGMODE_GAMMA
815
896
  #endif
816
- #ifdef TRANSMISSION_COLOR
817
- #ifdef TRANSMISSION_COLOR_GAMMA
818
- transmission_color*=toLinearSpace(transmissionColorFromTexture.rgb);
897
+ #elif DEBUGMODE==60
898
+ gl_FragColor.rgb=surfaceAlbedo.rgb;
899
+ #define DEBUGMODE_GAMMA
900
+ #elif DEBUGMODE==61
901
+ gl_FragColor.rgb=clearcoatOut.specularEnvironmentR0;
902
+ #define DEBUGMODE_GAMMA
903
+ #elif DEBUGMODE==62 && defined(METALLICWORKFLOW)
904
+ gl_FragColor.rgb=vec3(reflectivityOut.metallic);
905
+ #elif DEBUGMODE==71 && defined(METALLICWORKFLOW)
906
+ gl_FragColor.rgb=reflectivityOut.metallicF0;
907
+ #elif DEBUGMODE==63
908
+ gl_FragColor.rgb=vec3(roughness);
909
+ #elif DEBUGMODE==64
910
+ gl_FragColor.rgb=vec3(alphaG);
911
+ #elif DEBUGMODE==65
912
+ gl_FragColor.rgb=vec3(NdotV);
913
+ #elif DEBUGMODE==66 && defined(CLEARCOAT) && defined(CLEARCOAT_TINT)
914
+ gl_FragColor.rgb=clearcoatOut.clearCoatColor.rgb;
915
+ #define DEBUGMODE_GAMMA
916
+ #elif DEBUGMODE==67 && defined(CLEARCOAT)
917
+ gl_FragColor.rgb=vec3(clearcoatOut.clearCoatRoughness);
918
+ #elif DEBUGMODE==68 && defined(CLEARCOAT)
919
+ gl_FragColor.rgb=vec3(clearcoatOut.clearCoatNdotV);
920
+ #elif DEBUGMODE==69 && defined(SUBSURFACE) && defined(SS_TRANSLUCENCY)
921
+ gl_FragColor.rgb=subSurfaceOut.transmittance;
922
+ #elif DEBUGMODE==70 && defined(SUBSURFACE) && defined(SS_REFRACTION)
923
+ gl_FragColor.rgb=subSurfaceOut.refractionTransmittance;
924
+ #elif DEBUGMODE==72
925
+ gl_FragColor.rgb=vec3(microSurface);
926
+ #elif DEBUGMODE==73
927
+ gl_FragColor.rgb=vAlbedoColor.rgb;
928
+ #define DEBUGMODE_GAMMA
929
+ #elif DEBUGMODE==74 && !defined(METALLICWORKFLOW)
930
+ gl_FragColor.rgb=vReflectivityColor.rgb;
931
+ #define DEBUGMODE_GAMMA
932
+ #elif DEBUGMODE==75
933
+ gl_FragColor.rgb=vEmissiveColor.rgb;
934
+ #define DEBUGMODE_GAMMA
935
+ #elif DEBUGMODE==80 && defined(RADIANCEOCCLUSION)
936
+ gl_FragColor.rgb=vec3(seo);
937
+ #elif DEBUGMODE==81 && defined(HORIZONOCCLUSION) && defined(BUMP) && defined(REFLECTIONMAP_3D)
938
+ gl_FragColor.rgb=vec3(eho);
939
+ #elif DEBUGMODE==82 && defined(MS_BRDF_ENERGY_CONSERVATION)
940
+ gl_FragColor.rgb=vec3(energyConservationFactor);
941
+ #elif DEBUGMODE==83 && defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX)
942
+ gl_FragColor.rgb=baseSpecularEnvironmentReflectance;
943
+ #define DEBUGMODE_GAMMA
944
+ #elif DEBUGMODE==84 && defined(CLEARCOAT) && defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX)
945
+ gl_FragColor.rgb=clearcoatOut.clearCoatEnvironmentReflectance;
946
+ #define DEBUGMODE_GAMMA
947
+ #elif DEBUGMODE==85 && defined(SHEEN) && defined(REFLECTION)
948
+ gl_FragColor.rgb=sheenOut.sheenEnvironmentReflectance;
949
+ #define DEBUGMODE_GAMMA
950
+ #elif DEBUGMODE==86 && defined(ALPHABLEND)
951
+ gl_FragColor.rgb=vec3(luminanceOverAlpha);
952
+ #elif DEBUGMODE==87
953
+ gl_FragColor.rgb=vec3(alpha);
954
+ #elif DEBUGMODE==88 && defined(ALBEDO)
955
+ gl_FragColor.rgb=vec3(albedoTexture.a);
956
+ #elif DEBUGMODE==89
957
+ gl_FragColor.rgb=aoOut.ambientOcclusionColor.rgb;
819
958
  #else
820
- transmission_color*=transmissionColorFromTexture.rgb;
821
- #endif
822
- transmission_color*=vTransmissionColorInfos.y;
823
- #endif
824
- #ifdef TRANSMISSION_DEPTH
825
- transmission_depth*=transmissionDepthFromTexture.r;
959
+ float stripeWidth=30.;float stripePos=floor(gl_FragCoord.x/stripeWidth);float whichColor=mod(stripePos,2.);vec3 color1=vec3(.6,.2,.2);vec3 color2=vec3(.3,.1,.1);gl_FragColor.rgb=mix(color1,color2,whichColor);
826
960
  #endif
827
- #ifdef TRANSMISSION_SCATTER
828
- transmission_scatter*=transmissionScatterFromTexture.rgb;
961
+ gl_FragColor.rgb*=vDebugMode.y;
962
+ #ifdef DEBUGMODE_NORMALIZE
963
+ gl_FragColor.rgb=normalize(gl_FragColor.rgb)*0.5+0.5;
829
964
  #endif
830
- #ifdef TRANSMISSION_DISPERSION_SCALE
831
- transmission_dispersion_scale*=transmissionDispersionScaleFromTexture.r;
965
+ #ifdef DEBUGMODE_GAMMA
966
+ gl_FragColor.rgb=toGammaSpace(gl_FragColor.rgb);
832
967
  #endif
833
- `;o.ShaderStore.IncludesShadersStore[t]||(o.ShaderStore.IncludesShadersStore[t]=i),e.s(["openpbrTransmissionLayerData",0,{name:t,shader:i}])},57348,e=>{"use strict";var o=e.i(37875);let t="openpbrSubsurfaceLayerData",i=`float subsurface_weight=vSubsurfaceWeight;vec3 subsurface_color=vSubsurfaceColor.rgb;float subsurface_radius=vSubsurfaceRadius;vec3 subsurface_radius_scale=vSubsurfaceRadiusScale;float subsurface_scatter_anisotropy=clamp(vSubsurfaceScatterAnisotropy,-0.9999,0.9999);
834
- #ifdef SUBSURFACE_WEIGHT
835
- vec4 subsurfaceWeightFromTexture=TEXRD(subsurfaceWeightSampler,vSubsurfaceWeightUV+uvOffset);
968
+ gl_FragColor.a=1.0;
969
+ #ifdef PREPASS
970
+ gl_FragData[0]=toLinearSpace(gl_FragColor);
971
+ gl_FragData[1]=vec4(0.,0.,0.,0.);
836
972
  #endif
837
- #ifdef SUBSURFACE_COLOR
838
- vec4 subsurfaceColorFromTexture=TEXRD(subsurfaceColorSampler,vSubsurfaceColorUV+uvOffset);
973
+ #ifdef DEBUGMODE_FORCERETURN
974
+ return;
839
975
  #endif
840
- #ifdef SUBSURFACE_RADIUS_SCALE
841
- vec4 subsurfaceRadiusScaleFromTexture=TEXRD(subsurfaceRadiusScaleSampler,vSubsurfaceRadiusScaleUV+uvOffset);
976
+ }
842
977
  #endif
843
- #ifdef SUBSURFACE_WEIGHT
844
- #ifdef SUBSURFACE_WEIGHT_FROM_TEXTURE_ALPHA
845
- subsurface_weight*=subsurfaceWeightFromTexture.a;
978
+ `;o.ShaderStore.IncludesShadersStore[L]||(o.ShaderStore.IncludesShadersStore[L]=N),e.s(["pbrDebug",0,{name:L,shader:N}],73400)},22577,43894,e=>{"use strict";var o=e.i(2342);let t="pbrFragmentReflectionDeclaration",i=`#ifdef REFLECTION
979
+ #ifdef REFLECTIONMAP_3D
980
+ #define sampleReflection(s,c) textureCube(s,c)
981
+ uniform samplerCube reflectionSampler;
982
+ #ifdef LODBASEDMICROSFURACE
983
+ #define sampleReflectionLod(s,c,l) textureCubeLodEXT(s,c,l)
846
984
  #else
847
- subsurface_weight*=subsurfaceWeightFromTexture.r;
985
+ uniform samplerCube reflectionSamplerLow;uniform samplerCube reflectionSamplerHigh;
848
986
  #endif
987
+ #ifdef USEIRRADIANCEMAP
988
+ uniform samplerCube irradianceSampler;
849
989
  #endif
850
- #ifdef SUBSURFACE_COLOR
851
- #ifdef SUBSURFACE_COLOR_GAMMA
852
- subsurface_color*=toLinearSpace(subsurfaceColorFromTexture.rgb);
853
990
  #else
854
- subsurface_color*=subsurfaceColorFromTexture.rgb;
991
+ #define sampleReflection(s,c) texture2D(s,c)
992
+ uniform sampler2D reflectionSampler;
993
+ #ifdef LODBASEDMICROSFURACE
994
+ #define sampleReflectionLod(s,c,l) texture2DLodEXT(s,c,l)
995
+ #else
996
+ uniform sampler2D reflectionSamplerLow;uniform sampler2D reflectionSamplerHigh;
855
997
  #endif
856
- subsurface_color*=vSubsurfaceColorInfos.y;
998
+ #ifdef USEIRRADIANCEMAP
999
+ uniform sampler2D irradianceSampler;
857
1000
  #endif
858
- #ifdef SUBSURFACE_RADIUS_SCALE
859
- subsurface_radius_scale*=subsurfaceRadiusScaleFromTexture.rgb;
860
1001
  #endif
861
- `;o.ShaderStore.IncludesShadersStore[t]||(o.ShaderStore.IncludesShadersStore[t]=i),e.s(["openpbrSubsurfaceLayerData",0,{name:t,shader:i}])},91138,79587,43899,16687,79671,47939,46960,73088,79795,2834,14253,e=>{"use strict";var o=e.i(37875);e.i(46349);let t="pbrFragmentExtraDeclaration",i=`varying vec3 vPositionW;
862
- #if DEBUGMODE>0
863
- varying vec4 vClipSpacePosition;
1002
+ #ifdef REFLECTIONMAP_SKYBOX
1003
+ varying vec3 vPositionUVW;
1004
+ #else
1005
+ #if defined(REFLECTIONMAP_EQUIRECTANGULAR_FIXED) || defined(REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED)
1006
+ varying vec3 vDirectionW;
864
1007
  #endif
865
- #include<mainUVVaryingDeclaration>[1..7]
866
- #ifdef NORMAL
867
- varying vec3 vNormalW;
868
- #if defined(USESPHERICALFROMREFLECTIONMAP) && defined(USESPHERICALINVERTEX)
869
- varying vec3 vEnvironmentIrradiance;
870
1008
  #endif
871
1009
  #endif
872
- #if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES)
873
- varying vec4 vColor;
1010
+ `;o.ShaderStore.IncludesShadersStore[t]||(o.ShaderStore.IncludesShadersStore[t]=i),e.s(["pbrFragmentReflectionDeclaration",0,{name:t,shader:i}],22577);let r="pbrIBLFunctions",a=`#if defined(REFLECTION) || defined(SS_REFRACTION)
1011
+ float getLodFromAlphaG(float cubeMapDimensionPixels,float microsurfaceAverageSlope) {float microsurfaceAverageSlopeTexels=cubeMapDimensionPixels*microsurfaceAverageSlope;float lod=log2(microsurfaceAverageSlopeTexels);return lod;}
1012
+ float getLinearLodFromRoughness(float cubeMapDimensionPixels,float roughness) {float lod=log2(cubeMapDimensionPixels)*roughness;return lod;}
874
1013
  #endif
875
- #if defined(CLUSTLIGHT_BATCH) && CLUSTLIGHT_BATCH>0
876
- varying float vViewDepth;
1014
+ #if defined(ENVIRONMENTBRDF) && defined(RADIANCEOCCLUSION)
1015
+ float environmentRadianceOcclusion(float ambientOcclusion,float NdotVUnclamped) {float temp=NdotVUnclamped+ambientOcclusion;return saturate(square(temp)-1.0+ambientOcclusion);}
877
1016
  #endif
878
- `;o.ShaderStore.IncludesShadersStore[t]||(o.ShaderStore.IncludesShadersStore[t]=i),e.s(["pbrFragmentExtraDeclaration",0,{name:t,shader:i}],91138);let r="subSurfaceScatteringFunctions",a=`bool testLightingForSSS(float diffusionProfile)
879
- {return diffusionProfile<1.;}`;o.ShaderStore.IncludesShadersStore[r]||(o.ShaderStore.IncludesShadersStore[r]=a),e.s(["subSurfaceScatteringFunctions",0,{name:r,shader:a}],79587);let n="importanceSampling",l=`vec3 hemisphereCosSample(vec2 u) {float phi=2.*PI*u.x;float cosTheta2=1.-u.y;float cosTheta=sqrt(cosTheta2);float sinTheta=sqrt(1.-cosTheta2);return vec3(sinTheta*cos(phi),sinTheta*sin(phi),cosTheta);}
880
- vec3 hemisphereImportanceSampleDggx(vec2 u,float a) {float phi=2.*PI*u.x;float cosTheta2=(1.-u.y)/(1.+(a+1.)*((a-1.)*u.y));float cosTheta=sqrt(cosTheta2);float sinTheta=sqrt(1.-cosTheta2);return vec3(sinTheta*cos(phi),sinTheta*sin(phi),cosTheta);}
881
- vec3 hemisphereImportanceSampleDggxAnisotropic(vec2 Xi,float alphaTangent,float alphaBitangent)
882
- {alphaTangent=max(alphaTangent,0.0001);alphaBitangent=max(alphaBitangent,0.0001);float phi=atan(alphaBitangent/alphaTangent*tan(2.0*3.14159265*Xi.x));if (Xi.x>0.5) phi+=3.14159265;
883
- float cosPhi=cos(phi);float sinPhi=sin(phi);float alpha2=(cosPhi*cosPhi)/(alphaTangent*alphaTangent) +
884
- (sinPhi*sinPhi)/(alphaBitangent*alphaBitangent);float tanTheta2=Xi.y/(1.0-Xi.y)/alpha2;float cosTheta=1.0/sqrt(1.0+tanTheta2);float sinTheta=sqrt(max(0.0,1.0-cosTheta*cosTheta));return vec3(sinTheta*cosPhi,sinTheta*sinPhi,cosTheta);}
885
- vec3 hemisphereImportanceSampleDCharlie(vec2 u,float a) {
886
- float phi=2.*PI*u.x;float sinTheta=pow(u.y,a/(2.*a+1.));float cosTheta=sqrt(1.-sinTheta*sinTheta);return vec3(sinTheta*cos(phi),sinTheta*sin(phi),cosTheta);}`;o.ShaderStore.IncludesShadersStore[n]||(o.ShaderStore.IncludesShadersStore[n]=l),e.s(["importanceSampling",0,{name:n,shader:l}],43899);let c="pbrHelperFunctions",f=`#define MINIMUMVARIANCE 0.0005
887
- #ifndef TEXRD_DEFINED
888
- #define TEXRD(s,uv) texture2D(s,uv)
889
- #define TEXRD_DEFINED
1017
+ #if defined(ENVIRONMENTBRDF) && defined(HORIZONOCCLUSION)
1018
+ float environmentHorizonOcclusion(vec3 view,vec3 normal,vec3 geometricNormal) {vec3 reflection=reflect(view,normal);float temp=saturate(1.0+1.1*dot(reflection,geometricNormal));return square(temp);}
890
1019
  #endif
891
- float convertRoughnessToAverageSlope(float roughness)
892
- {return square(roughness)+MINIMUMVARIANCE;}
893
- float fresnelGrazingReflectance(float reflectance0) {float reflectance90=saturate(reflectance0*25.0);return reflectance90;}
894
- vec2 getAARoughnessFactors(vec3 normalVector) {
895
- #ifdef SPECULARAA
896
- vec3 nDfdx=dFdx(normalVector.xyz);vec3 nDfdy=dFdy(normalVector.xyz);float slopeSquare=max(dot(nDfdx,nDfdx),dot(nDfdy,nDfdy));float geometricRoughnessFactor=pow(saturate(slopeSquare),0.333);float geometricAlphaGFactor=sqrt(slopeSquare);geometricAlphaGFactor*=0.75;return vec2(geometricRoughnessFactor,geometricAlphaGFactor);
897
- #else
898
- return vec2(0.);
1020
+ #if defined(LODINREFLECTIONALPHA) || defined(SS_LODINREFRACTIONALPHA)
1021
+ #define UNPACK_LOD(x) (1.0-x)*255.0
1022
+ float getLodFromAlphaG(float cubeMapDimensionPixels,float alphaG,float NdotV) {float microsurfaceAverageSlope=alphaG;microsurfaceAverageSlope*=sqrt(abs(NdotV));return getLodFromAlphaG(cubeMapDimensionPixels,microsurfaceAverageSlope);}
899
1023
  #endif
900
- }
901
- #ifdef ANISOTROPIC
902
- #ifdef ANISOTROPIC_LEGACY
903
- vec2 getAnisotropicRoughness(float alphaG,float anisotropy) {float alphaT=max(alphaG*(1.0+anisotropy),MINIMUMVARIANCE);float alphaB=max(alphaG*(1.0-anisotropy),MINIMUMVARIANCE);return vec2(alphaT,alphaB);}
904
- vec3 getAnisotropicBentNormals(const vec3 T,const vec3 B,const vec3 N,const vec3 V,float anisotropy,float roughness) {vec3 anisotropicFrameDirection;if (anisotropy>=0.0) {anisotropicFrameDirection=B;} else {anisotropicFrameDirection=T;}
905
- vec3 anisotropicFrameTangent=cross(normalize(anisotropicFrameDirection),V);vec3 anisotropicFrameNormal=cross(anisotropicFrameTangent,anisotropicFrameDirection);vec3 anisotropicNormal=normalize(mix(N,anisotropicFrameNormal,abs(anisotropy)));return anisotropicNormal;}
906
- #elif ANISOTROPIC_OPENPBR
907
- vec2 getAnisotropicRoughness(float alphaG,float anisotropy) {float alphaT=max(alphaG*alphaG*sqrt(2.0/(1.0+(1.0-anisotropy)*(1.0-anisotropy))),MINIMUMVARIANCE);float alphaB=max(alphaT*(1.0-anisotropy),MINIMUMVARIANCE);return vec2(alphaT,alphaB);}
1024
+ `;o.ShaderStore.IncludesShadersStore[r]||(o.ShaderStore.IncludesShadersStore[r]=a),e.s(["pbrIBLFunctions",0,{name:r,shader:a}],43894)},28758,51215,e=>{"use strict";var o=e.i(2342);let t="samplerFragmentDeclaration",i=`#ifdef _DEFINENAME_
1025
+ #if _DEFINENAME_DIRECTUV==1
1026
+ #define v_VARYINGNAME_UV vMainUV1
1027
+ #elif _DEFINENAME_DIRECTUV==2
1028
+ #define v_VARYINGNAME_UV vMainUV2
1029
+ #elif _DEFINENAME_DIRECTUV==3
1030
+ #define v_VARYINGNAME_UV vMainUV3
1031
+ #elif _DEFINENAME_DIRECTUV==4
1032
+ #define v_VARYINGNAME_UV vMainUV4
1033
+ #elif _DEFINENAME_DIRECTUV==5
1034
+ #define v_VARYINGNAME_UV vMainUV5
1035
+ #elif _DEFINENAME_DIRECTUV==6
1036
+ #define v_VARYINGNAME_UV vMainUV6
908
1037
  #else
909
- vec2 getAnisotropicRoughness(float alphaG,float anisotropy) {float alphaT=max(mix(alphaG,1.0,anisotropy*anisotropy),MINIMUMVARIANCE);float alphaB=max(alphaG,MINIMUMVARIANCE);return vec2(alphaT,alphaB);}
910
- vec3 getAnisotropicBentNormals(const vec3 T,const vec3 B,const vec3 N,const vec3 V,float anisotropy,float roughness) {vec3 bentNormal=cross(B,V);bentNormal=normalize(cross(bentNormal,B));float a=square(square(1.0-anisotropy*(1.0-roughness)));bentNormal=normalize(mix(bentNormal,N,a));return bentNormal;}
911
- #endif
1038
+ varying vec2 v_VARYINGNAME_UV;
912
1039
  #endif
913
- #if defined(CLEARCOAT) || defined(SS_REFRACTION)
914
- vec3 cocaLambert(vec3 alpha,float distance) {return exp(-alpha*distance);}
915
- vec3 cocaLambert(float NdotVRefract,float NdotLRefract,vec3 alpha,float thickness) {return cocaLambert(alpha,(thickness*((NdotLRefract+NdotVRefract)/(NdotLRefract*NdotVRefract))));}
916
- vec3 computeColorAtDistanceInMedia(vec3 color,float distance) {return -log(color)/distance;}
917
- vec3 computeClearCoatAbsorption(float NdotVRefract,float NdotLRefract,vec3 clearCoatColor,float clearCoatThickness,float clearCoatIntensity) {vec3 clearCoatAbsorption=mix(vec3(1.0),
918
- cocaLambert(NdotVRefract,NdotLRefract,clearCoatColor,clearCoatThickness),
919
- clearCoatIntensity);return clearCoatAbsorption;}
1040
+ uniform sampler2D _SAMPLERNAME_Sampler;
920
1041
  #endif
921
- #ifdef MICROSURFACEAUTOMATIC
922
- float computeDefaultMicroSurface(float microSurface,vec3 reflectivityColor)
923
- {const float kReflectivityNoAlphaWorkflow_SmoothnessMax=0.95;float reflectivityLuminance=getLuminance(reflectivityColor);float reflectivityLuma=sqrt(reflectivityLuminance);microSurface=reflectivityLuma*kReflectivityNoAlphaWorkflow_SmoothnessMax;return microSurface;}
924
- #endif
925
- `;o.ShaderStore.IncludesShadersStore[c]||(o.ShaderStore.IncludesShadersStore[c]=f),e.s(["pbrHelperFunctions",0,{name:c,shader:f}],16687),e.i(56090);let s="pbrDirectLightingSetupFunctions",d=`struct preLightingInfo
926
- {vec3 lightOffset;float lightDistanceSquared;float lightDistance;float attenuation;vec3 L;vec3 H;float NdotV;float NdotLUnclamped;float NdotL;float VdotH;float LdotV;float roughness;float diffuseRoughness;vec3 surfaceAlbedo;
927
- #ifdef IRIDESCENCE
928
- float iridescenceIntensity;
1042
+ `;o.ShaderStore.IncludesShadersStore[t]||(o.ShaderStore.IncludesShadersStore[t]=i),e.s(["samplerFragmentDeclaration",0,{name:t,shader:i}],28758);let r="reflectionFunction",a=`vec3 computeFixedEquirectangularCoords(vec4 worldPos,vec3 worldNormal,vec3 direction)
1043
+ {float lon=atan(direction.z,direction.x);float lat=acos(direction.y);vec2 sphereCoords=vec2(lon,lat)*RECIPROCAL_PI2*2.0;float s=sphereCoords.x*0.5+0.5;float t=sphereCoords.y;return vec3(s,t,0); }
1044
+ vec3 computeMirroredFixedEquirectangularCoords(vec4 worldPos,vec3 worldNormal,vec3 direction)
1045
+ {float lon=atan(direction.z,direction.x);float lat=acos(direction.y);vec2 sphereCoords=vec2(lon,lat)*RECIPROCAL_PI2*2.0;float s=sphereCoords.x*0.5+0.5;float t=sphereCoords.y;return vec3(1.0-s,t,0); }
1046
+ vec3 computeEquirectangularCoords(vec4 worldPos,vec3 worldNormal,vec3 eyePosition,mat4 reflectionMatrix)
1047
+ {vec3 cameraToVertex=normalize(worldPos.xyz-eyePosition);vec3 r=normalize(reflect(cameraToVertex,worldNormal));r=vec3(reflectionMatrix*vec4(r,0));float lon=atan(r.z,r.x);float lat=acos(r.y);vec2 sphereCoords=vec2(lon,lat)*RECIPROCAL_PI2*2.0;float s=sphereCoords.x*0.5+0.5;float t=sphereCoords.y;return vec3(s,t,0);}
1048
+ vec3 computeSphericalCoords(vec4 worldPos,vec3 worldNormal,mat4 view,mat4 reflectionMatrix)
1049
+ {vec3 viewDir=normalize(vec3(view*worldPos));vec3 viewNormal=normalize(vec3(view*vec4(worldNormal,0.0)));vec3 r=reflect(viewDir,viewNormal);r=vec3(reflectionMatrix*vec4(r,0));r.z=r.z-1.0;float m=2.0*length(r);return vec3(r.x/m+0.5,1.0-r.y/m-0.5,0);}
1050
+ vec3 computePlanarCoords(vec4 worldPos,vec3 worldNormal,vec3 eyePosition,mat4 reflectionMatrix)
1051
+ {vec3 viewDir=worldPos.xyz-eyePosition;vec3 coords=normalize(reflect(viewDir,worldNormal));return vec3(reflectionMatrix*vec4(coords,1));}
1052
+ vec3 computeCubicCoords(vec4 worldPos,vec3 worldNormal,vec3 eyePosition,mat4 reflectionMatrix)
1053
+ {vec3 viewDir=normalize(worldPos.xyz-eyePosition);vec3 coords=reflect(viewDir,worldNormal);coords=vec3(reflectionMatrix*vec4(coords,0));
1054
+ #ifdef INVERTCUBICMAP
1055
+ coords.y*=-1.0;
929
1056
  #endif
930
- #if defined(AREALIGHTUSED) && defined(AREALIGHTSUPPORTED)
931
- vec3 areaLightDiffuse;
932
- #ifdef SPECULARTERM
933
- vec3 areaLightSpecular;vec4 areaLightFresnel;
1057
+ return coords;}
1058
+ vec3 computeCubicLocalCoords(vec4 worldPos,vec3 worldNormal,vec3 eyePosition,mat4 reflectionMatrix,vec3 reflectionSize,vec3 reflectionPosition)
1059
+ {vec3 viewDir=normalize(worldPos.xyz-eyePosition);vec3 coords=reflect(viewDir,worldNormal);coords=parallaxCorrectNormal(worldPos.xyz,coords,reflectionSize,reflectionPosition);coords=vec3(reflectionMatrix*vec4(coords,0));
1060
+ #ifdef INVERTCUBICMAP
1061
+ coords.y*=-1.0;
934
1062
  #endif
1063
+ return coords;}
1064
+ vec3 computeProjectionCoords(vec4 worldPos,mat4 view,mat4 reflectionMatrix)
1065
+ {return vec3(reflectionMatrix*(view*worldPos));}
1066
+ vec3 computeSkyBoxCoords(vec3 positionW,mat4 reflectionMatrix)
1067
+ {return vec3(reflectionMatrix*vec4(positionW,1.));}
1068
+ #ifdef REFLECTION
1069
+ vec3 computeReflectionCoords(vec4 worldPos,vec3 worldNormal)
1070
+ {
1071
+ #ifdef REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED
1072
+ vec3 direction=normalize(vDirectionW);return computeMirroredFixedEquirectangularCoords(worldPos,worldNormal,direction);
935
1073
  #endif
936
- };preLightingInfo computePointAndSpotPreLightingInfo(vec4 lightData,vec3 V,vec3 N,vec3 posW) {preLightingInfo result;result.lightOffset=lightData.xyz-posW;result.lightDistanceSquared=dot(result.lightOffset,result.lightOffset);result.lightDistance=sqrt(result.lightDistanceSquared);result.L=normalize(result.lightOffset);result.H=normalize(V+result.L);result.VdotH=saturate(dot(V,result.H));result.NdotLUnclamped=dot(N,result.L);result.NdotL=saturateEps(result.NdotLUnclamped);result.LdotV=0.;result.roughness=0.;result.diffuseRoughness=0.;result.surfaceAlbedo=vec3(0.);return result;}
937
- preLightingInfo computeDirectionalPreLightingInfo(vec4 lightData,vec3 V,vec3 N) {preLightingInfo result;result.lightDistance=length(-lightData.xyz);result.L=normalize(-lightData.xyz);result.H=normalize(V+result.L);result.VdotH=saturate(dot(V,result.H));result.NdotLUnclamped=dot(N,result.L);result.NdotL=saturateEps(result.NdotLUnclamped);result.LdotV=dot(result.L,V);result.roughness=0.;result.diffuseRoughness=0.;result.surfaceAlbedo=vec3(0.);return result;}
938
- preLightingInfo computeHemisphericPreLightingInfo(vec4 lightData,vec3 V,vec3 N) {preLightingInfo result;result.NdotL=dot(N,lightData.xyz)*0.5+0.5;result.NdotL=saturateEps(result.NdotL);result.NdotLUnclamped=result.NdotL;
939
- #ifdef SPECULARTERM
940
- result.L=normalize(lightData.xyz);result.H=normalize(V+result.L);result.VdotH=saturate(dot(V,result.H));
1074
+ #ifdef REFLECTIONMAP_EQUIRECTANGULAR_FIXED
1075
+ vec3 direction=normalize(vDirectionW);return computeFixedEquirectangularCoords(worldPos,worldNormal,direction);
941
1076
  #endif
942
- result.LdotV=0.;result.roughness=0.;result.diffuseRoughness=0.;result.surfaceAlbedo=vec3(0.);return result;}
943
- #if defined(AREALIGHTUSED) && defined(AREALIGHTSUPPORTED)
944
- #include<ltcHelperFunctions>
945
- uniform sampler2D areaLightsLTC1Sampler;uniform sampler2D areaLightsLTC2Sampler;preLightingInfo computeAreaPreLightingInfo(sampler2D ltc1,sampler2D ltc2,vec3 viewDirectionW,vec3 vNormal,vec3 vPosition,vec4 lightData,vec3 halfWidth,vec3 halfHeight,float roughness )
946
- {preLightingInfo result;result.lightOffset=lightData.xyz-vPosition;result.lightDistanceSquared=dot(result.lightOffset,result.lightOffset);result.lightDistance=sqrt(result.lightDistanceSquared);areaLightData data=computeAreaLightSpecularDiffuseFresnel(ltc1,ltc2,viewDirectionW,vNormal,vPosition,lightData.xyz,halfWidth,halfHeight,roughness);
947
- #ifdef SPECULARTERM
948
- result.areaLightFresnel=data.Fresnel;result.areaLightSpecular=data.Specular;
1077
+ #ifdef REFLECTIONMAP_EQUIRECTANGULAR
1078
+ return computeEquirectangularCoords(worldPos,worldNormal,vEyePosition.xyz,reflectionMatrix);
949
1079
  #endif
950
- result.areaLightDiffuse=data.Diffuse;result.LdotV=0.;result.roughness=0.;result.diffuseRoughness=0.;result.surfaceAlbedo=vec3(0.);return result;}
951
- preLightingInfo computeAreaPreLightingInfoWithTexture(sampler2D ltc1,sampler2D ltc2,sampler2D emissionTexture,vec3 viewDirectionW,vec3 vNormal,vec3 vPosition,vec4 lightData,vec3 halfWidth,vec3 halfHeight,float roughness )
952
- {preLightingInfo result;result.lightOffset=lightData.xyz-vPosition;result.lightDistanceSquared=dot(result.lightOffset,result.lightOffset);result.lightDistance=sqrt(result.lightDistanceSquared);areaLightData data=computeAreaLightSpecularDiffuseFresnelWithEmission(ltc1,ltc2,emissionTexture,viewDirectionW,vNormal,vPosition,lightData.xyz,halfWidth,halfHeight,roughness);
953
- #ifdef SPECULARTERM
954
- result.areaLightFresnel=data.Fresnel;result.areaLightSpecular=data.Specular;
1080
+ #ifdef REFLECTIONMAP_SPHERICAL
1081
+ return computeSphericalCoords(worldPos,worldNormal,view,reflectionMatrix);
955
1082
  #endif
956
- result.areaLightDiffuse=data.Diffuse;result.LdotV=0.;result.roughness=0.;result.diffuseRoughness=0.;result.surfaceAlbedo=vec3(0.);return result;}
1083
+ #ifdef REFLECTIONMAP_PLANAR
1084
+ return computePlanarCoords(worldPos,worldNormal,vEyePosition.xyz,reflectionMatrix);
957
1085
  #endif
958
- `;o.ShaderStore.IncludesShadersStore[s]||(o.ShaderStore.IncludesShadersStore[s]=d),e.s(["pbrDirectLightingSetupFunctions",0,{name:s,shader:d}],79671);let u="pbrDirectLightingFalloffFunctions",v=`float computeDistanceLightFalloff_Standard(vec3 lightOffset,float range)
959
- {return max(0.,1.0-length(lightOffset)/range);}
960
- float computeDistanceLightFalloff_Physical(float lightDistanceSquared)
961
- {return 1.0/maxEps(lightDistanceSquared);}
962
- float computeDistanceLightFalloff_GLTF(float lightDistanceSquared,float inverseSquaredRange)
963
- {float lightDistanceFalloff=1.0/maxEps(lightDistanceSquared);float factor=lightDistanceSquared*inverseSquaredRange;float attenuation=saturate(1.0-factor*factor);attenuation*=attenuation;lightDistanceFalloff*=attenuation;return lightDistanceFalloff;}
964
- float computeDistanceLightFalloff(vec3 lightOffset,float lightDistanceSquared,float range,float inverseSquaredRange)
965
- {
966
- #ifdef USEPHYSICALLIGHTFALLOFF
967
- return computeDistanceLightFalloff_Physical(lightDistanceSquared);
968
- #elif defined(USEGLTFLIGHTFALLOFF)
969
- return computeDistanceLightFalloff_GLTF(lightDistanceSquared,inverseSquaredRange);
1086
+ #ifdef REFLECTIONMAP_CUBIC
1087
+ #ifdef USE_LOCAL_REFLECTIONMAP_CUBIC
1088
+ return computeCubicLocalCoords(worldPos,worldNormal,vEyePosition.xyz,reflectionMatrix,vReflectionSize,vReflectionPosition);
970
1089
  #else
971
- return computeDistanceLightFalloff_Standard(lightOffset,range);
1090
+ return computeCubicCoords(worldPos,worldNormal,vEyePosition.xyz,reflectionMatrix);
1091
+ #endif
1092
+ #endif
1093
+ #ifdef REFLECTIONMAP_PROJECTION
1094
+ return computeProjectionCoords(worldPos,view,reflectionMatrix);
1095
+ #endif
1096
+ #ifdef REFLECTIONMAP_SKYBOX
1097
+ return computeSkyBoxCoords(vPositionUVW,reflectionMatrix);
1098
+ #endif
1099
+ #ifdef REFLECTIONMAP_EXPLICIT
1100
+ return vec3(0,0,0);
972
1101
  #endif
973
1102
  }
974
- float computeDirectionalLightFalloff_Standard(vec3 lightDirection,vec3 directionToLightCenterW,float cosHalfAngle,float exponent)
975
- {float falloff=0.0;float cosAngle=maxEps(dot(-lightDirection,directionToLightCenterW));if (cosAngle>=cosHalfAngle)
976
- {falloff=max(0.,pow(cosAngle,exponent));}
977
- return falloff;}
978
- float computeDirectionalLightFalloff_IES(vec3 lightDirection,vec3 directionToLightCenterW,sampler2D iesLightSampler)
979
- {float cosAngle=dot(-lightDirection,directionToLightCenterW);float angle=acos(cosAngle)/PI;return texture2D(iesLightSampler,vec2(angle,0.)).r;}
980
- float computeDirectionalLightFalloff_Physical(vec3 lightDirection,vec3 directionToLightCenterW,float cosHalfAngle)
981
- {const float kMinusLog2ConeAngleIntensityRatio=6.64385618977;
982
- float concentrationKappa=kMinusLog2ConeAngleIntensityRatio/(1.0-cosHalfAngle);vec4 lightDirectionSpreadSG=vec4(-lightDirection*concentrationKappa,-concentrationKappa);float falloff=exp2(dot(vec4(directionToLightCenterW,1.0),lightDirectionSpreadSG));return falloff;}
983
- float computeDirectionalLightFalloff_GLTF(vec3 lightDirection,vec3 directionToLightCenterW,float lightAngleScale,float lightAngleOffset)
984
- {float cd=dot(-lightDirection,directionToLightCenterW);float falloff=saturate(cd*lightAngleScale+lightAngleOffset);falloff*=falloff;return falloff;}
985
- float computeDirectionalLightFalloff(vec3 lightDirection,vec3 directionToLightCenterW,float cosHalfAngle,float exponent,float lightAngleScale,float lightAngleOffset)
986
- {
987
- #ifdef USEPHYSICALLIGHTFALLOFF
988
- return computeDirectionalLightFalloff_Physical(lightDirection,directionToLightCenterW,cosHalfAngle);
989
- #elif defined(USEGLTFLIGHTFALLOFF)
990
- return computeDirectionalLightFalloff_GLTF(lightDirection,directionToLightCenterW,lightAngleScale,lightAngleOffset);
1103
+ #endif
1104
+ `;o.ShaderStore.IncludesShadersStore[r]||(o.ShaderStore.IncludesShadersStore[r]=a),e.s(["reflectionFunction",0,{name:r,shader:a}],51215)},19491,20439,62149,34630,e=>{"use strict";var o=e.i(2342);let t="sceneFragmentDeclaration",i=`uniform mat4 viewProjection;
1105
+ #ifdef MULTIVIEW
1106
+ uniform mat4 viewProjectionR;
1107
+ #endif
1108
+ uniform mat4 view;uniform mat4 projection;uniform vec4 vEyePosition;uniform mat4 inverseProjection;
1109
+ `;o.ShaderStore.IncludesShadersStore[t]||(o.ShaderStore.IncludesShadersStore[t]=i),e.s(["sceneFragmentDeclaration",0,{name:t,shader:i}],19491);let r="openpbrDielectricReflectance",a=`struct ReflectanceParams
1110
+ {float F0;float F90;vec3 coloredF0;vec3 coloredF90;};
1111
+ #define pbr_inline
1112
+ ReflectanceParams dielectricReflectance(
1113
+ in float insideIOR,in float outsideIOR,in vec3 specularColor,in float specularWeight
1114
+ )
1115
+ {ReflectanceParams outParams;float dielectricF0=pow((insideIOR-outsideIOR)/(insideIOR+outsideIOR),2.0);float f90Scale=clamp(2.0*abs(insideIOR-outsideIOR),0.0,1.0);
1116
+ #if (DIELECTRIC_SPECULAR_MODEL==DIELECTRIC_SPECULAR_MODEL_OPENPBR)
1117
+ vec3 dielectricColorF90=specularColor.rgb*vec3(f90Scale);
991
1118
  #else
992
- return computeDirectionalLightFalloff_Standard(lightDirection,directionToLightCenterW,cosHalfAngle,exponent);
1119
+ vec3 dielectricColorF90=vec3(f90Scale);
993
1120
  #endif
994
- }`;o.ShaderStore.IncludesShadersStore[u]||(o.ShaderStore.IncludesShadersStore[u]=v),e.s(["pbrDirectLightingFalloffFunctions",0,{name:u,shader:v}],47939);let m="hdrFilteringFunctions",g=`#if NUM_SAMPLES
995
- #if NUM_SAMPLES>0
996
- #if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)
997
- float radicalInverse_VdC(uint bits)
998
- {bits=(bits<<16u) | (bits>>16u);bits=((bits & 0x55555555u)<<1u) | ((bits & 0xAAAAAAAAu)>>1u);bits=((bits & 0x33333333u)<<2u) | ((bits & 0xCCCCCCCCu)>>2u);bits=((bits & 0x0F0F0F0Fu)<<4u) | ((bits & 0xF0F0F0F0u)>>4u);bits=((bits & 0x00FF00FFu)<<8u) | ((bits & 0xFF00FF00u)>>8u);return float(bits)*2.3283064365386963e-10; }
999
- vec2 hammersley(uint i,uint N)
1000
- {return vec2(float(i)/float(N),radicalInverse_VdC(i));}
1121
+ #if DIELECTRIC_SPECULAR_MODEL==DIELECTRIC_SPECULAR_MODEL_GLTF
1122
+ float maxF0=max(specularColor.r,max(specularColor.g,specularColor.b));outParams.F0=dielectricF0*specularWeight*maxF0;
1001
1123
  #else
1002
- float vanDerCorpus(int n,int base)
1003
- {float invBase=1.0/float(base);float denom =1.0;float result =0.0;for(int i=0; i<32; ++i)
1004
- {if(n>0)
1005
- {denom =mod(float(n),2.0);result+=denom*invBase;invBase=invBase/2.0;n =int(float(n)/2.0);}}
1006
- return result;}
1007
- vec2 hammersley(int i,int N)
1008
- {return vec2(float(i)/float(N),vanDerCorpus(i,2));}
1124
+ outParams.F0=dielectricF0*specularWeight;
1009
1125
  #endif
1010
- float log4(float x) {return log2(x)/2.;}
1011
- vec3 uv_to_normal(vec2 uv) {vec3 N;vec2 uvRange=uv;float theta=uvRange.x*2.*PI;float phi=uvRange.y*PI;float sinPhi=sin(phi);N.x=cos(theta)*sinPhi;N.z=sin(theta)*sinPhi;N.y=cos(phi);return N;}
1012
- const float NUM_SAMPLES_FLOAT=float(NUM_SAMPLES);const float NUM_SAMPLES_FLOAT_INVERSED=1./NUM_SAMPLES_FLOAT;const float K=4.;
1013
- #define inline
1014
- vec3 irradiance(
1015
- #ifdef CUSTOM_IRRADIANCE_FILTERING_INPUT
1016
- CUSTOM_IRRADIANCE_FILTERING_INPUT
1126
+ outParams.F90=f90Scale*specularWeight;outParams.coloredF0=vec3(dielectricF0*specularWeight)*specularColor.rgb;outParams.coloredF90=dielectricColorF90*vec3(specularWeight);return outParams;}
1127
+ `;o.ShaderStore.IncludesShadersStore[r]||(o.ShaderStore.IncludesShadersStore[r]=a),e.s(["openpbrDielectricReflectance",0,{name:r,shader:a}],20439);let n="openpbrGeometryInfo",l=`struct geometryInfoOutParams
1128
+ {float NdotV;float NdotVUnclamped;vec3 environmentBrdf;float horizonOcclusion;};struct geometryInfoAnisoOutParams
1129
+ {float NdotV;float NdotVUnclamped;vec3 environmentBrdf;float horizonOcclusion;float anisotropy;vec3 anisotropicTangent;vec3 anisotropicBitangent;mat3 TBN;};
1130
+ #define pbr_inline
1131
+ geometryInfoOutParams geometryInfo(
1132
+ in vec3 normalW,in vec3 viewDirectionW,in float roughness,in vec3 geometricNormalW
1133
+ )
1134
+ {geometryInfoOutParams outParams;outParams.NdotVUnclamped=dot(normalW,viewDirectionW);outParams.NdotV=absEps(outParams.NdotVUnclamped);
1135
+ #if defined(ENVIRONMENTBRDF)
1136
+ outParams.environmentBrdf=getBRDFLookup(outParams.NdotV,roughness);
1017
1137
  #else
1018
- samplerCube inputTexture,
1138
+ outParams.environmentBrdf=vec3(0.0);
1019
1139
  #endif
1020
- vec3 inputN,vec2 filteringInfo,
1021
- float diffuseRoughness,
1022
- vec3 surfaceAlbedo,
1023
- vec3 inputV
1024
- #if IBL_CDF_FILTERING
1025
- ,sampler2D icdfSampler
1140
+ outParams.horizonOcclusion=1.0;
1141
+ #if defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX)
1142
+ #ifdef HORIZONOCCLUSION
1143
+ #if defined(GEOMETRY_NORMAL) || defined(GEOMETRY_COAT_NORMAL)
1144
+ #ifdef REFLECTIONMAP_3D
1145
+ outParams.horizonOcclusion=environmentHorizonOcclusion(-viewDirectionW,normalW,geometricNormalW);
1026
1146
  #endif
1027
- )
1028
- {vec3 n=normalize(inputN);vec3 result=vec3(0.);
1029
- #ifndef IBL_CDF_FILTERING
1030
- vec3 tangent=abs(n.z)<0.999 ? vec3(0.,0.,1.) : vec3(1.,0.,0.);tangent=normalize(cross(tangent,n));vec3 bitangent=cross(n,tangent);mat3 tbn=mat3(tangent,bitangent,n);mat3 tbnInverse=mat3(tangent.x,bitangent.x,n.x,tangent.y,bitangent.y,n.y,tangent.z,bitangent.z,n.z);
1031
1147
  #endif
1032
- float maxLevel=filteringInfo.y;float dim0=filteringInfo.x;float omegaP=(4.*PI)/(6.*dim0*dim0);vec3 clampedAlbedo=clamp(surfaceAlbedo,vec3(0.1),vec3(1.0));
1033
- #if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)
1034
- for(uint i=0u; i<NUM_SAMPLES; ++i)
1035
- #else
1036
- for(int i=0; i<NUM_SAMPLES; ++i)
1037
1148
  #endif
1038
- {vec2 Xi=hammersley(i,NUM_SAMPLES);
1039
- #if IBL_CDF_FILTERING
1040
- vec2 T;T.x=texture2D(icdfSampler,vec2(Xi.x,0.)).x;T.y=texture2D(icdfSampler,vec2(T.x,Xi.y)).y;vec3 Ls=uv_to_normal(vec2(1.0-fract(T.x+0.25),T.y));float NoL=dot(n,Ls);float NoV=dot(n,inputV);
1041
- #if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON
1042
- float LoV=dot (Ls,inputV);
1043
- #elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_BURLEY
1044
- vec3 H=(inputV+Ls)*0.5;float VoH=dot(inputV,H);
1045
1149
  #endif
1046
- #else
1047
- vec3 Ls=hemisphereCosSample(Xi);Ls=normalize(Ls);float NoL=Ls.z;
1048
- vec3 V=tbnInverse*inputV;float NoV=V.z;
1049
- #if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON
1050
- float LoV=dot (Ls,V);
1051
- #elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_BURLEY
1052
- vec3 H=(V+Ls)*0.5;float VoH=dot(V,H);
1150
+ return outParams;}
1151
+ #define pbr_inline
1152
+ geometryInfoAnisoOutParams geometryInfoAniso(
1153
+ in vec3 normalW,in vec3 viewDirectionW,in float roughness,in vec3 geometricNormalW
1154
+ ,in vec3 vAnisotropy,in mat3 TBN
1155
+ )
1156
+ {geometryInfoOutParams geoInfo=geometryInfo(normalW,viewDirectionW,roughness,geometricNormalW);geometryInfoAnisoOutParams outParams;outParams.NdotV=geoInfo.NdotV;outParams.NdotVUnclamped=geoInfo.NdotVUnclamped;outParams.environmentBrdf=geoInfo.environmentBrdf;outParams.horizonOcclusion=geoInfo.horizonOcclusion;outParams.anisotropy=vAnisotropy.b;vec3 anisotropyDirection=vec3(vAnisotropy.xy,0.);mat3 anisoTBN=mat3(normalize(TBN[0]),normalize(TBN[1]),normalize(TBN[2]));outParams.anisotropicTangent=normalize(anisoTBN*anisotropyDirection);outParams.anisotropicBitangent=normalize(cross(anisoTBN[2],outParams.anisotropicTangent));outParams.TBN=TBN;return outParams;}`;o.ShaderStore.IncludesShadersStore[n]||(o.ShaderStore.IncludesShadersStore[n]=l),e.s(["openpbrGeometryInfo",0,{name:n,shader:l}],62149);let c="openpbrIblFunctions",f=`#ifdef REFLECTION
1157
+ vec3 sampleIrradiance(
1158
+ in vec3 surfaceNormal
1159
+ #if defined(NORMAL) && defined(USESPHERICALINVERTEX)
1160
+ ,in vec3 vEnvironmentIrradianceSH
1053
1161
  #endif
1162
+ #if (defined(USESPHERICALFROMREFLECTIONMAP) && (!defined(NORMAL) || !defined(USESPHERICALINVERTEX))) || (defined(USEIRRADIANCEMAP) && defined(REFLECTIONMAP_3D))
1163
+ ,in mat4 iblMatrix
1054
1164
  #endif
1055
- if (NoL>0.) {
1056
- #if IBL_CDF_FILTERING
1057
- float pdf=texture2D(icdfSampler,T).z;vec3 c=textureCubeLodEXT(inputTexture,Ls,0.).rgb;
1058
- #else
1059
- float pdf_inversed=PI/NoL;float omegaS=NUM_SAMPLES_FLOAT_INVERSED*pdf_inversed;float l=log4(omegaS)-log4(omegaP)+log4(K);float mipLevel=clamp(l,0.,maxLevel);
1060
- #ifdef CUSTOM_IRRADIANCE_FILTERING_FUNCTION
1061
- CUSTOM_IRRADIANCE_FILTERING_FUNCTION
1165
+ #ifdef USEIRRADIANCEMAP
1166
+ #ifdef REFLECTIONMAP_3D
1167
+ ,in samplerCube irradianceSampler
1062
1168
  #else
1063
- vec3 c=textureCubeLodEXT(inputTexture,tbn*Ls,mipLevel).rgb;
1169
+ ,in sampler2D irradianceSampler
1064
1170
  #endif
1171
+ #ifdef USE_IRRADIANCE_DOMINANT_DIRECTION
1172
+ ,in vec3 reflectionDominantDirection
1065
1173
  #endif
1066
- #if GAMMA_INPUT
1067
- c=toLinearSpace(c);
1068
1174
  #endif
1069
- vec3 diffuseRoughnessTerm=vec3(1.0);
1070
- #if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON
1071
- diffuseRoughnessTerm=diffuseBRDF_EON(clampedAlbedo,diffuseRoughness,NoL,NoV,LoV)*PI;
1072
- #elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_BURLEY
1073
- diffuseRoughnessTerm=vec3(diffuseBRDF_Burley(NoL,NoV,VoH,diffuseRoughness)*PI);
1175
+ #ifdef REALTIME_FILTERING
1176
+ ,in vec2 vReflectionFilteringInfo
1177
+ #ifdef IBL_CDF_FILTERING
1178
+ ,in sampler2D icdfSampler
1074
1179
  #endif
1075
- #if IBL_CDF_FILTERING
1076
- vec3 light=pdf<1e-6 ? vec3(0.0) : vec3(1.0)/vec3(pdf)*c;result+=NoL*diffuseRoughnessTerm*light;
1077
- #else
1078
- result+=c*diffuseRoughnessTerm;
1079
1180
  #endif
1080
- }}
1081
- result=result*NUM_SAMPLES_FLOAT_INVERSED;
1082
- #if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON
1083
- result=result/clampedAlbedo;
1181
+ ,in vec2 vReflectionInfos
1182
+ ,in vec3 viewDirectionW
1183
+ ,in float diffuseRoughness
1184
+ ,in vec3 surfaceAlbedo
1185
+ ) {vec3 environmentIrradiance=vec3(0.,0.,0.);
1186
+ #if (defined(USESPHERICALFROMREFLECTIONMAP) && (!defined(NORMAL) || !defined(USESPHERICALINVERTEX))) || (defined(USEIRRADIANCEMAP) && defined(REFLECTIONMAP_3D))
1187
+ vec3 irradianceVector=(iblMatrix*vec4(surfaceNormal,0)).xyz;vec3 irradianceView=(iblMatrix*vec4(viewDirectionW,0)).xyz;
1188
+ #if !defined(USE_IRRADIANCE_DOMINANT_DIRECTION) && !defined(REALTIME_FILTERING)
1189
+ #if BASE_DIFFUSE_MODEL != BRDF_DIFFUSE_MODEL_LAMBERT && BASE_DIFFUSE_MODEL != BRDF_DIFFUSE_MODEL_LEGACY
1190
+ {float NdotV=max(dot(surfaceNormal,viewDirectionW),0.0);irradianceVector=mix(irradianceVector,irradianceView,(0.5*(1.0-NdotV))*diffuseRoughness);}
1084
1191
  #endif
1085
- return result;}
1086
- #define inline
1087
- vec3 radiance(float alphaG,samplerCube inputTexture,vec3 inputN,vec2 filteringInfo)
1088
- {vec3 n=normalize(inputN);vec3 c=textureCubeLodEXT(inputTexture,n,0.).rgb;
1089
- if (alphaG==0.) {
1090
- #if GAMMA_INPUT
1091
- c=toLinearSpace(c);
1092
1192
  #endif
1093
- return c;} else {vec3 result=vec3(0.);vec3 tangent=abs(n.z)<0.999 ? vec3(0.,0.,1.) : vec3(1.,0.,0.);tangent=normalize(cross(tangent,n));vec3 bitangent=cross(n,tangent);mat3 tbn=mat3(tangent,bitangent,n);float maxLevel=filteringInfo.y;float dim0=filteringInfo.x;float omegaP=(4.*PI)/(6.*dim0*dim0);float weight=0.;
1094
- #if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)
1095
- for(uint i=0u; i<NUM_SAMPLES; ++i)
1096
- #else
1097
- for(int i=0; i<NUM_SAMPLES; ++i)
1098
- #endif
1099
- {vec2 Xi=hammersley(i,NUM_SAMPLES);vec3 H=hemisphereImportanceSampleDggx(Xi,alphaG);float NoV=1.;float NoH=H.z;float NoH2=H.z*H.z;float NoL=2.*NoH2-1.;vec3 L=vec3(2.*NoH*H.x,2.*NoH*H.y,NoL);L=normalize(L);if (NoL>0.) {float pdf_inversed=4./normalDistributionFunction_TrowbridgeReitzGGX(NoH,alphaG);float omegaS=NUM_SAMPLES_FLOAT_INVERSED*pdf_inversed;float l=log4(omegaS)-log4(omegaP)+log4(K);float mipLevel=clamp(float(l),0.0,maxLevel);weight+=NoL;vec3 c=textureCubeLodEXT(inputTexture,tbn*L,mipLevel).rgb;
1100
- #if GAMMA_INPUT
1101
- c=toLinearSpace(c);
1102
- #endif
1103
- result+=c*NoL;}}
1104
- result=result/weight;return result;}}
1105
- #ifdef ANISOTROPIC
1106
- #define inline
1107
- vec3 radianceAnisotropic(
1108
- float alphaTangent,
1109
- float alphaBitangent,
1110
- samplerCube inputTexture,
1111
- vec3 inputView,
1112
- vec3 inputTangent,
1113
- vec3 inputBitangent,
1114
- vec3 inputNormal,
1115
- vec2 filteringInfo,
1116
- vec2 noiseInput,
1117
- bool isRefraction,
1118
- float ior
1119
- )
1120
- {vec3 V=inputView;vec3 N=inputNormal;vec3 T=inputTangent;vec3 B=inputBitangent;vec3 result=vec3(0.);float maxLevel=filteringInfo.y;float dim0=filteringInfo.x;float clampedAlphaT=max(alphaTangent,MINIMUMVARIANCE);float clampedAlphaB=max(alphaBitangent,MINIMUMVARIANCE);float effectiveDim=dim0*sqrt(clampedAlphaT*clampedAlphaB);float omegaP=(4.*PI)/(6.*effectiveDim*effectiveDim);const float noiseScale=clamp(log2(float(NUM_SAMPLES))/12.0f,0.0f,1.0f);float weight=0.;
1121
- #if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)
1122
- for(uint i=0u; i<NUM_SAMPLES; ++i)
1123
- #else
1124
- for(int i=0; i<NUM_SAMPLES; ++i)
1125
- #endif
1126
- {vec2 Xi=hammersley(i,NUM_SAMPLES);Xi=fract(Xi+noiseInput*mix(0.5f,0.015f,noiseScale));
1127
- vec3 H_tangent=hemisphereImportanceSampleDggxAnisotropic(Xi,clampedAlphaT,clampedAlphaB);vec3 H=normalize(H_tangent.x*T+H_tangent.y*B+H_tangent.z*N);vec3 L;if (isRefraction) {L=refract(-V,H,1.0/ior);} else {L=reflect(-V,H);}
1128
- float NoH=max(dot(N,H),0.001);float VoH=max(dot(V,H),0.001);float NoL=max(dot(N,L),0.001);if (NoL>0.) {float pdf_inversed=4./normalDistributionFunction_BurleyGGX_Anisotropic(
1129
- H_tangent.z,H_tangent.x,H_tangent.y,vec2(clampedAlphaT,clampedAlphaB)
1130
- );float omegaS=NUM_SAMPLES_FLOAT_INVERSED*pdf_inversed;float l=log4(omegaS)-log4(omegaP)+log4(K);float mipLevel=clamp(float(l),0.0,maxLevel);weight+=NoL;vec3 c=textureCubeLodEXT(inputTexture,L,mipLevel).rgb;
1131
- #if GAMMA_INPUT
1132
- c=toLinearSpace(c);
1133
- #endif
1134
- result+=c*NoL;}}
1135
- result=result/weight;return result;}
1193
+ #ifdef REFLECTIONMAP_OPPOSITEZ
1194
+ irradianceVector.z*=-1.0;irradianceView.z*=-1.0;
1136
1195
  #endif
1196
+ #ifdef INVERTCUBICMAP
1197
+ irradianceVector.y*=-1.0;irradianceView.y*=-1.0;
1137
1198
  #endif
1138
1199
  #endif
1139
- `;o.ShaderStore.IncludesShadersStore[m]||(o.ShaderStore.IncludesShadersStore[m]=g),e.s(["hdrFilteringFunctions",0,{name:m,shader:g}],46960);let E="pbrDirectLightingFunctions",p=`#define CLEARCOATREFLECTANCE90 1.0
1140
- struct lightingInfo
1141
- {vec3 diffuse;
1142
- #ifdef SS_TRANSLUCENCY
1143
- vec3 diffuseTransmission;
1200
+ #ifdef USESPHERICALFROMREFLECTIONMAP
1201
+ #if defined(NORMAL) && defined(USESPHERICALINVERTEX)
1202
+ environmentIrradiance=vEnvironmentIrradianceSH;
1203
+ #else
1204
+ #if defined(REALTIME_FILTERING)
1205
+ environmentIrradiance=irradiance(reflectionSampler,irradianceVector,vReflectionFilteringInfo,diffuseRoughness,surfaceAlbedo,irradianceView
1206
+ #ifdef IBL_CDF_FILTERING
1207
+ ,icdfSampler
1144
1208
  #endif
1145
- #ifdef SPECULARTERM
1146
- vec3 specular;
1209
+ );
1210
+ #else
1211
+ environmentIrradiance=computeEnvironmentIrradiance(irradianceVector);
1147
1212
  #endif
1148
- #ifdef CLEARCOAT
1149
- vec4 clearCoat;
1150
1213
  #endif
1151
- #ifdef SHEEN
1152
- vec3 sheen;
1153
- #endif
1154
- };float adjustRoughnessFromLightProperties(float roughness,float lightRadius,float lightDistance) {
1155
- #if defined(USEPHYSICALLIGHTFALLOFF) || defined(USEGLTFLIGHTFALLOFF)
1156
- float lightRoughness=lightRadius/lightDistance;float totalRoughness=saturate(lightRoughness+roughness);return totalRoughness;
1214
+ #elif defined(USEIRRADIANCEMAP)
1215
+ #ifdef REFLECTIONMAP_3D
1216
+ vec4 environmentIrradianceFromTexture=sampleReflection(irradianceSampler,irradianceVector);
1157
1217
  #else
1158
- return roughness;
1159
- #endif
1160
- }
1161
- vec3 computeHemisphericDiffuseLighting(preLightingInfo info,vec3 lightColor,vec3 groundColor) {return mix(groundColor,lightColor,info.NdotL);}
1162
- #if defined(AREALIGHTUSED) && defined(AREALIGHTSUPPORTED)
1163
- vec3 computeAreaDiffuseLighting(preLightingInfo info,vec3 lightColor) {return info.areaLightDiffuse*lightColor;}
1218
+ vec4 environmentIrradianceFromTexture=sampleReflection(irradianceSampler,reflectionCoords);
1164
1219
  #endif
1165
- vec3 computeDiffuseLighting(preLightingInfo info,vec3 lightColor) {vec3 diffuseTerm=vec3(1.0/PI);
1166
- #if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_LEGACY
1167
- diffuseTerm=vec3(diffuseBRDF_Burley(info.NdotL,info.NdotV,info.VdotH,info.roughness));
1168
- #elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_BURLEY
1169
- diffuseTerm=vec3(diffuseBRDF_Burley(info.NdotL,info.NdotV,info.VdotH,info.diffuseRoughness));
1170
- #elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON
1171
- vec3 clampedAlbedo=clamp(info.surfaceAlbedo,vec3(0.1),vec3(1.0));diffuseTerm=diffuseBRDF_EON(clampedAlbedo,info.diffuseRoughness,info.NdotL,info.NdotV,info.LdotV);diffuseTerm/=clampedAlbedo;
1220
+ environmentIrradiance=environmentIrradianceFromTexture.rgb;
1221
+ #ifdef RGBDREFLECTION
1222
+ environmentIrradiance.rgb=fromRGBD(environmentIrradianceFromTexture);
1172
1223
  #endif
1173
- return diffuseTerm*info.attenuation*info.NdotL*lightColor;}
1174
- #define inline
1175
- vec3 computeProjectionTextureDiffuseLighting(sampler2D projectionLightSampler,mat4 textureProjectionMatrix,vec3 posW){vec4 strq=textureProjectionMatrix*vec4(posW,1.0);strq/=strq.w;vec3 textureColor=texture2D(projectionLightSampler,strq.xy).rgb;return toLinearSpace(textureColor);}
1176
- #ifdef SS_TRANSLUCENCY
1177
- vec3 computeDiffuseTransmittedLighting(preLightingInfo info,vec3 lightColor,vec3 transmittance) {vec3 transmittanceNdotL=vec3(0.);float NdotL=absEps(info.NdotLUnclamped);
1178
- #ifndef SS_TRANSLUCENCY_LEGACY
1179
- if (info.NdotLUnclamped<0.0) {
1224
+ #ifdef GAMMAREFLECTION
1225
+ environmentIrradiance.rgb=toLinearSpace(environmentIrradiance.rgb);
1180
1226
  #endif
1181
- float wrapNdotL=computeWrappedDiffuseNdotL(NdotL,0.02);float trAdapt=step(0.,info.NdotLUnclamped);transmittanceNdotL=mix(transmittance*wrapNdotL,vec3(wrapNdotL),trAdapt);
1182
- #ifndef SS_TRANSLUCENCY_LEGACY
1183
- }
1184
- vec3 diffuseTerm=vec3(1.0/PI);
1185
- #if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_LEGACY
1186
- diffuseTerm=vec3(diffuseBRDF_Burley(info.NdotL,info.NdotV,info.VdotH,info.roughness));
1227
+ #ifdef USE_IRRADIANCE_DOMINANT_DIRECTION
1228
+ vec3 Ls=normalize(reflectionDominantDirection);float NoL=dot(irradianceVector,Ls);float NoV=dot(irradianceVector,irradianceView);vec3 diffuseRoughnessTerm=vec3(1.0);
1229
+ #if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON
1230
+ float LoV=dot (Ls,irradianceView);float mag=length(reflectionDominantDirection)*2.0;vec3 clampedAlbedo=clamp(surfaceAlbedo,vec3(0.1),vec3(1.0));diffuseRoughnessTerm=diffuseBRDF_EON(clampedAlbedo,diffuseRoughness,NoL,NoV,LoV)*PI;diffuseRoughnessTerm=diffuseRoughnessTerm/clampedAlbedo;diffuseRoughnessTerm=mix(vec3(1.0),diffuseRoughnessTerm,sqrt(clamp(mag*NoV,0.0,1.0)));
1187
1231
  #elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_BURLEY
1188
- diffuseTerm=vec3(diffuseBRDF_Burley(info.NdotL,info.NdotV,info.VdotH,info.diffuseRoughness));
1189
- #elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON
1190
- vec3 clampedAlbedo=clamp(info.surfaceAlbedo,vec3(0.1),vec3(1.0));diffuseTerm=diffuseBRDF_EON(clampedAlbedo,info.diffuseRoughness,info.NdotL,info.NdotV,info.LdotV);diffuseTerm/=clampedAlbedo;
1191
- #endif
1192
- #else
1193
- float diffuseTerm=diffuseBRDF_Burley(NdotL,info.NdotV,info.VdotH,info.roughness);
1232
+ vec3 H=(irradianceView+Ls)*0.5;float VoH=dot(irradianceView,H);diffuseRoughnessTerm=vec3(diffuseBRDF_Burley(NoL,NoV,VoH,diffuseRoughness)*PI);
1194
1233
  #endif
1195
- return diffuseTerm*transmittanceNdotL*info.attenuation*lightColor;}
1234
+ environmentIrradiance=environmentIrradiance.rgb*diffuseRoughnessTerm;
1196
1235
  #endif
1197
- #ifdef SPECULARTERM
1198
- vec3 computeSpecularLighting(preLightingInfo info,vec3 N,vec3 reflectance0,vec3 fresnel,float geometricRoughnessFactor,vec3 lightColor) {float NdotH=saturateEps(dot(N,info.H));float roughness=max(info.roughness,geometricRoughnessFactor);float alphaG=convertRoughnessToAverageSlope(roughness);
1199
- #ifdef IRIDESCENCE
1200
- fresnel=mix(fresnel,reflectance0,info.iridescenceIntensity);
1201
1236
  #endif
1202
- float distribution=normalDistributionFunction_TrowbridgeReitzGGX(NdotH,alphaG);
1203
- #ifdef BRDF_V_HEIGHT_CORRELATED
1204
- float smithVisibility=smithVisibility_GGXCorrelated(info.NdotL,info.NdotV,alphaG);
1237
+ environmentIrradiance*=vReflectionInfos.x;return environmentIrradiance;}
1238
+ #define pbr_inline
1239
+ #ifdef REFLECTIONMAP_3D
1240
+ vec3 createReflectionCoords(
1205
1241
  #else
1206
- float smithVisibility=smithVisibility_TrowbridgeReitzGGXFast(info.NdotL,info.NdotV,alphaG);
1207
- #endif
1208
- vec3 specTerm=fresnel*distribution*smithVisibility;return specTerm*info.attenuation*info.NdotL*lightColor;}
1209
- #if defined(AREALIGHTUSED) && defined(AREALIGHTSUPPORTED)
1210
- vec3 computeAreaSpecularLighting(preLightingInfo info,vec3 specularColor,vec3 reflectance0,vec3 reflectance90) {vec3 fresnel=specularColor*info.areaLightFresnel.x*reflectance0+( vec3( 1.0 )-specularColor )*info.areaLightFresnel.y*reflectance90;return specularColor*fresnel*info.areaLightSpecular;}
1242
+ vec2 createReflectionCoords(
1211
1243
  #endif
1244
+ in vec3 vPositionW
1245
+ ,in vec3 normalW
1246
+ )
1247
+ {vec3 reflectionVector=computeReflectionCoords(vec4(vPositionW,1.0),normalW);
1248
+ #ifdef REFLECTIONMAP_OPPOSITEZ
1249
+ reflectionVector.z*=-1.0;
1212
1250
  #endif
1213
- #ifdef FUZZ
1214
- float evalFuzz(vec3 L,float NdotL,float NdotV,vec3 T,vec3 B,vec3 ltcLut)
1215
- {if (NdotL<=0.0 || NdotV<=0.0)
1216
- return 0.0;mat3 M=mat3(
1217
- vec3(ltcLut.r,0.0,0.0),
1218
- vec3(ltcLut.g,1.0,0.0),
1219
- vec3(0.0,0.0,1.0)
1220
- );vec3 Llocal=vec3(dot(L,T),dot(L,B),NdotL);vec3 Lwarp=normalize(M*Llocal);float cosThetaWarp=max(Lwarp.z,0.0);return cosThetaWarp*NdotL;}
1251
+ #ifdef REFLECTIONMAP_3D
1252
+ vec3 reflectionCoords=reflectionVector;
1253
+ #else
1254
+ vec2 reflectionCoords=reflectionVector.xy;
1255
+ #ifdef REFLECTIONMAP_PROJECTION
1256
+ reflectionCoords/=reflectionVector.z;
1221
1257
  #endif
1222
- #if defined(ANISOTROPIC) && defined(ANISOTROPIC_OPENPBR)
1223
- vec3 computeAnisotropicSpecularLighting(preLightingInfo info,vec3 V,vec3 N,vec3 T,vec3 B,float anisotropy,float geometricRoughnessFactor,vec3 lightColor) {float NdotH=saturateEps(dot(N,info.H));float TdotH=dot(T,info.H);float BdotH=dot(B,info.H);float TdotV=dot(T,V);float BdotV=dot(B,V);float TdotL=dot(T,info.L);float BdotL=dot(B,info.L);float alphaG=convertRoughnessToAverageSlope(info.roughness);vec2 alphaTB=getAnisotropicRoughness(alphaG,anisotropy);float distribution=normalDistributionFunction_BurleyGGX_Anisotropic(NdotH,TdotH,BdotH,alphaTB);float smithVisibility=smithVisibility_GGXCorrelated_Anisotropic(info.NdotL,info.NdotV,TdotV,BdotV,TdotL,BdotL,alphaTB);vec3 specTerm=vec3(distribution*smithVisibility);return specTerm*info.attenuation*info.NdotL*lightColor;}
1224
- #elif defined(ANISOTROPIC)
1225
- vec3 computeAnisotropicSpecularLighting(preLightingInfo info,vec3 V,vec3 N,vec3 T,vec3 B,float anisotropy,vec3 reflectance0,vec3 reflectance90,float geometricRoughnessFactor,vec3 lightColor) {float NdotH=saturateEps(dot(N,info.H));float TdotH=dot(T,info.H);float BdotH=dot(B,info.H);float TdotV=dot(T,V);float BdotV=dot(B,V);float TdotL=dot(T,info.L);float BdotL=dot(B,info.L);float alphaG=convertRoughnessToAverageSlope(info.roughness);vec2 alphaTB=getAnisotropicRoughness(alphaG,anisotropy);alphaTB=max(alphaTB,square(geometricRoughnessFactor));vec3 fresnel=fresnelSchlickGGX(info.VdotH,reflectance0,reflectance90);
1226
- #ifdef IRIDESCENCE
1227
- fresnel=mix(fresnel,reflectance0,info.iridescenceIntensity);
1258
+ reflectionCoords.y=1.0-reflectionCoords.y;
1228
1259
  #endif
1229
- float distribution=normalDistributionFunction_BurleyGGX_Anisotropic(NdotH,TdotH,BdotH,alphaTB);float smithVisibility=smithVisibility_GGXCorrelated_Anisotropic(info.NdotL,info.NdotV,TdotV,BdotV,TdotL,BdotL,alphaTB);vec3 specTerm=fresnel*distribution*smithVisibility;return specTerm*info.attenuation*info.NdotL*lightColor;}
1260
+ return reflectionCoords;}
1261
+ #define pbr_inline
1262
+ #define inline
1263
+ vec3 sampleRadiance(
1264
+ in float alphaG
1265
+ ,in vec3 vReflectionMicrosurfaceInfos
1266
+ ,in vec2 vReflectionInfos
1267
+ ,in geometryInfoOutParams geoInfo
1268
+ #ifdef REFLECTIONMAP_3D
1269
+ ,in samplerCube reflectionSampler
1270
+ ,const vec3 reflectionCoords
1271
+ #else
1272
+ ,in sampler2D reflectionSampler
1273
+ ,const vec2 reflectionCoords
1230
1274
  #endif
1231
- #ifdef CLEARCOAT
1232
- vec4 computeClearCoatLighting(preLightingInfo info,vec3 Ncc,float geometricRoughnessFactor,float clearCoatIntensity,vec3 lightColor) {float NccdotL=saturateEps(dot(Ncc,info.L));float NccdotH=saturateEps(dot(Ncc,info.H));float clearCoatRoughness=max(info.roughness,geometricRoughnessFactor);float alphaG=convertRoughnessToAverageSlope(clearCoatRoughness);float fresnel=fresnelSchlickGGX(info.VdotH,vClearCoatRefractionParams.x,CLEARCOATREFLECTANCE90);fresnel*=clearCoatIntensity;float distribution=normalDistributionFunction_TrowbridgeReitzGGX(NccdotH,alphaG);float kelemenVisibility=visibility_Kelemen(info.VdotH);float clearCoatTerm=fresnel*distribution*kelemenVisibility;return vec4(
1233
- clearCoatTerm*info.attenuation*NccdotL*lightColor,
1234
- 1.0-fresnel
1235
- );}
1236
- vec3 computeClearCoatLightingAbsorption(float NdotVRefract,vec3 L,vec3 Ncc,vec3 clearCoatColor,float clearCoatThickness,float clearCoatIntensity) {vec3 LRefract=-refract(L,Ncc,vClearCoatRefractionParams.y);float NdotLRefract=saturateEps(dot(Ncc,LRefract));vec3 absorption=computeClearCoatAbsorption(NdotVRefract,NdotLRefract,clearCoatColor,clearCoatThickness,clearCoatIntensity);return absorption;}
1275
+ #ifdef REALTIME_FILTERING
1276
+ ,in vec2 vReflectionFilteringInfo
1237
1277
  #endif
1238
- #ifdef SHEEN
1239
- vec3 computeSheenLighting(preLightingInfo info,vec3 N,vec3 reflectance0,vec3 reflectance90,float geometricRoughnessFactor,vec3 lightColor) {float NdotH=saturateEps(dot(N,info.H));float roughness=max(info.roughness,geometricRoughnessFactor);float alphaG=convertRoughnessToAverageSlope(roughness);float fresnel=1.;float distribution=normalDistributionFunction_CharlieSheen(NdotH,alphaG);/*#ifdef SHEEN_SOFTER
1240
- float visibility=visibility_CharlieSheen(info.NdotL,info.NdotV,alphaG);
1241
- #else */
1242
- float visibility=visibility_Ashikhmin(info.NdotL,info.NdotV);/* #endif */
1243
- float sheenTerm=fresnel*distribution*visibility;return sheenTerm*info.attenuation*info.NdotL*lightColor;}
1278
+ )
1279
+ {vec4 environmentRadiance=vec4(0.,0.,0.,0.);
1280
+ #if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)
1281
+ float reflectionLOD=getLodFromAlphaG(vReflectionMicrosurfaceInfos.x,alphaG,geoInfo.NdotVUnclamped);
1282
+ #elif defined(LINEARSPECULARREFLECTION)
1283
+ float reflectionLOD=getLinearLodFromRoughness(vReflectionMicrosurfaceInfos.x,roughness);
1284
+ #else
1285
+ float reflectionLOD=getLodFromAlphaG(vReflectionMicrosurfaceInfos.x,alphaG);
1244
1286
  #endif
1245
- `;o.ShaderStore.IncludesShadersStore[E]||(o.ShaderStore.IncludesShadersStore[E]=p),e.s(["pbrDirectLightingFunctions",0,{name:E,shader:p}],73088);let h="pbrBlockNormalGeometric",S=`vec3 viewDirectionW=normalize(vEyePosition.xyz-vPositionW);
1246
- #ifdef NORMAL
1247
- vec3 normalW=normalize(vNormalW);
1287
+ reflectionLOD=reflectionLOD*vReflectionMicrosurfaceInfos.y+vReflectionMicrosurfaceInfos.z;
1288
+ #ifdef REALTIME_FILTERING
1289
+ environmentRadiance=vec4(radiance(alphaG,reflectionSampler,reflectionCoords,vReflectionFilteringInfo),1.0);
1248
1290
  #else
1249
- vec3 normalW=normalize(cross(dFdx(vPositionW),dFdy(vPositionW)))*vEyePosition.w;
1291
+ environmentRadiance=sampleReflectionLod(reflectionSampler,reflectionCoords,reflectionLOD);
1250
1292
  #endif
1251
- vec3 geometricNormalW=normalW;
1252
- #if defined(TWOSIDEDLIGHTING) && defined(NORMAL)
1253
- geometricNormalW=gl_FrontFacing ? geometricNormalW : -geometricNormalW;
1293
+ #ifdef RGBDREFLECTION
1294
+ environmentRadiance.rgb=fromRGBD(environmentRadiance);
1254
1295
  #endif
1255
- `;o.ShaderStore.IncludesShadersStore[h]||(o.ShaderStore.IncludesShadersStore[h]=S),e.s(["pbrBlockNormalGeometric",0,{name:h,shader:S}],79795);let R="pbrBlockImageProcessing",I=`#if defined(IMAGEPROCESSINGPOSTPROCESS) || defined(SS_SCATTERING)
1256
- #if !defined(SKIPFINALCOLORCLAMP)
1257
- finalColor.rgb=clamp(finalColor.rgb,0.,30.0);
1296
+ #ifdef GAMMAREFLECTION
1297
+ environmentRadiance.rgb=toLinearSpace(environmentRadiance.rgb);
1258
1298
  #endif
1299
+ environmentRadiance.rgb*=vec3(vReflectionInfos.x);return environmentRadiance.rgb;}
1300
+ #if defined(ANISOTROPIC)
1301
+ #define pbr_inline
1302
+ #define inline
1303
+ vec3 sampleRadianceAnisotropic(
1304
+ in float alphaG
1305
+ ,in vec3 vReflectionMicrosurfaceInfos
1306
+ ,in vec2 vReflectionInfos
1307
+ ,in geometryInfoAnisoOutParams geoInfo
1308
+ ,const vec3 normalW
1309
+ ,const vec3 viewDirectionW
1310
+ ,const vec3 positionW
1311
+ ,const vec3 noise
1312
+ ,bool isRefraction
1313
+ ,float ior
1314
+ #ifdef REFLECTIONMAP_3D
1315
+ ,in samplerCube reflectionSampler
1259
1316
  #else
1260
- finalColor=applyImageProcessing(finalColor);
1261
- #endif
1262
- finalColor.a*=visibility;
1263
- #ifdef PREMULTIPLYALPHA
1264
- finalColor.rgb*=finalColor.a;
1265
- #endif
1266
- `;o.ShaderStore.IncludesShadersStore[R]||(o.ShaderStore.IncludesShadersStore[R]=I),e.s(["pbrBlockImageProcessing",0,{name:R,shader:I}],2834);let L="pbrDebug",N=`#if DEBUGMODE>0
1267
- if (vClipSpacePosition.x/vClipSpacePosition.w>=vDebugMode.x) {
1268
- #if DEBUGMODE==1
1269
- gl_FragColor.rgb=vPositionW.rgb;
1270
- #define DEBUGMODE_NORMALIZE
1271
- #elif DEBUGMODE==2 && defined(NORMAL)
1272
- gl_FragColor.rgb=vNormalW.rgb;
1273
- #define DEBUGMODE_NORMALIZE
1274
- #elif DEBUGMODE==3 && defined(BUMP) || DEBUGMODE==3 && defined(PARALLAX) || DEBUGMODE==3 && defined(ANISOTROPIC)
1275
- gl_FragColor.rgb=TBN[0];
1276
- #define DEBUGMODE_NORMALIZE
1277
- #elif DEBUGMODE==4 && defined(BUMP) || DEBUGMODE==4 && defined(PARALLAX) || DEBUGMODE==4 && defined(ANISOTROPIC)
1278
- gl_FragColor.rgb=TBN[1];
1279
- #define DEBUGMODE_NORMALIZE
1280
- #elif DEBUGMODE==5
1281
- gl_FragColor.rgb=normalW;
1282
- #define DEBUGMODE_NORMALIZE
1283
- #elif DEBUGMODE==6 && defined(MAINUV1)
1284
- gl_FragColor.rgb=vec3(vMainUV1,0.0);
1285
- #elif DEBUGMODE==7 && defined(MAINUV2)
1286
- gl_FragColor.rgb=vec3(vMainUV2,0.0);
1287
- #elif DEBUGMODE==8 && defined(CLEARCOAT) && defined(CLEARCOAT_BUMP)
1288
- gl_FragColor.rgb=clearcoatOut.TBNClearCoat[0];
1289
- #define DEBUGMODE_NORMALIZE
1290
- #elif DEBUGMODE==9 && defined(CLEARCOAT) && defined(CLEARCOAT_BUMP)
1291
- gl_FragColor.rgb=clearcoatOut.TBNClearCoat[1];
1292
- #define DEBUGMODE_NORMALIZE
1293
- #elif DEBUGMODE==10 && defined(CLEARCOAT)
1294
- gl_FragColor.rgb=clearcoatOut.clearCoatNormalW;
1295
- #define DEBUGMODE_NORMALIZE
1296
- #elif DEBUGMODE==11 && defined(ANISOTROPIC)
1297
- gl_FragColor.rgb=anisotropicOut.anisotropicNormal;
1298
- #define DEBUGMODE_NORMALIZE
1299
- #elif DEBUGMODE==12 && defined(ANISOTROPIC)
1300
- gl_FragColor.rgb=anisotropicOut.anisotropicTangent;
1301
- #define DEBUGMODE_NORMALIZE
1302
- #elif DEBUGMODE==13 && defined(ANISOTROPIC)
1303
- gl_FragColor.rgb=anisotropicOut.anisotropicBitangent;
1304
- #define DEBUGMODE_NORMALIZE
1305
- #elif DEBUGMODE==20 && defined(ALBEDO)
1306
- gl_FragColor.rgb=albedoTexture.rgb;
1307
- #ifndef GAMMAALBEDO
1308
- #define DEBUGMODE_GAMMA
1317
+ ,in sampler2D reflectionSampler
1309
1318
  #endif
1310
- #elif DEBUGMODE==21 && defined(AMBIENT)
1311
- gl_FragColor.rgb=aoOut.ambientOcclusionColorMap.rgb;
1312
- #elif DEBUGMODE==22 && defined(OPACITY)
1313
- gl_FragColor.rgb=opacityMap.rgb;
1314
- #elif DEBUGMODE==23 && defined(EMISSIVE)
1315
- gl_FragColor.rgb=emissiveColorTex.rgb;
1316
- #ifndef GAMMAEMISSIVE
1317
- #define DEBUGMODE_GAMMA
1319
+ #ifdef REALTIME_FILTERING
1320
+ ,in vec2 vReflectionFilteringInfo
1318
1321
  #endif
1319
- #elif DEBUGMODE==24 && defined(LIGHTMAP)
1320
- gl_FragColor.rgb=lightmapColor.rgb;
1321
- #ifndef GAMMALIGHTMAP
1322
- #define DEBUGMODE_GAMMA
1322
+ )
1323
+ {vec4 environmentRadiance=vec4(0.,0.,0.,0.);float alphaT=alphaG*sqrt(2.0/(1.0+(1.0-geoInfo.anisotropy)*(1.0-geoInfo.anisotropy)));float alphaB=(1.0-geoInfo.anisotropy)*alphaT;alphaG=alphaB;
1324
+ #if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)
1325
+ float reflectionLOD=getLodFromAlphaG(vReflectionMicrosurfaceInfos.x,alphaG,geoInfo.NdotVUnclamped);
1326
+ #elif defined(LINEARSPECULARREFLECTION)
1327
+ float reflectionLOD=getLinearLodFromRoughness(vReflectionMicrosurfaceInfos.x,roughness);
1328
+ #else
1329
+ float reflectionLOD=getLodFromAlphaG(vReflectionMicrosurfaceInfos.x,alphaG);
1323
1330
  #endif
1324
- #elif DEBUGMODE==25 && defined(REFLECTIVITY) && defined(METALLICWORKFLOW)
1325
- gl_FragColor.rgb=reflectivityOut.surfaceMetallicColorMap.rgb;
1326
- #elif DEBUGMODE==26 && defined(REFLECTIVITY) && !defined(METALLICWORKFLOW)
1327
- gl_FragColor.rgb=reflectivityOut.surfaceReflectivityColorMap.rgb;
1328
- #define DEBUGMODE_GAMMA
1329
- #elif DEBUGMODE==27 && defined(CLEARCOAT) && defined(CLEARCOAT_TEXTURE)
1330
- gl_FragColor.rgb=vec3(clearcoatOut.clearCoatMapData.rg,0.0);
1331
- #elif DEBUGMODE==28 && defined(CLEARCOAT) && defined(CLEARCOAT_TINT) && defined(CLEARCOAT_TINT_TEXTURE)
1332
- gl_FragColor.rgb=clearcoatOut.clearCoatTintMapData.rgb;
1333
- #elif DEBUGMODE==29 && defined(SHEEN) && defined(SHEEN_TEXTURE)
1334
- gl_FragColor.rgb=sheenOut.sheenMapData.rgb;
1335
- #elif DEBUGMODE==30 && defined(ANISOTROPIC) && defined(ANISOTROPIC_TEXTURE)
1336
- gl_FragColor.rgb=anisotropicOut.anisotropyMapData.rgb;
1337
- #elif DEBUGMODE==31 && defined(SUBSURFACE) && defined(SS_THICKNESSANDMASK_TEXTURE)
1338
- gl_FragColor.rgb=subSurfaceOut.thicknessMap.rgb;
1339
- #elif DEBUGMODE==32 && defined(BUMP)
1340
- gl_FragColor.rgb=texture2D(bumpSampler,vBumpUV).rgb;
1341
- #elif DEBUGMODE==40 && defined(SS_REFRACTION)
1342
- gl_FragColor.rgb=subSurfaceOut.environmentRefraction.rgb;
1343
- #define DEBUGMODE_GAMMA
1344
- #elif DEBUGMODE==41 && defined(REFLECTION)
1345
- gl_FragColor.rgb=reflectionOut.environmentRadiance.rgb;
1346
- #ifndef GAMMAREFLECTION
1347
- #define DEBUGMODE_GAMMA
1331
+ reflectionLOD=reflectionLOD*vReflectionMicrosurfaceInfos.y+vReflectionMicrosurfaceInfos.z;
1332
+ #ifdef REALTIME_FILTERING
1333
+ vec3 view=(reflectionMatrix*vec4(viewDirectionW,0.0)).xyz;vec3 tangent=(reflectionMatrix*vec4(geoInfo.anisotropicTangent,0.0)).xyz;vec3 bitangent=(reflectionMatrix*vec4(geoInfo.anisotropicBitangent,0.0)).xyz;vec3 normal=(reflectionMatrix*vec4(normalW,0.0)).xyz;
1334
+ #ifdef REFLECTIONMAP_OPPOSITEZ
1335
+ view.z*=-1.0;tangent.z*=-1.0;bitangent.z*=-1.0;normal.z*=-1.0;
1348
1336
  #endif
1349
- #elif DEBUGMODE==42 && defined(CLEARCOAT) && defined(REFLECTION)
1350
- gl_FragColor.rgb=clearcoatOut.environmentClearCoatRadiance.rgb;
1351
- #define DEBUGMODE_GAMMA
1352
- #elif DEBUGMODE==50
1353
- gl_FragColor.rgb=diffuseBase.rgb;
1354
- #define DEBUGMODE_GAMMA
1355
- #elif DEBUGMODE==51 && defined(SPECULARTERM)
1356
- gl_FragColor.rgb=specularBase.rgb;
1357
- #define DEBUGMODE_GAMMA
1358
- #elif DEBUGMODE==52 && defined(CLEARCOAT)
1359
- gl_FragColor.rgb=clearCoatBase.rgb;
1360
- #define DEBUGMODE_GAMMA
1361
- #elif DEBUGMODE==53 && defined(SHEEN)
1362
- gl_FragColor.rgb=sheenBase.rgb;
1363
- #define DEBUGMODE_GAMMA
1364
- #elif DEBUGMODE==54 && defined(REFLECTION)
1365
- gl_FragColor.rgb=reflectionOut.environmentIrradiance.rgb;
1366
- #ifndef GAMMAREFLECTION
1367
- #define DEBUGMODE_GAMMA
1337
+ environmentRadiance=vec4(radianceAnisotropic(alphaT,alphaB,reflectionSampler,view,tangent,bitangent,normal,vReflectionFilteringInfo,noise.xy,isRefraction,ior),1.0);
1338
+ #else
1339
+ const int samples=16;vec4 radianceSample=vec4(0.0);vec3 reflectionCoords=vec3(0.0);float sample_weight=0.0;float total_weight=0.0;float step=1.0/float(max(samples-1,1));for (int i=0; i<samples; ++i) {float t=mix(-1.0,1.0,float(i)*step);t+=step*2.0*noise.x;sample_weight=max(1.0-abs(t),0.001);sample_weight*=sample_weight;t*=min(4.0*alphaT*geoInfo.anisotropy,1.0);vec3 bentNormal;if (t<0.0) {float blend=t+1.0;bentNormal=normalize(mix(-geoInfo.anisotropicTangent,normalW,blend));} else if (t>0.0) {float blend=t;bentNormal=normalize(mix(normalW,geoInfo.anisotropicTangent,blend));} else {bentNormal=normalW;}
1340
+ if (isRefraction) {reflectionCoords=double_refract(-viewDirectionW,bentNormal,ior);} else {reflectionCoords=reflect(-viewDirectionW,bentNormal);}
1341
+ reflectionCoords=vec3(reflectionMatrix*vec4(reflectionCoords,0));
1342
+ #ifdef REFLECTIONMAP_OPPOSITEZ
1343
+ reflectionCoords.z*=-1.0;
1368
1344
  #endif
1369
- #elif DEBUGMODE==60
1370
- gl_FragColor.rgb=surfaceAlbedo.rgb;
1371
- #define DEBUGMODE_GAMMA
1372
- #elif DEBUGMODE==61
1373
- gl_FragColor.rgb=clearcoatOut.specularEnvironmentR0;
1374
- #define DEBUGMODE_GAMMA
1375
- #elif DEBUGMODE==62 && defined(METALLICWORKFLOW)
1376
- gl_FragColor.rgb=vec3(reflectivityOut.metallic);
1377
- #elif DEBUGMODE==71 && defined(METALLICWORKFLOW)
1378
- gl_FragColor.rgb=reflectivityOut.metallicF0;
1379
- #elif DEBUGMODE==63
1380
- gl_FragColor.rgb=vec3(roughness);
1381
- #elif DEBUGMODE==64
1382
- gl_FragColor.rgb=vec3(alphaG);
1383
- #elif DEBUGMODE==65
1384
- gl_FragColor.rgb=vec3(NdotV);
1385
- #elif DEBUGMODE==66 && defined(CLEARCOAT) && defined(CLEARCOAT_TINT)
1386
- gl_FragColor.rgb=clearcoatOut.clearCoatColor.rgb;
1387
- #define DEBUGMODE_GAMMA
1388
- #elif DEBUGMODE==67 && defined(CLEARCOAT)
1389
- gl_FragColor.rgb=vec3(clearcoatOut.clearCoatRoughness);
1390
- #elif DEBUGMODE==68 && defined(CLEARCOAT)
1391
- gl_FragColor.rgb=vec3(clearcoatOut.clearCoatNdotV);
1392
- #elif DEBUGMODE==69 && defined(SUBSURFACE) && defined(SS_TRANSLUCENCY)
1393
- gl_FragColor.rgb=subSurfaceOut.transmittance;
1394
- #elif DEBUGMODE==70 && defined(SUBSURFACE) && defined(SS_REFRACTION)
1395
- gl_FragColor.rgb=subSurfaceOut.refractionTransmittance;
1396
- #elif DEBUGMODE==72
1397
- gl_FragColor.rgb=vec3(microSurface);
1398
- #elif DEBUGMODE==73
1399
- gl_FragColor.rgb=vAlbedoColor.rgb;
1400
- #define DEBUGMODE_GAMMA
1401
- #elif DEBUGMODE==74 && !defined(METALLICWORKFLOW)
1402
- gl_FragColor.rgb=vReflectivityColor.rgb;
1403
- #define DEBUGMODE_GAMMA
1404
- #elif DEBUGMODE==75
1405
- gl_FragColor.rgb=vEmissiveColor.rgb;
1406
- #define DEBUGMODE_GAMMA
1407
- #elif DEBUGMODE==80 && defined(RADIANCEOCCLUSION)
1408
- gl_FragColor.rgb=vec3(seo);
1409
- #elif DEBUGMODE==81 && defined(HORIZONOCCLUSION) && defined(BUMP) && defined(REFLECTIONMAP_3D)
1410
- gl_FragColor.rgb=vec3(eho);
1411
- #elif DEBUGMODE==82 && defined(MS_BRDF_ENERGY_CONSERVATION)
1412
- gl_FragColor.rgb=vec3(energyConservationFactor);
1413
- #elif DEBUGMODE==83 && defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX)
1414
- gl_FragColor.rgb=baseSpecularEnvironmentReflectance;
1415
- #define DEBUGMODE_GAMMA
1416
- #elif DEBUGMODE==84 && defined(CLEARCOAT) && defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX)
1417
- gl_FragColor.rgb=clearcoatOut.clearCoatEnvironmentReflectance;
1418
- #define DEBUGMODE_GAMMA
1419
- #elif DEBUGMODE==85 && defined(SHEEN) && defined(REFLECTION)
1420
- gl_FragColor.rgb=sheenOut.sheenEnvironmentReflectance;
1421
- #define DEBUGMODE_GAMMA
1422
- #elif DEBUGMODE==86 && defined(ALPHABLEND)
1423
- gl_FragColor.rgb=vec3(luminanceOverAlpha);
1424
- #elif DEBUGMODE==87
1425
- gl_FragColor.rgb=vec3(alpha);
1426
- #elif DEBUGMODE==88 && defined(ALBEDO)
1427
- gl_FragColor.rgb=vec3(albedoTexture.a);
1428
- #elif DEBUGMODE==89
1429
- gl_FragColor.rgb=aoOut.ambientOcclusionColor.rgb;
1345
+ radianceSample=sampleReflectionLod(reflectionSampler,reflectionCoords,reflectionLOD);
1346
+ #ifdef RGBDREFLECTION
1347
+ environmentRadiance.rgb+=sample_weight*fromRGBD(radianceSample);
1348
+ #elif defined(GAMMAREFLECTION)
1349
+ environmentRadiance.rgb+=sample_weight*toLinearSpace(radianceSample.rgb);
1430
1350
  #else
1431
- float stripeWidth=30.;float stripePos=floor(gl_FragCoord.x/stripeWidth);float whichColor=mod(stripePos,2.);vec3 color1=vec3(.6,.2,.2);vec3 color2=vec3(.3,.1,.1);gl_FragColor.rgb=mix(color1,color2,whichColor);
1351
+ environmentRadiance.rgb+=sample_weight*radianceSample.rgb;
1432
1352
  #endif
1433
- gl_FragColor.rgb*=vDebugMode.y;
1434
- #ifdef DEBUGMODE_NORMALIZE
1435
- gl_FragColor.rgb=normalize(gl_FragColor.rgb)*0.5+0.5;
1353
+ total_weight+=sample_weight;}
1354
+ environmentRadiance=vec4(environmentRadiance.xyz/float(total_weight),1.0);
1436
1355
  #endif
1437
- #ifdef DEBUGMODE_GAMMA
1438
- gl_FragColor.rgb=toGammaSpace(gl_FragColor.rgb);
1356
+ environmentRadiance.rgb*=vec3(vReflectionInfos.x);return environmentRadiance.rgb;}
1439
1357
  #endif
1440
- gl_FragColor.a=1.0;
1441
- #ifdef PREPASS
1442
- gl_FragData[0]=toLinearSpace(gl_FragColor);
1443
- gl_FragData[1]=vec4(0.,0.,0.,0.);
1444
1358
  #endif
1445
- #ifdef DEBUGMODE_FORCERETURN
1446
- return;
1359
+ #if defined(ENVIRONMENTBRDF)
1360
+ #define pbr_inline
1361
+ float computeDielectricIblFresnel(in ReflectanceParams reflectance,in vec3 environmentBrdf)
1362
+ {float dielectricIblFresnel=getReflectanceFromBRDFLookup(vec3(reflectance.F0),vec3(reflectance.F90),environmentBrdf).r;float dielectricECF=1.0+reflectance.F0*(1.0/environmentBrdf.y-1.0);return clamp(dielectricIblFresnel*dielectricECF,0.0,1.0);}
1363
+ #define pbr_inline
1364
+ vec3 computeConductorIblFresnel(in ReflectanceParams reflectance,in vec3 environmentBrdf)
1365
+ {
1366
+ #if (CONDUCTOR_SPECULAR_MODEL==CONDUCTOR_SPECULAR_MODEL_OPENPBR) && defined(ENVIRONMENTBRDF)
1367
+ vec3 openPBRBrdf=vec3(environmentBrdf.xy,environmentBrdf.z/BRDF_Z_SCALE);vec3 b =getF82B(reflectance.coloredF0,reflectance.coloredF90);vec3 E_F82=getF82DirectionalAlbedo(reflectance.coloredF0,vec3(1.0),b,openPBRBrdf);vec3 F_avg=getF82AverageFresnel(reflectance.coloredF0,b);vec3 ECF =vec3(1.0)+F_avg*(vec3(1.0)/openPBRBrdf.y-vec3(1.0));return clamp(E_F82*ECF,vec3(0.0),vec3(1.0));
1368
+ #else
1369
+ return getReflectanceFromBRDFLookup(reflectance.coloredF0,reflectance.coloredF90,environmentBrdf);
1447
1370
  #endif
1448
1371
  }
1449
1372
  #endif
1450
- `;o.ShaderStore.IncludesShadersStore[L]||(o.ShaderStore.IncludesShadersStore[L]=N),e.s(["pbrDebug",0,{name:L,shader:N}],14253)}]);
1373
+ `;o.ShaderStore.IncludesShadersStore[c]||(o.ShaderStore.IncludesShadersStore[c]=f),e.s(["openpbrIblFunctions",0,{name:c,shader:f}],34630)},19831,e=>{"use strict";var o=e.i(2342);let t="sceneUboDeclaration",i=`layout(std140,column_major) uniform;uniform Scene {mat4 viewProjection;
1374
+ #ifdef MULTIVIEW
1375
+ mat4 viewProjectionR;
1376
+ #endif
1377
+ mat4 view;mat4 projection;vec4 vEyePosition;mat4 inverseProjection;};
1378
+ `;o.ShaderStore.IncludesShadersStore[t]||(o.ShaderStore.IncludesShadersStore[t]=i),e.s(["sceneUboDeclaration",0,{name:t,shader:i}])}]);