From b3ee3f3357db8dc6d535b841ae3bbdc1b154a203 Mon Sep 17 00:00:00 2001 From: sam Date: Fri, 3 May 2024 22:52:53 +1200 Subject: [PATCH] testing stuff --- Makefile | 3 + assets/quad.vert | 10 +- assets/texture.vert | 7 +- implementations.o | Bin 0 -> 614752 bytes include/batch.h | 10 +- include/camera.h | 11 + include/colors.h | 12 + include/gearlib.h | 4 +- include/oldmath.h | 2554 +++++++++++++++++++++++++++++++++++++++++++ include/quad.h | 9 +- include/raymath.h | 30 + include/textures.h | 9 +- src/batch.c | 14 +- src/camera.c | 7 + src/init.c | 10 +- src/main.c | 106 +- src/quad.c | 37 +- src/textures.c | 35 +- 18 files changed, 2820 insertions(+), 48 deletions(-) create mode 100644 implementations.o create mode 100644 include/camera.h create mode 100644 include/colors.h create mode 100644 include/oldmath.h create mode 100644 src/camera.c diff --git a/Makefile b/Makefile index ed5bac4..e29d2f9 100644 --- a/Makefile +++ b/Makefile @@ -19,6 +19,9 @@ objdir: run: $(BINARY) ./$(BINARY) +debug: $(BINARY) + gdb $(BINARY) + clean: rm -rf $(OBJ) $(BINARY) diff --git a/assets/quad.vert b/assets/quad.vert index d5f8f27..6d08481 100644 --- a/assets/quad.vert +++ b/assets/quad.vert @@ -1,8 +1,7 @@ #version 460 core layout(location = 0) in vec3 a_Position; -layout(location = 1) in mat4 a_Transform; -layout(location = 2) in vec4 a_Color; +layout(location = 1) in vec4 a_Color; struct VertexOutput { vec4 Color; @@ -10,8 +9,13 @@ struct VertexOutput { layout(location = 0) out VertexOutput Output; +layout(std140, binding = 0) uniform Camera { + mat4 view; + mat4 projection; +}; + void main() { Output.Color = a_Color; - gl_Position = vec4(a_Position, 1.0) * a_Transform; + gl_Position = projection * view * vec4(a_Position, 1.0); } diff --git a/assets/texture.vert b/assets/texture.vert index c20acd4..bbce0bb 100644 --- a/assets/texture.vert +++ b/assets/texture.vert @@ -13,10 +13,15 @@ struct VertexOutput { layout(location = 0) out VertexOutput Output; layout(location = 2) out flat float TexID; +layout(std140, binding = 0) uniform Camera { + mat4 view; + mat4 projection; +}; + void main() { Output.Tint = a_Tint; Output.TexCoord = a_TexCoord; TexID = a_TexID; - gl_Position = vec4(a_Position, 1.0); + gl_Position = projection * view * vec4(a_Position, 1.0); } diff --git a/implementations.o b/implementations.o new file mode 100644 index 0000000000000000000000000000000000000000..222d6e1b71c5cc4c1f55a5adf69a1a561c7518f0 GIT binary patch literal 614752 zcmb@v4SZGAneU&S972MT9W+I1u`=y(hP1RLmZ@gMHXBZ0A3P{3C@P(Sfr%hq1DIH} zlo!uQJ$u3dW^`KbozDF@ZD+1`rgLqlPOvSV<^%`<-vS6CQ3;5ULqq~7CJ~bR{jI%E z2#QX7|NneG*=Mh{o@c#0YprKJ&$FJj_NvO*lw8Zo$^Kb6-^@85%Esp8JT<#;AW&i6 zDssM<^M#yQZmRnF+gqi{1Li8v%5`{CF!r*5l9dtZS_O z>bA+_dCPHAlgpbYU!UW8@fHQWe{IxHd`rPS-`-sHRr~4$K_Z@Xt&Yz9RRdwKYjf54 zLc*Apw<>Bf78+uvV8-1O9p3*zPw z7w;u;H7{Pe%C7#3iY?n!WuMrU&V-1#MiKm8rC&FFFl1j{k#pLv4vjqR*wqt?NouLG z7dG+RS7p!LQDyJh%x^Eh&l7*D%0Ac3|I7Su<^RPhdueMfkDWZ)w($Q#m3?oEJ)-Ce zH{Mk2mhY_nvDXwo)aC6gZ?zN8(i@JKc1m|vs(Gey|3F1f+bc_kQ^__eu`*mh@KV)} zN>Je3-TadE+|yO|l3h3Rq8hzLKq#P#Y9Bp2Dn$S6t&QX!f>fBgrB=HO(q-vDfVO%Fnv%8S2IxEw?;fdqD7I+sk%kzS!5_e|~^Ry&jG3%Nd=Ob&dAAVZ1nZs{US+ z>vcJI#8MN7N4#|USjd?bKS*CRyXiwAXJ-6JS7mBp|E$}i^Y_J46R!4R;jVbb;^#fr zn;Gtid8fRZ@ZqvEOsxoc#?LWp*3oxSZ+DDIGQIS4to+pnzvZTiZg9(69{dI~iFQDa zQEohKMUr>*Yp9-ZtpgFOIp(#x*8b_`y|oSZ#JrYoJ9C_GJAdx{#b)wla!n#%yP+Uf zzaZREWj~OPrp8Tl;)jdLlX2NtWzXY(Nux$@OHGlRx~142G1M*3)bLwKabxTe(JsQZ zUG=f>VW+&MCK+E5elI^lhFuT+DUE9PUZjBO*7Hf`*8@8v-oaD$lBOKSWtGDi{c@y! zPPjc{y+)~w(W(9Y{dU9HNNV)(>GRtrC&zs@lDf;PEZ=9Z8%L63ojxC(Yob5nV_cAu zXHq_-zb=RlndrkrQ^W-+LrlsJA0eL34+^0@_PS>ce2#UJzIBqJ!pu*IsM;X@MQ>yh zgtkS(?Tql8N^eWq@yw;v2vQH`hV;)Yd*i!?9m9+5-#z=xgaUX%-I?V>It~F}|M* z6p!(n7gufSO>KySiT)+bXs^L2Z(UJdUtd9b=U2pU>*EV}-`%buY%|Ro z@sAsQ(0?MDnOb`|N?bJFJ)-u1x=)%aRF*Y5zbPiUnPm~AoU+EwFZ%O7;=Sf=wi+X) zJ9oe3{pjCA`O31{a^rm?Y8Jy+9PgCloh(gzYyUk)T6BJk-LQ6;GATb<+vHGd#w+8_ z+pI#pmelh8DsR)YK2^S9lL0jBqWtBW*S(XwJL}qN*19RxA!mW>g|5*{StE2zJp$c! zy4xBVru}7S-1yP%>GNB*J?c`bqJAU!!!7M`x8*A6{6@5m{@M!u)}(XbjPABayNMS- zI+J(W{a1MAs?TKB0~*jxjf<9_tXaj_zE;hMcNeZY=Dk+w?JG^&8xzZvjkCLbcRQTB z!ft4e+Rrq()=nqhUGU%+oHLD~+MCFzNQAb-N;_7IlkUiap42I`oa&h&aL;DX68hQ9UlHZ=;aSeiS*~}E(ZkT&Z-!I+d&SJq zx)u?j{y!S|sktQTZHbn?=aj#`q7n}M`LbQ&(U)o9d#(2v_RDaCue;uUf7n|8AVf2c z&GhhEvrwyv&zU~|ok;0hG4Ggx_V&B=-y1tEHDPT3tm3j=<(q@z?I&1t>KcK+prk

Tof>Bsn0=@jlH3siam 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 z z{5+|~Lfp2b%PGPbL@ZEogJEo7uuH>9BB4XBd}*sp6rZ|BsUjFWG9K2g0!?(;%bVKxqn+_(FBS6ZU_+CVqlRy! z;d~W_vx)#E(kS@K6cSVgS_G6B?tC-Mk6YuF zM*>Tg1mzh)d4gXaPCrTla=BqO%MwsURlX5Mp9jo{oMy`zu#ou8ooWd(cdJRVD_*e8 z-Z#0%QJy6z))qKYjYXMPUjzkT%(s=C^Tr9c;sn`tG5xiC?pQLtb8-Rw?NZ9lc0urg zF>S}R)#$Bl)z3Mj$A+)ij%hvOzP4c4_S>>XtT#YF;e$2se}&HxD_(ON4q=EwKQ^@* z$)&R59X5kd!3-f}hUi|5hp#8k2hE;~<;bzBKCQ!;Hp<#W#=O$No#A)ee6$elG5c7E zmha<2wErP{Uwfo+o2?5@2rWV`UDO>f$TGlSWV&wPk?PcP=T&K_vEu7D@`zX(CrSJx z-Egm57D{vsgH74PZC_IlX`@ZG__1?4L1BN>YXwbgrX{j5Ot%I1nmogc70{PT?%f<; z^Jg8kHeVGK<^bzlhTviSdn;25_eQtTshn2e!q%Wv(Jp=cQ1%AK@p^&RrgCTlv>(4$ z8It3p82EuVWKaYEWAvQ?!WvUF~9jQzZKWdYVUo=yf&y14`^UCvPfT5c>!4I7^VOVTOi z#n_RBv~6`}K*pg8sRz>7q&|*E>zWa0vfX@qLL5b&c)kXA<{xBl_ls>FpP_)+G|4d8 z&eF-6qNN*OGbeFxzh3;dhITujo}=3sl0z_(BptNWJaHdKZ)bA|LymX=tJ8=TBM`Ie zi{qP#a4SaWU^F&RH*@tY_UT%Tz->`5B%?awGrjXHhWO7uoZwqn(5@%YI-7y^&FihKfJUbK8(Qrsr>|B1mlA7i5UCw02C)@4QY73PoQH!cXW2ek z*(_^)(&Sh$N{IAfNpg@ASS3k;Md6W;_NDPi-CSVuR<(&G5$pW~8FV#$;RP360;>7Z z1Y$5L25V{4^zG7(ghw2$Zla#N?xIz*th9+%&2Cy{`(Xb>16tpfehs#(+OW>BZ0CTxZZnh717wUM87Cr4SO_T@)VXXEVn%QNMBdw4#%EAx z8c&N^Hfj+qU_D`xpkX1zG=)>&^-EZq>qD}Z7SOV&?z#3hs&u>@v1b`rE^9%D-(w*9 z;6-hSCVwF)uXW<@%luUDux^~pSx%cZzfdfwQpR&TaZ?2BI`Q5zzh`6-)ot~ND=0h9 z@=}2!nF$;WHW#q3AGMX2mjO={mz4lvOQ=TQR=CeJRdx`FQJ5Cu9c z7vLLoIZk-fOUs&_H(_XR3%)7Gc~is_(S7{=GI*(<-sq2e<3Qz1$FSO=JiX3o_OVJY!&#%A z+`#-eBf`H(@K_N|{e@_SfDsC$-pV=YnPTHSFjB-@l@z=XndhoPyTh%svB~>JrJ*ry z@%Ht6dxEPy?uj?!pSXHnD(5_*(u8HHc&CzZMd{HW5}lRLZ!e_L0Re${(opnWnbiyY zdDA?X^1flOnAR8>PMFp`Ivwwh%Ggw(Q))k4?LJYYxGJyu3ORwQ{jBA~5?zR3$M|~| z4;ZSixNjy3`81`zq1H(!%~|TK>JmY3CS61j<31nB75QX!1i82qH*{s!q9%NV**ZPL*p{?u8$BD;_{5p&rcR>ztFMPkx`R zGu4b3TPd$i!VIHFF2p|}{hgpwoG;buk5*vk`|$e9nPa_p8;0o2i@3lbjg-H~VZ=vK zz_JHgRzcP+!BxhZmjtTeUS`7Z;?uw07Z>g0i=XfJy_8OHrjewBbf*kyN`1CjNlEch zr7F-oNNfY4QP2YX_<&dK;NVOYFQM)rHqXPt@h?@{{5uG1+O5M7%ky$i7p-qT5IoNE z#sa(mq2GCldy|&9Ydm(s5=Uid7w>(E!~(I}&{^ z+bj@yB=(}HII#mgS~BmhjMYt5qvDT~$^j;Lf1~0{XbC1U&Ff4dgi!{EL85i`CD68~ z7HD_(E6{8$D8K2~c4!#m17^7ZgJj)AeECoJ@^X%T5|>uSj1UH4D#2&YQ0~dG@XR>3 zA;No*MNXi>I8!`~9>WUpKqWBz_o2}b&-3%1;-jdAiD%q~7BMNu6B0bp?UhC;IsQs~ zhsx?Bh#$*M?{fGt8?*fzF>XqigVI~{nqO3j5<2Ag1k`uDJ~`aRzl>1zSbv}Igcc6) z>k$U-pp9HT0ru;6UVx=s*ePCf>$0FPv7RNul~~*J>9nw-`rYk5I`-=u@PvC?ZVd}E z0t0@0UNmk=JSAmBaQ|nE6ZwNe`?@RH0wfV?MU|sriPbEN4pax{ki;Wq+B7eD84v4B zvU`RZ{dmUk4;PR4G0#r6^lz`k9Es=W`6F6DJXD#WyAjcG6zDAK&M`UB>>8wgv^SBD zfb+npk>pABN(w`N`d;!1Vwl=G3hKT}CAZ+x^PqcR52v8uqvKNA7w3$WlKw0)%MOj07{R7Oc* zs(3*qFGNt3JzOK~yN6(rumX;;@Vh6%shr%4^@uq>fXqCI?4_|Sf^Vr*&ea@$50)cf?{fSl6(ye zRJ_}9;ys|mJMS5l_)`k+23hXY?{5A|gtzz03vZbrUYKY39Gzqzg`0n$gd4Kr?elto z6?+D5xt$J77&Kibp+A5te$bI{XGW5ZGpED%SL(g=)RT)>FN(`VK@r0U^mo~e87R53 zSGL$xX;4Ll&GR&xBn!@8SH^0313QS5jF`kjuSY|Y#A66uN8)v|#Ip`%kvEaaHCa|n zN)mib^$uBnl3N1m<*Z=eM4_s%9+QPiRH?vHzUas-v{_$I!@PGd(4f7ie{txK6NeX4 zP}Nvo!n4IW-3r!5bhLG``k)*!Vvainj(s!)Ly#l>p17f1B36&U4ej$VoG3h}*TmqS zbkkGs#rPxfJAuiN;`(z5MA=)0ThUd#^OGaGTh)G9pD^nbi5=SvPpXMviSTeNBlWkr zs*Dtv*40SohZJIqQyT3dLTbqaUc@wdl$$x?!zvXG@H5qpSkMHEP@ON_#2WYO!nY z9b+VcLcqm!W2rkI97El?gu2sN$^(}tE;?1C+E7-%_^6B=f4wqu5e&&yivzMoT$JIL z!^EBE0{LsivjWwcyUvY5bDk2^*jJ4%tnn%*-i{*omZ7R+tQE7Hc?6&>FA1aXf+z#1>ySFbV0Ua?Z0RS% zz;@xV-s0qJf5ojx0Z;#RHs#*0iXiv>hY;ldN)B-sFi0q1$fO;=eC zUG85PPF+LL$%YtBw&G^t8EYg^`oj@M0!|rfa2FrX3V!bhBT<*wF>u-7o{f%AN!CpY z$T6kb^H^t!v(c2bV5RWkz(!+eQ81)ed$9gy&oX}q?|5FrV?8~?wWy$GbRjH4SB>D| z<%A$~v2u$=Nf;5oQUGD0Mp8>U&y5U(brb14x3%fjj3O^Fpz>M6AQFC2=~F-=Yt+9R z81;unF1Du`(+6l}+IW)D_ay8}jc`B^@Qq(i%GnNVf=Xosp6zr}8EJkzEYRi>&;0}w zpYHI6L$SG)LLcgg&84jia4tn1z3|GIUPx@YyG%!zuAwX}aVKK4iMnQ)DXyn2W0(=* z7Pkh7hykGPjReb5G@(pd!~+LZ2Laq8lenk|(GoaWGavoOaXvJItoJm7lvA(FB$&)7n@DbEC{d?*=!6jf*N(kvjh5w_WsTYBtC=c zCEq{+1ZVr*A=NseMk&#y$dI>Fq`ldtI!DD?G7And3wz}h?2PyTxl*h${AQ#H zWo?ggrHJjB_{5_QlD1M)IbZf!US2}ZbloEUZ85p_>kyN8knQ`wxoL{^GO>LKm^4oO zj4>L+)F>32!W5s4=+u>%Gq7^g=d*S5RRt?`-{&Ku>OOiefhaAECPQ$pPlDi72(jWO z1HBpRj_s1AVAeO&lCXBH%SIk&ipQm)qYiJWMU#BpvE&9o6LH;GmzMF*nJ5`|jb_PK z?10dgic5|S(5wG4#?WKL7Yno$6Yn=g*-9_wzFl7H+?ufgXz)%`0uAz_zC;+Ny;QOq zNJZCX9_?;8Q~LG1n(ClkS4#^x8PueHxf4@1tADr2LE?|GZo7~}agET(p%3cCK>V_n ze6kIQt~@h^#M{un+l1h;^{e&gyjt- zr?|VuP=M!Rd+Iyxi{0^?)OS3n?!b6Q-TEBSJu8v3Nl!#=KgY~R;i9q7^&L*ROt2afNVK)xd^_blxUQKSy zb)yX1-%W~i6V~*gO;pctN@67!nAWxtXj(ie*?*lb9%#k+oK6n($7ImS(;%UvW_G

qANkf@J!DnQM3 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 z zcN6+|lCOdvqW)}H_l(I)e?#=&G%o$O(Q}vlI{c|m|2vbH{$A)0m*Ky+&kyK{ME(XI z&A9D}Z(Qb#iPv=`CXWhF0oVO6j(x~$^73{3cCfo}M+5RH9tRB|&z9QzgN5X85_-Oe zd=4J3zDkalBL}@9*PmC04)*p<=RX(8>rX^}8=e^+a4|WrX%W19RdQXo0eLj^bSIyi z!s{7Nz7vmQuOnZ9?|-(!b^aaaz4JLk`G{Eey78fI$@I7$ZFJI9 zX7aA^Q*hn4$Y;Il>59qA{lMK{z5XZ0rGE~3o|8|7zb8Kn|3t2@PYa*PTVHM`(*G~= z0rI!-*l?Y{I_6Jm@-ly<{_esZ!N#RO0bW;@g**;Cr*Yd;$hh?6M!pz%c6e#H&iNhY zY(>5h-pTaHx@j^00OPW5CG-y_F9#oC-1dw&EzqqWUivFw&Mn5J ze>8e_kPm|&BtHs2O1>X{%D7$kvT<4WGxFETU%(&0^}IG<|6iEA^moB|eK9Wmz3_U% zFqx&{>+``n!=u2pzvVeE7tiFSeCbQS(w`CiWsFPzVf0iWKM1dC-1dBL zTzW1cU!VK}yfIw&AwBk?CwT|>P}3t{Pw%I27w*_k{tv#+o}!+9$Gq#~A?5Y=y}vRp z^FP3x@5t}K!)N{P^&4JapGp21`RK-F{_1$%U?StPZcg+hBhLs=2iJXDi1W&B@^Za& z>fx2)HUqSvD`6c)b zxbDMQoYy0hmw6`PygnG0c^;wXGx-=$#d*@%@1kYgCL!OKd>nirT<1)VIhT;PfUh$>vhEGczt6a=yBz(8$QQ$p8@D|dj7!fM2Lv zpNjlXct*IMS9|P#Zj+b(tT?X{#-+a?o>)_cJSV&=^C72cHYqeSUy_*iJqO`+v~% z$hyB_{)@(C-JR&aO1>3--?;QFLeDE7|72YHub?MXj{n|nFTn%GrT-ZEQ}}oWt0dTDC%(x0@SyKqMb5V^&)LsixMRF=>A#4c$>e9@(~aAn`NpN^4f2c0U%*$ub)TzY9}bc4 z#r~i1@h8+D8Lzi|P96#VfqM4i`+-T7Zt`;d=IZS(+;PUZ z%u@wD7sxBYZ<5!A-zEPZ{tT}3Y{xwBO9JyFS9z+)M=J&BD= zPcP(?lm7xw59c{^n7s7=j5$jfm;S%dQ-*vByej!Mcn$Ik@b8V=bsHO(b)(~Tq|L~~ zz<-A8dF{adcQbkEpN#VwWL)}xN6%35LGZEE-|eV({Y^D_=|7DAg~p|S7kZYGZ-cM% z>EB`U(*FScM~zGWb@ZGhzYITT-1b~IEL;=PQQ!gB zE$fEE_oYdU%epb~y3G{i(c!_yr6&%0^7?pbAFu7>jf~4Y!C1E`c`|rgxSsE4oNrf? zmpQXz&Vk0Ie;#^DOYpPCZO=91((@SkTjUSn_u;zFnXwO{^8EMq))gKd9&p|A^(%Q?cj1m= z%H;a|@Mh$L@$;tkaGmGGL2r)1l-I|R#u}INeUI~+K>iv&hde1>N4kJKI(!}Z&+tv; z&EeaP%l_y-95OC*PDlP2`2_fBI+@R)GD9wQv`K0dL@%k8#LFL&XNjK-zE5PGtb7l7v@uK_Pa zUKL*4xLvn`aap$w@>R%N!E3`}Q9Fq4RmSyMQzCm+;8siSatv=;Zpk;skJ>CzZ*|{5nroZVM8ke3c$PXaD z03QO^IXhy`CFI-S*U4iZ_O9=TreEf{it~DJT;}-)>wY4C1`m_p>(hA-V%@~#x^4z| zz;(<0ZTXDu!X3FNzvF<{Taohm{D)e`WzGOz$6J>?EWDv{Sy!L`(Av24WJUgG@(l1^ z`xb(-v>rS7MM}xm3FAM)jUK}2-fOor)+mH0?>xv_hw?aM^ zT<0%=@0XI8yv*Mi^Jg$F{S(oXnS2a9hjH6e(75z$MZPHcMtCW>&RGg`HYJ}1A5VS+ zKHK!m^`0Y%yKu)c%4fs%xR>(!_{j<5GXFWud4~K1{0{lQ@CW3t;cv)O;Pt2<$P>XM z7X0t^UK$>SyeK@Tar=3c#JHSSYvfaqH-)D$Za$mb#-3a<#)>$f%bzoyB{ z?I$;GhwY3@zrKFB6Ztaqcc=at=wC*@9lpi%$a&4f^CbT!*ZZFj8(I2f!DRcY$vpzX0DtuCHg_Xs`eBX04X2`>-Vc`jg{8b02RdQPIJ6Zv6y zFY-6=e&jFUL&>A!^^m`lM}kiv*Vo7XNuCP%+2p0+^T`XsSCIFGuOaUQ-%75pJKagX z5&1*pVevY;W8@!^KM&XIE8;%y_H)zZ<@WOgx1XoR<@S>i{V&Kf!2c!B5C1}*7ap;Q zx4ztNrN0b33VA7bT=E+5gyi4ClNqVKt2y%g+3BKksg2A0DKKX`a(&%qUh>k&7bGtV zFHhbYUYWcpydL=|cti4`@TSJ?=TST3a$akY??k=~-p#oEJQ`qJdM+YAnEW(+I$Zbv z683+A$;<604{nFMj7$Fq^z0*l2R}mn(Q*3;RqDUjdscXKxL)u1@w(bXluxn4`}pjX z*PojgGA?sQ#On`>k%xs>AG!dnjmw-%k?%%67v9^r z^yv4oLySw$RpdvIpN0QP9yODJ4ICwSk(eOIti{bxA*L{H9 zT)%M~f2{BrX&51?%!a)((?CWVgd${1Mv@sSWM!9GNk)-X8urLcRn{cU}L}-^=}czW4Y3{mwa$$2mt6@mY9l@wIq+@fCPi@soIW@t^QM&ixz) zI=4Bb=lya+#M9uD@o-+koM*Ut%m0lzf9Bls?;vNfcy4@+_(S-5@yhr%T>IJQ>U}@Q zom)R0$oWOQHU6jgaQtua!FW=&`1(wavMv7$Jhgau|70dS^#3K-ZFX00{iovjBA;{1 zKSX{Z@qPHc&V5c9=a!SENZfaM@f3I!JoLGSK3j<2$n)Je@pAa5;=}RfxXsP_EXaPh zIJZ7?($5a@9QYo|zn}cy#lyOnU5-5t|7{N*(NU!O|Ied;eyJcHo-b;MhsX1#;wx=~ z(J@LqJb%3-9`a|4hy2yzzvhYazrn-#N?I20=O?KT&+n(5+nkFt&$Ht9;z>3BKOd{F zkEa%|j^8Lg6VE38E}qM|pML@8w(f4~?-JjN7jokTTXbtXl3y$z)&zhF=j6?;}n5$hFt`V(K%9e}`W$z8%jY{u`cK{AWDB_>INlJ_?Ix#EUrhb13WF z=1_wA3gSiZI(RrQVa^R)z2%>0&TX7qel2pI7Z2|XeMvmLZ?lJZ8**O7wVz?G-uE-X zx%KlFIa9<(;xoiQ!#@&Vh<_q}82?;+KfV$V{ZHV!-Q?=6|BQUUwA;D$pN{vl?H5mp zA9C(*7`MA(Ee${P)Gfy7OI*Jr2*w7TrY0O7ZYK_>K4%ybk23c<*?-NxzGS$N3v; z#Raxs|NM2Ecz8a#S3KKo|FxM^LA)T(@6~Wy#U2l{EQ;4_?dolwPcygn;!oi{#Cza< z#5?0d#XrPHh==!)j&<(m@UC;~b1ym5#JA(KoLf$q+b7N~CkyY#`&>K;|Ju3bg!8q_ zx#c`h{XX%g_(A8E6FztS1a4=;K7aLad|HyuIJfha^RxIjuB#pYH(V#-yx-v5`kBtU zS;eQ}IdMy~{LaG7l^uNuy^{E3FKcAfAkBk!#e-J4sG4HST~zE|W!(C0ws_Ib!XQb#w@F~+%l-)R4{W2SR|e_W3z zM>Tf;?R$e&NBe2tt)9SHCQ53ldsa>Cn;`loa^vU z@h9mg>9M%4FrU!p4bJ`JY98nQakYeVe}8-e509&7Z?%&U{hUL5GM{5GO#JvQas34G z3EbbOi@(O_nJ*AOZVg1oa`7tZW8Wwq`uSBn^ppDWcy3`|d#;OfvWOom9D8o@&`)9U z0z6Tb7JrMs&#fxHlRu9uD~ z?t7io7v*!3zY{MUmnR*NobBYCmHLpA;>m00^ELZQhlhSvk#n2Wf0jKyUw1jT$C)xb zo)i%;ftQs0b>u(d>g{>Cc>XxQvv@(Slkwt*dB4Mt;)S@*^VYj|zgh5l;veRU*L_#~ zI{tBtAH+xSInOuLzc&A`d~r@W@s#|0ps9Et>N|;71T&{E*{7J6z|C6&lSm^%Hvhmr>>ntczsk}=XRYu#r2R+yf$7K5B+~cepT^} z_){*&uAk?bXJe^9Onq0W4}JD^Zha1?pV!3u*QQ`&2c~^Wh{VWy#knc11ir26|d_>1N@g`iKsheCo&lKVN0r7pTn@9Xj z^6wVEk?#-7iJ#=WJS_ex`A>-Fn+2x*Ph>SedZ7k*K>aHaQ&AM5BHZU z;^F>PM?5!kXe=JqZ6_YqeOWxL`?`2oceMBz9#5ufW%GFcVPE0%Su%)kr~Z2J z^>_~FL!%bU#BC#`qoL zkK%Vbw?6r2w3A9Xx9j{}>dT2wz^mZldMnHK6_1PeFCGt~gXDZkPG|8&cu(=I_$%UH zrzN+wj_(i-&z}r~g$_pQ&PeUe=1Iz_*A$i0=@ufbSO%pL=pp zyfyVdi;u;B6(5HGCB6i|ApSX?qD8zvd$_QJT@`U$^)DNZpbMZm=O7ZFVSK?FfZ^ZZD z+r>BF`^0ar67TB=@mulZ;^FfMei1K8{hxT4!ynAyast1lWxRg4Up!0Bt>TUG0^%>= zcZs*bONtN0%Zd-i?-w73KO{Z|uOl8lr{Hn%DbzQ>!+c7YjV`X}XzSd*Pv-8P)J>c} zt|bj|Za*66&(C2dIJfU(? zm_uj!JSjdLKQI0%o~~8APRKco--(C)zRbD>#XIB0#3$mV#KY$lR1)7teO2-B`2sb? zQ&o-oepLK2ISufzubf+oUukw=LO*}W=SG+9#ns`xsnE12!Nb!33 z1o7ec6!F3M3|#j+-__fGSFzuf&TYT%k@J=KWc(ZP1^9OHdH8-j^mCQ@A9eNC&u04h z%enOvK40L1c=$Ym6s_a)AFj_GteZxBGk!fD`YBm1S|mDdarM^E0s1N6-1_;QoV&z- z!%K?)gO?Tm8-D-~{p6#c+OFRE`IUYeIk$c?J`nG}iTHK+bCMtS+fDp2)*U4|50f)a zybAt~_;dLC;?Lr<#e3oN#9zX{5dRThDn1rpD_--Vcs?7&bKpC~2Um;hcZnCl|8Q>S zb^#@mRu#h({% zjdynL*X@aGpRY@OJ^CEw-1;0q{y6c@_y>~TwsQ1E(J?oHZ<3rFdH=%}@htdG$@!T4 zW8z5z<8_nTUVFV2Bqz1_op>hk%J>c92P4GP8kK+Z!&*FEB|ACjn!}-e0zA7j1 zrzPhKInRn;!rMBx>!cg63wlNJdkl)_`9=bN&*j*4l3XjE`v>Cb@Q)MZe4fC!N=`O% zz7@Y2KPWk!ncE3hZ~Gm_e$P3#{tJ-vk9b}@WxH#ys~Y%q;t${%ocncec5ds2_uJ$U zZ%NMW;)C$~;+^p#;+OFf;^*)Rc(~re+#XKgO(Z8ZuU~I2o)T{_egoc7{Cd1QuKm24 zz$Z#hadO@f&xOyCocjkyCm}l4OMMMq_x!c^{rFDtUicpI&iG+G>?^GMi>tTm*r(gUvX~vC&_tL{1`sSxz8Et z{J$;nI^eP5m&lobhq={Z4xfnkXP(Pkj;*_g{=ac<5!qRHyZBA`e&?3+7dbyC@IRbe z{ypUUC4Luv*}3K4#_Mfvdj9{{r}x~>E&l;>@`{(i3*%vKA2FYjuHN!%vhKrD{|9rf zEA`!|Z|vMkm$7a$@h|aq3G%zTdh2Hx`Td<+{!VfRh;PG(IQKbYoLkN>)W0o$9G{Gb zxuvkM==e;0CG%XF!1qZ0Rq_vrU&c>JPO-P*byIct|Mg(~XXSO?X~omyS@6(*4{~z4 zdfU<@Uhh=Ux#d4W&fVhSb?~JU!k-1d7D zuV3FGo&n!4`B~=Mu9A|Dx_ZmsNB$Y-mS2&abK>RjD+%(`z3~6*)AG-gpVhhLKS|Cl z;&t&n&V5cn=a$o+`n$zj4e{SO?@zcKTQ?)GD{Jc9)*VQG3-MR*4wB!F zbzgS%mS2qg*PUDbLUP^^pNo%5kUz=QTYeq#XF0e0jpWP`UyCnr?sFD9x12-NFBcE* zyI6yV`S)TD2gH*WL}Af!UUE|MzJ-h8;r$!wI>y&q$PYO;;>l5__1}Uy+~M5%e}?=5 z;!om5CBGSc-skEqe+v24oLl|?a%zhA$Dd4)-^A5h{$ldmJGcDF8Naz=S zA9C(#$JJXu?a05| zx#ia&r>OWtc)0}m54d{Ef0O*W&Mm(wIZui|gEw^UbDBH1oR_I@CH^Ab9uISPh&j9_ z9?tu4mt*VBrvHh~ZQar2zau^bpDFnVxZW1HdduHM{&MG*zl5CC;-BMRC&>TK)m#2q z@_%%0`8&utCcXv##ktS<)4AoGp#E?1qxdB}%>NW~$o^t{JqPc+I|_@A5_od-|1Cci z?`JC`{xA7e#4Az%p!nT*ZSiUNW8xF=M!5Fb!qwY+{w)#RL`PTW*8gsDx{Ghe`%C_X zz5m4|4R!UFe_P4e$2+(DzsQ*^eiomeAb*~#xBMdHFLiGDNe$!kv{L*E`D>l~oGs2R zCnGsK#FO#ec$jngeYSW~(rNJ%%;$p3v2`D!|8!mBev>1!b#suPQ9K)-4G-(?Mj3C@{2jQ{Nm)462BX-B>9KPukPwCza9DYoLm0m}5B5`WdX&l&36a{5s}LcBLV77ug&gE`D`^_D+{KEHHs`BTVQCO!sVC;45uPPVyv z%U?zQA?KFAm7Jf%zs66A|BU}39^Th_(YdX=jdjz$bnW$diJT1L7xA0%Ft^{hU*vK1 zmVb==BF=4J;r+BF#M3s4`=}sZ6t5y)7=IWK{j8>+CgNN1ZsG^U+o)a&L_Y$vwj}dJAQrlYv*tPFDQNruOi-z>$ZV-d%Tl)H~bCpLHJbhEC=H2Z7H4{{nGB& z&v1WSDP9ZTD83T^MtlywOT5U_@m%(a=f#iU;eJ$sK2N!NdtCaL$E8cot^Wb!B=v~b z3H$1Wr*ZCcGCQ}NMbzIY{t2E7*FN*Rddt7JRCE&^rJY;;T5|3aUx7a$`Q;80 z3B0A`93iKz_+h+Df}Gy2-ui!#{s%j^{!f!LT>KP1+PTk}FbsjIjAC+Kry0^i}>*3I}#e0}T^PmLeM!@85X4o|pxTelPIo^x*b<;nR+ybPYQ zXS{yMUqXIHJUPm+{Nd!^;@tA-&@~4qs$+_h}Lrzuk@VO7woco-* z&Ml`6IZukW!W-gY4m+5`OXAJ&zAnesT}l5VoZGtH$R8u#1)n1MCBKipC^}}kdduHM z{^!mue=0dk#3$h^o%@`P&MjvR_1}nx&&Aka(ln0yYbc%yZz4H29{w*r=_T>Q z?CTBj&Ya)TF5k|}QO@uC&TYS0S$Br`_4sV(KIc>CmQ#}YFT{)EtDIZTMf%y1!1p`1 z{0GT7C|(Kw84uUb&L5&LijFg`-quZD`ae#(;@tAvkdv}^e14K6GjD-sz(f88^0OxJ zdnKn2ImN|$;bkNz>0sRFqv9J`x4HN->YsP{w%;7=x3_cK*9g|_Cq4)t;N0iD>D+P_ zQ$Je#Q+yI0=C++ar@MN~e~>;GIk)_SMg$!`FovPe)=Zy`Tkx! z4Sp;^{_n2d@;i}#$+_j{B`2xRwbxZ{JdJaoli9iDl%@Vg@sfCUJj}Twb13TSEq^$D zR!razJGXV~k^hKzP5cQwteb_$rN*w_)?L859i_e~^*yA13-v=2)Q^+;pQxXfz~?x( zeZ5Kl^TmhYi}0|oYV^5Xd=`(l`(2LhH+;asFV1b<1>~O=51+sDxA+au#@Efi;#bK@ zdL{n-k8|#G-f?a@YpH)*SY17A!nNS2z-`vpR>TZ<$Of_BJmmcVm!=$4|CWl zUX}U(kih?u{P6iHm&KQ{ZrXmf;{X5Mob!kO`(@G%cyjbh+gD!ZbGvif*B)~6i|@dT zNPa{1RnFC0ekJlBc5eCMb5$M@|C9VD@G!TA*zvSHJA3oP6>DBo93Fmz;`RT=voz(XiuY(T| zua3Wohxvs5$Gdv#e+m81a&G;H&z+eg9zLgLk@#TN{Zf1YzFPb}e4Y4Yd@HW~?{)Ro z|3Ugc=G^)ZpHp*EJbbRrS@A8bdtQ7Kp5nFmx()p#b3J6h?RvI;{-vKB&aI#Dc{I7j z50ihpu{l&>zb(bX=jps4{ucFJ z#M|J##KY%|^c8=d&(U~8d<{NK{BwMq_;q~V!36P?`1|7b;xoj<=WfgspHKZK;^Xn9 z;w5=M{7Uis_(t)*_&4Hx@LkUBdcKA0`G|8nk8e?bT>MS^cRbur@A*0UqUiX?)m#2U z$9q}K@ zf5N%XdB(ZrT%x|I_yxQr9_F@?IrI^)%sdAr@M)4CKG$HT`1QQ+eSvf9|99rF+`08% zg8J3s`S7pB2jN@AU&Hs{VZTWyqD7+PM^|tC6uR#}PC763H&dT9Fus10qcW?1lKM=} zt^Zl9dxLoR{DPc#=qKdobM=PS2c28aF6yg`@4##0q0ify zLrd}d&PHL;(b47Dy5s1-uX9`X6#1`-htE?OCZ37+rH>R(k59lupP`>=uHN@E-?{aZ zkDO1%^Ww|I!{-;Q60b`ACg-;9Z07K-b6dAD^}EFz;z#hXuT#rx_jh!@7Ih!@0b;NiSU9d>7tTd>!7yxnK8H=eBM+-Zwr_JP$rXJRR@j9U~sze?D3KbL!s{e;5By zyaMmr{8&6c{+ak@e6jea_!{x2ct75H@$&dK@xSq%;y>Wui@(A9tPYEZ_qm-E&%*m* zeiOe)&Ux|S)L#^T8BaC%+WXygygwnW_*v?+I=AbjG1uoE&h0vRg`5K7UGSoKxc)ct z_<5hJxBR!rf5f@ve@RXq@kRJk;@j}2#W&+k@zBpf`spkFCqCHaSf6v~bAog0^Emla z#E;-J#4qC?iT{Itf`>jsKg(Rb?`M;9>*r?PC$L343%*``(Xx(*JocN668;C_0~@X@@F`={LbWjB;Em^=iKLf;oNfG zpnj?N>-Z`>%)c0O*em`q=jDjYv2|P1|KC!-j_+?%42{oYa#U;e6R6MZ-1>Z%er^<> zgy+ITpCLcLtGE1lyriaCE;{7C#h+mICA$}MBlz0KWDX#l%m%s-~PE~S-h*!bKh}Xg2 z7O#a*#X~>MnEz~7Z`bF3=KqCrn}1_+mWqe>O|2F0O8rLhPWVnd^fQ5eesJ~H&mZ*j zn{(^uO>)kN55vz({#5dB9&RiC|M7o5o(B)t;dK@ND@!Wk+}52)ehKmMcv;C`M1Fno zukfZW$M&0>bvrq?b!U;^Rr~|IhvaW3e}eb~p6{k5@D-B3g8Vh&;eBG?NX|~4H+LuS zvy!uu{PW^F@Jo`Df}!zt-S|lHfAO*6 zKjKrw!~3$PioeeLsXh|Fo%i|770-l!F8&3+M0`B{m3V*Nr?El21HN56iPzbGCw`v# zAMkKJWV{ex4?idHR3qc-Ah0o3nxZgZ~7oR2xTIe$+5N%4>Iv(7DN zBso`||Mz@BeX3E{Ubo?Oy&3Uvy)F4S3X6_xuHN!zkYB*L<)`9xig$^pz)Ol>kCzn> zuj{>EJP-8`iRZ>2!9)Km>HjJ5O?V6Oop@*Q@A1LnSGhmFFTU!cO)dJl2%a4Mf1BGP z=C;(i%`Lp1c%}F~>}!j7b$o~TgZO?t%;8V^IqK@IpReiXFXz@zczy5%@#o0DBKcpF zpJ8--U4?bO!*hrq#Pf?E$1914{%eZgeJN@-IvR+V##@S4!Mli8#|McY=lsqSKk`q! z?jG?8^#3Cs&ilTKas3(RHs|pA>2u=Une#=-pGto2G1tzyIM-(t@sFv0B!RcWtxxMG zynec!_=ohwZc84Ds-~?RnzcsQ*NKGrm+jybgP% z_)+TD;^De|jQ)3sKaC$0Z;AgZehI%IejV3anz7fO$1M0w;+44$?-L(}cM!je>vN{~ z0DQN27S7{o@hbSg;*a3z#$DV0lXzC~kC;OR@y__ec(}i$sT5rl(NW*IT_TX*I)i5o(exD9$ts~hxicc{}E5i>*Owr|4aRKZ^hS7c>JjsURNjn5Pp;R z0zA9;Y&@^{VLYGsH~78c4S8K!aq${>dGQbN%HlKe>f&4RTH>GJ^~5{z`lN>9PvXtR zujBP7t;DZT-%-3A^)HGS!F!7j!~2Q%!`~D?j*k{Uj8DSD>ha--LfJ`I)Z7`Nv(o<=;vEdFPgY4>=db z3*o8WzV?3cFrHStDxO8W8Gf_))A+681Mu6$`{Q?sPsWRgkH^d6;XH=8?Zw0EY&wcBp}q$m`YFZvdd=0_`6|Kr8tL55*Vp8X6RgNJ@P z(9hun{)@}8KI_uw-_EVil)S#=U-2ufn>0SYuEM%QShonC9A#Mkv*cHBZuzyzuOeO< zuOaz^uSQ=K9Z$G=%O6F48>yd>GVZU7)E}e1uXF2X4C}roJ^~+>Apb2_Z~f%29Nk36 zH0PH85jiu(XW(<3`$J#ec!eJNG#cI=7rO zyq=@FcnZ8W9{OC!99oN~W6qsjj;;F@{STD-9y}k7l={QePjPO2=BA&i;^B2#A0^2D z)YV%*zmvbpx#gE6f30{?e3NsZ^R08ssY(5A@oM-1Jj}BXb2uaZA@}zy;-BEROuY6w zys1jGcy!#2hx{C=nsHJRm+3 zKkwZB?c$H(u|#ipzji(wsm~$)171e_AH1G;hs)6-(ea}AMtp?$-&f-Lnc^wAKdunZ zi0>9Jho2VThNqwM|NYt=7BPpLoZIIHJkH~AS@H4sJMRs1G=viSY@ zT=4}pAXPOuQF=|5{4C171n|TfD0H zTD+!sMgBhTQSsb(Gw~GsJxWXQzo~ygJp8>*7x5D0^b%jd&)52jx5eKOe~>>n4imo> zA18hfe;$}1o)>>#d<#B9Jp8$3o;u%mej?rzUn@R~?+-SL&%k#$x95@0kHwE;2c6sV z$d}X~5&sP>Mw}z#4m~Oz|*`N-@okE9^cN_ihq4QZudLuzaRbQc5eM2 zB`2@=VZ5;TKlr`kf8!ayEBFQR5AjRl)A1C{DeN~7{p1yY0ly2k z`-}DY6n&O=ZhfvMzq0sJ{6XhFr?zv;`JMX5#1G-m;GzHU@9nm7^_Jg(KD#-${01My z^Y1BM6@OjwFEEEUUA^V^CjTAhmOpoTod3S~EPSSOpEKXNaG8w%pv3Zab9v{*8icI@vpOp@58e?_c?i-TTZ4~ zan2p$m&v&ow<`O7V=sM{P2f*TPFM09h&RQXOU~_&#r-_*>aG8Y%%Qh)>;IOI;`)B# z8Snwlea@TCEvF0hqs5!zQ}8f{ZuB|R)m#32`uyCv<^M>|67engTIZItf}Gvrf8&Ro zTmCC^;yL^z-V;A1J_Y|nd=&l<9`?KB$v8h1j}yt!n$~CYC!(9^$l=`jIYdrw@dJ2% z@suCO`Gv*LQeVWmU$-P4`rO$%&UwhW{e0kD%t?=n+wa-Y%K6RFueaO99v$7B8>Olj z2ld0l9F{YOan5ZHUD?+J@lN>r;&0rQj^mj5C7pE$St%Jbs-&&7-2D<%K6hH?ESS8w^3$=~hV@<)=hU;GXH zrv&-Gxq8blR4=-Tj*HGMe;GMf#24YIcs@^#YJE;d=azGl`Yhr<;#qOqy*&;LWe#_X zFK-gh=V9?DI4^ZwzV*|IeKmD%{p6k>=d=*djCYXy@b6f??CLFlKKZXZxBQmmydmBg zAC(|~lB>7;{p5%5zmg-f{L$pharNdy@CD9&&SK|Qzk>SZ;-BMd@Niyk?aeKeyM9ZlWV2->-#z{mHsn#DBtX!9zdi=;uyXZ~1M>FXr6#`_O{;yq6NM zh*wIGU)|MP{#f$sIk)^S(2@i9)%p3-a=YBTc?_}}O zjbmRV{ypbw1#aiX`rOZcw>q~zH_^|x;$Pv1CI2}2zqoqK|C{_v&Mp5pa+3Id+4?a* ziKlmNIX6EQ-9*QY&aFQ6!g#;g#FOwmc$nv^$K(34;#um%UNwO?k^Ec8Z!Vr4f8M$E zUylAqN`6V!ohbFysh=hF6{ue#^-ZYX;N0djjea(Z--CZA`9F|<(A8W2*ENW4qT{r4 z%m3@scy4FKkK_MJewN4M`ZWAG#?HItS0n#M=ayfQzo5z{UJAbrw^Vz63HgOxz2$cy zzl?LsZ%0mf@#c6H=RT)~bIW;~`r6_n@W=7c=k3g)m3Y%9;`zMda%|n%^gqBGL-I=6lbe;(I&5WgMoCiy=-7uWZ5 z^_D-2{Nc_m{|RzNi9d=@OpyP9tGE2+N?A+(9ac(*Nsb4SN2j7g_ z?(Om9By%__K9KwGX_sT`?x+7N&TZX^*}qalk`*GxvhJWoXX-m@ap0nzlg7gTH?>)^_<(fnVybrqNBNUTX!z?t;A>G?eVa$ zip>8t@d2&lekO~D&lR8H@~xjb^z)f>>*p-%E*3wHe%TGm*KuzB-|%Ie^SF3={AuwA@Mp!#<1O&e|GV@vK)eZ$ zOVh-+h3`+q_v7D+C-Z#wi+CTLdwTJ~ z^mC(l^0K%-oA|+{vEL?MV0r9!iYMXsh~K>;t}iBjmHPX{>#U6HD~aEZR}=qjRa{?F z{6YLl@eXU_`Uc`pN?x($++jY2yoW9~4@YkLDoZ-$bC*Qib z&r#xe@rk(h`GKpq{L0TnH_`E_bIX5(oG--h!+^Z) z^NF{?3*({BkGP(zif7?*rjdAFyo-1tJp7zH43%}L5^%-&sIJcY+ zsJ~16eY_+d=6QrZE4g~hZ`~}qiH zf3o;ue7g81{6q0|_(DANld-M+zv$n&cJ(%gZp}=Sk~TZHIb0!UoA@Psm*ih$zo%Wj zbBe1PPq>KxB!gsZpwl+Q&s(J|S% z<)0zvJ@KFM4-@2n;_5BG0{JVQTYlkvaX(*)--d5=?sIlHx18qG?-Fl-@5jTOvoVL$ z;tO7i`$_pp{NGStyj%S1Y~m?jiM^QkC)Ah6lcOH3|MASBuGBYsInHS$^_!?~?cDY| zmVLDsABlHOkpGISw|)+hKh(M9&n9Pt_)L7PbDuNCx#g^;eyaF#dxvjg8 z`hUgu;Hmk0q%hC0ugrLIlwtX=u&+GME&mibcZi?B3p)2X#hhDCitpp|68@gh)-}IM zP9;}wIb-SP(FESWx#iqI{xjkk@RoR(L-_YrI=XsWcN**Vc5eBl$>}Fv93L$Cox8;Q z9h1OkOHNI4=84z9Kb4#w56_5) zd4}sMo2$3{Rpb|NZu!rXbC-BKyp-hM&@S$yva7fJAHsFw-12*p^MrUeys_jb&4}|` zC-B!KX9PKe#E0XEInP`}aT+kXFKzk8kAerK@m_u}v4KRWk0zc{y? z@2Ed5{w4mmc!M9}x&15tB%b>7`1kELW%R##d|#9qPmav`xyZiqIJbT}l5>Z62fUEv z7hul!ix;u*!~;912FMP@&W!=r3uU@X+&essm*HGs+ z&qv7_Azl+7FWv^9EZ!Use_tKu6aM{x`L5pjnMps(oLfI{k+VvC2)-Q;`QhJt+MmGB zOU@~BE{gwxr~WcN|2BW?b1!|~i-&c?zh_WZ>Ql9fz9>4XJGXtMITGjA62Hp2k4gTs z!{YkhuHO2&h5V`FW$>kvvy0a;uao+Rso&+?`m9Z#`^2l^N5o&mkBhg(|G>lC{-U3Y zuHN?b9Q~wS9PiuaZ~ZJJCxiHWJU1Tl7rhsMeSrl2faH8dPBrn>cx}mP#Qp1K@nM{= znc{!po5Vk+&r{-||Lc~-`w08$$@6s<+~#9*>%!dfI=8tUrvH56yYa%#eNGAImXq_R zxQ{a8nei&(?eGW18{oCYcjJ$Ve~mwjhdGRA4sBh%^*@3+^l)zd-*hzYzmIq(e30Z1 zd?l_QmB2rioZ{px5HE@^7O#vi7q5t~!NY#X(9dDP4bh) zYv4DDH^8%t*T-|?q0hebQ(k-;{!jvMCiyMMZzB>WHY@VUh4mc{2K^s|KeyyAnxJjFkypNA57Gd!I4K4G5Xz3`5b z6aF03!`0jUYXkSM!OrcvnnliV@sapj;>C`|`=2OY0G}q_2cIe47N0ME75`NHSA3cH zYsce$R*84SH;JeJIj-L#eunyQo%^{RaBg!OPR=3m!T1UB#rP@l_wjRhxURx^yqdss zEsysRu9J!<;$Pn;ULMbfhx`rv+~Yy^$L5f^b#xOQO`O{tYLVYu{1NF!_A}8ayeIT9_|5$t>zCipPe6e`BU*i1b z;(75k&ix!VJGVKkrhc3FVtlXo8T@e>XW<#0%qD@sPio{Iagz@<)>YkaNp_hMXGWW%0+wQ~ehAS6_U~so0+t zzwLDF&xvQkpBEpDcM|V|4|Q()TFt)3JGXu9pnkIWI(#}F=Cn?&O!0N@Snv~o{8uGt9TNA4iEjD>KfNy zb@kRyMf%COD*pZC$gH26$;l#~8NWrm41TM4F}x5S`kCE7Uay3!w|<_WpDNC+pBChV z*X@QrpTTQL{!;Smi>G@#Ubmxo@=LMzNZ{k}u`oBtjYVmD&Cg+y(Avrmn+j%MfXPlcyyck~4x#gTEr<8Nc z=|Fus@wRwX+*Y%n=ZDV^ua&^tNX|fVo)>=|e@Xl;yodN${8jN8_(1Uw@R4}vf6u^p zZW9yuXOgp!oWzUfG`dkaI$O9)3oA8GcTD34YPJUpLiP@pY6Ot!e9Sp+2qnX8d|Q?5pi-@z>uY z{>JOE*K|3yZmV#8I=6LyCI1=mJ$Os;3FqVdw&J7k7xB>NcKYn&>aCxb=x4Zd>nFwE zasDXrtK?4<&rbb2;#u*T;`idS#qY)!Ik!HC(&uXD*5||2uM@9|Z^OeJejX6-YoDvP z{E6hBbZ+^L$@xvZA%0%GCw@`9D}L3vUpL*_xUb}BO+xFR2l2Y%-{Xy(Tc7Lb^Ev0%=XvT|i=V|iiC=#q zo?}<>On4vhe0YEHJMbam_u+4fm&M=4!+ANv&t0dwdfV>-_PfBj?e{Tq7Kzu!my17- zuNH5EuXpa(-R9iZ9YFm~@z?N!c-U7)9?ws>ddtt$F1m@13(hTn6gii~N8s13i_cqf zRO@rDcWyaTsJ}^k5}pSSecni)g%Tw!hxZ*OM`r#1 zNzNy(-uw){G(rA4S8w@mlmD%A%SrK1+|O?DtK=UQ&rJOZ@r?Ly&TZWptb5+Mt(%+r zi{d%)t9Y2(O#|XSGp>*S8@wofi}+J`5%Gb;+ASZuXvQ} zWW1}l{ibXm-9*R7QooA&&!xTq^3OKEm9#F^8PuHM+-j`4ag3cTO?*+DA9h(bl=`t2sFx#Gk>ti4VeiiucD~6Q6?*5}$#O6yJi672kkQ!NZ)x zerG1|6_Rs?oHgRV;hV+NU5(GzHu2Q>emwM(rAJ(U)YaSkJ2C&ioZI{hl5;`)Ry@U~ zI4?P>wfYzEG~!M0%;MYe8^zb-xx};mcdt)Mx=s8#ypZ@r{2uX6cyZ@`4&|Nyx33iT zXcK*|gLn(Py7)Z2miQFBo_NueaehPbTk+=NlkisJqwwy|ZC_(KzXP1xzD`mhFm|B6ZjXB(=1iIuchM8;_D=5Ir-aMz4iYE{U35}{dXYeC-L_9Z<1fGe|)|E z?dmOmJ^5+BzV>>4m7EOX{qU@Kn9ptR$6tS&tGE1J1USsNB9EgmXq%J=q5TAJGY$espIQmx%eu4 zy?FKO;`*<}v*J6Q+q(H#_pozYw`bZo=cssh{3IUE}kF zTekx17IJRu4kG^^@d0=l=ay5GoClp-&J60Si%-NKb8b0}$Z6!GrmqT@;M*DznK+#e(}%oqIh!DqwRMg`>NvH`p=so z?&m@AJa`?+zvrWP-3G4S@>h}H#<}H}Cg*wal6V)%|AYI*5b>-Z#_P^^IkxUL*8S4C zt@|kX%fxHo>%?EfH;H$^zjbcw9%J1D&TZWb)E^T613!a@^VpDm{p;#2KYfSjCOR_k zxi87l|F`_xGREiYdhuKFTbx@?4suE*@Jh}t|8a7viWkOfia(ku?&neQ0(c`l?6))5 zPYYLXeU_%ruFkEWTQbM_-Nm!xuSkAf=J}R*_?*h6;@M`$*VWJBSNp|&CV^+#8vlMc zFGc9*2Jw6F?0A?%UjF=2RJ;gYU3?|pRD1*8U3?opQv3+ML_B;yzgK(*&+o^?ukRV} zKliryzhPh5@dCKb$IkCVoZm9e?ff=iKIO%$;tz_S!>fxg#UB&TmnFV_>WL@gO~kk2 z&BYht?ZtcC5a)Lke-`g9e#eb*eQ)t}_yFo&AG=-@w$`5JK`UR zufS)C&%_sq*Sa~*UnE`yUoJi!UoAcW|606X);NEw_#^lp@oCxO`UB!4@T1}dv&Z!( z#IMKCh%dm;iBH0>h!@Eb=cn8r-(SMxMov5f9_~jKxF2P8^>%*eaX-rM+|KV?h`8FC#u1uYzkokGOi@&r{B=pLOIsExsCWA$|~VBfcN+?A+E}&K!C=w{_1^ z|BCn-dKX{4RVk9{M>$Ki`V~i+}HO ztj{C#dCIxYka;(y}j#LwVY@zBqM%s>6N@pTlg zlcX1-iy}I*Ik)R1DQA4Y%PD?^{5!=nQeRL!883l{ep=B_#RT3^a&nW?SUe}*T5`6K z-#LK~mz?6{j1n)3Pm-Kp_Z{t&)Zax(DquDuETFUfg^oD1TO@RU2_ z^B(5kesKKjj0wCDZr6!j51q-mN4z6mMsg0l73bfdz#B`>KysRizmB(;oIBr+^IuBf zqaTgmB1{`aol9=EUO{&>o{&3`R9e~7Qa z&q@AB^0R#x@565G9z7q=i-*U7{H$Bdxvl#>`K847;+4d&;#I{jzJ}z#kN^h*uXck3S|}1Ft7u z4R7k)`Yc4B9h_UA&r;u6{0Y3L_++x%K}d^`*r-;+4hc;NkP3Lq8wkwWR(Fysr3X_|tgUZ}|5GyGs2g z>br}t#`{RlzUlECM~mOapHDv$FM+QXe-Ym&{sw+Vd<>p`@3rS~5q`V)H~4+xKj4px z|AV&^&)O?q?^W^Q_(bt3@5J@%#FMyx{U&|`kE^-%#b0OV-L9+pTvvsh+jVuG^Ky^) zA9!ip((E2|U+*}#imSK$7s;>d-12kY7T@ol6wih?7B7uA6EBXp6R(ZGAYKE1S-b__ zOS~!G&$-{%VCS~4zSIvF?}fi5J`SHKJ_esAJ_8S*Q)}nZ)_o73FZDm*pNj9ompQk6 zz0LXB)K>N&T$jmQ_T+faNc-dubk-b#E1-cdYf{y6_d@e|bd7O!0(uJ0#a2p=q7 zwqRU8T>J+7E%ECM#q|@#)8ZeCcf}WoKaMXJf4*>>zg+xYe7*R4cg6Kzi;u^5if_lm z=Ld(!hpqTwsXu`q72l8lCjRiOWhOKUlA{cr~Urg`(qb8gZLx(&EhZI z8|UW`FNxnSzN1K7pI>}3URFG9vADj1_zy*6e@Hy3c zoM&;Hl2wMsy|%92?!PTMMK{sW!@1pmPm|wA{5U>P@`t?@pO2BQ-tylfe~NR<&t5X_ zf2#OR_(uuyKXvt%znJ`0&Mm(PIcvr5!Z$hhIo~?BoQJ93EnXErfQLE1%N+g`PtVUk zFS{ID_XqmV^ux8+^K<0iAl?wqiHCK!kBh%PpR2e0TRTTL(NWyF?Q0x4rNu|#l@sLG zaP^j7mHhh7Eq@LwVIbzdRBf_OLlAv~fmzokob6CM4WTmEu#UKd}C4|eWzMmx8h zz0|)Yz8#;0hdFd)4xfmREjZQV4bEy`FZ^thu$WMDHKF?Nf`Q6FC*}3IZBqxV>Is8`VKBs_l%XyOeyTt3_ zMe#8I1I(ei_>KMIz8`lvw(dCkZ|>aI?LdAj@z!`p@pteS#mD2X;-Sy`xgLhOdh2I4 z{Y-Xl{j4G9J@IAuhvI+YAB+Ene9eqoLm1* z$@x+I8T=RV9{6eTm+-&EN8&{)DW%p6jQvtGD_8!2H`exBVU^=LPX2_{-vd;Jw68;{)+9pM3N) z($!l(r|9QB=hjb}vhnryf%sMOKbHLBd|&sutGE0tFGe@f@s)GS&rkja@!Rq33G(;5 zddn|B{?E=WzalxmikHLxaPD*dac((JQh!;zE}rto___^qeuz2b6hFZH!{@k%`r~*# z>XV~2t)GhQD}0W-x%JbLbz8Z5^VWEKS@$gYqr|V^lM?t+$zMkPO7SK5TFJR-NIaM0 zuHN=li+%m+-1^^6&fnte@uVYhUYJAXa`E+rdh4eX{S!eN zitD$E-;JLY|D1Vd`6>RouFcD}67b@W-ux$QUgeerp$Dt?^())b#d{iEV< z*21^O>_)#Zu_c5&YR-Z@wdfW z;*-Ri;qT$0pBnVDTD%Uv+2vTD_2~0}bL+Dw`G>^2<0r%i;itq0;OE50;Qxq^!c!iN z=Nk4E`p=la3*mNtt^cXy+#~)jURr!EexLXp`~mUBcs21a@VdD6-^kV5{97>p*3PZ} z4dk>JUx#-U--&k@-+{k|hkp8VJq&mC*3XOdGts&A^CLO$h#$hIN&Z0cm$`b&f0g`A z&Mp5cIa|d4#CJ>nX7UfaddnY0{vXaQzhZ^>e*KqtIsCGCeLTgn_&Q9EGA!qD{5t1; z-RqrOeMjnV5^s;^7JnVjEB-28SbPkAulNYOjQDcAy!c}LLGcrKb@8KkZ9H68`#3Kx z#j8$_=h)48rf5E2$EPLfHF5hrJKlDFbM)(U)X#8kly5|wzXA{E>xPQ)7pxJ_fNzkT zd&oH~-Uk20<=AEz)?RE7MoF`^U~7Q+kAF#Ub;B9 z`8+^QH}Ud#FXukzb?27z0`+f*x4}o@+UF!!Z~5owbGCEKA5G3Y@nQHEl3!#@d_App z^_G9jOVLeqY;|t=^U3*Ed@jC6^2?AP{{4iouPmeDb^moawr(NTP4{#B`^k~nx=YE= zD83laiiiAr__@$+uHN!%lYftM%ilmwG4XYHX~{26{*$iW@}D8UnRCnEMNUic9e6v* zziVW?|5wG!Ft@SduTcMv%eQ{o)6ZPz*3T8zT_}D6Un2SA`96HDtGE1< zl~PO1MiFr-6aq|bGO@&pNu_DCvVLT?St>4#%Y-pyn%P3>7^Wtgjpmj%nu<$vzMRjO zd+ujAfBl}8zLL0i{$#crQTtiCzlP)hrVuU?zo(> zJ#hZCBmc((cKb=>scF^=$S0*+-$FiRvh{87a5JWySKD!3{p7fuSIcq!93+1YeuBJt zoPFG#BCidGDg$8Rt4i}2y(v+(>d zj(i?Gll)b9Hu?UUw(n=jo8#-aH_7vs+WHM}-QTm=uTRJi!MBnR>tm1aH{|`{CFCpM zyUE{x|4iQCcANhTc~$stnUPum@i2n4Kp*zUMG+jp0(CYd%)u zd84i4a{hPfYx{3U9u4nIo(}IyJ^>y_z7QTy{vvz;`3Cr1h!bw zl}uiWoK*4)s81&^gHI>FD#7N@Ag>0WL;f;6mwZ0_IXEB3*PMFU-_LOzmpU%{yA3%j z$iITGCqE0{K>iziGx^p1?fz~hZvx*=emA^?ygz&&`D5^($)~}O!+CzrI`uL?KVp8W zAGeQ-aAPt*uOp`x`77{7~*JMsg++HrK;`&QZY zX5=H5S#Ry}o^YN2^%(ay^0n{;PfjxVx#f1;ndI>W)?X#hL!bKoY0{6(TQkhthp5*+ zzePXm$iISrLVgs!iTn`!8}h1m+Q-E<@;^|&oBT@Dmy$Pz|3cmoevG_5{5Qwlc?g`a z^T+d3$8kBY`Xi@4c|5#1T+(Du3o!rJIQ24aH0J*X$0a`%IX96{fcGYU5`H`R6YxRg zufqqEzXBgg{vmuc`3m?%@~`3gzIJ+EeGY#Z^*TSrn4iB=&T-VwCqD{*o^sA2XASw= z@MGi`;b%PF;AHT8kmGUz<2E5LgI@*L{aU@$Zhr&$PWU+T^fk7A7Uee?U>`3z~?zrS^M|~agVt50%_IVTL z;X3k%@O*fKlOy9UNB_MYmvN6F|90|&@IjQHjd6!N^^(62`Qsdy{Mv);<4fOfQ076r z20YV~Kf}q9{94n^g;{bPmz*}pnMWQ8f6j3?XQAVga|`P8$-Bbeg6sT0i+T8%JP-4~ z#mSLzyQ2Rcj?1`1kpBbuK=@wA-JC;?OHKyrkCLauPs6o;?eh<(Uh;>a&$_3B=dI-D zAg2NOEO-mJ=I_G%wDouo%6SDjy~!8A`%=zN$WJ2w0Q3K#lOy|;jQyJCxa`*w|lELZABnmQpVs3lBSEkC*meANkSbt8m>fM~aj!RA=>hB=G6P^gyKEu&x7WsJiTjX=$pO9~cZznH?{|eXrdJz5S`x&Yy z!!J<%Yw*Ci(Bt?VyaxGBcy01;;f={_47SHt-)~U+sRD0J^*6!wegCw+BRrPsC&Igs zC&6!r>v4(r*zRYdQ=e;&?~^!xMmsLY{dwe!C7%bMME-a9L*xbUN8sGgY^UDs=UK<4 zpC6I)0(lAib@EH_MdW4h_sRb>#2&BZbv_@&JnV7m zAF8y~#&S>)X@D#`0oXL($ z&T!OckPn4Vg=?Q5qR)lob-uL6<16xb_+Ij&Z*6@UT#lFYlZA0Fk*C6|U9j6}{UUfx z@`dn*Am(moKD^l{y2FD_#E=<;Pc6c!Ji`^0$&K%{%`%x9>2Gpdg(ta+gzAs zmE+R?6y&TSe+d4O<8IDpj!VwpP``zI9{g*#_SqMG{!YFS9=K@tBiv-mxX)&r3$sKx zF5|wB{D$Oj!J9em=CpELa(+O4Tk>Lf2e|gHect5MOa4dM=E5uqj!S;SVfH*3Kwb-e z4|xiF1o{2&QI5OgPHu|eYdE_17 zFH?TOHhWy(bm}F){wzs1KYw;y@>7wsntTGh(38K}sh9j{Ii#&zDhn8z8J3g6Sm7O^Zq9yXoJ6#N15tKpgC zG4QG6*TZwjyThL*?*^X-*T+$3?C%nC{r|{o$e%#{7V^YBcHR!a^*kJbaSxH-4L?c# z4E!|t&Vx_3&~f)H^FrtYT*Av6+87Z|E+V(g;`1+m;OtTbAWt1{22L3 z_(}33@G>~}6IM0&JmdCL&vEIe$tYXbh`a&3C3y_I6?r@Ob>ze09mog6yTP^p1k7h| zr(XJx!+Z{MT>77doWbOOfe&-s%}H`xa^69G3i+Gx2jJT0VDveUT>sDA+vNGE|Cqc0 zzMuR6`~*DQ^!SYVSR;RIYL-(TKS#c-maV@?-qIfSz-3{<^F;DHwYBwEkiUkUn&d4a zZGBzxd#-?2v)3|j^0%|cG44gj@voZ73+q-7*1P^!$0g?^a+cHx*1P#fWWvlM(5%vcAtvEjF`1RvJy2o=ozR=^7ng++MZ*Jye9$si3 z>UnlGu!Ot_-tel>`b7BtHbIwNUj*-TO{g!2zwxI~$FFMz!n=lgchq0)xbz>1{<}CX zTBr}n>VNvPX3 z^LlVy&}G~>JRc=|6m&Ts`bnT!Hg2@n+Naj<^!Ra)*Z!>XoK_yc^$V)U`FXd;CwlyK z@|%&f%Hv;ne6Pn(J1*yyF8A%RxAeHE?>thuKYBLQqp(4bTJ}I_j{3_Hp*|M%?|Zz^ z;|=NsbC#J5yJo%*>hW7WKE&e_Jswj(IIcXm>A1Ife3-}6JU-jw;~E6VmE)zKmwPk} zdIsiFt`a>S)hJjmIXeHHJ>JLT_j8`*F|bRFBW{_yUhF^?1~<;J9)ex0W9*^Zsx5g*rHp=kd)+ z!TS29_;b4&xNS_RpMVc@T*j4sE?<&^_2T+^zWvxxk3#vC6GD9vd~;@~<7qswn_P1y z%?Pbmuk%=_b~TWR{|hCn(*LjMr`3wkdfng0)`of%>eDfSnxkJY{Jb-? zUcc@r^LV`b*=d!>E~JlAo_FRf}W%<_MZOZ^K2L`BTlH zOZ@`W_i$Y56H(u)POx4)8s61$$+>8ECveS`!Futr$iJCff30J-L0j|d-%8V_`lpAb8xVbG~NAKEYC*lc@ zKkM&1E-pk{IJ-*Iy_w(%69{jic;^oo`F7N*klHZK=cH}*<9z%XR);p2o-@^oMB!3F)I*#^} z509t%rC3iO{}}57$@TTjVDj&=K8$=X*6$}ji1jh#r?EbsJPapRDtT=<-bSVTc**=X zhwD7)JhX!Ug>vw+Kafp+6Y6uwd&6_d?|{!I9|C`#d?fsJxU9P8RodnD4)q9pe=I95 z)QdaX^=$(}y#OcH`f;INJkqX@Ee`d>jduM~Tick98+(mipZi&;7vqK0uCGHq7O%JN z#m^5lM}NO1(hgI;ukQZdNuG}N(d5}!&mtd<&$HN#iu^px<58;5#{(VT)~cv4h3o56 z=}|s({^RZLR@BGhxTKON;^!jz`n@7YPDsha&a21a=R2dx3)L_Yd)>uqrSH79@vbT{@VZT)QWI6Scyk&ng`Km^Vg&5wP-<_se*g}+Ol zjwj+%H^m!f_FdEg^E?jdsh`{i!+Li^OeqkM`yvdHF?kmvu?`YH0*Ppo&7FJ{c5$1(0x z>qE$k;S0!1HzJ>0Kc7Z42+c3TCzc`P#anDnKDqv#+5z&!FKvC(hN1b{_`E)vT>nnz zUGmcHHm8(4`+Mvcc^j`=*BPBH{CM#uHRv>0poaq_q{(@gp8q%mVMQXUSu+XSah%*>J|%g3~J8A+4Jrx>%FWlSFb zzcr~7C#PtE*)hE-JgR&>Ic?IUl*wiyCZ}bk#Pl6Fw0&k)Qu2dXA3u3YOnOFIdP+vt zbc~%cVbr*cq)91u*8l&PktRaUT)Yga2#mw6nRx#Zy#r6Px*BM1ZpllqxC*g1BG=g$ zX8HZGZmwh;yo}J(CeRj+mx;F6Toz$m9uF_~D(bE`wpDxW!snF{R_UK0d@a1X9%{J&mZnmblg_7(G75Cq+4We4>BJz zM4b6>m!hing=-{U4@H_g|2HDrxr=VEHs0KjPHCC~C$PPa zqxF0|$Cx`R>%X+N?Y|#3j5OD>D>}aB%CEP``1tf`ZrLT`jGe!1nphoQub(pIm2IDg z@2AHhPp@=*y?(*7eKEH8oqsyr?_m3i9m7DS*gj#7j%=@WT-8P9MrHFCUB}K}URyg- zq^Xmaa=N|F-zsC}Go^Q!by;FDarNoIQdwY=sjY1Leoxqmzv0*NxQYwj{-5Ta%KBg1 z#eSinpZ6n8og8D`Ui+7q@#W*2Yj>HEVH=Ni(cI?R9mXmf|4;(P$M%utT3*WV_=k;E zw*Lhfe@-t`;4Hem(jVqVW!rbd7tXgV(Mo&G+m{)xtpBF{(Lat~q^Xln;kv!fUrjT( zj329anA@^U`?Ec7YT_?ngaJ?eBQnQ+ehm}V?f^iZnJ%5 z$FJW2d;Ct=t3agLzNPul?KReH{y)7N3Y0u$=db$JvSxoyc!eqE?IoTb;^p #include +#include typedef struct BatchStats { uint32_t draw_calls; @@ -13,9 +14,10 @@ typedef struct BatchStats { } BatchStats; typedef struct RenderBatch { - uint32_t vbo; - uint32_t vao; + uint32_t vbo, vao; + uint32_t shader; + void* vertices; void* vertex_ptr; size_t vertex_size; @@ -29,6 +31,10 @@ typedef struct RenderBatch { void (*flush_callback)(struct RenderBatch*); } RenderBatch; +typedef sl_vec(RenderBatch*) BatchList; + +extern BatchList batches; + RenderBatch* create_batch(size_t vert_size, uint32_t max_verts); void flush(); void flush_batch(RenderBatch* batch); diff --git a/include/camera.h b/include/camera.h new file mode 100644 index 0000000..fa5e8fa --- /dev/null +++ b/include/camera.h @@ -0,0 +1,11 @@ +#ifndef __CAMERA_H__ +#define __CAMERA_H__ + +typedef struct Camera { + mat4 view; + mat4 projection; +} Camera; + +void set_active_camera(Camera* camera); + +#endif diff --git a/include/colors.h b/include/colors.h new file mode 100644 index 0000000..f8a1569 --- /dev/null +++ b/include/colors.h @@ -0,0 +1,12 @@ +#ifndef __COLORS_H__ +#define __COLORS_H__ + +#define WHITE vec4(1.0f, 1.0f, 1.0f, 1.0f) +#define BLACK vec4(0.0f, 0.0f, 0.0f, 1.0f) +#define RED vec4(1.0f, 0.0f, 0.0f, 1.0f) +#define GREEN vec4(0.0f, 1.0f, 0.0f, 1.0f) +#define BLUE vec4(0.0f, 0.0f, 1.0f, 1.0f) + +#define BLANK vec4(0.0f, 0.0f, 0.0f, 0.0f) + +#endif diff --git a/include/gearlib.h b/include/gearlib.h index f9f1e76..056dac7 100644 --- a/include/gearlib.h +++ b/include/gearlib.h @@ -1,8 +1,9 @@ #ifndef __GEARLIB_H__ #define __GEARLIB_H__ -#define MAX_VERTICES 1000 +#define MAX_VERTICES 2500 +#include #include #include #include @@ -10,6 +11,7 @@ #include #include #include +#include #include #include #include diff --git a/include/oldmath.h b/include/oldmath.h new file mode 100644 index 0000000..0af6b69 --- /dev/null +++ b/include/oldmath.h @@ -0,0 +1,2554 @@ +/********************************************************************************************** +* +* raymath v1.5 - Math functions to work with vec2, vec3, mat4 and Quaternions +* +* CONVENTIONS: +* - mat4 structure is defined as row-major (memory layout) but parameters naming AND all +* math operations performed by the library consider the structure as it was column-major +* It is like transposed versions of the matrices are used for all the maths +* It benefits some functions making them cache-friendly and also avoids matrix +* transpositions sometimes required by OpenGL +* Example: In memory order, row0 is [m0 m4 m8 m12] but in semantic math row0 is [m0 m1 m2 m3] +* - Functions are always self-contained, no function use another raymath function inside, +* required code is directly re-implemented inside +* - Functions input parameters are always received by value (2 unavoidable exceptions) +* - Functions use always a "result" variable for return +* - Functions are always defined inline +* - Angles are always in radians (DEG2RAD/RAD2DEG macros provided for convenience) +* - No compound literals used to make sure libray is compatible with C++ +* +* CONFIGURATION: +* #define RAYMATH_IMPLEMENTATION +* Generates the implementation of the library into the included file. +* If not defined, the library is in header only mode and can be included in other headers +* or source files without problems. But only ONE file should hold the implementation. +* +* #define RAYMATH_STATIC_INLINE +* Define static inline functions code, so #include header suffices for use. +* This may use up lots of memory. +* +* +* LICENSE: zlib/libpng +* +* Copyright (c) 2015-2024 Ramon Santamaria (@raysan5) +* +* This software is provided "as-is", without any express or implied warranty. In no event +* will the authors be held liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, including commercial +* applications, and to alter it and redistribute it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; you must not claim that you +* wrote the original software. If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but is not required. +* +* 2. Altered source versions must be plainly marked as such, and must not be misrepresented +* as being the original software. +* +* 3. This notice may not be removed or altered from any source distribution. +* +**********************************************************************************************/ + +#ifndef RAYMATH_H +#define RAYMATH_H + +#if defined(RAYMATH_IMPLEMENTATION) && defined(RAYMATH_STATIC_INLINE) + #error "Specifying both RAYMATH_IMPLEMENTATION and RAYMATH_STATIC_INLINE is contradictory" +#endif + +// Function specifiers definition +#if defined(RAYMATH_IMPLEMENTATION) + #if defined(_WIN32) && defined(BUILD_LIBTYPE_SHARED) + #define RMAPI __declspec(dllexport) extern inline // We are building raylib as a Win32 shared library (.dll) + #elif defined(BUILD_LIBTYPE_SHARED) + #define RMAPI __attribute__((visibility("default"))) // We are building raylib as a Unix shared library (.so/.dylib) + #elif defined(_WIN32) && defined(USE_LIBTYPE_SHARED) + #define RMAPI __declspec(dllimport) // We are using raylib as a Win32 shared library (.dll) + #else + #define RMAPI extern inline // Provide external definition + #endif +#elif defined(RAYMATH_STATIC_INLINE) + #define RMAPI static inline // Functions may be inlined, no external out-of-line definition +#else + #if defined(__TINYC__) + #define RMAPI static inline // plain inline not supported by tinycc (See issue #435) + #else + #define RMAPI inline // Functions may be inlined or external definition used + #endif +#endif + +//---------------------------------------------------------------------------------- +// Defines and Macros +//---------------------------------------------------------------------------------- +#ifndef PI + #define PI 3.14159265358979323846f +#endif + +#ifndef EPSILON + #define EPSILON 0.000001f +#endif + +#ifndef DEG2RAD + #define DEG2RAD (PI/180.0f) +#endif + +#ifndef RAD2DEG + #define RAD2DEG (180.0f/PI) +#endif + +// Get float vector for mat4 +#ifndef mat4ToFloat + #define mat4ToFloat(mat) (mat4ToFloatV(mat).v) +#endif + +// Get float vector for vec3 +#ifndef vec3ToFloat + #define vec3ToFloat(vec) (vec3ToFloatV(vec).v) +#endif + +//---------------------------------------------------------------------------------- +// Types and Structures Definition +//---------------------------------------------------------------------------------- +#if !defined(RL_VECTOR2_TYPE) +// vec2 type +typedef struct vec2 { + float x; + float y; +} vec2; + +#define vec2(...) (vec2){ __VA_ARGS__ } +#define RL_VECTOR2_TYPE +#endif + +#if !defined(RL_VECTOR3_TYPE) +// vec3 type +typedef struct vec3 { + float x; + float y; + float z; +} vec3; + +#define vec3_1(x) (vec3){ x, x, x } +#define vec3_2(v2, z) (vec3){ v2.x, v2.y, z } +#define vec3_3(x, y, z) (vec3){ x, y, z } + +#define vec3_MACRO(_1, _2, _3, NAME, ...) NAME +#define vec3(...) vec3_MACRO(__VA_ARGS__, vec3_3, vec3_2, vec3_1)(__VA_ARGS__) + +#define vec3_spread(v) v.x, v.y, v.z + +#define VEC3 "%f, %f, %f" + +#define RL_VECTOR3_TYPE +#endif + +#if !defined(RL_VECTOR4_TYPE) +// vec4 type +typedef struct vec4 { + float x; + float y; + float z; + float w; +} vec4; + +#define vec4_1(x) (vec4){ x, x, x, x } +#define vec4_2(v3, w) (vec4){ v3.x, v3.y, v3.z, w } +#define vec4_3(v2, z, w) (vec4){ v2.x, v2.y, z, w } +#define vec4_4(x, y, z, w) (vec4){ x, y, z, w } + +#define vec4_MACRO(_1, _2, _3, _4, NAME, ...) NAME +#define vec4(...) vec4_MACRO(__VA_ARGS__, vec4_4, vec4_3, vec4_2, vec4_1)(__VA_ARGS__) + +#define vec4_spread(v) v.x, v.y, v.z, v.w + +#define VEC4 "%f, %f, %f, %f" + +#define RL_VECTOR4_TYPE +#endif + +#if !defined(RL_QUATERNION_TYPE) +// Quaternion type +typedef vec4 Quaternion; +#define RL_QUATERNION_TYPE +#endif + +#if !defined(RL_MATRIX_TYPE) +// mat4 type (OpenGL style 4x4 - right handed, column major) +typedef struct mat4 { + float m0, m1, m2, m3; // mat4 first row (4 components) + float m4, m5, m6, m7; // mat4 second row (4 components) + float m8, m9, m10, m11; // mat4 third row (4 components) + float m12, m13, m14, m15; // mat4 fourth row (4 components) +} mat4; +#define RL_MATRIX_TYPE +#endif + +// NOTE: Helper types to be used instead of array return types for *ToFloat functions +typedef struct float3 { + float v[3]; +} float3; + +typedef struct float16 { + float v[16]; +} float16; + +#include // Required for: sinf(), cosf(), tan(), atan2f(), sqrtf(), floor(), fminf(), fmaxf(), fabsf() + +//---------------------------------------------------------------------------------- +// Module Functions Definition - Utils math +//---------------------------------------------------------------------------------- + +// Clamp float value +RMAPI float Clamp(float value, float min, float max) +{ + float result = (value < min) ? min : value; + + if (result > max) result = max; + + return result; +} + +// Calculate linear interpolation between two floats +RMAPI float Lerp(float start, float end, float amount) +{ + float result = start + amount*(end - start); + + return result; +} + +// Normalize input value within input range +RMAPI float Normalize(float value, float start, float end) +{ + float result = (value - start)/(end - start); + + return result; +} + +// Remap input value within input range to output range +RMAPI float Remap(float value, float inputStart, float inputEnd, float outputStart, float outputEnd) +{ + float result = (value - inputStart)/(inputEnd - inputStart)*(outputEnd - outputStart) + outputStart; + + return result; +} + +// Wrap input value from min to max +RMAPI float Wrap(float value, float min, float max) +{ + float result = value - (max - min)*floorf((value - min)/(max - min)); + + return result; +} + +// Check whether two given floats are almost equal +RMAPI int FloatEquals(float x, float y) +{ +#if !defined(EPSILON) + #define EPSILON 0.000001f +#endif + + int result = (fabsf(x - y)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(x), fabsf(y)))); + + return result; +} + +//---------------------------------------------------------------------------------- +// Module Functions Definition - vec2 math +//---------------------------------------------------------------------------------- + +// Vector with components value 0.0f +RMAPI vec2 vec2Zero(void) +{ + vec2 result = { 0.0f, 0.0f }; + + return result; +} + +// Vector with components value 1.0f +RMAPI vec2 vec2One(void) +{ + vec2 result = { 1.0f, 1.0f }; + + return result; +} + +// Add two vectors (v1 + v2) +RMAPI vec2 vec2Add(vec2 v1, vec2 v2) +{ + vec2 result = { v1.x + v2.x, v1.y + v2.y }; + + return result; +} + +// Add vector and float value +RMAPI vec2 vec2AddValue(vec2 v, float add) +{ + vec2 result = { v.x + add, v.y + add }; + + return result; +} + +// Subtract two vectors (v1 - v2) +RMAPI vec2 vec2Subtract(vec2 v1, vec2 v2) +{ + vec2 result = { v1.x - v2.x, v1.y - v2.y }; + + return result; +} + +// Subtract vector by float value +RMAPI vec2 vec2SubtractValue(vec2 v, float sub) +{ + vec2 result = { v.x - sub, v.y - sub }; + + return result; +} + +// Calculate vector length +RMAPI float vec2Length(vec2 v) +{ + float result = sqrtf((v.x*v.x) + (v.y*v.y)); + + return result; +} + +// Calculate vector square length +RMAPI float vec2LengthSqr(vec2 v) +{ + float result = (v.x*v.x) + (v.y*v.y); + + return result; +} + +// Calculate two vectors dot product +RMAPI float vec2DotProduct(vec2 v1, vec2 v2) +{ + float result = (v1.x*v2.x + v1.y*v2.y); + + return result; +} + +// Calculate distance between two vectors +RMAPI float vec2Distance(vec2 v1, vec2 v2) +{ + float result = sqrtf((v1.x - v2.x)*(v1.x - v2.x) + (v1.y - v2.y)*(v1.y - v2.y)); + + return result; +} + +// Calculate square distance between two vectors +RMAPI float vec2DistanceSqr(vec2 v1, vec2 v2) +{ + float result = ((v1.x - v2.x)*(v1.x - v2.x) + (v1.y - v2.y)*(v1.y - v2.y)); + + return result; +} + +// Calculate angle between two vectors +// NOTE: Angle is calculated from origin point (0, 0) +RMAPI float vec2Angle(vec2 v1, vec2 v2) +{ + float result = 0.0f; + + float dot = v1.x*v2.x + v1.y*v2.y; + float det = v1.x*v2.y - v1.y*v2.x; + + result = atan2f(det, dot); + + return result; +} + +// Calculate angle defined by a two vectors line +// NOTE: Parameters need to be normalized +// Current implementation should be aligned with glm::angle +RMAPI float vec2LineAngle(vec2 start, vec2 end) +{ + float result = 0.0f; + + // TODO(10/9/2023): Currently angles move clockwise, determine if this is wanted behavior + result = -atan2f(end.y - start.y, end.x - start.x); + + return result; +} + +// Scale vector (multiply by value) +RMAPI vec2 vec2Scale(vec2 v, float scale) +{ + vec2 result = { v.x*scale, v.y*scale }; + + return result; +} + +// Multiply vector by vector +RMAPI vec2 vec2Multiply(vec2 v1, vec2 v2) +{ + vec2 result = { v1.x*v2.x, v1.y*v2.y }; + + return result; +} + +// Negate vector +RMAPI vec2 vec2Negate(vec2 v) +{ + vec2 result = { -v.x, -v.y }; + + return result; +} + +// Divide vector by vector +RMAPI vec2 vec2Divide(vec2 v1, vec2 v2) +{ + vec2 result = { v1.x/v2.x, v1.y/v2.y }; + + return result; +} + +// Normalize provided vector +RMAPI vec2 vec2Normalize(vec2 v) +{ + vec2 result = { 0 }; + float length = sqrtf((v.x*v.x) + (v.y*v.y)); + + if (length > 0) + { + float ilength = 1.0f/length; + result.x = v.x*ilength; + result.y = v.y*ilength; + } + + return result; +} + +// Transforms a vec2 by a given mat4 +RMAPI vec2 vec2Transform(vec2 v, mat4 mat) +{ + vec2 result = { 0 }; + + float x = v.x; + float y = v.y; + float z = 0; + + result.x = mat.m0*x + mat.m4*y + mat.m8*z + mat.m12; + result.y = mat.m1*x + mat.m5*y + mat.m9*z + mat.m13; + + return result; +} + +// Calculate linear interpolation between two vectors +RMAPI vec2 vec2Lerp(vec2 v1, vec2 v2, float amount) +{ + vec2 result = { 0 }; + + result.x = v1.x + amount*(v2.x - v1.x); + result.y = v1.y + amount*(v2.y - v1.y); + + return result; +} + +// Calculate reflected vector to normal +RMAPI vec2 vec2Reflect(vec2 v, vec2 normal) +{ + vec2 result = { 0 }; + + float dotProduct = (v.x*normal.x + v.y*normal.y); // Dot product + + result.x = v.x - (2.0f*normal.x)*dotProduct; + result.y = v.y - (2.0f*normal.y)*dotProduct; + + return result; +} + +// Get min value for each pair of components +RMAPI vec2 vec2Min(vec2 v1, vec2 v2) +{ + vec2 result = { 0 }; + + result.x = fminf(v1.x, v2.x); + result.y = fminf(v1.y, v2.y); + + return result; +} + +// Get max value for each pair of components +RMAPI vec2 vec2Max(vec2 v1, vec2 v2) +{ + vec2 result = { 0 }; + + result.x = fmaxf(v1.x, v2.x); + result.y = fmaxf(v1.y, v2.y); + + return result; +} + +// Rotate vector by angle +RMAPI vec2 vec2Rotate(vec2 v, float angle) +{ + vec2 result = { 0 }; + + float cosres = cosf(angle); + float sinres = sinf(angle); + + result.x = v.x*cosres - v.y*sinres; + result.y = v.x*sinres + v.y*cosres; + + return result; +} + +// Move Vector towards target +RMAPI vec2 vec2MoveTowards(vec2 v, vec2 target, float maxDistance) +{ + vec2 result = { 0 }; + + float dx = target.x - v.x; + float dy = target.y - v.y; + float value = (dx*dx) + (dy*dy); + + if ((value == 0) || ((maxDistance >= 0) && (value <= maxDistance*maxDistance))) return target; + + float dist = sqrtf(value); + + result.x = v.x + dx/dist*maxDistance; + result.y = v.y + dy/dist*maxDistance; + + return result; +} + +// Invert the given vector +RMAPI vec2 vec2Invert(vec2 v) +{ + vec2 result = { 1.0f/v.x, 1.0f/v.y }; + + return result; +} + +// Clamp the components of the vector between +// min and max values specified by the given vectors +RMAPI vec2 vec2Clamp(vec2 v, vec2 min, vec2 max) +{ + vec2 result = { 0 }; + + result.x = fminf(max.x, fmaxf(min.x, v.x)); + result.y = fminf(max.y, fmaxf(min.y, v.y)); + + return result; +} + +// Clamp the magnitude of the vector between two min and max values +RMAPI vec2 vec2ClampValue(vec2 v, float min, float max) +{ + vec2 result = v; + + float length = (v.x*v.x) + (v.y*v.y); + if (length > 0.0f) + { + length = sqrtf(length); + + float scale = 1; // By default, 1 as the neutral element. + if (length < min) + { + scale = min/length; + } + else if (length > max) + { + scale = max/length; + } + + result.x = v.x*scale; + result.y = v.y*scale; + } + + return result; +} + +// Check whether two given vectors are almost equal +RMAPI int vec2Equals(vec2 p, vec2 q) +{ +#if !defined(EPSILON) + #define EPSILON 0.000001f +#endif + + int result = ((fabsf(p.x - q.x)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.x), fabsf(q.x))))) && + ((fabsf(p.y - q.y)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.y), fabsf(q.y))))); + + return result; +} + +// Compute the direction of a refracted ray +// v: normalized direction of the incoming ray +// n: normalized normal vector of the interface of two optical media +// r: ratio of the refractive index of the medium from where the ray comes +// to the refractive index of the medium on the other side of the surface +RMAPI vec2 vec2Refract(vec2 v, vec2 n, float r) +{ + vec2 result = { 0 }; + + float dot = v.x*n.x + v.y*n.y; + float d = 1.0f - r*r*(1.0f - dot*dot); + + if (d >= 0.0f) + { + d = sqrtf(d); + v.x = r*v.x - (r*dot + d)*n.x; + v.y = r*v.y - (r*dot + d)*n.y; + + result = v; + } + + return result; +} + + +//---------------------------------------------------------------------------------- +// Module Functions Definition - vec3 math +//---------------------------------------------------------------------------------- + +// Vector with components value 0.0f +RMAPI vec3 vec3Zero(void) +{ + vec3 result = { 0.0f, 0.0f, 0.0f }; + + return result; +} + +// Vector with components value 1.0f +RMAPI vec3 vec3One(void) +{ + vec3 result = { 1.0f, 1.0f, 1.0f }; + + return result; +} + +// Add two vectors +RMAPI vec3 vec3Add(vec3 v1, vec3 v2) +{ + vec3 result = { v1.x + v2.x, v1.y + v2.y, v1.z + v2.z }; + + return result; +} + +// Add vector and float value +RMAPI vec3 vec3AddValue(vec3 v, float add) +{ + vec3 result = { v.x + add, v.y + add, v.z + add }; + + return result; +} + +// Subtract two vectors +RMAPI vec3 vec3Subtract(vec3 v1, vec3 v2) +{ + vec3 result = { v1.x - v2.x, v1.y - v2.y, v1.z - v2.z }; + + return result; +} + +// Subtract vector by float value +RMAPI vec3 vec3SubtractValue(vec3 v, float sub) +{ + vec3 result = { v.x - sub, v.y - sub, v.z - sub }; + + return result; +} + +// Multiply vector by scalar +RMAPI vec3 vec3Scale(vec3 v, float scalar) +{ + vec3 result = { v.x*scalar, v.y*scalar, v.z*scalar }; + + return result; +} + +// Multiply vector by vector +RMAPI vec3 vec3Multiply(vec3 v1, vec3 v2) +{ + vec3 result = { v1.x*v2.x, v1.y*v2.y, v1.z*v2.z }; + + return result; +} + +// Calculate two vectors cross product +RMAPI vec3 vec3CrossProduct(vec3 v1, vec3 v2) +{ + vec3 result = { v1.y*v2.z - v1.z*v2.y, v1.z*v2.x - v1.x*v2.z, v1.x*v2.y - v1.y*v2.x }; + + return result; +} + +// Calculate one vector perpendicular vector +RMAPI vec3 vec3Perpendicular(vec3 v) +{ + vec3 result = { 0 }; + + float min = fabsf(v.x); + vec3 cardinalAxis = {1.0f, 0.0f, 0.0f}; + + if (fabsf(v.y) < min) + { + min = fabsf(v.y); + vec3 tmp = {0.0f, 1.0f, 0.0f}; + cardinalAxis = tmp; + } + + if (fabsf(v.z) < min) + { + vec3 tmp = {0.0f, 0.0f, 1.0f}; + cardinalAxis = tmp; + } + + // Cross product between vectors + result.x = v.y*cardinalAxis.z - v.z*cardinalAxis.y; + result.y = v.z*cardinalAxis.x - v.x*cardinalAxis.z; + result.z = v.x*cardinalAxis.y - v.y*cardinalAxis.x; + + return result; +} + +// Calculate vector length +RMAPI float vec3Length(const vec3 v) +{ + float result = sqrtf(v.x*v.x + v.y*v.y + v.z*v.z); + + return result; +} + +// Calculate vector square length +RMAPI float vec3LengthSqr(const vec3 v) +{ + float result = v.x*v.x + v.y*v.y + v.z*v.z; + + return result; +} + +// Calculate two vectors dot product +RMAPI float vec3DotProduct(vec3 v1, vec3 v2) +{ + float result = (v1.x*v2.x + v1.y*v2.y + v1.z*v2.z); + + return result; +} + +// Calculate distance between two vectors +RMAPI float vec3Distance(vec3 v1, vec3 v2) +{ + float result = 0.0f; + + float dx = v2.x - v1.x; + float dy = v2.y - v1.y; + float dz = v2.z - v1.z; + result = sqrtf(dx*dx + dy*dy + dz*dz); + + return result; +} + +// Calculate square distance between two vectors +RMAPI float vec3DistanceSqr(vec3 v1, vec3 v2) +{ + float result = 0.0f; + + float dx = v2.x - v1.x; + float dy = v2.y - v1.y; + float dz = v2.z - v1.z; + result = dx*dx + dy*dy + dz*dz; + + return result; +} + +// Calculate angle between two vectors +RMAPI float vec3Angle(vec3 v1, vec3 v2) +{ + float result = 0.0f; + + vec3 cross = { v1.y*v2.z - v1.z*v2.y, v1.z*v2.x - v1.x*v2.z, v1.x*v2.y - v1.y*v2.x }; + float len = sqrtf(cross.x*cross.x + cross.y*cross.y + cross.z*cross.z); + float dot = (v1.x*v2.x + v1.y*v2.y + v1.z*v2.z); + result = atan2f(len, dot); + + return result; +} + +// Negate provided vector (invert direction) +RMAPI vec3 vec3Negate(vec3 v) +{ + vec3 result = { -v.x, -v.y, -v.z }; + + return result; +} + +// Divide vector by vector +RMAPI vec3 vec3Divide(vec3 v1, vec3 v2) +{ + vec3 result = { v1.x/v2.x, v1.y/v2.y, v1.z/v2.z }; + + return result; +} + +// Normalize provided vector +RMAPI vec3 vec3Normalize(vec3 v) +{ + vec3 result = v; + + float length = sqrtf(v.x*v.x + v.y*v.y + v.z*v.z); + if (length != 0.0f) + { + float ilength = 1.0f/length; + + result.x *= ilength; + result.y *= ilength; + result.z *= ilength; + } + + return result; +} + +//Calculate the projection of the vector v1 on to v2 +RMAPI vec3 vec3Project(vec3 v1, vec3 v2) +{ + vec3 result = { 0 }; + + float v1dv2 = (v1.x*v2.x + v1.y*v2.y + v1.z*v2.z); + float v2dv2 = (v2.x*v2.x + v2.y*v2.y + v2.z*v2.z); + + float mag = v1dv2/v2dv2; + + result.x = v2.x*mag; + result.y = v2.y*mag; + result.z = v2.z*mag; + + return result; +} + +//Calculate the rejection of the vector v1 on to v2 +RMAPI vec3 vec3Reject(vec3 v1, vec3 v2) +{ + vec3 result = { 0 }; + + float v1dv2 = (v1.x*v2.x + v1.y*v2.y + v1.z*v2.z); + float v2dv2 = (v2.x*v2.x + v2.y*v2.y + v2.z*v2.z); + + float mag = v1dv2/v2dv2; + + result.x = v1.x - (v2.x*mag); + result.y = v1.y - (v2.y*mag); + result.z = v1.z - (v2.z*mag); + + return result; +} + +// Orthonormalize provided vectors +// Makes vectors normalized and orthogonal to each other +// Gram-Schmidt function implementation +RMAPI void vec3OrthoNormalize(vec3 *v1, vec3 *v2) +{ + float length = 0.0f; + float ilength = 0.0f; + + // vec3Normalize(*v1); + vec3 v = *v1; + length = sqrtf(v.x*v.x + v.y*v.y + v.z*v.z); + if (length == 0.0f) length = 1.0f; + ilength = 1.0f/length; + v1->x *= ilength; + v1->y *= ilength; + v1->z *= ilength; + + // vec3CrossProduct(*v1, *v2) + vec3 vn1 = { v1->y*v2->z - v1->z*v2->y, v1->z*v2->x - v1->x*v2->z, v1->x*v2->y - v1->y*v2->x }; + + // vec3Normalize(vn1); + v = vn1; + length = sqrtf(v.x*v.x + v.y*v.y + v.z*v.z); + if (length == 0.0f) length = 1.0f; + ilength = 1.0f/length; + vn1.x *= ilength; + vn1.y *= ilength; + vn1.z *= ilength; + + // vec3CrossProduct(vn1, *v1) + vec3 vn2 = { vn1.y*v1->z - vn1.z*v1->y, vn1.z*v1->x - vn1.x*v1->z, vn1.x*v1->y - vn1.y*v1->x }; + + *v2 = vn2; +} + +// Transforms a vec3 by a given mat4 +RMAPI vec3 vec3Transform(vec3 v, mat4 mat) +{ + vec3 result = { 0 }; + + float x = v.x; + float y = v.y; + float z = v.z; + + result.x = mat.m0*x + mat.m4*y + mat.m8*z + mat.m12; + result.y = mat.m1*x + mat.m5*y + mat.m9*z + mat.m13; + result.z = mat.m2*x + mat.m6*y + mat.m10*z + mat.m14; + + return result; +} + +// Transform a vector by quaternion rotation +RMAPI vec3 vec3RotateByQuaternion(vec3 v, Quaternion q) +{ + vec3 result = { 0 }; + + result.x = v.x*(q.x*q.x + q.w*q.w - q.y*q.y - q.z*q.z) + v.y*(2*q.x*q.y - 2*q.w*q.z) + v.z*(2*q.x*q.z + 2*q.w*q.y); + result.y = v.x*(2*q.w*q.z + 2*q.x*q.y) + v.y*(q.w*q.w - q.x*q.x + q.y*q.y - q.z*q.z) + v.z*(-2*q.w*q.x + 2*q.y*q.z); + result.z = v.x*(-2*q.w*q.y + 2*q.x*q.z) + v.y*(2*q.w*q.x + 2*q.y*q.z)+ v.z*(q.w*q.w - q.x*q.x - q.y*q.y + q.z*q.z); + + return result; +} + +// Rotates a vector around an axis +RMAPI vec3 vec3RotateByAxisAngle(vec3 v, vec3 axis, float angle) +{ + // Using Euler-Rodrigues Formula + // Ref.: https://en.wikipedia.org/w/index.php?title=Euler%E2%80%93Rodrigues_formula + + vec3 result = v; + + // vec3Normalize(axis); + float length = sqrtf(axis.x*axis.x + axis.y*axis.y + axis.z*axis.z); + if (length == 0.0f) length = 1.0f; + float ilength = 1.0f/length; + axis.x *= ilength; + axis.y *= ilength; + axis.z *= ilength; + + angle /= 2.0f; + float a = sinf(angle); + float b = axis.x*a; + float c = axis.y*a; + float d = axis.z*a; + a = cosf(angle); + vec3 w = { b, c, d }; + + // vec3CrossProduct(w, v) + vec3 wv = { w.y*v.z - w.z*v.y, w.z*v.x - w.x*v.z, w.x*v.y - w.y*v.x }; + + // vec3CrossProduct(w, wv) + vec3 wwv = { w.y*wv.z - w.z*wv.y, w.z*wv.x - w.x*wv.z, w.x*wv.y - w.y*wv.x }; + + // vec3Scale(wv, 2*a) + a *= 2; + wv.x *= a; + wv.y *= a; + wv.z *= a; + + // vec3Scale(wwv, 2) + wwv.x *= 2; + wwv.y *= 2; + wwv.z *= 2; + + result.x += wv.x; + result.y += wv.y; + result.z += wv.z; + + result.x += wwv.x; + result.y += wwv.y; + result.z += wwv.z; + + return result; +} + +// Move Vector towards target +RMAPI vec3 vec3MoveTowards(vec3 v, vec3 target, float maxDistance) +{ + vec3 result = { 0 }; + + float dx = target.x - v.x; + float dy = target.y - v.y; + float dz = target.z - v.z; + float value = (dx*dx) + (dy*dy) + (dz*dz); + + if ((value == 0) || ((maxDistance >= 0) && (value <= maxDistance*maxDistance))) return target; + + float dist = sqrtf(value); + + result.x = v.x + dx/dist*maxDistance; + result.y = v.y + dy/dist*maxDistance; + result.z = v.z + dz/dist*maxDistance; + + return result; +} + +// Calculate linear interpolation between two vectors +RMAPI vec3 vec3Lerp(vec3 v1, vec3 v2, float amount) +{ + vec3 result = { 0 }; + + result.x = v1.x + amount*(v2.x - v1.x); + result.y = v1.y + amount*(v2.y - v1.y); + result.z = v1.z + amount*(v2.z - v1.z); + + return result; +} + +// Calculate cubic hermite interpolation between two vectors and their tangents +// as described in the GLTF 2.0 specification: https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#interpolation-cubic +RMAPI vec3 vec3CubicHermite(vec3 v1, vec3 tangent1, vec3 v2, vec3 tangent2, float amount) +{ + vec3 result = { 0 }; + + float amountPow2 = amount * amount; + float amountPow3 = amount * amount * amount; + + result.x = (2 * amountPow3 - 3 * amountPow2 + 1) * v1.x + (amountPow3 - 2 * amountPow2 + amount) * tangent1.x + (-2 * amountPow3 + 3 * amountPow2) * v2.x + (amountPow3 - amountPow2) * tangent2.x; + result.y = (2 * amountPow3 - 3 * amountPow2 + 1) * v1.y + (amountPow3 - 2 * amountPow2 + amount) * tangent1.y + (-2 * amountPow3 + 3 * amountPow2) * v2.y + (amountPow3 - amountPow2) * tangent2.y; + result.z = (2 * amountPow3 - 3 * amountPow2 + 1) * v1.z + (amountPow3 - 2 * amountPow2 + amount) * tangent1.z + (-2 * amountPow3 + 3 * amountPow2) * v2.z + (amountPow3 - amountPow2) * tangent2.z; + + return result; +} + +// Calculate reflected vector to normal +RMAPI vec3 vec3Reflect(vec3 v, vec3 normal) +{ + vec3 result = { 0 }; + + // I is the original vector + // N is the normal of the incident plane + // R = I - (2*N*(DotProduct[I, N])) + + float dotProduct = (v.x*normal.x + v.y*normal.y + v.z*normal.z); + + result.x = v.x - (2.0f*normal.x)*dotProduct; + result.y = v.y - (2.0f*normal.y)*dotProduct; + result.z = v.z - (2.0f*normal.z)*dotProduct; + + return result; +} + +// Get min value for each pair of components +RMAPI vec3 vec3Min(vec3 v1, vec3 v2) +{ + vec3 result = { 0 }; + + result.x = fminf(v1.x, v2.x); + result.y = fminf(v1.y, v2.y); + result.z = fminf(v1.z, v2.z); + + return result; +} + +// Get max value for each pair of components +RMAPI vec3 vec3Max(vec3 v1, vec3 v2) +{ + vec3 result = { 0 }; + + result.x = fmaxf(v1.x, v2.x); + result.y = fmaxf(v1.y, v2.y); + result.z = fmaxf(v1.z, v2.z); + + return result; +} + +// Compute barycenter coordinates (u, v, w) for point p with respect to triangle (a, b, c) +// NOTE: Assumes P is on the plane of the triangle +RMAPI vec3 vec3Barycenter(vec3 p, vec3 a, vec3 b, vec3 c) +{ + vec3 result = { 0 }; + + vec3 v0 = { b.x - a.x, b.y - a.y, b.z - a.z }; // vec3Subtract(b, a) + vec3 v1 = { c.x - a.x, c.y - a.y, c.z - a.z }; // vec3Subtract(c, a) + vec3 v2 = { p.x - a.x, p.y - a.y, p.z - a.z }; // vec3Subtract(p, a) + float d00 = (v0.x*v0.x + v0.y*v0.y + v0.z*v0.z); // vec3DotProduct(v0, v0) + float d01 = (v0.x*v1.x + v0.y*v1.y + v0.z*v1.z); // vec3DotProduct(v0, v1) + float d11 = (v1.x*v1.x + v1.y*v1.y + v1.z*v1.z); // vec3DotProduct(v1, v1) + float d20 = (v2.x*v0.x + v2.y*v0.y + v2.z*v0.z); // vec3DotProduct(v2, v0) + float d21 = (v2.x*v1.x + v2.y*v1.y + v2.z*v1.z); // vec3DotProduct(v2, v1) + + float denom = d00*d11 - d01*d01; + + result.y = (d11*d20 - d01*d21)/denom; + result.z = (d00*d21 - d01*d20)/denom; + result.x = 1.0f - (result.z + result.y); + + return result; +} + +// Projects a vec3 from screen space into object space +// NOTE: We are avoiding calling other raymath functions despite available +RMAPI vec3 vec3Unproject(vec3 source, mat4 projection, mat4 view) +{ + vec3 result = { 0 }; + + // Calculate unprojected matrix (multiply view matrix by projection matrix) and invert it + mat4 matViewProj = { // mat4Multiply(view, projection); + view.m0*projection.m0 + view.m1*projection.m4 + view.m2*projection.m8 + view.m3*projection.m12, + view.m0*projection.m1 + view.m1*projection.m5 + view.m2*projection.m9 + view.m3*projection.m13, + view.m0*projection.m2 + view.m1*projection.m6 + view.m2*projection.m10 + view.m3*projection.m14, + view.m0*projection.m3 + view.m1*projection.m7 + view.m2*projection.m11 + view.m3*projection.m15, + view.m4*projection.m0 + view.m5*projection.m4 + view.m6*projection.m8 + view.m7*projection.m12, + view.m4*projection.m1 + view.m5*projection.m5 + view.m6*projection.m9 + view.m7*projection.m13, + view.m4*projection.m2 + view.m5*projection.m6 + view.m6*projection.m10 + view.m7*projection.m14, + view.m4*projection.m3 + view.m5*projection.m7 + view.m6*projection.m11 + view.m7*projection.m15, + view.m8*projection.m0 + view.m9*projection.m4 + view.m10*projection.m8 + view.m11*projection.m12, + view.m8*projection.m1 + view.m9*projection.m5 + view.m10*projection.m9 + view.m11*projection.m13, + view.m8*projection.m2 + view.m9*projection.m6 + view.m10*projection.m10 + view.m11*projection.m14, + view.m8*projection.m3 + view.m9*projection.m7 + view.m10*projection.m11 + view.m11*projection.m15, + view.m12*projection.m0 + view.m13*projection.m4 + view.m14*projection.m8 + view.m15*projection.m12, + view.m12*projection.m1 + view.m13*projection.m5 + view.m14*projection.m9 + view.m15*projection.m13, + view.m12*projection.m2 + view.m13*projection.m6 + view.m14*projection.m10 + view.m15*projection.m14, + view.m12*projection.m3 + view.m13*projection.m7 + view.m14*projection.m11 + view.m15*projection.m15 }; + + // Calculate inverted matrix -> mat4Invert(matViewProj); + // Cache the matrix values (speed optimization) + float a00 = matViewProj.m0, a01 = matViewProj.m1, a02 = matViewProj.m2, a03 = matViewProj.m3; + float a10 = matViewProj.m4, a11 = matViewProj.m5, a12 = matViewProj.m6, a13 = matViewProj.m7; + float a20 = matViewProj.m8, a21 = matViewProj.m9, a22 = matViewProj.m10, a23 = matViewProj.m11; + float a30 = matViewProj.m12, a31 = matViewProj.m13, a32 = matViewProj.m14, a33 = matViewProj.m15; + + float b00 = a00*a11 - a01*a10; + float b01 = a00*a12 - a02*a10; + float b02 = a00*a13 - a03*a10; + float b03 = a01*a12 - a02*a11; + float b04 = a01*a13 - a03*a11; + float b05 = a02*a13 - a03*a12; + float b06 = a20*a31 - a21*a30; + float b07 = a20*a32 - a22*a30; + float b08 = a20*a33 - a23*a30; + float b09 = a21*a32 - a22*a31; + float b10 = a21*a33 - a23*a31; + float b11 = a22*a33 - a23*a32; + + // Calculate the invert determinant (inlined to avoid double-caching) + float invDet = 1.0f/(b00*b11 - b01*b10 + b02*b09 + b03*b08 - b04*b07 + b05*b06); + + mat4 matViewProjInv = { + (a11*b11 - a12*b10 + a13*b09)*invDet, + (-a01*b11 + a02*b10 - a03*b09)*invDet, + (a31*b05 - a32*b04 + a33*b03)*invDet, + (-a21*b05 + a22*b04 - a23*b03)*invDet, + (-a10*b11 + a12*b08 - a13*b07)*invDet, + (a00*b11 - a02*b08 + a03*b07)*invDet, + (-a30*b05 + a32*b02 - a33*b01)*invDet, + (a20*b05 - a22*b02 + a23*b01)*invDet, + (a10*b10 - a11*b08 + a13*b06)*invDet, + (-a00*b10 + a01*b08 - a03*b06)*invDet, + (a30*b04 - a31*b02 + a33*b00)*invDet, + (-a20*b04 + a21*b02 - a23*b00)*invDet, + (-a10*b09 + a11*b07 - a12*b06)*invDet, + (a00*b09 - a01*b07 + a02*b06)*invDet, + (-a30*b03 + a31*b01 - a32*b00)*invDet, + (a20*b03 - a21*b01 + a22*b00)*invDet }; + + // Create quaternion from source point + Quaternion quat = { source.x, source.y, source.z, 1.0f }; + + // Multiply quat point by unprojecte matrix + Quaternion qtransformed = { // QuaternionTransform(quat, matViewProjInv) + matViewProjInv.m0*quat.x + matViewProjInv.m4*quat.y + matViewProjInv.m8*quat.z + matViewProjInv.m12*quat.w, + matViewProjInv.m1*quat.x + matViewProjInv.m5*quat.y + matViewProjInv.m9*quat.z + matViewProjInv.m13*quat.w, + matViewProjInv.m2*quat.x + matViewProjInv.m6*quat.y + matViewProjInv.m10*quat.z + matViewProjInv.m14*quat.w, + matViewProjInv.m3*quat.x + matViewProjInv.m7*quat.y + matViewProjInv.m11*quat.z + matViewProjInv.m15*quat.w }; + + // Normalized world points in vectors + result.x = qtransformed.x/qtransformed.w; + result.y = qtransformed.y/qtransformed.w; + result.z = qtransformed.z/qtransformed.w; + + return result; +} + +// Get vec3 as float array +RMAPI float3 vec3ToFloatV(vec3 v) +{ + float3 buffer = { 0 }; + + buffer.v[0] = v.x; + buffer.v[1] = v.y; + buffer.v[2] = v.z; + + return buffer; +} + +// Invert the given vector +RMAPI vec3 vec3Invert(vec3 v) +{ + vec3 result = { 1.0f/v.x, 1.0f/v.y, 1.0f/v.z }; + + return result; +} + +// Clamp the components of the vector between +// min and max values specified by the given vectors +RMAPI vec3 vec3Clamp(vec3 v, vec3 min, vec3 max) +{ + vec3 result = { 0 }; + + result.x = fminf(max.x, fmaxf(min.x, v.x)); + result.y = fminf(max.y, fmaxf(min.y, v.y)); + result.z = fminf(max.z, fmaxf(min.z, v.z)); + + return result; +} + +// Clamp the magnitude of the vector between two values +RMAPI vec3 vec3ClampValue(vec3 v, float min, float max) +{ + vec3 result = v; + + float length = (v.x*v.x) + (v.y*v.y) + (v.z*v.z); + if (length > 0.0f) + { + length = sqrtf(length); + + float scale = 1; // By default, 1 as the neutral element. + if (length < min) + { + scale = min/length; + } + else if (length > max) + { + scale = max/length; + } + + result.x = v.x*scale; + result.y = v.y*scale; + result.z = v.z*scale; + } + + return result; +} + +// Check whether two given vectors are almost equal +RMAPI int vec3Equals(vec3 p, vec3 q) +{ +#if !defined(EPSILON) + #define EPSILON 0.000001f +#endif + + int result = ((fabsf(p.x - q.x)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.x), fabsf(q.x))))) && + ((fabsf(p.y - q.y)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.y), fabsf(q.y))))) && + ((fabsf(p.z - q.z)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.z), fabsf(q.z))))); + + return result; +} + +// Compute the direction of a refracted ray +// v: normalized direction of the incoming ray +// n: normalized normal vector of the interface of two optical media +// r: ratio of the refractive index of the medium from where the ray comes +// to the refractive index of the medium on the other side of the surface +RMAPI vec3 vec3Refract(vec3 v, vec3 n, float r) +{ + vec3 result = { 0 }; + + float dot = v.x*n.x + v.y*n.y + v.z*n.z; + float d = 1.0f - r*r*(1.0f - dot*dot); + + if (d >= 0.0f) + { + d = sqrtf(d); + v.x = r*v.x - (r*dot + d)*n.x; + v.y = r*v.y - (r*dot + d)*n.y; + v.z = r*v.z - (r*dot + d)*n.z; + + result = v; + } + + return result; +} + + +//---------------------------------------------------------------------------------- +// Module Functions Definition - vec4 math +//---------------------------------------------------------------------------------- + +RMAPI vec4 vec4Zero(void) +{ + vec4 result = { 0.0f, 0.0f, 0.0f, 0.0f }; + return result; +} + +RMAPI vec4 vec4One(void) +{ + vec4 result = { 1.0f, 1.0f, 1.0f, 1.0f }; + return result; +} + +RMAPI vec4 vec4Add(vec4 v1, vec4 v2) +{ + vec4 result = { + v1.x + v2.x, + v1.y + v2.y, + v1.z + v2.z, + v1.w + v2.w + }; + return result; +} + +RMAPI vec4 vec4AddValue(vec4 v, float add) +{ + vec4 result = { + v.x + add, + v.y + add, + v.z + add, + v.w + add + }; + return result; +} + +RMAPI vec4 vec4Subtract(vec4 v1, vec4 v2) +{ + vec4 result = { + v1.x - v2.x, + v1.y - v2.y, + v1.z - v2.z, + v1.w - v2.w + }; + return result; +} + +RMAPI vec4 vec4SubtractValue(vec4 v, float add) +{ + vec4 result = { + v.x - add, + v.y - add, + v.z - add, + v.w - add + }; + return result; +} + +RMAPI float vec4Length(vec4 v) +{ + float result = sqrtf((v.x*v.x) + (v.y*v.y) + (v.z*v.z) + (v.w*v.w)); + return result; +} + +RMAPI float vec4LengthSqr(vec4 v) +{ + float result = (v.x*v.x) + (v.y*v.y) + (v.z*v.z) + (v.w*v.w); + return result; +} + +RMAPI float vec4DotProduct(vec4 v1, vec4 v2) +{ + float result = (v1.x*v2.x + v1.y*v2.y + v1.z*v2.z + v1.w*v2.w); + return result; +} + +// Calculate distance between two vectors +RMAPI float vec4Distance(vec4 v1, vec4 v2) +{ + float result = sqrtf( + (v1.x - v2.x)*(v1.x - v2.x) + (v1.y - v2.y)*(v1.y - v2.y) + + (v1.z - v2.z)*(v1.z - v2.z) + (v1.w - v2.w)*(v1.w - v2.w)); + return result; +} + +// Calculate square distance between two vectors +RMAPI float vec4DistanceSqr(vec4 v1, vec4 v2) +{ + float result = + (v1.x - v2.x)*(v1.x - v2.x) + (v1.y - v2.y)*(v1.y - v2.y) + + (v1.z - v2.z)*(v1.z - v2.z) + (v1.w - v2.w)*(v1.w - v2.w); + + return result; +} + +RMAPI vec4 vec4Scale(vec4 v, float scale) +{ + vec4 result = { v.x*scale, v.y*scale, v.z*scale, v.w*scale }; + return result; +} + +// Multiply vector by vector +RMAPI vec4 vec4Multiply(vec4 v1, vec4 v2) +{ + vec4 result = { v1.x*v2.x, v1.y*v2.y, v1.z*v2.z, v1.w*v2.w }; + return result; +} + +// Negate vector +RMAPI vec4 vec4Negate(vec4 v) +{ + vec4 result = { -v.x, -v.y, -v.z, -v.w }; + return result; +} + +// Divide vector by vector +RMAPI vec4 vec4Divide(vec4 v1, vec4 v2) +{ + vec4 result = { v1.x/v2.x, v1.y/v2.y, v1.z/v2.z, v1.w/v2.w }; + return result; +} + +// Normalize provided vector +RMAPI vec4 vec4Normalize(vec4 v) +{ + vec4 result = { 0 }; + float length = sqrtf((v.x*v.x) + (v.y*v.y) + (v.z*v.z) + (v.w*v.w)); + + if (length > 0) + { + float ilength = 1.0f/length; + result.x = v.x*ilength; + result.y = v.y*ilength; + result.z = v.z*ilength; + result.w = v.w*ilength; + } + + return result; +} + +// Get min value for each pair of components +RMAPI vec4 vec4Min(vec4 v1, vec4 v2) +{ + vec4 result = { 0 }; + + result.x = fminf(v1.x, v2.x); + result.y = fminf(v1.y, v2.y); + result.z = fminf(v1.z, v2.z); + result.w = fminf(v1.w, v2.w); + + return result; +} + +// Get max value for each pair of components +RMAPI vec4 vec4Max(vec4 v1, vec4 v2) +{ + vec4 result = { 0 }; + + result.x = fmaxf(v1.x, v2.x); + result.y = fmaxf(v1.y, v2.y); + result.z = fmaxf(v1.z, v2.z); + result.w = fmaxf(v1.w, v2.w); + + return result; +} + +// Calculate linear interpolation between two vectors +RMAPI vec4 vec4Lerp(vec4 v1, vec4 v2, float amount) +{ + vec4 result = { 0 }; + + result.x = v1.x + amount*(v2.x - v1.x); + result.y = v1.y + amount*(v2.y - v1.y); + result.z = v1.z + amount*(v2.z - v1.z); + result.w = v1.w + amount*(v2.w - v1.w); + + return result; +} + +// Move Vector towards target +RMAPI vec4 vec4MoveTowards(vec4 v, vec4 target, float maxDistance) +{ + vec4 result = { 0 }; + + float dx = target.x - v.x; + float dy = target.y - v.y; + float dz = target.z - v.z; + float dw = target.w - v.w; + float value = (dx*dx) + (dy*dy) + (dz*dz) + (dw*dw); + + if ((value == 0) || ((maxDistance >= 0) && (value <= maxDistance*maxDistance))) return target; + + float dist = sqrtf(value); + + result.x = v.x + dx/dist*maxDistance; + result.y = v.y + dy/dist*maxDistance; + result.z = v.z + dz/dist*maxDistance; + result.w = v.w + dw/dist*maxDistance; + + return result; +} + +// Invert the given vector +RMAPI vec4 vec4Invert(vec4 v) +{ + vec4 result = { 1.0f/v.x, 1.0f/v.y, 1.0f/v.z, 1.0f/v.w }; + return result; +} + +// Check whether two given vectors are almost equal +RMAPI int vec4Equals(vec4 p, vec4 q) +{ +#if !defined(EPSILON) + #define EPSILON 0.000001f +#endif + + int result = ((fabsf(p.x - q.x)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.x), fabsf(q.x))))) && + ((fabsf(p.y - q.y)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.y), fabsf(q.y))))) && + ((fabsf(p.z - q.z)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.z), fabsf(q.z))))) && + ((fabsf(p.w - q.w)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.w), fabsf(q.w))))); + return result; +} + + +//---------------------------------------------------------------------------------- +// Module Functions Definition - mat4 math +//---------------------------------------------------------------------------------- + +// Compute matrix determinant +RMAPI float mat4Determinant(mat4 mat) +{ + float result = 0.0f; + + // Cache the matrix values (speed optimization) + float a00 = mat.m0, a01 = mat.m1, a02 = mat.m2, a03 = mat.m3; + float a10 = mat.m4, a11 = mat.m5, a12 = mat.m6, a13 = mat.m7; + float a20 = mat.m8, a21 = mat.m9, a22 = mat.m10, a23 = mat.m11; + float a30 = mat.m12, a31 = mat.m13, a32 = mat.m14, a33 = mat.m15; + + result = a30*a21*a12*a03 - a20*a31*a12*a03 - a30*a11*a22*a03 + a10*a31*a22*a03 + + a20*a11*a32*a03 - a10*a21*a32*a03 - a30*a21*a02*a13 + a20*a31*a02*a13 + + a30*a01*a22*a13 - a00*a31*a22*a13 - a20*a01*a32*a13 + a00*a21*a32*a13 + + a30*a11*a02*a23 - a10*a31*a02*a23 - a30*a01*a12*a23 + a00*a31*a12*a23 + + a10*a01*a32*a23 - a00*a11*a32*a23 - a20*a11*a02*a33 + a10*a21*a02*a33 + + a20*a01*a12*a33 - a00*a21*a12*a33 - a10*a01*a22*a33 + a00*a11*a22*a33; + + return result; +} + +// Get the trace of the matrix (sum of the values along the diagonal) +RMAPI float mat4Trace(mat4 mat) +{ + float result = (mat.m0 + mat.m5 + mat.m10 + mat.m15); + + return result; +} + +// Transposes provided matrix +RMAPI mat4 mat4Transpose(mat4 mat) +{ + mat4 result = { 0 }; + + result.m0 = mat.m0; + result.m1 = mat.m4; + result.m2 = mat.m8; + result.m3 = mat.m12; + result.m4 = mat.m1; + result.m5 = mat.m5; + result.m6 = mat.m9; + result.m7 = mat.m13; + result.m8 = mat.m2; + result.m9 = mat.m6; + result.m10 = mat.m10; + result.m11 = mat.m14; + result.m12 = mat.m3; + result.m13 = mat.m7; + result.m14 = mat.m11; + result.m15 = mat.m15; + + return result; +} + +// Invert provided matrix +RMAPI mat4 mat4Invert(mat4 mat) +{ + mat4 result = { 0 }; + + // Cache the matrix values (speed optimization) + float a00 = mat.m0, a01 = mat.m1, a02 = mat.m2, a03 = mat.m3; + float a10 = mat.m4, a11 = mat.m5, a12 = mat.m6, a13 = mat.m7; + float a20 = mat.m8, a21 = mat.m9, a22 = mat.m10, a23 = mat.m11; + float a30 = mat.m12, a31 = mat.m13, a32 = mat.m14, a33 = mat.m15; + + float b00 = a00*a11 - a01*a10; + float b01 = a00*a12 - a02*a10; + float b02 = a00*a13 - a03*a10; + float b03 = a01*a12 - a02*a11; + float b04 = a01*a13 - a03*a11; + float b05 = a02*a13 - a03*a12; + float b06 = a20*a31 - a21*a30; + float b07 = a20*a32 - a22*a30; + float b08 = a20*a33 - a23*a30; + float b09 = a21*a32 - a22*a31; + float b10 = a21*a33 - a23*a31; + float b11 = a22*a33 - a23*a32; + + // Calculate the invert determinant (inlined to avoid double-caching) + float invDet = 1.0f/(b00*b11 - b01*b10 + b02*b09 + b03*b08 - b04*b07 + b05*b06); + + result.m0 = (a11*b11 - a12*b10 + a13*b09)*invDet; + result.m1 = (-a01*b11 + a02*b10 - a03*b09)*invDet; + result.m2 = (a31*b05 - a32*b04 + a33*b03)*invDet; + result.m3 = (-a21*b05 + a22*b04 - a23*b03)*invDet; + result.m4 = (-a10*b11 + a12*b08 - a13*b07)*invDet; + result.m5 = (a00*b11 - a02*b08 + a03*b07)*invDet; + result.m6 = (-a30*b05 + a32*b02 - a33*b01)*invDet; + result.m7 = (a20*b05 - a22*b02 + a23*b01)*invDet; + result.m8 = (a10*b10 - a11*b08 + a13*b06)*invDet; + result.m9 = (-a00*b10 + a01*b08 - a03*b06)*invDet; + result.m10 = (a30*b04 - a31*b02 + a33*b00)*invDet; + result.m11 = (-a20*b04 + a21*b02 - a23*b00)*invDet; + result.m12 = (-a10*b09 + a11*b07 - a12*b06)*invDet; + result.m13 = (a00*b09 - a01*b07 + a02*b06)*invDet; + result.m14 = (-a30*b03 + a31*b01 - a32*b00)*invDet; + result.m15 = (a20*b03 - a21*b01 + a22*b00)*invDet; + + return result; +} + +// Get identity matrix +RMAPI mat4 mat4Identity(void) +{ + mat4 result = { 1.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 1.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 1.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f }; + + return result; +} + +// Add two matrices +RMAPI mat4 mat4Add(mat4 left, mat4 right) +{ + mat4 result = { 0 }; + + result.m0 = left.m0 + right.m0; + result.m1 = left.m1 + right.m1; + result.m2 = left.m2 + right.m2; + result.m3 = left.m3 + right.m3; + result.m4 = left.m4 + right.m4; + result.m5 = left.m5 + right.m5; + result.m6 = left.m6 + right.m6; + result.m7 = left.m7 + right.m7; + result.m8 = left.m8 + right.m8; + result.m9 = left.m9 + right.m9; + result.m10 = left.m10 + right.m10; + result.m11 = left.m11 + right.m11; + result.m12 = left.m12 + right.m12; + result.m13 = left.m13 + right.m13; + result.m14 = left.m14 + right.m14; + result.m15 = left.m15 + right.m15; + + return result; +} + +// Subtract two matrices (left - right) +RMAPI mat4 mat4Subtract(mat4 left, mat4 right) +{ + mat4 result = { 0 }; + + result.m0 = left.m0 - right.m0; + result.m1 = left.m1 - right.m1; + result.m2 = left.m2 - right.m2; + result.m3 = left.m3 - right.m3; + result.m4 = left.m4 - right.m4; + result.m5 = left.m5 - right.m5; + result.m6 = left.m6 - right.m6; + result.m7 = left.m7 - right.m7; + result.m8 = left.m8 - right.m8; + result.m9 = left.m9 - right.m9; + result.m10 = left.m10 - right.m10; + result.m11 = left.m11 - right.m11; + result.m12 = left.m12 - right.m12; + result.m13 = left.m13 - right.m13; + result.m14 = left.m14 - right.m14; + result.m15 = left.m15 - right.m15; + + return result; +} + +RMAPI mat4 mat4Multiply(mat4 left, mat4 right) +{ + mat4 result = { 0 }; + + result.m0 = left.m0*right.m0 + left.m4*right.m1 + left.m8*right.m2 + left.m12*right.m3; + result.m1 = left.m0*right.m4 + left.m4*right.m5 + left.m8*right.m6 + left.m12*right.m7; + result.m2 = left.m0*right.m8 + left.m4*right.m9 + left.m8*right.m10 + left.m12*right.m11; + result.m3 = left.m0*right.m12 + left.m4*right.m13 + left.m8*right.m14 + left.m12*right.m15; + result.m4 = left.m1*right.m0 + left.m5*right.m1 + left.m9*right.m2 + left.m13*right.m3; + result.m5 = left.m1*right.m4 + left.m5*right.m5 + left.m9*right.m6 + left.m13*right.m7; + result.m6 = left.m1*right.m8 + left.m5*right.m9 + left.m9*right.m10 + left.m13*right.m11; + result.m7 = left.m1*right.m12 + left.m5*right.m13 + left.m9*right.m14 + left.m13*right.m15; + result.m8 = left.m2*right.m0 + left.m6*right.m1 + left.m10*right.m2 + left.m14*right.m3; + result.m9 = left.m2*right.m4 + left.m6*right.m5 + left.m10*right.m6 + left.m14*right.m7; + result.m10 = left.m2*right.m8 + left.m6*right.m9 + left.m10*right.m10 + left.m14*right.m11; + result.m11 = left.m2*right.m12 + left.m6*right.m13 + left.m10*right.m14 + left.m14*right.m15; + result.m12 = left.m3*right.m0 + left.m7*right.m1 + left.m11*right.m2 + left.m15*right.m3; + result.m13 = left.m3*right.m4 + left.m7*right.m5 + left.m11*right.m6 + left.m15*right.m7; + result.m14 = left.m3*right.m8 + left.m7*right.m9 + left.m11*right.m10 + left.m15*right.m11; + result.m15 = left.m3*right.m12 + left.m7*right.m13 + left.m11*right.m14 + left.m15*right.m15; + + return result; +} + + +// Get translation matrix +RMAPI mat4 mat4Translate(float x, float y, float z) +{ + mat4 result = { 1.0f, 0.0f, 0.0f, x, + 0.0f, 1.0f, 0.0f, y, + 0.0f, 0.0f, 1.0f, z, + 0.0f, 0.0f, 0.0f, 1.0f }; + + return result; +} + +// Create rotation matrix from axis and angle +// NOTE: Angle should be provided in radians +RMAPI mat4 mat4Rotate(vec3 axis, float angle) +{ + mat4 result = { 0 }; + + float x = axis.x, y = axis.y, z = axis.z; + + float lengthSquared = x*x + y*y + z*z; + + if ((lengthSquared != 1.0f) && (lengthSquared != 0.0f)) + { + float ilength = 1.0f/sqrtf(lengthSquared); + x *= ilength; + y *= ilength; + z *= ilength; + } + + float sinres = sinf(angle); + float cosres = cosf(angle); + float t = 1.0f - cosres; + + result.m0 = x*x*t + cosres; + result.m1 = y*x*t + z*sinres; + result.m2 = z*x*t - y*sinres; + result.m3 = 0.0f; + + result.m4 = x*y*t - z*sinres; + result.m5 = y*y*t + cosres; + result.m6 = z*y*t + x*sinres; + result.m7 = 0.0f; + + result.m8 = x*z*t + y*sinres; + result.m9 = y*z*t - x*sinres; + result.m10 = z*z*t + cosres; + result.m11 = 0.0f; + + result.m12 = 0.0f; + result.m13 = 0.0f; + result.m14 = 0.0f; + result.m15 = 1.0f; + + return result; +} + +// Get x-rotation matrix +// NOTE: Angle must be provided in radians +RMAPI mat4 mat4RotateX(float angle) +{ + mat4 result = { 1.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 1.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 1.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f }; // mat4Identity() + + float cosres = cosf(angle); + float sinres = sinf(angle); + + result.m5 = cosres; + result.m6 = sinres; + result.m9 = -sinres; + result.m10 = cosres; + + return result; +} + +// Get y-rotation matrix +// NOTE: Angle must be provided in radians +RMAPI mat4 mat4RotateY(float angle) +{ + mat4 result = { 1.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 1.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 1.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f }; // mat4Identity() + + float cosres = cosf(angle); + float sinres = sinf(angle); + + result.m0 = cosres; + result.m2 = -sinres; + result.m8 = sinres; + result.m10 = cosres; + + return result; +} + +// Get z-rotation matrix +// NOTE: Angle must be provided in radians +RMAPI mat4 mat4RotateZ(float angle) +{ + mat4 result = { 1.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 1.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 1.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f }; // mat4Identity() + + float cosres = cosf(angle); + float sinres = sinf(angle); + + result.m0 = cosres; + result.m1 = sinres; + result.m4 = -sinres; + result.m5 = cosres; + + return result; +} + + +// Get xyz-rotation matrix +// NOTE: Angle must be provided in radians +RMAPI mat4 mat4RotateXYZ(vec3 angle) +{ + mat4 result = { 1.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 1.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 1.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f }; // mat4Identity() + + float cosz = cosf(-angle.z); + float sinz = sinf(-angle.z); + float cosy = cosf(-angle.y); + float siny = sinf(-angle.y); + float cosx = cosf(-angle.x); + float sinx = sinf(-angle.x); + + result.m0 = cosz*cosy; + result.m1 = (cosz*siny*sinx) - (sinz*cosx); + result.m2 = (cosz*siny*cosx) + (sinz*sinx); + + result.m4 = sinz*cosy; + result.m5 = (sinz*siny*sinx) + (cosz*cosx); + result.m6 = (sinz*siny*cosx) - (cosz*sinx); + + result.m8 = -siny; + result.m9 = cosy*sinx; + result.m10= cosy*cosx; + + return result; +} + +// Get zyx-rotation matrix +// NOTE: Angle must be provided in radians +RMAPI mat4 mat4RotateZYX(vec3 angle) +{ + mat4 result = { 0 }; + + float cz = cosf(angle.z); + float sz = sinf(angle.z); + float cy = cosf(angle.y); + float sy = sinf(angle.y); + float cx = cosf(angle.x); + float sx = sinf(angle.x); + + result.m0 = cz*cy; + result.m4 = cz*sy*sx - cx*sz; + result.m8 = sz*sx + cz*cx*sy; + result.m12 = 0; + + result.m1 = cy*sz; + result.m5 = cz*cx + sz*sy*sx; + result.m9 = cx*sz*sy - cz*sx; + result.m13 = 0; + + result.m2 = -sy; + result.m6 = cy*sx; + result.m10 = cy*cx; + result.m14 = 0; + + result.m3 = 0; + result.m7 = 0; + result.m11 = 0; + result.m15 = 1; + + return result; +} + +// Get scaling matrix +RMAPI mat4 mat4Scale(float x, float y, float z) +{ + mat4 result = { x, 0.0f, 0.0f, 0.0f, + 0.0f, y, 0.0f, 0.0f, + 0.0f, 0.0f, z, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f }; + + return result; +} + +// Get perspective projection matrix +RMAPI mat4 mat4Frustum(double left, double right, double bottom, double top, double near, double far) +{ + mat4 result = { 0 }; + + float rl = (float)(right - left); + float tb = (float)(top - bottom); + float fn = (float)(far - near); + + result.m0 = ((float)near*2.0f)/rl; + result.m1 = 0.0f; + result.m2 = 0.0f; + result.m3 = 0.0f; + + result.m4 = 0.0f; + result.m5 = ((float)near*2.0f)/tb; + result.m6 = 0.0f; + result.m7 = 0.0f; + + result.m8 = ((float)right + (float)left)/rl; + result.m9 = ((float)top + (float)bottom)/tb; + result.m10 = -((float)far + (float)near)/fn; + result.m11 = -1.0f; + + result.m12 = 0.0f; + result.m13 = 0.0f; + result.m14 = -((float)far*(float)near*2.0f)/fn; + result.m15 = 0.0f; + + return result; +} + +// Get perspective projection matrix +// NOTE: Fovy angle must be provided in radians +RMAPI mat4 mat4Perspective(double fovY, double aspect, double nearPlane, double farPlane) +{ + mat4 result = { 0 }; + + double top = nearPlane*tan(fovY*0.5); + double bottom = -top; + double right = top*aspect; + double left = -right; + + // mat4Frustum(-right, right, -top, top, near, far); + float rl = (float)(right - left); + float tb = (float)(top - bottom); + float fn = (float)(farPlane - nearPlane); + + result.m0 = ((float)nearPlane*2.0f)/rl; + result.m5 = ((float)nearPlane*2.0f)/tb; + result.m8 = ((float)right + (float)left)/rl; + result.m9 = ((float)top + (float)bottom)/tb; + result.m10 = -((float)farPlane + (float)nearPlane)/fn; + result.m11 = -1.0f; + result.m14 = -((float)farPlane*(float)nearPlane*2.0f)/fn; + + return result; +} + + +// Get orthographic projection matrix +/*RMAPI mat4 mat4Ortho(double left, double right, double bottom, double top, double nearPlane, double farPlane) +{ + mat4 result = { 0 }; + + float rl = (float)(right - left); + float tb = (float)(top - bottom); + float fn = (float)(farPlane - nearPlane); + + result.m0 = 2.0f/rl; + result.m1 = 0.0f; + result.m2 = 0.0f; + result.m3 = 0.0f; + result.m4 = 0.0f; + result.m5 = 2.0f/tb; + result.m6 = 0.0f; + result.m7 = 0.0f; + result.m8 = 0.0f; + result.m9 = 0.0f; + result.m10 = -2.0f/fn; + result.m11 = 0.0f; + result.m12 = -((float)left + (float)right)/rl; + result.m13 = -((float)top + (float)bottom)/tb; + result.m14 = -((float)farPlane + (float)nearPlane)/fn; + result.m15 = 1.0f; + + return result; +}*/ + +// Get camera look-at matrix (view matrix) +RMAPI mat4 mat4LookAt(vec3 eye, vec3 target, vec3 up) +{ + mat4 result = { 0 }; + + float length = 0.0f; + float ilength = 0.0f; + + // vec3Subtract(eye, target) + vec3 vz = { eye.x - target.x, eye.y - target.y, eye.z - target.z }; + + // vec3Normalize(vz) + vec3 v = vz; + length = sqrtf(v.x*v.x + v.y*v.y + v.z*v.z); + if (length == 0.0f) length = 1.0f; + ilength = 1.0f/length; + vz.x *= ilength; + vz.y *= ilength; + vz.z *= ilength; + + // vec3CrossProduct(up, vz) + vec3 vx = { up.y*vz.z - up.z*vz.y, up.z*vz.x - up.x*vz.z, up.x*vz.y - up.y*vz.x }; + + // vec3Normalize(x) + v = vx; + length = sqrtf(v.x*v.x + v.y*v.y + v.z*v.z); + if (length == 0.0f) length = 1.0f; + ilength = 1.0f/length; + vx.x *= ilength; + vx.y *= ilength; + vx.z *= ilength; + + // vec3CrossProduct(vz, vx) + vec3 vy = { vz.y*vx.z - vz.z*vx.y, vz.z*vx.x - vz.x*vx.z, vz.x*vx.y - vz.y*vx.x }; + + result.m0 = vx.x; + result.m1 = vy.x; + result.m2 = vz.x; + result.m3 = 0.0f; + result.m4 = vx.y; + result.m5 = vy.y; + result.m6 = vz.y; + result.m7 = 0.0f; + result.m8 = vx.z; + result.m9 = vy.z; + result.m10 = vz.z; + result.m11 = 0.0f; + result.m12 = -(vx.x*eye.x + vx.y*eye.y + vx.z*eye.z); // vec3DotProduct(vx, eye) + result.m13 = -(vy.x*eye.x + vy.y*eye.y + vy.z*eye.z); // vec3DotProduct(vy, eye) + result.m14 = -(vz.x*eye.x + vz.y*eye.y + vz.z*eye.z); // vec3DotProduct(vz, eye) + result.m15 = 1.0f; + + return result; +} + +// Get float array of matrix data +RMAPI float16 mat4ToFloatV(mat4 mat) +{ + float16 result = { 0 }; + + result.v[0] = mat.m0; + result.v[1] = mat.m1; + result.v[2] = mat.m2; + result.v[3] = mat.m3; + result.v[4] = mat.m4; + result.v[5] = mat.m5; + result.v[6] = mat.m6; + result.v[7] = mat.m7; + result.v[8] = mat.m8; + result.v[9] = mat.m9; + result.v[10] = mat.m10; + result.v[11] = mat.m11; + result.v[12] = mat.m12; + result.v[13] = mat.m13; + result.v[14] = mat.m14; + result.v[15] = mat.m15; + + return result; +} + +//---------------------------------------------------------------------------------- +// Module Functions Definition - Quaternion math +//---------------------------------------------------------------------------------- + +// Add two quaternions +RMAPI Quaternion QuaternionAdd(Quaternion q1, Quaternion q2) +{ + Quaternion result = {q1.x + q2.x, q1.y + q2.y, q1.z + q2.z, q1.w + q2.w}; + + return result; +} + +// Add quaternion and float value +RMAPI Quaternion QuaternionAddValue(Quaternion q, float add) +{ + Quaternion result = {q.x + add, q.y + add, q.z + add, q.w + add}; + + return result; +} + +// Subtract two quaternions +RMAPI Quaternion QuaternionSubtract(Quaternion q1, Quaternion q2) +{ + Quaternion result = {q1.x - q2.x, q1.y - q2.y, q1.z - q2.z, q1.w - q2.w}; + + return result; +} + +// Subtract quaternion and float value +RMAPI Quaternion QuaternionSubtractValue(Quaternion q, float sub) +{ + Quaternion result = {q.x - sub, q.y - sub, q.z - sub, q.w - sub}; + + return result; +} + +// Get identity quaternion +RMAPI Quaternion QuaternionIdentity(void) +{ + Quaternion result = { 0.0f, 0.0f, 0.0f, 1.0f }; + + return result; +} + +// Computes the length of a quaternion +RMAPI float QuaternionLength(Quaternion q) +{ + float result = sqrtf(q.x*q.x + q.y*q.y + q.z*q.z + q.w*q.w); + + return result; +} + +// Normalize provided quaternion +RMAPI Quaternion QuaternionNormalize(Quaternion q) +{ + Quaternion result = { 0 }; + + float length = sqrtf(q.x*q.x + q.y*q.y + q.z*q.z + q.w*q.w); + if (length == 0.0f) length = 1.0f; + float ilength = 1.0f/length; + + result.x = q.x*ilength; + result.y = q.y*ilength; + result.z = q.z*ilength; + result.w = q.w*ilength; + + return result; +} + +// Invert provided quaternion +RMAPI Quaternion QuaternionInvert(Quaternion q) +{ + Quaternion result = q; + + float lengthSq = q.x*q.x + q.y*q.y + q.z*q.z + q.w*q.w; + + if (lengthSq != 0.0f) + { + float invLength = 1.0f/lengthSq; + + result.x *= -invLength; + result.y *= -invLength; + result.z *= -invLength; + result.w *= invLength; + } + + return result; +} + +// Calculate two quaternion multiplication +RMAPI Quaternion QuaternionMultiply(Quaternion q1, Quaternion q2) +{ + Quaternion result = { 0 }; + + float qax = q1.x, qay = q1.y, qaz = q1.z, qaw = q1.w; + float qbx = q2.x, qby = q2.y, qbz = q2.z, qbw = q2.w; + + result.x = qax*qbw + qaw*qbx + qay*qbz - qaz*qby; + result.y = qay*qbw + qaw*qby + qaz*qbx - qax*qbz; + result.z = qaz*qbw + qaw*qbz + qax*qby - qay*qbx; + result.w = qaw*qbw - qax*qbx - qay*qby - qaz*qbz; + + return result; +} + +// Scale quaternion by float value +RMAPI Quaternion QuaternionScale(Quaternion q, float mul) +{ + Quaternion result = { 0 }; + + result.x = q.x*mul; + result.y = q.y*mul; + result.z = q.z*mul; + result.w = q.w*mul; + + return result; +} + +// Divide two quaternions +RMAPI Quaternion QuaternionDivide(Quaternion q1, Quaternion q2) +{ + Quaternion result = { q1.x/q2.x, q1.y/q2.y, q1.z/q2.z, q1.w/q2.w }; + + return result; +} + +// Calculate linear interpolation between two quaternions +RMAPI Quaternion QuaternionLerp(Quaternion q1, Quaternion q2, float amount) +{ + Quaternion result = { 0 }; + + result.x = q1.x + amount*(q2.x - q1.x); + result.y = q1.y + amount*(q2.y - q1.y); + result.z = q1.z + amount*(q2.z - q1.z); + result.w = q1.w + amount*(q2.w - q1.w); + + return result; +} + +// Calculate slerp-optimized interpolation between two quaternions +RMAPI Quaternion QuaternionNlerp(Quaternion q1, Quaternion q2, float amount) +{ + Quaternion result = { 0 }; + + // QuaternionLerp(q1, q2, amount) + result.x = q1.x + amount*(q2.x - q1.x); + result.y = q1.y + amount*(q2.y - q1.y); + result.z = q1.z + amount*(q2.z - q1.z); + result.w = q1.w + amount*(q2.w - q1.w); + + // QuaternionNormalize(q); + Quaternion q = result; + float length = sqrtf(q.x*q.x + q.y*q.y + q.z*q.z + q.w*q.w); + if (length == 0.0f) length = 1.0f; + float ilength = 1.0f/length; + + result.x = q.x*ilength; + result.y = q.y*ilength; + result.z = q.z*ilength; + result.w = q.w*ilength; + + return result; +} + +// Calculates spherical linear interpolation between two quaternions +RMAPI Quaternion QuaternionSlerp(Quaternion q1, Quaternion q2, float amount) +{ + Quaternion result = { 0 }; + +#if !defined(EPSILON) + #define EPSILON 0.000001f +#endif + + float cosHalfTheta = q1.x*q2.x + q1.y*q2.y + q1.z*q2.z + q1.w*q2.w; + + if (cosHalfTheta < 0) + { + q2.x = -q2.x; q2.y = -q2.y; q2.z = -q2.z; q2.w = -q2.w; + cosHalfTheta = -cosHalfTheta; + } + + if (fabsf(cosHalfTheta) >= 1.0f) result = q1; + else if (cosHalfTheta > 0.95f) result = QuaternionNlerp(q1, q2, amount); + else + { + float halfTheta = acosf(cosHalfTheta); + float sinHalfTheta = sqrtf(1.0f - cosHalfTheta*cosHalfTheta); + + if (fabsf(sinHalfTheta) < EPSILON) + { + result.x = (q1.x*0.5f + q2.x*0.5f); + result.y = (q1.y*0.5f + q2.y*0.5f); + result.z = (q1.z*0.5f + q2.z*0.5f); + result.w = (q1.w*0.5f + q2.w*0.5f); + } + else + { + float ratioA = sinf((1 - amount)*halfTheta)/sinHalfTheta; + float ratioB = sinf(amount*halfTheta)/sinHalfTheta; + + result.x = (q1.x*ratioA + q2.x*ratioB); + result.y = (q1.y*ratioA + q2.y*ratioB); + result.z = (q1.z*ratioA + q2.z*ratioB); + result.w = (q1.w*ratioA + q2.w*ratioB); + } + } + + return result; +} + +// Calculate quaternion cubic spline interpolation using Cubic Hermite Spline algorithm +// as described in the GLTF 2.0 specification: https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#interpolation-cubic +RMAPI Quaternion QuaternionCubicHermiteSpline(Quaternion q1, Quaternion outTangent1, Quaternion q2, Quaternion inTangent2, float t) +{ + float t2 = t * t; + float t3 = t2 * t; + float h00 = 2 * t3 - 3 * t2 + 1; + float h10 = t3 - 2 * t2 + t; + float h01 = -2 * t3 + 3 * t2; + float h11 = t3 - t2; + + Quaternion p0 = QuaternionScale(q1, h00); + Quaternion m0 = QuaternionScale(outTangent1, h10); + Quaternion p1 = QuaternionScale(q2, h01); + Quaternion m1 = QuaternionScale(inTangent2, h11); + + Quaternion result = { 0 }; + + result = QuaternionAdd(p0, m0); + result = QuaternionAdd(result, p1); + result = QuaternionAdd(result, m1); + result = QuaternionNormalize(result); + + return result; +} + +// Calculate quaternion based on the rotation from one vector to another +RMAPI Quaternion QuaternionFromvec3Tovec3(vec3 from, vec3 to) +{ + Quaternion result = { 0 }; + + float cos2Theta = (from.x*to.x + from.y*to.y + from.z*to.z); // vec3DotProduct(from, to) + vec3 cross = { from.y*to.z - from.z*to.y, from.z*to.x - from.x*to.z, from.x*to.y - from.y*to.x }; // vec3CrossProduct(from, to) + + result.x = cross.x; + result.y = cross.y; + result.z = cross.z; + result.w = 1.0f + cos2Theta; + + // QuaternionNormalize(q); + // NOTE: Normalize to essentially nlerp the original and identity to 0.5 + Quaternion q = result; + float length = sqrtf(q.x*q.x + q.y*q.y + q.z*q.z + q.w*q.w); + if (length == 0.0f) length = 1.0f; + float ilength = 1.0f/length; + + result.x = q.x*ilength; + result.y = q.y*ilength; + result.z = q.z*ilength; + result.w = q.w*ilength; + + return result; +} + +// Get a quaternion for a given rotation matrix +RMAPI Quaternion QuaternionFrommat4(mat4 mat) +{ + Quaternion result = { 0 }; + + float fourWSquaredMinus1 = mat.m0 + mat.m5 + mat.m10; + float fourXSquaredMinus1 = mat.m0 - mat.m5 - mat.m10; + float fourYSquaredMinus1 = mat.m5 - mat.m0 - mat.m10; + float fourZSquaredMinus1 = mat.m10 - mat.m0 - mat.m5; + + int biggestIndex = 0; + float fourBiggestSquaredMinus1 = fourWSquaredMinus1; + if (fourXSquaredMinus1 > fourBiggestSquaredMinus1) + { + fourBiggestSquaredMinus1 = fourXSquaredMinus1; + biggestIndex = 1; + } + + if (fourYSquaredMinus1 > fourBiggestSquaredMinus1) + { + fourBiggestSquaredMinus1 = fourYSquaredMinus1; + biggestIndex = 2; + } + + if (fourZSquaredMinus1 > fourBiggestSquaredMinus1) + { + fourBiggestSquaredMinus1 = fourZSquaredMinus1; + biggestIndex = 3; + } + + float biggestVal = sqrtf(fourBiggestSquaredMinus1 + 1.0f)*0.5f; + float mult = 0.25f/biggestVal; + + switch (biggestIndex) + { + case 0: + result.w = biggestVal; + result.x = (mat.m6 - mat.m9)*mult; + result.y = (mat.m8 - mat.m2)*mult; + result.z = (mat.m1 - mat.m4)*mult; + break; + case 1: + result.x = biggestVal; + result.w = (mat.m6 - mat.m9)*mult; + result.y = (mat.m1 + mat.m4)*mult; + result.z = (mat.m8 + mat.m2)*mult; + break; + case 2: + result.y = biggestVal; + result.w = (mat.m8 - mat.m2)*mult; + result.x = (mat.m1 + mat.m4)*mult; + result.z = (mat.m6 + mat.m9)*mult; + break; + case 3: + result.z = biggestVal; + result.w = (mat.m1 - mat.m4)*mult; + result.x = (mat.m8 + mat.m2)*mult; + result.y = (mat.m6 + mat.m9)*mult; + break; + } + + return result; +} + +// Get a matrix for a given quaternion +RMAPI mat4 QuaternionTomat4(Quaternion q) +{ + mat4 result = { 1.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 1.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 1.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f }; // mat4Identity() + + float a2 = q.x*q.x; + float b2 = q.y*q.y; + float c2 = q.z*q.z; + float ac = q.x*q.z; + float ab = q.x*q.y; + float bc = q.y*q.z; + float ad = q.w*q.x; + float bd = q.w*q.y; + float cd = q.w*q.z; + + result.m0 = 1 - 2*(b2 + c2); + result.m1 = 2*(ab + cd); + result.m2 = 2*(ac - bd); + + result.m4 = 2*(ab - cd); + result.m5 = 1 - 2*(a2 + c2); + result.m6 = 2*(bc + ad); + + result.m8 = 2*(ac + bd); + result.m9 = 2*(bc - ad); + result.m10 = 1 - 2*(a2 + b2); + + return result; +} + +// Get rotation quaternion for an angle and axis +// NOTE: Angle must be provided in radians +RMAPI Quaternion QuaternionFromAxisAngle(vec3 axis, float angle) +{ + Quaternion result = { 0.0f, 0.0f, 0.0f, 1.0f }; + + float axisLength = sqrtf(axis.x*axis.x + axis.y*axis.y + axis.z*axis.z); + + if (axisLength != 0.0f) + { + angle *= 0.5f; + + float length = 0.0f; + float ilength = 0.0f; + + // vec3Normalize(axis) + length = axisLength; + if (length == 0.0f) length = 1.0f; + ilength = 1.0f/length; + axis.x *= ilength; + axis.y *= ilength; + axis.z *= ilength; + + float sinres = sinf(angle); + float cosres = cosf(angle); + + result.x = axis.x*sinres; + result.y = axis.y*sinres; + result.z = axis.z*sinres; + result.w = cosres; + + // QuaternionNormalize(q); + Quaternion q = result; + length = sqrtf(q.x*q.x + q.y*q.y + q.z*q.z + q.w*q.w); + if (length == 0.0f) length = 1.0f; + ilength = 1.0f/length; + result.x = q.x*ilength; + result.y = q.y*ilength; + result.z = q.z*ilength; + result.w = q.w*ilength; + } + + return result; +} + +// Get the rotation angle and axis for a given quaternion +RMAPI void QuaternionToAxisAngle(Quaternion q, vec3 *outAxis, float *outAngle) +{ + if (fabsf(q.w) > 1.0f) + { + // QuaternionNormalize(q); + float length = sqrtf(q.x*q.x + q.y*q.y + q.z*q.z + q.w*q.w); + if (length == 0.0f) length = 1.0f; + float ilength = 1.0f/length; + + q.x = q.x*ilength; + q.y = q.y*ilength; + q.z = q.z*ilength; + q.w = q.w*ilength; + } + + vec3 resAxis = { 0.0f, 0.0f, 0.0f }; + float resAngle = 2.0f*acosf(q.w); + float den = sqrtf(1.0f - q.w*q.w); + + if (den > EPSILON) + { + resAxis.x = q.x/den; + resAxis.y = q.y/den; + resAxis.z = q.z/den; + } + else + { + // This occurs when the angle is zero. + // Not a problem: just set an arbitrary normalized axis. + resAxis.x = 1.0f; + } + + *outAxis = resAxis; + *outAngle = resAngle; +} + +// Get the quaternion equivalent to Euler angles +// NOTE: Rotation order is ZYX +RMAPI Quaternion QuaternionFromEuler(float pitch, float yaw, float roll) +{ + Quaternion result = { 0 }; + + float x0 = cosf(pitch*0.5f); + float x1 = sinf(pitch*0.5f); + float y0 = cosf(yaw*0.5f); + float y1 = sinf(yaw*0.5f); + float z0 = cosf(roll*0.5f); + float z1 = sinf(roll*0.5f); + + result.x = x1*y0*z0 - x0*y1*z1; + result.y = x0*y1*z0 + x1*y0*z1; + result.z = x0*y0*z1 - x1*y1*z0; + result.w = x0*y0*z0 + x1*y1*z1; + + return result; +} + +// Get the Euler angles equivalent to quaternion (roll, pitch, yaw) +// NOTE: Angles are returned in a vec3 struct in radians +RMAPI vec3 QuaternionToEuler(Quaternion q) +{ + vec3 result = { 0 }; + + // Roll (x-axis rotation) + float x0 = 2.0f*(q.w*q.x + q.y*q.z); + float x1 = 1.0f - 2.0f*(q.x*q.x + q.y*q.y); + result.x = atan2f(x0, x1); + + // Pitch (y-axis rotation) + float y0 = 2.0f*(q.w*q.y - q.z*q.x); + y0 = y0 > 1.0f ? 1.0f : y0; + y0 = y0 < -1.0f ? -1.0f : y0; + result.y = asinf(y0); + + // Yaw (z-axis rotation) + float z0 = 2.0f*(q.w*q.z + q.x*q.y); + float z1 = 1.0f - 2.0f*(q.y*q.y + q.z*q.z); + result.z = atan2f(z0, z1); + + return result; +} + +// Transform a quaternion given a transformation matrix +RMAPI Quaternion QuaternionTransform(Quaternion q, mat4 mat) +{ + Quaternion result = { 0 }; + + result.x = mat.m0*q.x + mat.m4*q.y + mat.m8*q.z + mat.m12*q.w; + result.y = mat.m1*q.x + mat.m5*q.y + mat.m9*q.z + mat.m13*q.w; + result.z = mat.m2*q.x + mat.m6*q.y + mat.m10*q.z + mat.m14*q.w; + result.w = mat.m3*q.x + mat.m7*q.y + mat.m11*q.z + mat.m15*q.w; + + return result; +} + +// Check whether two given quaternions are almost equal +RMAPI int QuaternionEquals(Quaternion p, Quaternion q) +{ +#if !defined(EPSILON) + #define EPSILON 0.000001f +#endif + + int result = (((fabsf(p.x - q.x)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.x), fabsf(q.x))))) && + ((fabsf(p.y - q.y)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.y), fabsf(q.y))))) && + ((fabsf(p.z - q.z)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.z), fabsf(q.z))))) && + ((fabsf(p.w - q.w)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.w), fabsf(q.w)))))) || + (((fabsf(p.x + q.x)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.x), fabsf(q.x))))) && + ((fabsf(p.y + q.y)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.y), fabsf(q.y))))) && + ((fabsf(p.z + q.z)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.z), fabsf(q.z))))) && + ((fabsf(p.w + q.w)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.w), fabsf(q.w)))))); + + return result; +} + +#endif // RAYMATH_H diff --git a/include/quad.h b/include/quad.h index c98dd2d..b01c0ea 100644 --- a/include/quad.h +++ b/include/quad.h @@ -3,9 +3,16 @@ #include +void setup_quads(); +void draw_quad(vec2 pos, vec2 size, vec4 color); +void draw_quad_trans(mat4 transform, vec4 color); +void batch_draw_quad(RenderBatch* batch, mat4 transform, vec4 color); +RenderBatch* create_quad_batch(); + +extern RenderBatch* quad_batch; + typedef struct { vec3 Position; - mat4 Transform; vec4 Color; } QuadVertex; diff --git a/include/raymath.h b/include/raymath.h index 08cbae4..410aac5 100644 --- a/include/raymath.h +++ b/include/raymath.h @@ -115,6 +115,11 @@ typedef struct vec2 { float x; float y; } vec2; + +#define vec2(...) (vec2){ __VA_ARGS__ } + +#define VEC2 "%f, %f" + #define RL_VECTOR2_TYPE #endif @@ -125,6 +130,18 @@ typedef struct vec3 { float y; float z; } vec3; + +#define vec3_1(x) (vec3){ x, x, x } +#define vec3_2(v2, z) (vec3){ v2.x, v2.y, z } +#define vec3_3(x, y, z) (vec3){ x, y, z } + +#define vec3_MACRO(_1, _2, _3, NAME, ...) NAME +#define vec3(...) vec3_MACRO(__VA_ARGS__, vec3_3, vec3_2, vec3_1)(__VA_ARGS__) + +#define vec3_spread(v) v.x, v.y, v.z + +#define VEC3 "%f, %f, %f" + #define RL_VECTOR3_TYPE #endif @@ -136,6 +153,19 @@ typedef struct vec4 { float z; float w; } vec4; + +#define vec4_1(x) (vec4){ x, x, x, x } +#define vec4_2(v3, w) (vec4){ v3.x, v3.y, v3.z, w } +#define vec4_3(v2, z, w) (vec4){ v2.x, v2.y, z, w } +#define vec4_4(x, y, z, w) (vec4){ x, y, z, w } + +#define vec4_MACRO(_1, _2, _3, _4, NAME, ...) NAME +#define vec4(...) vec4_MACRO(__VA_ARGS__, vec4_4, vec4_3, vec4_2, vec4_1)(__VA_ARGS__) + +#define vec4_spread(v) v.x, v.y, v.z, v.w + +#define VEC4 "%f, %f, %f, %f" + #define RL_VECTOR4_TYPE #endif diff --git a/include/textures.h b/include/textures.h index acc6515..060b1db 100644 --- a/include/textures.h +++ b/include/textures.h @@ -4,10 +4,13 @@ #include #include +typedef uint32_t Texture; + void setup_textures(); -uint32_t load_texture(const char* path); -void draw_texture(uint32_t id, vec3 pos, vec4 color); -void batch_draw_texture(RenderBatch* batch, uint32_t id, vec3 pos, vec4 color); +Texture load_texture(const char* path); +void draw_texture(Texture id, vec2 pos, vec2 size, vec4 tint); +void draw_texture_trans(Texture id, mat4 transform, vec4 tint); +void batch_draw_texture(RenderBatch* batch, Texture id, mat4 transform, vec4 tint); RenderBatch* create_texture_quad_batch(); extern RenderBatch* texture_quad_batch; diff --git a/src/batch.c b/src/batch.c index df4be67..ab2556d 100644 --- a/src/batch.c +++ b/src/batch.c @@ -2,7 +2,7 @@ #include #include -sl_vec(RenderBatch*) batches = { 0 }; +BatchList batches = { 0 }; RenderBatch* create_batch(size_t vert_size, uint32_t max_verts) { RenderBatch* batch = calloc(sizeof(RenderBatch), 1); @@ -15,8 +15,8 @@ RenderBatch* create_batch(size_t vert_size, uint32_t max_verts) { batch->max_vertices = max_verts; batch->vertices = calloc(vert_size, max_verts); batch->vertex_ptr = batch->vertices; - glNamedBufferStorage(batch->vbo, vert_size * max_verts, NULL, GL_DYNAMIC_STORAGE_BIT); - + glNamedBufferStorage(batch->vbo, vert_size * max_verts, NULL, GL_DYNAMIC_STORAGE_BIT); + return batch; } @@ -36,6 +36,13 @@ void flush_batch(RenderBatch* batch) { glUseProgram(batch->shader); + /*glUniformMatrix4fv(0, 1, GL_FALSE, + mat4ToFloat(mat4Multiply(batch->camera->view, batch->camera->projection)));*/ + + + //glUniformMatrix4fv(1, 1, GL_FALSE, mat4ToFloat(batch->camera->view)); + //glUniformMatrix4fv(2, 1, GL_FALSE, mat4ToFloat(batch->camera->projection)); + if(batch->flush_callback != NULL) batch->flush_callback(batch); @@ -69,6 +76,5 @@ void batch_bind_attribs(RenderBatch* batch) { } bool batch_needs_flush(RenderBatch* batch, uint32_t vertex_add) { - //return true; return batch->vertex_size * (batch->vertex_count + vertex_add) >= batch->vertex_size * batch->max_vertices; } diff --git a/src/camera.c b/src/camera.c new file mode 100644 index 0000000..a14e657 --- /dev/null +++ b/src/camera.c @@ -0,0 +1,7 @@ +#include + +void set_active_camera(Camera* camera) { + /*for(int i = 0; i < batches.size; i++) { + batches.data[i]->camera = camera; + }*/ +} diff --git a/src/init.c b/src/init.c index 8af302e..f35066d 100644 --- a/src/init.c +++ b/src/init.c @@ -3,6 +3,8 @@ #include #include +bool gl_initialized = false; + void init_gl(int major, int minor) { if(!glfwInit()) { printf("[GLFW] Failed to initialize\n"); @@ -13,10 +15,16 @@ void init_gl(int major, int minor) { glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, major); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, minor); - glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); + glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); + + printf("[OPENGL] Using OpenGL %d.%d\n", major, minor); + + gl_initialized = true; } Window create_window(int width, int height, const char* title) { + if(!gl_initialized) init_gl(4, 6); + Window window = glfwCreateWindow(width, height, title, NULL, NULL); if(!window) { printf("[GLFW] Failed to create window\n"); diff --git a/src/main.c b/src/main.c index 7c5a049..b259723 100644 --- a/src/main.c +++ b/src/main.c @@ -1,45 +1,127 @@ #include -#include -#include + +Camera* create_camera(vec2 pos) { + Camera* camera = calloc(sizeof(Camera), 1); + camera->view = mat4Transpose(mat4Translate(pos.x, pos.y, -3.0f)); + + return camera; +} + +void update_camera(Camera* camera, Window window) { + int width, height; + glfwGetWindowSize(window, &width, &height); + + assert(camera != NULL); + camera->projection = mat4Transpose(mat4Ortho(0.0f, width, height, 0.0f, 0.0f, 1000.0f)); + //camera->projection = mat4Transpose(mat4Perspective(45.0f * DEG2RAD, ((double)width / (double)height), 0.1f, 100.0f)); +} + +typedef struct CameraData { + mat4 view_projection; +} CameraData; int main() { - init_gl(4, 6); Window window = create_window(800, 600, "gearlib"); glfwSwapInterval(0); - enable_debugging(); + setup_quads(); setup_textures(); - - uint32_t cat = load_texture("assets/cat.png"); + + Camera* camera = create_camera(vec2(0.0f, 0.0f)); + set_active_camera(camera); + + Texture cat = load_texture("assets/cat.png"); + + /*uint32_t cat = load_texture("assets/cat.png"); uint32_t cuddle = load_texture("assets/cuddle.png"); - uint32_t parrots = load_texture("assets/parrots.png"); + uint32_t parrots = load_texture("assets/parrots.png");*/ double time = glfwGetTime(); + /*double total_time = 0; + int frames = 0; + int fps = 0;*/ + + uint32_t ubo; + glCreateBuffers(1, &ubo); + glNamedBufferStorage(ubo, sizeof(Camera), NULL, GL_DYNAMIC_STORAGE_BIT); + glBindBufferBase(GL_UNIFORM_BUFFER, 0, ubo); + + float angle = 0; while (!glfwWindowShouldClose(window)) { process_input(window); + update_camera(camera, window); + + glNamedBufferSubData(ubo, 0, sizeof(Camera), camera); glClearColor(0.2f, 0.3f, 0.3f, 1.0f); glClear(GL_COLOR_BUFFER_BIT); + + /*for(int i = 0; i < 33; i++) { + draw_texture(parrots, vec3(-0.4f, 0.4f, 0.0f), WHITE); + draw_texture(cat, vec3(0.0f, 0.0f, 0.0f), WHITE); + draw_texture(cuddle, vec3(0.0f, -0.4f, 0.0f), WHITE); + }*/ - draw_texture(parrots, (vec3){ -0.4f, 0.4f, 0.0f }, (vec4){ 1.0f, 1.0f, 1.0f, 1.0f }); - draw_texture(cat, (vec3){ 0.0f, 0.0f, 0.0f }, (vec4){ 1.0f, 1.0f, 1.0f, 1.0f }); - draw_texture(cuddle, (vec3){ 0.0f, -0.4f, 0.0f }, (vec4){ 1.0f, 1.0f, 1.0f, 1.0f }); + //draw_texture(cat, vec2(300, 400), vec2(700, 700), WHITE); + + //for(int i = 0; i < 255; i++) + //draw_quad(vec2(i, i), vec2(10, 10), vec4(i / 255.0f, i / 255.0f, i / 255.0f, 1.0f)); - flush(); + mat4 transform = mat4Multiply( + mat4Multiply( + mat4Scale(100, 100, 1), + mat4Identity()), + /*mat4Rotate(vec3(1.0f, 0.5f, 0.0f), angle)),*/ + mat4Translate(0, 0, 1)); + transform = mat4Multiply(mat4Translate(0.5, 0.5f, 0.0f), transform); + + draw_texture_trans(cat, transform, WHITE); + + flush(); double end_time = glfwGetTime(); double frame_time = end_time - time; + //total_time += frame_time; double fps = 1 / frame_time; + + angle += frame_time; + time = end_time; - //printf("%lf, %lf" /*", %d, %d"*/ "\n", frame_time, fps/*, stats.draw_calls, stats.total_verts*/); + /*frames++; + if(total_time > 1.0) { + fps = frames; + frames = 0; + total_time = 0; + }*/ + + //printf("%lf, %lf\n", frame_time, fps); glfwSwapBuffers(window); glfwPollEvents(); } + glfwDestroyWindow(window); glfwTerminate(); return 0; } + + + + + + + + +/* +double time = glfwGetTime(); +... +double end_time = glfwGetTime(); +double frame_time = end_time - time; +double fps = 1 / frame_time; +time = end_time; + +printf("%lf, %lf, %d, %d\n", frame_time, fps, 0, 0); +*/ diff --git a/src/quad.c b/src/quad.c index dd7d314..4c5ce9e 100644 --- a/src/quad.c +++ b/src/quad.c @@ -1,4 +1,5 @@ #include +#include vec3 quad_vertex_positions[6] = { { -0.5f, 0.5f, 0.0f }, @@ -10,14 +11,36 @@ vec3 quad_vertex_positions[6] = { { 0.5f, 0.5f, 0.0f }, }; -void draw_rectangle(RenderBatch* batch, mat4 transform, vec4 color) { - if(batch_needs_flush(batch, 6)) +RenderBatch* quad_batch = NULL; + +void setup_quads() { + quad_batch = create_quad_batch(); +} + +void draw_quad(vec2 pos, vec2 size, vec4 color) { + mat4 transform = mat4Multiply( + mat4Scale(size.x, size.y, 1.0f), + mat4Translate(pos.x, pos.y, 0.0f)); + + draw_quad_trans(transform, color); +} + +void draw_quad_trans(mat4 transform, vec4 color) { + assert(quad_batch != NULL && "quad_batch is null, was setup_quads() called?"); + + batch_draw_quad(quad_batch, transform, color); +} + +void batch_draw_quad(RenderBatch* batch, mat4 transform, vec4 color) { + uint32_t vertex_add = 6; + + if(batch_needs_flush(batch, vertex_add)) flush_batch(batch); - for(int i = 0; i < 6; i++) { + for(int i = 0; i < vertex_add; i++) { QuadVertex* vertex = batch->vertex_ptr; - vertex->Position = quad_vertex_positions[i]; + vertex->Position = vec3Transform(quad_vertex_positions[i], transform); vertex->Color = color; batch->vertex_ptr += batch->vertex_size; @@ -25,11 +48,11 @@ void draw_rectangle(RenderBatch* batch, mat4 transform, vec4 color) { } } -void setup_quad() { +RenderBatch* create_quad_batch() { RenderBatch* quad_batch = create_batch(sizeof(QuadVertex), MAX_VERTICES); quad_batch->shader = load_shader_program( compile_shader("assets/quad.vert", GL_VERTEX_SHADER), - compile_shader("assets/quad.frag", GL_FRAGMENT_SHADER), 0);; + compile_shader("assets/quad.frag", GL_FRAGMENT_SHADER), 0); batch_add_attrib(quad_batch, (VertexAttrib){ .type = GL_FLOAT, .size = sizeof(float), .count = 3 @@ -40,4 +63,6 @@ void setup_quad() { }); // color batch_bind_attribs(quad_batch); + + return quad_batch; } diff --git a/src/textures.c b/src/textures.c index 4be1114..215ddce 100644 --- a/src/textures.c +++ b/src/textures.c @@ -15,8 +15,6 @@ void setup_textures() { } uint32_t load_texture(const char* path) { - stbi_set_flip_vertically_on_load(1); - uint32_t id; glCreateTextures(GL_TEXTURE_2D, 1, &id); @@ -39,11 +37,6 @@ uint32_t load_texture(const char* path) { return id; } -void draw_texture(uint32_t id, vec3 pos, vec4 color) { - assert(texture_quad_batch != NULL && "texture_quad_batch is null, was setup_textures() called?"); - batch_draw_texture(texture_quad_batch, id, pos, color); -} - vec2 texture_quad_texcoords[] = { { 0.0f, 1.0f }, { 0.0f, 0.0f }, @@ -54,11 +47,24 @@ vec2 texture_quad_texcoords[] = { { 1.0f, 1.0f } }; -void batch_draw_texture(RenderBatch* batch, uint32_t texture, vec3 pos, vec4 color) { - TextureQuadBatchData* batch_data = batch->data; - uint32_t vertex_add = 6; +void draw_texture(Texture id, vec2 pos, vec2 size, vec4 tint) { + mat4 transform = mat4Multiply( + mat4Scale(size.x, size.y, 1.0f), + mat4Translate(pos.x, pos.y, 0.0f)); - if(batch_needs_flush(batch, vertex_add) || batch_data->texture_index > max_textures) + draw_texture_trans(id, transform, tint); +} + +void draw_texture_trans(Texture id, mat4 transform, vec4 tint) { + assert(texture_quad_batch != NULL && "texture_quad_batch is null, was setup_textures() called?"); + batch_draw_texture(texture_quad_batch, id, transform, tint); +} + +void batch_draw_texture(RenderBatch* batch, Texture texture, mat4 transform, vec4 color) { + TextureQuadBatchData* batch_data = batch->data; + uint32_t vertex_add = 6; + + if(batch_needs_flush(batch, vertex_add) || batch_data->texture_index >= max_textures) flush_batch(batch); uint32_t tex_id = batch_data->texture_index++; @@ -67,7 +73,7 @@ void batch_draw_texture(RenderBatch* batch, uint32_t texture, vec3 pos, vec4 col for(int i = 0; i < vertex_add; i++) { TextureQuadVertex* vertex = batch->vertex_ptr; - vertex->Position = vec3Add(quad_vertex_positions[i], pos); + vertex->Position = vec3Transform(quad_vertex_positions[i], transform); vertex->Tint = color; vertex->TexCoord = texture_quad_texcoords[i]; vertex->TexID = tex_id; @@ -77,7 +83,7 @@ void batch_draw_texture(RenderBatch* batch, uint32_t texture, vec3 pos, vec4 col } } -void texture_quad_batch_flush_callback(RenderBatch* batch) { +void texture_flush_callback(RenderBatch* batch) { TextureQuadBatchData* data = batch->data; data->texture_index = 0; } @@ -87,8 +93,9 @@ RenderBatch* create_texture_quad_batch() { texture_quad_batch->shader = load_shader_program( compile_shader("assets/texture.vert", GL_VERTEX_SHADER), compile_shader("assets/texture.frag", GL_FRAGMENT_SHADER), 0); + texture_quad_batch->data = calloc(sizeof(TextureQuadBatchData), 1); - texture_quad_batch->flush_callback = &texture_quad_batch_flush_callback; + texture_quad_batch->flush_callback = &texture_flush_callback; batch_add_attrib(texture_quad_batch, (VertexAttrib){ .type = GL_FLOAT, .size = sizeof(float), .count = 3