[C] effet plasma C/SDL
|
07-09-2013, 17h12
Message : #1
|
|
gruik
gouteur de savon Messages : 757 Sujets : 44 Points: 482 Inscription : Oct 2012 |
[C] effet plasma C/SDL
|
|
07-09-2013, 17h35
Message : #2
|
|
Atlas
Membre actif Messages : 69 Sujets : 7 Points: 3 Inscription : Aug 2012 |
RE: [C] effet plasma C/SDL
Vraiment sympa l'effet , je vais essayer de comprendre le code , merci du partage !
|
|
07-09-2013, 19h46
Message : #3
|
|
-Mat- Non-enregistré |
RE: [C] effet plasma C/SDL
C'est cool en effet, pour l'instant j'ai pas regardé le cœur du code et je pense que j'aurais beaucoup de mal à l'assimiler.
Au début, j'ai juste voulu voir le SDL_Delay() ou autre qui faisait ralentir tout jusqu'à ce que je me rende compte qu'il n'y en avait pas ! Chez moi ça monte pas plus haut que 3/4 FPS. C'est vrai que j'ai pas une super config' (Pentium 4) mais je m'attendais pas à ce que ça bouffe autant de CPU. Il faut que la fenêtre soit en 200 x 200 pour que ça soit bien fluide. Bref super principe. Bien optimisé, ça doit rendre vraiment classe. |
|
07-09-2013, 20h28
Message : #4
|
|
gruik
gouteur de savon Messages : 757 Sujets : 44 Points: 482 Inscription : Oct 2012 |
RE: [C] effet plasma C/SDL
(07-09-2013, 19h46)-Mat- a écrit : Chez moi ça monte pas plus haut que 3/4 FPS. (...) je m'attendais pas à ce que ça bouffe autant de CPU. héhé oui, j'ai hésité à l'optimiser et j'ai flemme j'avoue :p ce qui fait que ca bouffe c'est que pour chaque pixel on a plusieurs sin/cos et que des calculs sur des double, j'ai sorti deux tables pré-calculées et sur mon proc ça a suffit à fluidifier le bouzin mais c'est de l'optimisation très laxiste également - et c'est une des optimisations les plus importantes - le principe est souvent de créer 2/3 grands tableaux mappés avec les fonctions et ensuite se contenter de prendre une portion dedans correspondant aux dimensions de ce qu'on veut afficher pour ce qui est du fonctionnement général je pense que les commentaires dans le code sont pas trop mal sentis et résument bien le truc, le reste c'est de reload le module "trigonométrie de 3e" en mémoire et essayer de se représenter les différentes étapes mais c'est assez simple... |
|
08-09-2013, 16h08
Message : #5
|
|
Kiwazaru
Padawan d'un super escargot Messages : 284 Sujets : 26 Points: 139 Inscription : Mar 2012 |
RE: [C] effet plasma C/SDL
Si ça prend tant que ça des capacités du CPU on pourrait pas se servir de cet exemple pour faire un benchmark ?
Toucher au Kernel, c'est un peut comme se shooter au LSD, on pense pouvoir tout faire mais ça finit souvent mal.
|
|
09-09-2013, 22h11
Message : #6
|
|
sakiir
[sakiir@Ubuntu]:~$ ./ExploitMe ShellC0de Messages : 411 Sujets : 51 Points: 34 Inscription : Sep 2012 |
RE: [C] effet plasma C/SDL
C'est vraiment fort ! bravo
|
|
10-09-2013, 09h08
(Modification du message : 10-09-2013, 11h19 par Jek0.)
Message : #7
|
|
Jek0
Regular Everyday Normal Mazafaka Messages : 113 Sujets : 5 Points: 40 Inscription : Jul 2013 |
RE: [C] effet plasma C/SDL
Ah le raytracing, le jour ou il font un jeu avec cette techno faudra une salle serveur pour le faire tourner
Edit : Effectivement, j'avais fait un projet de raytracing y'a quelques années, à vu d’œil (myope et astigmate) ça m'a rappelé ça, my bad.
Pour finir un mail avec panache :
Cordialement, Va donc te reproduire avec ta propre ethnie, enfant malpropre de fille de joie, [Insert-Your-Name-Here] Si vous ne comprenez pas, traduisez dans le langage "2 la téci tavu". |
|
10-09-2013, 11h01
Message : #8
|
|
gruik
gouteur de savon Messages : 757 Sujets : 44 Points: 482 Inscription : Oct 2012 |
RE: [C] effet plasma C/SDL
(08-09-2013, 16h08)ReVeRse a écrit : Si ça prend tant que ça des capacités du CPU on pourrait pas se servir de cet exemple pour faire un benchmark ? (vu en pv) le propos d'un benchmark comme 3DMark par exemple c'est pas uniquement de bencher le CPU, bref non ça en fait pas forcément un bon candidat (09-09-2013, 22h11)sakiir a écrit : C'est vraiment fort ! bravo merki ! (10-09-2013, 09h08)Jek0 a écrit : Ah le raytracing, le jour ou il font un jeu avec cette techno faudra une salle serveur pour le faire tourner humm... oui enfin, le raytracing c'est un rendu 3D "à la main" (comme ici), là il s'agit d'un plasma (même démo, ici), y'a pas trop de rapport ^^
Avant donc que d'écrire, apprenez à penser.
Selon que notre idée est plus ou moins obscure, l'expression la suit, ou moins nette, ou plus pure. Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau, L'Art poétique) |
|
13-09-2013, 20h34
Message : #9
|
|
gruik
gouteur de savon Messages : 757 Sujets : 44 Points: 482 Inscription : Oct 2012 |
RE: [C] effet plasma C/SDL
l'optimisation spéciale -Mat-, tardive mais y'a un SDL_Delay() maintenant
Code DIFF :
--- a/plasma.c 2013-09-13 20:23:06.017363199 +0200 le pastebin du nouveau code finalement ça m'aura également permis de me rendre compte, c'était mon premier plasma, et les formules que j'ai choisi si elles donnent un résultat qu'est joli à regarder sont pour autant pas forcément très heureuses, ce serait à refaire il y aurait moyen de choisir plus habilement tous les paramètres pour un résultat tout aussi eye-candy
Avant donc que d'écrire, apprenez à penser.
Selon que notre idée est plus ou moins obscure, l'expression la suit, ou moins nette, ou plus pure. Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau, L'Art poétique) |
|
14-09-2013, 13h50
Message : #10
|
|
-Mat- Non-enregistré |
RE: [C] effet plasma C/SDL
En effet c'est beaucoup plus drôle comme ça, c'est vraiment cool !
Comment t'as fait pour trouver tes formules ? En tâtonnant ? |
|
14-09-2013, 14h07
Message : #11
|
|
gruik
gouteur de savon Messages : 757 Sujets : 44 Points: 482 Inscription : Oct 2012 |
RE: [C] effet plasma C/SDL
ok tu me confirme que ça passe et que c'est fluide sur ta békane, c'est ce que je voulais savoir surtout
(14-09-2013, 13h50)-Mat- a écrit : Comment t'as fait pour trouver tes formules ? En tâtonnant ? plus ou moins oui, disons que je suis parti du principe global d'un plasma (le propos étant de le faire entièrement sans repomper un code existant évidement) et ensuite j'ai effectivement tâtonné jusqu'à avoir un résultat pas trop dégueu du coup pour l'optimisation je tenais malgré tout à conserver les mêmes formules plutôt que de glisser vers des formules plus pratiques en terme de cout mémoire et cpu il y a moyen de l'accelerer encore énormément, en choisissant des formules qui permettent de ne précalculer qu'une seule image au lieu de trois, 4x plus petites en mémoire, des "mouvements" sinusoïdaux plus simples en termes de calculs, à ça on peut envisager de threader le calcul de chacune des trois fonctions f1,f2,f3 (voire même d'en faire sauter une carrément), d'utiliser un algo type CORDIC pour le calcul des sin/cos... pour les grandes lignes :p
Avant donc que d'écrire, apprenez à penser.
Selon que notre idée est plus ou moins obscure, l'expression la suit, ou moins nette, ou plus pure. Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau, L'Art poétique) |
|
Utilisateur(s) parcourant ce sujet : 9 visiteur(s)