2009-01-18 2 views
2

Il y a beaucoup de littérature sur la détection de collision, et j'en ai lu au moins une partie assez importante pour être assez familier avec la plupart des techniques. Cependant, il y a quelque chose qui m'a échappé pendant un moment, et je me suis dit, puisque StackOverflow donne accès à un grand groupe d'esprits brillants à la fois, je demanderais ici d'abord avant de fouiller dans la bibliothèque.Détection de collision avec des primitives générées matériellement

De nos jours, de plus en plus de travail est délégué au GPU plutôt qu'au CPU, et dans de nombreux cas c'est une bonne chose. Par exemple, il y a des shaders de géométrie pour créer une nouvelle géométrie, ou des vertex shaders (un peu moins nouveaux, mais quand même assez fascinants) auxquels vous pouvez accéder à travers un tas de vertex, et quelque chose d'élégant en sortira. Ce que je considérais cependant, comme ces primitives n'existent que sur le matériel graphique, comment feriez-vous une détection de collision fiable avec ces primitives? Supposons que j'ai une sorte de maillage extrêmement simplifié qui est déplacé dans un vertex shader (je n'ai pas de problème concret, je joue plus avec l'idée, et je ne suis pas encore allé très loin dans les shaders de géométrie). Ce que j'ai considéré jusqu'ici, c'est des passes de rendu séparées d'angles appropriés avec un ombrage plus ou moins éteint, et peut-être un maillage de plus basse résolution, rendant l'intérieur (avec les faces retournées) de ma deuxième primitive avec le mesh que je veux tester, et exécuter une requête d'occlusion pour le maillage. Si le maillage est complètement occlus, il n'y aura pas d'intersection. Cela nécessiterait bien entendu que ma deuxième primitive soit convexe. D'une manière ou d'une autre, j'ai l'impression que ce type de test sera extrêmement coûteux à mesure que le nombre de primitives augmentera (même si une grande partie peut être éliminée directement). Est-ce que quelqu'un d'autre a une autre idée ou technique? Je suis plus familier avec opengl et cg que directx, mais si vous avez quelques exemples dans directx, je suppose que je serai capable de comprendre les homologues opengl.

Toutes les idées sont appréciées, alors s'il vous plaît brainstorming. :)

Répondre

2

Il semble que l'article de Dan Horn "Opérations de réduction de flux pour les applications GPGPU" dans GPU Gems 2 est exactement ce que vous voulez. Comme tous les chapitres, c'est librement available online.

+0

Intéressant, je possède réellement ce livre (depuis assez longtemps aussi ...), mais pour une raison que j'ignore cette section. – falstro

Questions connexes