From 3167f1474e919b38966315bf82e017f800c272d3 Mon Sep 17 00:00:00 2001 From: Nico de Poel Date: Mon, 16 Jan 2023 15:20:07 +0100 Subject: [PATCH] Faces can now carry their own per-vertex lighting data, instead of sharing all vertex data with adjacent faces. --- ps1bsp.h | 15 ++++++--------- test.ps1bsp | Bin 60174 -> 80010 bytes world.c | 16 ++++++++-------- world.h | 2 +- 4 files changed, 15 insertions(+), 18 deletions(-) diff --git a/ps1bsp.h b/ps1bsp.h index 3ebaa19..1e97abf 100755 --- a/ps1bsp.h +++ b/ps1bsp.h @@ -22,7 +22,7 @@ Probable rendering process: typedef struct { unsigned short numVertices; - unsigned short numFaceVertIndices; + unsigned short numFaceVertices; unsigned short numFaces; } ps1bsp_header_t; @@ -51,19 +51,16 @@ typedef struct unsigned char b : 5; } ps1bsp_vertex_t; -// Instead of edges as in the original BSP format, we store triangles for easy consumption by the PS1 -// Note: it may actually be more efficient to render quads for faces with 4+ vertices typedef struct { - unsigned short vertex0; - unsigned short vertex1; - unsigned short vertex2; -} ps1bsp_triangle_t; + unsigned short index; + unsigned char light; +} ps1bsp_facevertex_t; typedef struct { - unsigned short firstVertexIndex; - unsigned short numVertices; + unsigned short firstFaceVertex; + unsigned short numFaceVertices; } ps1bsp_face_t; // Pre-parsed and encoded entity data (this runs the risk of becoming too bloated) diff --git a/test.ps1bsp b/test.ps1bsp index 63cf6dd62769fdc5911350c0ddf570712f7b5502..cd611321de5f47e12662dbbd2e8d8bc7bbe6b1ac 100755 GIT binary patch literal 80010 zcmZ6U2i#mm)&J*~&C^RlIsrD200{&_NeHCf^a=@qP(pxB1CkJ$lz<4A-XRo0@fBAQ z2`Vb6boAO0NB_LO_VT(Gu=0up<;C}T_WwO|W_A}JK8O9?bI+VPbLPym$4|06LwSg%OncBdjhK#B2+u)n}42PxOygp0ImISX* zd2m)g+VQg?!rxQn9UjxbmHOC*OvSe`6MO1vPwwzODi5yIC#bx`(;IrK^&=bnYJGv? z4)hExaQ4((dsj7ZZ2+(GmmyOd(6$K9TH2cpOls)K>U%e^sZVrRbQ)i;_${mN<@kl@ zscRdh?SU`)E8Zu$!|G>|uheHcd-6`fqg0Q>sd~l<$ke~@>gwAZepc^w{46bxHL3c+lmu&B3C`1F8ZvpRHk)qYYm5mtUZ!x^$E1_d@lsB+ za&B}S2{sK}rE|A9zm-#PbV3s+Cwh#0GTGTsP7U%WdA`{@H!GU_Mp^eotU1*k@^IA{GWL}(l5cD0(_#^gZ@_A zd@MOT(=5o)U&jV}=trIN(Z8=rM+O=CQRf8V=Z32Jt955(V-|Ugyb1F7&2gO!eXSRi zZNZra1Gl7IMXKWzo%CbyoAj^twX`?%JD7L~e2J6Ut^)Yh7+wz__?dq7$@U# z(JJ53QdV%{mRVDkvfiJ93y;fPO}^m3&%nmZ{P>9ocx3Xy0WH>w0G#?o+9D zkyH=ozm19cIYLU%T+fJIJ~Q z9^=kV}SjUcO7p!e5T)e5z!Q+jee~RuZ@vON7m@znA>vCgog2P!_ z#&7DlqD`=xkae}-RCES;nd?+1F~C?3{CDVQE;=UEML%|UEb+NL@QH05<6>K$>R7H~ zLmq6vwmj{2@@4D^e6cfNv9p1(GmMeU&4K5+vS9R|Di zJo>r4OJr2O+$A!nxPHMNWEMK?;=wF)*u{g{(ZHE`S3@QGvW&qro?(DU+F|j4_&jihO3y40Vk!;;GtR;;o1^-XtcAc&_JXK3}ds1b^e#JQ^Xo$G8T&XI42`xq=;8}Eb`he8DB-LeJy1(zm5n$ zGe8lz)J z+HOd3<I6Z~3SmAS&46G;Jl3-)VniE(Nc3ft5q z-!oyp5`Kth!3$hjiS4lFnhwF*cJw2ozGCcvRZqD~ux(_(h^V5&6Qe3xd~&F)MluZs$+rGanns4A1I*{DSkk zt{uo=r{pCc9LoOt^n(AH>`H{6`UoUS)mZQTPWy_I{Q<15Jc>|o+ zmpPfdrM;umjJErIN=dNJQMu!5-cqy)U&lf=M6j-#S%+ZX-cG@45Bh1Z-}6R40&74N zZTZL|_WPXlIM%%h<9%cv`*}>T zA9qsL_`QbMmT5`GsbH;3a2Q|Z)Qrvjydk({-@$l1%$0UBY1n5O)+37ZSL+sejZeY3 zneSrE@x2X#i&XvZWc>ajb9K#edW_Sf`>#Vf^HC<9=lCD#ERQy+##On?f=^WW&I&Sq zuItReI#=W!f_45kZ6c%djA;|T&d;VKHtTvi%3+PM{~VGdlX?Bws66#K68b|fowo~~ zt}^HhYr5#qeGH5KJk@a_Hsp;QM)(@T2K#fL5B#o6__{udAM#Y~DI8v+bvYmEo<;PB z9KPBnSoe>4yI@_L%IGXoU9XvAM;kx4I3Gqj*EyW{J+H_l+g#r{zVAoT6XtW*MsLq4fYrWs{qE;;hm%dNE*Be-`oUp8 z7ZLO5S6>M~oC(yVe~r%bwG#0Y)?CNe*cdfL>h*EhE?Czx#t1sKtcwkEu=WKq{bs#l z(Ua)>_eq&k!ahcY?0{L7o7V!B-@Y8 z&Ww-Swt~4x=Zyj!WCUkE_cQIn*Zq!hdYU+E#1eXZ4rw~7;1$lF4x6POOI@Mwknu4o z`rpA1WrZKlb7eC*w~T$B$^4&(IUKy+^f~`z!uMx)4kvz|m$HfaQ}{&-Kg{#+S>xJ+ z9@e-Xj}2>Fe*>2z?F*4FM}FNIB5Rz^3E0URr*R@OdHtw{&fLeR=@R?B9|W6;PR8-W zS)ZKa#mB1Oz^0_RlgOCTR?i2gnnwvgEA8}pOe5!kPrJ?!^5ioC8}giMTyA5!%*Z#A z?V+xbyZrbSejaK5COC_9?6({aKlmHKhw0d{a8l;k*~yO7}QD zd9TQL+#_wg((?shrAQ(!+x+|r@96EvDq#CKHurg@Kw+QM#krFw7p1uPVTU_ zF%zGp_qw(Sz9G5Aw>=yFa;)=`=rpPCFX}R>=88Ld1Z&>zWc*oyv%zTDe%e)}4|)AA z2E5+{-{|maa?~Q-<*@TZq4CbrdeEI51W8=7|3b!?WUU0zl{)8=aKI9%KwIgjM!$(S+1<$Jkq|FarbhpYjMtae=|`T z!6v=d$rJxzoij6;C;j=G!>K!MTSHMh(i_G_ZU{w$9DNM6^x7yV$>iGHx}cPFFs20G!7aW+U@wFFo2Cv{a*UE>6o zBi$E>OgSneAu?uU#jo{Fk6#}J7YV6_$~5+m$g{p^o**(|4b5F$L!G=}d|gHGC;G#)9#>brr7o|(Xlv>b z+*&sGww2pOM#oXjVLx`-tML69i^H1d*V?6CU1!SUWgx3 zcm9ZzcVLsK9^wBi?5W!gHjH=jhJ2}(=vXksMl~&azQl~`6n;7K`8@LBoI&_uFYK^? zekwZix{eXS6`y+-snn(Gui%Q$s|AO=vEs0vhve?8Lu1&aVw;a=hgD`O=M^T{?C=rJ z{(BPPPjmPc&N{*~#~glWdm-|Pwo7o4sDA2YuG4+7;GYFQgV%?BL`nRk`o*@ekEUL* zpHG~O_a`!0sy>l+1>aWEoN=UQ@0GM@j5Wa_o&~#x@INQxlBc3f6o{F!DOX(Uv^YoX~*7nXO4hMspIup==@Vd&KHy%;5ZSZ@9?{#(w z_W85yO$KJEub2n2f$0wC@*c&2e^vs&HlSl67x_WIKN9_enlCxqJkG?nL2bL(5Z(h3 z857PqkuhP7mVBUoOrzdfutC~2n5qAzU4u@9{Y4XJ(v}t(6V4SW8{QETc~jSQU*tnw z8FOZBV3@WYoDJywnXxC$2FjjqklEAWg1NUg(9yugztgRHM8NTA0!#XDjKOfLDf054zbbl&(@&Waa$kzt6EyAx2=v*XaYXkF~Z8_ty7|{GY zm$_@epNBiFxwnhSfk$I0P{22hu`mAdGUze&!&Rq~(fleWo{fLks7M8mYt(D%J`a?- z26Z1K^2MM&n=8b&L7j7?Y{1UuL4B4j_GAN1JF|h@*(oyFfacqkDDQmB@6&5>-ua^> zb2gYX@65w{GT_3WVT$|=e@0a975TYNzS`H+BX~xl{xm&OR@WoJJR8+G>^I#e(XnIt ztDPp)3w|c-H^F(`pZOr4dmlP^pRXFx6ZW%F-j~O#)&3~&&*S5pxbDxWMaG}co2aEO zu<>m%k=W+PCOD6EEDJx(&r&wL@8snD`%%I-;k~1_tUC*_)MmgM1H}-*8msvbk1r&W^o1UeBDXaVI!ujw$YBRnvZQ2wAzk%a- z;HC_7T|rl)iSSKb{Udm1UFVsiPs%pu!)N@uTt)v* zzqb->>N<8rKCEA~r7s%{?KOSny2cp%-g147#t-c(`}Zy3_hf^*w<`Lw-m*V8h7Z<0 z6>J*Me+#hYV?|$qjOHZBFdsJL`%LW5a44HcKJOC$hc!j|Wia$bF*F<0oDH4Bj6V-V zCs?1wz#nQF{z1Ocu3~6j*Ktjs4$JF0j-+f>S09Sb%;y`TCy(_!78&q0Iv4d(I^OIt zZHe_f%ISoer;9`6d#iD17e4f7w(xsQDbx#28qddj za{t_4Wb$xkCH0n`4R)gElMP&rFA6qLm&Ouhhnn=MV8hTnc{s>`^{fdyk=fmlF{PJ+ zPWbnGK0YsfI`C=Nvw@F2&jkLktfb>bY;MJ~O85JCqfbkZ28^$C{&9Wb-~Xg6>+d43 z6P)N;Cj9VRK=8yw^R6tyZ;df!dRByd5`ONVK_f#y`gvQhj}75dm$N5}a$-!^WiWir z+Xd%7_Q3tTtKe)C`KBIZ;>DhCdL9YST(F_=`*hJ$B)T3soqkSmI{h;Xhm&Au-e359 zM);Y3){M>lc|*n^qvrrwY`Tjf>i;Y*8aPi{a8DB#y{*_ZhJ2z8KJPZCLAzki!Un(65iFV83RG%%HB(_@Vm||2|Ruk>@OVFeIKKv+oZad-GhFU>e!L86GJ|U4Y_~*o;j>}j$q^8>z1;O z_qx$JyVR?3d7>{kU^j*W8R8(xm>}*x{R8Jm-QFoeu@){#_~2nfrIT z96vnY5&8N&9lxUAj~6FjU#xZ_Q!eRzDD{?8ox22QCEcfFzbc{1QP}Z-NlgNv)0=eOMyBj-5If7I>zn+NU(?}dCBIKZJ}db( z+F>6*=+8=;mljf2$*+<%`! zWG?aVcr!aU$2-{gwLtiJeV)@VIK-jg6+Q=;;N&$Qkh;Ry5o}8SECoEbRCam_`h9ju z&-Mj3&VIpf`!hxYr!iL<~lrB=4E(3ndwHDdT#0{p#QU4rM9x*cX-YRF)7 zvn+Ua>136cJxJ-YU?=!OhlwAs=3R_mu+C9p&)kxp%jHRdKeaBw4I6p{`|~&O+>$@9 z=qbb3TrmgFE%|e^zM`cs1p9ea_PHfpuZs@B`W>;nQ}BGXzf*MTcrP4Y>iAhKdelE+ zf6eb11+Od6-_fo)pxqs(JaK)bq2(I~kE0{b)eGcx;<4IcYkV=2W$7%-7 z{8@zHn%}=?Lkje0tY$;97Mvrav6>CZhgE!ROTBsA;DdF)DKdGieg>0=Oz<}3rZ#C9)60s-uIi#~K)jY)2mE6{7i%IVbWrvwm&l~YGW&NI- z`6Tzx=qcN8(kFG^=*qyiHE^D+@OldP4|_gsPkfGqo!OwSL79sU4Gp;P&(sTevX_2G%+$;RS$L5 z26ex0z{Q}(Tki0&PQT!=wu%hfq8sx+GQU#a8yH73#G-fiv{yjz~@7GP?^FEksm*9~9IC=lv+{ySePuDKL=Mwy~ ze`ic^Ue|S5@Ctt>!1_xZ>R8AfzSp&vH57X)>MQtfCYm!Cx7XG@-1Hj8+Fs7Ks`N`Z zFLl_D{T`9&*M5;c^}fn`a^^$rm#oLY_h-Dlg0(MlhZp*?!q*(w^n9PPI<70d1z6jK z->7SW_G9HW98UtYXnsb_- zjJ`O-+g5V6KSy{7KRbx+GYgZ^@Tw#F5>Hu!Eg?sD|k1~2nI&ymqFXnLit zO{$-mF9xr6xNv&ZZ}VbC^Un_Q3X?8VzjX`N+(2ZCLCs+@=Br{* zV=QN0Dh74`lDB2-JG5xtR)9})7dd%I&7Vc*Lqz6q&u4yUId2d0<#yq#9x&^Bz!`YF zyC^ujt_|o~TyXBqvn1!Ya=YXSL0Q#PDF4W+Y3k4f;&aoS|aW38D8}w+| zjPvb)3(m1?1L`X<@;)!(tT;U9s~fZGtyAK6^uCe9VY^qG$e6_Gd}CQFeX!E&%+n2Napwpw5|s^YA?g z(dnQ6z5?H*-v8vcwL#sN72r^>*iakPcr*AUe7{~~%Jpq(1N<U@(7=nN1zr#3H`2PC~1vuoKf)E)&iN>4Y!aoPh+rhyn;GjPzZmWKd6th2PG(){fL%IeuW^5CVahqBdhPA_IkQsNewVqlQrB^fJ>c2S zX0ff}*EQ@1>pCuNsrVd5Yzy{?%@w~k8O}pYpLYQgj!7EX%r342E$h zd_CXGnUjk_9Y->6H|8tWm%um7;o)2>XPyu1l&nXAU+`SD@Xrkkp2HRcpVRz-=d*=> zewW92cj5P#MTxS0PBy9Oxyg^yspv8O_Yj;;|6KrdG6r=|nkQiYecqh&gu;J+8O+$% zzN0K-T>Hi88N62KjZzhx{k$qR4EpmTskiRq4H@zcFP}5F_;~=Gd8})+*pvHrpG1FS z-VogQjTgx)c6vSN_wW3;vWc!!VrQN#cQR$SkJh@t>`yhfbl7NrIT^qA&r2El{hEb6 z;kjOs3ih#=nxV$$x_POfUAk{FuDyzpr|mxe(;Ru-$K_6sA9tzgHFeF?a{9~oGu7NZ z2hnFD=oI}%{tC{Ad3NTo^jDs09w>d3`}cmO?8~v{6`W(!@5ehoNIYcz%uTRK{T>1N z72(|pvEP3OEyw0!@T0CQxUU%0y)Ab37K8p-5^ZeZOTMagp{E%94=sy-ia~$Ih~J7q zons59Q_rh&i9?^GivNqj`PxQ_?IuRXzrQ5$KdAPjr_+RaOrF~YJVfvcr^h&~&(jUh zK>|PT5Ijfga(sWj!E+PdvC*>*%Z{T5SP-+hd}ivKqq%8(L-POZO-8vrCGN_{7T(!zV%BwBQWf z(BEI{s6;-8>8}o{MDtV;IQ$-z={N1<@SdN87kFIjF!i-foQ!UkP1+l{9Q(#lS2^}F zk<{gV9*GUQmoebR-YP1Cy={@y>-UCHwaxgs-Jr+#HNxSfQ|lEy!H3{->>Y%B+0CTJ zjE;U+3h!T)qd$OkPeBi&Q^#^8D&Xsw${hAF9OcO9SkB@mt~%`FEfM}^jfYtD=(=2S zW%c=TIeITLnj@86yL`Unu+C9MRH41PKgwdky64K`D%kI>9M-zZ&Q}`S<;dVS9aDwl z>)8=D!}sU94(oFw?1!)Kl2v0Vt9xpE0$$+Sg8g7UAE-GQ-P7f%$Xw}Vr0;xw;`-6= z@1hzq{;VSwtaDTri@d)3kvpvO1NAZn^?8;lNxf=+&DrVCD|*Gxx(1aUzCnH7Cw$$9 zRvp&8Mzznt*R`qISI{rswqC)FcNoAbQ|pu1&>a4EeG)U;M`noFv)aWQ^9k6m`|W}! zY8-auv`gm-(d) z&*kkFf8J6!89fWl`b1u1rsDMId0^qNu0cg_6&bwEU)CpesUNaF;p=!WoIQFD$$W^6 z#v8r`>oX&K3)Z!-;^fykoi)eTd92naF|T#iTv?6P!nIvvspzetM`JAO6Rh)j)>kGT zwBNz_O7jrvg|9Z7nEq{3_k+_0PMf%B!S{5u@X7WX^1LC@#FPj+C6+wSQK;vS5$oI~ z_GEtE6I}6F%C_PlleO>#xAG~|s5jtBm)NZ5AsJ8X%D!H~MLgNb3pW0lc!qrV9)#E# zaPG?P?c@a){x>cv4(ohnkgr5~RwI6^L_S{?n2huWP`jw4a!4c#hdt^ZH-! zeLW4h=q=Jv_6NQ9r>{3;9&gByw=}RJ%QXHOU(uU2%0AWml#Dk0Bg-_Uu@1l9JFHO_ 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 = (ps1bsp_vertex_t*)bytes; bytes += sizeof(ps1bsp_vertex_t) * world->header->numVertices; - world->faceVertIndices = (unsigned short*)bytes; - bytes += sizeof(unsigned short) * world->header->numFaceVertIndices; + world->faceVertices = (ps1bsp_facevertex_t*)bytes; + bytes += sizeof(ps1bsp_facevertex_t) * world->header->numFaceVertices; world->faces = (ps1bsp_face_t*)bytes; bytes += sizeof(ps1bsp_face_t) * world->header->numFaces; @@ -52,19 +52,19 @@ void world_draw(const world_t *world) const CVECTOR *col = &colors[faceIdx % numColors]; char *scratch = scratchpad; - SVECTOR *vecs = (SVECTOR*)mem_scratch(&scratch, sizeof(SVECTOR) * face->numVertices); + SVECTOR *vecs = (SVECTOR*)mem_scratch(&scratch, sizeof(SVECTOR) * face->numFaceVertices); // Copy this face's vertices into scratch RAM for fast reuse - unsigned short *faceVertIndex = &world->faceVertIndices[face->firstVertexIndex]; - for (int vertIdx = 0; vertIdx < face->numVertices; ++vertIdx, ++faceVertIndex) + ps1bsp_facevertex_t *faceVertex = &world->faceVertices[face->firstFaceVertex]; + for (int vertIdx = 0; vertIdx < face->numFaceVertices; ++vertIdx, ++faceVertex) { - const ps1bsp_vertex_t *vert = &world->vertices[*faceVertIndex]; + const ps1bsp_vertex_t *vert = &world->vertices[faceVertex->index]; vecs[vertIdx] = *((SVECTOR*)vert); vecs[vertIdx].pad = vert->baseLight; } // Draw the face as a triangle fan - for (int vertIdx = 1; vertIdx < face->numVertices - 1; ++vertIdx) + for (int vertIdx = 1; vertIdx < face->numFaceVertices - 1; ++vertIdx) { const SVECTOR *v0 = &vecs[0]; const SVECTOR *v1 = &vecs[vertIdx]; @@ -74,7 +74,7 @@ void world_draw(const world_t *world) gte_ldv3(v0, v1, v2); gte_rtpt(); // Rotation, translation, perspective projection - // Normal clipping for backface culling + // Normal clipping for backface culling (TODO: should be necessary only once per face, using plane normal & camera direction) gte_nclip(); gte_stopz(&p); if (p < 0) diff --git a/world.h b/world.h index 354df56..6ff1500 100644 --- a/world.h +++ b/world.h @@ -7,7 +7,7 @@ typedef struct { ps1bsp_header_t *header; ps1bsp_vertex_t *vertices; - unsigned short *faceVertIndices; + ps1bsp_facevertex_t *faceVertices; ps1bsp_face_t *faces; } world_t;