@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,4 +1,4 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,41588,757,76850,e=>{"use strict";var r=e.i(25044);let a="bumpFragmentMainFunctions",i=`#ifndef TEXRD_DEFINED
|
|
2
2
|
fn TEXRD(t: texture_2d<f32>,ts: sampler,uv: vec2f)->vec4f {return textureSample(t,ts,uv);}
|
|
3
3
|
#define TEXRD_DEFINED
|
|
4
4
|
#endif
|
|
@@ -42,7 +42,7 @@ fn perturbNormal(cotangentFrame: mat3x3f,textureSample: vec3f,scale: f32)->vec3f
|
|
|
42
42
|
fn cotangent_frame(normal: vec3f,p: vec3f,uv: vec2f,tangentSpaceParams: vec2f)->mat3x3f
|
|
43
43
|
{var dp1: vec3f=dpdx(p);var dp2: vec3f=dpdy(p);var duv1: vec2f=dpdx(uv);var duv2: vec2f=dpdy(uv);var dp2perp: vec3f=cross(dp2,normal);var dp1perp: vec3f=cross(normal,dp1);var tangent: vec3f=dp2perp*duv1.x+dp1perp*duv2.x;var bitangent: vec3f=dp2perp*duv1.y+dp1perp*duv2.y;tangent*=tangentSpaceParams.x;bitangent*=tangentSpaceParams.y;var det: f32=max(dot(tangent,tangent),dot(bitangent,bitangent));var invmax: f32=select(inverseSqrt(det),0.0,det==0.0);return mat3x3f(tangent*invmax,bitangent*invmax,normal);}
|
|
44
44
|
#endif
|
|
45
|
-
`;r.ShaderStore.IncludesShadersStoreWGSL[a]||(r.ShaderStore.IncludesShadersStoreWGSL[a]=i),e.s(["bumpFragmentMainFunctionsWGSL",0,{name:a,shader:i}],
|
|
45
|
+
`;r.ShaderStore.IncludesShadersStoreWGSL[a]||(r.ShaderStore.IncludesShadersStoreWGSL[a]=i),e.s(["bumpFragmentMainFunctionsWGSL",0,{name:a,shader:i}],41588),e.i(71184);let f="bumpFragmentFunctions",n=`#if defined(BUMP)
|
|
46
46
|
#include<samplerFragmentDeclaration>(_DEFINENAME_,BUMP,_VARYINGNAME_,Bump,_SAMPLERNAME_,bump)
|
|
47
47
|
#endif
|
|
48
48
|
#if defined(DETAIL)
|
|
@@ -72,7 +72,7 @@ return -texCoordOffset;
|
|
|
72
72
|
#endif
|
|
73
73
|
}
|
|
74
74
|
#endif
|
|
75
|
-
`;r.ShaderStore.IncludesShadersStoreWGSL[f]||(r.ShaderStore.IncludesShadersStoreWGSL[f]=n),e.s(["bumpFragmentFunctionsWGSL",0,{name:f,shader:n}],
|
|
75
|
+
`;r.ShaderStore.IncludesShadersStoreWGSL[f]||(r.ShaderStore.IncludesShadersStoreWGSL[f]=n),e.s(["bumpFragmentFunctionsWGSL",0,{name:f,shader:n}],757);let t="bumpFragment",o=`var uvOffset: vec2f= vec2f(0.0,0.0);
|
|
76
76
|
#if defined(BUMP) || defined(PARALLAX) || defined(DETAIL)
|
|
77
77
|
#ifdef NORMALXYSCALE
|
|
78
78
|
var normalScale: f32=1.0;
|
|
@@ -124,17 +124,52 @@ normalW=perturbNormalBase(TBN,blendedNormal,uniforms.vBumpInfos.y);
|
|
|
124
124
|
#elif defined(DETAIL)
|
|
125
125
|
detailNormal=vec3f(detailNormal.xy*uniforms.vDetailInfos.z,detailNormal.z);normalW=perturbNormalBase(TBN,detailNormal,uniforms.vDetailInfos.z);
|
|
126
126
|
#endif
|
|
127
|
-
`;r.ShaderStore.IncludesShadersStoreWGSL[t]||(r.ShaderStore.IncludesShadersStoreWGSL[t]=o),e.s(["bumpFragmentWGSL",0,{name:t,shader:o}],
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
#
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
#
|
|
136
|
-
|
|
137
|
-
|
|
127
|
+
`;r.ShaderStore.IncludesShadersStoreWGSL[t]||(r.ShaderStore.IncludesShadersStoreWGSL[t]=o),e.s(["bumpFragmentWGSL",0,{name:t,shader:o}],76850)},96045,63122,e=>{"use strict";var r=e.i(25044);let a="clipPlaneFragmentDeclaration",i=`#ifdef CLIPPLANE
|
|
128
|
+
varying fClipDistance: f32;
|
|
129
|
+
#endif
|
|
130
|
+
#ifdef CLIPPLANE2
|
|
131
|
+
varying fClipDistance2: f32;
|
|
132
|
+
#endif
|
|
133
|
+
#ifdef CLIPPLANE3
|
|
134
|
+
varying fClipDistance3: f32;
|
|
135
|
+
#endif
|
|
136
|
+
#ifdef CLIPPLANE4
|
|
137
|
+
varying fClipDistance4: f32;
|
|
138
|
+
#endif
|
|
139
|
+
#ifdef CLIPPLANE5
|
|
140
|
+
varying fClipDistance5: f32;
|
|
141
|
+
#endif
|
|
142
|
+
#ifdef CLIPPLANE6
|
|
143
|
+
varying fClipDistance6: f32;
|
|
144
|
+
#endif
|
|
145
|
+
`;r.ShaderStore.IncludesShadersStoreWGSL[a]||(r.ShaderStore.IncludesShadersStoreWGSL[a]=i),e.s(["clipPlaneFragmentDeclarationWGSL",0,{name:a,shader:i}],96045);let f="clipPlaneFragment",n=`#if defined(CLIPPLANE) || defined(CLIPPLANE2) || defined(CLIPPLANE3) || defined(CLIPPLANE4) || defined(CLIPPLANE5) || defined(CLIPPLANE6)
|
|
146
|
+
if (false) {}
|
|
147
|
+
#endif
|
|
148
|
+
#ifdef CLIPPLANE
|
|
149
|
+
else if (fragmentInputs.fClipDistance>0.0)
|
|
150
|
+
{discard;}
|
|
151
|
+
#endif
|
|
152
|
+
#ifdef CLIPPLANE2
|
|
153
|
+
else if (fragmentInputs.fClipDistance2>0.0)
|
|
154
|
+
{discard;}
|
|
155
|
+
#endif
|
|
156
|
+
#ifdef CLIPPLANE3
|
|
157
|
+
else if (fragmentInputs.fClipDistance3>0.0)
|
|
158
|
+
{discard;}
|
|
159
|
+
#endif
|
|
160
|
+
#ifdef CLIPPLANE4
|
|
161
|
+
else if (fragmentInputs.fClipDistance4>0.0)
|
|
162
|
+
{discard;}
|
|
163
|
+
#endif
|
|
164
|
+
#ifdef CLIPPLANE5
|
|
165
|
+
else if (fragmentInputs.fClipDistance5>0.0)
|
|
166
|
+
{discard;}
|
|
167
|
+
#endif
|
|
168
|
+
#ifdef CLIPPLANE6
|
|
169
|
+
else if (fragmentInputs.fClipDistance6>0.0)
|
|
170
|
+
{discard;}
|
|
171
|
+
#endif
|
|
172
|
+
`;r.ShaderStore.IncludesShadersStoreWGSL[f]||(r.ShaderStore.IncludesShadersStoreWGSL[f]=n),e.s(["clipPlaneFragmentWGSL",0,{name:f,shader:n}],63122)},65503,e=>{"use strict";var r=e.i(25044);let a="helperFunctions",i=`const PI: f32=3.1415926535897932384626433832795;const TWO_PI: f32=6.283185307179586;const HALF_PI: f32=1.5707963267948966;const RECIPROCAL_PI: f32=0.3183098861837907;const RECIPROCAL_PI2: f32=0.15915494309189535;const RECIPROCAL_PI4: f32=0.07957747154594767;const HALF_MIN: f32=5.96046448e-08;
|
|
138
173
|
const LinearEncodePowerApprox: f32=2.2;const GammaEncodePowerApprox: f32=1.0/LinearEncodePowerApprox;const LuminanceEncodeApprox: vec3f=vec3f(0.2126,0.7152,0.0722);const Epsilon:f32=0.0000001;fn square(x: f32)->f32 {return x*x;}
|
|
139
174
|
fn saturate(x: f32)->f32 {return clamp(x,0.0,1.0);}
|
|
140
175
|
fn saturateVec3(x: vec3f)->vec3f {return clamp(x,vec3f(),vec3f(1.0));}
|
|
@@ -220,689 +255,654 @@ fn max3(v: vec3f)->f32 {return max(v.x,max(v.y,v.z));}
|
|
|
220
255
|
fn uint2float(i: u32)->f32 {return bitcast<f32>(0x3F800000u | (i>>9u))-1.0;}
|
|
221
256
|
fn plasticSequence(rstate: u32)->vec2f {return vec2f(uint2float(rstate*3242174889u),
|
|
222
257
|
uint2float(rstate*2447445414u));}
|
|
223
|
-
`;r.ShaderStore.IncludesShadersStoreWGSL[a]||(r.ShaderStore.IncludesShadersStoreWGSL[a]=i),e.s(["helperFunctionsWGSL",0,{name:a,shader:i}])},
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
#define
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
#
|
|
234
|
-
|
|
235
|
-
#
|
|
236
|
-
|
|
237
|
-
const F82_COS_THETA_MAX: f32 =0.142857143;const F82_ONE_MINUS_CTM_POW5: f32 =0.462664366;const F82_ONE_MINUS_CTM_POW6: f32 =0.396569457;const F82_B_DENOMINATOR_RECIP: f32 =17.6512785;const BRDF_Z_SCALE: f32 =16.0;fn getF82Specular(NdotV: f32,F0: vec3f,edgeTint: vec3f,roughness: f32)->vec3f {let white_minus_F0: vec3f=vec3f(1.0f)-F0;let b_numerator: vec3f=(F0+white_minus_F0*F82_ONE_MINUS_CTM_POW5)*(vec3f(1.0)-edgeTint);let b: vec3f=b_numerator*F82_B_DENOMINATOR_RECIP;let cos_theta: f32=max(roughness,NdotV);let one_minus_cos_theta: f32=1.0-cos_theta;let offset_from_F0: vec3f=(white_minus_F0-b*cos_theta*one_minus_cos_theta)*pow(one_minus_cos_theta,5.0f);return clamp(F0+offset_from_F0,vec3f(0.0f),vec3f(1.0f));}
|
|
238
|
-
fn getF82B(F0: vec3f,edgeTint: vec3f)->vec3f {return (F0+(vec3f(1.0)-F0)*F82_ONE_MINUS_CTM_POW5)*(vec3f(1.0)-edgeTint)*F82_B_DENOMINATOR_RECIP;}
|
|
239
|
-
fn getF82DirectionalAlbedo(F0: vec3f,F90: vec3f,b: vec3f,environmentBrdf: vec3f)->vec3f {return (F90-F0)*environmentBrdf.x+F0*environmentBrdf.y-b*environmentBrdf.z;}
|
|
240
|
-
fn getF82AverageFresnel(F0: vec3f,b: vec3f)->vec3f {return F0+(vec3f(1.0)-F0)/21.0-b/126.0;}
|
|
241
|
-
#endif
|
|
242
|
-
#ifdef FUZZENVIRONMENTBRDF
|
|
243
|
-
fn getFuzzBRDFLookup(NdotV: f32,perceptualRoughness: f32)->vec3f {let UV: vec2f=vec2f(perceptualRoughness,NdotV);var brdfLookup: vec4f=textureSample(environmentFuzzBrdfSampler,environmentFuzzBrdfSamplerSampler,UV);const RiRange: vec2f=vec2f(0.0f,0.75f);const ARange: vec2f=vec2f(0.005f,0.88f);const BRange: vec2f=vec2f(-0.18f,0.002f);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;}
|
|
244
|
-
#endif
|
|
245
|
-
#ifdef ENVIRONMENTBRDF
|
|
246
|
-
fn getBRDFLookup(NdotV: f32,perceptualRoughness: f32)->vec3f {var UV: vec2f= vec2f(NdotV,perceptualRoughness);var brdfLookup: vec4f= textureSample(environmentBrdfSampler,environmentBrdfSamplerSampler,UV);
|
|
247
|
-
#ifdef ENVIRONMENTBRDF_RGBD
|
|
248
|
-
brdfLookup=vec4f(fromRGBD(brdfLookup.rgba),brdfLookup.a);
|
|
258
|
+
`;r.ShaderStore.IncludesShadersStoreWGSL[a]||(r.ShaderStore.IncludesShadersStoreWGSL[a]=i),e.s(["helperFunctionsWGSL",0,{name:a,shader:i}])},47622,41690,32923,e=>{"use strict";var r=e.i(25044);let a="openpbrDielectricReflectance",i=`struct ReflectanceParams
|
|
259
|
+
{F0: f32,
|
|
260
|
+
F90: f32,
|
|
261
|
+
coloredF0: vec3f,
|
|
262
|
+
coloredF90: vec3f,};
|
|
263
|
+
#define pbr_inline
|
|
264
|
+
fn dielectricReflectance(
|
|
265
|
+
insideIOR: f32,outsideIOR: f32,specularColor: vec3f,specularWeight: f32
|
|
266
|
+
)->ReflectanceParams
|
|
267
|
+
{var outParams: ReflectanceParams;let dielectricF0=pow((insideIOR-outsideIOR)/(insideIOR+outsideIOR),2.0);let f90Scale=clamp(2.0f*abs(insideIOR-outsideIOR),0.0f,1.0f);
|
|
268
|
+
#if (DIELECTRIC_SPECULAR_MODEL==DIELECTRIC_SPECULAR_MODEL_OPENPBR)
|
|
269
|
+
let dielectricColorF90: vec3f=specularColor.rgb*vec3f(f90Scale);
|
|
270
|
+
#else
|
|
271
|
+
let dielectricColorF90: vec3f=vec3f(f90Scale);
|
|
249
272
|
#endif
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
#ifdef BRDF_V_HEIGHT_CORRELATED
|
|
253
|
-
var reflectance: vec3f=(specularEnvironmentR90-specularEnvironmentR0)*environmentBrdf.x+specularEnvironmentR0*environmentBrdf.y;
|
|
273
|
+
#if DIELECTRIC_SPECULAR_MODEL==DIELECTRIC_SPECULAR_MODEL_GLTF
|
|
274
|
+
let maxF0=max(specularColor.r,max(specularColor.g,specularColor.b));outParams.F0=dielectricF0*maxF0*specularWeight;
|
|
254
275
|
#else
|
|
255
|
-
|
|
276
|
+
outParams.F0=dielectricF0*specularWeight;
|
|
256
277
|
#endif
|
|
257
|
-
return
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
278
|
+
outParams.F90=f90Scale*specularWeight;outParams.coloredF0=vec3f(dielectricF0*specularWeight)*specularColor.rgb;outParams.coloredF90=dielectricColorF90*vec3f(specularWeight);return outParams;}
|
|
279
|
+
`;r.ShaderStore.IncludesShadersStoreWGSL[a]||(r.ShaderStore.IncludesShadersStoreWGSL[a]=i),e.s(["openpbrDielectricReflectanceWGSL",0,{name:a,shader:i}],47622);let f="openpbrGeometryInfo",n=`struct geometryInfoOutParams
|
|
280
|
+
{NdotV: f32,
|
|
281
|
+
NdotVUnclamped: f32,
|
|
282
|
+
environmentBrdf: vec3f,
|
|
283
|
+
horizonOcclusion: f32};struct geometryInfoAnisoOutParams
|
|
284
|
+
{NdotV: f32,
|
|
285
|
+
NdotVUnclamped: f32,
|
|
286
|
+
environmentBrdf: vec3f,
|
|
287
|
+
horizonOcclusion: f32,
|
|
288
|
+
anisotropy: f32,
|
|
289
|
+
anisotropicTangent: vec3f,
|
|
290
|
+
anisotropicBitangent: vec3f,
|
|
291
|
+
TBN: mat3x3<f32>};fn geometryInfo(
|
|
292
|
+
normalW: vec3f,viewDirectionW: vec3f,roughness: f32,geometricNormalW: vec3f
|
|
293
|
+
)->geometryInfoOutParams
|
|
294
|
+
{var outParams: geometryInfoOutParams;outParams.NdotVUnclamped=dot(normalW,viewDirectionW);outParams.NdotV=absEps(outParams.NdotVUnclamped);
|
|
295
|
+
#if defined(ENVIRONMENTBRDF)
|
|
296
|
+
outParams.environmentBrdf=getBRDFLookup(outParams.NdotV,roughness);
|
|
261
297
|
#else
|
|
262
|
-
|
|
298
|
+
outParams.environmentBrdf=vec3f(0.0);
|
|
263
299
|
#endif
|
|
264
|
-
|
|
300
|
+
outParams.horizonOcclusion=1.0f;
|
|
301
|
+
#if defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX)
|
|
302
|
+
#ifdef HORIZONOCCLUSION
|
|
303
|
+
#if defined(GEOMETRY_NORMAL) || defined(GEOMETRY_COAT_NORMAL)
|
|
304
|
+
#ifdef REFLECTIONMAP_3D
|
|
305
|
+
outParams.horizonOcclusion=environmentHorizonOcclusion(-viewDirectionW,normalW,geometricNormalW);
|
|
265
306
|
#endif
|
|
266
|
-
/* NOT USED
|
|
267
|
-
#if defined(SHEEN) && defined(SHEEN_SOFTER)
|
|
268
|
-
fn getBRDFLookupCharlieSheen(NdotV: f32,perceptualRoughness: f32)->f32
|
|
269
|
-
{var c: f32=1.0-NdotV;var c3: f32=c*c*c;return 0.65584461*c3+1.0/(4.16526551+exp(-7.97291361*perceptualRoughness+6.33516894));}
|
|
270
307
|
#endif
|
|
271
|
-
*/
|
|
272
|
-
#if !defined(ENVIRONMENTBRDF) || defined(REFLECTIONMAP_SKYBOX) || defined(ALPHAFRESNEL)
|
|
273
|
-
fn getReflectanceFromAnalyticalBRDFLookup_Jones(VdotN: f32,reflectance0: vec3f,reflectance90: vec3f,smoothness: f32)->vec3f
|
|
274
|
-
{var weight: f32=mix(FRESNEL_MAXIMUM_ON_ROUGH,1.0,smoothness);return reflectance0+weight*(reflectance90-reflectance0)*pow5(saturate(1.0-VdotN));}
|
|
275
308
|
#endif
|
|
276
|
-
#if defined(SHEEN) && defined(ENVIRONMENTBRDF)
|
|
277
|
-
/**
|
|
278
|
-
* The sheen BRDF not containing F can be easily stored in the blue channel of the BRDF texture.
|
|
279
|
-
* The blue channel contains DCharlie*VAshikhmin*NdotL as a lokkup table
|
|
280
|
-
*/
|
|
281
|
-
fn getSheenReflectanceFromBRDFLookup(reflectance0: vec3f,environmentBrdf: vec3f)->vec3f {var sheenEnvironmentReflectance: vec3f=reflectance0*environmentBrdf.b;return sheenEnvironmentReflectance;}
|
|
282
309
|
#endif
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
#
|
|
293
|
-
|
|
310
|
+
return outParams;}
|
|
311
|
+
fn geometryInfoAniso(
|
|
312
|
+
normalW: vec3f,viewDirectionW: vec3f,roughness: f32,geometricNormalW: vec3f
|
|
313
|
+
,vAnisotropy: vec3f,TBN: mat3x3<f32>
|
|
314
|
+
)->geometryInfoAnisoOutParams
|
|
315
|
+
{let geoInfo: geometryInfoOutParams=geometryInfo(normalW,viewDirectionW,roughness,geometricNormalW);var outParams: geometryInfoAnisoOutParams;outParams.NdotV=geoInfo.NdotV;outParams.NdotVUnclamped=geoInfo.NdotVUnclamped;outParams.environmentBrdf=geoInfo.environmentBrdf;outParams.horizonOcclusion=geoInfo.horizonOcclusion;outParams.anisotropy=vAnisotropy.b;let anisotropyDirection: vec3f=vec3f(vAnisotropy.xy,0.);let anisoTBN: mat3x3<f32>=mat3x3<f32>(normalize(TBN[0]),normalize(TBN[1]),normalize(TBN[2]));outParams.anisotropicTangent=normalize(anisoTBN*anisotropyDirection);outParams.anisotropicBitangent=normalize(cross(anisoTBN[2],outParams.anisotropicTangent));outParams.TBN=TBN;return outParams;}
|
|
316
|
+
`;r.ShaderStore.IncludesShadersStoreWGSL[f]||(r.ShaderStore.IncludesShadersStoreWGSL[f]=n),e.s(["openpbrGeometryInfoWGSL",0,{name:f,shader:n}],41690);let t="openpbrIblFunctions",o=`#ifdef REFLECTION
|
|
317
|
+
fn sampleIrradiance(
|
|
318
|
+
surfaceNormal: vec3f
|
|
319
|
+
#if defined(NORMAL) && defined(USESPHERICALINVERTEX)
|
|
320
|
+
,vEnvironmentIrradianceSH: vec3f
|
|
294
321
|
#endif
|
|
295
|
-
#
|
|
296
|
-
|
|
322
|
+
#if (defined(USESPHERICALFROMREFLECTIONMAP) && (!defined(NORMAL) || !defined(USESPHERICALINVERTEX))) || (defined(USEIRRADIANCEMAP) && defined(REFLECTIONMAP_3D))
|
|
323
|
+
,iblMatrix: mat4x4f
|
|
297
324
|
#endif
|
|
298
|
-
|
|
325
|
+
#ifdef USEIRRADIANCEMAP
|
|
326
|
+
#ifdef REFLECTIONMAP_3D
|
|
327
|
+
,irradianceSampler: texture_cube<f32>
|
|
328
|
+
,irradianceSamplerSampler: sampler
|
|
329
|
+
#else
|
|
330
|
+
,irradianceSampler: texture_2d<f32>
|
|
331
|
+
,irradianceSamplerSampler: sampler
|
|
299
332
|
#endif
|
|
300
|
-
#ifdef
|
|
301
|
-
|
|
302
|
-
3.2404542,-0.9692660, 0.0556434,
|
|
303
|
-
-1.5371385, 1.8760108,-0.2040259,
|
|
304
|
-
-0.4985314, 0.0415560, 1.0572252
|
|
305
|
-
);fn getIORTfromAirToSurfaceR0(f0: vec3f)->vec3f {var sqrtF0: vec3f=sqrt(f0);return (1.+sqrtF0)/(1.-sqrtF0);}
|
|
306
|
-
fn getR0fromIORsVec3(iorT: vec3f,iorI: f32)->vec3f {return squareVec3((iorT- vec3f(iorI))/(iorT+ vec3f(iorI)));}
|
|
307
|
-
fn getR0fromIORs(iorT: f32,iorI: f32)->f32 {return square((iorT-iorI)/(iorT+iorI));}
|
|
308
|
-
fn evalSensitivity(opd: f32,shift: vec3f)->vec3f {var phase: f32=2.0*PI*opd*1.0e-9;const val: vec3f= vec3f(5.4856e-13,4.4201e-13,5.2481e-13);const pos: vec3f= vec3f(1.6810e+06,1.7953e+06,2.2084e+06);const vr: vec3f= vec3f(4.3278e+09,9.3046e+09,6.6121e+09);var xyz: vec3f=val*sqrt(2.0*PI*vr)*cos(pos*phase+shift)*exp(-square(phase)*vr);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;var srgb: vec3f=XYZ_TO_REC709*xyz;return srgb;}
|
|
309
|
-
fn evalIridescence(outsideIOR: f32,eta2: f32,cosTheta1: f32,thinFilmThickness: f32,baseF0: vec3f)->vec3f {var I: vec3f= vec3f(1.0);var iridescenceIOR: f32=mix(outsideIOR,eta2,smoothstep(0.0,0.03,thinFilmThickness));var sinTheta2Sq: f32=square(outsideIOR/iridescenceIOR)*(1.0-square(cosTheta1));var cosTheta2Sq: f32=1.0-sinTheta2Sq;if (cosTheta2Sq<0.0) {return I;}
|
|
310
|
-
var cosTheta2: f32=sqrt(cosTheta2Sq);var R0: f32=getR0fromIORs(iridescenceIOR,outsideIOR);var R12: f32=fresnelSchlickGGX(cosTheta1,R0,1.);var R21: f32=R12;var T121: f32=1.0-R12;var phi12: f32=0.0;if (iridescenceIOR<outsideIOR) {phi12=PI;}
|
|
311
|
-
var phi21: f32=PI-phi12;var baseIOR: vec3f=getIORTfromAirToSurfaceR0(clamp(baseF0,vec3f(0.0),vec3f(0.9999)));
|
|
312
|
-
var R1: vec3f=getR0fromIORsVec3(baseIOR,iridescenceIOR);let maxR1: f32=max(R1.r,max(R1.g,R1.b));if (maxR1<1e-6) {return max(vec3f(R12),vec3f(0.0));}
|
|
313
|
-
var R23: vec3f=fresnelSchlickGGXVec3(cosTheta2,R1,vec3f(1.));var phi23: vec3f=vec3f(0.0);if (baseIOR[0]<iridescenceIOR) {phi23[0]=PI;}
|
|
314
|
-
if (baseIOR[1]<iridescenceIOR) {phi23[1]=PI;}
|
|
315
|
-
if (baseIOR[2]<iridescenceIOR) {phi23[2]=PI;}
|
|
316
|
-
var opd: f32=2.0*iridescenceIOR*thinFilmThickness*cosTheta2;var phi: vec3f=vec3f(phi21)+phi23;var R123: vec3f=clamp(R12*R23,vec3f(1e-5),vec3f(0.9999));var r123: vec3f=sqrt(R123);var Rs: vec3f=(T121*T121)*R23/(vec3f(1.0)-R123);var C0: vec3f=R12+Rs;I=C0;var Cm: vec3f=Rs-T121;for (var m: i32=1; m<=2; m++)
|
|
317
|
-
{Cm*=r123;var Sm: vec3f=2.0*evalSensitivity(f32(m)*opd,f32(m)*phi);I+=Cm*Sm;}
|
|
318
|
-
return max(I,vec3f(0.0));}
|
|
333
|
+
#ifdef USE_IRRADIANCE_DOMINANT_DIRECTION
|
|
334
|
+
,reflectionDominantDirection: vec3f
|
|
319
335
|
#endif
|
|
320
|
-
fn normalDistributionFunction_TrowbridgeReitzGGX(NdotH: f32,alphaG: f32)->f32
|
|
321
|
-
{var a2: f32=alphaG*alphaG;var d: f32=NdotH*NdotH*(a2-1.0)+1.0;return a2/(PI*d*d);}
|
|
322
|
-
#ifdef SHEEN
|
|
323
|
-
fn normalDistributionFunction_CharlieSheen(NdotH: f32,alphaG: f32)->f32
|
|
324
|
-
{var invR: f32=1./alphaG;var cos2h: f32=NdotH*NdotH;var sin2h: f32=1.-cos2h;return (2.+invR)*pow(sin2h,invR*.5)/(2.*PI);}
|
|
325
336
|
#endif
|
|
326
|
-
#ifdef
|
|
327
|
-
|
|
337
|
+
#ifdef REALTIME_FILTERING
|
|
338
|
+
,reflectionFilteringInfo: vec2f
|
|
339
|
+
#ifdef IBL_CDF_FILTERING
|
|
340
|
+
,icdfSampler: texture_2d<f32>
|
|
341
|
+
,icdfSamplerSampler: sampler
|
|
328
342
|
#endif
|
|
329
|
-
#ifdef BRDF_V_HEIGHT_CORRELATED
|
|
330
|
-
fn smithVisibility_GGXCorrelated(NdotL: f32,NdotV: f32,alphaG: f32)->f32 {
|
|
331
|
-
#ifdef MOBILE
|
|
332
|
-
var GGXV: f32=NdotL*(NdotV*(1.0-alphaG)+alphaG);var GGXL: f32=NdotV*(NdotL*(1.0-alphaG)+alphaG);return 0.5/(GGXV+GGXL);
|
|
333
|
-
#else
|
|
334
|
-
var a2: f32=alphaG*alphaG;var GGXV: f32=NdotL*sqrt(NdotV*(NdotV-a2*NdotV)+a2);var GGXL: f32=NdotV*sqrt(NdotL*(NdotL-a2*NdotL)+a2);return 0.5/(GGXV+GGXL);
|
|
335
343
|
#endif
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
+
,reflectionInfos: vec2f
|
|
345
|
+
,viewDirectionW: vec3f
|
|
346
|
+
,diffuseRoughness: f32
|
|
347
|
+
,surfaceAlbedo: vec3f
|
|
348
|
+
)->vec3f {var environmentIrradiance=vec3f(0.,0.,0.);
|
|
349
|
+
#if (defined(USESPHERICALFROMREFLECTIONMAP) && (!defined(NORMAL) || !defined(USESPHERICALINVERTEX))) || (defined(USEIRRADIANCEMAP) && defined(REFLECTIONMAP_3D))
|
|
350
|
+
var irradianceVector=(iblMatrix*vec4f(surfaceNormal,0.0f)).xyz;var irradianceView=(iblMatrix*vec4f(viewDirectionW,0.0f)).xyz;
|
|
351
|
+
#if !defined(USE_IRRADIANCE_DOMINANT_DIRECTION) && !defined(REALTIME_FILTERING)
|
|
352
|
+
#if BASE_DIFFUSE_MODEL != BRDF_DIFFUSE_MODEL_LAMBERT && BASE_DIFFUSE_MODEL != BRDF_DIFFUSE_MODEL_LEGACY
|
|
353
|
+
{let NdotV=max(dot(surfaceNormal,viewDirectionW),0.0f);irradianceVector=mix(irradianceVector,irradianceView,(0.5f*(1.0f-NdotV))*diffuseRoughness);}
|
|
344
354
|
#endif
|
|
345
|
-
}
|
|
346
|
-
fn smithVisibility_TrowbridgeReitzGGXFast(NdotL: f32,NdotV: f32,alphaG: f32)->f32
|
|
347
|
-
{var visibility: f32=smithVisibilityG1_TrowbridgeReitzGGXFast(NdotL,alphaG)*smithVisibilityG1_TrowbridgeReitzGGXFast(NdotV,alphaG);return visibility;}
|
|
348
355
|
#endif
|
|
349
|
-
#ifdef
|
|
350
|
-
|
|
356
|
+
#ifdef REFLECTIONMAP_OPPOSITEZ
|
|
357
|
+
irradianceVector.z*=-1.0;irradianceView.z*=-1.0;
|
|
351
358
|
#endif
|
|
352
|
-
#ifdef
|
|
353
|
-
|
|
359
|
+
#ifdef INVERTCUBICMAP
|
|
360
|
+
irradianceVector.y*=-1.0;irradianceView.y*=-1.0;
|
|
354
361
|
#endif
|
|
355
|
-
#ifdef SHEEN
|
|
356
|
-
fn visibility_Ashikhmin(NdotL: f32,NdotV: f32)->f32
|
|
357
|
-
{return 1./(4.*(NdotL+NdotV-NdotL*NdotV));}
|
|
358
|
-
/* NOT USED
|
|
359
|
-
#ifdef SHEEN_SOFTER
|
|
360
|
-
fn l(x: f32,alphaG: f32)->f32
|
|
361
|
-
{var oneMinusAlphaSq: f32=(1.0-alphaG)*(1.0-alphaG);var a: f32=mix(21.5473,25.3245,oneMinusAlphaSq);var b: f32=mix(3.82987,3.32435,oneMinusAlphaSq);var c: f32=mix(0.19823,0.16801,oneMinusAlphaSq);var d: f32=mix(-1.97760,-1.27393,oneMinusAlphaSq);var e: f32=mix(-4.32054,-4.85967,oneMinusAlphaSq);return a/(1.0+b*pow(x,c))+d*x+e;}
|
|
362
|
-
fn lambdaSheen(cosTheta: f32,alphaG: f32)->f32
|
|
363
|
-
{return abs(cosTheta)<0.5 ? exp(l(cosTheta,alphaG)) : exp(2.0*l(0.5,alphaG)-l(1.0-cosTheta,alphaG));}
|
|
364
|
-
fn visibility_CharlieSheen(NdotL: f32,NdotV: f32,alphaG: f32)->f32
|
|
365
|
-
{var G: f32=1.0/(1.0+lambdaSheen(NdotV,alphaG)+lambdaSheen(NdotL,alphaG));return G/(4.0*NdotV*NdotL);}
|
|
366
362
|
#endif
|
|
367
|
-
|
|
368
|
-
#
|
|
369
|
-
|
|
370
|
-
{var sigma: f32=roughness;
|
|
371
|
-
var mucomp: f32=1.0f-mu;var mucomp2: f32=mucomp*mucomp;const Gcoeffs: mat2x2f=mat2x2f(0.0571085289f,-0.332181442f,
|
|
372
|
-
0.491881867f,0.0714429953f);var GoverPi: f32=dot(Gcoeffs*vec2f(mucomp,mucomp2),vec2f(1.0f,mucomp2));return (1.0f+sigma*GoverPi)/(1.0f+constant1_FON*sigma);}
|
|
373
|
-
fn diffuseBRDF_EON(albedo: vec3f,roughness: f32,NdotL: f32,NdotV: f32,LdotV: f32)->vec3f
|
|
374
|
-
{var rho: vec3f=albedo;var sigma: f32=roughness;
|
|
375
|
-
var mu_i: f32=NdotL;
|
|
376
|
-
var mu_o: f32=NdotV;
|
|
377
|
-
var s: f32=LdotV-mu_i*mu_o;
|
|
378
|
-
var sovertF: f32=select(s,s/max(mu_i,mu_o),s>0.0f);
|
|
379
|
-
var AF: f32=1.0f/(1.0f+constant1_FON*sigma);
|
|
380
|
-
var f_ss: vec3f=(rho*RECIPROCAL_PI)*AF*(1.0f+sigma*sovertF);
|
|
381
|
-
var EFo: f32=E_FON_approx(mu_o,sigma);
|
|
382
|
-
var EFi: f32=E_FON_approx(mu_i,sigma);
|
|
383
|
-
var avgEF: f32=AF*(1.0f+constant2_FON*sigma);
|
|
384
|
-
var rho_ms: vec3f=(rho*rho)*avgEF/(vec3f(1.0f)-rho*(1.0f-avgEF));const eps: f32=1.0e-7f;var f_ms: vec3f=(rho_ms*RECIPROCAL_PI)*max(eps,1.0f-EFo)
|
|
385
|
-
* max(eps,1.0f-EFi)
|
|
386
|
-
/ max(eps,1.0f-avgEF);return (f_ss+f_ms);}
|
|
387
|
-
fn diffuseBRDF_Burley(NdotL: f32,NdotV: f32,VdotH: f32,roughness: f32)->f32 {var diffuseFresnelNV: f32=pow5(saturateEps(1.0-NdotL));var diffuseFresnelNL: f32=pow5(saturateEps(1.0-NdotV));var diffuseFresnel90: f32=0.5+2.0*VdotH*VdotH*roughness;var fresnel: f32 =
|
|
388
|
-
(1.0+(diffuseFresnel90-1.0)*diffuseFresnelNL) *
|
|
389
|
-
(1.0+(diffuseFresnel90-1.0)*diffuseFresnelNV);return fresnel/PI;}
|
|
390
|
-
#ifdef SS_TRANSLUCENCY
|
|
391
|
-
fn transmittanceBRDF_Burley(tintColor: vec3f,diffusionDistance: vec3f,thickness: f32)->vec3f {var S: vec3f=1./maxEpsVec3(diffusionDistance);var temp: vec3f=exp((-0.333333333*thickness)*S);return tintColor.rgb*0.25*(temp*temp*temp+3.0*temp);}
|
|
392
|
-
fn computeWrappedDiffuseNdotL(NdotL: f32,w: f32)->f32 {var t: f32=1.0+w;var invt2: f32=1.0/(t*t);return saturate((NdotL+w)*invt2);}
|
|
393
|
-
#endif
|
|
394
|
-
#endif
|
|
395
|
-
`;r.ShaderStore.IncludesShadersStoreWGSL[a]||(r.ShaderStore.IncludesShadersStoreWGSL[a]=i),e.s(["pbrBRDFFunctionsWGSL",0,{name:a,shader:i}])},29741,69809,e=>{"use strict";var r=e.i(47150);let a="clipPlaneFragmentDeclaration",i=`#ifdef CLIPPLANE
|
|
396
|
-
varying fClipDistance: f32;
|
|
397
|
-
#endif
|
|
398
|
-
#ifdef CLIPPLANE2
|
|
399
|
-
varying fClipDistance2: f32;
|
|
400
|
-
#endif
|
|
401
|
-
#ifdef CLIPPLANE3
|
|
402
|
-
varying fClipDistance3: f32;
|
|
403
|
-
#endif
|
|
404
|
-
#ifdef CLIPPLANE4
|
|
405
|
-
varying fClipDistance4: f32;
|
|
406
|
-
#endif
|
|
407
|
-
#ifdef CLIPPLANE5
|
|
408
|
-
varying fClipDistance5: f32;
|
|
409
|
-
#endif
|
|
410
|
-
#ifdef CLIPPLANE6
|
|
411
|
-
varying fClipDistance6: f32;
|
|
412
|
-
#endif
|
|
413
|
-
`;r.ShaderStore.IncludesShadersStoreWGSL[a]||(r.ShaderStore.IncludesShadersStoreWGSL[a]=i),e.s(["clipPlaneFragmentDeclarationWGSL",0,{name:a,shader:i}],29741);let f="clipPlaneFragment",n=`#if defined(CLIPPLANE) || defined(CLIPPLANE2) || defined(CLIPPLANE3) || defined(CLIPPLANE4) || defined(CLIPPLANE5) || defined(CLIPPLANE6)
|
|
414
|
-
if (false) {}
|
|
415
|
-
#endif
|
|
416
|
-
#ifdef CLIPPLANE
|
|
417
|
-
else if (fragmentInputs.fClipDistance>0.0)
|
|
418
|
-
{discard;}
|
|
419
|
-
#endif
|
|
420
|
-
#ifdef CLIPPLANE2
|
|
421
|
-
else if (fragmentInputs.fClipDistance2>0.0)
|
|
422
|
-
{discard;}
|
|
423
|
-
#endif
|
|
424
|
-
#ifdef CLIPPLANE3
|
|
425
|
-
else if (fragmentInputs.fClipDistance3>0.0)
|
|
426
|
-
{discard;}
|
|
427
|
-
#endif
|
|
428
|
-
#ifdef CLIPPLANE4
|
|
429
|
-
else if (fragmentInputs.fClipDistance4>0.0)
|
|
430
|
-
{discard;}
|
|
431
|
-
#endif
|
|
432
|
-
#ifdef CLIPPLANE5
|
|
433
|
-
else if (fragmentInputs.fClipDistance5>0.0)
|
|
434
|
-
{discard;}
|
|
435
|
-
#endif
|
|
436
|
-
#ifdef CLIPPLANE6
|
|
437
|
-
else if (fragmentInputs.fClipDistance6>0.0)
|
|
438
|
-
{discard;}
|
|
439
|
-
#endif
|
|
440
|
-
`;r.ShaderStore.IncludesShadersStoreWGSL[f]||(r.ShaderStore.IncludesShadersStoreWGSL[f]=n),e.s(["clipPlaneFragmentWGSL",0,{name:f,shader:n}],69809)},9343,49852,e=>{"use strict";var r=e.i(47150);let a="samplerFragmentDeclaration",i=`#ifdef _DEFINENAME_
|
|
441
|
-
#if _DEFINENAME_DIRECTUV==1
|
|
442
|
-
#define v_VARYINGNAME_UV vMainUV1
|
|
443
|
-
#elif _DEFINENAME_DIRECTUV==2
|
|
444
|
-
#define v_VARYINGNAME_UV vMainUV2
|
|
445
|
-
#elif _DEFINENAME_DIRECTUV==3
|
|
446
|
-
#define v_VARYINGNAME_UV vMainUV3
|
|
447
|
-
#elif _DEFINENAME_DIRECTUV==4
|
|
448
|
-
#define v_VARYINGNAME_UV vMainUV4
|
|
449
|
-
#elif _DEFINENAME_DIRECTUV==5
|
|
450
|
-
#define v_VARYINGNAME_UV vMainUV5
|
|
451
|
-
#elif _DEFINENAME_DIRECTUV==6
|
|
452
|
-
#define v_VARYINGNAME_UV vMainUV6
|
|
363
|
+
#ifdef USESPHERICALFROMREFLECTIONMAP
|
|
364
|
+
#if defined(NORMAL) && defined(USESPHERICALINVERTEX)
|
|
365
|
+
environmentIrradiance=vEnvironmentIrradianceSH;
|
|
453
366
|
#else
|
|
454
|
-
|
|
367
|
+
#if defined(REALTIME_FILTERING)
|
|
368
|
+
environmentIrradiance=irradiance(reflectionSampler,reflectionSamplerSampler,irradianceVector,reflectionFilteringInfo,diffuseRoughness,surfaceAlbedo,irradianceView
|
|
369
|
+
#ifdef IBL_CDF_FILTERING
|
|
370
|
+
,icdfSampler
|
|
371
|
+
,icdfSamplerSampler
|
|
455
372
|
#endif
|
|
456
|
-
|
|
373
|
+
);
|
|
374
|
+
#else
|
|
375
|
+
environmentIrradiance=computeEnvironmentIrradiance(irradianceVector);
|
|
457
376
|
#endif
|
|
458
|
-
`;r.ShaderStore.IncludesShadersStoreWGSL[a]||(r.ShaderStore.IncludesShadersStoreWGSL[a]=i),e.s(["samplerFragmentDeclarationWGSL",0,{name:a,shader:i}],9343);let f="reflectionFunction",n=`fn computeFixedEquirectangularCoords(worldPos: vec4f,worldNormal: vec3f,direction: vec3f)->vec3f
|
|
459
|
-
{var lon: f32=atan2(direction.z,direction.x);var lat: f32=acos(direction.y);var sphereCoords: vec2f= vec2f(lon,lat)*RECIPROCAL_PI2*2.0;var s: f32=sphereCoords.x*0.5+0.5;var t: f32=sphereCoords.y;return vec3f(s,t,0); }
|
|
460
|
-
fn computeMirroredFixedEquirectangularCoords(worldPos: vec4f,worldNormal: vec3f,direction: vec3f)->vec3f
|
|
461
|
-
{var lon: f32=atan2(direction.z,direction.x);var lat: f32=acos(direction.y);var sphereCoords: vec2f= vec2f(lon,lat)*RECIPROCAL_PI2*2.0;var s: f32=sphereCoords.x*0.5+0.5;var t: f32=sphereCoords.y;return vec3f(1.0-s,t,0); }
|
|
462
|
-
fn computeEquirectangularCoords(worldPos: vec4f,worldNormal: vec3f,eyePosition: vec3f,reflectionMatrix: mat4x4f)->vec3f
|
|
463
|
-
{var cameraToVertex: vec3f=normalize(worldPos.xyz-eyePosition);var r: vec3f=normalize(reflect(cameraToVertex,worldNormal));r= (reflectionMatrix* vec4f(r,0)).xyz;var lon: f32=atan2(r.z,r.x);var lat: f32=acos(r.y);var sphereCoords: vec2f= vec2f(lon,lat)*RECIPROCAL_PI2*2.0;var s: f32=sphereCoords.x*0.5+0.5;var t: f32=sphereCoords.y;return vec3f(s,t,0);}
|
|
464
|
-
fn computeSphericalCoords(worldPos: vec4f,worldNormal: vec3f,view: mat4x4f,reflectionMatrix: mat4x4f)->vec3f
|
|
465
|
-
{var viewDir: vec3f=normalize((view*worldPos).xyz);var viewNormal: vec3f=normalize((view* vec4f(worldNormal,0.0)).xyz);var r: vec3f=reflect(viewDir,viewNormal);r= (reflectionMatrix* vec4f(r,0)).xyz;r.z=r.z-1.0;var m: f32=2.0*length(r);return vec3f(r.x/m+0.5,1.0-r.y/m-0.5,0);}
|
|
466
|
-
fn computePlanarCoords(worldPos: vec4f,worldNormal: vec3f,eyePosition: vec3f,reflectionMatrix: mat4x4f)->vec3f
|
|
467
|
-
{var viewDir: vec3f=worldPos.xyz-eyePosition;var coords: vec3f=normalize(reflect(viewDir,worldNormal));return (reflectionMatrix* vec4f(coords,1)).xyz;}
|
|
468
|
-
fn computeCubicCoords(worldPos: vec4f,worldNormal: vec3f,eyePosition: vec3f,reflectionMatrix: mat4x4f)->vec3f
|
|
469
|
-
{var viewDir: vec3f=normalize(worldPos.xyz-eyePosition);var coords: vec3f=reflect(viewDir,worldNormal);coords= (reflectionMatrix* vec4f(coords,0)).xyz;
|
|
470
|
-
#ifdef INVERTCUBICMAP
|
|
471
|
-
coords.y*=-1.0;
|
|
472
377
|
#endif
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
#
|
|
477
|
-
|
|
378
|
+
#elif defined(USEIRRADIANCEMAP)
|
|
379
|
+
#ifdef REFLECTIONMAP_3D
|
|
380
|
+
let environmentIrradianceFromTexture: vec4f=textureSample(irradianceSampler,irradianceSamplerSampler,irradianceVector);
|
|
381
|
+
#else
|
|
382
|
+
let environmentIrradianceFromTexture: vec4f=textureSample(irradianceSampler,irradianceSamplerSampler,reflectionCoords);
|
|
478
383
|
#endif
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
fn computeSkyBoxCoords(positionW: vec3f,reflectionMatrix: mat4x4f)->vec3f
|
|
483
|
-
{return (reflectionMatrix* vec4f(positionW,1.)).xyz;}
|
|
484
|
-
#ifdef REFLECTION
|
|
485
|
-
fn computeReflectionCoords(worldPos: vec4f,worldNormal: vec3f)->vec3f
|
|
486
|
-
{
|
|
487
|
-
#ifdef REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED
|
|
488
|
-
var direction: vec3f=normalize(fragmentInputs.vDirectionW);return computeMirroredFixedEquirectangularCoords(worldPos,worldNormal,direction);
|
|
384
|
+
environmentIrradiance=environmentIrradianceFromTexture.rgb;
|
|
385
|
+
#ifdef RGBDREFLECTION
|
|
386
|
+
environmentIrradiance.rgb=fromRGBD(environmentIrradianceFromTexture);
|
|
489
387
|
#endif
|
|
490
|
-
#ifdef
|
|
491
|
-
|
|
388
|
+
#ifdef GAMMAREFLECTION
|
|
389
|
+
environmentIrradiance.rgb=toLinearSpaceVec3(environmentIrradiance.rgb);
|
|
492
390
|
#endif
|
|
493
|
-
#ifdef
|
|
494
|
-
|
|
391
|
+
#ifdef USE_IRRADIANCE_DOMINANT_DIRECTION
|
|
392
|
+
let Ls: vec3f=normalize(reflectionDominantDirection);let NoL: f32=dot(irradianceVector,Ls);let NoV: f32=dot(irradianceVector,irradianceView);var diffuseRoughnessTerm=vec3f(1.0f);
|
|
393
|
+
#if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON
|
|
394
|
+
let LoV: f32=dot (Ls,irradianceView);let mag: f32=length(reflectionDominantDirection)*2.0f;let clampedAlbedo: vec3f=clamp(surfaceAlbedo,vec3f(0.1f),vec3f(1.0f));diffuseRoughnessTerm=diffuseBRDF_EON(clampedAlbedo,diffuseRoughness,NoL,NoV,LoV)*PI;diffuseRoughnessTerm=diffuseRoughnessTerm/clampedAlbedo;diffuseRoughnessTerm=mix(vec3f(1.0f),diffuseRoughnessTerm,sqrt(clamp(mag*NoV,0.0f,1.0f)));
|
|
395
|
+
#elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_BURLEY
|
|
396
|
+
let H: vec3f=(irradianceView+Ls)*0.5f;let VoH: f32=dot(irradianceView,H);diffuseRoughnessTerm=vec3f(diffuseBRDF_Burley(NoL,NoV,VoH,diffuseRoughness)*PI);
|
|
495
397
|
#endif
|
|
496
|
-
|
|
497
|
-
return computeSphericalCoords(worldPos,worldNormal,scene.view,uniforms.reflectionMatrix);
|
|
398
|
+
environmentIrradiance=environmentIrradiance.rgb*diffuseRoughnessTerm;
|
|
498
399
|
#endif
|
|
499
|
-
#ifdef REFLECTIONMAP_PLANAR
|
|
500
|
-
return computePlanarCoords(worldPos,worldNormal,scene.vEyePosition.xyz,uniforms.reflectionMatrix);
|
|
501
400
|
#endif
|
|
502
|
-
|
|
503
|
-
#ifdef
|
|
504
|
-
|
|
401
|
+
environmentIrradiance*=reflectionInfos.x;return environmentIrradiance;}
|
|
402
|
+
#ifdef REFLECTIONMAP_3D
|
|
403
|
+
fn createReflectionCoords(vPositionW: vec3f,normalW: vec3f)->vec3f
|
|
505
404
|
#else
|
|
506
|
-
|
|
405
|
+
fn createReflectionCoords(vPositionW: vec3f,normalW: vec3f)->vec2f
|
|
507
406
|
#endif
|
|
407
|
+
{var reflectionVector: vec3f=computeReflectionCoords(vec4f(vPositionW,1.0f),normalW);
|
|
408
|
+
#ifdef REFLECTIONMAP_OPPOSITEZ
|
|
409
|
+
reflectionVector.z*=-1.0;
|
|
508
410
|
#endif
|
|
411
|
+
#ifdef REFLECTIONMAP_3D
|
|
412
|
+
var reflectionCoords: vec3f=reflectionVector;
|
|
413
|
+
#else
|
|
414
|
+
var reflectionCoords: vec2f=reflectionVector.xy;
|
|
509
415
|
#ifdef REFLECTIONMAP_PROJECTION
|
|
510
|
-
|
|
511
|
-
#endif
|
|
512
|
-
#ifndef REFLECTIONMAP_CUBIC
|
|
513
|
-
#ifdef REFLECTIONMAP_SKYBOX
|
|
514
|
-
return computeSkyBoxCoords(fragmentInputs.vPositionUVW,uniforms.reflectionMatrix);
|
|
515
|
-
#endif
|
|
516
|
-
#endif
|
|
517
|
-
#ifdef REFLECTIONMAP_EXPLICIT
|
|
518
|
-
return vec3f(0,0,0);
|
|
416
|
+
reflectionCoords/=reflectionVector.z;
|
|
519
417
|
#endif
|
|
520
|
-
|
|
418
|
+
reflectionCoords.y=1.0f-reflectionCoords.y;
|
|
521
419
|
#endif
|
|
522
|
-
|
|
420
|
+
return reflectionCoords;}
|
|
421
|
+
fn sampleRadiance(
|
|
422
|
+
alphaG: f32
|
|
423
|
+
,reflectionMicrosurfaceInfos: vec3f
|
|
424
|
+
,reflectionInfos: vec2f
|
|
425
|
+
,geoInfo: geometryInfoOutParams
|
|
523
426
|
#ifdef REFLECTIONMAP_3D
|
|
524
|
-
|
|
525
|
-
|
|
427
|
+
,reflectionSampler: texture_cube<f32>
|
|
428
|
+
,reflectionSamplerSampler: sampler
|
|
429
|
+
,reflectionCoords: vec3f
|
|
526
430
|
#else
|
|
527
|
-
|
|
431
|
+
,reflectionSampler: texture_2d<f32>
|
|
432
|
+
,reflectionSamplerSampler: sampler
|
|
433
|
+
,reflectionCoords: vec2f
|
|
528
434
|
#endif
|
|
529
|
-
#ifdef
|
|
530
|
-
|
|
435
|
+
#ifdef REALTIME_FILTERING
|
|
436
|
+
,reflectionFilteringInfo: vec2f
|
|
531
437
|
#endif
|
|
438
|
+
)->vec3f {var environmentRadiance: vec4f=vec4f(0.f,0.f,0.f,0.f);
|
|
439
|
+
#if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)
|
|
440
|
+
var reflectionLOD: f32=getLodFromAlphaG(reflectionMicrosurfaceInfos.x,alphaG,geoInfo.NdotVUnclamped);
|
|
441
|
+
#elif defined(LINEARSPECULARREFLECTION)
|
|
442
|
+
var reflectionLOD: f32=getLinearLodFromRoughness(reflectionMicrosurfaceInfos.x,roughness);
|
|
532
443
|
#else
|
|
533
|
-
var
|
|
534
|
-
#
|
|
444
|
+
var reflectionLOD: f32=getLodFromAlphaG(reflectionMicrosurfaceInfos.x,alphaG);
|
|
445
|
+
#endif
|
|
446
|
+
reflectionLOD=reflectionLOD*reflectionMicrosurfaceInfos.y+reflectionMicrosurfaceInfos.z;
|
|
447
|
+
#ifdef REALTIME_FILTERING
|
|
448
|
+
environmentRadiance=vec4f(radiance(alphaG,reflectionSampler,reflectionSamplerSampler,reflectionCoords,reflectionFilteringInfo),1.0f);
|
|
535
449
|
#else
|
|
536
|
-
|
|
450
|
+
environmentRadiance=textureSampleLevel(reflectionSampler,reflectionSamplerSampler,reflectionCoords,reflectionLOD);
|
|
537
451
|
#endif
|
|
538
|
-
|
|
539
|
-
|
|
452
|
+
var envRadiance: vec3f=environmentRadiance.rgb;
|
|
453
|
+
#ifdef RGBDREFLECTION
|
|
454
|
+
envRadiance=fromRGBD(environmentRadiance);
|
|
540
455
|
#endif
|
|
456
|
+
#ifdef GAMMAREFLECTION
|
|
457
|
+
envRadiance=toLinearSpaceVec3(environmentRadiance.rgb);
|
|
541
458
|
#endif
|
|
542
|
-
|
|
543
|
-
|
|
459
|
+
envRadiance*=reflectionInfos.x;return envRadiance;}
|
|
460
|
+
#if defined(ANISOTROPIC)
|
|
461
|
+
fn sampleRadianceAnisotropic(
|
|
462
|
+
alphaG: f32
|
|
463
|
+
,reflectionMicrosurfaceInfos: vec3f
|
|
464
|
+
,reflectionInfos: vec2f
|
|
465
|
+
,geoInfo: geometryInfoAnisoOutParams
|
|
466
|
+
,normalW: vec3f
|
|
467
|
+
,viewDirectionW: vec3f
|
|
468
|
+
,positionW: vec3f
|
|
469
|
+
,noise: vec3f
|
|
470
|
+
,isRefraction: bool
|
|
471
|
+
,ior: f32
|
|
472
|
+
#ifdef REFLECTIONMAP_3D
|
|
473
|
+
,reflectionSampler: texture_cube<f32>
|
|
474
|
+
,reflectionSamplerSampler: sampler
|
|
544
475
|
#else
|
|
545
|
-
|
|
546
|
-
|
|
476
|
+
,reflectionSampler: texture_2d<f32>
|
|
477
|
+
,reflectionSamplerSampler: sampler
|
|
547
478
|
#endif
|
|
479
|
+
#ifdef REALTIME_FILTERING
|
|
480
|
+
,reflectionFilteringInfo: vec2f
|
|
548
481
|
#endif
|
|
482
|
+
)->vec3f {var environmentRadiance: vec4f=vec4f(0.f,0.f,0.f,0.f);let alphaT=alphaG*sqrt(2.0f/(1.0f+(1.0f-geoInfo.anisotropy)*(1.0f-geoInfo.anisotropy)));let alphaB=(1.0f-geoInfo.anisotropy)*alphaT;let modifiedAlphaG=alphaB;
|
|
483
|
+
#if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)
|
|
484
|
+
var reflectionLOD: f32=getLodFromAlphaG(reflectionMicrosurfaceInfos.x,modifiedAlphaG,geoInfo.NdotVUnclamped);
|
|
485
|
+
#elif defined(LINEARSPECULARREFLECTION)
|
|
486
|
+
var reflectionLOD: f32=getLinearLodFromRoughness(reflectionMicrosurfaceInfos.x,roughness);
|
|
487
|
+
#else
|
|
488
|
+
var reflectionLOD: f32=getLodFromAlphaG(reflectionMicrosurfaceInfos.x,modifiedAlphaG);
|
|
549
489
|
#endif
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
490
|
+
reflectionLOD=reflectionLOD*reflectionMicrosurfaceInfos.y+reflectionMicrosurfaceInfos.z;
|
|
491
|
+
#ifdef REALTIME_FILTERING
|
|
492
|
+
var view=(uniforms.reflectionMatrix*vec4f(viewDirectionW,0.0f)).xyz;var tangent=(uniforms.reflectionMatrix*vec4f(geoInfo.anisotropicTangent,0.0f)).xyz;var bitangent=(uniforms.reflectionMatrix*vec4f(geoInfo.anisotropicBitangent,0.0f)).xyz;var normal=(uniforms.reflectionMatrix*vec4f(normalW,0.0f)).xyz;
|
|
493
|
+
#ifdef REFLECTIONMAP_OPPOSITEZ
|
|
494
|
+
view.z*=-1.0f;tangent.z*=-1.0f;bitangent.z*=-1.0f;normal.z*=-1.0f;
|
|
553
495
|
#endif
|
|
554
|
-
|
|
555
|
-
|
|
496
|
+
environmentRadiance =
|
|
497
|
+
vec4f(radianceAnisotropic(alphaT,alphaB,reflectionSampler,reflectionSamplerSampler,
|
|
498
|
+
view,tangent,
|
|
499
|
+
bitangent,normal,
|
|
500
|
+
reflectionFilteringInfo,noise.xy,isRefraction,ior),
|
|
501
|
+
1.0f);
|
|
502
|
+
#else
|
|
503
|
+
const samples: i32=16;var radianceSample=vec4f(0.0);var accumulatedRadiance=vec3f(0.0);var reflectionCoords=vec3f(0.0);var sample_weight=0.0f;var total_weight=0.0f;let step=1.0f/f32(max(samples-1,1));for (var i: i32=0; i<samples; i++) {var t: f32=mix(-1.0,1.0,f32(i)*step);t+=step*2.0*noise.x;sample_weight=max(1.0-abs(t),0.001);sample_weight*=sample_weight;t*=min(4.0*alphaT*geoInfo.anisotropy,1.0);var bentNormal: vec3f;if (t<0.0) {let blend: f32=t+1.0;bentNormal=normalize(mix(-geoInfo.anisotropicTangent,normalW,blend));} else if (t>0.0) {let blend: f32=t;bentNormal=normalize(mix(normalW,geoInfo.anisotropicTangent,blend));} else {bentNormal=normalW;}
|
|
504
|
+
if (isRefraction) {reflectionCoords=double_refract(-viewDirectionW,bentNormal,ior);} else {reflectionCoords=reflect(-viewDirectionW,bentNormal);}
|
|
505
|
+
reflectionCoords=(uniforms.reflectionMatrix*vec4f(reflectionCoords,0.f)).xyz;
|
|
506
|
+
#ifdef REFLECTIONMAP_OPPOSITEZ
|
|
507
|
+
reflectionCoords.z*=-1.0f;
|
|
556
508
|
#endif
|
|
557
|
-
|
|
558
|
-
|
|
509
|
+
radianceSample=textureSampleLevel(reflectionSampler,reflectionSamplerSampler,reflectionCoords,reflectionLOD);
|
|
510
|
+
#ifdef RGBDREFLECTION
|
|
511
|
+
accumulatedRadiance+=vec3f(sample_weight)*fromRGBD(radianceSample);
|
|
512
|
+
#elif defined(GAMMAREFLECTION)
|
|
513
|
+
accumulatedRadiance+=vec3f(sample_weight)*toLinearSpaceVec3(radianceSample.rgb);
|
|
514
|
+
#else
|
|
515
|
+
accumulatedRadiance+=vec3f(sample_weight)*radianceSample.rgb;
|
|
559
516
|
#endif
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
fn getLodFromAlphaGNdotV(cubeMapDimensionPixels: f32,alphaG: f32,NdotV: f32)->f32 {var microsurfaceAverageSlope: f32=alphaG;microsurfaceAverageSlope*=sqrt(abs(NdotV));return getLodFromAlphaG(cubeMapDimensionPixels,microsurfaceAverageSlope);}
|
|
517
|
+
total_weight+=sample_weight;}
|
|
518
|
+
environmentRadiance=vec4f(accumulatedRadiance/vec3f(total_weight),1.0f);
|
|
563
519
|
#endif
|
|
564
|
-
|
|
565
|
-
{F0: f32,
|
|
566
|
-
F90: f32,
|
|
567
|
-
coloredF0: vec3f,
|
|
568
|
-
coloredF90: vec3f,};
|
|
569
|
-
#define pbr_inline
|
|
570
|
-
fn dielectricReflectance(
|
|
571
|
-
insideIOR: f32,outsideIOR: f32,specularColor: vec3f,specularWeight: f32
|
|
572
|
-
)->ReflectanceParams
|
|
573
|
-
{var outParams: ReflectanceParams;let dielectricF0=pow((insideIOR-outsideIOR)/(insideIOR+outsideIOR),2.0);let f90Scale=clamp(2.0f*abs(insideIOR-outsideIOR),0.0f,1.0f);
|
|
574
|
-
#if (DIELECTRIC_SPECULAR_MODEL==DIELECTRIC_SPECULAR_MODEL_OPENPBR)
|
|
575
|
-
let dielectricColorF90: vec3f=specularColor.rgb*vec3f(f90Scale);
|
|
576
|
-
#else
|
|
577
|
-
let dielectricColorF90: vec3f=vec3f(f90Scale);
|
|
520
|
+
environmentRadiance=vec4f(environmentRadiance.rgb*reflectionInfos.xxx,environmentRadiance.a);return environmentRadiance.rgb;}
|
|
578
521
|
#endif
|
|
579
|
-
#if DIELECTRIC_SPECULAR_MODEL==DIELECTRIC_SPECULAR_MODEL_GLTF
|
|
580
|
-
let maxF0=max(specularColor.r,max(specularColor.g,specularColor.b));outParams.F0=dielectricF0*maxF0*specularWeight;
|
|
581
|
-
#else
|
|
582
|
-
outParams.F0=dielectricF0*specularWeight;
|
|
583
522
|
#endif
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
{
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
NdotVUnclamped: f32,
|
|
592
|
-
environmentBrdf: vec3f,
|
|
593
|
-
horizonOcclusion: f32,
|
|
594
|
-
anisotropy: f32,
|
|
595
|
-
anisotropicTangent: vec3f,
|
|
596
|
-
anisotropicBitangent: vec3f,
|
|
597
|
-
TBN: mat3x3<f32>};fn geometryInfo(
|
|
598
|
-
normalW: vec3f,viewDirectionW: vec3f,roughness: f32,geometricNormalW: vec3f
|
|
599
|
-
)->geometryInfoOutParams
|
|
600
|
-
{var outParams: geometryInfoOutParams;outParams.NdotVUnclamped=dot(normalW,viewDirectionW);outParams.NdotV=absEps(outParams.NdotVUnclamped);
|
|
601
|
-
#if defined(ENVIRONMENTBRDF)
|
|
602
|
-
outParams.environmentBrdf=getBRDFLookup(outParams.NdotV,roughness);
|
|
523
|
+
#ifdef ENVIRONMENTBRDF
|
|
524
|
+
fn computeDielectricIblFresnel(reflectance: ReflectanceParams,environmentBrdf: vec3f)->f32
|
|
525
|
+
{let dielectricIblFresnel: f32=getReflectanceFromBRDFWithEnvLookup(vec3f(reflectance.F0),vec3f(reflectance.F90),environmentBrdf).r;let dielectricECF: f32=1.0+reflectance.F0*(1.0/environmentBrdf.y-1.0);return clamp(dielectricIblFresnel*dielectricECF,0.0,1.0);}
|
|
526
|
+
fn computeConductorIblFresnel(reflectance: ReflectanceParams,environmentBrdf: vec3f)->vec3f
|
|
527
|
+
{
|
|
528
|
+
#if (CONDUCTOR_SPECULAR_MODEL==CONDUCTOR_SPECULAR_MODEL_OPENPBR)
|
|
529
|
+
let openPBRBrdf: vec3f=vec3f(environmentBrdf.xy,environmentBrdf.z/BRDF_Z_SCALE);let b: vec3f =getF82B(reflectance.coloredF0,reflectance.coloredF90);let E_F82: vec3f=getF82DirectionalAlbedo(reflectance.coloredF0,vec3f(1.0),b,openPBRBrdf);let F_avg: vec3f=getF82AverageFresnel(reflectance.coloredF0,b);let ECF: vec3f =vec3f(1.0)+F_avg*(vec3f(1.0)/openPBRBrdf.y-vec3f(1.0));return clamp(E_F82*ECF,vec3f(0.0),vec3f(1.0));
|
|
603
530
|
#else
|
|
604
|
-
|
|
531
|
+
return getReflectanceFromBRDFLookup(reflectance.coloredF0,reflectance.coloredF90,environmentBrdf);
|
|
605
532
|
#endif
|
|
606
|
-
|
|
607
|
-
#if defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX)
|
|
608
|
-
#ifdef HORIZONOCCLUSION
|
|
609
|
-
#if defined(GEOMETRY_NORMAL) || defined(GEOMETRY_COAT_NORMAL)
|
|
610
|
-
#ifdef REFLECTIONMAP_3D
|
|
611
|
-
outParams.horizonOcclusion=environmentHorizonOcclusion(-viewDirectionW,normalW,geometricNormalW);
|
|
533
|
+
}
|
|
612
534
|
#endif
|
|
535
|
+
`;r.ShaderStore.IncludesShadersStoreWGSL[t]||(r.ShaderStore.IncludesShadersStoreWGSL[t]=o),e.s(["openpbrIblFunctionsWGSL",0,{name:t,shader:o}],32923)},24186,e=>{"use strict";var r=e.i(25044);let a="openpbrSubsurfaceLayerData",i=`var subsurface_weight: f32=uniforms.vSubsurfaceWeight;var subsurface_color: vec3f=uniforms.vSubsurfaceColor.rgb;var subsurface_radius: f32=uniforms.vSubsurfaceRadius;var subsurface_radius_scale: vec3f=uniforms.vSubsurfaceRadiusScale;var subsurface_scatter_anisotropy: f32=clamp(uniforms.vSubsurfaceScatterAnisotropy,-0.9999f,0.9999f);
|
|
536
|
+
#ifdef SUBSURFACE_WEIGHT
|
|
537
|
+
let subsurfaceWeightFromTexture: vec4f=TEXRD(subsurfaceWeightSampler,subsurfaceWeightSamplerSampler,fragmentInputs.vSubsurfaceWeightUV+uvOffset);
|
|
613
538
|
#endif
|
|
539
|
+
#ifdef SUBSURFACE_COLOR
|
|
540
|
+
let subsurfaceColorFromTexture: vec4f=TEXRD(subsurfaceColorSampler,subsurfaceColorSamplerSampler,fragmentInputs.vSubsurfaceColorUV+uvOffset);
|
|
614
541
|
#endif
|
|
542
|
+
#ifdef SUBSURFACE_RADIUS_SCALE
|
|
543
|
+
let subsurfaceRadiusScaleFromTexture: vec4f=TEXRD(subsurfaceRadiusScaleSampler,subsurfaceRadiusScaleSamplerSampler,fragmentInputs.vSubsurfaceRadiusScaleUV+uvOffset);
|
|
615
544
|
#endif
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
{let geoInfo: geometryInfoOutParams=geometryInfo(normalW,viewDirectionW,roughness,geometricNormalW);var outParams: geometryInfoAnisoOutParams;outParams.NdotV=geoInfo.NdotV;outParams.NdotVUnclamped=geoInfo.NdotVUnclamped;outParams.environmentBrdf=geoInfo.environmentBrdf;outParams.horizonOcclusion=geoInfo.horizonOcclusion;outParams.anisotropy=vAnisotropy.b;let anisotropyDirection: vec3f=vec3f(vAnisotropy.xy,0.);let anisoTBN: mat3x3<f32>=mat3x3<f32>(normalize(TBN[0]),normalize(TBN[1]),normalize(TBN[2]));outParams.anisotropicTangent=normalize(anisoTBN*anisotropyDirection);outParams.anisotropicBitangent=normalize(cross(anisoTBN[2],outParams.anisotropicTangent));outParams.TBN=TBN;return outParams;}
|
|
622
|
-
`;r.ShaderStore.IncludesShadersStoreWGSL[f]||(r.ShaderStore.IncludesShadersStoreWGSL[f]=n),e.s(["openpbrGeometryInfoWGSL",0,{name:f,shader:n}],25799);let t="openpbrIblFunctions",o=`#ifdef REFLECTION
|
|
623
|
-
fn sampleIrradiance(
|
|
624
|
-
surfaceNormal: vec3f
|
|
625
|
-
#if defined(NORMAL) && defined(USESPHERICALINVERTEX)
|
|
626
|
-
,vEnvironmentIrradianceSH: vec3f
|
|
545
|
+
#ifdef SUBSURFACE_WEIGHT
|
|
546
|
+
#ifdef SUBSURFACE_WEIGHT_FROM_TEXTURE_ALPHA
|
|
547
|
+
subsurface_weight*=subsurfaceWeightFromTexture.a;
|
|
548
|
+
#else
|
|
549
|
+
subsurface_weight*=subsurfaceWeightFromTexture.r;
|
|
627
550
|
#endif
|
|
628
|
-
#if (defined(USESPHERICALFROMREFLECTIONMAP) && (!defined(NORMAL) || !defined(USESPHERICALINVERTEX))) || (defined(USEIRRADIANCEMAP) && defined(REFLECTIONMAP_3D))
|
|
629
|
-
,iblMatrix: mat4x4f
|
|
630
551
|
#endif
|
|
631
|
-
#ifdef
|
|
632
|
-
#ifdef
|
|
633
|
-
|
|
634
|
-
,irradianceSamplerSampler: sampler
|
|
552
|
+
#ifdef SUBSURFACE_COLOR
|
|
553
|
+
#ifdef SUBSURFACE_COLOR_GAMMA
|
|
554
|
+
subsurface_color*=toLinearSpaceVec3(subsurfaceColorFromTexture.rgb);
|
|
635
555
|
#else
|
|
636
|
-
|
|
637
|
-
,irradianceSamplerSampler: sampler
|
|
638
|
-
#endif
|
|
639
|
-
#ifdef USE_IRRADIANCE_DOMINANT_DIRECTION
|
|
640
|
-
,reflectionDominantDirection: vec3f
|
|
556
|
+
subsurface_color*=subsurfaceColorFromTexture.rgb;
|
|
641
557
|
#endif
|
|
558
|
+
subsurface_color*=uniforms.vSubsurfaceColorInfos.y;
|
|
642
559
|
#endif
|
|
643
|
-
#ifdef
|
|
644
|
-
|
|
645
|
-
#ifdef IBL_CDF_FILTERING
|
|
646
|
-
,icdfSampler: texture_2d<f32>
|
|
647
|
-
,icdfSamplerSampler: sampler
|
|
560
|
+
#ifdef SUBSURFACE_RADIUS_SCALE
|
|
561
|
+
subsurface_radius_scale*=subsurfaceRadiusScaleFromTexture.rgb;
|
|
648
562
|
#endif
|
|
563
|
+
`;r.ShaderStore.IncludesShadersStoreWGSL[a]||(r.ShaderStore.IncludesShadersStoreWGSL[a]=i),e.s(["openpbrSubsurfaceLayerDataWGSL",0,{name:a,shader:i}])},24095,e=>{"use strict";var r=e.i(25044);let a="openpbrTransmissionLayerData",i=`var transmission_weight: f32=uniforms.vTransmissionWeight;var transmission_color: vec3f=uniforms.vTransmissionColor.rgb;var transmission_depth: f32=uniforms.vTransmissionDepth;var transmission_scatter: vec3f=uniforms.vTransmissionScatter.rgb;var transmission_scatter_anisotropy: f32=clamp(uniforms.vTransmissionScatterAnisotropy,-0.9999f,0.9999f);var transmission_dispersion_scale: f32=uniforms.vTransmissionDispersionScale;var transmission_dispersion_abbe_number: f32=uniforms.vTransmissionDispersionAbbeNumber;
|
|
564
|
+
#ifdef TRANSMISSION_WEIGHT
|
|
565
|
+
let transmissionWeightFromTexture: vec4f=TEXRD(transmissionWeightSampler,transmissionWeightSamplerSampler,fragmentInputs.vTransmissionWeightUV+uvOffset);
|
|
649
566
|
#endif
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
,diffuseRoughness: f32
|
|
653
|
-
,surfaceAlbedo: vec3f
|
|
654
|
-
)->vec3f {var environmentIrradiance=vec3f(0.,0.,0.);
|
|
655
|
-
#if (defined(USESPHERICALFROMREFLECTIONMAP) && (!defined(NORMAL) || !defined(USESPHERICALINVERTEX))) || (defined(USEIRRADIANCEMAP) && defined(REFLECTIONMAP_3D))
|
|
656
|
-
var irradianceVector=(iblMatrix*vec4f(surfaceNormal,0.0f)).xyz;var irradianceView=(iblMatrix*vec4f(viewDirectionW,0.0f)).xyz;
|
|
657
|
-
#if !defined(USE_IRRADIANCE_DOMINANT_DIRECTION) && !defined(REALTIME_FILTERING)
|
|
658
|
-
#if BASE_DIFFUSE_MODEL != BRDF_DIFFUSE_MODEL_LAMBERT && BASE_DIFFUSE_MODEL != BRDF_DIFFUSE_MODEL_LEGACY
|
|
659
|
-
{let NdotV=max(dot(surfaceNormal,viewDirectionW),0.0f);irradianceVector=mix(irradianceVector,irradianceView,(0.5f*(1.0f-NdotV))*diffuseRoughness);}
|
|
567
|
+
#ifdef TRANSMISSION_COLOR
|
|
568
|
+
let transmissionColorFromTexture: vec4f=TEXRD(transmissionColorSampler,transmissionColorSamplerSampler,fragmentInputs.vTransmissionColorUV+uvOffset);
|
|
660
569
|
#endif
|
|
570
|
+
#ifdef TRANSMISSION_DEPTH
|
|
571
|
+
let transmissionDepthFromTexture: vec4f=TEXRD(transmissionDepthSampler,transmissionDepthSamplerSampler,fragmentInputs.vTransmissionDepthUV+uvOffset);
|
|
661
572
|
#endif
|
|
662
|
-
#ifdef
|
|
663
|
-
|
|
573
|
+
#ifdef TRANSMISSION_SCATTER
|
|
574
|
+
let transmissionScatterFromTexture: vec4f=TEXRD(transmissionScatterSampler,transmissionScatterSamplerSampler,fragmentInputs.vTransmissionScatterUV+uvOffset);
|
|
664
575
|
#endif
|
|
665
|
-
#ifdef
|
|
666
|
-
|
|
576
|
+
#ifdef TRANSMISSION_DISPERSION_SCALE
|
|
577
|
+
let transmissionDispersionScaleFromTexture: vec4f=TEXRD(transmissionDispersionScaleSampler,transmissionDispersionScaleSamplerSampler,fragmentInputs.vTransmissionDispersionScaleUV+uvOffset);
|
|
667
578
|
#endif
|
|
579
|
+
#ifdef TRANSMISSION_WEIGHT
|
|
580
|
+
transmission_weight*=transmissionWeightFromTexture.r;
|
|
668
581
|
#endif
|
|
669
|
-
#ifdef
|
|
670
|
-
#
|
|
671
|
-
|
|
582
|
+
#ifdef TRANSMISSION_COLOR
|
|
583
|
+
#ifdef TRANSMISSION_COLOR_GAMMA
|
|
584
|
+
transmission_color*=toLinearSpaceVec3(transmissionColorFromTexture.rgb);
|
|
672
585
|
#else
|
|
673
|
-
|
|
674
|
-
environmentIrradiance=irradiance(reflectionSampler,reflectionSamplerSampler,irradianceVector,reflectionFilteringInfo,diffuseRoughness,surfaceAlbedo,irradianceView
|
|
675
|
-
#ifdef IBL_CDF_FILTERING
|
|
676
|
-
,icdfSampler
|
|
677
|
-
,icdfSamplerSampler
|
|
586
|
+
transmission_color*=transmissionColorFromTexture.rgb;
|
|
678
587
|
#endif
|
|
679
|
-
|
|
680
|
-
#else
|
|
681
|
-
environmentIrradiance=computeEnvironmentIrradiance(irradianceVector);
|
|
588
|
+
transmission_color*=uniforms.vTransmissionColorInfos.y;
|
|
682
589
|
#endif
|
|
590
|
+
#ifdef TRANSMISSION_DEPTH
|
|
591
|
+
transmission_depth*=transmissionDepthFromTexture.r;
|
|
683
592
|
#endif
|
|
684
|
-
#
|
|
685
|
-
|
|
686
|
-
let environmentIrradianceFromTexture: vec4f=textureSample(irradianceSampler,irradianceSamplerSampler,irradianceVector);
|
|
687
|
-
#else
|
|
688
|
-
let environmentIrradianceFromTexture: vec4f=textureSample(irradianceSampler,irradianceSamplerSampler,reflectionCoords);
|
|
593
|
+
#ifdef TRANSMISSION_SCATTER
|
|
594
|
+
transmission_scatter*=transmissionScatterFromTexture.rgb;
|
|
689
595
|
#endif
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
environmentIrradiance.rgb=fromRGBD(environmentIrradianceFromTexture);
|
|
596
|
+
#ifdef TRANSMISSION_DISPERSION_SCALE
|
|
597
|
+
transmission_dispersion_scale*=transmissionDispersionScaleFromTexture.r;
|
|
693
598
|
#endif
|
|
694
|
-
|
|
695
|
-
|
|
599
|
+
`;r.ShaderStore.IncludesShadersStoreWGSL[a]||(r.ShaderStore.IncludesShadersStoreWGSL[a]=i),e.s(["openpbrTransmissionLayerDataWGSL",0,{name:a,shader:i}])},86165,e=>{"use strict";var r=e.i(25044);let a="pbrBRDFFunctions",i=`#define FRESNEL_MAXIMUM_ON_ROUGH 0.25
|
|
600
|
+
#define BRDF_DIFFUSE_MODEL_EON 0
|
|
601
|
+
#define BRDF_DIFFUSE_MODEL_BURLEY 1
|
|
602
|
+
#define BRDF_DIFFUSE_MODEL_LAMBERT 2
|
|
603
|
+
#define BRDF_DIFFUSE_MODEL_LEGACY 3
|
|
604
|
+
#define DIELECTRIC_SPECULAR_MODEL_GLTF 0
|
|
605
|
+
#define DIELECTRIC_SPECULAR_MODEL_OPENPBR 1
|
|
606
|
+
#define CONDUCTOR_SPECULAR_MODEL_GLTF 0
|
|
607
|
+
#define CONDUCTOR_SPECULAR_MODEL_OPENPBR 1
|
|
608
|
+
#if !defined(PBR_VERTEX_SHADER) && !defined(OPENPBR_VERTEX_SHADER)
|
|
609
|
+
#ifdef MS_BRDF_ENERGY_CONSERVATION
|
|
610
|
+
fn getEnergyConservationFactor(specularEnvironmentR0: vec3f,environmentBrdf: vec3f)->vec3f {return 1.0+specularEnvironmentR0*(1.0/environmentBrdf.y-1.0);}
|
|
696
611
|
#endif
|
|
697
|
-
#
|
|
698
|
-
let
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
let H: vec3f=(irradianceView+Ls)*0.5f;let VoH: f32=dot(irradianceView,H);diffuseRoughnessTerm=vec3f(diffuseBRDF_Burley(NoL,NoV,VoH,diffuseRoughness)*PI);
|
|
612
|
+
#if CONDUCTOR_SPECULAR_MODEL==CONDUCTOR_SPECULAR_MODEL_OPENPBR
|
|
613
|
+
const F82_COS_THETA_MAX: f32 =0.142857143;const F82_ONE_MINUS_CTM_POW5: f32 =0.462664366;const F82_ONE_MINUS_CTM_POW6: f32 =0.396569457;const F82_B_DENOMINATOR_RECIP: f32 =17.6512785;const BRDF_Z_SCALE: f32 =16.0;fn getF82Specular(NdotV: f32,F0: vec3f,edgeTint: vec3f,roughness: f32)->vec3f {let white_minus_F0: vec3f=vec3f(1.0f)-F0;let b_numerator: vec3f=(F0+white_minus_F0*F82_ONE_MINUS_CTM_POW5)*(vec3f(1.0)-edgeTint);let b: vec3f=b_numerator*F82_B_DENOMINATOR_RECIP;let cos_theta: f32=max(roughness,NdotV);let one_minus_cos_theta: f32=1.0-cos_theta;let offset_from_F0: vec3f=(white_minus_F0-b*cos_theta*one_minus_cos_theta)*pow(one_minus_cos_theta,5.0f);return clamp(F0+offset_from_F0,vec3f(0.0f),vec3f(1.0f));}
|
|
614
|
+
fn getF82B(F0: vec3f,edgeTint: vec3f)->vec3f {return (F0+(vec3f(1.0)-F0)*F82_ONE_MINUS_CTM_POW5)*(vec3f(1.0)-edgeTint)*F82_B_DENOMINATOR_RECIP;}
|
|
615
|
+
fn getF82DirectionalAlbedo(F0: vec3f,F90: vec3f,b: vec3f,environmentBrdf: vec3f)->vec3f {return (F90-F0)*environmentBrdf.x+F0*environmentBrdf.y-b*environmentBrdf.z;}
|
|
616
|
+
fn getF82AverageFresnel(F0: vec3f,b: vec3f)->vec3f {return F0+(vec3f(1.0)-F0)/21.0-b/126.0;}
|
|
703
617
|
#endif
|
|
704
|
-
|
|
618
|
+
#ifdef FUZZENVIRONMENTBRDF
|
|
619
|
+
fn getFuzzBRDFLookup(NdotV: f32,perceptualRoughness: f32)->vec3f {let UV: vec2f=vec2f(perceptualRoughness,NdotV);var brdfLookup: vec4f=textureSample(environmentFuzzBrdfSampler,environmentFuzzBrdfSamplerSampler,UV);const RiRange: vec2f=vec2f(0.0f,0.75f);const ARange: vec2f=vec2f(0.005f,0.88f);const BRange: vec2f=vec2f(-0.18f,0.002f);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;}
|
|
705
620
|
#endif
|
|
621
|
+
#ifdef ENVIRONMENTBRDF
|
|
622
|
+
fn getBRDFLookup(NdotV: f32,perceptualRoughness: f32)->vec3f {var UV: vec2f= vec2f(NdotV,perceptualRoughness);var brdfLookup: vec4f= textureSample(environmentBrdfSampler,environmentBrdfSamplerSampler,UV);
|
|
623
|
+
#ifdef ENVIRONMENTBRDF_RGBD
|
|
624
|
+
brdfLookup=vec4f(fromRGBD(brdfLookup.rgba),brdfLookup.a);
|
|
706
625
|
#endif
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
626
|
+
return brdfLookup.rgb;}
|
|
627
|
+
fn getReflectanceFromBRDFWithEnvLookup(specularEnvironmentR0: vec3f,specularEnvironmentR90: vec3f,environmentBrdf: vec3f)->vec3f {
|
|
628
|
+
#ifdef BRDF_V_HEIGHT_CORRELATED
|
|
629
|
+
var reflectance: vec3f=(specularEnvironmentR90-specularEnvironmentR0)*environmentBrdf.x+specularEnvironmentR0*environmentBrdf.y;
|
|
710
630
|
#else
|
|
711
|
-
|
|
712
|
-
#endif
|
|
713
|
-
{var reflectionVector: vec3f=computeReflectionCoords(vec4f(vPositionW,1.0f),normalW);
|
|
714
|
-
#ifdef REFLECTIONMAP_OPPOSITEZ
|
|
715
|
-
reflectionVector.z*=-1.0;
|
|
631
|
+
var reflectance: vec3f=specularEnvironmentR0*environmentBrdf.x+specularEnvironmentR90*environmentBrdf.y;
|
|
716
632
|
#endif
|
|
717
|
-
|
|
718
|
-
|
|
633
|
+
return reflectance;}
|
|
634
|
+
fn getReflectanceFromBRDFLookup(specularEnvironmentR0: vec3f,environmentBrdf: vec3f)->vec3f {
|
|
635
|
+
#ifdef BRDF_V_HEIGHT_CORRELATED
|
|
636
|
+
var reflectance: vec3f=mix(environmentBrdf.xxx,environmentBrdf.yyy,specularEnvironmentR0);
|
|
719
637
|
#else
|
|
720
|
-
var
|
|
721
|
-
#ifdef REFLECTIONMAP_PROJECTION
|
|
722
|
-
reflectionCoords/=reflectionVector.z;
|
|
638
|
+
var reflectance: vec3f=specularEnvironmentR0*environmentBrdf.x+environmentBrdf.y;
|
|
723
639
|
#endif
|
|
724
|
-
|
|
640
|
+
return reflectance;}
|
|
725
641
|
#endif
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
#
|
|
733
|
-
,
|
|
734
|
-
|
|
735
|
-
|
|
642
|
+
/* NOT USED
|
|
643
|
+
#if defined(SHEEN) && defined(SHEEN_SOFTER)
|
|
644
|
+
fn getBRDFLookupCharlieSheen(NdotV: f32,perceptualRoughness: f32)->f32
|
|
645
|
+
{var c: f32=1.0-NdotV;var c3: f32=c*c*c;return 0.65584461*c3+1.0/(4.16526551+exp(-7.97291361*perceptualRoughness+6.33516894));}
|
|
646
|
+
#endif
|
|
647
|
+
*/
|
|
648
|
+
#if !defined(ENVIRONMENTBRDF) || defined(REFLECTIONMAP_SKYBOX) || defined(ALPHAFRESNEL)
|
|
649
|
+
fn getReflectanceFromAnalyticalBRDFLookup_Jones(VdotN: f32,reflectance0: vec3f,reflectance90: vec3f,smoothness: f32)->vec3f
|
|
650
|
+
{var weight: f32=mix(FRESNEL_MAXIMUM_ON_ROUGH,1.0,smoothness);return reflectance0+weight*(reflectance90-reflectance0)*pow5(saturate(1.0-VdotN));}
|
|
651
|
+
#endif
|
|
652
|
+
#if defined(SHEEN) && defined(ENVIRONMENTBRDF)
|
|
653
|
+
/**
|
|
654
|
+
* The sheen BRDF not containing F can be easily stored in the blue channel of the BRDF texture.
|
|
655
|
+
* The blue channel contains DCharlie*VAshikhmin*NdotL as a lokkup table
|
|
656
|
+
*/
|
|
657
|
+
fn getSheenReflectanceFromBRDFLookup(reflectance0: vec3f,environmentBrdf: vec3f)->vec3f {var sheenEnvironmentReflectance: vec3f=reflectance0*environmentBrdf.b;return sheenEnvironmentReflectance;}
|
|
658
|
+
#endif
|
|
659
|
+
fn fresnelSchlickGGXVec3(VdotH: f32,reflectance0: vec3f,reflectance90: vec3f)->vec3f
|
|
660
|
+
{return reflectance0+(reflectance90-reflectance0)*pow5(1.0-VdotH);}
|
|
661
|
+
fn fresnelSchlickGGX(VdotH: f32,reflectance0: f32,reflectance90: f32)->f32
|
|
662
|
+
{return reflectance0+(reflectance90-reflectance0)*pow5(1.0-VdotH);}
|
|
663
|
+
#ifdef CLEARCOAT
|
|
664
|
+
fn getR0RemappedForClearCoat(f0: vec3f)->vec3f {
|
|
665
|
+
#ifdef CLEARCOAT_DEFAULTIOR
|
|
666
|
+
#ifdef MOBILE
|
|
667
|
+
return saturateVec3(f0*(f0*0.526868+0.529324)-0.0482256);
|
|
736
668
|
#else
|
|
737
|
-
|
|
738
|
-
,reflectionSamplerSampler: sampler
|
|
739
|
-
,reflectionCoords: vec2f
|
|
669
|
+
return saturateVec3(f0*(f0*(0.941892-0.263008*f0)+0.346479)-0.0285998);
|
|
740
670
|
#endif
|
|
741
|
-
#
|
|
742
|
-
|
|
671
|
+
#else
|
|
672
|
+
var s: vec3f=sqrt(f0);var t: vec3f=(uniforms.vClearCoatRefractionParams.z+uniforms.vClearCoatRefractionParams.w*s)/(uniforms.vClearCoatRefractionParams.w+uniforms.vClearCoatRefractionParams.z*s);return squareVec3(t);
|
|
743
673
|
#endif
|
|
744
|
-
|
|
745
|
-
#
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
674
|
+
}
|
|
675
|
+
#endif
|
|
676
|
+
#ifdef IRIDESCENCE
|
|
677
|
+
const XYZ_TO_REC709: mat3x3f= mat3x3f(
|
|
678
|
+
3.2404542,-0.9692660, 0.0556434,
|
|
679
|
+
-1.5371385, 1.8760108,-0.2040259,
|
|
680
|
+
-0.4985314, 0.0415560, 1.0572252
|
|
681
|
+
);fn getIORTfromAirToSurfaceR0(f0: vec3f)->vec3f {var sqrtF0: vec3f=sqrt(f0);return (1.+sqrtF0)/(1.-sqrtF0);}
|
|
682
|
+
fn getR0fromIORsVec3(iorT: vec3f,iorI: f32)->vec3f {return squareVec3((iorT- vec3f(iorI))/(iorT+ vec3f(iorI)));}
|
|
683
|
+
fn getR0fromIORs(iorT: f32,iorI: f32)->f32 {return square((iorT-iorI)/(iorT+iorI));}
|
|
684
|
+
fn evalSensitivity(opd: f32,shift: vec3f)->vec3f {var phase: f32=2.0*PI*opd*1.0e-9;const val: vec3f= vec3f(5.4856e-13,4.4201e-13,5.2481e-13);const pos: vec3f= vec3f(1.6810e+06,1.7953e+06,2.2084e+06);const vr: vec3f= vec3f(4.3278e+09,9.3046e+09,6.6121e+09);var xyz: vec3f=val*sqrt(2.0*PI*vr)*cos(pos*phase+shift)*exp(-square(phase)*vr);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;var srgb: vec3f=XYZ_TO_REC709*xyz;return srgb;}
|
|
685
|
+
fn evalIridescence(outsideIOR: f32,eta2: f32,cosTheta1: f32,thinFilmThickness: f32,baseF0: vec3f)->vec3f {var I: vec3f= vec3f(1.0);var iridescenceIOR: f32=mix(outsideIOR,eta2,smoothstep(0.0,0.03,thinFilmThickness));var sinTheta2Sq: f32=square(outsideIOR/iridescenceIOR)*(1.0-square(cosTheta1));var cosTheta2Sq: f32=1.0-sinTheta2Sq;if (cosTheta2Sq<0.0) {return I;}
|
|
686
|
+
var cosTheta2: f32=sqrt(cosTheta2Sq);var R0: f32=getR0fromIORs(iridescenceIOR,outsideIOR);var R12: f32=fresnelSchlickGGX(cosTheta1,R0,1.);var R21: f32=R12;var T121: f32=1.0-R12;var phi12: f32=0.0;if (iridescenceIOR<outsideIOR) {phi12=PI;}
|
|
687
|
+
var phi21: f32=PI-phi12;var baseIOR: vec3f=getIORTfromAirToSurfaceR0(clamp(baseF0,vec3f(0.0),vec3f(0.9999)));
|
|
688
|
+
var R1: vec3f=getR0fromIORsVec3(baseIOR,iridescenceIOR);let maxR1: f32=max(R1.r,max(R1.g,R1.b));if (maxR1<1e-6) {return max(vec3f(R12),vec3f(0.0));}
|
|
689
|
+
var R23: vec3f=fresnelSchlickGGXVec3(cosTheta2,R1,vec3f(1.));var phi23: vec3f=vec3f(0.0);if (baseIOR[0]<iridescenceIOR) {phi23[0]=PI;}
|
|
690
|
+
if (baseIOR[1]<iridescenceIOR) {phi23[1]=PI;}
|
|
691
|
+
if (baseIOR[2]<iridescenceIOR) {phi23[2]=PI;}
|
|
692
|
+
var opd: f32=2.0*iridescenceIOR*thinFilmThickness*cosTheta2;var phi: vec3f=vec3f(phi21)+phi23;var R123: vec3f=clamp(R12*R23,vec3f(1e-5),vec3f(0.9999));var r123: vec3f=sqrt(R123);var Rs: vec3f=(T121*T121)*R23/(vec3f(1.0)-R123);var C0: vec3f=R12+Rs;I=C0;var Cm: vec3f=Rs-T121;for (var m: i32=1; m<=2; m++)
|
|
693
|
+
{Cm*=r123;var Sm: vec3f=2.0*evalSensitivity(f32(m)*opd,f32(m)*phi);I+=Cm*Sm;}
|
|
694
|
+
return max(I,vec3f(0.0));}
|
|
695
|
+
#endif
|
|
696
|
+
fn normalDistributionFunction_TrowbridgeReitzGGX(NdotH: f32,alphaG: f32)->f32
|
|
697
|
+
{var a2: f32=alphaG*alphaG;var d: f32=NdotH*NdotH*(a2-1.0)+1.0;return a2/(PI*d*d);}
|
|
698
|
+
#ifdef SHEEN
|
|
699
|
+
fn normalDistributionFunction_CharlieSheen(NdotH: f32,alphaG: f32)->f32
|
|
700
|
+
{var invR: f32=1./alphaG;var cos2h: f32=NdotH*NdotH;var sin2h: f32=1.-cos2h;return (2.+invR)*pow(sin2h,invR*.5)/(2.*PI);}
|
|
701
|
+
#endif
|
|
702
|
+
#ifdef ANISOTROPIC
|
|
703
|
+
fn normalDistributionFunction_BurleyGGX_Anisotropic(NdotH: f32,TdotH: f32,BdotH: f32,alphaTB: vec2f)->f32 {var a2: f32=alphaTB.x*alphaTB.y;var v: vec3f= vec3f(alphaTB.y*TdotH,alphaTB.x *BdotH,a2*NdotH);var v2: f32=dot(v,v);var w2: f32=a2/v2;return a2*w2*w2*RECIPROCAL_PI;}
|
|
704
|
+
#endif
|
|
705
|
+
#ifdef BRDF_V_HEIGHT_CORRELATED
|
|
706
|
+
fn smithVisibility_GGXCorrelated(NdotL: f32,NdotV: f32,alphaG: f32)->f32 {
|
|
707
|
+
#ifdef MOBILE
|
|
708
|
+
var GGXV: f32=NdotL*(NdotV*(1.0-alphaG)+alphaG);var GGXL: f32=NdotV*(NdotL*(1.0-alphaG)+alphaG);return 0.5/(GGXV+GGXL);
|
|
749
709
|
#else
|
|
750
|
-
var
|
|
710
|
+
var a2: f32=alphaG*alphaG;var GGXV: f32=NdotL*sqrt(NdotV*(NdotV-a2*NdotV)+a2);var GGXL: f32=NdotV*sqrt(NdotL*(NdotL-a2*NdotL)+a2);return 0.5/(GGXV+GGXL);
|
|
751
711
|
#endif
|
|
752
|
-
|
|
753
|
-
#
|
|
754
|
-
|
|
712
|
+
}
|
|
713
|
+
#else
|
|
714
|
+
fn smithVisibilityG1_TrowbridgeReitzGGXFast(dot: f32,alphaG: f32)->f32
|
|
715
|
+
{
|
|
716
|
+
#ifdef MOBILE
|
|
717
|
+
return 1.0/(dot+alphaG+(1.0-alphaG)*dot ));
|
|
755
718
|
#else
|
|
756
|
-
|
|
719
|
+
var alphaSquared: f32=alphaG*alphaG;return 1.0/(dot+sqrt(alphaSquared+(1.0-alphaSquared)*dot*dot));
|
|
757
720
|
#endif
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
721
|
+
}
|
|
722
|
+
fn smithVisibility_TrowbridgeReitzGGXFast(NdotL: f32,NdotV: f32,alphaG: f32)->f32
|
|
723
|
+
{var visibility: f32=smithVisibilityG1_TrowbridgeReitzGGXFast(NdotL,alphaG)*smithVisibilityG1_TrowbridgeReitzGGXFast(NdotV,alphaG);return visibility;}
|
|
761
724
|
#endif
|
|
762
|
-
#ifdef
|
|
763
|
-
|
|
725
|
+
#ifdef ANISOTROPIC
|
|
726
|
+
fn smithVisibility_GGXCorrelated_Anisotropic(NdotL: f32,NdotV: f32,TdotV: f32,BdotV: f32,TdotL: f32,BdotL: f32,alphaTB: vec2f)->f32 {var lambdaV: f32=NdotL*length( vec3f(alphaTB.x*TdotV,alphaTB.y*BdotV,NdotV));var lambdaL: f32=NdotV*length( vec3f(alphaTB.x*TdotL,alphaTB.y*BdotL,NdotL));var v: f32=0.5/(lambdaV+lambdaL);return v;}
|
|
764
727
|
#endif
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
fn sampleRadianceAnisotropic(
|
|
768
|
-
alphaG: f32
|
|
769
|
-
,reflectionMicrosurfaceInfos: vec3f
|
|
770
|
-
,reflectionInfos: vec2f
|
|
771
|
-
,geoInfo: geometryInfoAnisoOutParams
|
|
772
|
-
,normalW: vec3f
|
|
773
|
-
,viewDirectionW: vec3f
|
|
774
|
-
,positionW: vec3f
|
|
775
|
-
,noise: vec3f
|
|
776
|
-
,isRefraction: bool
|
|
777
|
-
,ior: f32
|
|
778
|
-
#ifdef REFLECTIONMAP_3D
|
|
779
|
-
,reflectionSampler: texture_cube<f32>
|
|
780
|
-
,reflectionSamplerSampler: sampler
|
|
781
|
-
#else
|
|
782
|
-
,reflectionSampler: texture_2d<f32>
|
|
783
|
-
,reflectionSamplerSampler: sampler
|
|
728
|
+
#ifdef CLEARCOAT
|
|
729
|
+
fn visibility_Kelemen(VdotH: f32)->f32 {return 0.25/(VdotH*VdotH); }
|
|
784
730
|
#endif
|
|
785
|
-
#ifdef
|
|
786
|
-
,
|
|
731
|
+
#ifdef SHEEN
|
|
732
|
+
fn visibility_Ashikhmin(NdotL: f32,NdotV: f32)->f32
|
|
733
|
+
{return 1./(4.*(NdotL+NdotV-NdotL*NdotV));}
|
|
734
|
+
/* NOT USED
|
|
735
|
+
#ifdef SHEEN_SOFTER
|
|
736
|
+
fn l(x: f32,alphaG: f32)->f32
|
|
737
|
+
{var oneMinusAlphaSq: f32=(1.0-alphaG)*(1.0-alphaG);var a: f32=mix(21.5473,25.3245,oneMinusAlphaSq);var b: f32=mix(3.82987,3.32435,oneMinusAlphaSq);var c: f32=mix(0.19823,0.16801,oneMinusAlphaSq);var d: f32=mix(-1.97760,-1.27393,oneMinusAlphaSq);var e: f32=mix(-4.32054,-4.85967,oneMinusAlphaSq);return a/(1.0+b*pow(x,c))+d*x+e;}
|
|
738
|
+
fn lambdaSheen(cosTheta: f32,alphaG: f32)->f32
|
|
739
|
+
{return abs(cosTheta)<0.5 ? exp(l(cosTheta,alphaG)) : exp(2.0*l(0.5,alphaG)-l(1.0-cosTheta,alphaG));}
|
|
740
|
+
fn visibility_CharlieSheen(NdotL: f32,NdotV: f32,alphaG: f32)->f32
|
|
741
|
+
{var G: f32=1.0/(1.0+lambdaSheen(NdotV,alphaG)+lambdaSheen(NdotL,alphaG));return G/(4.0*NdotV*NdotL);}
|
|
787
742
|
#endif
|
|
788
|
-
|
|
789
|
-
#if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)
|
|
790
|
-
var reflectionLOD: f32=getLodFromAlphaG(reflectionMicrosurfaceInfos.x,modifiedAlphaG,geoInfo.NdotVUnclamped);
|
|
791
|
-
#elif defined(LINEARSPECULARREFLECTION)
|
|
792
|
-
var reflectionLOD: f32=getLinearLodFromRoughness(reflectionMicrosurfaceInfos.x,roughness);
|
|
793
|
-
#else
|
|
794
|
-
var reflectionLOD: f32=getLodFromAlphaG(reflectionMicrosurfaceInfos.x,modifiedAlphaG);
|
|
743
|
+
*/
|
|
795
744
|
#endif
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
var
|
|
799
|
-
|
|
800
|
-
|
|
745
|
+
const constant1_FON: f32=0.5f-2.0f/(3.0f*PI);const constant2_FON: f32=2.0f/3.0f-28.0f/(15.0f*PI);fn E_FON_approx(mu: f32,roughness: f32)->f32
|
|
746
|
+
{var sigma: f32=roughness;
|
|
747
|
+
var mucomp: f32=1.0f-mu;var mucomp2: f32=mucomp*mucomp;const Gcoeffs: mat2x2f=mat2x2f(0.0571085289f,-0.332181442f,
|
|
748
|
+
0.491881867f,0.0714429953f);var GoverPi: f32=dot(Gcoeffs*vec2f(mucomp,mucomp2),vec2f(1.0f,mucomp2));return (1.0f+sigma*GoverPi)/(1.0f+constant1_FON*sigma);}
|
|
749
|
+
fn diffuseBRDF_EON(albedo: vec3f,roughness: f32,NdotL: f32,NdotV: f32,LdotV: f32)->vec3f
|
|
750
|
+
{var rho: vec3f=albedo;var sigma: f32=roughness;
|
|
751
|
+
var mu_i: f32=NdotL;
|
|
752
|
+
var mu_o: f32=NdotV;
|
|
753
|
+
var s: f32=LdotV-mu_i*mu_o;
|
|
754
|
+
var sovertF: f32=select(s,s/max(mu_i,mu_o),s>0.0f);
|
|
755
|
+
var AF: f32=1.0f/(1.0f+constant1_FON*sigma);
|
|
756
|
+
var f_ss: vec3f=(rho*RECIPROCAL_PI)*AF*(1.0f+sigma*sovertF);
|
|
757
|
+
var EFo: f32=E_FON_approx(mu_o,sigma);
|
|
758
|
+
var EFi: f32=E_FON_approx(mu_i,sigma);
|
|
759
|
+
var avgEF: f32=AF*(1.0f+constant2_FON*sigma);
|
|
760
|
+
var rho_ms: vec3f=(rho*rho)*avgEF/(vec3f(1.0f)-rho*(1.0f-avgEF));const eps: f32=1.0e-7f;var f_ms: vec3f=(rho_ms*RECIPROCAL_PI)*max(eps,1.0f-EFo)
|
|
761
|
+
* max(eps,1.0f-EFi)
|
|
762
|
+
/ max(eps,1.0f-avgEF);return (f_ss+f_ms);}
|
|
763
|
+
fn diffuseBRDF_Burley(NdotL: f32,NdotV: f32,VdotH: f32,roughness: f32)->f32 {var diffuseFresnelNV: f32=pow5(saturateEps(1.0-NdotL));var diffuseFresnelNL: f32=pow5(saturateEps(1.0-NdotV));var diffuseFresnel90: f32=0.5+2.0*VdotH*VdotH*roughness;var fresnel: f32 =
|
|
764
|
+
(1.0+(diffuseFresnel90-1.0)*diffuseFresnelNL) *
|
|
765
|
+
(1.0+(diffuseFresnel90-1.0)*diffuseFresnelNV);return fresnel/PI;}
|
|
766
|
+
#ifdef SS_TRANSLUCENCY
|
|
767
|
+
fn transmittanceBRDF_Burley(tintColor: vec3f,diffusionDistance: vec3f,thickness: f32)->vec3f {var S: vec3f=1./maxEpsVec3(diffusionDistance);var temp: vec3f=exp((-0.333333333*thickness)*S);return tintColor.rgb*0.25*(temp*temp*temp+3.0*temp);}
|
|
768
|
+
fn computeWrappedDiffuseNdotL(NdotL: f32,w: f32)->f32 {var t: f32=1.0+w;var invt2: f32=1.0/(t*t);return saturate((NdotL+w)*invt2);}
|
|
801
769
|
#endif
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
1.0f);
|
|
770
|
+
#endif
|
|
771
|
+
`;r.ShaderStore.IncludesShadersStoreWGSL[a]||(r.ShaderStore.IncludesShadersStoreWGSL[a]=i),e.s(["pbrBRDFFunctionsWGSL",0,{name:a,shader:i}])},10486,31278,e=>{"use strict";var r=e.i(25044);let a="pbrFragmentReflectionDeclaration",i=`#ifdef REFLECTION
|
|
772
|
+
#ifdef REFLECTIONMAP_3D
|
|
773
|
+
var reflectionSamplerSampler: sampler;var reflectionSampler: texture_cube<f32>;
|
|
774
|
+
#ifdef LODBASEDMICROSFURACE
|
|
808
775
|
#else
|
|
809
|
-
|
|
810
|
-
if (isRefraction) {reflectionCoords=double_refract(-viewDirectionW,bentNormal,ior);} else {reflectionCoords=reflect(-viewDirectionW,bentNormal);}
|
|
811
|
-
reflectionCoords=(uniforms.reflectionMatrix*vec4f(reflectionCoords,0.f)).xyz;
|
|
812
|
-
#ifdef REFLECTIONMAP_OPPOSITEZ
|
|
813
|
-
reflectionCoords.z*=-1.0f;
|
|
776
|
+
var reflectionLowSamplerSampler: sampler;var reflectionLowSampler: texture_cube<f32>;var reflectionHighSamplerSampler: sampler;var reflectionHighSampler: texture_cube<f32>;
|
|
814
777
|
#endif
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
accumulatedRadiance+=vec3f(sample_weight)*fromRGBD(radianceSample);
|
|
818
|
-
#elif defined(GAMMAREFLECTION)
|
|
819
|
-
accumulatedRadiance+=vec3f(sample_weight)*toLinearSpaceVec3(radianceSample.rgb);
|
|
820
|
-
#else
|
|
821
|
-
accumulatedRadiance+=vec3f(sample_weight)*radianceSample.rgb;
|
|
778
|
+
#ifdef USEIRRADIANCEMAP
|
|
779
|
+
var irradianceSamplerSampler: sampler;var irradianceSampler: texture_cube<f32>;
|
|
822
780
|
#endif
|
|
823
|
-
|
|
824
|
-
|
|
781
|
+
#else
|
|
782
|
+
var reflectionSamplerSampler: sampler;var reflectionSampler: texture_2d<f32>;
|
|
783
|
+
#ifdef LODBASEDMICROSFURACE
|
|
784
|
+
#else
|
|
785
|
+
var reflectionLowSamplerSampler: sampler;var reflectionLowSampler: texture_2d<f32>;var reflectionHighSamplerSampler: sampler;var reflectionHighSampler: texture_2d<f32>;
|
|
825
786
|
#endif
|
|
826
|
-
|
|
787
|
+
#ifdef USEIRRADIANCEMAP
|
|
788
|
+
var irradianceSamplerSampler: sampler;var irradianceSampler: texture_2d<f32>;
|
|
827
789
|
#endif
|
|
828
790
|
#endif
|
|
829
|
-
#ifdef
|
|
830
|
-
|
|
831
|
-
{let dielectricIblFresnel: f32=getReflectanceFromBRDFWithEnvLookup(vec3f(reflectance.F0),vec3f(reflectance.F90),environmentBrdf).r;let dielectricECF: f32=1.0+reflectance.F0*(1.0/environmentBrdf.y-1.0);return clamp(dielectricIblFresnel*dielectricECF,0.0,1.0);}
|
|
832
|
-
fn computeConductorIblFresnel(reflectance: ReflectanceParams,environmentBrdf: vec3f)->vec3f
|
|
833
|
-
{
|
|
834
|
-
#if (CONDUCTOR_SPECULAR_MODEL==CONDUCTOR_SPECULAR_MODEL_OPENPBR)
|
|
835
|
-
let openPBRBrdf: vec3f=vec3f(environmentBrdf.xy,environmentBrdf.z/BRDF_Z_SCALE);let b: vec3f =getF82B(reflectance.coloredF0,reflectance.coloredF90);let E_F82: vec3f=getF82DirectionalAlbedo(reflectance.coloredF0,vec3f(1.0),b,openPBRBrdf);let F_avg: vec3f=getF82AverageFresnel(reflectance.coloredF0,b);let ECF: vec3f =vec3f(1.0)+F_avg*(vec3f(1.0)/openPBRBrdf.y-vec3f(1.0));return clamp(E_F82*ECF,vec3f(0.0),vec3f(1.0));
|
|
791
|
+
#ifdef REFLECTIONMAP_SKYBOX
|
|
792
|
+
varying vPositionUVW: vec3f;
|
|
836
793
|
#else
|
|
837
|
-
|
|
794
|
+
#if defined(REFLECTIONMAP_EQUIRECTANGULAR_FIXED) || defined(REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED)
|
|
795
|
+
varying vDirectionW: vec3f;
|
|
838
796
|
#endif
|
|
839
|
-
}
|
|
840
797
|
#endif
|
|
841
|
-
`;r.ShaderStore.IncludesShadersStoreWGSL[t]||(r.ShaderStore.IncludesShadersStoreWGSL[t]=o),e.s(["openpbrIblFunctionsWGSL",0,{name:t,shader:o}],60533)},76350,e=>{"use strict";var r=e.i(47150);let a="openpbrSubsurfaceLayerData",i=`var subsurface_weight: f32=uniforms.vSubsurfaceWeight;var subsurface_color: vec3f=uniforms.vSubsurfaceColor.rgb;var subsurface_radius: f32=uniforms.vSubsurfaceRadius;var subsurface_radius_scale: vec3f=uniforms.vSubsurfaceRadiusScale;var subsurface_scatter_anisotropy: f32=clamp(uniforms.vSubsurfaceScatterAnisotropy,-0.9999f,0.9999f);
|
|
842
|
-
#ifdef SUBSURFACE_WEIGHT
|
|
843
|
-
let subsurfaceWeightFromTexture: vec4f=TEXRD(subsurfaceWeightSampler,subsurfaceWeightSamplerSampler,fragmentInputs.vSubsurfaceWeightUV+uvOffset);
|
|
844
798
|
#endif
|
|
845
|
-
|
|
846
|
-
|
|
799
|
+
`;r.ShaderStore.IncludesShadersStoreWGSL[a]||(r.ShaderStore.IncludesShadersStoreWGSL[a]=i),e.s(["pbrFragmentReflectionDeclarationWGSL",0,{name:a,shader:i}],10486);let f="pbrIBLFunctions",n=`#if defined(REFLECTION) || defined(SS_REFRACTION)
|
|
800
|
+
fn getLodFromAlphaG(cubeMapDimensionPixels: f32,microsurfaceAverageSlope: f32)->f32 {var microsurfaceAverageSlopeTexels: f32=cubeMapDimensionPixels*microsurfaceAverageSlope;var lod: f32=log2(microsurfaceAverageSlopeTexels);return lod;}
|
|
801
|
+
fn getLinearLodFromRoughness(cubeMapDimensionPixels: f32,roughness: f32)->f32 {var lod: f32=log2(cubeMapDimensionPixels)*roughness;return lod;}
|
|
847
802
|
#endif
|
|
848
|
-
#
|
|
849
|
-
|
|
803
|
+
#if defined(ENVIRONMENTBRDF) && defined(RADIANCEOCCLUSION)
|
|
804
|
+
fn environmentRadianceOcclusion(ambientOcclusion: f32,NdotVUnclamped: f32)->f32 {var temp: f32=NdotVUnclamped+ambientOcclusion;return saturate(temp*temp-1.0+ambientOcclusion);}
|
|
850
805
|
#endif
|
|
851
|
-
#
|
|
852
|
-
|
|
853
|
-
subsurface_weight*=subsurfaceWeightFromTexture.a;
|
|
854
|
-
#else
|
|
855
|
-
subsurface_weight*=subsurfaceWeightFromTexture.r;
|
|
806
|
+
#if defined(ENVIRONMENTBRDF) && defined(HORIZONOCCLUSION)
|
|
807
|
+
fn environmentHorizonOcclusion(view: vec3f,normal: vec3f,geometricNormal: vec3f)->f32 {var reflection: vec3f=reflect(view,normal);var temp: f32=saturate(1.0+1.1*dot(reflection,geometricNormal));return temp*temp;}
|
|
856
808
|
#endif
|
|
809
|
+
#if defined(LODINREFLECTIONALPHA) || defined(SS_LODINREFRACTIONALPHA)
|
|
810
|
+
fn UNPACK_LOD(x: f32)->f32 {return (1.0-x)*255.0;}
|
|
811
|
+
fn getLodFromAlphaGNdotV(cubeMapDimensionPixels: f32,alphaG: f32,NdotV: f32)->f32 {var microsurfaceAverageSlope: f32=alphaG;microsurfaceAverageSlope*=sqrt(abs(NdotV));return getLodFromAlphaG(cubeMapDimensionPixels,microsurfaceAverageSlope);}
|
|
857
812
|
#endif
|
|
858
|
-
|
|
859
|
-
#
|
|
860
|
-
|
|
813
|
+
`;r.ShaderStore.IncludesShadersStoreWGSL[f]||(r.ShaderStore.IncludesShadersStoreWGSL[f]=n),e.s(["pbrIBLFunctionsWGSL",0,{name:f,shader:n}],31278)},71184,71047,e=>{"use strict";var r=e.i(25044);let a="samplerFragmentDeclaration",i=`#ifdef _DEFINENAME_
|
|
814
|
+
#if _DEFINENAME_DIRECTUV==1
|
|
815
|
+
#define v_VARYINGNAME_UV vMainUV1
|
|
816
|
+
#elif _DEFINENAME_DIRECTUV==2
|
|
817
|
+
#define v_VARYINGNAME_UV vMainUV2
|
|
818
|
+
#elif _DEFINENAME_DIRECTUV==3
|
|
819
|
+
#define v_VARYINGNAME_UV vMainUV3
|
|
820
|
+
#elif _DEFINENAME_DIRECTUV==4
|
|
821
|
+
#define v_VARYINGNAME_UV vMainUV4
|
|
822
|
+
#elif _DEFINENAME_DIRECTUV==5
|
|
823
|
+
#define v_VARYINGNAME_UV vMainUV5
|
|
824
|
+
#elif _DEFINENAME_DIRECTUV==6
|
|
825
|
+
#define v_VARYINGNAME_UV vMainUV6
|
|
861
826
|
#else
|
|
862
|
-
|
|
827
|
+
varying v_VARYINGNAME_UV: vec2f;
|
|
863
828
|
#endif
|
|
864
|
-
|
|
829
|
+
var _SAMPLERNAME_SamplerSampler: sampler;var _SAMPLERNAME_Sampler: texture_2d<f32>;
|
|
865
830
|
#endif
|
|
866
|
-
|
|
867
|
-
|
|
831
|
+
`;r.ShaderStore.IncludesShadersStoreWGSL[a]||(r.ShaderStore.IncludesShadersStoreWGSL[a]=i),e.s(["samplerFragmentDeclarationWGSL",0,{name:a,shader:i}],71184);let f="reflectionFunction",n=`fn computeFixedEquirectangularCoords(worldPos: vec4f,worldNormal: vec3f,direction: vec3f)->vec3f
|
|
832
|
+
{var lon: f32=atan2(direction.z,direction.x);var lat: f32=acos(direction.y);var sphereCoords: vec2f= vec2f(lon,lat)*RECIPROCAL_PI2*2.0;var s: f32=sphereCoords.x*0.5+0.5;var t: f32=sphereCoords.y;return vec3f(s,t,0); }
|
|
833
|
+
fn computeMirroredFixedEquirectangularCoords(worldPos: vec4f,worldNormal: vec3f,direction: vec3f)->vec3f
|
|
834
|
+
{var lon: f32=atan2(direction.z,direction.x);var lat: f32=acos(direction.y);var sphereCoords: vec2f= vec2f(lon,lat)*RECIPROCAL_PI2*2.0;var s: f32=sphereCoords.x*0.5+0.5;var t: f32=sphereCoords.y;return vec3f(1.0-s,t,0); }
|
|
835
|
+
fn computeEquirectangularCoords(worldPos: vec4f,worldNormal: vec3f,eyePosition: vec3f,reflectionMatrix: mat4x4f)->vec3f
|
|
836
|
+
{var cameraToVertex: vec3f=normalize(worldPos.xyz-eyePosition);var r: vec3f=normalize(reflect(cameraToVertex,worldNormal));r= (reflectionMatrix* vec4f(r,0)).xyz;var lon: f32=atan2(r.z,r.x);var lat: f32=acos(r.y);var sphereCoords: vec2f= vec2f(lon,lat)*RECIPROCAL_PI2*2.0;var s: f32=sphereCoords.x*0.5+0.5;var t: f32=sphereCoords.y;return vec3f(s,t,0);}
|
|
837
|
+
fn computeSphericalCoords(worldPos: vec4f,worldNormal: vec3f,view: mat4x4f,reflectionMatrix: mat4x4f)->vec3f
|
|
838
|
+
{var viewDir: vec3f=normalize((view*worldPos).xyz);var viewNormal: vec3f=normalize((view* vec4f(worldNormal,0.0)).xyz);var r: vec3f=reflect(viewDir,viewNormal);r= (reflectionMatrix* vec4f(r,0)).xyz;r.z=r.z-1.0;var m: f32=2.0*length(r);return vec3f(r.x/m+0.5,1.0-r.y/m-0.5,0);}
|
|
839
|
+
fn computePlanarCoords(worldPos: vec4f,worldNormal: vec3f,eyePosition: vec3f,reflectionMatrix: mat4x4f)->vec3f
|
|
840
|
+
{var viewDir: vec3f=worldPos.xyz-eyePosition;var coords: vec3f=normalize(reflect(viewDir,worldNormal));return (reflectionMatrix* vec4f(coords,1)).xyz;}
|
|
841
|
+
fn computeCubicCoords(worldPos: vec4f,worldNormal: vec3f,eyePosition: vec3f,reflectionMatrix: mat4x4f)->vec3f
|
|
842
|
+
{var viewDir: vec3f=normalize(worldPos.xyz-eyePosition);var coords: vec3f=reflect(viewDir,worldNormal);coords= (reflectionMatrix* vec4f(coords,0)).xyz;
|
|
843
|
+
#ifdef INVERTCUBICMAP
|
|
844
|
+
coords.y*=-1.0;
|
|
868
845
|
#endif
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
846
|
+
return coords;}
|
|
847
|
+
fn computeCubicLocalCoords(worldPos: vec4f,worldNormal: vec3f,eyePosition: vec3f,reflectionMatrix: mat4x4f,reflectionSize: vec3f,reflectionPosition: vec3f)->vec3f
|
|
848
|
+
{var viewDir: vec3f=normalize(worldPos.xyz-eyePosition);var coords: vec3f=reflect(viewDir,worldNormal);coords=parallaxCorrectNormal(worldPos.xyz,coords,reflectionSize,reflectionPosition);coords=(reflectionMatrix* vec4f(coords,0)).xyz;
|
|
849
|
+
#ifdef INVERTCUBICMAP
|
|
850
|
+
coords.y*=-1.0;
|
|
872
851
|
#endif
|
|
873
|
-
|
|
874
|
-
|
|
852
|
+
return coords;}
|
|
853
|
+
fn computeProjectionCoords(worldPos: vec4f,view: mat4x4f,reflectionMatrix: mat4x4f)->vec3f
|
|
854
|
+
{return (reflectionMatrix*(view*worldPos)).xyz;}
|
|
855
|
+
fn computeSkyBoxCoords(positionW: vec3f,reflectionMatrix: mat4x4f)->vec3f
|
|
856
|
+
{return (reflectionMatrix* vec4f(positionW,1.)).xyz;}
|
|
857
|
+
#ifdef REFLECTION
|
|
858
|
+
fn computeReflectionCoords(worldPos: vec4f,worldNormal: vec3f)->vec3f
|
|
859
|
+
{
|
|
860
|
+
#ifdef REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED
|
|
861
|
+
var direction: vec3f=normalize(fragmentInputs.vDirectionW);return computeMirroredFixedEquirectangularCoords(worldPos,worldNormal,direction);
|
|
875
862
|
#endif
|
|
876
|
-
#ifdef
|
|
877
|
-
|
|
863
|
+
#ifdef REFLECTIONMAP_EQUIRECTANGULAR_FIXED
|
|
864
|
+
var direction: vec3f=normalize(fragmentInputs.vDirectionW);return computeFixedEquirectangularCoords(worldPos,worldNormal,direction);
|
|
878
865
|
#endif
|
|
879
|
-
#ifdef
|
|
880
|
-
|
|
866
|
+
#ifdef REFLECTIONMAP_EQUIRECTANGULAR
|
|
867
|
+
return computeEquirectangularCoords(worldPos,worldNormal,scene.vEyePosition.xyz,uniforms.reflectionMatrix);
|
|
881
868
|
#endif
|
|
882
|
-
#ifdef
|
|
883
|
-
|
|
869
|
+
#ifdef REFLECTIONMAP_SPHERICAL
|
|
870
|
+
return computeSphericalCoords(worldPos,worldNormal,scene.view,uniforms.reflectionMatrix);
|
|
884
871
|
#endif
|
|
885
|
-
#ifdef
|
|
886
|
-
|
|
872
|
+
#ifdef REFLECTIONMAP_PLANAR
|
|
873
|
+
return computePlanarCoords(worldPos,worldNormal,scene.vEyePosition.xyz,uniforms.reflectionMatrix);
|
|
887
874
|
#endif
|
|
888
|
-
#ifdef
|
|
889
|
-
#ifdef
|
|
890
|
-
|
|
875
|
+
#ifdef REFLECTIONMAP_CUBIC
|
|
876
|
+
#ifdef USE_LOCAL_REFLECTIONMAP_CUBIC
|
|
877
|
+
return computeCubicLocalCoords(worldPos,worldNormal,scene.vEyePosition.xyz,uniforms.reflectionMatrix,uniforms.vReflectionSize,uniforms.vReflectionPosition);
|
|
891
878
|
#else
|
|
892
|
-
|
|
879
|
+
return computeCubicCoords(worldPos,worldNormal,scene.vEyePosition.xyz,uniforms.reflectionMatrix);
|
|
893
880
|
#endif
|
|
894
|
-
transmission_color*=uniforms.vTransmissionColorInfos.y;
|
|
895
881
|
#endif
|
|
896
|
-
#ifdef
|
|
897
|
-
|
|
882
|
+
#ifdef REFLECTIONMAP_PROJECTION
|
|
883
|
+
return computeProjectionCoords(worldPos,scene.view,uniforms.reflectionMatrix);
|
|
898
884
|
#endif
|
|
899
|
-
#
|
|
900
|
-
|
|
885
|
+
#ifndef REFLECTIONMAP_CUBIC
|
|
886
|
+
#ifdef REFLECTIONMAP_SKYBOX
|
|
887
|
+
return computeSkyBoxCoords(fragmentInputs.vPositionUVW,uniforms.reflectionMatrix);
|
|
901
888
|
#endif
|
|
902
|
-
#ifdef TRANSMISSION_DISPERSION_SCALE
|
|
903
|
-
transmission_dispersion_scale*=transmissionDispersionScaleFromTexture.r;
|
|
904
889
|
#endif
|
|
905
|
-
|
|
890
|
+
#ifdef REFLECTIONMAP_EXPLICIT
|
|
891
|
+
return vec3f(0,0,0);
|
|
892
|
+
#endif
|
|
893
|
+
}
|
|
894
|
+
#endif
|
|
895
|
+
`;r.ShaderStore.IncludesShadersStoreWGSL[f]||(r.ShaderStore.IncludesShadersStoreWGSL[f]=n),e.s(["reflectionFunctionWGSL",0,{name:f,shader:n}],71047)},38267,e=>{"use strict";var r=e.i(25044);let a="sceneUboDeclaration",i=`struct Scene {viewProjection : mat4x4<f32>,
|
|
896
|
+
#ifdef MULTIVIEW
|
|
897
|
+
viewProjectionR : mat4x4<f32>,
|
|
898
|
+
#endif
|
|
899
|
+
view : mat4x4<f32>,
|
|
900
|
+
projection : mat4x4<f32>,
|
|
901
|
+
vEyePosition : vec4<f32>,
|
|
902
|
+
inverseProjection : mat4x4<f32>,};
|
|
903
|
+
#define SCENE_UBO
|
|
904
|
+
var<uniform> scene : Scene;
|
|
905
|
+
`;r.ShaderStore.IncludesShadersStoreWGSL[a]||(r.ShaderStore.IncludesShadersStoreWGSL[a]=i),e.s(["sceneUboDeclarationWGSL",0,{name:a,shader:i}])},27572,e=>{"use strict";var r=e.i(25044),a=e.i(96045),i=e.i(41588),f=e.i(71184),n=e.i(757),t=e.i(65503),o=e.i(10486),c=e.i(38267),s=e.i(86165),l=e.i(47622),d=e.i(31278),v=e.i(71047),m=e.i(41690),u=e.i(32923),p=e.i(63122),S=e.i(76850),E=e.i(24186),R=e.i(24095);let I="geometryPixelShader",N=`#ifdef BUMP
|
|
906
906
|
varying vWorldView0: vec4f;varying vWorldView1: vec4f;varying vWorldView2: vec4f;varying vWorldView3: vec4f;varying vNormalW: vec3f;
|
|
907
907
|
#else
|
|
908
908
|
varying vNormalV: vec3f;
|