30

sBibi
a écrit : tu separe les cotes en deux, les cotes gauches, les cotes droits, tu te fais un tablo de deux byte (ou deux short) de la taille de la hauteur de l'ecran, et pour chaque Y, dans la premiere case tu mets la coord X du cote gauche, dans la deuxieme la coord X du cote droit, et apres, tu trace les scanlines d'un cote a l'autre.
J'avais pensé à faire ça, parce que ça me semble plus simple à coder : je remplis la liste de scanlines en même temps que je trace les lignes des extrêmités de mes polygones, puis après, je fais une seconde passe où je trace mes lignes horizontales.
Parce que de tout faire en une fois, ça me paraît compliqué...

31

32

jackiehchan: heu non tu les trace pas les cotes... tu fais juste que remplir le tableau...

neurone: ben pas forcement non...
si t'as un truc comme ca:

___________
|\-_       \
| \ "-_ 1   \
|  \   "-_   \
|   \     "-_ \
|    \       "-\
|     \  2    /
|      \     /
|   3   \   /
|        \ /
|_________V

[b][/b]





dessiner chacun des triangles separement t'oblige a calculer les pentes de chacunes des aretes internes que tu rajoute, mais aussi, tu "casse" les scanlines,
du coup tu perds l'interet de pouvoir allumer 8, 16 ou 32 pixels d'un coup, vu que le scanline est decoupe en deux ou en trois...
donc le surplus de calcul qu'implique une version generale qui utilise une liste de cotes est peut etre compense par ca smile

l'ideal a mon avis c'est d'avoir les deux. tu regarde combien de cote a le polygone que tu veux dessiner. si il en a trois, tu le remplis avec une routine rapide de remplissage de triangles, si il en a plus, tu le remplis avec la methode qui utilise la liste de cotes smile
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

33

Ah, oué, j'avais pas du tout imaginer ce cas là ...
Dans ce cas là, oué, c sur que l'on perd trop ...

34

sBibi a écrit :
tu gagne qd meme un peu smile
et t'as benche une routine qui recopie ligne par ligne a partir d'un buffer 4* plus grand dans l'ecran? trilove


Et la différence entre une routine de copie de buffer en asm et une en C ?
Aux dernières nouvelles, le moteur de Galmiza tourne à environ 20~25 fps avec 400 points à l'écran. Et il est, selon ses dires, "non optimisé".
vive les poulpes transgéniques

35

Bah en asm ça sera toujours plus rapide qu'en C grin
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

36

Ben moi je n'ai que des routines generales.

37

jahow a écrit :
Et la différence entre une routine de copie de buffer en asm et une en C ? Aux dernières nouvelles, le moteur de Galmiza tourne à environ 20~25 fps avec 400 points à l'écran. Et il est, selon ses dires, "non optimisé".


erf? seulement 25 fps pour 400 points? oue c'est pas top...
(surtout si ca fait qu'afficher des points tritop)
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

38

Ca affiche toutes les lignes aussi mais pas de face pleines.
What kind of technology is this?

39

Tu utilises quoi pour tracer tes lignes ?

40

LineLib

Mais j'en fait une autre pour apprendre et pour ensuite clipper ces lignes, et au final, je ferais une routine pour remplir des triangles.
What kind of technology is this?

41

c'est quoi, Linelib ?

42

J'utilise une routine de la librairie linelib fait par Jimmy Mardell.

edit: je l'ai bien entendu modifiée pour qu'elle soit compatible avec la largeur de mon ecran.
What kind of technology is this?

43

heu tu parles tt le temps de "la largeur de mon ecran."
il a quoi de particulier ton ecran?
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

44

Ben tu sais, dans mon moteur 3D (programmé comme un porc), pour l'instant, j'alloue 4*2000 octets pour ne pas avoir a clipper de ligne.
L'ecran virtuel etant 4 fois plus grand (en surface) que l'ecran visible de la ti89, sa largeur est de 40octets.
Linelib est programmé pour fonctionner sur des ecrans de 30octets de large (donc pret a ete utilisée en pointant LCD_MEM).


Sinon, les 25 images par secondes sont atteintes quand l'ecran affiche 400 lignes environ et la ti projete 400 points (bien sûr rotations effectuées pour chaque point).

Les rotations ne sont pas du tout optimisées, non seulement du point de vu des operations assembleur mais surtout de l'algorithme.
What kind of technology is this?

45

Moi je trouve que c'est pas mal 25 fps pour 400 points...

46

En parlant de lignes, ca-y-est, j'ai fini ma routine pour afficher des lignes (non clippées ... faut commencer facile, nan?)

Apparement, elle est plus rapide que celle de Jimmy Mardell (auteur de Linelib qui ne clippe pas les lignes non plus), pas de beaucoup (10% plus rapide d'apres mes tests), mais est plus grosse (20% plus grosse a vu d'oeil).

Merci sBibi de ne pas m'avoir aidé, ce n'est pas ironique.smile
What kind of technology is this?

47

wink
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

48

top Est-ce que tu peux me la passer stp, que je la benche ?

49

Voila, jackiechan, c'est dans ta boite.
What kind of technology is this?

50

resultats ?????
http://membres.lycos.fr/pingooz/
Un cafe et deux sucres

51

J'ai fait des tests:

Pour afficher dans une memoire un certain nombre de lignes (toutes les configurations possibles), lorsque la routine de Jimmy met 4 min 08, la mienne met 3 min 46.

Dans le test, je fais attention à ne pas executer trop d'instruction "parasites", c.a.d le nombre d'instructions qui ne font pas partie des routines de ligne est negligeable.

Donc ma routine est 8.87% plus rapide (minimum a cause des instructions parasites qui tendent a diminuer l'ecart)
What kind of technology is this?

52

Bon, Résultat du bench (sur vti, donc pas très fiable) :
La valeur indiquée, est le temps mis pour afficher des tonnes de lignes
ExtendeD : 717
Jackiechan : 760 (-6% )
Galmiza : 817 (-14% )

Ta fonction est donc 14% plus lente que celle d'ExtendeD (qui est vriament très rapide, je trouve), donc ça va, si tu fais les optimisations que je t'ai dites, tu n'auras pas trop de pb pour rattraper ExtendeD smile

53

Pour un debutant, c'est deja pas mal !
What kind of technology is this?

54

le trace de lignes ca vaut pas vraiment le coup de passer du temps a l'optimiser, a moins que tu compte laisser ton moteur en wireframe.
essaye plutot de coder et d'accelerer le remplissage de triangles. la ce que tu devra optimiser c'est surtout un traceur de lignes horizontales wink
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

55

Tiens d'ailleurs j'avais commencé à travailler sur un moteur 3d, mais j'avais laissé tombé (manque de courage...), donc si qqun veut mes réflexions sur la routine de triangle, pas de pb (pas de vrai code, mais en gros une structure qui permet un tracé extrêmement rapide). Ou bien si ça intéresse vraiment quelqu'un je peux essayer de finir ma routine de triangle.

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

56

c'etait quoi ton idee? smile
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

57

Vas-y, balance ton idée, ça pourra tjs servir smile

58

Enfin c pas juste une idée, c une vraie routine.
En gros c une routine de triangle non texturée, ultra-rapide (mais qui demande ~ 16 kb de RAM) dont le remplissage tourne à peu près à 140 cycles par ligne (attention, ce n'est qu'une estimation), et pour l'initialisation je sais pas trop, mais ça ne devrait pas être démentiel; en plus on peut théoriquement l'utiliser pour des polygones convexes quelconques (gros gros gain de temps).
Pour vous expliquer le principe, en gros elle se sert du fait qu'il n'y a pas grand chose qui change entre deux lignes d'un triangle, ce qui lui permet d'être significativement plus rapide que la routine de genlib, qui elle passe systématiquement par l'intermédiaire d'une routine de tracé de ligne horizontale.
Je peux aussi essayer de retrouver mon bench de la routine de genlib. (il me semble que ça tournait autour de 900 cycles par ligne)

Donc si ça intéresse qqun, je peux essayer de la finir smile (parce que je viens de re-regarder mes notes et ça devrait pas être très clair pour qqun d'autre que moi embarrassed)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

59

sBibi:
tu gagne qd meme un peu et t'as benche une routine qui recopie ligne par ligne a partir d'un buffer 4* plus grand dans l'ecran?


J'ai benché pour un buffer de 3000 octets, et l'économie avec les movem.l pour un effacement est de 796 cycles; 192 cycles d'économie pour une recopie. Donc ça fait ne fait vraiment rien du tout de perceptible à l'écran.

60

Pollux, ton offre est certes tentante, mais dès que j'ai reussit a creer ma propre fonction pour tracer des lignes, je me suis dis:
"Je ne suis pas qu'un bon a rien"
Je vais essayer d'en faire une moi meme.
What kind of technology is this?