From e8e794fbe00ba5a267661e7a3bec7d5715069066 Mon Sep 17 00:00:00 2001 From: Rob Kelly Date: Thu, 4 Sep 2025 00:16:41 -0600 Subject: [PATCH] Grunk visual tweaks --- assets/materials/grunk_jittery.material | Bin 1222 -> 1228 bytes assets/materials/gunk_overlay.material | Bin 1052 -> 1088 bytes assets/materials/gunk_overlay_lowrez.material | Bin 1053 -> 1094 bytes assets/npc/shambler/shambler.material | Bin 1253 -> 1255 bytes levels/sandbox/editor_visual_demo.tscn | 11 ++++++++--- src/world/world.tscn | 2 +- 6 files changed, 9 insertions(+), 4 deletions(-) diff --git a/assets/materials/grunk_jittery.material b/assets/materials/grunk_jittery.material index b0e848160deb483d5ac99fe7e5cf1827b2a5d699..35e052926c59d7ad6caf6b02792252ad6b9dbb20 100644 GIT binary patch literal 1228 zcmV;-1T*_mQ$s@n000005C8zN3;+PM1ONaiwJ-f(u?tlt0G6?$MBo@D9l(qRLl_dK za7dB>jgtUOiExiRFyr%B&`@h+D+k%zb?w%gB>R3D29T6w!oHDO?hgE~j6_}f$+Ebv zwTrw?0e=970FeO8By0zKwN!PCncVjF-@xnKh&?W8kzsE~I<@SvV=5{9kKl_V%9k;n z|6g7?+GvN(l_MwN-7B-V{r|u#?`cMDv1%&CHT^GeQ^g``vo{xf=fZZhI{6@#ZXs{9 zm;Y1v@AD8)Ty&i95#_;um&+G<>wCeAJ=2W;4E_@k@CWk2cBjov8oOh*F~6~axwA31 zlEqs$d;B!l-A{8hXlZ24@nUmX!vz>@t5Is%o8aKs%F&zaG=3;I^TY>;#kp_mCuwe;B(3Wkr)oX(Fp}OWLMv6^_3yhNZUaq3ftghSr zwni5)YQGl$7q}oIryQZNQje8HZ9#6!%Hi+=Go%?^&{p14D8nqh%!O!9u^q|hQcv=p zXv~aEhlPtpjy<=|$cv&{Nbc-ql9p{F4Kmv(a-9^y)p}-{N*iShp(o`AMGTw8s z+de=ufO=w9{5?EZl56Ku>8N;$OUi1s0+Pdn;)IE-$ZE9`@|Wm2i4iIs9w9eZ4;)l} zj6}#`b6KgmnBZ7FS42J{t|qG=|3iS_`Tya1KSp*`9(Go%A2gTh*Ky+HiHa;sc68vd z;lE7iziNQa4lNuY!Gj-w00933@VF?&qL=G2^)ia#MZ$$D-)7Wmkeo(XYd97*e~aJT zpnT(4;4E)7XlYnh4o-mms6n|>Xhvp4l7b`|4qyV2F{SBN>$1ad#Kf*llxiMynAiE!SkjD z9*PqYhd+dzw2#$mbk`_S#kePXVqGc2nkuRdCljylVY}7ILrK$vs<$H%FHM@wV+{2J zA)3>!BqlX<{N^}<+}|(|Kv?J;5PKamv<;$rO_g@0Dnd7E#(n>gk22yvBejfr=x*fm`bzf+v?A1^u*XP^ti!v0_e!d)S q-DM^e+O|kC0BZWV&$B^R0Zy+7qhXxD^XXNt_L<33EQ=jdQ$s_a8Bitw literal 1222 zcmV;%1UdUsQ$s@n000005C8y43;+PG1ONaiwJ-f(Ned+<046b^MBo@D9T=RPVabky6j;;3J!0+UEy~b*6XxTASa(g9BsbyKvdkXa{|A1XPcv4&t_h25`d{Ftd&M5k-eho|46UQr$p@))3|pg? z`+tT1IuEggWk-zg% zv)8XWYwfG<`Y?@MUGp`$HMq1~+KsYikHUjrEJ<&&tNnW1j4z`SW^0$b`QB(_(s<$2 zN{-=t*T&2BlbVzau}Q1LW~>)(y4d8t)?M6V;WIuAbz{G&!6zf!^66bj9h@ub!nfd; zZK*_2aI$uTJKWmUN+_PGl`30VHo^OPtY{}j3QYz}OObfXeM2^@>}6{o-{=CywXem0 z1}=n1Cq!hT++SG8RHG)n9_{Shi~%w5d&xOR_o@gEFZK1Ix}d@ z$az`u=Zvf$%WAT18xS1pMnwwiXWOQ5KSpNYC0PsJ6iHA@fg7S!Z8O8A9qT||(b%bLv^SfMhgSN=Apz+}vRb_K) z0x1!8T(MFUfc>aZxl(9GW~3kmNirO80ueGQasv|JLP;EDA&U?}MnsS_sbpskWeE2{ zKcfd?R*22D0eoJzi{}aEMTI-eVfPEf+XDM(zocnkqc>H(mD*opfMnAh2`-_2uuY9N z@_w-mgU3q|a;7^^Q?B{lh{c7nUC6H5W11k?(?MuYaWn;E9?oA%6f%I-bA(L1)JwcF zCLT)Nr4zHy@4c0)5Z0Z7LqJVleC~+WiDbbS5&6JNc_FcM{%@n7v6ht*P0|oB4>?O$ zI@A~qJkKvAi}i$eE%~E2ZFdEH*X-Z}pd!0!O{8PvkN#^NC}AYCK^Yo7H*dpcc|jg* z0^c3e`63{dIryq}+qJxjJ~jvTMUA@v<0w@rKSL0$25Gq;0n96B>%BZLJdjy5Y;*pK z8KTWl-F94SPC~}#!xN%QnMy}dojyr>O*+%CIxjS7+NRRh5FKj)7J6Q(Xgko1!%B*% zsl>NJyX02Mzyo1;*_`49fsp_ZYipRaGopg>q~>E-^@jrCk#4+QrGX$k@&RF0a8;#L*ThRzW@LL diff --git a/assets/materials/gunk_overlay.material b/assets/materials/gunk_overlay.material index 502458383b5da4dbee25770895e102ea411dd579..56583fea88a3de149721c5de7da0f54aed306aeb 100644 GIT binary patch literal 1088 zcmV-G1i$-IQ$s@n000005C8y03IG5o1ONaiwJ-f(MG5sF05-0hNbs^I9n?W*&J#X{ zH7gF0otZa3Ff47et{E(=D{tc&6eLyP;fv z`>*zhKi>E;1$F>_0FD4$Yz+QKd9F>TyxT{wh8t5`KTqCxZD+OrDQ_3;q<3xoPvH5| z6^^rZmx?XNxI0fa{y*UPHmlOFXXZBA-2anvc~YSEWL0_B)^M~rc2culZ0&*;_xe=-Ki?l#MYaBOZ`>q#%gwR5Gnf$S&h zy5hd7&jV96=kiwjW^4nd=*`t?@yZU=`olPt+dz9`M6Z@+*>&BbGwsnlyFVPO{9@jn z)No{hFpt$zjH%b5mq;&hRlyCro!gUFeo^KaWBJA0>Kc^kwe)`R_N)iaW%TA4SL)+kFbZ~+!)Kw^h1b@ zWrzPNDk=_{29O>oKDSZCn07ISUBDE6vcl4v-P>%L2e-3RT|7S|ek7nGWDv3$VHm!+ z+2EjoO_sv-!^3~k&Wl0lRkIVK$ym64_|%xmf`l%z8>XEhFg!0AjxY>cKv=Nh_5TVo z=@SF>YC(me3zqElYsis9M+PD`R;(bPX?4~{S~lU4oH?hdqw208NvBrnm@4SZKAB9W zlLakRnkoug{YD#@>WR(H*M1(wvYmDtjrh-EQc@s6_Me30B>{lPs8KmnNJeBvl7b}5 z0dNA5DXN+W5`Z)zjIs(MB7sDLLkdbtN?8tOEZ9_IkL#IP;4HGDMV&ywJ1{>XV3Y^Y zAkQ!=4&05+ns6Jy~=D^Z^ zQvY6af1B`GsJdSfGaknW-K9{Naz#Rpe}&17TO~h?y@%SE?1R%e)DkCU&oij}V%8;K z7*U?1N8Bu&j9~vQIXX*P!U&3xgNSjwy92z1NTeIx1c*PdM0VutS-C7I^Z#9pAVk{A ze5?!p)Ic*mXjAy{NcTbnGixexdlSjm5Qn;O;d1S!Qs3B$EXiu*IHz9|NnFCcW(qNh&t*a@6GAXR z2K&Gc>%nk2+wvf&?+#53l=zv&LVc&ifl>HzpKQrhKvPYG&odZz@=H{>qEY&tpza+~ GQ$s_#a}(77 literal 1052 zcmV+%1mpWsQ$s@n000005C8y_2><{D1ONaiwJ-f(lnB)y0H*AfN$}7n9pq#x50`;j zSXm7YG@;3qys#pe1ZS~qFu>8s-WFtU($pr>sq1|A6P(bjrJZ^lG>JAuYlRuCeA|P_$K=lPP$O>vzkcD9k zH>YL!gH1aeD1ba4CMxK0-%P?DhI3;qJJSpsGL{(rhlH>$3WVF)t4_us+1+;878sW~Jw81VR5IBsCPNX1A&Hj<4nDehHF&Y$w5((z zgk zf)$|78cEA1Op>z(HB+o^8d*X$D|Mnt%|@M0C)5OOWtyy+t$w5pT=m3e=W9QYV%bi+ zk$Cl#nJF^v5`aV{iqc3bfdmpsj!C65 z%>i1vxKi4YFrG`>LL9A)gjg8V4bXeRKAJ1%G6pT^NUSG(ni7G#QPQo)(OqDO?wHcv zVzf1@U{*Xf1Puq@kO7R*7c=1Iwr;`6eV;|U#)Oq6vUTDG-BY9VhK5f%MR7-g->C_8 zE_ltU*0It!AAs_VoAWR3>wFk)m(Yf=ctPqnmS#}~2@(RaOC$8QAB{`cHpESMZtSIb zRg*q&4vPTi)Cn|CRB0{@uk)bI=-LZefbrZioBdw2(mfk5Z#wDIF;)$s3fW3Gg9#YR zU@hp})00VA$mT!hnjt_+)_l4KzRo}il9QuwzojcSg64Y^8K{ZWSLm~AyAV!WQx8R) zL?pM>@A3Fm-DA=?f~o-(WtFiR-Y!R*=6h30;^21EUjJ^>dz#`E%!lrLnij>v|_8G8#zuz1Ft8@?R@$DL^^MTl%v2I?Cm4wBMh>)Fz)a1!Id W$1_GgdA%yL(Ww6N1osY7Q$s@n%Jz`} diff --git a/assets/materials/gunk_overlay_lowrez.material b/assets/materials/gunk_overlay_lowrez.material index 6602549e90ce7659d0fa6b7c94373c718cc57bf3..2343ab00dd3fcecc9c76c5ffa5d5604080191bfb 100644 GIT binary patch literal 1094 zcmV-M1iAZCQ$s@n000005C8yJ3IG5u1ONaiwJ-f(SP3N|07kBwMBo@D9Z=lH6%gSB z;gBS;UYHS(VR&*eLmm;gkrjQi-Gl7SZPe{_#rF>*m zN#;?&_@yi(v>7KY*4(mEZiDvOIxF@+!MR6HxY2RQB^4Z0hdb<;(Pnzg>%&6BDX1l6TG>I3;X}Cq^Eb_~T*T|$9HZ^S25J3~-0&x*JolZeIu;8!( z=GxKYLgN#G z=5zuA;qv)cC{eOR1(hQ{9yGvU;)_w(wVHy_#3;^`m}Owhh)Xk;%uM8wWm%&W7)caM zBr?iTSx4enMZUIjo2+h)HKSY4l7b}50Z;-V zW2lNA5@0kTOtK0hA~KQSkb;tuQkDZ|kk~*IpW{8))JuF7`8?WDeGESY^kj}9Okppn z3bc2;*9MTcPW!K6lroLjU56|J!b*pavvj1vzNL_xV4d>ZM`t+Uk~i#P)(rr$o`*(I zzs!WF%|8ZTM5%f|qPoW&5+g7qfSx-DtqvRim#khW`+X4Ts{dv2ohy{`WOEnU)*bnXv=*5BmJ>u_hbjA+VNrz2L3eE$d zbi@cG00I$ZXQ22-IJUAkEIASsXa@pi%R&8n%*Y|WLWa@Jcmg&ZSerZQ>RFB~X!28c z9l?S;Hu$^?9?C$aJgBws!=!^Df}TATS<~s%E5&0uT=3f@6GHXBm+1Z0-a+06J}sSd%+WC4j;;d zD-#J|sEz9Z9LvaHb(dyBaNNBzl_aq+%ZK`45=Ta%BuZx6szRDzB8;AKv6D|m1t=Ph MpZeDg15#5%Lj|4)f&c&j literal 1053 zcmV+&1mgQrQ$s@n000005C8zD2><{E1ONaiwJ-f(rwH920LJW;MgX%U9o9>7EHd+tJb7?KNd`Z7uq% z9U{%WzfA#h0Cxa~0Kb4=$}&QmanfSVEi2_VXrHaKV*gRjL2|;)R{Ed7ua!OhBIS8{ zEbr#ILGJ$pel7b@$#J||CRzJ`a_vU>!yBY2XUbT=df$XtosTiw)n@yj!T$?qVe#0| zA(27of5|75mM<(}IYLdve*^ymnEU||7~?3dY|58P%RiM9O{UEj#ckb5=Gx6D+uJnV zN!m**_AHzo##~FFTGmzjB08<|!Z|r58}KG?Waj!&$i18=#QOPkE`PMjZn^QyNi{96 zhjy7|`SJ!WV%yyg1=K@3l+{+VhF$p6 zq@5ETIus=>Lh{Y_j(W5DayR5Fc}(1fBmSqPphR38KYF-$%to&*%(i85XbeB;X}Cq^ zEHcc5*T|;{9}t|Ded>$^nmH*{q_BWf;Zjk!Zmd?T84(~nxCn&Gfl4OCOw1J{$j6S* ze*uBHbd*8}ami`9cC2Llr?3FT|6joccWB_KSa4P=87r6S|1dPf!^4mqFjNr4r1)YZ z?3Q{2qXtvFK{4CF8WW>#N;WrIk1ND`&@cy++BLT##9ki zDZzJw-?88fqN%IBif@3h0iqZ3koNDDd&-4FlD|~`to=Lhs3(wz-xBMMh=n@e?ng5v+?raXRWjQ011JI+R%OMWH^w#2G06+$URR6#(Rk X@bir6PX0I*&}b(8RZ!&)Qd2`iC!_)z diff --git a/assets/npc/shambler/shambler.material b/assets/npc/shambler/shambler.material index 443f9083dba1654f1bd02e967f651b85c1c028ef..6dd35b5f071dafe0c8343d4697dd448ae05af8dc 100644 GIT binary patch literal 1255 zcmVV36Zt(~bld<(Onr zIhn?wcx~KXL)l5mnrhPeR5R8JUtQJYzV>Z=SE|S@md^-Pt{WT9 zPJ!baV(Zq}nssSe*}5BL<=_Md-&msH;|CSRJ9z9K@ z0Ux*Accz4?rS^eZX)%jgUTGJ$EM_lT3qkDg{E$b4#4NerR5KRS+F}@u)$l(6OlrpW z!?&4Lx-eCcd!?AujZqRl7nIE`N`iUWz#4C{qn&(bY;Mt7k~}SUs&XC5<)uT#zLRPi zR|_*&s*ZMr5|omEq6Ow+Iz2CXa!4t1aI$R3$fn+8FPj<^84;QjCQ4*Lf`Wp2{3LKb zLd5HoLkf}QsF7qx$dvI65rN2%{0W3S6k$0`W^_JeN=~Pfh`-3t5K#x5*Z<38a3{#k zi^EM&(2khw_1g>$5!E;`a$|#r4F6wB1OC5QYIFd(ND%-4!vmGIM=(GEp8yAx$A;h=?GPk%A;OrZrJGFHx917csD+?;(;BPtfIQ57f-Z ztL@P|KcXoABE1Bdlexbz<;=^J<$yaRmbm+r^*r_EqzI^YgRLtIB~%VMg+W}iyM@IF zMIV#tzAXXAOm35}9|4qrLz+J{3kqH}uQHZ{R@a1}f1m=|anQO4IKib#y}l@bTcf8~ z?jDcs+V7&`MTAw36pfbXsz87qdIVh{!c*5qh%fm#OD+?$GITE`_iaSU14nn|A`*ax zc?5Tt1^Y;_jE3Mg_bf>d+^v@+tlD7u-x41mPVD??r)tAHAhZOXU0*J@2a{oQL&905Kn(a8a*|YU1?y|IY#C-)N;j}J^xWRg8$(0$Eh)(`7FctQc8V>pc!xbBrN3r)6X2Bhvoj7271o3V>{DV)wFh&hJ z#&j?7jY?7i1bs0Q=k-gyjz8}eVw%yRhG=hN_W4Sl}l!(;C% Re?Wz6A9a>ldhJqELqjffRipp_ literal 1253 zcmV0K_vydr8?*hda;~iV*hV`48#r@tCOA*l z?4$Qds8RV?>yBFP{}cZ6{DsJpC?ps)RQ{)2!q|M_islWbT>Mw?e}I5LT)fr32`fve z*{AB>q|w^QG0a1dSRT;qP+0S24mPaMS_|vDK|E>f`kJ@N-COFh?f$R)PL3OFROMj5 zrjlwiqJ&)2c{>8xw@sF&XDv$(7Wi#e%~*L$rS2A2x5n1&iwn!v-6$&uBQW^J(gY{J z+Hmz|gdE-eKbYNJZU}F_H^!JWUTt=#FGY#FyFvV-!itjvF{#qWH~O%+7OKE7oBuAQ zCp&(a$dw+q+?R#~sipRTT4^zhSx#vet}JFRTMI$-`1p`UfXpbl-%vCb)7oN~jm_{s zfXr#e7sR(&HL@^Kkb9$<(~V6MJ{FYCDheYLqk%QvVn;jq&e*)7btHLO?o;JD(@RWe zihU>5G_F==rcfPi3L_{b2gM2;JU=dec3@EaJ33h_%Yuk-DvzA3g>!S_x6x^tcnK0& z5tqxQ;~$}O5jCyS4oryb#tbAqLZr;+H3T9%@*fcLKm^-aLc{YROHwM8YJMTF*H8zY z*8g+JV9$@7)`lFHE5}UM`f*;bp_?W{Y-q@U;eX61rPXqSqecsr6aW_*OvwJXumJck zVL`@0h{k{uF+@cF6No5B(=1I~ogPFrKW#P@p|})yr6B$Akh>KIfc>aJIZ}v5W<-*L zBpJqF0ud^z>IM=3GbxS23`WKn5fLO!3X+{UMF{r__Aph6K0Je~+sA+92_QJflMJ{kAtJxsyzF}^VWjD13S<`Dh}GMO!na1?gjxo3s!t8P5DA=rg3g7* zm@5CICL**IO~uu+k`~N87tXwz86p88B|rKHm25ssC&|*s$Tg6~03#_{q|aWC04W+q zU^W2ojKrlvtPnf`*zxeF;lc%=Pm!#PDLmKIGYYy3&aP=coEAmte%04rZNisE^7p@e zl>>F`@x({oESrp~TFt?^OR z1e~T{k(_BT9SC4IJyi)45}BYCHt>+3HUXvP-jyVy2*b#1=O9NROm4?j%edHUDdWUe zGp#v6Os(Snq-G6{vH@yHq_RN1rh!hxBkljD3vuunJ@wW@2e6JO;KO<>!(%51NKEPt zQduf)3s>M&wg>1BAE;ob)IA6nj7iuOJPNz7APZmMfzLq;KwozeW1ji&3h%0|am3=4 z;K52N41kqJ$+(m(3JdOd;Cr1C(V{-m7k%Mhb5rmOvRU%JqW*3C4ns)a1ao}1$^)e0 Py3ZW%Vy`R#Qd2`i{l8am diff --git a/levels/sandbox/editor_visual_demo.tscn b/levels/sandbox/editor_visual_demo.tscn index dd513d5..89cdd12 100644 --- a/levels/sandbox/editor_visual_demo.tscn +++ b/levels/sandbox/editor_visual_demo.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=101 format=4 uid="uid://5dfa6gbcl4qw"] +[gd_scene load_steps=103 format=4 uid="uid://5dfa6gbcl4qw"] [ext_resource type="Environment" uid="uid://bkvij3ljl5ox3" path="res://levels/ghost_ship/environment_3.tres" id="1_3t4ks"] [ext_resource type="ArrayMesh" uid="uid://dpr5cgq743f4s" path="res://assets/level/floor/floor_9x9.mesh" id="1_8adx5"] @@ -6,6 +6,7 @@ [ext_resource type="PackedScene" uid="uid://cdi5sl60mw1po" path="res://src/world/gunkable/gunkable.tscn" id="2_rks0h"] [ext_resource type="Texture2D" uid="uid://dthjo3ymo7say" path="res://levels/ghost_ship/level/airlock/floor_mask.png" id="3_3t4ks"] [ext_resource type="Shader" uid="uid://o1vaioor4435" path="res://src/shaders/gunk/gunk_overlay.gdshader" id="3_l2a0i"] +[ext_resource type="Gradient" uid="uid://dcr1dt7cujba4" path="res://assets/swatches/gradients/blessing.tres" id="4_4i8px"] [ext_resource type="Material" uid="uid://cqjr3cbxtfg2j" path="res://assets/materials/gunk_overlay.material" id="4_cdbrk"] [ext_resource type="ArrayMesh" uid="uid://bumwpsm42csme" path="res://assets/level/ceiling/ceiling_9x9.mesh" id="5_4kd0u"] [ext_resource type="FastNoiseLite" uid="uid://cnlvdtx68giv6" path="res://assets/materials/gunk_noise.tres" id="5_hps31"] @@ -50,6 +51,9 @@ [ext_resource type="Texture2D" uid="uid://cr5e4hk33wmwf" path="res://assets/props/overhead_light/overhead_light_R.png" id="43_euyjm"] [ext_resource type="PackedScene" uid="uid://cppd3scvxf3eg" path="res://src/props/crate_long/static_crate_long.tscn" id="46_4i8px"] +[sub_resource type="GradientTexture1D" id="GradientTexture1D_7sqfj"] +gradient = ExtResource("4_4i8px") + [sub_resource type="NoiseTexture3D" id="NoiseTexture3D_6giaa"] width = 256 height = 256 @@ -77,8 +81,9 @@ shader_parameter/specular_contribution = 0.8 shader_parameter/emission_strength = 0.02 shader_parameter/bump_strength = 10.0 shader_parameter/fresnel_color = Color(1, 1, 1, 1) -shader_parameter/fresnel_power = 4.0 -shader_parameter/fresnel_intensity = 0.0 +shader_parameter/fresnel_gradient = SubResource("GradientTexture1D_7sqfj") +shader_parameter/fresnel_power = 16.0 +shader_parameter/fresnel_intensity = 0.01 shader_parameter/iridescence_color = Color(1, 1, 1, 1) shader_parameter/iridescence_gradient = SubResource("GradientTexture1D_hqva6") shader_parameter/iridescence_power = 4.0 diff --git a/src/world/world.tscn b/src/world/world.tscn index 4d2d566..a67352d 100644 --- a/src/world/world.tscn +++ b/src/world/world.tscn @@ -4,7 +4,7 @@ [ext_resource type="Resource" uid="uid://tgac5tnfx56r" path="res://src/world/world_manager.tres" id="2_5kmgb"] [ext_resource type="PackedScene" uid="uid://byvjsvavbg5xe" path="res://src/ui/menus/pause_menu/pause_menu.tscn" id="2_6fy3g"] [ext_resource type="Resource" uid="uid://0i72bf8ip1lx" path="res://src/world/spook_manager.tres" id="3_l0av5"] -[ext_resource type="PackedScene" uid="uid://dc4tts6342cuj" path="res://levels/prop_test/prop_test.tscn" id="4_5kmgb"] +[ext_resource type="PackedScene" uid="uid://bov4ok76woyc" path="res://levels/ghost_ship/ghost_ship.tscn" id="4_5kmgb"] [ext_resource type="PackedScene" uid="uid://c0uitm5cg88h1" path="res://src/ui/menus/kill_screen/kill_screen.tscn" id="6_l0av5"] [ext_resource type="PackedScene" uid="uid://brknr57xc2cp0" path="res://src/ui/elements/save_icon/save_icon.tscn" id="7_5kmgb"]