From adcca4f724c7750935a784741f1da2471ce4af26 Mon Sep 17 00:00:00 2001 From: a dinosaur Date: Mon, 16 Jun 2025 02:49:29 +1000 Subject: [PATCH] Replace GLSL Vulkan shaders with HLSL compiled to SPIR-V by DXC --- data/shaders/lesson2.frg.spv | Bin 332 -> 336 bytes data/shaders/lesson2.vtx.spv | Bin 1108 -> 800 bytes data/shaders/lesson3.frg.spv | Bin 372 -> 384 bytes data/shaders/lesson3.vtx.spv | Bin 1256 -> 968 bytes data/shaders/lesson6.frg.spv | Bin 560 -> 772 bytes data/shaders/lesson6.vtx.spv | Bin 1296 -> 1004 bytes data/shaders/lesson7.frg.spv | Bin 664 -> 884 bytes data/shaders/lesson7.vtx.spv | Bin 3308 -> 2468 bytes data/shaders/lesson8.frg.spv | Bin 664 -> 884 bytes data/shaders/lesson8.vtx.spv | Bin 1472 -> 1188 bytes data/shaders/lesson9.frg.spv | Bin 664 -> 884 bytes data/shaders/lesson9.vtx.spv | Bin 2320 -> 1652 bytes src/c/nehe.c | 4 +-- src/shaders/lesson2.glsl | 31 ------------------ src/shaders/lesson2.hlsl | 4 +++ src/shaders/lesson3.glsl | 37 --------------------- src/shaders/lesson3.hlsl | 4 +++ src/shaders/lesson6.glsl | 39 ---------------------- src/shaders/lesson6.hlsl | 4 +++ src/shaders/lesson7.glsl | 62 ----------------------------------- src/shaders/lesson7.hlsl | 4 +++ src/shaders/lesson8.glsl | 43 ------------------------ src/shaders/lesson8.hlsl | 4 +++ src/shaders/lesson9.glsl | 56 ------------------------------- 24 files changed, 22 insertions(+), 270 deletions(-) delete mode 100644 src/shaders/lesson2.glsl delete mode 100644 src/shaders/lesson3.glsl delete mode 100644 src/shaders/lesson6.glsl delete mode 100644 src/shaders/lesson7.glsl delete mode 100644 src/shaders/lesson8.glsl delete mode 100644 src/shaders/lesson9.glsl diff --git a/data/shaders/lesson2.frg.spv b/data/shaders/lesson2.frg.spv index da5fbedabce9679979867b1ae75bd1ace1f12d00..7f74aeee33a05ef30e9fd94bf59aed2707e69b12 100644 GIT binary patch literal 336 zcmZusJqyB65Q}~GLj^w&bd!psQk+B(bkoU65jS~5DGpXB)!CozBAC<)4jx={cgee4 zjWhCr3V>A=n_S{F-`aC3fx~RW6daeaGH{7U5-$9Lzuxlb zZnJ22IPGng#Q9X5_jlihPTDzODtg66AY?rzr>k@e@L2U($?H3t&`-U`l;$@>cAxv? o4Rq-e5QltSBdT7M8u@GIj7rV*-wNrTd{-wfsgO=yFDmBDH;ZT%=l}o! literal 332 zcmYk2Jqp555QNvn#Aw7H1nneZsRRoZLC`WyIu9VCji3h919&!1Wh3}aOpynZ-I+H# z`-tm|Yi1P-EwHBjPuCn2L-X^Rq`NeJJWug_F_WWZZf=yPji*W#u7~qY7j@9VBaLu6 zmqfES10HJGD=vSwKW3NgZb`w1XgWP6H9N{vEbsgDK3W6@__ae^xe?!hsuxOM7hF4} nP2lo2fZ1z1#U)<|q?NJcwc4#*9nF7GJn9CfOwE1yODpgLY4H(1 diff --git a/data/shaders/lesson2.vtx.spv b/data/shaders/lesson2.vtx.spv index dde73db62fe84e08d42b5c35f0e11cd3bfdaf5fb..0683adb922a2c0344c481018ee0272a5a77e3ed7 100644 GIT binary patch literal 800 zcmZ9IOH0F05QWF4X??cV+J_HHYnMWBC4#7kO5I3RRJ!dVLWHIzl&U*_f z>J5{bIdkUBz2oG%MY9DnE7`98oQmaA#EEmNWm}xbPkuD@-)@FMXkwbda`d_K0|BlT zEw6a`KJmST{1^t$<7i}7&_|6k3;fqfG=3p=h136!9&0fp2))@b@*b`R7ybVIrpNwv}S&-%62pZp-M0Pn}(VN|)M> Rj5_m9wFlk+_AS*T*$?BGE;#@I literal 1108 zcmYk3T~8BH5QYyeTM!gP7@zrLJf&g0-BTy5-~(?8=@O?Ol_NXQR9_=!N26M z@`l9c*^k26%+Aa^@0oeeIn73QA%wZG92P@2lxrn-r!rPT zvmnY@4Qyx4W8W^~(D)9vgEjdY_`eVn7&kcyy_czd8T8Mx$;WJxXFo|nOWfGnXd3f4 z8iFnqd}kJT9OmcoS0=BnIg8qxK^(u0)BIxiDVx<)Z0&L|nAH;Wsnun?hW~KMMKC&-5i=@~ydijl0-QtZRYQqm%kOMRuL=c{{I(^7c1@%8y%R=IB_=A4y+SN3&|`6}kx zCif2PtFAV?ydN=p-@|(rF?*YPFJjj3SFwE0xP@1p(nGjHB|GqbMK zFPi1dtY%exc};V^9XG|Wb@MH+OudN1%k3N`>+l*Oa1omUJ_VHvo#?dg(8SykNw30G$+8)jb6-A_I$p^0msyt0K zd#K45`|k(SlWlg{F}paO{(Fv-T0oxk&2%CAn8l;#DaKb`ie+X^fqx~Hx!{+&=ZZJ;; diff --git a/data/shaders/lesson3.vtx.spv b/data/shaders/lesson3.vtx.spv index 5dddcf13616dc03148222cf50201813888fadad1..d1c753acf801a984439055f47678bbcde14607b0 100644 GIT binary patch literal 968 zcmZ9KOG`pg6oq#_dunDrdYR@hkeWmg6=7k6!jcN74h#%Z5wn{06Z*MLg4TD=Rm^kQ z_w2RyW9@x494g1n=FBW%MZGyG3k6KrVWLS}ocK@e!La>t+v;>pnPy}~WKrjb-Q83m zYH^E+8-DiN6<_q&?L7AeuO^))xVXx_3YTAN5mMGK#qgimsV|E2oOPrmjt-jTl X*shE?dS{x7J>l@#ky(GGa4h=+T0uK; literal 1256 zcmZ9K%We}v5Jelm5(wl$$O8z*j(IGQA{Ky<5Fj3sSwtczf~^&W5t_)@mhA+@ieKQD z_$oF?oYONsAbM0&b#GO7-L9E>t+x=uxv&%#!`)DzkJJ{R*dCO2WNTqWilO~6gAtDtR{~$$On@oG4#tj%e%zh zS*-3pJ-o9z->~1ulkvL;H=kD3+FV1dM`kQdpn{)9~#J>M>y_hNV zdcW>}co$sgZ^XN#`>oT>eqDO2#dwpbh3{ZnD6^kfjUC>Lcx&aKl-U17&inw?5V)yKTSMc_eYZE!+q`{nKpEbNa&8tJ~zaVFyb$kc&T>FTxV6JWO z2HtbMSDRhVSI)Dy@Wm{Ov&GI;&ivIfw%!@-;MJUFaD&*s@@f;Oe@HE9z9D>n{)lhu zx$1Cv#xEGZ`%_poUc{W?GqTQF{DKN~T*K7n-K)~L^am&smYHt#7DFKs~n2P@AUIf42Hjy42 zn4SG*zMXGo%cYa5F)PNHy4ll-wM;3`lpUtpFg3HP$o)PIC$UYk$1qADl;kj*I;pFn zZe`;sj#czb#l6kGX4XG@^`khPSk*jb;RN%jbn+iG}J%@S9lLDGi z;(vsxAKZ;^27{;D(*?KcW|_`2R~(LBf-s%fOjYLiZ+`l%>G6{8-;fWQ5v?Pd%fRfq zjM?E>4v#vxFUP>lzFY?v^^UsLgnRO?xa*2w{(3+Eb1-w$zc4V?6LVv6b#D&D;t$Dh z=6Nu^w-o6`AL?~Q`j7`V6xod#+F~^o`^vNwxgYAzKQY^-PITE71Ea@o7?}QOp#d)X zqj9d6^rVKN@h$eY;+43})RyxejOLCUJuo}%%F!Ds%Um5f9P-a%ut!%;o?h6sc0ix} IkJK;ZztRRc?f?J) literal 560 zcmY+AJxc>o5JktVn?$4eFrtVciT1%lMG$S%q_eOLlB5vSg>@tTK7W;s;5nNO>Vw&N z_r5!KW;UsvH6k{m70uX>)#*hICgAF29#8Hkqqkx{y0|=7(T=1Ps_8@{Hp#}zsjYXF2a_?1GomV)0Qd^96S~J>TVKS(eWu##P-3 zyhm)^utdN36l`zb^;qlsu=2xlx|QaDdmU~-9HMu2vGWf2Hpy-;e^X&+mpfvMZL)gS z{CC#)7-fqWb^7g8Dmnec?%=V1hpeA-s_&BZl2Jw_@?{IK8xok6w1wVIVb$AS$B5CSgT|QwIh&NJY$Q)=%i?HVInaJy$V1 zvfXE`{aX8IJXTGb&6rurD*EPREEX~G5ED(?!ubB!?ho4U*R7yq$}}S@A@jm}JoHTk zJWJZFxWPxSU2{bbo#3h4e=+fV+!+S#w_d;d4D!TEkWHnBy_gkrYQt8)c7NGCZ#3>M z_FPRe)G!s>AH~qseI5KO^wgEzCikgp6LwjoSO?79QivR8Uof@A=|34qe`O*LF3UJq z;fC&Bb?y&G?n;=K7{3pC>e`U^LQ76F=j44E8g?T*uRABNTz)NIMvS}L=kv56yd(@q z-=e;k<>A1kXbzk&CMC~IW>cG%rH|px%$<>oj doZs?GeTkK2zKnS%QpKKd+}RPWKbmkT`vsq{Jt+VH literal 1296 zcmY+CU279j5Qa~aY+9|h*4huX#!cfVLh(XH5EVZlUKFepy$z*ZWF=-pl2-A`zu;f; zS9v4&Ji9q*oiLf1cjlaVXZF-g(r@tp^&lS@h%BP3=uNcFuZI22fh08eoz^BG)}Qny+4sYu7#&%Yl;`vR zux41H?sLDlmyJGUBgzS3SmFBSig7;4ivj3-Sue*D&j*wJ{6}V8%*lz|n|?lgn~x_4 zgTri=b3${+{r)VMFo!cK`Wx7fuitZ~S^DC~y^}oqHXIdSs+y~Uh%>p1yf=&#LzhiB zd&>gE*u5FcyGsvemghUp>nqkM5wliI8!^v_IY-3w#oWJl%fGt2G2@?rS#M6^afD0g zS*&9Mk+1W$%jh)TCa(B5%9-PQt8}wpo8EHKU&m`=Q*?v->}PB)C0@WYX@4HCsea^hb{}MJul?T&!8Q(j$h@I7Xu@;^?k9U|;?Ryz32lMhW_HBsS z=L$AOz1Kd*YpAkGypHu=d9^s@zQw$I6YKn9-firj<4&$kee0d^23F2-C-MD=d*0Z$ z7r9v5Mnm}d(tdaGJS(3ke0%%IOA-GA;=6bb>Ygv4?)U{+zlHHDD&%z?m8-K_FUKuZ z+*nR2DxVLWk;^ukqDsU%_$fMf2D>%IsHR=!Of9@sd{I0v< zLj$ujXXebzxtq-#uNkvqj47A{eX+91B$cegbc-f$Ru#!_qi{5_)A%7APa$OFFzJ_+ z!O>D>S>q`VMet0{;6CWmUzB54`6nIxwqWstw(a^=!4sG49pvs`{1-+)%Lt_OI{OqQxVLKx>WM7 z!Q5tlYGAA-=GG#0+=f{EYwFucJ;eoK=D5MFq9VK53%{gDpE|g#$lKvp#M)78t5Q)U zZz|_MqVYm}bntcz%zfU9f!WV3Zh+Cl{uFbMcT+plR&LP4xcRN=UByeW(6}dO9~g~Q zIkR9i)#T^_^AGmr=ozSs?z$Wf^+z$;(U4PTH})ki^`@Nt^sjUUoz#A$@Lc{2P3k|* literal 664 zcmYk2!A=4}5JVer5k)~nL1SV-@5F-|6Qfry+&p+B1~{0gn;;N>z#sFgyqNgjvTK}8 zZ%(ld_ zg)O2^91weGt#Jvv3eFK<986&UpAma59Z%Aibe`4qSpDGyuZZP%G5c67=QH*RpLeX} zCTTjKMhtVGQ+StHAF=(4_30C?0-v$BH?f|@`8KS4KkI(2>9DWD^@uKdXA?V5kAIEq z3(4Q+*xBT)Z<9+zQ5V~z+%d1POV&^Pe--!yrv?Re`ZaTrocD>H(Pe-8Wc{2&eVeS8 zyn3-S%U$!P>YT-8&)+Z!`3}~ecL@6xduNOAKCzyMgno~lQr{ue$baTsm%TpL?zzSH Kk^7;G8{!ui*&>ht diff --git a/data/shaders/lesson7.vtx.spv b/data/shaders/lesson7.vtx.spv index d7d2fd4dd9e2d4f931e3651b6961c2b81a882184..23aaa4dc6ab466a954e239dc0939ce4866a698b5 100644 GIT binary patch literal 2468 zcmZXUSyK~H5QQ(q00OdzEN(afcQB#?qR1v-P=jHU;uU4ku^^#BaCy`6-SWYorO*Bq zU##+cGt<^M-c;vypVQmzxigvi!A9rmoO5k%L;tK!S05rRt|8nD#r0zTu(p#Q9UFmf za~ZafYj>@oUa$X6zgqL(FK-8B7kV5MmX$O}RKzt&GWvmSDIhEKxb)hG13w=HKQ9Nn zmFhk*4IwAm?N@gEz0JUXC*5#5KB!jS_%CZgMfI{`nuVp(gf&`(hc$}9tJk%^B^1%< z;8=T5bNep>zg)vMjyfT?5bW+A9r{U*Gl$$tW0nsZwDdOf4wq-)>j)8;e`> zrPA6$I8WxltWw-9L17&8N^!T1W3H8>+J8xz2lF;=zEmu&sajUQ^s_3cI?u>vflaUd z5*9Z7VKWbGdcr0bHhm=hsh#xa*$hZ59y=#t5zow$JT^T3ORB~_VGTyxKNz(;BumO; ze)MZ`W4@iT$YuOVXf3n5q&NQ@oa$BlDe2_MNQU)vvAZSsm{?qoupi%x z(^jWfw)IGkzKEY8?`i2^%&AZRXS9Pw_amA=7~%;%tDT;iXMa3P{7vvV7yB?P?DN{G zPtVlk9#NA#@E5ehgJXNzIVU->bFmHIrKkbzIeGA0(DAvboqX2krPwCNq5-as5_o!I24=(aj+pI9=N%&k|D1O2pV^-D==GDaA6E zD-vR{Ip{i?ihBNBM(Sq?sK^vE)dj~ZCA)}0tj)*2N?JpS;!2UcrLIy|*nHF4^X zOUSt>fiG#&%Mmm1*7C$SUv%$6M`4B%RA$~=|yk;eK&WF-D zr`-+CIWGaXb1cLdIE!4&%KBio`0y?H6!-Q>I^P^Pt5uLrExs`}(j2>GTd~cayn+vkY664n}{5 ot;HC#v3FxV)bVi+zC$vtx0mk$J)t*h=N(3G(oW28WuB1y0ixukU;qFB literal 3308 zcmZ9NT~i!Y5QZl#kcb$JF(GQiCHRfvR}#@kfCK>*g^0lz6IZf3kimt;Wr-=Tw7j>< zDu0pJdhK8F#wwp@b{a-bs&l&EeovqG^f^0Jdd7|?$+6_oe9qsr!jHy(wj0)CY78hX9$*~7u#OXcJ$9+qu4F%Hg*?lVio@NF#o~AK30_1^npA= zZnw3Ub+T4orw_i>Z(dtQNq@0ZlI+*ETaC22mZd*{9?x;L?ALbNt*x|PUjG=l!}{vV zYKJ?hVFYZa)!tr5pd58)wLrSqI9M~=yx&<%>$tFblh>G+#F*7)?AWiZZ{N$(oig6l z*2p$C_V-da!M7J^J~*-Gov;W)EtAaozH{kb=WVe{@&Q;QYv&qf&9hzF?&R@2aqOF2>=O%Z(neEPHd!6;2dU}xaWtrP=HV<;1+xO#GDBgrM z7CB@0^?4TKzJr)YojiU78zXkaIyIKp86RCI=DHbdf&F|>qnIP&3;6PkePg~Uhp}8^ z^{U->($(H~@MaEmb+Onp^v4=`)x1t`{!Xkd*L{39WgXsiS%>#*9DIM1hjAspv(Ody z8ojlzai?O|2+TENl@g{e=I{G7rJb~k+hVqsm^saTzGJqgdG|4H7T9Ha z?|FPz4tf88_)U=OJM?c-X!KtF&6MNuQf$vBOR;>v*TFYGTZ+xkABp{D%b!Js@A4Gp zTlT$9p~*M;1SW3m8#{~n9&fP5^Pej)rUUG$0<(X?d%D2v!3w*&?=zU|<(nVIext6r z^O$?fxk|U}jaX=X4*#guDwud^y?{T8g@)(x#TE@#Gp9M^xQ}P_zRi0^e`9Z9{to@^c_!=fr#Z)?-a7>* z?udH9zX)dUf`18LOmhVP7xq-&Wz3rL)a08Ji=MuRFBb9pMf`j59QkQFj{OeSR%;&ESj4x2|t}1`GZ*eES#ib$mIYYYtzI_#mBhZ|}yv zy&vyWjRH9aL(dllChj<@=O&mOzr*g~w?NE#en-E?Ze!+d6>;?T z8)7vX+s7Ja&m#XVzV+hl>-b{w;*9t3tz#~Ji*(nG4%(Q7MT5wZ^;I}>*bsG zTcY;6%;xN!-?(ke??&`)0Dq^z)o(9bn7^6$eedGS5x34A=I=4T?L(OR7|Z(?rIXly D+@9qD diff --git a/data/shaders/lesson8.frg.spv b/data/shaders/lesson8.frg.spv index 711f8d655a3fb59a4e30214009194deafca4a355..78ed9a7d1b80e24c5c91441432c36fc2028f3f14 100644 GIT binary patch literal 884 zcmZvY-Ae*d5XEoWT3Pv#rKu5G?@RO$LDY+Vyc7#6=36Xu5g|>sHR=!Of9@sd{I0v< zLj$ujXXebzxtq-#uNkvqj47A{eX+91B$cegbc-f$Ru#!_qi{5_)A%7APa$OFFzJ_+ z!O>D>S>q`VMet0{;6CWmUzB54`6nIxwqWstw(a^=!4sG49pvs`{1-+)%Lt_OI{OqQxVLKx>WM7 z!Q5tlYGAA-=GG#0+=f{EYwFucJ;eoK=D5MFq9VK53%{gDpE|g#$lKvp#M)78t5Q)U zZz|_MqVYm}bntcz%zfU9f!WV3Zh+Cl{uFbMcT+plR&LP4xcRN=UByeW(6}dO9~g~Q zIkR9i)#T^_^AGmr=ozSs?z$Wf^+z$;(U4PTH})ki^`@Nt^sjUUoz#A$@Lc{2P3k|* literal 664 zcmYk2!A=4}5JVer5k)~nL1SV-@5F-|6Qfry+&p+B1~{0gn;;N>z#sFgyqNgjvTK}8 zZ%(ld_ zg)O2^91weGt#Jvv3eFK<986&UpAma59Z%Aibe`4qSpDGyuZZP%G5c67=QH*RpLeX} zCTTjKMhtVGQ+StHAF=(4_30C?0-v$BH?f|@`8KS4KkI(2>9DWD^@uKdXA?V5kAIEq z3(4Q+*xBT)Z<9+zQ5V~z+%d1POV&^Pe--!yrv?Re`ZaTrocD>H(Pe-8Wc{2&eVeS8 zyn3-S%U$!P>YT-8&)+Z!`3}~ecL@6xduNOAKCzyMgno~lQr{ue$baTsm%TpL?zzSH Kk^7;G8{!ui*&>ht diff --git a/data/shaders/lesson8.vtx.spv b/data/shaders/lesson8.vtx.spv index 1b7d49939e8538bc257c6ee9b37d640dd216bb34..6f342f9a3259575dde5293128daa0fd4fd245a8e 100644 GIT binary patch literal 1188 zcmZXT$!-%-5Jf9->@a2^WMB&Im|=lr!3H5ACIu80AVUNw+XxxS5xAq439#c6_*^zf zob$S0WWuwmYq(XfZdJEiv%UFa|_A&`d!5HGEG(6y;}VfbJt5LZ|-=v z^2>GJY28y~2WIBWcNJcz(FJ18oyI?d?O7w&84E;A`y3MS^GVJtrJEpCnYMYOna{Z+KJ_S9c%eDM{k*3n%u zHqhGUTta)Fy!00%|zIgqAiMS6U4{JU0 z`pxZE(2uBf?yHFX^qu1x;$6?EmAl`N{CsETILCFw_*-(^SAlqsC&#+j#_XMATTRS< zZ+I*2pobKQ`QpC+U)(Ep0};2MeB9klL_U5O@-gogV*D}8-HmnH?!|eu-HCaBVDtd_ E3#7tGi2wiq literal 1472 zcmZ9K$!=3Y5Jfw-pA!fqgpdIU#*Uc-77IW~h#4taL`qNuTPt!b^pNqhJb_s83;Ysa z#RiFUp510>t6Y6=-Kwsxe#Jt4K7_fj7#2b!Ox8*$zy!E*?sxZ(_8WuYN#nu8`zn?~ zF&C;?4yW^diT_W>X;*LxTf~;J3U(bU@+;tfkd%ZHzd!l}#+-3;*#6SWvi^yhB(IVF z!hoT z&Mf9VoRiCYJFm3ai${iCrsaI1M(ljW_92e5p5Vz`>|>9ZGjb)^9{&;Z@ZsElTpjF+ zI_t^3z&yvf)i77Y+w9}H&TMjSGMk^hx~yqjt(-n`=Eymp$hnvETk$OC5@)c=DdyD3 zQ0IP~T^V1+Hqd)Nv9T(60k2m6$rL+RIpcoG_7vmd*r)Z*f~{vi>X-25%3DwDJIHN< zovktT75<%jOE*JZ_%HE~EinkB%=A7zy&rxsu8h#Fwx1QLyl(U}N zn^*|noq>+-|kab-{uVFyF4T6`-xwoa2^|&GjvYsz27D#uip0&tFPi~ zn0oJ{-aBk#@?v|wf!Xg{a_sfil*7%q+f&XvMcth#=Y0<8++KDt^VJ*o-ruQf>@Mcn WYV6PN=^p0n?a%(j>V7f3$JlS7R$80@ diff --git a/data/shaders/lesson9.frg.spv b/data/shaders/lesson9.frg.spv index 711f8d655a3fb59a4e30214009194deafca4a355..78ed9a7d1b80e24c5c91441432c36fc2028f3f14 100644 GIT binary patch literal 884 zcmZvY-Ae*d5XEoWT3Pv#rKu5G?@RO$LDY+Vyc7#6=36Xu5g|>sHR=!Of9@sd{I0v< zLj$ujXXebzxtq-#uNkvqj47A{eX+91B$cegbc-f$Ru#!_qi{5_)A%7APa$OFFzJ_+ z!O>D>S>q`VMet0{;6CWmUzB54`6nIxwqWstw(a^=!4sG49pvs`{1-+)%Lt_OI{OqQxVLKx>WM7 z!Q5tlYGAA-=GG#0+=f{EYwFucJ;eoK=D5MFq9VK53%{gDpE|g#$lKvp#M)78t5Q)U zZz|_MqVYm}bntcz%zfU9f!WV3Zh+Cl{uFbMcT+plR&LP4xcRN=UByeW(6}dO9~g~Q zIkR9i)#T^_^AGmr=ozSs?z$Wf^+z$;(U4PTH})ki^`@Nt^sjUUoz#A$@Lc{2P3k|* literal 664 zcmYk2!A=4}5JVer5k)~nL1SV-@5F-|6Qfry+&p+B1~{0gn;;N>z#sFgyqNgjvTK}8 zZ%(ld_ zg)O2^91weGt#Jvv3eFK<986&UpAma59Z%Aibe`4qSpDGyuZZP%G5c67=QH*RpLeX} zCTTjKMhtVGQ+StHAF=(4_30C?0-v$BH?f|@`8KS4KkI(2>9DWD^@uKdXA?V5kAIEq z3(4Q+*xBT)Z<9+zQ5V~z+%d1POV&^Pe--!yrv?Re`ZaTrocD>H(Pe-8Wc{2&eVeS8 zyn3-S%U$!P>YT-8&)+Z!`3}~ecL@6xduNOAKCzyMgno~lQr{ue$baTsm%TpL?zzSH Kk^7;G8{!ui*&>ht diff --git a/data/shaders/lesson9.vtx.spv b/data/shaders/lesson9.vtx.spv index 2a2955d83e3f23774ddc555259b531b46f6a845e..e91282788b1475bc0a00ea65e103f26c098934c6 100644 GIT binary patch literal 1652 zcmZXUSx*#E5QQ%=46Yy|iwiIV?&yd<7!%`yXuw1>h)Z}SLz9ewY0~rtm|&CYy62p_b*rlHFf_P062d?TVKhAA?K2(*OJ=CRs$=2Y(fUi0<;nN=+wD#u zG6bV4*f3VbNC-Dn;4K1%*?S5u|8bBsKIU1sm3Omb=T&!iH^~~kY;QY<`F5w35Jr48 zoW`G2swnb4`{_=yhmV{!w$i;c!w>U!1|M@C7TicUi!W;ECH~xL@21(lIjV(*91gPd zYtqWwDZN>TU7rYtA1V57cN*Wev&N@4TdU3H=Idqmt2vJo+QX(_OpbEoxRvc?01M^4T9+^05)SCjM1DZFPo1NCYA04A^QoYdW; zei^SWZ@*Uxo>$>3;VNFe$5+BN*5@4^P4N z=RGq)AlrCutA%5~N=uh%j z`NhQdIlEJehYV-to%@;D=K5y`oa=Mf+@RZW=^1hTLY%OIzjqIg4i?*;`r^{^3oLHB zoHxW~NLHM@=(rj;;cts(L=QysqUWMDQBHsTx_`?tkVmgiAmoa4`^|Qz+N?!ll|9Aa zkCS@T=)uTcOBzW_H@;L6_xOTc7xsTVFivkgu*>lZ>hZ#Nr`oCFQ_vqc$8xpB2f~MY zFtZQbfPagxjf$1A->gUH_){NmbXMs^=d~nh)l-Z&i!Wh$|AuFkv|DmLlZ|2?My)SV zOYRbVZQvYqNjvVuNmKZMx2Hdk$IZ@B{5^Z$RL4xD+it`sJ8|~>=EtPboi-X>U7$HK zQw}^!@pA%c6-UWSCTor2Rjm1PONmdrwy@r1=8)w z#$+w6fAd~!Rv5=Ha)FgayNY!~cR_UM<(!`-{gKD!I_c%0D_hK6^*JmZdSbzsL>!Zu zCkL5tfSp{(WOPLl2R(B}rbcAGlM6ZLXU1IU#parRX%`s2VBBVh4_Mk)>I)CX_eLMg zA&s5)yhLS5W1!>ozOP~S7UTjWFIZVb56rS8;+Q-m9y?^_Yi}^B3aFu^dZ-V6TpaTW zMH8~824w1<)c--t6c;=0a-;i$dgRN!qaE6UZ z9uXgk=wl(1Z;9vNKdKuYcK9PRe=zjpx`|J2SA|LXMD8=%ACVi4a5qf6CzNJ{+&56gB_~?=6GmL(phz~^^>O)=-;Xft$scz~4 zD~e-3i3NrZqRvI#>L<PZAY(_~Q1?R- zb4JHLAe-+a@#c#?IUb9^v7gUm?0M%U5pPd@*we?d2;6#D5pO-1%^P9hzZ3_bRS|yR z*f5*-BIZJ`%;ZCc>FQz|8AktRSI#izcBl^MVN--Z_GJ Texture : register(t0, space2); SamplerState Sampler : register(s0, space2); +#ifdef VULKAN +half4 FragmentMain(Vertex2Pixel input) : SV_Target0 +#else half4 PixelMain(Vertex2Pixel input) : SV_Target0 +#endif { return Texture.Sample(Sampler, input.texcoord); } diff --git a/src/shaders/lesson7.glsl b/src/shaders/lesson7.glsl deleted file mode 100644 index e3b9a24..0000000 --- a/src/shaders/lesson7.glsl +++ /dev/null @@ -1,62 +0,0 @@ -/* - * SPDX-FileCopyrightText: (C) 2025 a dinosaur - * SPDX-License-Identifier: Zlib - */ - -#version 450 - -#ifdef VERTEX - -layout(location = 0) in vec3 i_position; -layout(location = 1) in vec2 i_texcoord; -layout(location = 2) in vec3 i_normal; - -layout(location = 0) out vec2 v_texcoord; -layout(location = 1) out vec4 v_color; - -layout(set = 1, binding = 0) uniform UBO -{ - mat4 u_modelView; - mat4 u_projection; -}; - -layout(set = 1, binding = 1) uniform Light -{ - vec4 u_ambient; - vec4 u_diffuse; - vec4 u_position; -}; - -void main() -{ - const vec4 position = u_modelView * vec4(i_position, 1.0); - const vec3 normal = normalize(u_modelView * vec4(i_normal, 0.0)).xyz; - - const vec3 lightVec = u_position.xyz - position.xyz; - const float lightDest2 = dot(lightVec, lightVec); - const vec3 dir = inversesqrt(lightDest2) * lightVec; - const float lambert = max(0.0, dot(normal, dir)); - - const vec3 ambient = 0.04 + 0.2 * u_ambient.rgb; - const vec3 diffuse = 0.8 * u_diffuse.rgb; - - v_texcoord = i_texcoord; - v_color = vec4(ambient + lambert * diffuse, 1.0); - gl_Position = u_projection * position; -} - -#else - -layout(location = 0) in vec2 v_texcoord; -layout(location = 1) in vec4 v_color; - -layout(location = 0) out vec4 o_color; - -layout(set = 2, binding = 0) uniform sampler2D u_texture; - -void main() -{ - o_color = v_color * texture(u_texture, v_texcoord); -} - -#endif diff --git a/src/shaders/lesson7.hlsl b/src/shaders/lesson7.hlsl index 9144690..a45f416 100644 --- a/src/shaders/lesson7.hlsl +++ b/src/shaders/lesson7.hlsl @@ -53,7 +53,11 @@ Vertex2Pixel VertexMain(VertexInput input) Texture2D Texture : register(t0, space2); SamplerState Sampler : register(s0, space2); +#ifdef VULKAN +half4 FragmentMain(Vertex2Pixel input) : SV_Target0 +#else half4 PixelMain(Vertex2Pixel input) : SV_Target0 +#endif { return input.color * Texture.Sample(Sampler, input.texcoord); } diff --git a/src/shaders/lesson8.glsl b/src/shaders/lesson8.glsl deleted file mode 100644 index e403bf5..0000000 --- a/src/shaders/lesson8.glsl +++ /dev/null @@ -1,43 +0,0 @@ -/* - * SPDX-FileCopyrightText: (C) 2025 a dinosaur - * SPDX-License-Identifier: Zlib - */ - -#version 450 - -#ifdef VERTEX - -layout(location = 0) in vec3 i_position; -layout(location = 1) in vec2 i_texcoord; - -layout(location = 0) out vec2 v_texcoord; -layout(location = 1) out vec4 v_color; - -layout(set = 1, binding = 0) uniform UBO -{ - mat4 u_viewproj; - vec4 u_color; -}; - -void main() -{ - v_texcoord = i_texcoord; - v_color = u_color; - gl_Position = u_viewproj * vec4(i_position, 1.0); -} - -#else - -layout(location = 0) in vec2 v_texcoord; -layout(location = 1) in vec4 v_color; - -layout(location = 0) out vec4 o_color; - -layout(set = 2, binding = 0) uniform sampler2D u_texture; - -void main() -{ - o_color = v_color * texture(u_texture, v_texcoord); -} - -#endif diff --git a/src/shaders/lesson8.hlsl b/src/shaders/lesson8.hlsl index 066b817..e90ff1c 100644 --- a/src/shaders/lesson8.hlsl +++ b/src/shaders/lesson8.hlsl @@ -34,7 +34,11 @@ Vertex2Pixel VertexMain(VertexInput input) Texture2D Texture : register(t0, space2); SamplerState Sampler : register(s0, space2); +#ifdef VULKAN +half4 FragmentMain(Vertex2Pixel input) : SV_Target0 +#else half4 PixelMain(Vertex2Pixel input) : SV_Target0 +#endif { return input.color * Texture.Sample(Sampler, input.texcoord); } diff --git a/src/shaders/lesson9.glsl b/src/shaders/lesson9.glsl deleted file mode 100644 index bacd7dc..0000000 --- a/src/shaders/lesson9.glsl +++ /dev/null @@ -1,56 +0,0 @@ -/* - * SPDX-FileCopyrightText: (C) 2025 a dinosaur - * SPDX-License-Identifier: Zlib - */ - -#version 450 - -#ifdef VERTEX - -layout(location = 0) in vec3 i_position; -layout(location = 1) in vec2 i_texcoord; - -layout(location = 0) out vec2 v_texcoord; -layout(location = 1) out vec4 v_color; - -layout(set = 1, binding = 0) uniform UBO -{ - mat4 u_projection; - vec4 u_color; -}; - -struct Instance -{ - mat4 model; - vec4 color; -}; - -layout(std140, set = 0, binding = 0) readonly buffer InstanceData -{ - Instance instances[]; -} instanceData; - -void main() -{ - const Instance instance = instanceData.instances[gl_InstanceIndex]; - - v_texcoord = i_texcoord; - v_color = instance.color; - gl_Position = u_projection * instance.model * vec4(i_position, 1.0); -} - -#else - -layout(location = 0) in vec2 v_texcoord; -layout(location = 1) in vec4 v_color; - -layout(location = 0) out vec4 o_color; - -layout(set = 2, binding = 0) uniform sampler2D u_texture; - -void main() -{ - o_color = v_color * texture(u_texture, v_texcoord); -} - -#endif