Ini biasa terjadi pada GPU, tetapi ada trade off untuk keduanya dan terserah Anda untuk memutuskan mana yang terbaik untuk Anda.
Melakukan manipulasi pada GPU berarti Anda hanya perlu mengirim data mesh sekali, maka Anda hanya dapat mengirim transformasi matriks untuk merusaknya. Ini bagus karena sangat mengurangi bandwidth yang diperlukan antara CPU-> GPU. Ini juga berarti Anda dapat mengunggah satu saja salinan mesh ke GPU dan menerapkan transformasi untuk banyak contoh mesh yang berbeda. Namun, lebih sulit untuk memiliki tabrakan "jala akurat". Karena transformasi dilakukan pada GPU, Anda tidak memilikinya untuk diuji dengan menggunakan CPU.
Melakukan manipulasi pada CPU berarti Anda memiliki akses ke mesh yang diubah. Anda dapat mengakses semua yang perlu Anda ketahui tentang hal itu. Namun, itu berarti Anda harus mengunggah seluruh jala ke setiap frame GPU. Ini juga berarti Anda harus mengunggah mesh yang diubah untuk setiap instance dari mesh itu. Singkatnya, inilah daftar pro dan kontra yang lengkap.
Pro untuk GPU
- Unggah data mesh satu kali
- Mengubahnya untuk beberapa contoh
- Hanya perlu mengirim transformasi matriks
- GPU sangat bagus dalam memparalelkan hal-hal semacam ini
Kontra untuk GPU
- Jaring yang diubah tidak tersedia untuk pengujian pada CPU
Pros untuk CPU
- Jerat yang ditransformasikan tersedia untuk uji tabrakan dan apa pun yang dibutuhkan.
Kontra untuk CPU
- Perlu mengunggah seluruh mesh yang diubah setiap frame
- Perlu mengunggah seluruh jala untuk setiap instance jala
Namun ada beberapa cara untuk menyiasati kekurangan GPU.
- Tidak memiliki tumbukan akurat jala . Gunakan sesuatu "cukup dekat" seperti kotak pembatas untuk seluruh jala atau memiliki kotak pembatas untuk setiap tulang jaring. Di bawah ini digunakan transformasi GPU untuk mesh, dan pada transformasi CPU untuk kotak bounded aligned axis yang mewakili mesh. Anda bisa mendapatkan batasan yang lebih akurat dengan menggunakan non-AABB.
- Ubah salinan mesh pada CPU jika dan hanya jika mesh collision akurat diperlukan . Setelah tabrakan kotak pembalikan telah kembali benar, ubah mesh untuk mencocokkan transformasi pada GPU, kemudian periksa tabrakan dengan itu untuk mendapatkan data tabrakan yang lebih akurat.
All-in-all Saya berasumsi Anda dapat melihat mengapa lebih umum untuk mengubah GPU