In sostanza, desidero rimuovere la necessità di generare rumore coerente dalla CPU alla GPU. Da lì, voglio anche generare il terreno per un mondo tridimensionale usando questo rumore come densità nei punti voxel. Dopo questo, voglio prendere quelle densità e poligonizzarle (generare vertici) che rappresentano il terreno del mondo.
Va tutto bene. Ma voglio anche deformare dinamicamente il mondo in tempo reale. Una volta arrivato a questo punto, ho un problema nel tentativo di riportare i vertici nella CPU per fare cose come il rilevamento delle collisioni e tutti i calcoli di gioco che voglio coinvolgere sulla CPU e non sulla GPU.
Quindi la domanda è: come posso riportare un sottoinsieme dei vertici nella CPU per gestire le collisioni tra le altre cose?
E un'altra domanda: esiste un modo semplice per prendere una serie di vertici e generare indici da essi sulla GPU?
Sono confuso e che tipo di shader dovrei usare per queste diverse cose. Ho sentito parlare di persone che usano un pixel shader per raccogliere densità e poi usare uno shader di geometria per gestire la generazione del terreno dai vertici e quindi in qualche modo incorporare uno shader di vertice per fare le deformazioni dinamiche.
Sto usando C # 4.0, .NET 4.0 e XNA Game Studio 4.0.