salut,
je cherche un exemple qui permettrait de tester la collision entre une liste de triangles et un rayon mais par le gpu (sans passer par CUDA, car je bosse sur webgl) et non par cpu... je n'ai pas trouvé de quoi sur google... peut être mes mots clés...
si vous n'en connaissez pas, j'ai quelques idées à soumettre, et je ne suis pas contre le fait de monter cette idée à plusieurs... car surement utile à beaucoup de monde...
idées :
on sait que le vertex shader prend point par point, donc difficile de tester un triangle... par contre si à la place de stocker un point on en stocke 3 (le triangle), ça résoudrait une partie du test...
je m'explique, actuellement on empile dans le vbo,
point 1, point 2, point 3 (ça fait un triangle),
point 4, point 5, point 6 (ça fait un triangle),
...
la si on fait :
point 1, point 4, point 7 (vbo 1)
point 2, point 5, point 8 (vbo 2)
point 3, point 6, point 9 (vbo 3)
on envoi ensuite les 3 vbo au shader
ça permettrait d'avoir les 3 points du triangle en une fois...
le tout est de savoir comment indiquer quel triangles sont touchés... la seule réponse est décrire le résultat dans une texture...
- on peut imaginer plusieurs façon, appliquer une couleur à chaque triangle (dans un vbo) et écrire ensuite la liste 1 triangle par pixel
- mettre dans un vbo une sorte d'indice de tableau , ca ressemblerait donc à
0,1,2 ( 0 = triangle 1 p1 p2 p3, 1 = triangle 2 p4 p5 p6, ...) et renvoyer cette indice sous forme de couleur (implique un codage d'entier en couleur)
- renvoyer directement les coordonées des 3 points mais ça me semble le plus contraignant en terme de stockage dans la texture.
le tout est de savoir quoi mettre dans le fragment shader...
si vous avez des idées ?
on peut imaginer la même chose pour des tests entre rayon et obb, ....
plus compliquer je pense entre triangles et triangles, ou obb et obb ...
Partager