Demoscene.fr BBS

Communauté => Productions => Topic started by: ponce on 03 July 2011 à 21:09:15

Title: GFM - Irrelevant
Post by: ponce on 03 July 2011 à 21:09:15
http://www.gamesfrommars.fr/demojs/ (http://www.gamesfrommars.fr/demojs/) (c'est mieux sous Chrome  ;D)

C'est tout simple, les entités 3D sont mappés vers des sphères 2D avec une projection, on les trie par Z puis (sans occlusion :| ) dessin de cercles dans le bon ordre avec un gradient radial qui fout une ombre avec ses gros sabots. Bref c'est un peu http://js1k.com/2011-dysentery/demo/928 (http://js1k.com/2011-dysentery/demo/928) mais temps réel et avec uniquement des ronds. Le gradient c'est bien plus rapide que shadowBlur.

La mauvaise surprise c'est qu'a priori je dois créer le gradient radial poucharque cercle à dessiner à cause du centre du gradient qui est donné en... pixels, ça limite beaucoup le nombre de primitive possible. Evidemment ça fait des pauses GC à base de 100+ms dans ta face...
Après bon, créer ce gradient radial à chaque fois permet de simuler un DOF.
Si j'arrive à utiliser context.translate et si le gradient réagit bien, alors on pourrait precalc les gradients en laissant tomber le DOF et ça devrait turbiner un peu plus.

La mauvaise surprise numéro deux c'est qu'un gradient radial avec deux cercles qui ont un centre différent est beaucoup moins rapide qu'avec un unique centre. Du coup je n'ai pas pu faire en sorte que les boules soit éclairées "par le haut" ce qui était 34% plus joli.

J'ai aussi tenté la technique avec un canvas offscreen puis drawRect mais a priori c'est pire, à mon avis c'est déjà offscreen.

(J'ai vu que certains d'entre vous utilisent la balise <audio>, si jamais ça ne marche pas autant que prévu pourquoi ne pas faire comme mon soundmanager, il crée des objets Audio à la place + les callbacks sans closures qui vont bien, ça me semble un peu plus propre.)

Title: Re : GFM - Irrelevant
Post by: wullon on 04 July 2011 à 13:36:56
J'ai pas tout capté à ce que t'as écrit mais j'aime beaucoup le résultat visuellement, et j'aime bien la progression du mouvement.

Pour la balise audio on en a discuté avec cb il voit pas le problème :p.
Title: Re : GFM - Irrelevant
Post by: romain on 04 July 2011 à 14:37:15
Perso j'ai utiliser une balise audio pour pas me casser la tête :)
Title: Re : GFM - Irrelevant
Post by: ponce on 04 July 2011 à 16:16:12
Non mais si vous avez pas de problème avec <audio> ok, au début de l'année ça m'en faisait plein mais ça a du changer.
Title: Re : GFM - Irrelevant
Post by: romain on 04 July 2011 à 16:55:57
Pour ma part pas de problèmes, sauf que j'ai trouvé plusieurs manières de la déclarer dans la source (qui ne fonctionnent pas toutes). Par contre, ça ne voulais pas jouer de .wav ou de .mp3. Seul le format OGG passe chez moi, mais j'ai pas tester avec plein de navigateur (seulement les dernières version de chrome et ff). J'avoue que j'en avais un peu marre de coder, j'ai pas chercher midi a quatorze heure ;) Sinon pas mal ta prod! J'aime bien le concept!
Title: Re : GFM - Irrelevant
Post by: RaHoW on 04 July 2011 à 22:19:07
Je pensais pas que ct aussi compliqué... c'est du pure canvas alors ??
Title: Re : GFM - Irrelevant
Post by: ponce on 18 July 2011 à 22:43:50
Rahow: oui.

En y réfléchissant un peu je me dis qu'on pourrait partitionner le rendu avec une grille et réunir les primitives projetées dedans. Ca devrait complètement turbiner en optimisant le Z sort, le dessin du background et en gérant les occlusions entre primitives (bon ok, entre les ronds).
Title: Re : GFM - Irrelevant
Post by: ponce on 08 August 2011 à 00:14:35
Du coup je l'ai fait pour le concours de Mozilla http://www.gamesfrommars.fr/demojsv2/ (http://www.gamesfrommars.fr/demojsv2/)

En gros le rendu est partitionné dans une grille, ça permet de calculer les occlusions et le zsort plus rapidement, et aussi d'éviter de  redessiner le fond si ça sert à rien. Cacher les gradients ça marche pas mal sous Chrome.

Par contre Firefox est vraiment trop lent avec le vectoriel par rapport à Chrome, j'ai du y rajouter des sprites et c'est encore mou.
Title: Re : GFM - Irrelevant
Post by: latortue on 08 August 2011 à 01:54:50
C'est super beau!
Title: Re : GFM - Irrelevant
Post by: xoofx on 08 August 2011 à 04:06:07
Du coup je l'ai fait pour le concours de Mozilla http://www.gamesfrommars.fr/demojsv2/ (http://www.gamesfrommars.fr/demojsv2/)
Ouaip, c'est sympa! ;)
Title: Re : GFM - Irrelevant
Post by: wullon on 08 August 2011 à 09:43:35
Je préférais la v1 des visuels par contre t'as changé un peu la musique non ? c'est cool !
Title: Re : GFM - Irrelevant
Post by: ponce on 08 August 2011 à 10:19:22
Je préférais la v1 des visuels par contre t'as changé un peu la musique non ? c'est cool !
J'ai pas changé la musique oO
Je vois ce que tu veux dire sinon. J'ai fini genre 20 sec après la deadline...
Title: Re : GFM - Irrelevant
Post by: wullon on 08 August 2011 à 11:26:39
Ca doit être parce que j'écoute pas avec le même matos alors (elle est bien en tout cas).
Title: Re : GFM - Irrelevant
Post by: jeffrey on 08 August 2011 à 15:09:09
J'adoooooooore Irrelevant, ponce U rulez et les nouveaux effets sur les têtes, qui en sont parfois sont géniaux,

Irrelevant v2  ::)
Title: Re : GFM - Irrelevant
Post by: ponce on 08 August 2011 à 18:43:30
Bah, enfin bon Assembly toussa :s
Title: Re : GFM - Irrelevant
Post by: Jegougou on 09 August 2011 à 13:11:51
super résultat bravo ;)
Title: Re : GFM - Irrelevant
Post by: yogi beer on 18 August 2011 à 21:58:28
excellent !

bravo bravo ^^
Title: Re : GFM - Irrelevant
Post by: ponce on 11 November 2011 à 17:09:54
Depuis août c'est devenu plus lent dans Chrome que dans Firefox, avec la majorité du temps passé dans le driver graphique. Pourquoi ?

J'ai compilé ANGLE avec la debug info (http://code.google.com/p/angleproject/ (http://code.google.com/p/angleproject/)) pour voir où ça coince.

Chrome utilise apparemment son backend WebGL pour le canvas, du coup chaque rectangle / image que l'on dessine avec le canvas devient un draw-call de deux triangles. Le caching de l'état DirectX est pas super fin dans ANGLE + le nombre de draw-call font vite haleter la carte graphique, enfin à mon humble avis.