EFFET D'EAU AVEC SCANLINE

John Dogget Messages postés 384 Date d'inscription vendredi 18 juin 2004 Statut Membre Dernière intervention 7 mai 2009 - 25 juin 2007 à 15:57
edisson81 Messages postés 5 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 22 juillet 2010 - 2 juil. 2007 à 11:28
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/43241-effet-d-eau-avec-scanline

edisson81 Messages postés 5 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 22 juillet 2010
2 juil. 2007 à 11:28
c'est mieux c'est tu ajoute DoubleBuffered := True ;-)
@+
Francky23012301 Messages postés 400 Date d'inscription samedi 6 août 2005 Statut Membre Dernière intervention 11 février 2016 1
27 juin 2007 à 15:49
aie aie aie aie : Pourquoi tu décompes Barbichette ? je blagues ^^.

Non il y a deux beugs :
1)Si tu saisit 1 (chose que l'on peut faire) dans SEforce, tu as le droit a une bonne grosse exception pointant.

2) Si tu saisit 5000 : tu as une grosse trame noire au fond qui apparait (et elle est bien visible).

Je me souviens pas de la première version mais il me semble que ca ramait moins (car là ca rame un ptit peu beaucoup quand même). Je me trompe peut etre de raison mais je trouve cette version moins bleuffante que la première. : est ce pour ca j'en sais rien.

Par contre c'est drolement instructif comme code (puis c'est bien indenté ;)).

@+
Albedo039 Messages postés 18 Date d'inscription mercredi 8 novembre 2006 Statut Membre Dernière intervention 31 janvier 2008
26 juin 2007 à 14:10
Naalsoo :)) Sieht schon viel besser aus.

Habe noch "eine" Bitte (um Zeilen 427-432):
5 Mal "rect(1,1,wi-2,he-2)"
kann man doch irgendwie aufmotzen, oder?
cs_barbichette Messages postés 220 Date d'inscription lundi 30 octobre 2000 Statut Membre Dernière intervention 15 juillet 2013
26 juin 2007 à 00:15
ben voilà, j'ai pris un peu de temps pour optimiser le tout.
Juste un truc, pour les "shr 2" à la place des "div 4", c'était pas toujours possible puisqu'on travail avec des nombres signés. En assembleur pas de souci puisqu'on peut faire des "sar 2". Mais en pascal, on n'est obligé de passer par des div.
De même pour les tableaux, j'ai rendu les calculs soit en dehors des crochets, soit en chageant le code et en faisant des additions.

Merci a tous
Albedo039 Messages postés 18 Date d'inscription mercredi 8 novembre 2006 Statut Membre Dernière intervention 31 janvier 2008
25 juin 2007 à 17:16
je n'ai pas vérifié en détail... mais il y a bcp de calculs répetitifs qui doivent pouvoir se rationaliser.

ex. 1:
# nw:=((vagues[cp+wn-wi-1]+
# vagues[cp+wn-wi ]+
# vagues[cp+wn-wi+1]+
# vagues[cp+wn -1]+
# vagues[cp+wn +1]+
# vagues[cp+wn+wi-1]+
# vagues[cp+wn+wi ]+
# vagues[cp+wn+wi+1]) div 4)-vagues[sp+wn];
=> il y a 8 fois le calcul cp+wn ou encore il y a 3 fois les calculs "cp+wn+wi" et "cp+wn-wi"
En utilisant des vars supplementaires, on devrait gagner un peu, non?

ex. 2:
les indexages à "img" sont assez fréquents.
Il est peut-être possible d'améliorer la vitesse.
Considérant "result:=im[x+(he-y)*wi];" (ligne 105):
=> créer un tableau suppl. dans lequel on a précalculé les combinaisons possibles c.a.d.
for x:=0 to wi do for y:=0 to he do TabSuppl[x,y]:=x+(he-y)*wi;
et après on obtient
result:=im[TabSuppl[x,y]];
ce qui économise 2 additions et une multipl.

et

"im[i+(2*he-j-1)*wi]:=getpix(dx,dy);"
peut être traité de la même manière :)


ex.3:
je n'ai tjs pas vérifié ;) le code assembleur produit, mais je propose que toooouuus les "*2" et les "div 4" etc... soit remplacés par
"*2" => shl 1
"div 4" => shr 2


Sinon: moi j'aime bien les vagues :))
ça rame moins en effet !
Nais pour que ça aille encore plus vite, il faudrait penser à optimiser tes tableaux [0..0] car Delphi ralentit terriblement à calculer les index.

Exemple: cette ligne "im[i+(2*he-j-1)*wi]:=getpix(dx,dy);" prend un temps fou à elle seule !!!

C'est de ce côté là que tu peux gagner un max de vitesse...
John Dogget Messages postés 384 Date d'inscription vendredi 18 juin 2004 Statut Membre Dernière intervention 7 mai 2009
25 juin 2007 à 15:57
J'ai l'impression que ça rame moins que la première version.
En tout cas, l'effet est bien reproduit, sans surcharge de codes :)

10/10
Rejoignez-nous