Essentiellement, je veux supprimer la nécessité de générer un bruit cohérent du CPU vers le GPU. De là, je veux aussi générer le terrain pour un monde en trois dimensions en utilisant ce bruit comme densités en points de voxel. Après cela, je veux prendre ces densités et les polygoniser (générer des sommets) représentant le terrain du monde.
C'est bien et tout. Mais, je veux aussi déformer dynamiquement le monde en temps réel. Une fois arrivé à ce point, j'ai un problème à essayer de récupérer les sommets vers le CPU pour faire des choses comme la détection de collision et tous les calculs de jeu que je veux impliquer sur le CPU et non sur le GPU.
Donc, la question est: comment puis-je récupérer un sous-ensemble des sommets vers le CPU pour gérer les collisions, entre autres?
Et encore une question: existe-t-il un moyen facile de prendre un ensemble de sommets et d'en générer des indices sur le GPU?
Je ne sais pas trop quels types de shaders je devrais utiliser pour ces différentes choses. J'entends parler de personnes utilisant un pixel shader pour rassembler les densités, puis utilisant un geometry shader pour gérer la génération de terrain à partir des sommets, puis incorporant en quelque sorte un vertex shader pour effectuer les déformations dynamiques.
J'utilise C # 4.0, .NET 4.0 et XNA Game Studio 4.0.