SV:s@③H④B_②gT GOMessageL ⑧@du 17/O9/96 ⑨Aa 22:54DAMDS de ⑧patapom pour ALGORITHMESEAB`②gGR⑨Bef:]ODIN\ (17/O9 ⑨Aa 17:3③H8)
Non ⑨Kca suffit pas p③Hasskeu Z n'est pas li③Hn⑨Beaire! Alors ke 1/Z l'e③Hst... C comme si tu supposais ke, si Z est lin⑨Beaire alors U et V l'⑨Betaient alors l⑨Aa je vois m⑨Ceme plus l'inter⑨Cet d'interpoler U/Z et V/Z ⑨Aa moins de vouloir g⑨Cacher des cycles koi...VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du 17/O9/96 ⑨Aa 19:42DAMDS de ⑧Geek pour ALGORITHMESEAB`②gGref: cyrix
g fait 2 chtites boucles en asm histoire de tester... pr le moment elles sont vides.
donc j'ai : mov ecx,nombre_au_pif
boucle1: dec ecx
jnz boucle1
et une 2eme: mov ecx,meme_nombre_o_pif
dec... et pis jnz.
alors POURQUOI la 1ere prend elle 2x - de tps que la 2eme????VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du 17/O9/96 ⑨Aa 17:38DAMDS de ⑧ODIN pour ALGORITHMESEAB`②gGR⑨Bef:]SYNTAX\ (15/O9 ⑨Aa 19:51)
meuh non!!
u/z & v/z avec z interpole suffit !!
u est egalement interpole mais suivant umax=u*zmax
voila et graphiquement ca donnera une hyperbole...VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du 15/O9/96 ⑨Aa 22:36DAMDS de ⑧E.T pour ALGORITHMESEAB`②gGR⑨Bef:]SYNTAX\ (15/O9 ⑨Aa 19:51)
c'est exacte. tu multiplie bien 1/z par n. mais egalement u/z et v/z③H.
donc t'as tout compri③Hs.
slt a+VAB`②gT @AvancerGZ ] Suite ③H\Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du 15/O9/96 ⑨Aa 19:51DAMDS de ⑧SYNTAX pour ALGORITHMESEAB`②gGR⑨Bef:]E.T\ (13/O9 ⑨Aa 23:15)
Hi! mais oui c.t. ca! je suis rassure!
bon je recapitule le map corrige pour voir si j'ai bien pige:
a chaque group de n pix on a le u de depart,on calcule le u suivant par correction,et on interpole n pix entre les 2 parle pas (usuiv-udep)/n.
oui mais alors le pas 1/z il fo le multiplier par n vu k'on l'utilise tous les n,non?
voila. a+VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du 15/O9/96 ⑨Aa OO:O1DAMDS de ⑧ODIN pour ALGORITHMESEAB`②gGR⑨Bef:]ODIN\ (14/O9 ⑨Aa 21:57)
pour en finir avec le true map, la methode la + simple a retranscire sur un motorola qui n'accepte pas les float donc necessite d'avoir bcp de bits de precision est la methode a 2 divs.
en la boucle se compose telle qu'elle:
x=x+pasx
y=y+pasy
xf=x/z
yf=y/z
avec evidemment z=z+pz calcule pour que xmax/zmax donne la largeur de la pic..
donc on voit tout de suite que z ne prendra pas des valeurs a dormir debout..VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④@AQ ⑧`]NGRLCTFEBLG\⑨.@Contact:GCHARLES-HENRI
@]⑧]N*L Envoi
①④B_②gT GOMessageL ⑧@du 15/O9/96 ⑨Aa OO:O5DAMDS de ⑧ODIN pour ALGORITHMESEAB`②gGgenre z=0.00000001, argh !!
bon y'a 3 interpolations alors qu'avec 1 div, 2 muls y'en a qu'une pour z car dans u=i/z, i est juste incremente a chaque fois c'est tout...
mais on peut avoir des z franchement chiant a gerer (8 bits de precision sont ridicules !!), et passer sur des divs 32 bits en 68020, oucchh!!!
sinon je sais pas si j'ai bien capte la methode de e.t. ou synthax ou j'sais plus mais il avait pas des interpolations dans sa texture ?? bcoz z'en ai plus..VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du 14/O9/96 ⑨Aa 22:47DAMDS de ⑧TRANTOR pour ALGORITHMESEAB`②gGR⑨Bef:]CREATEUR\ (12/O9 ⑨Aa 11:O8)
effacer-recopier avec des 'rep' de 4Ko ?
heu, tu peux filer la methode la ?
je vois pas comment un rep peu prendre
4Ko !!! Explik please...
Un novice en optimization...VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du 14/O9/96 ⑨Aa 21:57DAMDS de ⑧ODIN pour ALGORITHMESEAB`②gGR⑨Bef:]Geek\ (12/O9 ⑨Aa O:22)
y'a des blems avec les CYRIX?
ca commence a m'enerver tout ces trucs chelou je sens que je vais m'acheter un intel et pi voila, hum ...
pourtant j'ai des tests nortons qui disent qu'un p120 tourne a 300N alors qu'un p120+ va pratiquement 2* plus vite...
aller donne vos avis tout, je veux savoir la veritie sur les CYRIX !!VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du 13/O9/96 ⑨Aa 23:15DAMDS de ⑧E.T pour ALGORITHMESEAB`②gGR⑨Bef:]SYNTAX\ (13/O9 ⑨Aa 2O:54)
heu pour ton probleme. du nombre de cycle pris par le fmul, t'as bien pense a mettre qqueschose dans les registres du copro, because une instruction executee sur un registre copro libre genere un exeption.
ca peut peut etre venir de ca!!!
a+VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du 13/O9/96 ⑨Aa 22:15DAMDS de ⑧TRILOGY pour ALGORITHMESEAB`②gGQuel est l'algo utilis⑨Be dans RAR.EXE ???VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du 13/O9/96 ⑨Aa 2O:54DAMDS de ⑧SYNTAX pour ALGORITHMESEAB`②gGR⑨Bef:]CREATEUR\ (1O/O9 ⑨Aa 23:19)
Hi! j'suis d'a③Hccord pour le cache miss code mais regardez mon code:
mov ecx,100
RDTSC
push eax
loop: fmul ; dec ecx ; jg short loop
etc...
ben ca me donne +③H de 6000 cycles!
c dingue...VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du 13/O9/96 ⑨Aa 12:O6DAMDS de ⑧Geek pour ALGORITHMESEAB`②gGR⑨Bef:]Geek\ (12/O9 ⑨Aa 18:46)
pfiou laissez tomber je m'etais plante..g refait le test et mon cyrix aime pas trop les reels....
a part ca y'a t'il kk1 ki code sur cyrixici???VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du 12/O9/96 ⑨Aa 18:46DAMDS de ⑧Geek pour ALGORITHMESEAB`②gGR⑨Bef:]CREATEUR\ (12/O9 ⑨Aa 11:O8)
c bizarre kan meme car une fois sous tp j'avais fait un truc du style mem[⑨$a000:j*320+i]:=i+j div bidule ki etait plus lent que que faire une div reelle!!?
donc sur cyrix fodrait coder qu'av③Hec des entiers?VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du 12/O9/96 ⑨Aa 12:1ODAMDS de ⑧Zappy pour ALGORITHMESEAB`②gGR⑨Bef:]CREATEUR\ (12/O9 ⑨Aa 11:O8)
Ca depend des PC on dirait...c'est pas quelques HBL chez moi.VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨Bepondeu③HrGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du 12/O9/96 ⑨Aa 11:O8DAMDS de ⑧CREATEUR pour ALGORITHMESEAB`②gGR⑨Bef:]Geek\ (12/O9 ⑨Aa O:22)
Bah c'est le pb des cyrix:tout ce qu'on dit ici est bon pour le pentium...deja le pentium pro,c'est un peu different,le pentium avec le MMX aussi...
Pour le Cyrix,je crois que c'etait son gros point faible,les flottants....
(m'enfin t'inquiete pas,on gagne qq hbl a effacer-recopier au③H fpu,c'est tout...moi je reste avec mes petits "rep" de 4ko,ca marche partout normalement).VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du 12/O9/96 ⑨Aa OO:22DAMDS de ⑧Geek pour ALGORITHMESEAB`②gGR⑨Bef:]Geek\ (12/O9 ⑨Aa O:17)
argh mon modem ki raccroche...
du coup j'abrege.
donc on faisait des muls par copro, sur p100 on en casait environ.... je sais + trop 15000 ds la vbl je crois alors qu'on mettait aisement 90000 entieres!
donc comment esse kon init le copro?
ya til des docs ou books... ou on puissetrouver le timing des instructions fpu?VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du 12/O9/96 ⑨Aa OO:17DAMDS de ⑧Geek pour ALGORITHMESEAB`②gGref:]COPRO\
g dl fpu.zip sur eden... un prg ki est cense prouver ke le fild q fistp q est +rapide ke le rep movsd.... mais moi g uncyrix et le copro est presque 2x + lent...? c normal ca? kelk1 a fait des tests copro sur cyrix?(p166+?)
sinon pour initialiser le copro est ce qu'1 simple finit suffit?
avec mogar on avait un code du style:VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④@AQ ⑧`]NGRLCTFEBLG\⑨.@Contact:GCHARLES-HENRI
@]⑧]N*L Envoi
①④③H④B_②gT GOMessageL ⑧@du 11/O9/96 ⑨Aa 22:51DAMDS de ⑧E.T pour ALGORITHMESEAB`②gGR⑨Bef:]CREATEUR\ (11/O9 ⑨Aa 12:54)
heu j'ai un doute la!!!
d'apres toi ca va plus vite de taper 4 fois un code plutot que d'y mettre un rept 4!!!
oups. scuse j'ai pige. tu veux dire qu'en ecrivant 4 fois le code tu peux deplacer certaines instructions pour qu'elle se pa③Hrallelisent mieux... okok.
sinon autre question a la mode (enfin en ce qui me concerne) comment on gere les collisions dans un truc style descente???VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du 11/O9/96 ⑨Aa 22:53DAMDS de ⑧E.T pour ALGORITHMESEAB`②gGm'est dans l'idee qu'avec un bsp on doitpouvoir savoir assez vite si on est dansou hors des couloirs, m'enfin c'est pas terrible.
③Hcas plus simple (peut etre) dans③H quake..comment font ils???
si qqu'un a une tite idee qui tient la rout③He...
a+VAB`②gT @AvancerGZ③H ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du 11/O9/96 ⑨Aa 12:54DAMDS de ⑧CREATEUR pour ALGORITHMESEAB`②gGR⑨Bef:]Zappy\ (11/O9 ⑨Aa O:O6)
Yep,dans une doc y conseille de derouler 4 fois maximun(et pas un rept 4...endr,mais de le faire a la main pour profiter a fond du pipeline...).VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du 11/O9/96 ⑨Aa OO:O6DAMDS de ⑧Zappy pour ALGORITHMESEAB`②gGR⑨Bef:]CREATEUR\ (1O/O9 ⑨Aa 23:19)
Ouais, j'ai deja eu un mov a 62 cycles, huhu..
Syntax: la boucle qui va plus vite que le code deroule, ca n'a rien d'etonnant sur un Pentium. Pensez-y pour le mapping.. la boucle qui repete du 3/2 n'est PASle plus rapide..VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du 11/O9/96 ⑨Aa OO:O2DAMDS de ⑧ODIN pour ALGORITHMESEAB`②gGR⑨Bef:]Zappy\ (9/O9 ⑨Aa O:26)
Je suis pas d'accord, franchement le petit expose "mapping corrige" a bcp avance et ne repete pas les meme cho③Hses...VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du 1O/O9/96 ⑨Aa 23:29DAMDS de ⑧E.T pour ALGORITHMESEAB`②gGR⑨Bef:]SYNTAX\ (1O/O9 ⑨Aa 21:O8)
heu ouaip.
enfin si tu corrige tous les 8 pixels ben tu divise par 8 (enfin tu decales quoi!!!)
en ce qui concerne ton test de cycles, faut toujours le mettre dans une boucle,car les cache miss des datas ne sont pas les plus grave. le pire c'est les caches miss du code. donc si c'est la premiere fois que tu entre dans ton code, ben c'est regle davance pour le nombre de cycles...VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du 1O/O9/96 ⑨Aa 23:19DAMDS de ⑧CREATEUR pour ALGORITHMESEAB`②gGR⑨Bef:]ODIN\ (8/O9 ⑨Aa 23:42)
Bah faut lire③H ta bal...je t'ai dis que c'etait pour les effets 2d...
Pour RDST? bah deja cette instruction prends un certain temps(qui n'a pas l'air constant ?!?) de plus c'est peut-etre pas FILD qui prends 40 cycle,mais FILD [MEM]..si MEM n'est pas dans le cache,tu tombes rapidement a des 40 cycles,meme pour un bete MOV...
A note que l'on peu aussi tester le nombre de cache miss,de saut de cache non prevu,etc,etc...c'est prevu en hard!VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du 1O/O9/96 ⑨Aa 21:O8DAMDS de ⑧SYNTAX pour ALGORITHMESEAB`②gGR⑨Bef:]E.T\ (8/O9 ⑨Aa O:O6)
Hi! bizarre...je viens de tester avec RDTSC les tps d'execution de qques in-
structions fpu.c monstrueux!
j'obtient 60 cycles pour 1 simple FLD!
ca deconne ou koi? pareil pour le FMUL! mon PC marche bien,QUAKE est super fluide en 320*200 (P90)! comprends po.
par ailleurs 1 boucle avec dec/Jcc va + vite apparemment que la boucle mise a plat!
bon z'allez encore me dire ke j'debarquemais le coup du fpu,c louche...
au fait E.T.,kan tu mappe lineairement apres ta div tu utilise (U2-U1)/l com- me pas c ca?VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O9/O9/96 ⑨Aa 11:35DAMDS de ⑧SYNTAX pour ALGORITHMESEAB`②gGR⑨Bef:]E.T\ (8/O9 ⑨Aa 22:34)
hi! add eax,mem prend 2 cycles et tu le
parallelise avec add ecx,edx ki en prendqu'un (on s'en fout pour les reg,hein)
donc le tout prend 2 cycles,
car le add ecx,edx attend le dernier cycle du add eax,mem pour s'executer.ouf.a+
au fait merci pour l'explikation du map
corrige c nettement + clair maintenant!VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O9/O9/96 ⑨Aa O2:2ODAMDS de ⑧Zappy pour ALGORITHMESEAB`②gGR⑨Bef:]CREATEUR\ (6/O9 ⑨Aa 17:33)
Deja, aurais-tu des backups des contributions au club depuis...le debut?
En relisant les messages qui restent, je me suis rendu compte qu'on repetait 50 fois les memes trucs, par exemple au sujet du mapping corrige.
'fin bref..VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O9/O9/96 ⑨Aa OO:25DAMDS de ⑧Zappy pour ALGORITHMESEAB`②gGR⑨Bef:]ODIN\ (8/O9 ⑨Aa 23:36)
Ah mais de toute maniere tu ne pourras pas trouver de linearite en faisant ③Hces differences! J'ai parle d'une APPROX③HIMATION!
En analyse numerique classique, il y a 2choses bien differentes quand on essaye d'approcher une courbe donnee avec un polynome: les polynomes d'interpolation, qui passent reellement par tous les points cherches, et les polynomes d'approximation, qui, evidemment, se contentent d'approcher approximativement la courbe ideale. (...) Effectuer le mapping corrigeVAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O9/O9/96 ⑨Aa OO:26DAMDS de ⑧Zappy pour ALGORITHMESEAB`②gGsans aucune erreur, on s'en fout, personne ne verra jamais la difference. D'autant que 1/Z, c'est la projection employeeparce que c'est la plus simple! Mais c'est pas la seule! Pourquoi on mapperait pas en x^2? Je sais pas quel rendu ca peut avoir mais ce sera toujours mieux que du lineaire je③H suppose..VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O9/O9/96 ⑨Aa OO:16DAMDS de ⑧Zappy pour ALGORITHMESEAB`②gGR⑨Bef:]TIE FIGHTER\ (8/O9 ⑨Aa 22:58)
Oui, je pense aussi que c'est mieux!
C'est comme le PUSH Mem, moins interessant que le MOV eax,Mem suivi d'un PUSH Eax.VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O9/O9/96 ⑨Aa OO:14DAMDS de ⑧Zappy pour ALGORITHMESEAB`②gGR⑨Bef:]E.T\ (8/O9 ⑨Aa 22:33)
Tes 4 add prennent 3 cycles..
D'une maniere generale pour vos questions sur le parallelisme et les cycles, il y a toujours l'instruction RDTSC (opcode0f31h) qui renvoie dans EDX:EAX le nombre de cycles executes depuis l'allumage du Pentium.VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O9/O9/96 ⑨Aa OO:O4DAMDS de ⑧GODS pour ALGORITHMESEAB`②gGR⑨Bef:]Zappy\ (8/O9 ⑨Aa 2:27)
ouai mais t'es pas tres clair. le but du jeu est de passer de (i,j) a (u,v).
tu peux pas comme tu as l'air de l'expliquer partir de coordonne 3D, enfin si mais juste pour les points ecran de ton poly c'est tout... apres on va da③Hns l'autre sens, ecran -> texture.
ecrivez de petits listing lors de vos explications, ca rend les choes tout de suite plus comprehensible...
Odin.VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]③HN#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O9/O9/96 ⑨Aa OO:O3DAMDS de ⑧Zappy pour ALGORITHMESEAB`②gGR⑨Bef:]ODIN\ (8/O9 ⑨Aa 23:42)
Createur fume trop.
Elle tourne en 6-7 sur un P100 avec Burst Cache.
Tout ce qu'on peut raisonnablement dire de la Contrast c'est que:
1) elle est jolie.
2) elle rame.
Un peu comme Quake *8)VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O8/O9/96 ⑨Aa 23:42DAMDS de ⑧ODIN pour ALGORITHMESEAB`②gGsinon pour ceux qui ont la CONTRAST pourrait-il indique la fluidite de la demo (nombre de vbls en gros) ainsi que la config qu'il ont ?
car createur m'a dit qu'elle tournait a la vbl sur son p90 et j'ai un pote qui a un p150+ et ca tourne en 2 vbls avec qq saccade en 3, kan la boulles avec les tores arrivent par exemple...
alors kom je risque d'acheter mon PC dans le meme magasion, bein ca serait coup que je me fasse couilloner meme si c'est pas cher...VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O8/O9/9③H6 ⑨Aa 23:14DAMDS de ⑧ODIN pour ALGORITHMESEAB`②gGR⑨Bef:]E.T\ (7/O9 ⑨Aa 22:43)
Wooow, que de reponses !
heeu, en fait, j'me suis trompe, huhu!
y'avait un truc tout con que je faisais qui me calcule deux fois la meme valeurs, donc en fait, j'ai "que" 2 muls, et 1 divs par point.
pour une scan line, j'ai les deux extremetis X (x0,x1) , deux extremites Z (z0,z1), et 2 points dans une map.
j'interpole Z betement, comme le disais Zappy, c'est normalement une grossierre erreur, le Z interpole ecran est totalement faux (et oui 1/10-1/9 n'est pas egal a 1/9-1/8 qui n'est pas egal a 1/8-1/7VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O8/O9/96 ⑨Aa 23:18DAMDS de ⑧ODIN pour ALGORITHMESEAB`②gG...) mais on s'en fiche c'est juste pour retrouver je dirais "la forme mathematique des projections" dans un syteme arbitraire, c'est tout... hum...
bon et puis a chaque pixel i je divise par le z interpole je lui soustr③Hait une constante (comme b dans y=ax+b par exemple) et je multiplie par egalement une constante pour passer dans le systempe de coordonnes de la map, U a son propre facteur et V aussi, par contre I/Z sert pour les deux, si V est exprime par rapport a la meme chose,X1-X0 ici..
mais moi je le recalculais 2* I/Z, ca servait a rien, c'etait idiot, huhu !VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O8/O9/96 ⑨Aa 23:24DAMDS de ⑧ODIN pour ALGORITHMESEAB`②gGLe code GFA pour afficher des murs en true map donne ceci :
x0=xe(0)
y0=ye(0)
x1=xe(1)
y1=ye(1)
x1=x1-x0
y1=y1-y0
yp=y1/x1
y1=ye(3)
z=ze(1)
pz=(ze(0)-ze(1))/x1
aol=x0/z
fact=largeur texture/((x0+x1)/ze(0)-aol)for i=x0 to x0+x1VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O8/O9/96 ⑨Aa 23:26DAMDS de ⑧ODIN pour ALGORITHMESEAB`②gGu=i/z
u=u-aol
u=u*fact
v=0
color motif|(u,v)
for a=y0 to y1
plot i+159,a+127
next a
z=z+pz
y0=y0+py
y1=y1-py
next i
voila et ca va bcp plus vite qu'un raycasting (utilise dit-on dans DOOM)...VAB`②gT @AvancerG③HZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O8/O9/96 ⑨Aa 23:28DAMDS de ⑧ODIN pour ALGORITHMESEAB`②gGpour rajouter V ca ferait fact2 a calcule pour un truc du genre par point:
V=U-aol2
V=V*fact2
V=V+origine
voila voila...
sinon pour le coup d'avoir un pas pour un pas pour une valeur, soit :
x=a
a=a+b
b③H=b+c
j'y est reflechi et franchement je vois pas du tout, exemple:VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O8/O9/96 ⑨Aa 23:32DAMDS de ⑧ODIN pour ALGORITHMESEAB`②gGvous avez un poly de X constant qui part dans le fond vers l'horizon bein mathematiquement ca correspondra a un truc du genre : 10/1, 10/2, 10/3, 10/4, 10/5, 10/6, 10/7, ...
bein suffirait de savoir comme calcule ca sous la forme ecrite precedemment pour pouvoir optimiser le true map.
donc j'ai fais la difference entre chacun tout simplement et sur les nouvelles valeurs trouves je les ai repasse a la moulinette pour refai③Hre leur difference. calcul qu③H'il est d'ailleurs possible de continuer a l'infini...
bein je suis aller jusqu'a m'enfoncer 4* dans les differences des differences VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O8/O9/96 ⑨Aa 23:35DAMDS de ⑧ODIN pour ALGORITHMESEAB`②gGdes differences des differences... et je n'ai jamais trouve aucune linearite..
y'avait juste un moment toutes les valeurs trouve etait du style 0.3333, 0.444, 0.3333, 0.55555, 0.33333, un truc chelou de ce genre, bon alors a la rigueur on arrondi a 0.35 et pi voila, m'enfin bonjours les erreurs de calculs a l'arrive! et comme fallait deja creuse pour arriver a ca, pour retrouver les valeurs de depart ca fera un truc du genre:
x=a
a=a+b
b=b+c
c=c+d
d=d+eVAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O8/O9/96 ⑨Aa 23:36DAMDS de ⑧ODIN pour ALGORITHMESEAB`②gGenfin voila, donc 2 muls 1 div/pt, sinon j'ai entendu parle de 3 muls, ca me paraiterait etonnant m'enfin bon...
en attendant ③Hles 4 add ..VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O8/O9/96 ⑨Aa 22:58DAMDS de ⑧TIE FIGHTER pour ALGORITHMESEAB`②gGR⑨Bef:]E.T\ (8/O9 ⑨Aa 22:33)
Je suis pas trop calle sur le pentium, mais je te conseille plutot de faire
mov edx,mem
truc-pour la v-pipe..
add eax,edx ,
Pour agrandir le sujet.. parrallelisme, qq'un sait t-il comment on③H pourrait faire un compilo qui parrallelise, et ca de maniere transparente, ex: si y 4 proco, faire en sorte que ca aille plus vite ? Je sais qu'il y a les threads, mais c'est pas transparent ca ...VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O8/O9/96 ⑨Aa 22:33DAMDS de ⑧E.T pour ALGORITHMESEAB`②gGR⑨Bef:]Zappy\ (8/O9 ⑨Aa 12:46)
concernant les performance du pentium j'ai une question.
add reg,mem
prend 2 cycles mais se paralellise. mais bloque t-elle un pipe???
bref:
add eax,mem
add ebx,ecx
add edx,ecx
add esi,ecxVAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O8/O9/96 ⑨Aa 22:34DAMDS de ⑧E.T pour ALGORITHMESEAB`②gGest ce que ca prend 2 cycle ou 2,5 cycles?
bref est ce que add edx,cx passe dans lememe pipe que add eax,mem, bref.....
je crois que j'ai ete clair ce coup ci. hehe.
j'espere que qqu'un sait ca!!!VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O8/O9/96 ⑨Aa 22:24DAMDS de ⑧LEONHARD pour ALGORITHMESEAB`②gGR⑨Bef:]Zappy\ (8/O9 ⑨Aa 12:47)
hello...
je vois qu'on parle du mmx. je connais un peu j'etais a la presentation d'intel.en fait c'est tres bien pour faire du traitement du signal, c'est a dire pour des merde genre player d'avi ou autre. pour ce qui est de la 3d (affichage) c'est une GROSSE③H DAUBE... en gros tout fonctionne en entier 16 ③Hbits... alors 16 bits pour les calculs c'est chaux... par contre une instrucion PMADD fait a*b+c*d et e*f+g*h en 1 cycle, et elle est pairable, donc 0.5 cycle en se demerdant. par contre a,b,c,d etc sont des 16bits...VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O8/O9/96 ⑨Aa 21:54DAMDS de ⑧PSC pour ALGORITHMESEAB`②gGpuisje faire une rot 3D
genre terre soleil avec une seule matrice et une rotationVAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O8/O9/96 ⑨Aa 12:46DAMDS de ⑧Zappy pour ALGORITHMESEAB`②gGR⑨Bef:]E.T\ (8/O9 ⑨Aa 12:21)
Hehe, oui, le copro est rapide et peu y pensent.
Tout au copro, tant que ca marche, je pense que c'est le mieux pour l'instant.3 cycles? C'est rien du tout. Ta methodeest de loin meilleure qu'une table - je ne signalais ca qu'en passant, les tables en ce moment j'evite..
A la limite, le seul reproche qu'on peutlui faire en poussant un peu, c'est son avenir incertain quand le MM③HX sera la. J'ai pas lu quelque part que le MMXVAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O8/O9/96 ⑨Aa 12:47DAMDS de ⑧Zappy pour ALGORITHMESEAB`②gGbossait en entier ou je sais pas koi?
'fin bref, on s'en tape pour l'instant.VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O8/O9/96 ⑨Aa 12:15DAMDS de ⑧E.T pour ALGORITHMESEAB`②gGR⑨Bef:]Zappy\ (8/O9 ⑨Aa 2:15)
yo.
bon tu fut limpide et clair, ce qui n'est sans doute pas une de mes qualite, mais j'emet quelques reserve qd a ton mapping co③Hrrige.
tut le monde a l'air de dire que 2 mul et 1 div ca bouffe plein de temps, mais en ce qui me concerne, ca prend 3 cyclesen tout et pour tout, because je fais tout au copro, le 2 muls prennent 1 cycle chacune, et la division s'execute pdt que je mappe lineairement 8 ou 16 pixels, ce qui veut dire qu'elle ne prends rien du tout.VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O8/O9/96 ⑨Aa 12:19DAMDS de ⑧E.T pour ALGORITHMESEAB`②gGresultat.
c'est plus precis par ce sue c'est au copro, c'est pas plus lent parce que y a aucune risque de cache miss.
la seule difference reside dans l'interpolation qui se fait tout en flottant et pour③H toute les valeurs. le probleme est ③Hdonc le nombre de registre, m'enfin ca c'est pas nouveau, et les operations qui sont un peut plus lente car elle se traite une seule a la fois.
voila. c'est la methode que j'utilise. elle vaut ce qu'elle vaut.
elle est surment un peut plus lente qu'en accedant a une table, mais elle a VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O8/O9/96 ⑨Aa 12:21DAMDS de ⑧E.T pour ALGORITHMESEAB`②gGl'avantage d'etre beaucoup plus precise.et si dans quake vous pressez F11 vous verez ce que vous n'obtiendrez jamais avec une table.
voila je suis pas la pour vendre mes tapis, donc comme l'eu dit chevalier laspales ... c'est vous qui voyez...
a+VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O8/O9/96 ⑨Aa O2:18DAMDS de ⑧Zappy pour ALGORITHMESEAB`②gGR⑨Bef:]E.T\ (8/O9 ⑨Aa O:O9)
C'est clair, si, mais uniquement une fois qu'on a compris!
Par exemple, on peut se demander pourquoi on interpolerait 1/Z lineairement, vu que c'est tout sauf lineaire (tu l'as dit, c'est hyperbolique).
Proposons une autre approche:
En mapping lineaire, on passe de U1 a U2grace a un pas constant. Le but du jeu en mapping corrige est de realiser la meme chose suivant un increment hyperbolik.V③HAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O8/O9/96 ⑨Aa O2:23DAMDS de ⑧Zappy pour ALGORITHMESEAB`②gGUne idee serait de considerer non pas une texture 2D, mais une texture 3D, et deplaquer cette derniere sur un poly 3D, tout se ferait lineairement puisque le nombre de dimensions est le meme d'un cotecomme de l'autre.
En partant la dessus, on peut considererque U1 et U2 ne sont que les coordonneesPROJETEES de cette texture 3D. On calcule alors Z1*U1 et Z2*U2 pour obtenir U1E et U2E, coordonnees "X" dans un espace 3D puisque la formule de projection est Xproj=Xespace/Zespace. (et donc Zespace*Xproj(=Zespace*U) est bien egal a Xespace). Bien. Il est donc legitime, maintenanVAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O8/O9/96 ⑨Aa O2:27DAMDS de ⑧Zappy pour ALGORITHMESEAB`②gGd'interpoler LINEAIREMENT de Z1*U1 a Z2*U2 puisque ca represente seulement des Xdans l'espace..
Pour realiser la projection, et retomber sur des coordonnees U et V classiques (mais projetees, cette fois, donc n'etant pas espacees par un pas constant), il suffit de diviser par Z, comme d'habitude. Ce Z, on peut lui aussi l'interpoler lineairement, puisque c'est une coordonnee 3D.
Il en resulte que pour realiser du mapping corrige, il suffit donc de calculer au prealable Z1*U1 et Z2*U2, puis deVAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O8/O9/96 ⑨Aa O2:31DAMDS de ⑧Zappy pour ALGORITHMESEAB`②gGfaire 2 interpolations lineaires et une DIV par point.(pour le U!)
Pour U&V ca fait donc 2 DIV.
La methode d③He ET donne 2 mul et 1 Div au lieu③H de 2 Div. Laquelle est meilleure? La sienne! Ces 2 methodes sont les memes. Les formules sont les memes en les transformant un peu. La sienne est issue d'un petit travail visant a supprimer le DIV par Z et a le remplacer par un MUL par 1/Z, plus avantageux. Ce calcul conduit a interpoler 1/Z lineairement. C'est FAUX theoriquement, mais ca donne en pratique les memes valeurs pour U et V queVAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O8/O9/96 ⑨Aa O2:34DAMDS de ⑧Zappy pour ALGORITHMESEAB`②gGla methode proposee plus haut. Et voila.2 mul/1 div, c'est mieux que 2 div, memesi y'a une operation en plus.
Bon... allons un peu plus loin. Pour calculer 1/z a partir de z, on peut aussi utiliser une table, ce qui transforme le div en mul, ce qui donne 2 mul/pt, et donc c'est "ma" methode qui redevient avantageuse. JE SAIS! Une table, c'est un acces ram, c'est un cache-miss possible a 40 cycles, c'est pas beau! Mais il ne faut pas non plus etre aveugle et appliquer betement les formules qu'on vous donne... la correction de perspective ne sertVAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O8/O9/96 ⑨Aa O2:37DAMDS de ⑧Zappy pour ALGORITHMESEAB`②gGa RIEN dans toute la partie ou la courbe 1/Z est quasiment lineaire.. Elle se divise en gros en 3 morceaux:
. un premier plus ou moins vertical et lineaire: on s'en fout, pour nous les polys sont derriere l'observateur, rien a foutre.
.une seconde hyperbolique ou la correction est utile.
.une troisieme presque lineaire, qui correspond de surcroit aux polys eloignes, souvent petits et/ou caches par d'autres. La correction ne sert a rien pour eux.VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O8/O9/96 ⑨Aa O2:39DAMDS de ⑧Zappy pour ALGORITHMESEAB`②gGBref: la correction est utle sur un faible domaine, ce qui limite fortement la taille d'une eventuelle table.
Mieux: on vous a prouve par la pratique que la correction tous les pixels etait inutile. De meme, stocker toutes les valeurs de 1/z est inutile. On peut stocker uniquement une valeur tous les...16 Z, allez. La table obtenue n'est vraiment par bien grosse et tient constamment dans le cache vu qu'on y fait appel constamment. Et je ne vous cache pas qu'un acces ram bien pense, dans le cache, c'est 0.5 cycle. Je dis qu'on peut commencer a envisager de coder la chose....VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨B③HepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O8/O9/96 ⑨Aa O2:44DAMDS de ⑧Zappy pour ALGORITHMESEAB`②gG
Encore d'autres idees:
Au lieu de faire une interpolation lineaire de U et V on peut tout simplement essayer de faire une interpolation quadratique, voire cubique.
En clair, au lieu de:
u=u+pas
Faire:
u=u+pas
pas=pas+inc (quadra)
Ou:VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O8/O9/96 ⑨Aa O2:47DAMDS de ⑧Zappy pour ALGORITHMESEAB`②gGu=u+pas
pas=pas+inc
inc=inc+inc2 (cubique)
Ce qui ferait 1 add ou 2 en plus, et pasdes mul ou③H div. Idem, on peut les faire tous les N pixels egalement.
Tout le probleme est d'approximer 1/z grace a un poly de degre 2 (quadra) ou 3 (cubique). Bon. J'ai essaye que la quadra, et il en resort que c'est impossible d'approximer totalement la courbe avec unbete poly de degre 2. Mais, comme je l'ai dit avant, il suffit d'approximer la partie de courbe qui nous interesse! EtVAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O8/O9/96 ⑨Aa O2:5ODAMDS de ⑧Zappy pour ALGORITHMESEAB`②gGca, c'est faisable..
Pour le moment je bloque quand meme sur un point delicat: le calcul de inc2, inc et pas! C'est bien joli de savoir qu'en theorie ca marche, mais en pratique j'ai pas obtenu beaucoup de resultats (j'avoue que c③Ha me passionne pas trop le mapping corrige! Je trouve meme que ca n'a aucun interet, huhu)
Par ailleurs l'approximation ne sera..qu'une approximation justement. Avec un poly de degre 3 on obtient de meilleurs resultats, et pour un add en plus, hein, ca va. Mais le probleme est le meme, leVAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O8/O9/96 ⑨Aa O2:52DAMDS de ⑧Zappy pour ALGORITHMESEAB`②gGcalcul des increments.
Oh..c'est sans doute trouvable sans tropde difficultes, on avait meme etabli des formules avec Patapom un jour, et on les avait verifiees en C, ca avait l'air de marcher.. mais le papier est reste chez lui, huhu, demandez les lui!
Vala vala, affaire a suivre.VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O8/O9/96 ⑨Aa O2:11DAMDS de ⑧Zappy pour ALGORIT③HHMESEAB`②gGR⑨Bef:]Crac\ (7/O9 ⑨Aa 14:52)
Je trouve que vous vous compliquez t③Hout de meme beaucoup la vie.
Tracer suivant les lignes de Z constant est un sujet qui a effectivement deja
ete aborde ici meme. Je crois bien que ca a meme deja ete code dans une demo
par Rixed.
Malheureusement je suis a peu pres sur que ca pose beaucoup plus de problemes que ca n'en resoud. Ne serait-ce que pour eviter les fameux points noirs que cette methode produit. De plus, si caVAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O8/O9/96 ⑨Aa O2:15DAMDS de ⑧Zappy pour ALGORITHMESEAB`②gGpouvait avoir un interet sur des becanesmoins puissantes qu'un gros Pentium (je parle d'un interet pratique, niveau vitesse. Ca a TOUJOURS un interet theorique,meme si personne s'en sert...), il me semble que ca n'en a plus aucun aujourd'hui: d'une part parce qu'un mul, ca prend plus trop de temps et ca en prendra de moins en moins, d'autre part - et surtout- parce que tracer des polys autrement qu'horizontalement est un suicide pur et simple au niveau des cache-miss. Je vousrappelle le nombre de cycles perdus par cache-miss par rapport a un mul, ou c'est bon?VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O8/O9/96 ⑨Aa OO:O6DAMDS de ⑧E.T pour ALGORITHMESEAB`②gGR⑨Bef:]SYNTAX\ (7/O9 ⑨Aa 23:52)
bon si j'ai bien compris, j'ai ete aussiclair que le trou du cul de dark vador.
tentons une autre approche.
tu prends u1=0 z1=100
et u2=256 z2=200
soit l=256 (l est la longueur du segment)
soit pu1=(u2-u1)/l=1 ok?
soit pu2=(u2/z2-u1/z1)/l=0.005
enfin pz=(1/z2-1/z1)/l=???VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O8/O9/96 ⑨Aa OO:O9DAMDS de ⑧E.T pour ALGORITHMESEAB`②gGdonc pu1 est le pas du u calculer de facon lineaire.
pu2 et pz eux vont servir au mapping corriger
pour le lineaire t'aura
u=u1;
for(i=0;i<l;i++)
[
u+=pu1;
]
voila pour le cal③Hcul est lineaireVAB`②gT @AvancerGZ ]③H Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O8/O9/96 ⑨Aa OO:12DAMDS de ⑧E.T pour ALGORITHMESEAB`②gGpour le corrige
us=u1/z1
zs=1/z1
for(i=0;i<l;i++)
[
u=us/zs;
us+=pu2;
zs+=pz;
]
voila la meme chose en corrige. t'essaye les 2 exmples tu regarde a difference (en rajouttant un putpixel(i,u) par exemple et tu veras que dans un cas t'as une droite et dans l'autre ben t'as pas une droite. voila.VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O7/O9/96 ⑨Aa 23:52DAMDS de ⑧SYNTAX pour ALGORITHMESEAB`②gGR⑨Bef:]E.T\ (7/O9 ⑨Aa 22:4O)
Hi! ouh la...z'allez me dire ke je suis nul etc mais bon:
(u/z)/(1/z)=(u/z)*z=u donc ou est l'in- teret?
ou alors y'a z et z...le u/z,c kel z?
sinon 1/z,on interpole z lineairement?
pfou,ke de ③Hz!
a+VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O7/O9/96 ⑨Aa 22:4ODAMDS de ⑧E.T pour ALGORITHMESEAB`②gGR⑨Bef:]ODIN\ (6/O9 ⑨Aa 23:14)
en ce qui concerne le mapping corrige tu peux au moins arriver a 1 seul div et2 muls par point pour la bonne et simpleraison que tu divise tes coordonnees de mapping par la meme valeur a savoir 1/z.enfin bon passons la theorie. j'm'en vais t'expliquer comment je mappe ca ira plus vite.
passons outre les problemes mathematique, pour mapper corrige i faut interpoler de facon hyperbolique (je crois que c'est le terme.!!!) enfin suivant 1/z...VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O7/O9/96 ⑨Aa 22:43DAMDS de ⑧E.T pour ALGORITHMESEAB`②gGprenons donc le prb a l'envers a une certaine coordonnee on va vouloir u et v qui sont tes coordonnees dans ta texture. le probleme c'est qu'on veut pas interpoler u et v lineairement. on interpole donc u/z et v/z.
jusque la c'est clair??? au lieu de calculer le pas pour u et v tu le calcule pour u/z et v/z.
le bleme est donc de recuperer u et v lorsqu'on a u/z et v/z. faut bien evidement multiplier par z!!! mais quel z???VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O7/O9/96 ⑨Aa 22:47DAMDS de ⑧E.T pour ALGORITHMESEAB`②gGben un z corrige lui aussi ce qui veut dire qu'il faut egalement interpoler 1/zok?
donc a un point donne on a u/z v/z et 1/z. voila ben pour retrouver u et v on fait:
u = (u/z)/(1/z)
v - (v/z)/(1/z)
on y arrive...
soit 2 divisions. mai③Hs l'observateur agueri remarquera qu③H'on divise deux fois par la meme chose en l'occurence 1/z.
donc on calcule z'=1/z et...VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O7/O9/96 ⑨Aa 22:5ODAMDS de ⑧E.T pour ALGORITHMESEAB`②gGoh miracle
u = (u/z) * z'
v = (v/z) * z'
et voila le travail. 2 muls et 1 division pour mapper correctement 1 pixel.
heureuseument comme on est des blaireaux,on va pas corrige tous les pixels, parce que sinon demain on y est encore. on corrige donc tout les n pixels (4,8 ou 16). dans quake, c'est tout les 16 pixels. entre chaque pixel corrige, ben tu mappe lineairement.VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O7/O9/96 ⑨Aa 22:51DAMDS de ⑧E.T pour ALGORITHMESEAB`②gGvoila. je sais pas si j'ai ete bien clair, m'enfin ca t'aura peut etre eclaire.VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O7/O9/96 ⑨Aa 14:53DAMDS de ⑧Crac pour ALGORITHMESEAB`②gGR⑨Bef:]ODIN\ (6/O9 ⑨Aa 23:14)
Sinon, de totue facon, il parait qu'"E.T" a r⑨Becup⑨Ber⑨Be l'algo de Quake, et qu'il l'a impl⑨Bement⑨Be.VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O7/O9/96 ⑨Aa 14:38DAMDS de ⑧Crac pour ALGORITHMESEAB`②gGR⑨Bef:]ODIN\ (6/O9 ⑨Aa 23:14)
Pour le mapping corrig⑨Be, finalement, comme le disais quelqu'un il y a quelque temps, la solution serait de tracer suivant des lignes obliques.
On voit que si le triangle est horizontal (donc y=f(z): z constant sur une ligne de balayage) il suffit de changer le pas de l'interpolation lin⑨Beaire de la ligne de balayage. Donc, si on veut faire du 3/2, on modifie le code de trac⑨Be toutes les N lignes.
Imaginons maintenant le cas o⑨Au le triangle est vertical. (x=f(z) ou z=f^-1(x): z constant pour un x donn⑨Be) Il suffiraitVAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O7/O9/96 ⑨Aa 14:43DAMDS de ⑧Crac pour ALGORITHMESEAB`②gGde tracer verticalement au lieu de le faire horizontalement.
De ces deux cas, on en d⑨Beduit qu'il suffit de trouver la direction de la ligne de projection o⑨Au z est le plus invariant p③Hossible (je dis pas invariant, car je me demande si elle existe: si c'est vraiment une droite, et pas une courbe).
A partir de l⑨Aa, il suffira tout simplement de tracer suivant cette direction. Ca devient un peu plus compliqu⑨Be pour la recherche de la position du d⑨Bebut du trac⑨Be ⑨Aa l'⑨Becran, car on incr⑨Bemente x ET y d'une valeure diff⑨Berente de 1.
Autre probl⑨Aeme: ne pas laisser de trous. L⑨Aa, il devrait suffir de calculer VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O7/O9/96 ⑨Aa 14:49DAMDS de ⑧Crac pour ALGORITHMESEAB`②gGjudicieusement les incr⑨Bements de bords en x et y. Bien evidemment, on ne peut plus vraiment parler du 3/2, car on repasse desfois plusieurs fois au m⑨Ceme endroit. (moi, par exemple, ca me contrarie un peu pour ma routine qui le fait en transparence)
Voila, on arrive ⑨Aa la derni⑨Aere contradiction du mapping r⑨Beel.
Le fait de tracer un triangle est d⑨Bej⑨Aa ⑨Aa l'origine quelque chose de faux, donc fau③Hdra pas s'⑨Betoner si on d⑨Beborde de la texture. Solution probable: ne pas tracer un triangle, mais une approximation de la forme ⑨Aa tracer par des s⑨Beries de segments (nouveau segment toutes les N VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O7/O9/96 ⑨Aa 14:52DAMDS de ⑧Crac pour ALGORITHMESEAB`②gGlignes). Il faudrait donc recalculer la pente de bord du triangle toutes les N lignes.
Voila l'analyse que j'en fait pour l'instant dans l'absolu.
Bien evidemment, puisque c'est moi qui propose cette m⑨Bethode, ce sera ⑨Aa moi de l'impl⑨Bementer: soyez patient, si vous voulez que je vous en donne les conclusions je suis pas en trop bonne position pour me lancer la dedans avec la rentr⑨Bee et mon d⑨Bem⑨Benagement.
CracVAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O7/O9/96 ⑨Aa O2:O3DAMDS de ⑧CREATEUR pour ALGORITHMESEAB`②gGR⑨Bef:]Crac\ (6/O9 ⑨Aa 22:1O)
Bah moi vu queje suis sur PC donc j'accepte les articles theoriques(genre tri,bsp,algo de mapping et co) et les articles 100% pc....
Enfin bon,si ya que moi et toi que ca dit,on va laisser tomber....allez les gars,bougez vos fesses,on en a rien a foutre si ya des fautes d'orthographe et des conerie du genre...a la limite,si ya que les gens du club qui on le diskmag,c'est pas grave...des volontaires?VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①③H③H④B_②gT GOMessageL ⑧@du O6/O9/96 ⑨Aa 23:14DAMDS de ⑧ODIN pour ALGORITHMESEAB`②gGsalut,
quelqu'un avait parle y'a qq mois d'une methode pour faire du mapping corrige avec 2 muls/pt, c'etait pas un canular?
car, personnellement j'en suis a 2 muls et 2 divs par point et je vois vraiment pas comment faire moins...
mais je ne demande qu'a apprendre, donc si une ame charitable pouvait pour une fois nous faire un expose clair, ca serait tres cool...VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O6/O9/96 ⑨Aa 22:1ODAMDS de ⑧Crac pour ALGORITHMESEAB`②gGR⑨Bef:]CREATEUR\ (6/O9 ⑨Aa 17:33)
On limite ca au PC, au le FAlcon est autoris⑨Be ?
Car sinon, je resors mes bon vieux articles que j'avais fait pour HTC et fauCONtact.
(note pour patapom: gueule pas, ca fait au moins 1 semaine que j'ai pas allum⑨Be mon falcon)VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O6/O9/96 ⑨Aa 17:33DAMDS de ⑧CREATEUR pour ALGORITHMESEAB`②gGR⑨Bef:]E.T\ (3/O9 ⑨Aa 23:44)
Bon voila,les contrib ici etant de bon niveau,je me demande si vous pourriez pas les reunir dans un diskmag...ceci est un projet...donc que les personne interesse me mette un message en bal ou ici,avec le sujet de l'article qu'ils veulent ecrire....
Enfin voila,si ya plus de 10 articles interessant je veux bien faire une interface....
Ca vous dis?VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O3/O9/96 ⑨Aa 23:44DAMDS de ⑧E.T pour ALGORITHMESEAB`②gGR⑨Bef:]Geek\ (3/O9 ⑨Aa O:51)
quake est bien en Z buffer, sauf qu'en ce qui concerne les decors, ben y a pas de test de pixel...
c'est uniquement ensuite pour inserer les objets dans le decor fixe qu'il utilisent le Z buffer.VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪♪Ve:sHB_②gT GOMessageL ⑧@du O3/O9/96 ⑨Aa 22:58DAMDS de ⑧Crac pour ALGORITHMESEAB`②gGR⑨Bef:]E.T\ (2/O9 ⑨Aa 22:44)
Le mapping corrig⑨Be en Z, j'y ai un peu r⑨Befl⑨Bechi, dans l'optique de garder une boucle de base ⑨Aa 3/2, en recalculant 1 ligne toutes les N, mais finalement, ce que j'en pense, c'est que dans la plupart des cas, ca fait pas beau. Le cas d'un triangle vertical montre qu'on peut pas faire comme ca, puisque toutes les coordonn⑨Bes y en projection on le m⑨Ceme Z. C'est en X, que ca varie.
Ensuite, il y a des m⑨Bethodes plus lentes mais plus exactes dont certains parlent et que j'ignore.
CracVAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O3/O9/96 ⑨Aa 22:5ODAMDS de ⑧Crac pour ALGORITHMESEAB`②gGR⑨Bef:]E.T\ (2/O9 ⑨Aa 22:44)
Oui, bien evidemment, c'est exactement ce que fait mon clipping, sauf que j'utilise le cone (d③He base car⑨Bee) au mom③Hent du clipping 2D, en ayant gard⑨Be les coordonn⑨Bees 3D.
Il faut maintenant que je voie si c'est vraiment plus rentable de tester si un coin du triangle sort de l'⑨Becran ⑨Aa partir de la projection 2D, ou de sa coordonn⑨Bee 2D. Je pense que le test sur la coordonn⑨Bee 2D est bien plus rapide, une simple comparaison, et tr⑨Aes peu de triangles sont dehors, en temps normal, c'est pourquoi, jusqu'⑨Aa ce qu'on me prouve le (...)VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O3/O9/96 ⑨Aa 22:53DAMDS de ⑧Crac pour ALGORITHMESEAB`②gGcontraire, je pense qu'il est pr⑨Bef⑨Berable de faire ce genre de m⑨Belange clipping 2D/clipping 3D.
(test pour savoir si on sort de l'⑨Becr③Han ⑨Aa partir des coordonn⑨Bees 3D: 3 muls et une addition: savoir si on est du cot⑨Be positif ou n⑨Begatif du demi espace d⑨Belimit⑨Be par le plan en question du cone)
Voila ce que j'en pense.
CracVAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessag③HeL ⑧@du O3/O9/96 ⑨Aa OO:51DAMDS de ⑧Geek pour ALGORITHMESEAB`②gGR⑨Bef:]E.T\ (2/O9 ⑨Aa 22:45)
du z-buffer ds quake? OU?
a part ca zoomez sur un perso (f11)
et admirez le clipping gauche super foireux.VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O3/O9/96 ⑨Aa OO:O3DAMDS de ⑧STEF2 pour ALGORITHMESEAB`②gGR⑨Bef:]E.T\ (2/O9 ⑨Aa 22:44)
salut a tous....
S'il y avait une ame charitable qui voudrait bien me remettre en bal ou ici l'algo (pas en asm hein! juste l'algo de la boucle principale ds le la③Hnguage le plus smple possible..) du mapping avec correction ca serait cool...car la discution dessus remonte a loin...
Merci d'avance..VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O2/O9/96 ⑨Aa 22:44DAMDS de ⑧E.T pour ALGORITHMESEAB`②gGR⑨Bef:]Crac\ (3O/O8 ⑨Aa 22:24)
heu si je peux me permettre de le dire.
si tu clippe dans le cone au lieu de clipper en 2D, ben ton probleme de deformation de mapping n'existe plus!!!③H (heu le cone, c'est la pyramide pour moi...)
et si tu mappes en corigeant le Z (ce qui ne prend pas autant de temps que ce que l'on pense generalement), ben t'evite de te prendre la tete a chercher des methodes plusqu'etrange....
①④B_②gT GOMessageL ⑧@du O2/O9/96 ⑨Aa 22:45DAMDS de ⑧E.T pour ALGORITHMESEAB`②gGdans quake, pour ne citer que lui, il n'ont pas fait dans la dentelle.
mapping corrige+Z buffer en voila le travail...
c'est biensur un avis personnel...VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O1/O9/96 ⑨Aa 13:37DAMDS de ⑧DUMBO pour ALGORITHMESEAB`②gGR⑨Bef:].ribbon\ (31/O8 ⑨Aa O:O1)
Oui c'est bien ca. Le lightsource
c'est que pour les armes qui flottent
dans l'air. N'empeche que c'est tres
bien foutu quand meme.VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du O1/O9/96 ⑨Aa 11:56DAMDS de ⑧NONSENSE pour ALGORITHMESEAB`②gGR⑨Bef:]ONC\ (28/O8 ⑨Aa 23:46)
j'ai teste le phong quadratique.
(cf imphobia 10 ou 11)
je n'ai pu le faire que su③Hr un carre.caril faut 3 points pour tracer une ③Hligne horizontale.en fait,c'est pas trop precismais ca rend mieux qu'un gouraud,et puis avec seulement 2 add ,c mieux que du vrai phong.(en rapidite).
le pb,c qu'il fo calculer le 3eme point de preference au milieu de la ligne.et puis faire des precalculs avant la boucle.par rapport au phong(methode double mapping facon jmagic),j'ai pas fait encore de comparaisons encore parce que j'ai pas trop optimise mes sources.VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du 31/O8/96 ⑨Aa O7:O9DAMDS de ⑧Zappy pour ALGORITHMESEAB`②gGR⑨Bef:]Crac\ (3O/O8 ⑨Aa 22:24)
J'ai jamais essaye le Phong quadratique mais il me semble que ca existe sous le nom d'optimisation de Bishop. Je crois qu'on en avait deja parle dans ce club, mais j'ai un peu oublie...
Si quelqu'un fait des backups des msgs du club....VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du 31/O8/96 ⑨Aa OO:O1DAMDS de ⑧.ribbon pour ALGORITHMESEAB`②gGR⑨Bef:]DUMBO\ (3O/O8 ⑨Aa 19:57)
Ds AQuakeG ya pas de gestion des lightsources!! du - pour les d⑨Becors.paske les armes ke porte le joueurs (genre la HACHE,ou le fusil ⑨Aapompe) sont quant ⑨Aa eux lightsourc⑨Bes.
Pour ce ki est des d⑨Becors,ou des armes,et armures ki jonchent le sol,elles sont JUSTE MAPPEES!! C tout! ni + ni -!
Si il rame sur DX2 (mm en 320x200) C du au fait ke les scenes font 1 nombre DINGUE de faces!!
Voila!VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du 3O/O8/96 ⑨Aa 22:25DAMDS de ⑧Crac pour ALGORITHMESEAB`②gGR⑨Bef:]Crac\ (3O/O8 ⑨Aa 21:55)
Pour avoir la premi⑨Aere page de mon message qui suit, faites 9+suite.VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du 3O/O8/96 ⑨Aa 21:55DAMDS de ⑧Crac pour ALGORITHMESEAB`②gGR⑨Bef:]Phong\ (suite, grr, [supr] est ⑨Aa cot⑨Be de [home])
Donc, je disais que du coup, on ne voit que les premiers pixels de la "texture", et bien ⑨Bevidemment de taille ⑨Benorme (puisque le triangle avant d'⑨Cetre clipp⑨Be 2D est gigantesque).
1b) La solution que je propose est donc de se la jouer un peu plus fin, en faisant le clipping 2D, quand on recalcule la position dans la texture, en utilisant les coordonn⑨Bees 3D du triangle. (enfin, j'ai ⑨Becrit les formules, mais pour l'instant je me contente de ne pas modifier la position sur la texture, c'est ce quiVA③HB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du 3O/O8/96 ⑨Aa 22:OODAMDS de ⑧Crac pour ALGORITHMESEAB`②gGfait le moins moche ...)
2) Vient maintenant le probl⑨Aeme o⑨Au 2 normales d'un triangle n'ont pas le m⑨Ceme signe en Z. (ce sont des choses qui arrivent quand c'est pas l'objet qui tourne, mais l'observateur, quoique ca arrive aussi quand c'est l'objet qui tourne, mais celle qui a un Z n⑨Begatif ne l'est pas de beaucoup)
2b) La solution que je fais, c'est qu'⑨Aa l'inverse de ce que proposais patapom (dans son article), je ne change pas la r⑨Bef⑨Berence de la texture, mais je fais rotaer les normales, d'une rotation inverse de ce qui fa③Hudrait pour aller sur leVAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du 3O/O8/96 ⑨Aa 22:O5DAMDS de ⑧Crac pour ALGORITHMESEAB`②gGvecteur lumi⑨Aere. Une fois ceci fait, je regarde si la somme des Z des 3 normales est positif ou n⑨Begatif. S'il est n③H⑨Begatif, j'utilise ce que j'appelle la texture compl⑨Bementaire du phong. Le point qui est au centre est le point pour une normale (0,0,-1), celui qui est au milieu ⑨Aa gauche (1,0,0), et celui com⑨Aetement ⑨Aa droite (0,0,1) (la, j'ai pleins de candidats sur la texture qui lui correspondent, mais c'est pas grave, car la somme des Z des 3 normales est <0, donc tr⑨Aes peu probable qu'on s'en approche) Bon j'esp⑨Aere que vous avez compris ⑨Aa quoi ressemble cette texture "inverse". Ensuite, dans ce cas o⑨Au c'est <0 je fais une op⑨BerationVAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du 3O/O8/96 ⑨Aa 22:1ODAMDS de ⑧Crac pour ALGORITHMESEAB`②gGque je vous d⑨Becrirais plus tard et que j'appellerai yoplaboum.
Bon, si la somme est >0, il reste donc le pb o⑨Au certaines normales ont le z<0. Pour toutes ces normales, je recalcule l'emplacement sur la texture grace ⑨Aa une table que j'appelle table d'inversion. Si la texture fait 256*256. un point plac⑨Be en 10,0 (avec l'otigine au centre) sera plac⑨Be en 1③H18,0. C'est ⑨Aa dire, si je trac③He un cercle de rayon 64, qui correspond aux z=0, je me place donc exactement de l'autre cot⑨Be du cercle.
L'op⑨Beration yoplaboum consiste ⑨Aa faire subir l'inversion par la table de toutes les coordonn⑨Bees. Voila, cette op⑨BerationVAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du 3O/O8/96 ⑨Aa 22:13DAMDS de ⑧Crac pour ALGORITHMESEAB`②gGsemble commpliqu⑨Be, mais c'est la seule que j'ai trouv⑨Be et qui est satisfaisante, car sinon, ⑨Aa la lisi⑨Aere du z=0 pour la normale, ca fait un gros caca.
hop, fini pour le phong avec mapping.
Parlons maintenant de ce qu'appelle createur le phong quadratique. Je sais pas trop de quoi il parle, mais j'y ai r⑨Befl⑨Bechi depuis qq jours, en voyant ⑨Aa quel point ca faisait moche, le mapping par distortion quand un triangle est trs⑨Ae tr⑨Aes proche de l'observateur.
Je me suis dit, aui dit quadratique, dit 2nd degr⑨Be, donc polynom⑨Be de degr⑨Be 2. JE me suis dit, faisons un DL de d⑨Begr⑨Be 2VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du 3O/O8/96 ⑨Aa 22:17DAMDS de ⑧Crac pour ALGORITHMESEAB`②gGde la fonction f(x,y) qui renvoit l'intensit⑨Be d'un point en fonction de x et y les coordonn⑨Bees des projections. Du coup, 2 additions par point, normalement.
On aurait f0(x,y) qui approxime f(x,y)
f0(x,y)=a+bx+cy+dx^2+exy+fy^2
Et hop, je commence ⑨Aa chercher la fonction f(x,y) (la vraie). Au bout de 3 page de calculs, je l'obtiens, du moins sans d⑨Bevelopper toutes les sous fonctions.
De la, je me dit, cherchons les d⑨Beriv⑨Bees premi⑨Aeres et secondes par rapport ⑨Aa x et y. Cependant, croyez moi, j'en suis ⑨Aa 8 pages de calculs, et j'ai toujours pas de facon explicite la d⑨Beriv⑨Bee premi⑨Aere par rapport ⑨Aa x, d'o⑨Au ma fatigue. (...)VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du 3O/O8/96 ⑨Aa 22:22DAMDS de ⑧Crac pour ALGORITHMESEAB`②gGCe soir, alors que j'⑨Betais au beau milieu de la mer m⑨Bediterrann⑨Beenne ⑨Aa 200m des c⑨Cotes en petit maillot de bain, il m'est venu une id⑨Bee: et si je faisais comme pour les courbes de bezier (enfin, pas bezier, la courbe cracounet qui passe par N points): je fixe plusieurs valeurs de passage de ma fonction. 6 inconnues dans mon polyn⑨Come f0(x,y), donc 6 points de passage (par exemple les 3 coins du triangle, et les milieux des 3 cot⑨Bes). Voila, ce qui fait un syst⑨Aeme ⑨Aa 6 inconnues et 6 ⑨Bequations. Donc inverser une matrice 6*6. nb de mul et div: 36*k Surement mieu que la formule horrible obtenue apr⑨Aes avoir calculer toutes les d⑨Beriv⑨Bees deVAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du 3O/O8/96 ⑨Aa 22:24DAMDS de ⑧Crac pour ALGORITHMESEAB`②gGde la vraie fonction f(x,y).
Enfin bon, voila o⑨Au j'en suis.
Dites moi ce que vous pensez des 2 solutions que j'apporte aux 2 probl⑨Aemes du phong par mapping, et de ma solution pour le phong quadratique, de la vraie, si vous la connaissez.
Voila, c'est fini, j'attends vos r⑨Beponses.
CracVAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du 3O/O8/96 ⑨Aa 21:48DAMDS de ⑧Crac pour ALGORITHMESEAB`②gGR⑨Bef:]Phong\
Moi, j'ai envie de parler un peu de phong. Ca fait quelque mois, que je suis la dessus, et je dois avouer que la technique qui consiste ⑨Aa faire du mapping pose certains probl⑨Aemes (je ne dit aucunement que de faire du mapping, c'est pas bien, c'est toujours ce que je fais) quand on veut faire autre chose qu'une d⑨Bemo.
Voila d⑨Bej⑨Aa 2 probl⑨Aemes:
1) quand on fait le clipping 3D du z min, ca fait super moche. Car on coupe avec un z le plus petit possible, ce qui fait que la projection x et/ou y est gigantesque, et du coup on ne voit que lesVAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du 3O/O8/96 ⑨Aa 19:57DAMDS de ⑧DUMBO pour ALGORITHMESEAB`②gGR⑨Bef:]SYNTAX\ (29/O8 ⑨Aa 21:O6)
Exact Quake est en vrai 3d, et meme
en lightsource si on en croit les reflets de la lumiere sur les armes qui
tournent sur elles-meme. M'enfin c'est
vrai qu'on peut se demander si les
machines 'standard' pour utiliser quake
sont sorties... Sur un p100 c'est tout
juste jouable (l'action est tres tres
rapide, ca demande une fluidite minimum)en 320x200, alors sur un dx2, c'est plusque comique...VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du 29/O8/96 ⑨Aa 21:O6DAMDS de ⑧SYNTAX pour ALGORITHMESEAB`②gGR⑨Bef:]Zappy\ (29/O8 ⑨Aa 2:55)
Hi! zzzzavez vu QUAKE !!!????
j'me balade a la FNAC et la QUAKE tournea donf sur 1 petit ecran en 320*200
(j'me dis c pour ke ca marche sur leur
"petit" pc)
et pi je demande a un gars:sur quelle machine ca tourne,la?
enfin on peut rien leur reprocher vu comme c b⑨Co...y'a de la vrai 3d ds l'air...VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du 29/O8/96 ⑨Aa O2:55DAMDS de ⑧Zappy pour ALGORITHMESEAB`②gGR⑨Bef:]ODIN\ (27/O8 ⑨Aa 23:43)
Desole, c'etait pas tres clair. *8)VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①*④B_②gT GOMessageL ⑧@du 28/O8/96 ⑨Aa 23:46DAMDS de ⑧ONC pour ALGORITHMESEAB`②gGRef: cui ki ve
G un pb en asm PC...
au debut de mon prog, j'ajuste la memoire allou⑨Be par le programme grace a la fonction 4A de l'int 21, ceci pur pouvoir ensuite allouer de la memoire.
Le probleme c'est que sur un vieux .COM tout simple, tout baigne, mai③Hs pas sur celui-ci, le fag carry est mis, et l'interruption me renvoit 7 dans ax, j'ai regard⑨Be dans mon bouquin asm mais l'explication de cette erreur est plutot floue, et je ne sais pas ce qui la provoque. quelqu'un as une idee de la cause probable??VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④B_②gT GOMessageL ⑧@du 27/O8/96 ⑨③HAa 23:43DAMDS de ⑧ODIN pour ALGORITHMESEAB`②gGR⑨Bef:]Zappy\ (1O/O8 ⑨Aa 5:35)
Non, t'as pas compris non plus alors..
J'essaie d'expliquer une extension d'optimisation dut au triangle...
Mais ⑨Kca marche que pour des petits motifs m'enfin c'est ce que tu veux apparemment...
tu n'a③Hs plus un MOVE.B 0(An),(An)+, en motorla evidemment, et un stosb et j'sais pas trop quoi pour un point, mais juste un recopiage de sprite a l'ecran...
enfin bon, tu fais ce que tu veux...VAB`②gT @AvancerGZ ] Suite \Y @Son r⑨BepondeurGZ ] Envoi \Y T @RevenirG ] Retour \ ⑧@IntervenirG ]N#L Envoi \ ♪♪♪①④