Cela se produit généralement sur le GPU, mais il y a des compromis pour les deux et c'est à vous de décider lequel fonctionnera le mieux pour vous.
Faire la manipulation sur le GPU signifie que vous n'avez besoin d'envoyer les données de maillage qu'une seule fois, alors vous pouvez simplement envoyer les transformations de matrice pour les déformer. C'est génial car cela réduit considérablement la bande passante requise entre CPU-> GPU. Cela signifie également que vous pouvez télécharger une seule copie du maillage sur le GPU et appliquer des transformations pour de nombreuses instances différentes du maillage. Cependant, il est plus difficile d'avoir des collisions "à maillage précis". Étant donné que les transformations sont effectuées sur le GPU, vous ne les avez pas disponibles pour tester avec sur le CPU.
Faire la manipulation sur le CPU signifie que vous avez accès au maillage transformé. Vous pouvez accéder à tout ce que vous devez savoir à ce sujet. Cependant, cela signifie que vous devez télécharger tout le maillage sur le GPU à chaque image. Cela signifie également que vous devez télécharger un maillage transformé pour chaque instance de ce maillage. En résumé, voici une liste exhaustive des avantages et des inconvénients.
Il existe cependant des moyens de contourner les inconvénients du GPU.
- N'ayez pas de collisions précises . Utilisez quelque chose de "suffisamment proche" comme une boîte englobante pour tout le maillage ou ayez des boîtes englobantes pour chaque os du maillage. Ce qui suit utilise sur les transformations GPU pour le maillage, et sur les transformations CPU pour les boîtes de délimitation alignées sur l'axe qui représentent le maillage. Vous pouvez obtenir des limites encore plus précises en utilisant des non-AABB.
- Transformez une copie du maillage sur le CPU si et seulement si des collisions précises du maillage sont nécessaires . Une fois qu'une collision de boîte englobante est retournée vraie, transformez un maillage pour qu'il corresponde aux transformations sur le GPU, puis vérifiez les collisions par rapport à cela pour obtenir des données de collision plus précises.
Dans l'ensemble, je suppose que vous pouvez voir pourquoi il est plus courant de transformer le GPU