@uptimizr/dashboard 0.4.6 → 0.4.8
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.
- package/out/404.html +1 -1
- package/out/__next.__PAGE__.txt +19 -5
- package/out/__next._full.txt +10 -10
- package/out/__next._tree.txt +1 -1
- package/out/_next/static/chunks/{3cp5nmtwxq4gr.js → 0-6mdj5wxsfid.js} +1 -1
- package/out/_next/static/chunks/{2clevl_9ayd0x.js → 0-qthfqvm1jyj.js} +1 -1
- package/out/_next/static/chunks/01viyuclp2gm9.js +1 -0
- package/out/_next/static/chunks/02aym4t2hgo5c.js +1 -0
- package/out/_next/static/chunks/{1fervgvgv10r-.js → 02ic9b5ejugow.js} +1 -1
- package/out/_next/static/chunks/03p70i4c7qt0v.js +1 -0
- package/out/_next/static/chunks/{3zv5kyos9vtmm.js → 03pjr-ivdicng.js} +1 -1
- package/out/_next/static/chunks/041a06-lxipy5.js +1 -0
- package/out/_next/static/chunks/{3-yhe6rcsjh88.js → 06dzkwetqis-5.js} +1 -1
- package/out/_next/static/chunks/{2mjjo0yj-4ro4.js → 06kvanz5-fo52.js} +1 -1
- package/out/_next/static/chunks/{28i3wgvgn_at1.js → 07y8ke_iy59dn.js} +1 -1
- package/out/_next/static/chunks/09jukc-4jl735.js +1 -0
- package/out/_next/static/chunks/{0cmyc-uvk93kl.js → 09khmdgez3t0a.js} +74 -74
- package/out/_next/static/chunks/{2x-7kbwq8tl-o.js → 0_dca4876jshu.js} +196 -196
- package/out/_next/static/chunks/0axcgnl5qzr6e.js +1 -0
- package/out/_next/static/chunks/0ay4fjomijs3n.js +1 -0
- package/out/_next/static/chunks/0c7fy79wlccat.js +1 -0
- package/out/_next/static/chunks/0cqe4-l3imct3.js +1 -0
- package/out/_next/static/chunks/0cssvelju788j.js +1 -0
- package/out/_next/static/chunks/{2-_a-v1xeo5hb.js → 0ctain5xq2wsd.js} +116 -115
- package/out/_next/static/chunks/{3yk0hzfq5rcs6.js → 0df-dr3otg_4w.js} +1 -1
- package/out/_next/static/chunks/{0i9wa8hjd-5tc.js → 0endw997j7ao9.js} +1 -1
- package/out/_next/static/chunks/0ev_pbit1v_qg.js +1 -0
- package/out/_next/static/chunks/0eyw9oiwipywb.js +1 -0
- package/out/_next/static/chunks/0fkzbuo1tex4u.js +1 -0
- package/out/_next/static/chunks/0govas0u0t4w3.js +1 -0
- package/out/_next/static/chunks/{287hakn2ijupp.js → 0guzhnususp3-.js} +2 -2
- package/out/_next/static/chunks/0h7bq_ysu17q7.js +3 -0
- package/out/_next/static/chunks/0hneh_3xzlo28.js +1 -0
- package/out/_next/static/chunks/0iaqwme19z_0s.js +1 -0
- package/out/_next/static/chunks/0ibmar10xndpn.js +1 -0
- package/out/_next/static/chunks/0ii8mqoteppgh.js +11 -0
- package/out/_next/static/chunks/{3ioxfi3bvznhh.js → 0ip6v64di_l6x.js} +1 -1
- package/out/_next/static/chunks/{184pz6z3dflfm.js → 0ixymgjgz3grn.js} +20 -20
- package/out/_next/static/chunks/0kuah8g7lt5ox.js +1 -0
- package/out/_next/static/chunks/0l3k4j19vxm17.js +1 -0
- package/out/_next/static/chunks/0l6hg0ohwh9-m.js +1 -0
- package/out/_next/static/chunks/0m4um4ylhlfan.js +1 -0
- package/out/_next/static/chunks/0mj837d4h0ddq.js +1 -0
- package/out/_next/static/chunks/0nyn-f4905o91.js +1 -0
- package/out/_next/static/chunks/0og6i9rsgkuif.js +1 -0
- package/out/_next/static/chunks/0os1x-fxzgnxs.js +1 -0
- package/out/_next/static/chunks/0otnra7mp0hog.js +1 -0
- package/out/_next/static/chunks/{3p03l0z65c8vc.js → 0oyf2xzv8ofkk.js} +253 -253
- package/out/_next/static/chunks/0qvsy3gcqjm12.js +1 -0
- package/out/_next/static/chunks/{0yd4_xh476fjn.js → 0rl4ddh2vgxyl.js} +97 -97
- package/out/_next/static/chunks/0rwpttmsmqvn_.js +1 -0
- package/out/_next/static/chunks/0so3wjp9ch93y.js +1 -0
- package/out/_next/static/chunks/{36pz_ews7u0xb.js → 0te4g160_rb5d.js} +1 -1
- package/out/_next/static/chunks/0uby-zvu799ef.js +1 -0
- package/out/_next/static/chunks/{2kk_vvmr2xm3d.js → 0uvn0op2mlr2u.js} +12 -12
- package/out/_next/static/chunks/0vwj4hxjm0igv.js +1 -0
- package/out/_next/static/chunks/{0r-x702_jvhud.js → 0w7c30w07uct2.js} +12 -12
- package/out/_next/static/chunks/0wm38z3u2133a.js +1 -0
- package/out/_next/static/chunks/0y7yk5al7_p8q.js +4 -0
- package/out/_next/static/chunks/0ycr0gi6fn6bt.js +1 -0
- package/out/_next/static/chunks/0ywvahq9t0tki.js +1 -0
- package/out/_next/static/chunks/0zh6nslagkby-.js +1 -0
- package/out/_next/static/chunks/{3twr9ds68-9us.js → 0zo8xa0nej3ex.js} +1 -1
- package/out/_next/static/chunks/{1lu7rjfvxj8yj.js → 0zsir95gpf3xw.js} +1 -1
- package/out/_next/static/chunks/{1j4c0nvdo5q68.js → 0zu6ryyj0ig-j.js} +1 -1
- package/out/_next/static/chunks/{1bv-jzy_2jiqs.js → 1-jv8k10q_1uw.js} +1 -1
- package/out/_next/static/chunks/{0xx7_7y5jdlh4.js → 1-s5ioie9a94e.js} +1 -1
- package/out/_next/static/chunks/{27z7j17kcrty_.js → 1-yos1h0qws5e.js} +11 -11
- package/out/_next/static/chunks/10o7brc3x027r.js +1 -0
- package/out/_next/static/chunks/{2xe4bgir5l-9b.js → 10pae4gb9i929.js} +504 -504
- package/out/_next/static/chunks/13p93itm8a3ym.js +1 -0
- package/out/_next/static/chunks/{2mrkv0z2i74pv.js → 147s8i_lktp4_.js} +2 -2
- package/out/_next/static/chunks/{3nwaovnpiyrt8.js → 14tgo5xt_3j4w.js} +3 -3
- package/out/_next/static/chunks/1699hx-vlak0n.js +22 -0
- package/out/_next/static/chunks/{2b5nt7yn-pq3a.js → 16d6n9e77rqti.js} +1 -1
- package/out/_next/static/chunks/{3nr48h9zwum-3.js → 16f3d5dv83rsr.js} +1 -1
- package/out/_next/static/chunks/16i_tpwn_cmr-.js +1 -0
- package/out/_next/static/chunks/{2117sv2qzo6yq.js → 16rfr165nbha0.js} +1 -1
- package/out/_next/static/chunks/16sl51pvzo4tf.js +1 -0
- package/out/_next/static/chunks/1760s-32qpwgg.js +1 -0
- package/out/_next/static/chunks/{3rj-5v0j_2-_2.js → 18kq07c5xy_4g.js} +4 -4
- package/out/_next/static/chunks/{2wgh5i70bzelt.js → 190tbzt861ao3.js} +392 -392
- package/out/_next/static/chunks/19bhv6cupnnyj.js +1 -0
- package/out/_next/static/chunks/1_14pn2wwebxy.js +1 -0
- package/out/_next/static/chunks/{2_lw4d7t-xcqi.js → 1_kikmeubh0wq.js} +523 -522
- package/out/_next/static/chunks/1ay3z6agelsvz.js +1 -0
- package/out/_next/static/chunks/1b-fi3bfmpe31.js +1 -0
- package/out/_next/static/chunks/1bae3tqv53x9_.js +1 -0
- package/out/_next/static/chunks/{2s4fzgzkwjluu.js → 1bf421g4peccx.js} +2 -2
- package/out/_next/static/chunks/1bfony5qsc5tp.js +1 -0
- package/out/_next/static/chunks/{3vtmucpx25o7q.js → 1ddt0ot7kl8vq.js} +584 -584
- package/out/_next/static/chunks/1emz2vjkgck4z.js +1 -0
- package/out/_next/static/chunks/1eogzzw8i1wsg.js +1 -0
- package/out/_next/static/chunks/1g9p2h1-31q8o.js +1 -0
- package/out/_next/static/chunks/1gcz1k1v1woca.js +1 -0
- package/out/_next/static/chunks/1h8lyicgqhpxa.js +1 -0
- package/out/_next/static/chunks/{0e5dcxmkprebg.js → 1hot663akaepl.js} +1 -1
- package/out/_next/static/chunks/1i7pgl3ks5ye0.js +1 -0
- package/out/_next/static/chunks/{0xzamrecplwzw.js → 1i8sk_qgpdjhs.js} +1 -1
- package/out/_next/static/chunks/1kk3ct7pkpf3b.js +1 -0
- package/out/_next/static/chunks/1kq9o8del67le.js +1 -0
- package/out/_next/static/chunks/1l7tzyx2mumlq.js +1 -0
- package/out/_next/static/chunks/1n_uwed9o--go.js +1 -0
- package/out/_next/static/chunks/1o351eldttogn.js +1 -0
- package/out/_next/static/chunks/{1f07l3q77zat1.js → 1ogs4_aj84bfn.js} +1 -1
- package/out/_next/static/chunks/{3_dm45k0vk1aa.js → 1p206txlluipi.js} +565 -565
- package/out/_next/static/chunks/1p2bt1w845v6c.js +1 -0
- package/out/_next/static/chunks/1p3rgz4aef1gk.js +1 -0
- package/out/_next/static/chunks/{0ypejzd74ixbw.js → 1qcgdx9yl0gfx.js} +15 -15
- package/out/_next/static/chunks/1ql3mm2w5r-m8.js +1 -0
- package/out/_next/static/chunks/1qvcyuyshi3ll.js +53 -0
- package/out/_next/static/chunks/1r0yyg5a_0knc.js +1 -0
- package/out/_next/static/chunks/{374lzksboll-t.js → 1sa6qiidtcyk2.js} +1 -1
- package/out/_next/static/chunks/1t-9vrdrsi8le.js +1 -0
- package/out/_next/static/chunks/1t97zo0tlpbnz.js +1 -0
- package/out/_next/static/chunks/1te2tinzqnwck.js +1 -0
- package/out/_next/static/chunks/{3j3ol_d1vsdhx.js → 1trt-m2nrck0v.js} +1 -1
- package/out/_next/static/chunks/{3vu5y270muh-7.js → 1ty9jpwr3o_st.js} +1 -1
- package/out/_next/static/chunks/{415g3asdds1ac.js → 1u6w6veke8rze.js} +1 -1
- package/out/_next/static/chunks/{0-laj-bivzp4x.js → 1u900urmrbv73.js} +1 -1
- package/out/_next/static/chunks/{0o73w0cn5n_vl.js → 1vz2gd8k74lpi.js} +1 -1
- package/out/_next/static/chunks/1wkpl9bfb0wn7.js +1 -0
- package/out/_next/static/chunks/1wrly9a9c3teq.js +1 -0
- package/out/_next/static/chunks/1x0m05155yy4e.js +1 -0
- package/out/_next/static/chunks/{1my968s78he8g.js → 1xf1wfow43ekc.js} +15 -15
- package/out/_next/static/chunks/1y10o40v9odam.js +1 -0
- package/out/_next/static/chunks/{3_gfl66zf638s.js → 1y_zykt3fpen4.js} +901 -906
- package/out/_next/static/chunks/1ye6xtbm16pg4.js +1 -0
- package/out/_next/static/chunks/1z6_57k5h31u7.js +1 -0
- package/out/_next/static/chunks/1zboqft0h6mop.js +1 -0
- package/out/_next/static/chunks/1zr3c351x0ri5.js +1 -0
- package/out/_next/static/chunks/2-5p2lcedvrli.js +1 -0
- package/out/_next/static/chunks/{1_4hh3dfop93j.js → 206hxrq60f1_e.js} +1 -1
- package/out/_next/static/chunks/20r05k3-studj.js +1 -0
- package/out/_next/static/chunks/22gs24kj2du56.js +1 -0
- package/out/_next/static/chunks/22x5pd1gyp7sf.js +1 -0
- package/out/_next/static/chunks/{3qo7e6b73mfxq.js → 22z-2t_yp1jzs.js} +1 -1
- package/out/_next/static/chunks/{3d43gd91r06y6.js → 23hmfdw6z5zfy.js} +507 -505
- package/out/_next/static/chunks/23y1krqnc-8sm.js +1 -0
- package/out/_next/static/chunks/{0gk5rnci1hznh.js → 24tbkj1qkux88.js} +2 -2
- package/out/_next/static/chunks/{2-i29-jdbwww6.js → 26cmri51v7497.js} +111 -111
- package/out/_next/static/chunks/27jalbk9zu-2b.js +1 -0
- package/out/_next/static/chunks/285d2s9096ryc.js +1 -0
- package/out/_next/static/chunks/296ykep2nvppv.js +1 -0
- package/out/_next/static/chunks/29nehg5cal-ug.js +1 -0
- package/out/_next/static/chunks/2_a56_k3x7to6.js +1 -0
- package/out/_next/static/chunks/2a-0l6eb1blh3.js +4 -0
- package/out/_next/static/chunks/{2oacwtbslo90t.js → 2a31-txop1jzg.js} +360 -360
- package/out/_next/static/chunks/2bse5vll1o-x0.js +1 -0
- package/out/_next/static/chunks/2ct40spu9wfj7.js +1 -0
- package/out/_next/static/chunks/{2epukrz6paj9n.js → 2ept01b7t-e03.js} +1 -1
- package/out/_next/static/chunks/{22yht3s7c-xih.js → 2ey5dqelco_g5.js} +1 -1
- package/out/_next/static/chunks/2fd_009hw7y0m.js +1 -0
- package/out/_next/static/chunks/{2fspbfbxbswzd.js → 2ftz9kaxrsgxh.js} +1 -1
- package/out/_next/static/chunks/2gefdnozflr7p.js +1 -0
- package/out/_next/static/chunks/{2as_br1awqk6k.js → 2gs-u1n5uv7iz.js} +496 -496
- package/out/_next/static/chunks/{1a94whad0y57f.js → 2hizqql79u-54.js} +1 -1
- package/out/_next/static/chunks/2iqf2dpdg_vfl.js +1 -0
- package/out/_next/static/chunks/2j7z127s_ycjd.js +1 -0
- package/out/_next/static/chunks/2kax7uslfxdnx.js +31 -0
- package/out/_next/static/chunks/{2laz1v9fg2a2z.js → 2lh_w9rzy3vek.js} +1 -1
- package/out/_next/static/chunks/{3mmy9zsb7zo-m.js → 2ln1na26qwp-3.js} +23 -23
- package/out/_next/static/chunks/2n08l1q5o_27e.js +1 -0
- package/out/_next/static/chunks/2n7268gyd9z-6.js +1 -0
- package/out/_next/static/chunks/2nq9cgjmtqwvp.js +1 -0
- package/out/_next/static/chunks/{25brs445bjbik.js → 2oj8qc_pv14nk.js} +2 -2
- package/out/_next/static/chunks/2q24e72-olbe8.js +1 -0
- package/out/_next/static/chunks/2qc4hscs26cro.js +1 -0
- package/out/_next/static/chunks/2qe46redkqhfg.js +1 -0
- package/out/_next/static/chunks/2qmfe0mqw150h.js +1 -0
- package/out/_next/static/chunks/2qtc0nbl_521e.js +1 -0
- package/out/_next/static/chunks/2rofu6gu1xzuq.js +1 -0
- package/out/_next/static/chunks/2tdi94rkq739i.js +1 -0
- package/out/_next/static/chunks/2u_2sacqa9xa7.js +1 -0
- package/out/_next/static/chunks/2ujqz6088shm5.js +1 -0
- package/out/_next/static/chunks/{3my05px5mv_s5.js → 2urh9qafp3fiw.js} +235 -235
- package/out/_next/static/chunks/{23-y1f_zw56vo.js → 2v06n4z8wsmn9.js} +1 -1
- package/out/_next/static/chunks/2vp-5skbk1nfu.js +1 -0
- package/out/_next/static/chunks/2vu973j_n6cpx.js +1 -0
- package/out/_next/static/chunks/2wwra56rehfcj.js +1 -0
- package/out/_next/static/chunks/2xpwr97h2asal.js +1 -0
- package/out/_next/static/chunks/3000-0b8n9t_2.js +1 -0
- package/out/_next/static/chunks/{0q0i4pdyq66gb.js → 30t3203d7p2da.js} +1 -1
- package/out/_next/static/chunks/{3t4ys6th6gf2w.js → 31kto7-dxkt3z.js} +1 -1
- package/out/_next/static/chunks/{0j0a0wvmmghxj.js → 32oflcl79d8mu.js} +1 -1
- package/out/_next/static/chunks/32ovg81ae0l03.js +1 -0
- package/out/_next/static/chunks/{2c8rmxz151fxa.js → 331kthnvoma7n.js} +224 -224
- package/out/_next/static/chunks/337kn1mn34rc6.js +1 -0
- package/out/_next/static/chunks/{336ckqpboqmbn.js → 33xug8kf0-a1o.js} +1 -1
- package/out/_next/static/chunks/34dcb7_flbrvo.js +1 -0
- package/out/_next/static/chunks/34zotyeqrz_nq.js +1 -0
- package/out/_next/static/chunks/351wsmi75l8db.js +1 -0
- package/out/_next/static/chunks/36yv-ialtpx98.js +1 -0
- package/out/_next/static/chunks/37hwasxtee5e0.js +1 -0
- package/out/_next/static/chunks/37t0iclgxes05.js +1 -0
- package/out/_next/static/chunks/{1x0j78ohufpul.js → 37xnvnx1jxfaf.js} +1 -1
- package/out/_next/static/chunks/{29hkkj9raxte9.js → 38w74ixqt-9co.js} +77 -77
- package/out/_next/static/chunks/{0jap7l5-bskj4.js → 39t2x_9zd2rst.js} +12 -12
- package/out/_next/static/chunks/{38q0enmlg5q9o.js → 39v73timmzwny.js} +2 -2
- package/out/_next/static/chunks/{3puu2_-t0lln9.js → 3_xqc3658d8sw.js} +12 -12
- package/out/_next/static/chunks/3ba8eudvlczwe.js +1 -0
- package/out/_next/static/chunks/3buezhxqc8n6n.js +1 -0
- package/out/_next/static/chunks/3c5iwwj-fhbue.js +1 -0
- package/out/_next/static/chunks/{2kmmk9coo9_b0.js → 3d8ot2tw6yqfq.js} +143 -143
- package/out/_next/static/chunks/3dc057ffe7ij-.js +1 -0
- package/out/_next/static/chunks/3djnlzwj9869o.js +1 -0
- package/out/_next/static/chunks/{2_6b9lraq-exh.js → 3fuqxjjf8o1v9.js} +5 -5
- package/out/_next/static/chunks/{0j2ygtc_-bo3m.js → 3gt6rzg9qw-an.js} +1 -1
- package/out/_next/static/chunks/{0rykrf_vofbad.js → 3h_05w5j8x538.js} +1 -1
- package/out/_next/static/chunks/{3txu-i5qn183a.js → 3hkhd1_k8xohv.js} +321 -321
- package/out/_next/static/chunks/{2h07np207nlx7.js → 3ijcc5tfisfnj.js} +1 -1
- package/out/_next/static/chunks/3j0dbpd9zop3p.js +1 -0
- package/out/_next/static/chunks/{14e4k-718qadd.js → 3ju83xk-ca7ma.js} +163 -168
- package/out/_next/static/chunks/3jxhl4apmhbm1.js +13 -0
- package/out/_next/static/chunks/{1h1gixjbjkbsl.js → 3la99oz_0p0r6.js} +5 -5
- package/out/_next/static/chunks/{1mt4cnd_d6jvf.js → 3n1b34fd5fdrh.js} +1 -1
- package/out/_next/static/chunks/3nq_hq4x3rn3r.js +1 -0
- package/out/_next/static/chunks/3pgb1kkqrdl9t.js +1 -0
- package/out/_next/static/chunks/3pik_-jj-zkfl.js +1 -0
- package/out/_next/static/chunks/{1zmx71cvc6ksk.js → 3q38kdbzd2nbd.js} +1 -1
- package/out/_next/static/chunks/3q5zl4ks17au2.js +1 -0
- package/out/_next/static/chunks/{1t2g1v0ubcsam.js → 3qr10445lte-n.js} +1 -1
- package/out/_next/static/chunks/3r-8bnguvxsyo.js +1 -0
- package/out/_next/static/chunks/3sg56j8boe-3o.js +1 -0
- package/out/_next/static/chunks/3u7zj1-jdg781.js +1 -0
- package/out/_next/static/chunks/{0o0qtv35dqv3i.js → 3wj5dmf6cywz8.js} +239 -239
- package/out/_next/static/chunks/{2iu0_3cx-ny74.js → 3wr_oijfsq8lr.js} +11 -11
- package/out/_next/static/chunks/3xu0dh1ikzwj2.js +1 -0
- package/out/_next/static/chunks/{0vzo-8t8c26k9.js → 3y5tpixt23-fl.js} +1 -1
- package/out/_next/static/chunks/40gjf-_jt8upu.js +5 -0
- package/out/_next/static/chunks/41f12o_5lf-i9.js +1 -0
- package/out/_next/static/chunks/42ma8lqduohlc.js +1 -0
- package/out/_next/static/chunks/43usshq2nc125.js +1 -0
- package/out/_next/static/chunks/{161yjxmdz9obc.js → 44bl4ufopbmyh.js} +1 -1
- package/out/_next/static/chunks/44iutzkw9r21x.js +1 -0
- package/out/_next/static/chunks/turbopack-1xrxa3noq196-.js +1 -0
- package/out/_not-found/__next._full.txt +11 -11
- package/out/_not-found/__next._not-found.__PAGE__.txt +19 -2
- package/out/_not-found/__next._tree.txt +1 -1
- package/out/_not-found.html +1 -1
- package/out/_not-found.txt +11 -11
- package/out/index.html +1 -1
- package/out/index.txt +10 -10
- package/package.json +11 -11
- package/out/__next._head.txt +0 -6
- package/out/__next._index.txt +0 -5
- package/out/_next/static/chunks/0-k4hp87gwues.js +0 -1
- package/out/_next/static/chunks/04zj0yf1qhk1o.js +0 -1
- package/out/_next/static/chunks/06fbalmyyfpsy.js +0 -1
- package/out/_next/static/chunks/07hgbbqksqd1g.js +0 -1
- package/out/_next/static/chunks/08ou2nvy48e0u.js +0 -1
- package/out/_next/static/chunks/08y5-irjbsiy8.js +0 -1
- package/out/_next/static/chunks/0_jrfk2u1u3fi.js +0 -1
- package/out/_next/static/chunks/0a475u_q5i_dd.js +0 -62
- package/out/_next/static/chunks/0aad2r4s4wl1x.js +0 -5
- package/out/_next/static/chunks/0d9pxx1w_zqr9.js +0 -1
- package/out/_next/static/chunks/0gnjtwq-474uc.js +0 -1
- package/out/_next/static/chunks/0gsh_d0m5xss1.js +0 -1
- package/out/_next/static/chunks/0ibzpjo0h731v.js +0 -1
- package/out/_next/static/chunks/0j_3k5qhv_mdx.js +0 -1
- package/out/_next/static/chunks/0jis2w2mfx062.js +0 -1
- package/out/_next/static/chunks/0jjvp2slpf7d6.js +0 -1
- package/out/_next/static/chunks/0ko10wo4rc9-b.js +0 -1
- package/out/_next/static/chunks/0lqmvz6k2h_of.js +0 -1
- package/out/_next/static/chunks/0lwjmr8efrlbt.js +0 -17
- package/out/_next/static/chunks/0noxyupihh8dk.js +0 -1
- package/out/_next/static/chunks/0o1vph7x9shzu.js +0 -1
- package/out/_next/static/chunks/0p6phe9kjlxn8.js +0 -1
- package/out/_next/static/chunks/0ptxb9dcwsw3o.js +0 -1
- package/out/_next/static/chunks/0q8pt8fd0ma30.js +0 -1
- package/out/_next/static/chunks/0qqx9aoz8l5d2.js +0 -1
- package/out/_next/static/chunks/0tsk32q-88t_7.js +0 -1
- package/out/_next/static/chunks/0u7577db_ivyr.js +0 -1
- package/out/_next/static/chunks/0unnrt0un064x.js +0 -1
- package/out/_next/static/chunks/0uygtr4mo3h0v.js +0 -1
- package/out/_next/static/chunks/0vf3facit951s.js +0 -1
- package/out/_next/static/chunks/0xyija62b6txc.js +0 -1
- package/out/_next/static/chunks/0zeb37703zcz3.js +0 -1
- package/out/_next/static/chunks/0zu5ato7-1-q9.js +0 -1
- package/out/_next/static/chunks/0zydv7y47dxgh.js +0 -1
- package/out/_next/static/chunks/103x4jwovb6d-.js +0 -1
- package/out/_next/static/chunks/107wfq84g9-kn.js +0 -1
- package/out/_next/static/chunks/10afagk8yn__n.js +0 -1
- package/out/_next/static/chunks/12ory_c78yl31.js +0 -1
- package/out/_next/static/chunks/133dqp8_7_yo6.js +0 -1
- package/out/_next/static/chunks/1365lgwdd4vuo.js +0 -1
- package/out/_next/static/chunks/146ou-ohb_qhs.js +0 -1
- package/out/_next/static/chunks/14orr68xgdykd.js +0 -1
- package/out/_next/static/chunks/15qfoj-vl9thu.js +0 -1
- package/out/_next/static/chunks/166yqx3_qvbpy.js +0 -1
- package/out/_next/static/chunks/16gwjao676ieb.js +0 -1
- package/out/_next/static/chunks/16rmmzhy2p7bw.js +0 -1
- package/out/_next/static/chunks/17_jjyx4jz9dd.js +0 -1
- package/out/_next/static/chunks/18h9ugdz6igdb.js +0 -1
- package/out/_next/static/chunks/19d8n5t7ka2fb.js +0 -1
- package/out/_next/static/chunks/1_rbzw3n4fk0g.js +0 -1
- package/out/_next/static/chunks/1aa9g197l4twm.js +0 -1
- package/out/_next/static/chunks/1bq0fcnt1wy86.js +0 -1
- package/out/_next/static/chunks/1c6mho7e0enta.js +0 -1
- package/out/_next/static/chunks/1dfaheve77dhi.js +0 -1
- package/out/_next/static/chunks/1dgf112ehnhm1.js +0 -1
- package/out/_next/static/chunks/1eirucr9s6-h5.js +0 -1
- package/out/_next/static/chunks/1fsof7un7igrn.js +0 -1
- package/out/_next/static/chunks/1gvu5a6ffbs7l.js +0 -1
- package/out/_next/static/chunks/1iel4pzhhh-c3.js +0 -1
- package/out/_next/static/chunks/1iojfx3-g4_n9.js +0 -1
- package/out/_next/static/chunks/1j4jt5q7px8sy.js +0 -1
- package/out/_next/static/chunks/1jjw9hxgi2vzi.js +0 -1
- package/out/_next/static/chunks/1k_8olnprvi8r.js +0 -1
- package/out/_next/static/chunks/1l0rt7d4m-xdk.js +0 -5
- package/out/_next/static/chunks/1s0dpdqy480hg.js +0 -1
- package/out/_next/static/chunks/1t-yolk97lmot.js +0 -12
- package/out/_next/static/chunks/1tbes2sv-qzcx.js +0 -1
- package/out/_next/static/chunks/1upy8a5cb75kt.js +0 -1
- package/out/_next/static/chunks/1xed71f608m4b.js +0 -1
- package/out/_next/static/chunks/1z790xxb46gxy.js +0 -1
- package/out/_next/static/chunks/219n3q-_eengm.js +0 -1
- package/out/_next/static/chunks/21wo3vdr_uby8.js +0 -1
- package/out/_next/static/chunks/25gep78-izw79.js +0 -4
- package/out/_next/static/chunks/26i7dn31afdtm.js +0 -1
- package/out/_next/static/chunks/27hbplu797elx.js +0 -1
- package/out/_next/static/chunks/2992eiy52nazj.js +0 -1
- package/out/_next/static/chunks/29_n5j-hg_gsa.js +0 -1
- package/out/_next/static/chunks/29bxq-67oazfg.js +0 -1
- package/out/_next/static/chunks/29ings58w7kp1.js +0 -1
- package/out/_next/static/chunks/2_n0cpkdsjzli.js +0 -1
- package/out/_next/static/chunks/2a3iy701j4r_y.js +0 -1
- package/out/_next/static/chunks/2al9dh3_1ixhv.js +0 -1
- package/out/_next/static/chunks/2awr1c_vfsutb.js +0 -1
- package/out/_next/static/chunks/2bxe3kjr17tdp.js +0 -1
- package/out/_next/static/chunks/2dvbzar93ooc-.js +0 -1
- package/out/_next/static/chunks/2e-vp0e11g9ew.js +0 -1
- package/out/_next/static/chunks/2exj9-0p6n9x-.js +0 -1
- package/out/_next/static/chunks/2gf8l6hbmt7v3.js +0 -1
- package/out/_next/static/chunks/2h9i_adbqaxs4.js +0 -1
- package/out/_next/static/chunks/2jio3sio-_43z.js +0 -1
- package/out/_next/static/chunks/2neieeo9g2u56.js +0 -1
- package/out/_next/static/chunks/2pb_uosb-aa8x.js +0 -1
- package/out/_next/static/chunks/2qu-gpm3ux1l6.js +0 -1
- package/out/_next/static/chunks/2rsi6v7qmqx2b.js +0 -1
- package/out/_next/static/chunks/2tdvuc-27khif.js +0 -1
- package/out/_next/static/chunks/2trolrgd7neax.js +0 -1
- package/out/_next/static/chunks/2uyuafmoe5wi0.js +0 -3
- package/out/_next/static/chunks/2w2e0pxgs-n8f.js +0 -1
- package/out/_next/static/chunks/2xujlsx3stqig.js +0 -1
- package/out/_next/static/chunks/30y71dxdpv52d.js +0 -1
- package/out/_next/static/chunks/32c-e_v8_2xkf.js +0 -1
- package/out/_next/static/chunks/32oj0iudhp8bm.js +0 -1
- package/out/_next/static/chunks/33p9du6y9eegg.js +0 -1
- package/out/_next/static/chunks/38om-j0h0rryk.js +0 -1
- package/out/_next/static/chunks/39cou9lia_g7l.js +0 -1
- package/out/_next/static/chunks/39pkya0_bvcaj.js +0 -1
- package/out/_next/static/chunks/39rhmj_32ujyj.js +0 -1
- package/out/_next/static/chunks/3_1zzmx92j9c0.js +0 -1
- package/out/_next/static/chunks/3_earszshuz4n.js +0 -1
- package/out/_next/static/chunks/3ap_uxc8lx7ni.js +0 -1
- package/out/_next/static/chunks/3b6na8zrex8jo.js +0 -1
- package/out/_next/static/chunks/3c0cxt72vilyz.js +0 -1
- package/out/_next/static/chunks/3g78x0pdaoi_4.js +0 -1
- package/out/_next/static/chunks/3gjvl1p-tugfe.js +0 -4
- package/out/_next/static/chunks/3i8iro1gas1vx.js +0 -1
- package/out/_next/static/chunks/3kpqfqr99vo7z.js +0 -1
- package/out/_next/static/chunks/3lladf_wemm-2.js +0 -1
- package/out/_next/static/chunks/3n62hbywoknop.js +0 -1
- package/out/_next/static/chunks/3o_dmzpahx-5g.js +0 -1
- package/out/_next/static/chunks/3r7v7un976sn7.js +0 -1
- package/out/_next/static/chunks/3rl_nhqwew40w.js +0 -1
- package/out/_next/static/chunks/3s7hqij6xp_4e.js +0 -1
- package/out/_next/static/chunks/3si3migsmvz9o.js +0 -1
- package/out/_next/static/chunks/3uarw1i1ij1er.js +0 -1
- package/out/_next/static/chunks/3un-w6wutw1qn.js +0 -1
- package/out/_next/static/chunks/3v8kgnjk27wbe.js +0 -1
- package/out/_next/static/chunks/3we1khqfexh3x.js +0 -1
- package/out/_next/static/chunks/3z35loj4i-id4.js +0 -1
- package/out/_next/static/chunks/42lqt7ig40wk5.js +0 -1
- package/out/_next/static/chunks/42s6ghsurq5q7.js +0 -1
- package/out/_next/static/chunks/42yctcfi2rfwr.js +0 -1
- package/out/_next/static/chunks/43_fau1gg69eo.js +0 -1
- package/out/_next/static/chunks/43ywrdzg_7af8.js +0 -31
- package/out/_next/static/chunks/44m1ijc5cv80x.js +0 -1
- package/out/_next/static/chunks/453_bg0lgesmp.js +0 -1
- package/out/_next/static/chunks/turbopack-1s36ieuku1ds3.js +0 -1
- package/out/_not-found/__next._head.txt +0 -6
- package/out/_not-found/__next._index.txt +0 -5
- package/out/_not-found/__next._not-found.txt +0 -5
- /package/out/_next/static/{5UjNvd7WCk97iC2cSmEGH → 4r0L0ZMJeBwOJCVDsvvZ4}/_buildManifest.js +0 -0
- /package/out/_next/static/{5UjNvd7WCk97iC2cSmEGH → 4r0L0ZMJeBwOJCVDsvvZ4}/_clientMiddlewareManifest.js +0 -0
- /package/out/_next/static/{5UjNvd7WCk97iC2cSmEGH → 4r0L0ZMJeBwOJCVDsvvZ4}/_ssgManifest.js +0 -0
|
@@ -1,333 +1,4 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,
|
|
2
|
-
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;
|
|
3
|
-
#define saturate(x) clamp(x,0.0,1.0)
|
|
4
|
-
#define absEps(x) abs(x)+Epsilon
|
|
5
|
-
#define maxEps(x) max(x,Epsilon)
|
|
6
|
-
#define saturateEps(x) clamp(x,Epsilon,1.0)
|
|
7
|
-
mat3 transposeMat3(mat3 inMatrix) {vec3 i0=inMatrix[0];vec3 i1=inMatrix[1];vec3 i2=inMatrix[2];mat3 outMatrix=mat3(
|
|
8
|
-
vec3(i0.x,i1.x,i2.x),
|
|
9
|
-
vec3(i0.y,i1.y,i2.y),
|
|
10
|
-
vec3(i0.z,i1.z,i2.z)
|
|
11
|
-
);return outMatrix;}
|
|
12
|
-
mat3 inverseMat3(mat3 inMatrix) {float a00=inMatrix[0][0],a01=inMatrix[0][1],a02=inMatrix[0][2];float a10=inMatrix[1][0],a11=inMatrix[1][1],a12=inMatrix[1][2];float a20=inMatrix[2][0],a21=inMatrix[2][1],a22=inMatrix[2][2];float b01=a22*a11-a12*a21;float b11=-a22*a10+a12*a20;float b21=a21*a10-a11*a20;float det=a00*b01+a01*b11+a02*b21;return mat3(b01,(-a22*a01+a02*a21),(a12*a01-a02*a11),
|
|
13
|
-
b11,(a22*a00-a02*a20),(-a12*a00+a02*a10),
|
|
14
|
-
b21,(-a21*a00+a01*a20),(a11*a00-a01*a10))/det;}
|
|
15
|
-
#if USE_EXACT_SRGB_CONVERSIONS
|
|
16
|
-
vec3 toLinearSpaceExact(vec3 color)
|
|
17
|
-
{vec3 nearZeroSection=0.0773993808*color;vec3 remainingSection=pow(0.947867299*(color+vec3(0.055)),vec3(2.4));
|
|
18
|
-
#if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)
|
|
19
|
-
return mix(remainingSection,nearZeroSection,lessThanEqual(color,vec3(0.04045)));
|
|
20
|
-
#else
|
|
21
|
-
return
|
|
22
|
-
vec3(
|
|
23
|
-
color.r<=0.04045 ? nearZeroSection.r : remainingSection.r,
|
|
24
|
-
color.g<=0.04045 ? nearZeroSection.g : remainingSection.g,
|
|
25
|
-
color.b<=0.04045 ? nearZeroSection.b : remainingSection.b);
|
|
26
|
-
#endif
|
|
27
|
-
}
|
|
28
|
-
vec3 toGammaSpaceExact(vec3 color)
|
|
29
|
-
{vec3 nearZeroSection=12.92*color;vec3 remainingSection=1.055*pow(color,vec3(0.41666))-vec3(0.055);
|
|
30
|
-
#if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)
|
|
31
|
-
return mix(remainingSection,nearZeroSection,lessThanEqual(color,vec3(0.0031308)));
|
|
32
|
-
#else
|
|
33
|
-
return
|
|
34
|
-
vec3(
|
|
35
|
-
color.r<=0.0031308 ? nearZeroSection.r : remainingSection.r,
|
|
36
|
-
color.g<=0.0031308 ? nearZeroSection.g : remainingSection.g,
|
|
37
|
-
color.b<=0.0031308 ? nearZeroSection.b : remainingSection.b);
|
|
38
|
-
#endif
|
|
39
|
-
}
|
|
40
|
-
#endif
|
|
41
|
-
float toLinearSpace(float color)
|
|
42
|
-
{
|
|
43
|
-
#if USE_EXACT_SRGB_CONVERSIONS
|
|
44
|
-
float nearZeroSection=0.0773993808*color;float remainingSection=pow(0.947867299*(color+0.055),2.4);return color<=0.04045 ? nearZeroSection : remainingSection;
|
|
45
|
-
#else
|
|
46
|
-
return pow(color,LinearEncodePowerApprox);
|
|
47
|
-
#endif
|
|
48
|
-
}
|
|
49
|
-
vec3 toLinearSpace(vec3 color)
|
|
50
|
-
{
|
|
51
|
-
#if USE_EXACT_SRGB_CONVERSIONS
|
|
52
|
-
return toLinearSpaceExact(color);
|
|
53
|
-
#else
|
|
54
|
-
return pow(color,vec3(LinearEncodePowerApprox));
|
|
55
|
-
#endif
|
|
56
|
-
}
|
|
57
|
-
vec4 toLinearSpace(vec4 color)
|
|
58
|
-
{
|
|
59
|
-
#if USE_EXACT_SRGB_CONVERSIONS
|
|
60
|
-
return vec4(toLinearSpaceExact(color.rgb),color.a);
|
|
61
|
-
#else
|
|
62
|
-
return vec4(pow(color.rgb,vec3(LinearEncodePowerApprox)),color.a);
|
|
63
|
-
#endif
|
|
64
|
-
}
|
|
65
|
-
float toGammaSpace(float color)
|
|
66
|
-
{
|
|
67
|
-
#if USE_EXACT_SRGB_CONVERSIONS
|
|
68
|
-
float nearZeroSection=12.92*color;float remainingSection=1.055*pow(color,0.41666)-0.055;return color<=0.0031308 ? nearZeroSection : remainingSection;
|
|
69
|
-
#else
|
|
70
|
-
return pow(color,GammaEncodePowerApprox);
|
|
71
|
-
#endif
|
|
72
|
-
}
|
|
73
|
-
vec3 toGammaSpace(vec3 color)
|
|
74
|
-
{
|
|
75
|
-
#if USE_EXACT_SRGB_CONVERSIONS
|
|
76
|
-
return toGammaSpaceExact(color);
|
|
77
|
-
#else
|
|
78
|
-
return pow(color,vec3(GammaEncodePowerApprox));
|
|
79
|
-
#endif
|
|
80
|
-
}
|
|
81
|
-
vec4 toGammaSpace(vec4 color)
|
|
82
|
-
{
|
|
83
|
-
#if USE_EXACT_SRGB_CONVERSIONS
|
|
84
|
-
return vec4(toGammaSpaceExact(color.rgb),color.a);
|
|
85
|
-
#else
|
|
86
|
-
return vec4(pow(color.rgb,vec3(GammaEncodePowerApprox)),color.a);
|
|
87
|
-
#endif
|
|
88
|
-
}
|
|
89
|
-
float square(float value)
|
|
90
|
-
{return value*value;}
|
|
91
|
-
vec3 square(vec3 value)
|
|
92
|
-
{return value*value;}
|
|
93
|
-
float pow5(float value) {float sq=value*value;return sq*sq*value;}
|
|
94
|
-
vec3 double_refract(vec3 I,vec3 N,float eta) {vec3 Tfront=refract(I,N,1.0/eta);vec3 Nback=normalize(reflect(N,Tfront));return refract(Tfront,-Nback,eta);}
|
|
95
|
-
float getLuminanceUnclamped(vec3 color)
|
|
96
|
-
{return dot(color,LuminanceEncodeApprox);}
|
|
97
|
-
float getLuminance(vec3 color)
|
|
98
|
-
{return saturate(getLuminanceUnclamped(color));}
|
|
99
|
-
float getRand(vec2 seed) {return fract(sin(dot(seed.xy ,vec2(12.9898,78.233)))*43758.5453);}
|
|
100
|
-
float dither(vec2 seed,float varianceAmount) {float rand=getRand(seed);float normVariance=varianceAmount/255.0;float dither=mix(-normVariance,normVariance,rand);return dither;}
|
|
101
|
-
const float rgbdMaxRange=255.;vec4 toRGBD(vec3 color) {float maxRGB=maxEps(max(color.r,max(color.g,color.b)));float D =max(rgbdMaxRange/maxRGB,1.);D =saturate(floor(D)/255.);vec3 rgb=color.rgb*D;rgb=toGammaSpace(rgb);return vec4(saturate(rgb),D);}
|
|
102
|
-
vec3 fromRGBD(vec4 rgbd) {rgbd.rgb=toLinearSpace(rgbd.rgb);return rgbd.rgb/rgbd.a;}
|
|
103
|
-
vec3 parallaxCorrectNormal( vec3 vertexPos,vec3 origVec,vec3 cubeSize,vec3 cubePos ) {vec3 invOrigVec=vec3(1.)/origVec;vec3 halfSize=cubeSize*0.5;vec3 intersecAtMaxPlane=(cubePos+halfSize-vertexPos)*invOrigVec;vec3 intersecAtMinPlane=(cubePos-halfSize-vertexPos)*invOrigVec;vec3 largestIntersec=max(intersecAtMaxPlane,intersecAtMinPlane);float distance=min(min(largestIntersec.x,largestIntersec.y),largestIntersec.z);vec3 intersectPositionWS=vertexPos+origVec*distance;return intersectPositionWS-cubePos;}
|
|
104
|
-
vec3 equirectangularToCubemapDirection(vec2 uv) {float longitude=uv.x*TWO_PI-PI;float latitude=HALF_PI-uv.y*PI;vec3 direction;direction.x=cos(latitude)*sin(longitude);direction.y=sin(latitude);direction.z=cos(latitude)*cos(longitude);return direction;}
|
|
105
|
-
float sqrtClamped(float value) {return sqrt(max(value,0.));}
|
|
106
|
-
float avg(vec3 value) {return dot(value,vec3(0.333333333));}
|
|
107
|
-
#if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)
|
|
108
|
-
uint extractBits(uint value,int offset,int width) {return (value>>offset) & ((1u<<width)-1u);}
|
|
109
|
-
int onlyBitPosition(uint value) {return (floatBitsToInt(float(value))>>23)-0x7f;}
|
|
110
|
-
vec3 singleScatterToMultiScatterAlbedo(vec3 rho_ss) {vec3 s=sqrt(max(vec3(1.0)-rho_ss,vec3(0.0)));return (vec3(1.0)-s)*(vec3(1.0)-vec3(0.139)*s)/(vec3(1.0)+vec3(1.17)*s);}
|
|
111
|
-
vec3 multiScatterToSingleScatterAlbedo(vec3 rho_ms) {vec3 s=4.09712+4.20863*rho_ms-sqrt(9.59217+41.6808*rho_ms+17.7126*rho_ms*rho_ms);return 1.0-s*s;}
|
|
112
|
-
vec3 multiScatterToSingleScatterAlbedo(vec3 rho_ms,float aniso) {vec3 s=4.09712+4.20863*rho_ms-sqrt(9.59217+41.6808*rho_ms+17.7126*rho_ms*rho_ms);return (1.0-s*s)/maxEps(1.0-aniso*s*s);}
|
|
113
|
-
float min3(vec3 v) {return min(v.x,min(v.y,v.z));}
|
|
114
|
-
float max3(vec3 v) {return max(v.x,max(v.y,v.z));}
|
|
115
|
-
float uint2float(uint i) {return uintBitsToFloat(0x3F800000u | (i>>9u))-1.0;}
|
|
116
|
-
vec2 plasticSequence(const uint rstate) {return vec2(uint2float(rstate*3242174889u),
|
|
117
|
-
uint2float(rstate*2447445414u));}
|
|
118
|
-
#endif
|
|
119
|
-
`;t.ShaderStore.IncludesShadersStore[i]||(t.ShaderStore.IncludesShadersStore[i]=o),e.s(["helperFunctions",0,{name:i,shader:o}])},68381,e=>{"use strict";var t=e.i(47150);let i="logDepthDeclaration",o=`#ifdef LOGARITHMICDEPTH
|
|
120
|
-
uniform float logarithmicDepthConstant;varying float vFragmentDepth;
|
|
121
|
-
#endif
|
|
122
|
-
`;t.ShaderStore.IncludesShadersStore[i]||(t.ShaderStore.IncludesShadersStore[i]=o),e.s(["logDepthDeclaration",0,{name:i,shader:o}])},67827,e=>{"use strict";var t=e.i(47150);let i="sceneUboDeclaration",o=`layout(std140,column_major) uniform;uniform Scene {mat4 viewProjection;
|
|
123
|
-
#ifdef MULTIVIEW
|
|
124
|
-
mat4 viewProjectionR;
|
|
125
|
-
#endif
|
|
126
|
-
mat4 view;mat4 projection;vec4 vEyePosition;mat4 inverseProjection;};
|
|
127
|
-
`;t.ShaderStore.IncludesShadersStore[i]||(t.ShaderStore.IncludesShadersStore[i]=o),e.s(["sceneUboDeclaration",0,{name:i,shader:o}])},38605,e=>{"use strict";var t=e.i(47150);let i="meshUboDeclaration",o=`#ifdef WEBGL2
|
|
128
|
-
uniform mat4 world;uniform float visibility;
|
|
129
|
-
#else
|
|
130
|
-
layout(std140,column_major) uniform;uniform Mesh
|
|
131
|
-
{mat4 world;float visibility;};
|
|
132
|
-
#endif
|
|
133
|
-
#define WORLD_UBO
|
|
134
|
-
`;t.ShaderStore.IncludesShadersStore[i]||(t.ShaderStore.IncludesShadersStore[i]=o),e.s(["meshUboDeclaration",0,{name:i,shader:o}])},30868,e=>{"use strict";var t=e.i(47150);let i="mainUVVaryingDeclaration",o=`#ifdef MAINUV{X}
|
|
135
|
-
varying vec2 vMainUV{X};
|
|
136
|
-
#endif
|
|
137
|
-
`;t.ShaderStore.IncludesShadersStore[i]||(t.ShaderStore.IncludesShadersStore[i]=o),e.s(["mainUVVaryingDeclaration",0,{name:i,shader:o}])},88913,e=>{"use strict";var t=e.i(47150);let i="harmonicsFunctions",o=`#ifdef USESPHERICALFROMREFLECTIONMAP
|
|
138
|
-
#ifdef SPHERICAL_HARMONICS
|
|
139
|
-
vec3 computeEnvironmentIrradiance(vec3 normal) {return vSphericalL00
|
|
140
|
-
+ vSphericalL1_1*(normal.y)
|
|
141
|
-
+ vSphericalL10*(normal.z)
|
|
142
|
-
+ vSphericalL11*(normal.x)
|
|
143
|
-
+ vSphericalL2_2*(normal.y*normal.x)
|
|
144
|
-
+ vSphericalL2_1*(normal.y*normal.z)
|
|
145
|
-
+ vSphericalL20*((3.0*normal.z*normal.z)-1.0)
|
|
146
|
-
+ vSphericalL21*(normal.z*normal.x)
|
|
147
|
-
+ vSphericalL22*(normal.x*normal.x-(normal.y*normal.y));}
|
|
148
|
-
#else
|
|
149
|
-
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;}
|
|
150
|
-
#endif
|
|
151
|
-
#endif
|
|
152
|
-
`;t.ShaderStore.IncludesShadersStore[i]||(t.ShaderStore.IncludesShadersStore[i]=o),e.s(["harmonicsFunctions",0,{name:i,shader:o}])},98680,e=>{"use strict";var t=e.i(47150);let i="pbrBRDFFunctions",o=`#define FRESNEL_MAXIMUM_ON_ROUGH 0.25
|
|
153
|
-
#define BRDF_DIFFUSE_MODEL_EON 0
|
|
154
|
-
#define BRDF_DIFFUSE_MODEL_BURLEY 1
|
|
155
|
-
#define BRDF_DIFFUSE_MODEL_LAMBERT 2
|
|
156
|
-
#define BRDF_DIFFUSE_MODEL_LEGACY 3
|
|
157
|
-
#define DIELECTRIC_SPECULAR_MODEL_GLTF 0
|
|
158
|
-
#define DIELECTRIC_SPECULAR_MODEL_OPENPBR 1
|
|
159
|
-
#define CONDUCTOR_SPECULAR_MODEL_GLTF 0
|
|
160
|
-
#define CONDUCTOR_SPECULAR_MODEL_OPENPBR 1
|
|
161
|
-
#if !defined(PBR_VERTEX_SHADER) && !defined(OPENPBR_VERTEX_SHADER)
|
|
162
|
-
#ifdef MS_BRDF_ENERGY_CONSERVATION
|
|
163
|
-
vec3 getEnergyConservationFactor(const vec3 specularEnvironmentR0,const vec3 environmentBrdf) {return 1.0+specularEnvironmentR0*(1.0/environmentBrdf.y-1.0);}
|
|
164
|
-
#endif
|
|
165
|
-
#if CONDUCTOR_SPECULAR_MODEL==CONDUCTOR_SPECULAR_MODEL_OPENPBR
|
|
166
|
-
#define F82_COS_THETA_MAX 0.142857143
|
|
167
|
-
#define F82_ONE_MINUS_CTM_POW5 0.462664366
|
|
168
|
-
#define F82_ONE_MINUS_CTM_POW6 0.396569457
|
|
169
|
-
#define F82_B_DENOMINATOR_RECIP 17.6512785
|
|
170
|
-
#define BRDF_Z_SCALE 16.0
|
|
171
|
-
vec3 getF82Specular(float NdotV,vec3 F0,vec3 edgeTint,float roughness) {vec3 white_minus_F0=vec3(1.0)-F0;vec3 b=(F0+white_minus_F0*F82_ONE_MINUS_CTM_POW5)*(vec3(1.0)-edgeTint)*F82_B_DENOMINATOR_RECIP;float cos_theta=max(roughness,NdotV);float one_minus_cos_theta=1.0-cos_theta;vec3 offset_from_F0=(white_minus_F0-b*cos_theta*one_minus_cos_theta)*pow(one_minus_cos_theta,5.0);return clamp(F0+offset_from_F0,0.0,1.0);}
|
|
172
|
-
vec3 getF82B(vec3 F0,vec3 edgeTint) {return (F0+(vec3(1.0)-F0)*F82_ONE_MINUS_CTM_POW5)*(vec3(1.0)-edgeTint)*F82_B_DENOMINATOR_RECIP;}
|
|
173
|
-
vec3 getF82DirectionalAlbedo(vec3 F0,vec3 F90,vec3 b,vec3 environmentBrdf) {return (F90-F0)*environmentBrdf.x+F0*environmentBrdf.y-b*environmentBrdf.z;}
|
|
174
|
-
vec3 getF82AverageFresnel(vec3 F0,vec3 b) {return F0+(vec3(1.0)-F0)/21.0-b/126.0;}
|
|
175
|
-
#endif
|
|
176
|
-
#ifdef FUZZENVIRONMENTBRDF
|
|
177
|
-
vec3 getFuzzBRDFLookup(float NdotV,float perceptualRoughness) {vec2 UV=vec2(perceptualRoughness,NdotV);vec4 brdfLookup=texture2D(environmentFuzzBrdfSampler,UV);const vec2 RiRange=vec2(0.0,0.75);const vec2 ARange =vec2(0.005,0.88);const vec2 BRange =vec2(-0.18,0.002);brdfLookup.r=mix(ARange.x, ARange.y, brdfLookup.r);brdfLookup.g=mix(BRange.x, BRange.y, brdfLookup.g);brdfLookup.b=mix(RiRange.x,RiRange.y,brdfLookup.b);return brdfLookup.rgb;}
|
|
178
|
-
#endif
|
|
179
|
-
#ifdef ENVIRONMENTBRDF
|
|
180
|
-
vec3 getBRDFLookup(float NdotV,float perceptualRoughness) {vec2 UV=vec2(NdotV,perceptualRoughness);vec4 brdfLookup=texture2D(environmentBrdfSampler,UV);
|
|
181
|
-
#ifdef ENVIRONMENTBRDF_RGBD
|
|
182
|
-
brdfLookup.rgb=fromRGBD(brdfLookup.rgba);
|
|
183
|
-
#endif
|
|
184
|
-
return brdfLookup.rgb;}
|
|
185
|
-
vec3 getReflectanceFromBRDFLookup(const vec3 specularEnvironmentR0,const vec3 specularEnvironmentR90,const vec3 environmentBrdf) {
|
|
186
|
-
#ifdef BRDF_V_HEIGHT_CORRELATED
|
|
187
|
-
vec3 reflectance=(specularEnvironmentR90-specularEnvironmentR0)*environmentBrdf.x+specularEnvironmentR0*environmentBrdf.y;
|
|
188
|
-
#else
|
|
189
|
-
vec3 reflectance=specularEnvironmentR0*environmentBrdf.x+specularEnvironmentR90*environmentBrdf.y;
|
|
190
|
-
#endif
|
|
191
|
-
return reflectance;}
|
|
192
|
-
vec3 getReflectanceFromBRDFLookup(const vec3 specularEnvironmentR0,const vec3 environmentBrdf) {
|
|
193
|
-
#ifdef BRDF_V_HEIGHT_CORRELATED
|
|
194
|
-
vec3 reflectance=mix(environmentBrdf.xxx,environmentBrdf.yyy,specularEnvironmentR0);
|
|
195
|
-
#else
|
|
196
|
-
vec3 reflectance=specularEnvironmentR0*environmentBrdf.x+environmentBrdf.y;
|
|
197
|
-
#endif
|
|
198
|
-
return reflectance;}
|
|
199
|
-
#endif
|
|
200
|
-
/* NOT USED
|
|
201
|
-
#if defined(SHEEN) && defined(SHEEN_SOFTER)
|
|
202
|
-
float getBRDFLookupCharlieSheen(float NdotV,float perceptualRoughness)
|
|
203
|
-
{float c=1.0-NdotV;float c3=c*c*c;return 0.65584461*c3+1.0/(4.16526551+exp(-7.97291361*perceptualRoughness+6.33516894));}
|
|
204
|
-
#endif
|
|
205
|
-
*/
|
|
206
|
-
#if !defined(ENVIRONMENTBRDF) || defined(REFLECTIONMAP_SKYBOX) || defined(ALPHAFRESNEL)
|
|
207
|
-
vec3 getReflectanceFromAnalyticalBRDFLookup_Jones(float VdotN,vec3 reflectance0,vec3 reflectance90,float smoothness)
|
|
208
|
-
{float weight=mix(FRESNEL_MAXIMUM_ON_ROUGH,1.0,smoothness);return reflectance0+weight*(reflectance90-reflectance0)*pow5(saturate(1.0-VdotN));}
|
|
209
|
-
#endif
|
|
210
|
-
#if defined(SHEEN) && defined(ENVIRONMENTBRDF)
|
|
211
|
-
/**
|
|
212
|
-
* The sheen BRDF not containing F can be easily stored in the blue channel of the BRDF texture.
|
|
213
|
-
* The blue channel contains DCharlie*VAshikhmin*NdotL as a lokkup table
|
|
214
|
-
*/
|
|
215
|
-
vec3 getSheenReflectanceFromBRDFLookup(const vec3 reflectance0,const vec3 environmentBrdf) {vec3 sheenEnvironmentReflectance=reflectance0*environmentBrdf.b;return sheenEnvironmentReflectance;}
|
|
216
|
-
#endif
|
|
217
|
-
vec3 fresnelSchlickGGX(float VdotH,vec3 reflectance0,vec3 reflectance90)
|
|
218
|
-
{return reflectance0+(reflectance90-reflectance0)*pow5(1.0-VdotH);}
|
|
219
|
-
float fresnelSchlickGGX(float VdotH,float reflectance0,float reflectance90)
|
|
220
|
-
{return reflectance0+(reflectance90-reflectance0)*pow5(1.0-VdotH);}
|
|
221
|
-
#ifdef CLEARCOAT
|
|
222
|
-
vec3 getR0RemappedForClearCoat(vec3 f0) {
|
|
223
|
-
#ifdef CLEARCOAT_DEFAULTIOR
|
|
224
|
-
#ifdef MOBILE
|
|
225
|
-
return saturate(f0*(f0*0.526868+0.529324)-0.0482256);
|
|
226
|
-
#else
|
|
227
|
-
return saturate(f0*(f0*(0.941892-0.263008*f0)+0.346479)-0.0285998);
|
|
228
|
-
#endif
|
|
229
|
-
#else
|
|
230
|
-
vec3 s=sqrt(f0);vec3 t=(vClearCoatRefractionParams.z+vClearCoatRefractionParams.w*s)/(vClearCoatRefractionParams.w+vClearCoatRefractionParams.z*s);return square(t);
|
|
231
|
-
#endif
|
|
232
|
-
}
|
|
233
|
-
#endif
|
|
234
|
-
#ifdef IRIDESCENCE
|
|
235
|
-
const mat3 XYZ_TO_REC709=mat3(
|
|
236
|
-
3.2404542,-0.9692660, 0.0556434,
|
|
237
|
-
-1.5371385, 1.8760108,-0.2040259,
|
|
238
|
-
-0.4985314, 0.0415560, 1.0572252
|
|
239
|
-
);vec3 getIORTfromAirToSurfaceR0(vec3 f0) {vec3 sqrtF0=sqrt(f0);return (1.+sqrtF0)/(1.-sqrtF0);}
|
|
240
|
-
vec3 getR0fromIORs(vec3 iorT,float iorI) {return square((iorT-vec3(iorI))/(iorT+vec3(iorI)));}
|
|
241
|
-
float getR0fromIORs(float iorT,float iorI) {return square((iorT-iorI)/(iorT+iorI));}
|
|
242
|
-
vec3 evalSensitivity(float opd,vec3 shift) {float phase=2.0*PI*opd*1.0e-9;const vec3 val=vec3(5.4856e-13,4.4201e-13,5.2481e-13);const vec3 pos=vec3(1.6810e+06,1.7953e+06,2.2084e+06);const vec3 var=vec3(4.3278e+09,9.3046e+09,6.6121e+09);vec3 xyz=val*sqrt(2.0*PI*var)*cos(pos*phase+shift)*exp(-square(phase)*var);xyz.x+=9.7470e-14*sqrt(2.0*PI*4.5282e+09)*cos(2.2399e+06*phase+shift[0])*exp(-4.5282e+09*square(phase));xyz/=1.0685e-7;vec3 srgb=XYZ_TO_REC709*xyz;return srgb;}
|
|
243
|
-
vec3 evalIridescence(float outsideIOR,float eta2,float cosTheta1,float thinFilmThickness,vec3 baseF0) {vec3 I=vec3(1.0);float iridescenceIOR=mix(outsideIOR,eta2,smoothstep(0.0,0.03,thinFilmThickness));float sinTheta2Sq=square(outsideIOR/iridescenceIOR)*(1.0-square(cosTheta1));float cosTheta2Sq=1.0-sinTheta2Sq;if (cosTheta2Sq<0.0) {return I;}
|
|
244
|
-
float cosTheta2=sqrt(cosTheta2Sq);float R0=getR0fromIORs(iridescenceIOR,outsideIOR);float R12=fresnelSchlickGGX(cosTheta1,R0,1.);float R21=R12;float T121=1.0-R12;float phi12=0.0;if (iridescenceIOR<outsideIOR) phi12=PI;float phi21=PI-phi12;vec3 baseIOR=getIORTfromAirToSurfaceR0(clamp(baseF0,0.0,0.9999));
|
|
245
|
-
vec3 R1=getR0fromIORs(baseIOR,iridescenceIOR);float maxR1=max(R1.r,max(R1.g,R1.b));if (maxR1<1e-6) {return max(vec3(R12),vec3(0.0));}
|
|
246
|
-
vec3 R23=fresnelSchlickGGX(cosTheta2,R1,vec3(1.));vec3 phi23=vec3(0.0);if (baseIOR[0]<iridescenceIOR) phi23[0]=PI;if (baseIOR[1]<iridescenceIOR) phi23[1]=PI;if (baseIOR[2]<iridescenceIOR) phi23[2]=PI;float opd=2.0*iridescenceIOR*thinFilmThickness*cosTheta2;vec3 phi=vec3(phi21)+phi23;vec3 R123=clamp(R12*R23,1e-5,0.9999);vec3 r123=sqrt(R123);vec3 Rs=square(T121)*R23/(vec3(1.0)-R123);vec3 C0=R12+Rs;I=C0;vec3 Cm=Rs-T121;for (int m=1; m<=2; ++m)
|
|
247
|
-
{Cm*=r123;vec3 Sm=2.0*evalSensitivity(float(m)*opd,float(m)*phi);I+=Cm*Sm;}
|
|
248
|
-
return max(I,vec3(0.0));}
|
|
249
|
-
#endif
|
|
250
|
-
float normalDistributionFunction_TrowbridgeReitzGGX(float NdotH,float alphaG)
|
|
251
|
-
{float a2=square(alphaG);float d=NdotH*NdotH*(a2-1.0)+1.0;return a2/(PI*d*d);}
|
|
252
|
-
#ifdef SHEEN
|
|
253
|
-
float normalDistributionFunction_CharlieSheen(float NdotH,float alphaG)
|
|
254
|
-
{float invR=1./alphaG;float cos2h=NdotH*NdotH;float sin2h=1.-cos2h;return (2.+invR)*pow(sin2h,invR*.5)/(2.*PI);}
|
|
255
|
-
#endif
|
|
256
|
-
#ifdef ANISOTROPIC
|
|
257
|
-
float normalDistributionFunction_BurleyGGX_Anisotropic(float NdotH,float TdotH,float BdotH,const vec2 alphaTB) {float a2=alphaTB.x*alphaTB.y;vec3 v=vec3(alphaTB.y*TdotH,alphaTB.x *BdotH,a2*NdotH);float v2=dot(v,v);float w2=a2/v2;return a2*w2*w2*RECIPROCAL_PI;}
|
|
258
|
-
#endif
|
|
259
|
-
#ifdef BRDF_V_HEIGHT_CORRELATED
|
|
260
|
-
float smithVisibility_GGXCorrelated(float NdotL,float NdotV,float alphaG) {
|
|
261
|
-
#ifdef MOBILE
|
|
262
|
-
float GGXV=NdotL*(NdotV*(1.0-alphaG)+alphaG);float GGXL=NdotV*(NdotL*(1.0-alphaG)+alphaG);return 0.5/(GGXV+GGXL);
|
|
263
|
-
#else
|
|
264
|
-
float a2=alphaG*alphaG;float GGXV=NdotL*sqrt(NdotV*(NdotV-a2*NdotV)+a2);float GGXL=NdotV*sqrt(NdotL*(NdotL-a2*NdotL)+a2);return 0.5/(GGXV+GGXL);
|
|
265
|
-
#endif
|
|
266
|
-
}
|
|
267
|
-
#else
|
|
268
|
-
float smithVisibilityG1_TrowbridgeReitzGGXFast(float dot,float alphaG)
|
|
269
|
-
{
|
|
270
|
-
#ifdef MOBILE
|
|
271
|
-
return 1.0/(dot+alphaG+(1.0-alphaG)*dot ));
|
|
272
|
-
#else
|
|
273
|
-
float alphaSquared=alphaG*alphaG;return 1.0/(dot+sqrt(alphaSquared+(1.0-alphaSquared)*dot*dot));
|
|
274
|
-
#endif
|
|
275
|
-
}
|
|
276
|
-
float smithVisibility_TrowbridgeReitzGGXFast(float NdotL,float NdotV,float alphaG)
|
|
277
|
-
{float visibility=smithVisibilityG1_TrowbridgeReitzGGXFast(NdotL,alphaG)*smithVisibilityG1_TrowbridgeReitzGGXFast(NdotV,alphaG);return visibility;}
|
|
278
|
-
#endif
|
|
279
|
-
#ifdef ANISOTROPIC
|
|
280
|
-
float smithVisibility_GGXCorrelated_Anisotropic(float NdotL,float NdotV,float TdotV,float BdotV,float TdotL,float BdotL,const vec2 alphaTB) {float lambdaV=NdotL*length(vec3(alphaTB.x*TdotV,alphaTB.y*BdotV,NdotV));float lambdaL=NdotV*length(vec3(alphaTB.x*TdotL,alphaTB.y*BdotL,NdotL));float v=0.5/(lambdaV+lambdaL);return v;}
|
|
281
|
-
#endif
|
|
282
|
-
#ifdef CLEARCOAT
|
|
283
|
-
float visibility_Kelemen(float VdotH) {return 0.25/(VdotH*VdotH); }
|
|
284
|
-
#endif
|
|
285
|
-
#ifdef SHEEN
|
|
286
|
-
float visibility_Ashikhmin(float NdotL,float NdotV)
|
|
287
|
-
{return 1./(4.*(NdotL+NdotV-NdotL*NdotV));}
|
|
288
|
-
/* NOT USED
|
|
289
|
-
#ifdef SHEEN_SOFTER
|
|
290
|
-
float l(float x,float alphaG)
|
|
291
|
-
{float oneMinusAlphaSq=(1.0-alphaG)*(1.0-alphaG);float a=mix(21.5473,25.3245,oneMinusAlphaSq);float b=mix(3.82987,3.32435,oneMinusAlphaSq);float c=mix(0.19823,0.16801,oneMinusAlphaSq);float d=mix(-1.97760,-1.27393,oneMinusAlphaSq);float e=mix(-4.32054,-4.85967,oneMinusAlphaSq);return a/(1.0+b*pow(x,c))+d*x+e;}
|
|
292
|
-
float lambdaSheen(float cosTheta,float alphaG)
|
|
293
|
-
{return abs(cosTheta)<0.5 ? exp(l(cosTheta,alphaG)) : exp(2.0*l(0.5,alphaG)-l(1.0-cosTheta,alphaG));}
|
|
294
|
-
float visibility_CharlieSheen(float NdotL,float NdotV,float alphaG)
|
|
295
|
-
{float G=1.0/(1.0+lambdaSheen(NdotV,alphaG)+lambdaSheen(NdotL,alphaG));return G/(4.0*NdotV*NdotL);}
|
|
296
|
-
#endif
|
|
297
|
-
*/
|
|
298
|
-
#endif
|
|
299
|
-
float diffuseBRDF_Burley(float NdotL,float NdotV,float VdotH,float roughness) {float diffuseFresnelNV=pow5(saturateEps(1.0-NdotL));float diffuseFresnelNL=pow5(saturateEps(1.0-NdotV));float diffuseFresnel90=0.5+2.0*VdotH*VdotH*roughness;float fresnel =
|
|
300
|
-
(1.0+(diffuseFresnel90-1.0)*diffuseFresnelNL) *
|
|
301
|
-
(1.0+(diffuseFresnel90-1.0)*diffuseFresnelNV);return fresnel/PI;}
|
|
302
|
-
const float constant1_FON=0.5-2.0/(3.0*PI);const float constant2_FON=2.0/3.0-28.0/(15.0*PI);float E_FON_approx(float mu,float roughness)
|
|
303
|
-
{float sigma=roughness;
|
|
304
|
-
float mucomp=1.0-mu;float mucomp2=mucomp*mucomp;const mat2 Gcoeffs=mat2(0.0571085289,-0.332181442,
|
|
305
|
-
0.491881867,0.0714429953);float GoverPi=dot(Gcoeffs*vec2(mucomp,mucomp2),vec2(1.0,mucomp2));return (1.0+sigma*GoverPi)/(1.0+constant1_FON*sigma);}
|
|
306
|
-
vec3 diffuseBRDF_EON(vec3 albedo,float roughness,float NdotL,float NdotV,float LdotV)
|
|
307
|
-
{vec3 rho=albedo;float sigma=roughness;
|
|
308
|
-
float mu_i=NdotL;
|
|
309
|
-
float mu_o=NdotV;
|
|
310
|
-
float s=LdotV-mu_i*mu_o;
|
|
311
|
-
float sovertF=s>0.0 ? s/max(mu_i,mu_o) : s;
|
|
312
|
-
float AF=1.0/(1.0+constant1_FON*sigma);
|
|
313
|
-
vec3 f_ss=(rho*RECIPROCAL_PI)*AF*(1.0+sigma*sovertF);
|
|
314
|
-
float EFo=E_FON_approx(mu_o,sigma);
|
|
315
|
-
float EFi=E_FON_approx(mu_i,sigma);
|
|
316
|
-
float avgEF=AF*(1.0+constant2_FON*sigma);
|
|
317
|
-
vec3 rho_ms=(rho*rho)*avgEF/(vec3(1.0)-rho*(1.0-avgEF));const float eps=1.0e-7;vec3 f_ms=(rho_ms*RECIPROCAL_PI)*max(eps,1.0-EFo)
|
|
318
|
-
* max(eps,1.0-EFi)
|
|
319
|
-
/ max(eps,1.0-avgEF);return (f_ss+f_ms);}
|
|
320
|
-
#ifdef SS_TRANSLUCENCY
|
|
321
|
-
vec3 transmittanceBRDF_Burley(const vec3 tintColor,const vec3 diffusionDistance,float thickness) {vec3 S=1./maxEps(diffusionDistance);vec3 temp=exp((-0.333333333*thickness)*S);return tintColor.rgb*0.25*(temp*temp*temp+3.0*temp);}
|
|
322
|
-
float computeWrappedDiffuseNdotL(float NdotL,float w) {float t=1.0+w;float invt2=1.0/square(t);return saturate((NdotL+w)*invt2);}
|
|
323
|
-
#endif
|
|
324
|
-
#endif
|
|
325
|
-
`;t.ShaderStore.IncludesShadersStore[i]||(t.ShaderStore.IncludesShadersStore[i]=o),e.s(["pbrBRDFFunctions",0,{name:i,shader:o}])},73205,e=>{"use strict";var t=e.i(47150);e.i(67827),e.i(38605);let i="pbrUboDeclaration",o=`layout(std140,column_major) uniform;uniform Material {vec2 vAlbedoInfos;vec2 vBaseWeightInfos;vec2 vBaseDiffuseRoughnessInfos;vec4 vAmbientInfos;vec2 vOpacityInfos;vec2 vEmissiveInfos;vec2 vLightmapInfos;vec3 vReflectivityInfos;vec2 vMicroSurfaceSamplerInfos;vec3 vBumpInfos;mat4 albedoMatrix;mat4 baseWeightMatrix;mat4 baseDiffuseRoughnessMatrix;mat4 ambientMatrix;mat4 opacityMatrix;mat4 emissiveMatrix;mat4 lightmapMatrix;mat4 reflectivityMatrix;mat4 microSurfaceSamplerMatrix;mat4 bumpMatrix;vec2 vTangentSpaceParams;vec4 vAlbedoColor;float baseWeight;float baseDiffuseRoughness;vec4 vLightingIntensity;float pointSize;vec4 vReflectivityColor;vec3 vEmissiveColor;vec3 vAmbientColor;vec2 vDebugMode;vec4 vMetallicReflectanceFactors;vec2 vMetallicReflectanceInfos;mat4 metallicReflectanceMatrix;vec2 vReflectanceInfos;mat4 reflectanceMatrix;vec4 cameraInfo;vec4 vTextureRepetitionHexTilingParams;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;
|
|
326
|
-
#define ADDITIONAL_UBO_DECLARATION
|
|
327
|
-
};
|
|
328
|
-
#include<sceneUboDeclaration>
|
|
329
|
-
#include<meshUboDeclaration>
|
|
330
|
-
`;t.ShaderStore.IncludesShadersStore[i]||(t.ShaderStore.IncludesShadersStore[i]=o),e.s(["pbrUboDeclaration",0,{name:i,shader:o}])},40766,32274,67538,e=>{"use strict";var t=e.i(47150);let i="bumpFragmentMainFunctions",o=`#ifndef TEXRD_DEFINED
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,92655,36435,78948,e=>{"use strict";var t=e.i(25044);let i="bumpFragmentMainFunctions",o=`#ifndef TEXRD_DEFINED
|
|
331
2
|
#define TEXRD(s,uv) texture2D(s,uv)
|
|
332
3
|
#define TEXRD_DEFINED
|
|
333
4
|
#endif
|
|
@@ -392,7 +63,7 @@ vec3 perturbNormal(mat3 cotangentFrame,vec3 textureSample,float scale)
|
|
|
392
63
|
mat3 cotangent_frame(vec3 normal,vec3 p,vec2 uv,vec2 tangentSpaceParams)
|
|
393
64
|
{vec3 dp1=dFdx(p);vec3 dp2=dFdy(p);vec2 duv1=dFdx(uv);vec2 duv2=dFdy(uv);vec3 dp2perp=cross(dp2,normal);vec3 dp1perp=cross(normal,dp1);vec3 tangent=dp2perp*duv1.x+dp1perp*duv2.x;vec3 bitangent=dp2perp*duv1.y+dp1perp*duv2.y;tangent*=tangentSpaceParams.x;bitangent*=tangentSpaceParams.y;float det=max(dot(tangent,tangent),dot(bitangent,bitangent));float invmax=det==0.0 ? 0.0 : inversesqrt(det);return mat3(tangent*invmax,bitangent*invmax,normal);}
|
|
394
65
|
#endif
|
|
395
|
-
`;t.ShaderStore.IncludesShadersStore[i]||(t.ShaderStore.IncludesShadersStore[i]=o),e.s(["bumpFragmentMainFunctions",0,{name:i,shader:o}],
|
|
66
|
+
`;t.ShaderStore.IncludesShadersStore[i]||(t.ShaderStore.IncludesShadersStore[i]=o),e.s(["bumpFragmentMainFunctions",0,{name:i,shader:o}],92655),e.i(95804);let a="bumpFragmentFunctions",r=`#if defined(BUMP)
|
|
396
67
|
#include<samplerFragmentDeclaration>(_DEFINENAME_,BUMP,_VARYINGNAME_,Bump,_SAMPLERNAME_,bump)
|
|
397
68
|
#endif
|
|
398
69
|
#if defined(DETAIL)
|
|
@@ -418,82 +89,215 @@ vec2 parallaxOffset(vec3 viewDir,float heightScale)
|
|
|
418
89
|
#ifdef PARALLAX_RHS
|
|
419
90
|
return texCoordOffset;
|
|
420
91
|
#else
|
|
421
|
-
return -texCoordOffset;
|
|
92
|
+
return -texCoordOffset;
|
|
93
|
+
#endif
|
|
94
|
+
}
|
|
95
|
+
#endif
|
|
96
|
+
`;t.ShaderStore.IncludesShadersStore[a]||(t.ShaderStore.IncludesShadersStore[a]=r),e.s(["bumpFragmentFunctions",0,{name:a,shader:r}],36435);let n="bumpFragment",l=`vec2 uvOffset=vec2(0.0,0.0);
|
|
97
|
+
#if defined(BUMP) || defined(PARALLAX) || defined(DETAIL)
|
|
98
|
+
#ifdef NORMALXYSCALE
|
|
99
|
+
float normalScale=1.0;
|
|
100
|
+
#elif defined(BUMP)
|
|
101
|
+
float normalScale=vBumpInfos.y;
|
|
102
|
+
#else
|
|
103
|
+
float normalScale=1.0;
|
|
104
|
+
#endif
|
|
105
|
+
#if defined(TANGENT) && defined(NORMAL)
|
|
106
|
+
mat3 TBN=vTBN;
|
|
107
|
+
#elif defined(BUMP)
|
|
108
|
+
vec2 TBNUV=gl_FrontFacing ? vBumpUV : -vBumpUV;mat3 TBN=cotangent_frame(normalW*normalScale,vPositionW,TBNUV,vTangentSpaceParams);
|
|
109
|
+
#else
|
|
110
|
+
vec2 TBNUV=gl_FrontFacing ? vDetailUV : -vDetailUV;mat3 TBN=cotangent_frame(normalW*normalScale,vPositionW,TBNUV,vec2(1.,1.));
|
|
111
|
+
#endif
|
|
112
|
+
#elif defined(ANISOTROPIC)
|
|
113
|
+
#if defined(TANGENT) && defined(NORMAL)
|
|
114
|
+
mat3 TBN=vTBN;
|
|
115
|
+
#else
|
|
116
|
+
vec2 TBNUV=gl_FrontFacing ? vMainUV1 : -vMainUV1;mat3 TBN=cotangent_frame(normalW,vPositionW,TBNUV,vec2(1.,1.));
|
|
117
|
+
#endif
|
|
118
|
+
#endif
|
|
119
|
+
#ifdef PARALLAX
|
|
120
|
+
mat3 invTBN=transposeMat3(TBN);
|
|
121
|
+
#ifdef PARALLAXOCCLUSION
|
|
122
|
+
uvOffset=parallaxOcclusion(invTBN*-viewDirectionW,invTBN*normalW,vBumpUV,vBumpInfos.z);
|
|
123
|
+
#else
|
|
124
|
+
uvOffset=parallaxOffset(invTBN*viewDirectionW,vBumpInfos.z);
|
|
125
|
+
#endif
|
|
126
|
+
#endif
|
|
127
|
+
#ifdef DETAIL
|
|
128
|
+
vec4 detailColor=texture2D(detailSampler,vDetailUV+uvOffset);vec2 detailNormalRG=detailColor.wy*2.0-1.0;float detailNormalB=sqrt(1.-saturate(dot(detailNormalRG,detailNormalRG)));vec3 detailNormal=vec3(detailNormalRG,detailNormalB);
|
|
129
|
+
#endif
|
|
130
|
+
#ifdef BUMP
|
|
131
|
+
#ifdef OBJECTSPACE_NORMALMAP
|
|
132
|
+
#define CUSTOM_FRAGMENT_BUMP_FRAGMENT
|
|
133
|
+
normalW=normalize(TEXRD(bumpSampler,vBumpUV).xyz *2.0-1.0);normalW=normalize(mat3(normalMatrix)*normalW);
|
|
134
|
+
#elif !defined(DETAIL)
|
|
135
|
+
normalW=perturbNormal(TBN,TEXRD(bumpSampler,vBumpUV+uvOffset).xyz,vBumpInfos.y);
|
|
136
|
+
#else
|
|
137
|
+
vec3 bumpNormal=TEXRD(bumpSampler,vBumpUV+uvOffset).xyz*2.0-1.0;
|
|
138
|
+
#if DETAIL_NORMALBLENDMETHOD==0
|
|
139
|
+
detailNormal.xy*=vDetailInfos.z;vec3 blendedNormal=normalize(vec3(bumpNormal.xy+detailNormal.xy,bumpNormal.z*detailNormal.z));
|
|
140
|
+
#elif DETAIL_NORMALBLENDMETHOD==1
|
|
141
|
+
detailNormal.xy*=vDetailInfos.z;bumpNormal+=vec3(0.0,0.0,1.0);detailNormal*=vec3(-1.0,-1.0,1.0);vec3 blendedNormal=bumpNormal*dot(bumpNormal,detailNormal)/bumpNormal.z-detailNormal;
|
|
142
|
+
#endif
|
|
143
|
+
normalW=perturbNormalBase(TBN,blendedNormal,vBumpInfos.y);
|
|
144
|
+
#endif
|
|
145
|
+
#elif defined(DETAIL)
|
|
146
|
+
detailNormal.xy*=vDetailInfos.z;normalW=perturbNormalBase(TBN,detailNormal,vDetailInfos.z);
|
|
147
|
+
#endif
|
|
148
|
+
`;t.ShaderStore.IncludesShadersStore[n]||(t.ShaderStore.IncludesShadersStore[n]=l),e.s(["bumpFragment",0,{name:n,shader:l}],78948)},7673,e=>{"use strict";var t=e.i(25044);let i="clusteredLightingFunctions",o=`struct ClusteredLight {vec4 vLightData;vec4 vLightDiffuse;vec4 vLightSpecular;vec4 vLightDirection;vec4 vLightFalloff;};
|
|
149
|
+
#define inline
|
|
150
|
+
ClusteredLight getClusteredLight(sampler2D lightDataTexture,int index) {return ClusteredLight(
|
|
151
|
+
texelFetch(lightDataTexture,ivec2(0,index),0),
|
|
152
|
+
texelFetch(lightDataTexture,ivec2(1,index),0),
|
|
153
|
+
texelFetch(lightDataTexture,ivec2(2,index),0),
|
|
154
|
+
texelFetch(lightDataTexture,ivec2(3,index),0),
|
|
155
|
+
texelFetch(lightDataTexture,ivec2(4,index),0)
|
|
156
|
+
);}
|
|
157
|
+
int getClusteredSliceIndex(vec2 sliceData,float viewDepth) {return int(log(viewDepth)*sliceData.x+sliceData.y);}
|
|
158
|
+
`;t.ShaderStore.IncludesShadersStore[i]||(t.ShaderStore.IncludesShadersStore[i]=o),e.s(["clusteredLightingFunctions",0,{name:i,shader:o}])},90256,e=>{"use strict";var t=e.i(25044);let i="decalFragment",o=`#ifdef DECAL
|
|
159
|
+
#ifdef GAMMADECAL
|
|
160
|
+
decalColor.rgb=toLinearSpace(decalColor.rgb);
|
|
161
|
+
#endif
|
|
162
|
+
#ifdef DECAL_SMOOTHALPHA
|
|
163
|
+
decalColor.a*=decalColor.a;
|
|
164
|
+
#endif
|
|
165
|
+
surfaceAlbedo.rgb=mix(surfaceAlbedo.rgb,decalColor.rgb,decalColor.a);
|
|
166
|
+
#endif
|
|
167
|
+
`;t.ShaderStore.IncludesShadersStore[i]||(t.ShaderStore.IncludesShadersStore[i]=o),e.s(["decalFragment",0,{name:i,shader:o}])},8823,e=>{"use strict";var t=e.i(25044);let i="harmonicsFunctions",o=`#ifdef USESPHERICALFROMREFLECTIONMAP
|
|
168
|
+
#ifdef SPHERICAL_HARMONICS
|
|
169
|
+
vec3 computeEnvironmentIrradiance(vec3 normal) {return vSphericalL00
|
|
170
|
+
+ vSphericalL1_1*(normal.y)
|
|
171
|
+
+ vSphericalL10*(normal.z)
|
|
172
|
+
+ vSphericalL11*(normal.x)
|
|
173
|
+
+ vSphericalL2_2*(normal.y*normal.x)
|
|
174
|
+
+ vSphericalL2_1*(normal.y*normal.z)
|
|
175
|
+
+ vSphericalL20*((3.0*normal.z*normal.z)-1.0)
|
|
176
|
+
+ vSphericalL21*(normal.z*normal.x)
|
|
177
|
+
+ vSphericalL22*(normal.x*normal.x-(normal.y*normal.y));}
|
|
178
|
+
#else
|
|
179
|
+
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;}
|
|
180
|
+
#endif
|
|
181
|
+
#endif
|
|
182
|
+
`;t.ShaderStore.IncludesShadersStore[i]||(t.ShaderStore.IncludesShadersStore[i]=o),e.s(["harmonicsFunctions",0,{name:i,shader:o}])},31660,e=>{"use strict";var t=e.i(25044);let i="helperFunctions",o=`const float PI=3.1415926535897932384626433832795;const float TWO_PI=6.283185307179586;const float HALF_PI=1.5707963267948966;const float RECIPROCAL_PI=0.3183098861837907;const float RECIPROCAL_PI2=0.15915494309189535;const float RECIPROCAL_PI4=0.07957747154594767;const float HALF_MIN=5.96046448e-08;
|
|
183
|
+
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;
|
|
184
|
+
#define saturate(x) clamp(x,0.0,1.0)
|
|
185
|
+
#define absEps(x) abs(x)+Epsilon
|
|
186
|
+
#define maxEps(x) max(x,Epsilon)
|
|
187
|
+
#define saturateEps(x) clamp(x,Epsilon,1.0)
|
|
188
|
+
mat3 transposeMat3(mat3 inMatrix) {vec3 i0=inMatrix[0];vec3 i1=inMatrix[1];vec3 i2=inMatrix[2];mat3 outMatrix=mat3(
|
|
189
|
+
vec3(i0.x,i1.x,i2.x),
|
|
190
|
+
vec3(i0.y,i1.y,i2.y),
|
|
191
|
+
vec3(i0.z,i1.z,i2.z)
|
|
192
|
+
);return outMatrix;}
|
|
193
|
+
mat3 inverseMat3(mat3 inMatrix) {float a00=inMatrix[0][0],a01=inMatrix[0][1],a02=inMatrix[0][2];float a10=inMatrix[1][0],a11=inMatrix[1][1],a12=inMatrix[1][2];float a20=inMatrix[2][0],a21=inMatrix[2][1],a22=inMatrix[2][2];float b01=a22*a11-a12*a21;float b11=-a22*a10+a12*a20;float b21=a21*a10-a11*a20;float det=a00*b01+a01*b11+a02*b21;return mat3(b01,(-a22*a01+a02*a21),(a12*a01-a02*a11),
|
|
194
|
+
b11,(a22*a00-a02*a20),(-a12*a00+a02*a10),
|
|
195
|
+
b21,(-a21*a00+a01*a20),(a11*a00-a01*a10))/det;}
|
|
196
|
+
#if USE_EXACT_SRGB_CONVERSIONS
|
|
197
|
+
vec3 toLinearSpaceExact(vec3 color)
|
|
198
|
+
{vec3 nearZeroSection=0.0773993808*color;vec3 remainingSection=pow(0.947867299*(color+vec3(0.055)),vec3(2.4));
|
|
199
|
+
#if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)
|
|
200
|
+
return mix(remainingSection,nearZeroSection,lessThanEqual(color,vec3(0.04045)));
|
|
201
|
+
#else
|
|
202
|
+
return
|
|
203
|
+
vec3(
|
|
204
|
+
color.r<=0.04045 ? nearZeroSection.r : remainingSection.r,
|
|
205
|
+
color.g<=0.04045 ? nearZeroSection.g : remainingSection.g,
|
|
206
|
+
color.b<=0.04045 ? nearZeroSection.b : remainingSection.b);
|
|
207
|
+
#endif
|
|
208
|
+
}
|
|
209
|
+
vec3 toGammaSpaceExact(vec3 color)
|
|
210
|
+
{vec3 nearZeroSection=12.92*color;vec3 remainingSection=1.055*pow(color,vec3(0.41666))-vec3(0.055);
|
|
211
|
+
#if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)
|
|
212
|
+
return mix(remainingSection,nearZeroSection,lessThanEqual(color,vec3(0.0031308)));
|
|
213
|
+
#else
|
|
214
|
+
return
|
|
215
|
+
vec3(
|
|
216
|
+
color.r<=0.0031308 ? nearZeroSection.r : remainingSection.r,
|
|
217
|
+
color.g<=0.0031308 ? nearZeroSection.g : remainingSection.g,
|
|
218
|
+
color.b<=0.0031308 ? nearZeroSection.b : remainingSection.b);
|
|
422
219
|
#endif
|
|
423
220
|
}
|
|
424
221
|
#endif
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
#
|
|
428
|
-
float
|
|
429
|
-
#elif defined(BUMP)
|
|
430
|
-
float normalScale=vBumpInfos.y;
|
|
222
|
+
float toLinearSpace(float color)
|
|
223
|
+
{
|
|
224
|
+
#if USE_EXACT_SRGB_CONVERSIONS
|
|
225
|
+
float nearZeroSection=0.0773993808*color;float remainingSection=pow(0.947867299*(color+0.055),2.4);return color<=0.04045 ? nearZeroSection : remainingSection;
|
|
431
226
|
#else
|
|
432
|
-
|
|
227
|
+
return pow(color,LinearEncodePowerApprox);
|
|
433
228
|
#endif
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
229
|
+
}
|
|
230
|
+
vec3 toLinearSpace(vec3 color)
|
|
231
|
+
{
|
|
232
|
+
#if USE_EXACT_SRGB_CONVERSIONS
|
|
233
|
+
return toLinearSpaceExact(color);
|
|
438
234
|
#else
|
|
439
|
-
|
|
235
|
+
return pow(color,vec3(LinearEncodePowerApprox));
|
|
440
236
|
#endif
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
237
|
+
}
|
|
238
|
+
vec4 toLinearSpace(vec4 color)
|
|
239
|
+
{
|
|
240
|
+
#if USE_EXACT_SRGB_CONVERSIONS
|
|
241
|
+
return vec4(toLinearSpaceExact(color.rgb),color.a);
|
|
444
242
|
#else
|
|
445
|
-
|
|
446
|
-
#endif
|
|
243
|
+
return vec4(pow(color.rgb,vec3(LinearEncodePowerApprox)),color.a);
|
|
447
244
|
#endif
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
245
|
+
}
|
|
246
|
+
float toGammaSpace(float color)
|
|
247
|
+
{
|
|
248
|
+
#if USE_EXACT_SRGB_CONVERSIONS
|
|
249
|
+
float nearZeroSection=12.92*color;float remainingSection=1.055*pow(color,0.41666)-0.055;return color<=0.0031308 ? nearZeroSection : remainingSection;
|
|
452
250
|
#else
|
|
453
|
-
|
|
454
|
-
#endif
|
|
455
|
-
#endif
|
|
456
|
-
#ifdef DETAIL
|
|
457
|
-
vec4 detailColor=texture2D(detailSampler,vDetailUV+uvOffset);vec2 detailNormalRG=detailColor.wy*2.0-1.0;float detailNormalB=sqrt(1.-saturate(dot(detailNormalRG,detailNormalRG)));vec3 detailNormal=vec3(detailNormalRG,detailNormalB);
|
|
251
|
+
return pow(color,GammaEncodePowerApprox);
|
|
458
252
|
#endif
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
normalW=perturbNormal(TBN,TEXRD(bumpSampler,vBumpUV+uvOffset).xyz,vBumpInfos.y);
|
|
253
|
+
}
|
|
254
|
+
vec3 toGammaSpace(vec3 color)
|
|
255
|
+
{
|
|
256
|
+
#if USE_EXACT_SRGB_CONVERSIONS
|
|
257
|
+
return toGammaSpaceExact(color);
|
|
465
258
|
#else
|
|
466
|
-
|
|
467
|
-
#if DETAIL_NORMALBLENDMETHOD==0
|
|
468
|
-
detailNormal.xy*=vDetailInfos.z;vec3 blendedNormal=normalize(vec3(bumpNormal.xy+detailNormal.xy,bumpNormal.z*detailNormal.z));
|
|
469
|
-
#elif DETAIL_NORMALBLENDMETHOD==1
|
|
470
|
-
detailNormal.xy*=vDetailInfos.z;bumpNormal+=vec3(0.0,0.0,1.0);detailNormal*=vec3(-1.0,-1.0,1.0);vec3 blendedNormal=bumpNormal*dot(bumpNormal,detailNormal)/bumpNormal.z-detailNormal;
|
|
471
|
-
#endif
|
|
472
|
-
normalW=perturbNormalBase(TBN,blendedNormal,vBumpInfos.y);
|
|
473
|
-
#endif
|
|
474
|
-
#elif defined(DETAIL)
|
|
475
|
-
detailNormal.xy*=vDetailInfos.z;normalW=perturbNormalBase(TBN,detailNormal,vDetailInfos.z);
|
|
476
|
-
#endif
|
|
477
|
-
`;t.ShaderStore.IncludesShadersStore[n]||(t.ShaderStore.IncludesShadersStore[n]=l),e.s(["bumpFragment",0,{name:n,shader:l}],67538)},75351,e=>{"use strict";var t=e.i(47150);let i="decalFragment",o=`#ifdef DECAL
|
|
478
|
-
#ifdef GAMMADECAL
|
|
479
|
-
decalColor.rgb=toLinearSpace(decalColor.rgb);
|
|
259
|
+
return pow(color,vec3(GammaEncodePowerApprox));
|
|
480
260
|
#endif
|
|
481
|
-
|
|
482
|
-
|
|
261
|
+
}
|
|
262
|
+
vec4 toGammaSpace(vec4 color)
|
|
263
|
+
{
|
|
264
|
+
#if USE_EXACT_SRGB_CONVERSIONS
|
|
265
|
+
return vec4(toGammaSpaceExact(color.rgb),color.a);
|
|
266
|
+
#else
|
|
267
|
+
return vec4(pow(color.rgb,vec3(GammaEncodePowerApprox)),color.a);
|
|
483
268
|
#endif
|
|
484
|
-
|
|
269
|
+
}
|
|
270
|
+
float square(float value)
|
|
271
|
+
{return value*value;}
|
|
272
|
+
vec3 square(vec3 value)
|
|
273
|
+
{return value*value;}
|
|
274
|
+
float pow5(float value) {float sq=value*value;return sq*sq*value;}
|
|
275
|
+
vec3 double_refract(vec3 I,vec3 N,float eta) {vec3 Tfront=refract(I,N,1.0/eta);vec3 Nback=normalize(reflect(N,Tfront));return refract(Tfront,-Nback,eta);}
|
|
276
|
+
float getLuminanceUnclamped(vec3 color)
|
|
277
|
+
{return dot(color,LuminanceEncodeApprox);}
|
|
278
|
+
float getLuminance(vec3 color)
|
|
279
|
+
{return saturate(getLuminanceUnclamped(color));}
|
|
280
|
+
float getRand(vec2 seed) {return fract(sin(dot(seed.xy ,vec2(12.9898,78.233)))*43758.5453);}
|
|
281
|
+
float dither(vec2 seed,float varianceAmount) {float rand=getRand(seed);float normVariance=varianceAmount/255.0;float dither=mix(-normVariance,normVariance,rand);return dither;}
|
|
282
|
+
const float rgbdMaxRange=255.;vec4 toRGBD(vec3 color) {float maxRGB=maxEps(max(color.r,max(color.g,color.b)));float D =max(rgbdMaxRange/maxRGB,1.);D =saturate(floor(D)/255.);vec3 rgb=color.rgb*D;rgb=toGammaSpace(rgb);return vec4(saturate(rgb),D);}
|
|
283
|
+
vec3 fromRGBD(vec4 rgbd) {rgbd.rgb=toLinearSpace(rgbd.rgb);return rgbd.rgb/rgbd.a;}
|
|
284
|
+
vec3 parallaxCorrectNormal( vec3 vertexPos,vec3 origVec,vec3 cubeSize,vec3 cubePos ) {vec3 invOrigVec=vec3(1.)/origVec;vec3 halfSize=cubeSize*0.5;vec3 intersecAtMaxPlane=(cubePos+halfSize-vertexPos)*invOrigVec;vec3 intersecAtMinPlane=(cubePos-halfSize-vertexPos)*invOrigVec;vec3 largestIntersec=max(intersecAtMaxPlane,intersecAtMinPlane);float distance=min(min(largestIntersec.x,largestIntersec.y),largestIntersec.z);vec3 intersectPositionWS=vertexPos+origVec*distance;return intersectPositionWS-cubePos;}
|
|
285
|
+
vec3 equirectangularToCubemapDirection(vec2 uv) {float longitude=uv.x*TWO_PI-PI;float latitude=HALF_PI-uv.y*PI;vec3 direction;direction.x=cos(latitude)*sin(longitude);direction.y=sin(latitude);direction.z=cos(latitude)*cos(longitude);return direction;}
|
|
286
|
+
float sqrtClamped(float value) {return sqrt(max(value,0.));}
|
|
287
|
+
float avg(vec3 value) {return dot(value,vec3(0.333333333));}
|
|
288
|
+
#if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)
|
|
289
|
+
uint extractBits(uint value,int offset,int width) {return (value>>offset) & ((1u<<width)-1u);}
|
|
290
|
+
int onlyBitPosition(uint value) {return (floatBitsToInt(float(value))>>23)-0x7f;}
|
|
291
|
+
vec3 singleScatterToMultiScatterAlbedo(vec3 rho_ss) {vec3 s=sqrt(max(vec3(1.0)-rho_ss,vec3(0.0)));return (vec3(1.0)-s)*(vec3(1.0)-vec3(0.139)*s)/(vec3(1.0)+vec3(1.17)*s);}
|
|
292
|
+
vec3 multiScatterToSingleScatterAlbedo(vec3 rho_ms) {vec3 s=4.09712+4.20863*rho_ms-sqrt(9.59217+41.6808*rho_ms+17.7126*rho_ms*rho_ms);return 1.0-s*s;}
|
|
293
|
+
vec3 multiScatterToSingleScatterAlbedo(vec3 rho_ms,float aniso) {vec3 s=4.09712+4.20863*rho_ms-sqrt(9.59217+41.6808*rho_ms+17.7126*rho_ms*rho_ms);return (1.0-s*s)/maxEps(1.0-aniso*s*s);}
|
|
294
|
+
float min3(vec3 v) {return min(v.x,min(v.y,v.z));}
|
|
295
|
+
float max3(vec3 v) {return max(v.x,max(v.y,v.z));}
|
|
296
|
+
float uint2float(uint i) {return uintBitsToFloat(0x3F800000u | (i>>9u))-1.0;}
|
|
297
|
+
vec2 plasticSequence(const uint rstate) {return vec2(uint2float(rstate*3242174889u),
|
|
298
|
+
uint2float(rstate*2447445414u));}
|
|
485
299
|
#endif
|
|
486
|
-
`;t.ShaderStore.IncludesShadersStore[i]||(t.ShaderStore.IncludesShadersStore[i]=o),e.s(["
|
|
487
|
-
#define inline
|
|
488
|
-
ClusteredLight getClusteredLight(sampler2D lightDataTexture,int index) {return ClusteredLight(
|
|
489
|
-
texelFetch(lightDataTexture,ivec2(0,index),0),
|
|
490
|
-
texelFetch(lightDataTexture,ivec2(1,index),0),
|
|
491
|
-
texelFetch(lightDataTexture,ivec2(2,index),0),
|
|
492
|
-
texelFetch(lightDataTexture,ivec2(3,index),0),
|
|
493
|
-
texelFetch(lightDataTexture,ivec2(4,index),0)
|
|
494
|
-
);}
|
|
495
|
-
int getClusteredSliceIndex(vec2 sliceData,float viewDepth) {return int(log(viewDepth)*sliceData.x+sliceData.y);}
|
|
496
|
-
`;t.ShaderStore.IncludesShadersStore[i]||(t.ShaderStore.IncludesShadersStore[i]=o),e.s(["clusteredLightingFunctions",0,{name:i,shader:o}])},69855,e=>{"use strict";var t=e.i(47150);let i="lightFragment",o=`#ifdef LIGHT{X}
|
|
300
|
+
`;t.ShaderStore.IncludesShadersStore[i]||(t.ShaderStore.IncludesShadersStore[i]=o),e.s(["helperFunctions",0,{name:i,shader:o}])},27960,e=>{"use strict";var t=e.i(25044);let i="lightFragment",o=`#ifdef LIGHT{X}
|
|
497
301
|
#if defined(SHADOWONLY) || defined(LIGHTMAP) && defined(LIGHTMAPEXCLUDED{X}) && defined(LIGHTMAPNOSPECULAR{X})
|
|
498
302
|
#else
|
|
499
303
|
vec4 diffuse{X}=light{X}.vLightDiffuse;
|
|
@@ -871,133 +675,193 @@ sheenBase+=info.sheen.rgb*shadow;
|
|
|
871
675
|
#endif
|
|
872
676
|
#endif
|
|
873
677
|
#endif
|
|
874
|
-
`;t.ShaderStore.IncludesShadersStore[i]||(t.ShaderStore.IncludesShadersStore[i]=o),e.s(["lightFragment",0,{name:i,shader:o}])},
|
|
875
|
-
|
|
876
|
-
#
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
#
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
#define v_VARYINGNAME_UV vMainUV4
|
|
883
|
-
#elif _DEFINENAME_DIRECTUV==5
|
|
884
|
-
#define v_VARYINGNAME_UV vMainUV5
|
|
885
|
-
#elif _DEFINENAME_DIRECTUV==6
|
|
886
|
-
#define v_VARYINGNAME_UV vMainUV6
|
|
678
|
+
`;t.ShaderStore.IncludesShadersStore[i]||(t.ShaderStore.IncludesShadersStore[i]=o),e.s(["lightFragment",0,{name:i,shader:o}])},10874,e=>{"use strict";var t=e.i(25044);let i="logDepthDeclaration",o=`#ifdef LOGARITHMICDEPTH
|
|
679
|
+
uniform float logarithmicDepthConstant;varying float vFragmentDepth;
|
|
680
|
+
#endif
|
|
681
|
+
`;t.ShaderStore.IncludesShadersStore[i]||(t.ShaderStore.IncludesShadersStore[i]=o),e.s(["logDepthDeclaration",0,{name:i,shader:o}])},49185,e=>{"use strict";var t=e.i(25044);let i="mainUVVaryingDeclaration",o=`#ifdef MAINUV{X}
|
|
682
|
+
varying vec2 vMainUV{X};
|
|
683
|
+
#endif
|
|
684
|
+
`;t.ShaderStore.IncludesShadersStore[i]||(t.ShaderStore.IncludesShadersStore[i]=o),e.s(["mainUVVaryingDeclaration",0,{name:i,shader:o}])},4100,e=>{"use strict";var t=e.i(25044);let i="meshUboDeclaration",o=`#ifdef WEBGL2
|
|
685
|
+
uniform mat4 world;uniform float visibility;
|
|
887
686
|
#else
|
|
888
|
-
|
|
687
|
+
layout(std140,column_major) uniform;uniform Mesh
|
|
688
|
+
{mat4 world;float visibility;};
|
|
889
689
|
#endif
|
|
890
|
-
|
|
690
|
+
#define WORLD_UBO
|
|
691
|
+
`;t.ShaderStore.IncludesShadersStore[i]||(t.ShaderStore.IncludesShadersStore[i]=o),e.s(["meshUboDeclaration",0,{name:i,shader:o}])},16300,e=>{"use strict";var t=e.i(25044);let i="pbrBRDFFunctions",o=`#define FRESNEL_MAXIMUM_ON_ROUGH 0.25
|
|
692
|
+
#define BRDF_DIFFUSE_MODEL_EON 0
|
|
693
|
+
#define BRDF_DIFFUSE_MODEL_BURLEY 1
|
|
694
|
+
#define BRDF_DIFFUSE_MODEL_LAMBERT 2
|
|
695
|
+
#define BRDF_DIFFUSE_MODEL_LEGACY 3
|
|
696
|
+
#define DIELECTRIC_SPECULAR_MODEL_GLTF 0
|
|
697
|
+
#define DIELECTRIC_SPECULAR_MODEL_OPENPBR 1
|
|
698
|
+
#define CONDUCTOR_SPECULAR_MODEL_GLTF 0
|
|
699
|
+
#define CONDUCTOR_SPECULAR_MODEL_OPENPBR 1
|
|
700
|
+
#if !defined(PBR_VERTEX_SHADER) && !defined(OPENPBR_VERTEX_SHADER)
|
|
701
|
+
#ifdef MS_BRDF_ENERGY_CONSERVATION
|
|
702
|
+
vec3 getEnergyConservationFactor(const vec3 specularEnvironmentR0,const vec3 environmentBrdf) {return 1.0+specularEnvironmentR0*(1.0/environmentBrdf.y-1.0);}
|
|
891
703
|
#endif
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
vec3
|
|
899
|
-
|
|
900
|
-
vec3
|
|
901
|
-
|
|
902
|
-
vec3 computeCubicCoords(vec4 worldPos,vec3 worldNormal,vec3 eyePosition,mat4 reflectionMatrix)
|
|
903
|
-
{vec3 viewDir=normalize(worldPos.xyz-eyePosition);vec3 coords=reflect(viewDir,worldNormal);coords=vec3(reflectionMatrix*vec4(coords,0));
|
|
904
|
-
#ifdef INVERTCUBICMAP
|
|
905
|
-
coords.y*=-1.0;
|
|
704
|
+
#if CONDUCTOR_SPECULAR_MODEL==CONDUCTOR_SPECULAR_MODEL_OPENPBR
|
|
705
|
+
#define F82_COS_THETA_MAX 0.142857143
|
|
706
|
+
#define F82_ONE_MINUS_CTM_POW5 0.462664366
|
|
707
|
+
#define F82_ONE_MINUS_CTM_POW6 0.396569457
|
|
708
|
+
#define F82_B_DENOMINATOR_RECIP 17.6512785
|
|
709
|
+
#define BRDF_Z_SCALE 16.0
|
|
710
|
+
vec3 getF82Specular(float NdotV,vec3 F0,vec3 edgeTint,float roughness) {vec3 white_minus_F0=vec3(1.0)-F0;vec3 b=(F0+white_minus_F0*F82_ONE_MINUS_CTM_POW5)*(vec3(1.0)-edgeTint)*F82_B_DENOMINATOR_RECIP;float cos_theta=max(roughness,NdotV);float one_minus_cos_theta=1.0-cos_theta;vec3 offset_from_F0=(white_minus_F0-b*cos_theta*one_minus_cos_theta)*pow(one_minus_cos_theta,5.0);return clamp(F0+offset_from_F0,0.0,1.0);}
|
|
711
|
+
vec3 getF82B(vec3 F0,vec3 edgeTint) {return (F0+(vec3(1.0)-F0)*F82_ONE_MINUS_CTM_POW5)*(vec3(1.0)-edgeTint)*F82_B_DENOMINATOR_RECIP;}
|
|
712
|
+
vec3 getF82DirectionalAlbedo(vec3 F0,vec3 F90,vec3 b,vec3 environmentBrdf) {return (F90-F0)*environmentBrdf.x+F0*environmentBrdf.y-b*environmentBrdf.z;}
|
|
713
|
+
vec3 getF82AverageFresnel(vec3 F0,vec3 b) {return F0+(vec3(1.0)-F0)/21.0-b/126.0;}
|
|
906
714
|
#endif
|
|
907
|
-
|
|
908
|
-
vec3
|
|
909
|
-
{vec3 viewDir=normalize(worldPos.xyz-eyePosition);vec3 coords=reflect(viewDir,worldNormal);coords=parallaxCorrectNormal(worldPos.xyz,coords,reflectionSize,reflectionPosition);coords=vec3(reflectionMatrix*vec4(coords,0));
|
|
910
|
-
#ifdef INVERTCUBICMAP
|
|
911
|
-
coords.y*=-1.0;
|
|
715
|
+
#ifdef FUZZENVIRONMENTBRDF
|
|
716
|
+
vec3 getFuzzBRDFLookup(float NdotV,float perceptualRoughness) {vec2 UV=vec2(perceptualRoughness,NdotV);vec4 brdfLookup=texture2D(environmentFuzzBrdfSampler,UV);const vec2 RiRange=vec2(0.0,0.75);const vec2 ARange =vec2(0.005,0.88);const vec2 BRange =vec2(-0.18,0.002);brdfLookup.r=mix(ARange.x, ARange.y, brdfLookup.r);brdfLookup.g=mix(BRange.x, BRange.y, brdfLookup.g);brdfLookup.b=mix(RiRange.x,RiRange.y,brdfLookup.b);return brdfLookup.rgb;}
|
|
912
717
|
#endif
|
|
913
|
-
|
|
914
|
-
vec3
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
{return vec3(reflectionMatrix*vec4(positionW,1.));}
|
|
918
|
-
#ifdef REFLECTION
|
|
919
|
-
vec3 computeReflectionCoords(vec4 worldPos,vec3 worldNormal)
|
|
920
|
-
{
|
|
921
|
-
#ifdef REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED
|
|
922
|
-
vec3 direction=normalize(vDirectionW);return computeMirroredFixedEquirectangularCoords(worldPos,worldNormal,direction);
|
|
718
|
+
#ifdef ENVIRONMENTBRDF
|
|
719
|
+
vec3 getBRDFLookup(float NdotV,float perceptualRoughness) {vec2 UV=vec2(NdotV,perceptualRoughness);vec4 brdfLookup=texture2D(environmentBrdfSampler,UV);
|
|
720
|
+
#ifdef ENVIRONMENTBRDF_RGBD
|
|
721
|
+
brdfLookup.rgb=fromRGBD(brdfLookup.rgba);
|
|
923
722
|
#endif
|
|
924
|
-
|
|
925
|
-
vec3
|
|
723
|
+
return brdfLookup.rgb;}
|
|
724
|
+
vec3 getReflectanceFromBRDFLookup(const vec3 specularEnvironmentR0,const vec3 specularEnvironmentR90,const vec3 environmentBrdf) {
|
|
725
|
+
#ifdef BRDF_V_HEIGHT_CORRELATED
|
|
726
|
+
vec3 reflectance=(specularEnvironmentR90-specularEnvironmentR0)*environmentBrdf.x+specularEnvironmentR0*environmentBrdf.y;
|
|
727
|
+
#else
|
|
728
|
+
vec3 reflectance=specularEnvironmentR0*environmentBrdf.x+specularEnvironmentR90*environmentBrdf.y;
|
|
926
729
|
#endif
|
|
927
|
-
|
|
928
|
-
|
|
730
|
+
return reflectance;}
|
|
731
|
+
vec3 getReflectanceFromBRDFLookup(const vec3 specularEnvironmentR0,const vec3 environmentBrdf) {
|
|
732
|
+
#ifdef BRDF_V_HEIGHT_CORRELATED
|
|
733
|
+
vec3 reflectance=mix(environmentBrdf.xxx,environmentBrdf.yyy,specularEnvironmentR0);
|
|
734
|
+
#else
|
|
735
|
+
vec3 reflectance=specularEnvironmentR0*environmentBrdf.x+environmentBrdf.y;
|
|
929
736
|
#endif
|
|
930
|
-
|
|
931
|
-
return computeSphericalCoords(worldPos,worldNormal,view,reflectionMatrix);
|
|
737
|
+
return reflectance;}
|
|
932
738
|
#endif
|
|
933
|
-
|
|
934
|
-
|
|
739
|
+
/* NOT USED
|
|
740
|
+
#if defined(SHEEN) && defined(SHEEN_SOFTER)
|
|
741
|
+
float getBRDFLookupCharlieSheen(float NdotV,float perceptualRoughness)
|
|
742
|
+
{float c=1.0-NdotV;float c3=c*c*c;return 0.65584461*c3+1.0/(4.16526551+exp(-7.97291361*perceptualRoughness+6.33516894));}
|
|
935
743
|
#endif
|
|
936
|
-
|
|
937
|
-
#
|
|
938
|
-
|
|
744
|
+
*/
|
|
745
|
+
#if !defined(ENVIRONMENTBRDF) || defined(REFLECTIONMAP_SKYBOX) || defined(ALPHAFRESNEL)
|
|
746
|
+
vec3 getReflectanceFromAnalyticalBRDFLookup_Jones(float VdotN,vec3 reflectance0,vec3 reflectance90,float smoothness)
|
|
747
|
+
{float weight=mix(FRESNEL_MAXIMUM_ON_ROUGH,1.0,smoothness);return reflectance0+weight*(reflectance90-reflectance0)*pow5(saturate(1.0-VdotN));}
|
|
748
|
+
#endif
|
|
749
|
+
#if defined(SHEEN) && defined(ENVIRONMENTBRDF)
|
|
750
|
+
/**
|
|
751
|
+
* The sheen BRDF not containing F can be easily stored in the blue channel of the BRDF texture.
|
|
752
|
+
* The blue channel contains DCharlie*VAshikhmin*NdotL as a lokkup table
|
|
753
|
+
*/
|
|
754
|
+
vec3 getSheenReflectanceFromBRDFLookup(const vec3 reflectance0,const vec3 environmentBrdf) {vec3 sheenEnvironmentReflectance=reflectance0*environmentBrdf.b;return sheenEnvironmentReflectance;}
|
|
755
|
+
#endif
|
|
756
|
+
vec3 fresnelSchlickGGX(float VdotH,vec3 reflectance0,vec3 reflectance90)
|
|
757
|
+
{return reflectance0+(reflectance90-reflectance0)*pow5(1.0-VdotH);}
|
|
758
|
+
float fresnelSchlickGGX(float VdotH,float reflectance0,float reflectance90)
|
|
759
|
+
{return reflectance0+(reflectance90-reflectance0)*pow5(1.0-VdotH);}
|
|
760
|
+
#ifdef CLEARCOAT
|
|
761
|
+
vec3 getR0RemappedForClearCoat(vec3 f0) {
|
|
762
|
+
#ifdef CLEARCOAT_DEFAULTIOR
|
|
763
|
+
#ifdef MOBILE
|
|
764
|
+
return saturate(f0*(f0*0.526868+0.529324)-0.0482256);
|
|
939
765
|
#else
|
|
940
|
-
return
|
|
766
|
+
return saturate(f0*(f0*(0.941892-0.263008*f0)+0.346479)-0.0285998);
|
|
941
767
|
#endif
|
|
768
|
+
#else
|
|
769
|
+
vec3 s=sqrt(f0);vec3 t=(vClearCoatRefractionParams.z+vClearCoatRefractionParams.w*s)/(vClearCoatRefractionParams.w+vClearCoatRefractionParams.z*s);return square(t);
|
|
942
770
|
#endif
|
|
943
|
-
|
|
944
|
-
return computeProjectionCoords(worldPos,view,reflectionMatrix);
|
|
771
|
+
}
|
|
945
772
|
#endif
|
|
946
|
-
#ifdef
|
|
947
|
-
|
|
773
|
+
#ifdef IRIDESCENCE
|
|
774
|
+
const mat3 XYZ_TO_REC709=mat3(
|
|
775
|
+
3.2404542,-0.9692660, 0.0556434,
|
|
776
|
+
-1.5371385, 1.8760108,-0.2040259,
|
|
777
|
+
-0.4985314, 0.0415560, 1.0572252
|
|
778
|
+
);vec3 getIORTfromAirToSurfaceR0(vec3 f0) {vec3 sqrtF0=sqrt(f0);return (1.+sqrtF0)/(1.-sqrtF0);}
|
|
779
|
+
vec3 getR0fromIORs(vec3 iorT,float iorI) {return square((iorT-vec3(iorI))/(iorT+vec3(iorI)));}
|
|
780
|
+
float getR0fromIORs(float iorT,float iorI) {return square((iorT-iorI)/(iorT+iorI));}
|
|
781
|
+
vec3 evalSensitivity(float opd,vec3 shift) {float phase=2.0*PI*opd*1.0e-9;const vec3 val=vec3(5.4856e-13,4.4201e-13,5.2481e-13);const vec3 pos=vec3(1.6810e+06,1.7953e+06,2.2084e+06);const vec3 var=vec3(4.3278e+09,9.3046e+09,6.6121e+09);vec3 xyz=val*sqrt(2.0*PI*var)*cos(pos*phase+shift)*exp(-square(phase)*var);xyz.x+=9.7470e-14*sqrt(2.0*PI*4.5282e+09)*cos(2.2399e+06*phase+shift[0])*exp(-4.5282e+09*square(phase));xyz/=1.0685e-7;vec3 srgb=XYZ_TO_REC709*xyz;return srgb;}
|
|
782
|
+
vec3 evalIridescence(float outsideIOR,float eta2,float cosTheta1,float thinFilmThickness,vec3 baseF0) {vec3 I=vec3(1.0);float iridescenceIOR=mix(outsideIOR,eta2,smoothstep(0.0,0.03,thinFilmThickness));float sinTheta2Sq=square(outsideIOR/iridescenceIOR)*(1.0-square(cosTheta1));float cosTheta2Sq=1.0-sinTheta2Sq;if (cosTheta2Sq<0.0) {return I;}
|
|
783
|
+
float cosTheta2=sqrt(cosTheta2Sq);float R0=getR0fromIORs(iridescenceIOR,outsideIOR);float R12=fresnelSchlickGGX(cosTheta1,R0,1.);float R21=R12;float T121=1.0-R12;float phi12=0.0;if (iridescenceIOR<outsideIOR) phi12=PI;float phi21=PI-phi12;vec3 baseIOR=getIORTfromAirToSurfaceR0(clamp(baseF0,0.0,0.9999));
|
|
784
|
+
vec3 R1=getR0fromIORs(baseIOR,iridescenceIOR);float maxR1=max(R1.r,max(R1.g,R1.b));if (maxR1<1e-6) {return max(vec3(R12),vec3(0.0));}
|
|
785
|
+
vec3 R23=fresnelSchlickGGX(cosTheta2,R1,vec3(1.));vec3 phi23=vec3(0.0);if (baseIOR[0]<iridescenceIOR) phi23[0]=PI;if (baseIOR[1]<iridescenceIOR) phi23[1]=PI;if (baseIOR[2]<iridescenceIOR) phi23[2]=PI;float opd=2.0*iridescenceIOR*thinFilmThickness*cosTheta2;vec3 phi=vec3(phi21)+phi23;vec3 R123=clamp(R12*R23,1e-5,0.9999);vec3 r123=sqrt(R123);vec3 Rs=square(T121)*R23/(vec3(1.0)-R123);vec3 C0=R12+Rs;I=C0;vec3 Cm=Rs-T121;for (int m=1; m<=2; ++m)
|
|
786
|
+
{Cm*=r123;vec3 Sm=2.0*evalSensitivity(float(m)*opd,float(m)*phi);I+=Cm*Sm;}
|
|
787
|
+
return max(I,vec3(0.0));}
|
|
948
788
|
#endif
|
|
949
|
-
|
|
950
|
-
|
|
789
|
+
float normalDistributionFunction_TrowbridgeReitzGGX(float NdotH,float alphaG)
|
|
790
|
+
{float a2=square(alphaG);float d=NdotH*NdotH*(a2-1.0)+1.0;return a2/(PI*d*d);}
|
|
791
|
+
#ifdef SHEEN
|
|
792
|
+
float normalDistributionFunction_CharlieSheen(float NdotH,float alphaG)
|
|
793
|
+
{float invR=1./alphaG;float cos2h=NdotH*NdotH;float sin2h=1.-cos2h;return (2.+invR)*pow(sin2h,invR*.5)/(2.*PI);}
|
|
951
794
|
#endif
|
|
952
|
-
|
|
795
|
+
#ifdef ANISOTROPIC
|
|
796
|
+
float normalDistributionFunction_BurleyGGX_Anisotropic(float NdotH,float TdotH,float BdotH,const vec2 alphaTB) {float a2=alphaTB.x*alphaTB.y;vec3 v=vec3(alphaTB.y*TdotH,alphaTB.x *BdotH,a2*NdotH);float v2=dot(v,v);float w2=a2/v2;return a2*w2*w2*RECIPROCAL_PI;}
|
|
953
797
|
#endif
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
#
|
|
957
|
-
|
|
958
|
-
#ifdef LODBASEDMICROSFURACE
|
|
959
|
-
#define sampleReflectionLod(s,c,l) textureCubeLodEXT(s,c,l)
|
|
798
|
+
#ifdef BRDF_V_HEIGHT_CORRELATED
|
|
799
|
+
float smithVisibility_GGXCorrelated(float NdotL,float NdotV,float alphaG) {
|
|
800
|
+
#ifdef MOBILE
|
|
801
|
+
float GGXV=NdotL*(NdotV*(1.0-alphaG)+alphaG);float GGXL=NdotV*(NdotL*(1.0-alphaG)+alphaG);return 0.5/(GGXV+GGXL);
|
|
960
802
|
#else
|
|
961
|
-
|
|
962
|
-
#endif
|
|
963
|
-
#ifdef USEIRRADIANCEMAP
|
|
964
|
-
uniform samplerCube irradianceSampler;
|
|
803
|
+
float a2=alphaG*alphaG;float GGXV=NdotL*sqrt(NdotV*(NdotV-a2*NdotV)+a2);float GGXL=NdotV*sqrt(NdotL*(NdotL-a2*NdotL)+a2);return 0.5/(GGXV+GGXL);
|
|
965
804
|
#endif
|
|
805
|
+
}
|
|
966
806
|
#else
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
#ifdef
|
|
970
|
-
|
|
971
|
-
#else
|
|
972
|
-
uniform sampler2D reflectionSamplerLow;uniform sampler2D reflectionSamplerHigh;
|
|
973
|
-
#endif
|
|
974
|
-
#ifdef USEIRRADIANCEMAP
|
|
975
|
-
uniform sampler2D irradianceSampler;
|
|
976
|
-
#endif
|
|
977
|
-
#endif
|
|
978
|
-
#ifdef REFLECTIONMAP_SKYBOX
|
|
979
|
-
varying vec3 vPositionUVW;
|
|
807
|
+
float smithVisibilityG1_TrowbridgeReitzGGXFast(float dot,float alphaG)
|
|
808
|
+
{
|
|
809
|
+
#ifdef MOBILE
|
|
810
|
+
return 1.0/(dot+alphaG+(1.0-alphaG)*dot ));
|
|
980
811
|
#else
|
|
981
|
-
|
|
982
|
-
varying vec3 vDirectionW;
|
|
812
|
+
float alphaSquared=alphaG*alphaG;return 1.0/(dot+sqrt(alphaSquared+(1.0-alphaSquared)*dot*dot));
|
|
983
813
|
#endif
|
|
814
|
+
}
|
|
815
|
+
float smithVisibility_TrowbridgeReitzGGXFast(float NdotL,float NdotV,float alphaG)
|
|
816
|
+
{float visibility=smithVisibilityG1_TrowbridgeReitzGGXFast(NdotL,alphaG)*smithVisibilityG1_TrowbridgeReitzGGXFast(NdotV,alphaG);return visibility;}
|
|
984
817
|
#endif
|
|
818
|
+
#ifdef ANISOTROPIC
|
|
819
|
+
float smithVisibility_GGXCorrelated_Anisotropic(float NdotL,float NdotV,float TdotV,float BdotV,float TdotL,float BdotL,const vec2 alphaTB) {float lambdaV=NdotL*length(vec3(alphaTB.x*TdotV,alphaTB.y*BdotV,NdotV));float lambdaL=NdotV*length(vec3(alphaTB.x*TdotL,alphaTB.y*BdotL,NdotL));float v=0.5/(lambdaV+lambdaL);return v;}
|
|
985
820
|
#endif
|
|
986
|
-
|
|
987
|
-
float
|
|
988
|
-
float getLinearLodFromRoughness(float cubeMapDimensionPixels,float roughness) {float lod=log2(cubeMapDimensionPixels)*roughness;return lod;}
|
|
821
|
+
#ifdef CLEARCOAT
|
|
822
|
+
float visibility_Kelemen(float VdotH) {return 0.25/(VdotH*VdotH); }
|
|
989
823
|
#endif
|
|
990
|
-
#
|
|
991
|
-
float
|
|
824
|
+
#ifdef SHEEN
|
|
825
|
+
float visibility_Ashikhmin(float NdotL,float NdotV)
|
|
826
|
+
{return 1./(4.*(NdotL+NdotV-NdotL*NdotV));}
|
|
827
|
+
/* NOT USED
|
|
828
|
+
#ifdef SHEEN_SOFTER
|
|
829
|
+
float l(float x,float alphaG)
|
|
830
|
+
{float oneMinusAlphaSq=(1.0-alphaG)*(1.0-alphaG);float a=mix(21.5473,25.3245,oneMinusAlphaSq);float b=mix(3.82987,3.32435,oneMinusAlphaSq);float c=mix(0.19823,0.16801,oneMinusAlphaSq);float d=mix(-1.97760,-1.27393,oneMinusAlphaSq);float e=mix(-4.32054,-4.85967,oneMinusAlphaSq);return a/(1.0+b*pow(x,c))+d*x+e;}
|
|
831
|
+
float lambdaSheen(float cosTheta,float alphaG)
|
|
832
|
+
{return abs(cosTheta)<0.5 ? exp(l(cosTheta,alphaG)) : exp(2.0*l(0.5,alphaG)-l(1.0-cosTheta,alphaG));}
|
|
833
|
+
float visibility_CharlieSheen(float NdotL,float NdotV,float alphaG)
|
|
834
|
+
{float G=1.0/(1.0+lambdaSheen(NdotV,alphaG)+lambdaSheen(NdotL,alphaG));return G/(4.0*NdotV*NdotL);}
|
|
992
835
|
#endif
|
|
993
|
-
|
|
994
|
-
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);}
|
|
836
|
+
*/
|
|
995
837
|
#endif
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
838
|
+
float diffuseBRDF_Burley(float NdotL,float NdotV,float VdotH,float roughness) {float diffuseFresnelNV=pow5(saturateEps(1.0-NdotL));float diffuseFresnelNL=pow5(saturateEps(1.0-NdotV));float diffuseFresnel90=0.5+2.0*VdotH*VdotH*roughness;float fresnel =
|
|
839
|
+
(1.0+(diffuseFresnel90-1.0)*diffuseFresnelNL) *
|
|
840
|
+
(1.0+(diffuseFresnel90-1.0)*diffuseFresnelNV);return fresnel/PI;}
|
|
841
|
+
const float constant1_FON=0.5-2.0/(3.0*PI);const float constant2_FON=2.0/3.0-28.0/(15.0*PI);float E_FON_approx(float mu,float roughness)
|
|
842
|
+
{float sigma=roughness;
|
|
843
|
+
float mucomp=1.0-mu;float mucomp2=mucomp*mucomp;const mat2 Gcoeffs=mat2(0.0571085289,-0.332181442,
|
|
844
|
+
0.491881867,0.0714429953);float GoverPi=dot(Gcoeffs*vec2(mucomp,mucomp2),vec2(1.0,mucomp2));return (1.0+sigma*GoverPi)/(1.0+constant1_FON*sigma);}
|
|
845
|
+
vec3 diffuseBRDF_EON(vec3 albedo,float roughness,float NdotL,float NdotV,float LdotV)
|
|
846
|
+
{vec3 rho=albedo;float sigma=roughness;
|
|
847
|
+
float mu_i=NdotL;
|
|
848
|
+
float mu_o=NdotV;
|
|
849
|
+
float s=LdotV-mu_i*mu_o;
|
|
850
|
+
float sovertF=s>0.0 ? s/max(mu_i,mu_o) : s;
|
|
851
|
+
float AF=1.0/(1.0+constant1_FON*sigma);
|
|
852
|
+
vec3 f_ss=(rho*RECIPROCAL_PI)*AF*(1.0+sigma*sovertF);
|
|
853
|
+
float EFo=E_FON_approx(mu_o,sigma);
|
|
854
|
+
float EFi=E_FON_approx(mu_i,sigma);
|
|
855
|
+
float avgEF=AF*(1.0+constant2_FON*sigma);
|
|
856
|
+
vec3 rho_ms=(rho*rho)*avgEF/(vec3(1.0)-rho*(1.0-avgEF));const float eps=1.0e-7;vec3 f_ms=(rho_ms*RECIPROCAL_PI)*max(eps,1.0-EFo)
|
|
857
|
+
* max(eps,1.0-EFi)
|
|
858
|
+
/ max(eps,1.0-avgEF);return (f_ss+f_ms);}
|
|
859
|
+
#ifdef SS_TRANSLUCENCY
|
|
860
|
+
vec3 transmittanceBRDF_Burley(const vec3 tintColor,const vec3 diffusionDistance,float thickness) {vec3 S=1./maxEps(diffusionDistance);vec3 temp=exp((-0.333333333*thickness)*S);return tintColor.rgb*0.25*(temp*temp*temp+3.0*temp);}
|
|
861
|
+
float computeWrappedDiffuseNdotL(float NdotL,float w) {float t=1.0+w;float invt2=1.0/square(t);return saturate((NdotL+w)*invt2);}
|
|
999
862
|
#endif
|
|
1000
|
-
|
|
863
|
+
#endif
|
|
864
|
+
`;t.ShaderStore.IncludesShadersStore[i]||(t.ShaderStore.IncludesShadersStore[i]=o),e.s(["pbrBRDFFunctions",0,{name:i,shader:o}])},63807,25176,72317,7750,44239,34464,32181,50154,8734,46456,37897,e=>{"use strict";var t=e.i(25044);e.i(49185);let i="pbrFragmentExtraDeclaration",o=`varying vec3 vPositionW;
|
|
1001
865
|
#if DEBUGMODE>0
|
|
1002
866
|
varying vec4 vClipSpacePosition;
|
|
1003
867
|
#endif
|
|
@@ -1014,15 +878,15 @@ varying vec4 vColor;
|
|
|
1014
878
|
#if defined(CLUSTLIGHT_BATCH) && CLUSTLIGHT_BATCH>0
|
|
1015
879
|
varying float vViewDepth;
|
|
1016
880
|
#endif
|
|
1017
|
-
`;t.ShaderStore.IncludesShadersStore[i]||(t.ShaderStore.IncludesShadersStore[i]=o),e.s(["pbrFragmentExtraDeclaration",0,{name:i,shader:o}],
|
|
1018
|
-
{return diffusionProfile<1.;}`;t.ShaderStore.IncludesShadersStore[a]||(t.ShaderStore.IncludesShadersStore[a]=r),e.s(["subSurfaceScatteringFunctions",0,{name:a,shader:r}],
|
|
881
|
+
`;t.ShaderStore.IncludesShadersStore[i]||(t.ShaderStore.IncludesShadersStore[i]=o),e.s(["pbrFragmentExtraDeclaration",0,{name:i,shader:o}],63807);let a="subSurfaceScatteringFunctions",r=`bool testLightingForSSS(float diffusionProfile)
|
|
882
|
+
{return diffusionProfile<1.;}`;t.ShaderStore.IncludesShadersStore[a]||(t.ShaderStore.IncludesShadersStore[a]=r),e.s(["subSurfaceScatteringFunctions",0,{name:a,shader:r}],25176);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);}
|
|
1019
883
|
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);}
|
|
1020
884
|
vec3 hemisphereImportanceSampleDggxAnisotropic(vec2 Xi,float alphaTangent,float alphaBitangent)
|
|
1021
885
|
{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;
|
|
1022
886
|
float cosPhi=cos(phi);float sinPhi=sin(phi);float alpha2=(cosPhi*cosPhi)/(alphaTangent*alphaTangent) +
|
|
1023
887
|
(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);}
|
|
1024
888
|
vec3 hemisphereImportanceSampleDCharlie(vec2 u,float a) {
|
|
1025
|
-
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);}`;t.ShaderStore.IncludesShadersStore[n]||(t.ShaderStore.IncludesShadersStore[n]=l),e.s(["importanceSampling",0,{name:n,shader:l}],
|
|
889
|
+
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);}`;t.ShaderStore.IncludesShadersStore[n]||(t.ShaderStore.IncludesShadersStore[n]=l),e.s(["importanceSampling",0,{name:n,shader:l}],72317);let f="pbrHelperFunctions",c=`#define MINIMUMVARIANCE 0.0005
|
|
1026
890
|
#ifndef TEXRD_DEFINED
|
|
1027
891
|
#define TEXRD(s,uv) texture2D(s,uv)
|
|
1028
892
|
#define TEXRD_DEFINED
|
|
@@ -1061,7 +925,7 @@ clearCoatIntensity);return clearCoatAbsorption;}
|
|
|
1061
925
|
float computeDefaultMicroSurface(float microSurface,vec3 reflectivityColor)
|
|
1062
926
|
{const float kReflectivityNoAlphaWorkflow_SmoothnessMax=0.95;float reflectivityLuminance=getLuminance(reflectivityColor);float reflectivityLuma=sqrt(reflectivityLuminance);microSurface=reflectivityLuma*kReflectivityNoAlphaWorkflow_SmoothnessMax;return microSurface;}
|
|
1063
927
|
#endif
|
|
1064
|
-
`;t.ShaderStore.IncludesShadersStore[f]||(t.ShaderStore.IncludesShadersStore[f]=c),e.s(["pbrHelperFunctions",0,{name:f,shader:c}],
|
|
928
|
+
`;t.ShaderStore.IncludesShadersStore[f]||(t.ShaderStore.IncludesShadersStore[f]=c),e.s(["pbrHelperFunctions",0,{name:f,shader:c}],7750),e.i(31444);let s="pbrDirectLightingSetupFunctions",d=`struct preLightingInfo
|
|
1065
929
|
{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;
|
|
1066
930
|
#ifdef IRIDESCENCE
|
|
1067
931
|
float iridescenceIntensity;
|
|
@@ -1094,7 +958,7 @@ result.areaLightFresnel=data.Fresnel;result.areaLightSpecular=data.Specular;
|
|
|
1094
958
|
#endif
|
|
1095
959
|
result.areaLightDiffuse=data.Diffuse;result.LdotV=0.;result.roughness=0.;result.diffuseRoughness=0.;result.surfaceAlbedo=vec3(0.);return result;}
|
|
1096
960
|
#endif
|
|
1097
|
-
`;t.ShaderStore.IncludesShadersStore[s]||(t.ShaderStore.IncludesShadersStore[s]=d),e.s(["pbrDirectLightingSetupFunctions",0,{name:s,shader:d}],
|
|
961
|
+
`;t.ShaderStore.IncludesShadersStore[s]||(t.ShaderStore.IncludesShadersStore[s]=d),e.s(["pbrDirectLightingSetupFunctions",0,{name:s,shader:d}],44239);let u="pbrDirectLightingFalloffFunctions",h=`float computeDistanceLightFalloff_Standard(vec3 lightOffset,float range)
|
|
1098
962
|
{return max(0.,1.0-length(lightOffset)/range);}
|
|
1099
963
|
float computeDistanceLightFalloff_Physical(float lightDistanceSquared)
|
|
1100
964
|
{return 1.0/maxEps(lightDistanceSquared);}
|
|
@@ -1130,7 +994,7 @@ return computeDirectionalLightFalloff_GLTF(lightDirection,directionToLightCenter
|
|
|
1130
994
|
#else
|
|
1131
995
|
return computeDirectionalLightFalloff_Standard(lightDirection,directionToLightCenterW,cosHalfAngle,exponent);
|
|
1132
996
|
#endif
|
|
1133
|
-
}`;t.ShaderStore.IncludesShadersStore[u]||(t.ShaderStore.IncludesShadersStore[u]=h),e.s(["pbrDirectLightingFalloffFunctions",0,{name:u,shader:h}],
|
|
997
|
+
}`;t.ShaderStore.IncludesShadersStore[u]||(t.ShaderStore.IncludesShadersStore[u]=h),e.s(["pbrDirectLightingFalloffFunctions",0,{name:u,shader:h}],34464);let g="hdrFilteringFunctions",v=`#if NUM_SAMPLES
|
|
1134
998
|
#if NUM_SAMPLES>0
|
|
1135
999
|
#if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)
|
|
1136
1000
|
float radicalInverse_VdC(uint bits)
|
|
@@ -1256,13 +1120,13 @@ vec2 noiseInput,
|
|
|
1256
1120
|
bool isRefraction,
|
|
1257
1121
|
float ior
|
|
1258
1122
|
)
|
|
1259
|
-
{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.
|
|
1123
|
+
{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.;
|
|
1260
1124
|
#if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)
|
|
1261
1125
|
for(uint i=0u; i<NUM_SAMPLES; ++i)
|
|
1262
1126
|
#else
|
|
1263
1127
|
for(int i=0; i<NUM_SAMPLES; ++i)
|
|
1264
1128
|
#endif
|
|
1265
|
-
{vec2 Xi=hammersley(i,NUM_SAMPLES);Xi=fract(Xi+noiseInput*mix(0.
|
|
1129
|
+
{vec2 Xi=hammersley(i,NUM_SAMPLES);Xi=fract(Xi+noiseInput*mix(0.5,0.015,noiseScale));
|
|
1266
1130
|
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);}
|
|
1267
1131
|
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(
|
|
1268
1132
|
H_tangent.z,H_tangent.x,H_tangent.y,vec2(clampedAlphaT,clampedAlphaB)
|
|
@@ -1275,7 +1139,7 @@ result=result/weight;return result;}
|
|
|
1275
1139
|
#endif
|
|
1276
1140
|
#endif
|
|
1277
1141
|
#endif
|
|
1278
|
-
`;t.ShaderStore.IncludesShadersStore[g]||(t.ShaderStore.IncludesShadersStore[g]=v),e.s(["hdrFilteringFunctions",0,{name:g,shader:v}],
|
|
1142
|
+
`;t.ShaderStore.IncludesShadersStore[g]||(t.ShaderStore.IncludesShadersStore[g]=v),e.s(["hdrFilteringFunctions",0,{name:g,shader:v}],32181);let m="pbrDirectLightingFunctions",p=`#define CLEARCOATREFLECTANCE90 1.0
|
|
1279
1143
|
struct lightingInfo
|
|
1280
1144
|
{vec3 diffuse;
|
|
1281
1145
|
#ifdef SS_TRANSLUCENCY
|
|
@@ -1381,7 +1245,7 @@ float visibility=visibility_CharlieSheen(info.NdotL,info.NdotV,alphaG);
|
|
|
1381
1245
|
float visibility=visibility_Ashikhmin(info.NdotL,info.NdotV);/* #endif */
|
|
1382
1246
|
float sheenTerm=fresnel*distribution*visibility;return sheenTerm*info.attenuation*info.NdotL*lightColor;}
|
|
1383
1247
|
#endif
|
|
1384
|
-
`;t.ShaderStore.IncludesShadersStore[m]||(t.ShaderStore.IncludesShadersStore[m]=p),e.s(["pbrDirectLightingFunctions",0,{name:m,shader:p}],
|
|
1248
|
+
`;t.ShaderStore.IncludesShadersStore[m]||(t.ShaderStore.IncludesShadersStore[m]=p),e.s(["pbrDirectLightingFunctions",0,{name:m,shader:p}],50154);let S="pbrBlockNormalGeometric",E=`vec3 viewDirectionW=normalize(vEyePosition.xyz-vPositionW);
|
|
1385
1249
|
#ifdef NORMAL
|
|
1386
1250
|
vec3 normalW=normalize(vNormalW);
|
|
1387
1251
|
#else
|
|
@@ -1391,7 +1255,7 @@ vec3 geometricNormalW=normalW;
|
|
|
1391
1255
|
#if defined(TWOSIDEDLIGHTING) && defined(NORMAL)
|
|
1392
1256
|
geometricNormalW=gl_FrontFacing ? geometricNormalW : -geometricNormalW;
|
|
1393
1257
|
#endif
|
|
1394
|
-
`;t.ShaderStore.IncludesShadersStore[S]||(t.ShaderStore.IncludesShadersStore[S]=E),e.s(["pbrBlockNormalGeometric",0,{name:S,shader:E}],
|
|
1258
|
+
`;t.ShaderStore.IncludesShadersStore[S]||(t.ShaderStore.IncludesShadersStore[S]=E),e.s(["pbrBlockNormalGeometric",0,{name:S,shader:E}],8734);let L="pbrBlockImageProcessing",I=`#if defined(IMAGEPROCESSINGPOSTPROCESS) || defined(SS_SCATTERING)
|
|
1395
1259
|
#if !defined(SKIPFINALCOLORCLAMP)
|
|
1396
1260
|
finalColor.rgb=clamp(finalColor.rgb,0.,30.0);
|
|
1397
1261
|
#endif
|
|
@@ -1402,7 +1266,7 @@ finalColor.a*=visibility;
|
|
|
1402
1266
|
#ifdef PREMULTIPLYALPHA
|
|
1403
1267
|
finalColor.rgb*=finalColor.a;
|
|
1404
1268
|
#endif
|
|
1405
|
-
`;t.ShaderStore.IncludesShadersStore[L]||(t.ShaderStore.IncludesShadersStore[L]=I),e.s(["pbrBlockImageProcessing",0,{name:L,shader:I}],
|
|
1269
|
+
`;t.ShaderStore.IncludesShadersStore[L]||(t.ShaderStore.IncludesShadersStore[L]=I),e.s(["pbrBlockImageProcessing",0,{name:L,shader:I}],46456);let D="pbrDebug",A=`#if DEBUGMODE>0
|
|
1406
1270
|
if (vClipSpacePosition.x/vClipSpacePosition.w>=vDebugMode.x) {
|
|
1407
1271
|
#if DEBUGMODE==1
|
|
1408
1272
|
gl_FragColor.rgb=vPositionW.rgb;
|
|
@@ -1586,4 +1450,140 @@ return;
|
|
|
1586
1450
|
#endif
|
|
1587
1451
|
}
|
|
1588
1452
|
#endif
|
|
1589
|
-
`;t.ShaderStore.IncludesShadersStore[D]||(t.ShaderStore.IncludesShadersStore[D]=A),e.s(["pbrDebug",0,{name:D,shader:A}],
|
|
1453
|
+
`;t.ShaderStore.IncludesShadersStore[D]||(t.ShaderStore.IncludesShadersStore[D]=A),e.s(["pbrDebug",0,{name:D,shader:A}],37897)},20675,18054,e=>{"use strict";var t=e.i(25044);let i="pbrFragmentReflectionDeclaration",o=`#ifdef REFLECTION
|
|
1454
|
+
#ifdef REFLECTIONMAP_3D
|
|
1455
|
+
#define sampleReflection(s,c) textureCube(s,c)
|
|
1456
|
+
uniform samplerCube reflectionSampler;
|
|
1457
|
+
#ifdef LODBASEDMICROSFURACE
|
|
1458
|
+
#define sampleReflectionLod(s,c,l) textureCubeLodEXT(s,c,l)
|
|
1459
|
+
#else
|
|
1460
|
+
uniform samplerCube reflectionSamplerLow;uniform samplerCube reflectionSamplerHigh;
|
|
1461
|
+
#endif
|
|
1462
|
+
#ifdef USEIRRADIANCEMAP
|
|
1463
|
+
uniform samplerCube irradianceSampler;
|
|
1464
|
+
#endif
|
|
1465
|
+
#else
|
|
1466
|
+
#define sampleReflection(s,c) texture2D(s,c)
|
|
1467
|
+
uniform sampler2D reflectionSampler;
|
|
1468
|
+
#ifdef LODBASEDMICROSFURACE
|
|
1469
|
+
#define sampleReflectionLod(s,c,l) texture2DLodEXT(s,c,l)
|
|
1470
|
+
#else
|
|
1471
|
+
uniform sampler2D reflectionSamplerLow;uniform sampler2D reflectionSamplerHigh;
|
|
1472
|
+
#endif
|
|
1473
|
+
#ifdef USEIRRADIANCEMAP
|
|
1474
|
+
uniform sampler2D irradianceSampler;
|
|
1475
|
+
#endif
|
|
1476
|
+
#endif
|
|
1477
|
+
#ifdef REFLECTIONMAP_SKYBOX
|
|
1478
|
+
varying vec3 vPositionUVW;
|
|
1479
|
+
#else
|
|
1480
|
+
#if defined(REFLECTIONMAP_EQUIRECTANGULAR_FIXED) || defined(REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED)
|
|
1481
|
+
varying vec3 vDirectionW;
|
|
1482
|
+
#endif
|
|
1483
|
+
#endif
|
|
1484
|
+
#endif
|
|
1485
|
+
`;t.ShaderStore.IncludesShadersStore[i]||(t.ShaderStore.IncludesShadersStore[i]=o),e.s(["pbrFragmentReflectionDeclaration",0,{name:i,shader:o}],20675);let a="pbrIBLFunctions",r=`#if defined(REFLECTION) || defined(SS_REFRACTION)
|
|
1486
|
+
float getLodFromAlphaG(float cubeMapDimensionPixels,float microsurfaceAverageSlope) {float microsurfaceAverageSlopeTexels=cubeMapDimensionPixels*microsurfaceAverageSlope;float lod=log2(microsurfaceAverageSlopeTexels);return lod;}
|
|
1487
|
+
float getLinearLodFromRoughness(float cubeMapDimensionPixels,float roughness) {float lod=log2(cubeMapDimensionPixels)*roughness;return lod;}
|
|
1488
|
+
#endif
|
|
1489
|
+
#if defined(ENVIRONMENTBRDF) && defined(RADIANCEOCCLUSION)
|
|
1490
|
+
float environmentRadianceOcclusion(float ambientOcclusion,float NdotVUnclamped) {float temp=NdotVUnclamped+ambientOcclusion;return saturate(square(temp)-1.0+ambientOcclusion);}
|
|
1491
|
+
#endif
|
|
1492
|
+
#if defined(ENVIRONMENTBRDF) && defined(HORIZONOCCLUSION)
|
|
1493
|
+
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);}
|
|
1494
|
+
#endif
|
|
1495
|
+
#if defined(LODINREFLECTIONALPHA) || defined(SS_LODINREFRACTIONALPHA)
|
|
1496
|
+
#define UNPACK_LOD(x) (1.0-x)*255.0
|
|
1497
|
+
float getLodFromAlphaG(float cubeMapDimensionPixels,float alphaG,float NdotV) {float microsurfaceAverageSlope=alphaG;microsurfaceAverageSlope*=sqrt(abs(NdotV));return getLodFromAlphaG(cubeMapDimensionPixels,microsurfaceAverageSlope);}
|
|
1498
|
+
#endif
|
|
1499
|
+
`;t.ShaderStore.IncludesShadersStore[a]||(t.ShaderStore.IncludesShadersStore[a]=r),e.s(["pbrIBLFunctions",0,{name:a,shader:r}],18054)},83089,e=>{"use strict";var t=e.i(25044);e.i(77074),e.i(4100);let i="pbrUboDeclaration",o=`layout(std140,column_major) uniform;uniform Material {vec2 vAlbedoInfos;vec2 vBaseWeightInfos;vec2 vBaseDiffuseRoughnessInfos;vec4 vAmbientInfos;vec2 vOpacityInfos;vec2 vEmissiveInfos;vec2 vLightmapInfos;vec3 vReflectivityInfos;vec2 vMicroSurfaceSamplerInfos;vec3 vBumpInfos;mat4 albedoMatrix;mat4 baseWeightMatrix;mat4 baseDiffuseRoughnessMatrix;mat4 ambientMatrix;mat4 opacityMatrix;mat4 emissiveMatrix;mat4 lightmapMatrix;mat4 reflectivityMatrix;mat4 microSurfaceSamplerMatrix;mat4 bumpMatrix;vec2 vTangentSpaceParams;vec4 vAlbedoColor;float baseWeight;float baseDiffuseRoughness;vec4 vLightingIntensity;float pointSize;vec4 vReflectivityColor;vec3 vEmissiveColor;vec3 vAmbientColor;vec2 vDebugMode;vec4 vMetallicReflectanceFactors;vec2 vMetallicReflectanceInfos;mat4 metallicReflectanceMatrix;vec2 vReflectanceInfos;mat4 reflectanceMatrix;vec4 cameraInfo;vec4 vTextureRepetitionHexTilingParams;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;
|
|
1500
|
+
#define ADDITIONAL_UBO_DECLARATION
|
|
1501
|
+
};
|
|
1502
|
+
#include<sceneUboDeclaration>
|
|
1503
|
+
#include<meshUboDeclaration>
|
|
1504
|
+
`;t.ShaderStore.IncludesShadersStore[i]||(t.ShaderStore.IncludesShadersStore[i]=o),e.s(["pbrUboDeclaration",0,{name:i,shader:o}])},95804,12075,e=>{"use strict";var t=e.i(25044);let i="samplerFragmentDeclaration",o=`#ifdef _DEFINENAME_
|
|
1505
|
+
#if _DEFINENAME_DIRECTUV==1
|
|
1506
|
+
#define v_VARYINGNAME_UV vMainUV1
|
|
1507
|
+
#elif _DEFINENAME_DIRECTUV==2
|
|
1508
|
+
#define v_VARYINGNAME_UV vMainUV2
|
|
1509
|
+
#elif _DEFINENAME_DIRECTUV==3
|
|
1510
|
+
#define v_VARYINGNAME_UV vMainUV3
|
|
1511
|
+
#elif _DEFINENAME_DIRECTUV==4
|
|
1512
|
+
#define v_VARYINGNAME_UV vMainUV4
|
|
1513
|
+
#elif _DEFINENAME_DIRECTUV==5
|
|
1514
|
+
#define v_VARYINGNAME_UV vMainUV5
|
|
1515
|
+
#elif _DEFINENAME_DIRECTUV==6
|
|
1516
|
+
#define v_VARYINGNAME_UV vMainUV6
|
|
1517
|
+
#else
|
|
1518
|
+
varying vec2 v_VARYINGNAME_UV;
|
|
1519
|
+
#endif
|
|
1520
|
+
uniform sampler2D _SAMPLERNAME_Sampler;
|
|
1521
|
+
#endif
|
|
1522
|
+
`;t.ShaderStore.IncludesShadersStore[i]||(t.ShaderStore.IncludesShadersStore[i]=o),e.s(["samplerFragmentDeclaration",0,{name:i,shader:o}],95804);let a="reflectionFunction",r=`vec3 computeFixedEquirectangularCoords(vec4 worldPos,vec3 worldNormal,vec3 direction)
|
|
1523
|
+
{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); }
|
|
1524
|
+
vec3 computeMirroredFixedEquirectangularCoords(vec4 worldPos,vec3 worldNormal,vec3 direction)
|
|
1525
|
+
{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); }
|
|
1526
|
+
vec3 computeEquirectangularCoords(vec4 worldPos,vec3 worldNormal,vec3 eyePosition,mat4 reflectionMatrix)
|
|
1527
|
+
{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);}
|
|
1528
|
+
vec3 computeSphericalCoords(vec4 worldPos,vec3 worldNormal,mat4 view,mat4 reflectionMatrix)
|
|
1529
|
+
{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);}
|
|
1530
|
+
vec3 computePlanarCoords(vec4 worldPos,vec3 worldNormal,vec3 eyePosition,mat4 reflectionMatrix)
|
|
1531
|
+
{vec3 viewDir=worldPos.xyz-eyePosition;vec3 coords=normalize(reflect(viewDir,worldNormal));return vec3(reflectionMatrix*vec4(coords,1));}
|
|
1532
|
+
vec3 computeCubicCoords(vec4 worldPos,vec3 worldNormal,vec3 eyePosition,mat4 reflectionMatrix)
|
|
1533
|
+
{vec3 viewDir=normalize(worldPos.xyz-eyePosition);vec3 coords=reflect(viewDir,worldNormal);coords=vec3(reflectionMatrix*vec4(coords,0));
|
|
1534
|
+
#ifdef INVERTCUBICMAP
|
|
1535
|
+
coords.y*=-1.0;
|
|
1536
|
+
#endif
|
|
1537
|
+
return coords;}
|
|
1538
|
+
vec3 computeCubicLocalCoords(vec4 worldPos,vec3 worldNormal,vec3 eyePosition,mat4 reflectionMatrix,vec3 reflectionSize,vec3 reflectionPosition)
|
|
1539
|
+
{vec3 viewDir=normalize(worldPos.xyz-eyePosition);vec3 coords=reflect(viewDir,worldNormal);coords=parallaxCorrectNormal(worldPos.xyz,coords,reflectionSize,reflectionPosition);coords=vec3(reflectionMatrix*vec4(coords,0));
|
|
1540
|
+
#ifdef INVERTCUBICMAP
|
|
1541
|
+
coords.y*=-1.0;
|
|
1542
|
+
#endif
|
|
1543
|
+
return coords;}
|
|
1544
|
+
vec3 computeProjectionCoords(vec4 worldPos,mat4 view,mat4 reflectionMatrix)
|
|
1545
|
+
{return vec3(reflectionMatrix*(view*worldPos));}
|
|
1546
|
+
vec3 computeSkyBoxCoords(vec3 positionW,mat4 reflectionMatrix)
|
|
1547
|
+
{return vec3(reflectionMatrix*vec4(positionW,1.));}
|
|
1548
|
+
#ifdef REFLECTION
|
|
1549
|
+
vec3 computeReflectionCoords(vec4 worldPos,vec3 worldNormal)
|
|
1550
|
+
{
|
|
1551
|
+
#ifdef REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED
|
|
1552
|
+
vec3 direction=normalize(vDirectionW);return computeMirroredFixedEquirectangularCoords(worldPos,worldNormal,direction);
|
|
1553
|
+
#endif
|
|
1554
|
+
#ifdef REFLECTIONMAP_EQUIRECTANGULAR_FIXED
|
|
1555
|
+
vec3 direction=normalize(vDirectionW);return computeFixedEquirectangularCoords(worldPos,worldNormal,direction);
|
|
1556
|
+
#endif
|
|
1557
|
+
#ifdef REFLECTIONMAP_EQUIRECTANGULAR
|
|
1558
|
+
return computeEquirectangularCoords(worldPos,worldNormal,vEyePosition.xyz,reflectionMatrix);
|
|
1559
|
+
#endif
|
|
1560
|
+
#ifdef REFLECTIONMAP_SPHERICAL
|
|
1561
|
+
return computeSphericalCoords(worldPos,worldNormal,view,reflectionMatrix);
|
|
1562
|
+
#endif
|
|
1563
|
+
#ifdef REFLECTIONMAP_PLANAR
|
|
1564
|
+
return computePlanarCoords(worldPos,worldNormal,vEyePosition.xyz,reflectionMatrix);
|
|
1565
|
+
#endif
|
|
1566
|
+
#ifdef REFLECTIONMAP_CUBIC
|
|
1567
|
+
#ifdef USE_LOCAL_REFLECTIONMAP_CUBIC
|
|
1568
|
+
return computeCubicLocalCoords(worldPos,worldNormal,vEyePosition.xyz,reflectionMatrix,vReflectionSize,vReflectionPosition);
|
|
1569
|
+
#else
|
|
1570
|
+
return computeCubicCoords(worldPos,worldNormal,vEyePosition.xyz,reflectionMatrix);
|
|
1571
|
+
#endif
|
|
1572
|
+
#endif
|
|
1573
|
+
#ifdef REFLECTIONMAP_PROJECTION
|
|
1574
|
+
return computeProjectionCoords(worldPos,view,reflectionMatrix);
|
|
1575
|
+
#endif
|
|
1576
|
+
#ifdef REFLECTIONMAP_SKYBOX
|
|
1577
|
+
return computeSkyBoxCoords(vPositionUVW,reflectionMatrix);
|
|
1578
|
+
#endif
|
|
1579
|
+
#ifdef REFLECTIONMAP_EXPLICIT
|
|
1580
|
+
return vec3(0,0,0);
|
|
1581
|
+
#endif
|
|
1582
|
+
}
|
|
1583
|
+
#endif
|
|
1584
|
+
`;t.ShaderStore.IncludesShadersStore[a]||(t.ShaderStore.IncludesShadersStore[a]=r),e.s(["reflectionFunction",0,{name:a,shader:r}],12075)},77074,e=>{"use strict";var t=e.i(25044);let i="sceneUboDeclaration",o=`layout(std140,column_major) uniform;uniform Scene {mat4 viewProjection;
|
|
1585
|
+
#ifdef MULTIVIEW
|
|
1586
|
+
mat4 viewProjectionR;
|
|
1587
|
+
#endif
|
|
1588
|
+
mat4 view;mat4 projection;vec4 vEyePosition;mat4 inverseProjection;};
|
|
1589
|
+
`;t.ShaderStore.IncludesShadersStore[i]||(t.ShaderStore.IncludesShadersStore[i]=o),e.s(["sceneUboDeclaration",0,{name:i,shader:o}])}]);
|