Ensembles de Julia calculés en temps réel par GPU
Retrouvé par hasard un travail très intéressant de Keenan Crane (dont on a déjà parlé ici) datant de 2005 sur cette page et dans cet article. Il s’agit d’un véritable tutoriel sur le ray-tracing en temps réel d’un objet mathématique particulier, l’ensemble de Julia, le tout calculé sur un GPU. Comme le dit Keenan, il y a deux problèmes avec l’ensemble de Julia:
- il prend des siècles à calculer
- il est totalement inutile
mais il est très beau, comme on le voit sur ces captures :
En fait, l’ensemble de Julia est un objet à 4 dimensions que l’on visualise par « tranche en 3 dimensions ». En coupant une tranche en 2 dimensions dans une direction particulière, on obtient d’ailleurs l’ensemble de Mandelbrot plus connu, que Demoniak3D calcule sur GPU de façon spectaculaire.
Un exécutable avec son code source sont disponible sur la page « Ray Tracing Quaternion Julia Sets on the GPU » de Keenan Crane. Il utilise
- d’une part un petit bout de code C basé sur GLUT pour implanter la méthode décrite dans l’article « Ray Tracing Deterministic 3-D Fractals » de John Hart
- d’autre part un fragment en Cg pour les calculs de l’ensemble de Julia.
Le problème, c’est que ce dernier code n’a plus l’air de fonctionner avec le tout récent Cg 2.0… Avant que je m’attaque à porter tout ceci en GLSL + LUa sur Demoniak 3D, est-ce que quelqu’un qui connait le Cg pourrait me dire ce qui cloche, voire corriger la version actuelle ?
Concernant le code qui ne fonctionne pas, tu as essayé de faire quoi exactement ? Ouvrir le code source pour le compiler, ou bien utiliser les fichiers cg ? Avec quel logiciel ? Et quelles ont été les erreurs/problèmes ?
En tous cas ça ne met apparemment plus des siècles à calculer, je fais tourner la démo sur une 8600 GTS en 700*700 environ avec au minimum 30 fps…
en fait comme je n’avais pas Cg sur ma machine toute neuve, j’ai installé la version 2.0 toute récente. D’après le message, j’ai pensé que le compilateur Cg n’aimait plus le code du fragment QJuliaFragment.cg, et j’ai pas trop cherché plus loin. Là je viens de mettre Cg 1.5 et ça ne va pas mieux.
Ca doit donc plutôt être ma carte ATI X1950 qui ne va pas, bien que Crane dise que toutes les cartes à Shader Model 3.0 conviennent …
Vais faire une version GLSL sur Demoniak, pour voir.
Ok, j’ai hâte de voir le résultat ! 😉