From e4f86a3c3e366f0c2700a9feabf9ab393c760a9c Mon Sep 17 00:00:00 2001 From: milang Date: Sat, 17 Aug 2019 14:30:18 +0200 Subject: [PATCH] implementing texture rendering --- 1v13D.g1a | Bin 23684 -> 24004 bytes build-fx/map | 488 +++++++++++++++++------------------ build-fx/src/1v13D.bin | Bin 23172 -> 23492 bytes build-fx/src/1v13D.elf | Bin 33444 -> 33828 bytes build-fx/src/FxEngine/face.o | Bin 1444 -> 1832 bytes src/FxEngine/face.c | 31 ++- 6 files changed, 259 insertions(+), 260 deletions(-) diff --git a/1v13D.g1a b/1v13D.g1a index e2fd7970aba681b022f1510e7704e25c3113f334..9fb4c82f70905a9be73fa23934d49ccd704dd9c6 100644 GIT binary patch delta 2501 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 N6%t<&j{YEr`ac^yr3L^1 delta 2139 zcmY*aZ%kX)6+iddc+WO*{0~eSalvGme=Qeq!FKrbAcbNe1v@r{6is9U<}~T#Z8VCK zZB86inE@f%MU)R&i?(P(Q>381t?P%XvQ|{_fe)r)Q@3Rr(bBBz`hmn9Whzp3u3w

2y4kzJrz~?fsQ=5`mhpG-Fvw#Mw07BKk0Fv+@ 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 delta 623 zcmZ3%w}g9w5)+HfM3qG;8P59C^q1*x(?6zv&0i_iDaq=r1r#N^_XRdZ ziUc+Wi6k~zs%K2@XABg{P__{7XYvrt5cUAtXQ^EOf}xkmQaDrDQn-^LQ~061rFb{P zOZz)I7SlWD-_l9_oc6ht!;3qm8E7y!n5P2ev4D9FAYS(8+|Sh z`PLt`J9|7vMnXJL4#Kg2x=s1->translated.x; @@ -42,6 +43,7 @@ static void set_line(line* segment,FE_point const * s1, FE_point const * s2) segment->dz=s2->translated.z-s1->translated.z; segment->no_line=(segment->dx==0&&segment->dy==0); } + static bool get_x(int y, line const * segment, int * x) { y-=segment->y; @@ -61,7 +63,6 @@ static bool get_x(int y, line const * segment, int * x) return true; } - void FE_draw_face(FE_face const * face) { if (sens_horaire(face)!=face->visible) @@ -78,11 +79,11 @@ void FE_draw_face(FE_face const * face) return; line cotes[3]; - set_line(&cotes[0],face->s1,face->s2); - set_line(&cotes[1],face->s1,face->s3); - set_line(&cotes[2],face->s2,face->s3); + set_line(&cotes[0], face->s1,face->s2); + set_line(&cotes[1], face->s1,face->s3); + set_line(&cotes[2], face->s2,face->s3); - if (cotes[0].no_line||cotes[1].no_line||cotes[2].no_line) + if (cotes[0].no_line || cotes[1].no_line || cotes[2].no_line) return; const int ymin=max(min(face->s1->translated.y,min(face->s2->translated.y,face->s3->translated.y)),0); @@ -107,24 +108,22 @@ void FE_draw_face(FE_face const * face) for (int x=txmin; x<=txmax; x++) { - /* + // vx et vy coordonnées transformées pour l'accès à la texture + // z distance du point visible (distance non transformée) int32_t vx, vy, z; // calcul de vx, vy - const int32_t xcalc=x-face->s1->translated.x; - const int32_t ycalc=y-face->s1->translated.y; - vx=(xcalc*fact_1-ycalc*fact_2); // 0 s1->translated.x, ycalc = y-face->s1->translated.y; + vx=(xcalc*fact_1-ycalc*fact_2); // 0 s1->translated.z + (vx*zAB+vy*zAC)/10000; - vx *= 100000 / (face->s2->translated.z * ((100-100*vx) / face->s1->translated.z + (100*vx) / face->s2->translated.z)); - vy *= 100000 / (face->s3->translated.z * ((100-100*vy) / face->s1->translated.z + (vy*100) / face->s3->translated.z)); - + z=face->s1->translated.z + (vx*zAB+vy*zAC)/10000; // calcul de z non corrigé >> fonctionnel + + vx = (8*vx) / (face->s2->translated.z * ((1-vx) / face->s1->translated.z + (vx) / face->s2->translated.z)); + vy = (8*vy) / (face->s3->translated.z * ((1-vy) / face->s1->translated.z + (vy) / face->s3->translated.z)); + // Affichage du point if (FE_zbuffer_set_dist(x,y,z)) dpixel(x, y, 3*FE_get_pixel(face->texturenum, vx/125, vy/125)); // 3* means cast to black and white, and vx,and vy casted between 0 and 7 - */ - if (FE_zbuffer_set_dist(x,y,1)) - dpixel(x, y, C_BLACK); } }