Screenshots

De Ourscraft.

 
Ligne 12 : Ligne 12 :
| [[Fichier:Rendu-1-4.png|300px|thumb]]
| [[Fichier:Rendu-1-4.png|300px|thumb]]
|}
|}
-
 
== 2 Avril : Joujou avec les chunks ==
== 2 Avril : Joujou avec les chunks ==
Ligne 41 : Ligne 40 :
| [[Fichier:Rendu-2-4.PNG|300px|thumb]]
| [[Fichier:Rendu-2-4.PNG|300px|thumb]]
| [[Fichier:Rendu-2-5.PNG|300px|thumb]]
| [[Fichier:Rendu-2-5.PNG|300px|thumb]]
 +
|}
 +
 +
Si j'ai compris, le systeme de ''chunks'' dont tu parles ne sert qu'a l'affichage (i.e. au niveau reseau on peut etre a une granularite differente). Si on integre par exemple la physique ''gravite'', il me semble que ce serait le plus logique d'avoir des chunks 1x1x128 du coup? Autre chose, as-tu regarde si ca ne serait pas plus interessant de faire notre propre SceneManager ? [[Spécial:Contributions/81.220.163.10|81.220.163.10]] 4 avril 2011 à 22:51 (CEST)
 +
 +
# Pour la physique en chute libre, les chunks ne servent à rien du tout. Tout ce qu'on veut c'est accèder au terrain sous les pieds des personnages pour savoir s'il y a quelque chose. L'intérêt des chunks au niveau graphique c'est de partitionner les choses qu'il y a à mettre à jour. Dans la physique, on ne met pas le terrain à jour, où alors on le fait sur évènement et non en continu.
 +
# La gestion des chunks n'a rien à voir avec le SceneManager, elle a à voir avec les hardware buffer. Le rôle du SceneManager sera plutôt de simplifier la géométrie, de masquer des chunks invisibles ou de savoir où pointe le curseur à l'écran. Ce sont des questions indépendantes de l'implémentation des chunks.
 +
[[Utilisateur:Valentin|Valentin]] 6 avril 2011 à 17:37 (CEST)
 +
 +
== 3 Avril, optimisations diverses ==
 +
 +
J'ai essentiellement optimisé le temps de génération de la géométrie. C'est pas très intéressant. Tout ce que je peux vous offrir c'est un lever de soleil.
 +
 +
{|
 +
| [[Fichier:Rendu-3-1.png|300px|thumb|Lever de soleil sur la montagne de vitraux Shados.]]
 +
|}
 +
 +
 +
== 10 Aout, textures, octree et scripting ==
 +
 +
J'ai fini par arrêter mes tests et merger mon code avec celui de Giovanni. Puis j'ai modifié la structure de la carte pour avoir des octree, et donc la carte est maintenant infinie dans toutes les directions, même en hauteur/profondeur. La consommation en mémoire (de la carte) a du être divisée par 20 environ. Apparemment, ça a aussi accéléré le processus de génération de la géométrie.
 +
 +
Il y a ce problème de mipmapping qui fait des lignes blanches. Ca ne se voit plus en remplissant la texture entièrement, mais c'est un problème qui va nous rependre au nez !
 +
 +
J'ai aussi intégré le scripting en Python. Non sans mal. (Environ deux semaines pour faire marcher un print) Et j'ai bindé puis scripté des choses simples. Déplacement sur le terrain avec colisions et gravité, ajout / suppression de blocs, déplacement du soleil.
 +
 +
{|
 +
| [[Fichier:Mipmaping_problem1.jpeg|300px|thumb|Problème de mipmapping]]
 +
| [[Fichier:Paradis.jpeg|300px|thumb|Et si dieu avait fait le paradis de mémoire non initialisée ?]]
 +
| [[Fichier:Maison.jpeg|300px|thumb|Dans ce jeu aussi on peut faire des maisons moches ! Comme dans Minecraft !]]
 +
|-
 +
| [[Fichier:Salle-de-test.jpeg|300px|thumb|Fallait pas l'inviter Shadosky... il fait des textures de science-fiction.]]
 +
|}
 +
 +
 +
== 19 Aout, bords de chunk, sauvegarde et type de bloc ==
 +
 +
L'utilisation des octree complique notablement un certain nombre de fonctionnalités simples. En particulier, il y a désormais plusieurs cas à gérer dans la construction de la géométrie. Mais les problèmes de polygones qui n'apparaissent pas à la frontière des chunks ont été résolus. Il n'y a plus de trous dans la carte !
 +
 +
Bien sûr, ça n'a pas été sans problèmes. (Cf. screenshot de bug) J'en ai profité pour faire du profiling et tester des optimisations. Il semblerait qu'il faille autant de temps pour lire la carte que pour générer la géométrie. Ce qui explique le gain de rapidité avec les octree : la carte beaucoup moins dense à stoker et donc est aussi plus rapide à lire.
 +
 +
Un autre truc qui a été rendu plus compliqué c'est l'enregistrement/chargement de la carte. En contrepartie, il est possible de ne stoker sur disque que les morceaux de la carte modifiés. Les morceaux non modifiés peuvent être régénéré à nouveau par le système de génération de carte, puisqu'il est tout à fait prévisible. En conséquence, la petite maison plus bas ne prend sur disque qu'une dizaine de ko, là où minecraft en sauvegardant aussi les environs aurait demandé des dizaines de mo. Il faut encore intégrer la possibilité de compresser la carte.
 +
 +
Enfin, j'ai très rapidement implémenté la possibilité d'avoir une texture différente pour les types de case différents. Ainsi, la terre est maintenant rendu différemment de l'herbe.
 +
 +
{|
 +
| [[Fichier:maison2.jpeg|300px|thumb|Maison en terre avec bug de mipmapping]]
 +
| [[Fichier:Rendu-chunk-bug.jpeg|300px|thumb|Avez vous déjà vu... un triangle au pays de Minecraft ?]]
 +
|}
 +
 +
 +
== 21 Aout, Test de textures ==
 +
 +
Shados est parti en Corse, il faut donc que je me débrouille seul pour faire des textures. C'est pas brillant, mais ça donne un style :
 +
 +
{|
 +
| [[Fichier:maison3.jpg|300px|thumb|Une autre maison, avec un toit n'en déplaise à Noreva.]]
 +
| [[Fichier:Terrain-cilya.jpg|300px|thumb|Les textures en question]]
 +
|}
 +
 +
 +
== 18 Septembre, Ambiant occlusion ==
 +
 +
Il y a encore beaucoup de boulot, mais c'est ce que ça devrait donner en fin de compte. Beaucoup de boulot parce que les cas particuliers ne sont pas gérés (bords de chunks) et parce que pour vraiment faire ça bien, il faudrait éviter d'écrire toutes les coordonnées à la main. Je l'ai fait pour deux cotés, il reste les quatre autre à faire.
 +
 +
{|
 +
| [[Fichier:Ambiant_occlusion.jpeg|300px|thumb|Occlusion ambiante pas chère à calculer. Il y a plusieurs sommets dont l'éclairage est mal calculé : sauras tu les retrouver ?]]
 +
| [[Fichier:Ambiant_occlusion_2.jpeg|300px|thumb|Ca sent un peu l'heroic fantasy.]]
 +
| [[Fichier:Ambiant_occlusion_3.jpeg|300px|thumb|La maison fait un peu moins moche avec l'occlusion ambiante.]]
 +
|}
 +
 +
 +
== 4 Décembre, Oh mon dieu, les textures saignent ==
 +
 +
J'ai voulu ajouter des textures supplémentaires, pour pouvoir afficher un peu d'eau, de sable et de neige. J'ai donc du augmenter la taille de l'atlas à 4x4 textures de 512x512 pixels. Mais du coup, l'atlas est à moitié vide et à moitié blanc. Ce qui fait d'autant plus ressortir les problème de saignement d'une texture de l'atlas sur l'autre. J'ai donc fait quelques tests.
 +
 +
{|
 +
| [[Fichier:Bleeding1.jpg|400px|thumb|Rendu normal. On voit clairement des rayures blanches toutes moches.]]
 +
| [[Fichier:Bleeding0.jpg|400px|thumb|Sans mipmapping. Ca pique les yeux, mais il n'y a pas de saignement. Pas grand chose à voir avec le mipmapping, seulement, le mipmapping aggrave les choses.]]
 +
|--
 +
| [[Fichier:Bleeding2.jpg|400px|thumb|En rajoutant des bordures sur les cotés, c'est un poil plus esthétique. Mais non seulement ça ne règle pas le problème loin, mais en plus, on voit clairement les bordures de près. Plutôt que des bordures, il faudrait dupliquer l'image.]]
 +
| [[Fichier:Bleeding4.jpg|400px|thumb|En désactivant le filtering, plus de saignement. Evidement. C'est un peu moche de près, mais à peine. Probablement une bonne solution pour les cartes qui ne supportent pas les features avancées dont on peut se servir pour les atlas. (Texture Arrays, etc.)]]
 +
|}
 +
 +
 +
== 11 Décembre, J'ai décoré mon octree de noël ==
 +
 +
Au départ c'était juste une petite lassitude. Je voulais programmer un parcours de l'octree et j'ai du relire une des fonctions déjà programmée pour me rendre compte que je n'y comprenais plus rien. Après avoir réfléchi quelques dizaines de minutes, je me suis rendu compte qu'en fait, je ne voyais pas comment faire plus simple et que cette version du code était probablement la meilleure pour cet octree. J'ai donc changé de type d'octree. Objectif : un seul système de coordonnées, suppression des calculs de position lors des parcours et factorisation du code d'insertion des noeuds. Après de longues péripéties, le parcours de l'octree fonctionne autant. C'est une étape importante pour le calcul de l'occlusion et la gestion du niveau de détail du terrain.
 +
 +
Pour débuguer le nouvel octree, je me suis contenté d'afficher un seul chunk. J'ai un peu joué avec des shaders pour cautériser la plaie des textures. Ça n'a pas marché.
 +
 +
{|
 +
| [[Fichier:Chunkbug.jpg|300px|thumb|Presque. Si on oublie les polygones suspendus et les morceaux de terres qui ne sont pas à leur place, je dirais que c'est encourageant... pour un retour six mois plus tot.]]
 +
| [[Fichier:Chunkrate1.jpg|300px|thumb|C'est bien les shaders, mais là, ça rend pas très bien. Je vous assure, c'est décevant.]]
 +
| [[Fichier:Chunkrate2.jpg|300px|thumb|Youpi ! J'ai réussi à accentuer le problème de saignement ! Mais c'est pas ce que je voulais faire.]]
 +
|--
 +
| [[Fichier:Chunmeta.jpg|300px|thumb|Les niveaux de couleurs indiquent les niveaux de mipmapping. Successivement rouge, violet, bleu, vert, rouge, violet, etc. Le dégradé vient du filtering entre les niveaux.]]
 +
| [[Fichier:Chunkcombo.jpg|300px|thumb|On multiplie les textures habituelles par le meta-mipmap. Ça ne sert à rien.]]
 +
| [[Fichier:Decembre.jpg|300px|thumb|Et pour prouver que ça marche, un petit paysage. Mipmapping limité à 7 niveaux pour la suppression du blanc mais pas de filtering.]]
 +
|}
 +
 +
 +
== 14 Février, Motifs ==
 +
 +
Voici les premiers résultats de l'utilisation des motifs dans le jeu.
 +
 +
{|
 +
| [[Fichier:Vgeometry1.jpg|400px|thumb|Je ne pensais quand même pas que ça allait marcher du premier coup.]]
 +
| [[Fichier:Vgeometry2.jpg|400px|thumb|Différentes textures sur le premier motif.]]
 +
|--
 +
| [[Fichier:Vgeometry3.jpg|400px|thumb|Ce motif a quelque chose d'étrange.]]
 +
| [[Fichier:Vgeometry4.jpg|400px|thumb|Terrain un peu lissé, les textures sont étirées.]]
 +
|}
 +
 +
 +
== 28 Février, Terrain de motif ==
 +
 +
J'ai du perdre un peu de temps pour définir à la main les 15 motifs qui composent le terrain. Et puis j'ai reprogrammé complètement la génération de la géométrie pour diverses raisons, mais ça ne se verra pas sur les screeshots. Mais je suis fier de dire que désormais, je sais manipuler les vertex et index buffer avec virtuosité. J'ai programmé vite fait la génération du terrain avec les motifs. Vite fait ça veut dire en quinze lignes de code. Il faut encore gérer tous les cas limites et ça ça prendra dix fois plus.
 +
 +
{|
 +
| [[Fichier:Terraingen1.png|400px|thumb|World of pick. Ca surprend quand on lance le jeu et qu'on tombe sur ça. C'est d'autant plus moche qu'a cause d'un bug que je n'ai pas trouvé, il n'y a pas de mipmapping.]]
 +
| [[Fichier:Terraingen2.png|400px|thumb|De près.]]
 +
|--
 +
| [[Fichier:Terraingen3.png|400px|thumb|De loin. L'uniformité de la texture et la lumière rendent difficile la perception du relief. On peut voir sur le flanc de la montagne le bord du secteur avec de la terre.]]
 +
| [[Fichier:Terraingen4.png|400px|thumb|Retirer les textures nous permettra certainement de nous éviter les remarques mal biaisées.]]
 +
|}
 +
 +
 +
== 22 Mars ==
 +
 +
Deux séries de screenshots. La première relate les essais ratés pour effacer les bords des secteurs. La seconde dépeint l'épopée de Shados et du Shader d'Or.
 +
 +
{|
 +
| [[Fichier:Lovely_isles.jpg|300px|thumb|De jolies iles, charmantes et... plates et... bordée de ravins mortels.]]
 +
| [[Fichier:Memory-like.png|300px|thumb|Fans de TRON, voici à quoi ressemble vraiment la mémoire non-initialisée.]]
 +
| [[Fichier:Sector-wall.jpg|300px|thumb|Pourquoi quand j'essaie de faire quelque chose, c'est l'inverse qui se produit ? J'essayais de gommer les frontières des secteurs, pas de les rendre encore plus visibles !]]
 +
|----
 +
| [[Fichier:Worldofwhite.jpg|300px|thumb|Règle numéro 1 : quand on écrit un shader, il ne marche pas. Règle numéro 2 : quand on écrit un shader, il ne marche pas.]]
 +
| [[Fichier:Worldofwhat.jpg|300px|thumb|Résultat surprenant mais pas inattendu. Au fait... c'est quoi?]]
 +
| [[Fichier:Superposition-textures.jpg|300px|thumb|La texture d'herbe a été superposée à une texture s'étendant sur plusieurs blocs afin de donner une variation du rendu et réduire l'effet de répétition. Ça se traduit par la présence de tâches d'ombres, ou d'autre chose.]]
 +
|----
 +
| [[Fichier:Lovely-place.jpg|300px|thumb|On plante la tente ? Je vais chercher du bois pour faire du feu, on s'installera ici, on construira une maison, on fera des enfants, et on dira au MJ d'aller se faire foutre avec ses quêtes pourries.]]
 +
| [[Fichier:Worldofmetal.jpg|300px|thumb|La magnifique texture d'herbe a été remplacée par une sinistre texture de métal.]]
 +
| [[Fichier:Worldofmetal-normalmap.jpg|300px|thumb|L'ajout d'une normal map égaiera vos mornes textures de métal.]]
 +
|----
 +
| [[Fichier:Worldofmetal-normalmap-aa.jpg|300px|thumb|La même mais avec de l'anti-aliasing.]]
 +
| [[Fichier:Deformation-vshader.jpg|300px|thumb|Un vertex shader c'est toujours très utile pour... euh... déformer le terrain par exemple !]]
 +
| [[Fichier:Multipass-fail.jpg|300px|thumb|Plusieurs passes n'utilisant pas les mêmes coordonnés de vertex... eh ben ça donne ça.]]
 +
|}
 +
 +
 +
== 30 Mars ==
 +
 +
Pas mal de petites choses à présenter.
 +
 +
{|
 +
| [[Fichier:Herbes_hautes.jpg|300px|thumb|World of marécage !]]
 +
| [[Fichier:Console-et-moniteur.jpg|300px|thumb|Je ne vous dit pas à quel point l'intégration de CEGUI a été difficile. Mais on a désormais une très jolie console avec auto-complétion, et un moniteur qui affiche plein de stats..]]
 +
| [[Fichier:Splashscreen.jpg|300px|thumb|J'ai fait un joli splashscreen à la pelle et au seau. J'me suis servi de ce screenshot pour ça.]]
 +
|----
 +
| [[Fichier:Terrain-manager.jpg|300px|thumb|L'affichage est désormais infini aussi sur l'axe z. On peut construire aussi haut qu'on veut, ou creuser aussi bas qu'on veut.]]
 +
| [[Fichier:Artefacts-noeuds-uniformes.jpg|300px|thumb|Malheureusement, certains triangles sont rendus plusieurs fois. Ceci causant quelques artefacts...]]
 +
| [[Fichier:Artefacts-noeuds-uniformes2.jpg|300px|thumb|...qu'on aperçoit ici aussi.]]
 +
|----
 +
| [[Fichier:Texture-variation-terrain.jpg|300px|thumb|De loin, la répétition de la texture se voit plutôt pas mal.]]
 +
| [[Fichier:Attachlight.jpg|300px|thumb|On peut utiliser la console pour s'ajouter une lumière sur la gueule et débuger les normales.]]
 +
| [[Fichier:Eau1.jpg|300px|thumb|Quelques essais pour faire de l'eau. C'est pas gagné.]]
 +
|----
 +
|}
 +
 +
 +
== 19 Mai, de l'eau ==
 +
 +
Quelques tests avec de l'eau. Les paramètres sont à ajuster, bien évidemment.
 +
 +
{|
 +
| [[Fichier:water1.jpg|400px|thumb]]
 +
| [[Fichier:water2.jpg|400px|thumb]]
 +
|----
 +
| [[Fichier:water3.jpg|400px|thumb]]
 +
| [[Fichier:water4.jpg|400px|thumb]]
 +
|}
 +
 +
 +
== 2 Aout, des motifs à poser  ==
 +
 +
Ca a été très difficile. Finalement, les motifs personnalisés sont implémentés et décrits à l'aide de motifs de base transformés par des rotations. 41 motifs au total, 29 disponibles à l'édition. Le système devrait être compatible avec le modèle de lumière à venir. Il n'est pas compatible en revanche avec les motifs escaliers, plaque ou cylindre, et il y a encore du boulot pour pouvoir les ajouter.
 +
 +
On sélectionne le matériau avec les touches 0 à 9 à gauche du clavier, le type de motif avec les touches 0 à 4 du pavé numérique. Le motif est plaqué dans la direction de la caméra avant qu'on puisse en faire une rotation grâce à la molette de la souris. (4 rotation pour une orientation) Le motif en cours de sélection est montré en transparence et il faut cliquer avec le bouton gauche de la souris pour le poser.
 +
 +
{|
 +
| [[Fichier:Totem.jpg|400px|thumb|Une très jolie sculpture en bois utilisant onze motifs différents]]
 +
| [[Fichier:Selection.jpg|400px|thumb|En transparence le motif qui va être posé si on clique.]]
 +
|}
 +
 +
Plan pour l'implémentation du réseau :
 +
 +
# Détection automatique des transactions en interceptant les appels python et les modifications de propriétés sur les replicables
 +
# Construction automatique du protocole synchrone par inspection des classes python
 +
# Envoi/réception des messages et développement d'un tout petit serveur qui se contente d'afficher les messages reçus
 +
# Implémentation d'un protocole de connexion
 +
# Implémentation du coté "sortant" du protocole asynchrone pour les position/orientation des entités
 +
# Implémentation du protocole de gestion du temps
 +
# Reproduction de l'éxécution du script coté serveur
 +
# Implémentation du coté "entrant" du protocole pour le client et test avec plusieurs clients
 +
# Connexion réseau sans serveur dédié
 +
# Système permettant d'introduire des désynchronisation & gestion des désynchronisations
 +
 +
 +
== 5 Aout, des falaises  ==
 +
 +
La programmation du réseau avance. Mais comme ça ne produit pas de screenshots, j'ai du m'amuser un peu avec le générateur de carte. Impossible pour le moment de faire des falaises avec les motifs, on a donc des falaises très carrées. (Il manque certains motifs particuliers, et les rotations des textures rendent en général pas bien) Voici une série de screenshots. Les falaises sont données par ordre chronologique à mesure que les paramètres s'affinent.
 +
 +
{|
 +
| [[Fichier:Frontiere-sharpness.jpg|300px|thumb|Un test pour ajouter des zones où le relief est aïgu. Ici, on voit la frontière entre une zone douce et une zone hachée. Je ne suis pas convaincu.]]
 +
| [[Fichier:Falaises1.jpg|300px|thumb|Des falaises un peu trop fortes de sorte qu'on voit la hauteur maximum de génération de carte. Ce n'est pas la hauteur limite de construction, qui elle n'existe pas, notez bien !]]
 +
| [[Fichier:Falaises2.jpg|300px|thumb|Trois niveaux de falaises. Ici, on peut voir les trois. Quand les différents niveaux se rencontrent, c'est assez étrange.]]
 +
|----
 +
| [[Fichier:Falaises3.jpg|300px|thumb|La techtonique des plaques a fait des ravages. On a l'impression que quelqu'un est venu couper le haut avec un grand couteau bien aiguisé.]]
 +
| [[Fichier:Falaises4.jpg|300px|thumb|Les grandes falaises décrivent des grandes courbes.]]
 +
| [[Fichier:Falaises5.jpg|300px|thumb|Une falaise s'enfonce dans l'eau.]]
 +
|----
 +
| [[Fichier:Falaises6.jpg|300px|thumb|La hauteur des falaises varie sur la longueur jusqu'à s'éteindre par endroits..]]
 +
| [[Fichier:Falaises7.jpg|300px|thumb|J'ai plus d'inspiration.]]
 +
|}
 +
 +
 +
== 25 Octobre, quelques petits ajouts ==
 +
 +
Tandis que le réseau continue d'être implanté, quelques petits ajouts pour s'occuper en attendant. ALT+F2 permettra de changer le mode de rendu pour faciliter le débuguage :
 +
 +
{|
 +
| [[Fichier:Polygonmode1.jpg|300px|thumb|Polygonal.]]
 +
| [[Fichier:Polygonmode2.jpg|300px|thumb|Filaire.]]
 +
| [[Fichier:Polygonmode3.jpg|300px|thumb|Ponctuel.]]
 +
|}
 +
 +
Je réfléchis à comment envisager le test pour la génération de différents niveaux de détails. J'aurais besoin de voir la taille des chunks lointains. J'ai tenté d'afficher les bords des chunks, mais c'est globalement incompréhensible. J'ai réimplémenté une version du smooth lighting/ambiant occlusion compatible avec les motifs.
 +
 +
{|
 +
| [[Fichier:Chunklimit.jpg|300px|thumb|Affichage de la limite des chunks en transparence. Comme je le disais, on ne comprends rien.]]
 +
| [[Fichier:Ambiant-occlusion-bug.jpg|300px|thumb|Comme d'habitude, ça ne peut pas marcher du premier coup.]]
 +
|----
 +
| [[Fichier:Ambiant-occlusion1.jpg|300px|thumb|L'occlusion ambiante accentue bien les reliefs des falaises.]]
 +
| [[Fichier:Ambiant-occlusion2.jpg|300px|thumb|Mais aussi les reliefs tout court. Notez que si les angles saillants sont plus fonçés, les angles rentrants sont aussi plus clairs. C'était pas obligé, c'est un choix. Ca fait un peu comme un brossage à sec. J'adore parce que ça accentue le relief au lieu de l'atténuer, exactement le contraire de ce que Romain veut.]]
 +
| [[Fichier:Ambiant-occlusion3.jpg|300px|thumb|Et un autre paysage pour la route.]]
 +
|----
 +
|}
 +
 +
 +
== 03 Mars 2013 ==
 +
 +
Quelques tests divers.
 +
 +
{|
 +
| [[Fichier:Random totem.jpg|300px|thumb|Des terrifiants totems surgissent de l'eau. (Bug lié à de l'arithmétique flottante. ha ha !)]]
 +
| [[Fichier:Square_holes.jpg|300px|thumb|Bug de transformation de la heightmap.]]
 +
|----
 +
| [[Fichier:Blur1.jpg|300px|thumb|Myope simulation is coming soon !]]
 +
| [[Fichier:Blur2.jpg|300px|thumb|Pas la peine de faire la mise au point.]]
 +
|}
 +
 +
Et plein d'essais (ratés) sur les falaises.
 +
 +
{|
 +
| [[Fichier:Falaises 1.jpg|300px|thumb]]
 +
| [[Fichier:Falaises 2.jpg|300px|thumb]]
 +
| [[Fichier:Falaises 3.jpg|300px|thumb]]
 +
|----
 +
| [[Fichier:Falaises 4.jpg|300px|thumb]]
 +
| [[Fichier:Falaises 5.jpg|300px|thumb]]
|}
|}

Version actuelle en date du 5 mars 2013 à 14:21