Bonsoir !
J'apprend actuellement à programmer en glsl pour exploiter le gpgpu au sein d'un environnement web.
Je viens de terminer un prototype d'automate cellulaire en m'inspirant de créations tel que : http://nullprogram.com/blog/2014/06/10/.
Il s'agit du fameux jeu de la vie ! Les performances sont hallucinantes ( je programme quasi-exclusivement en javascript donc vous comprendrez mon enthousiasme).
Dans mon implémentation comme dans l’exemple ci-dessus, chaque cellule est assignée à un pixel et toute la logique est contenue dans le fragment shader. Si l'on écarte les contraintes de temps et de performances, dans le cas présent, il est possible de simuler autant de cellule que le nombre de pixel que le gpu alloue par texture.
Mais il reste encore 3 composants 8 bits inexploités ( puisque pour le jeu de la vie, il n'y a que 2 états possible ) et j'ai lu sur un blog qu'il serait donc théoriquement possible de stocker 32 cellules par pixels.
Je suis encore loin de connaitre tous les secrets de la programmation en glsl, mais si je ne me trompe pas, le fragment renvoit uniquement en sortie la propriété Frag_Color qui détermine la couleur du pixel.
Mais alors, si une seule couleur est exploitable en sortie, comment faire pour rendre la couleur à l'écran des 31 hypothétiques états restants ? L’intérêt serait t-il seulement de pouvoir simuler un plus grand nombre de cellules en arrière-plan ?
J'espère avoir été comphréhensible !
Merci !
Partager