Bonjour
e travaille actuellement sur un code de lancer de rayon, et je dois absolument optimiser une certaine partie de monde code.
Il s'agit de la fonction find_first, qui à partir de mon maillage détermine quelle est le premier tetrahèdre par lequel passe le rayon.
Je ne suis pas la pour discuter de la méthode du lancer de rayon, et si vous ne connaissez pas c'est pas grave, mais en substance mon code actuel sur cpu ne faisait que parcourir l'ensemble de tétraèdre de bordure pour chaque rayon pour tester sur le rayon passe dedans.
L'idée serait d'utiliser les spécificités des cartes graphiques en particulier l'optimisation en terme de projection qu'on les cartes graphiques.
Je sait que OpenGL me permettra de projeter très facilement mes tétraèdres de bordures.
En cherchant un peu j'ai vu qu'il existait deux choses qui me permettrait de détourner l'utilisation d'openGL.
Soit le Z_buffer qui me permettrait de connaitre la "profondeur" de la couleur à afficher sur le pixel
Soit la texture 3D....dont j'ai compris la finalité graphique mais que je ne voit pas comment exploiter, mais qui me parait plus puissant.
A la fin j'aimerais idealement récuperer un tableau a trois dimension de taille largeur pixel *longueur pixel*profondeur . Largeur pixel et longeur pixel correspondent à mon ecran et IDEALEMENT on trouverait dans profondeur l'identifiant du tetrahedre de bordure traversé ( vu que le maillage n'est pas obligatoirement convexe, on peut en avoir plusieurs ), ces identifiants etant ordonné en fonction de leur profondeur.
Pensez vous que cela soit faisable?
Que me conseillez-vous comme methode ? Z-buffer? texture3D? Autre chose?
Auriez vous un lien quelconque pouvant m'aider dans cette idée?
Merci beaucoup.
Partager