Sampai sekarang, ketika merender adegan saya dan saat iterasi melalui grafik adegan, untuk setiap node, matriks modelnya dihitung dari matriks model induk dan pose node adegan. Ini cukup sederhana dan sudah mengurangi jumlah perkalian matriks menjadi satu perkalian per node dan bingkai.
Tetapi semua perkalian matriks ini harus dilakukan pada CPU dan di setiap frame untuk dapat melakukan (beberapa kali berturut-turut) pergerakan node adegan dengan sangat cepat. GPU, bagaimanapun, mungkin jauh lebih cocok untuk melakukan banyak perkalian matriks, jadi saya berpikir untuk mengirim beberapa matriks model parsial ke vertex shader daripada menghitung semua yang ada di CPU.
Mengirim setiap bagian (jadi pose setiap simpul) ke GPU mungkin tidak masuk akal, karena dalam hal ini semua perhitungan dilakukan untuk setiap titik alih-alih setiap simpul, yang sebenarnya akan menurunkan kinerja. Tapi mungkin adegan node dengan banyak anak-anak atau hanya anak-anak yang tidak bergerak (relatif terhadap orang tuanya) dapat menjadi tempat untuk membagi matriks model dan menggeser perkalian ke shader.
Jadi, kapan lebih baik mengirim matriks model parsial ke shader dan memindahkan multiplikasi ke GPU? Atau apakah itu hanya ide yang buruk untuk ini?
Jarang, jika pernah. Anda setengah menjawabnya dalam pertanyaan Anda sendiri: shader vertex berjalan sekali per-verteks, shader fragmen sekali per-fragmen. Jika Anda tidak melakukan sesuatu yang unik pada vertex atau fragmen itu, maka Anda melakukan hal yang persis sama setiap kali Anda memanggil shader. Bagi saya itu tidak terdengar lebih efisien.
sumber