Ada sejumlah alasan mengapa rendering dan pipa-pipa fisika secara tradisional tetap terpisah. Ingatlah ketika saya daftar ini, bahwa ini bukan hanya tentang permainan. Pertanyaan Anda menyentuh pada aplikasi apa pun yang menggunakan teknologi render 3D seperti OpenGL, pesaing, atau pendahulu.
- Tidak setiap aplikasi yang menggunakan 3D, membutuhkan fisika. Ingatlah bahwa OpenGL tidak hanya dibuat untuk permainan, penggunaannya mencakup semuanya, mulai dari simulasi medis hingga pemodelan statistik penjualan, simulasi lalu lintas udara hingga reaksi kimia yang rumit, dan seterusnya dan seterusnya.
Setiap sistem yang melayani banyak tujuan menjadi encer dalam hal efisiensi. Pipa grafik harus sangat cepat. Saat Anda mulai memperkenalkan titik-titik di mana pipa harus berinteraksi dengan subsistem lain seperti memori sistem utama (tempat kode Anda berada), Anda akan mengalami pengurangan efisiensi dalam urutan besar-besaran. Perangkat keras pada kartu grafis Anda secara khusus dipersempit dan sangat dioptimalkan untuk mendorong piksel , dengan biaya besar dan bertahun-tahun penelitian yang sangat kompetitif.
Sifat matematika dan struktur data di sekitar operasi fisika (khususnya deteksi tabrakan dan resolusi, yang tanpanya tidak ada fisika ) sebagian besar berbeda dari matematika yang diperlukan untuk rendering.
- Ada solusi yang berhubungan dengan fisika dalam perangkat keras. Tetapi tidak seperti cara kita membuat, cara kita melakukan fisika dalam situasi apa pun sangat berbeda. Indikasi paling mendasar dari ini adalah bahwa fisika Newton tidak cocok untuk semua ukuran; ada cara lain untuk memodelkan fisika secara matematis yang lebih sesuai dalam situasi lain, seperti mekanika Hamilton. Dan dalam gim khususnya, setiap gim individual dapat memilih untuk memodelkan fisika secara berbeda, baik dalam 2D atau 3D. Ini bahkan tidak perlu mencerminkan fisika dunia nyata! - Karena permainan adalah produk dari imajinasi. Dengan kata lain, fisika pada akhirnya adalah bagian dari dinamika gim Anda, dan itu dapat berubah dari gim ke gim lainnya - apalagi semua solusi lain yang menerapkan teknologi seperti OpenGL.
Simulasi fisika secara akurat pada level vertex-by-vertex, untuk sebagian besar, saat ini bukan pilihan yang layak. Mengingat tingginya jumlah poli model di sebagian besar game, dan kesulitan yang melekat pada deteksi tabrakan yang melibatkan polihedra cekung, tidak semudah hanya menghitung fisika dari model yang disediakan. Bagi banyak, jika bukan sebagian besar game 3D, volume yang terikat dalam bentuk silinder atau kotak digunakan untuk menyederhanakan deteksi tabrakan, di mana tingkat deteksi tabrakan semacam itu bahkan diperlukan. Mengingat teknologi saat ini, tingkat pemrosesan yang terlibat tidak akan menyisakan banyak ruang untuk sisa logika permainan Anda untuk dijalankan. Bahkan PhysX Nvidia membutuhkan polyhedra cekung yang rumit untuk didekomposisi menjadi polyhedra cembung yang lebih sederhana, untuk simulasi fisika.
Kartu grafis Anda menghasilkan perspektif dengan transformasi yang dilakukan. Itu berbeda dari transformasi yang dilakukan dalam fisika, yang tidak ada hubungannya dengan perspektif seperti itu - itu hanya menghitung posisi dasar dan orientasi di dunia Anda. Jika Anda tahu tentang MVC, Anda akan memahami bahwa ada perbedaan nyata antara data yang Anda pegang dalam aplikasi Anda, dan bagaimana Anda menyajikan data itu.
Industri teknologi komputer didorong oleh kebutuhan, dan sementara visualisasi adalah kebutuhan yang hampir universal, simulasi fisika sama sekali tidak universal baik sebagai persyaratan atau dalam hal implementasi masing-masing.
Jadi saran saya adalah, berhentilah khawatir tentang melawan arus dan mulailah fokus pada bagaimana melakukan dua hal yang perlu Anda lakukan: rendering dan fisika. Anda tidak akan mendapatkan data di pipeline pemrosesan kartu grafis Anda (CUDA / OpenCl adalah pengecualian): Anda mendorong segitiga dan data material, itu memompa dunia 3D Anda sebagai gambar bergerak.
Sebagai penutup terakhir, pertanyaan Anda bukan tanpa akal. Keinginan untuk basis gabungan untuk fisika dan rendering, dan fakta bahwa matematika titik-mengambang bisa jauh lebih lambat daripada titik tetap, menunjukkan kepada kita mengapa teknologi voxel melihat kebangkitan besar minat: mereka menyederhanakan seluruh dunia hingga diposisikan dengan grid. , polyhedra cembung yang sejajar sumbu. Ini sangat meningkatkan kinerja, dengan mengurangi jumlah vektor vektor titik-mengambang yang diperlukan untuk operasi fisik, karena Anda sekarang bekerja terutama dalam kisi spasi-terbagi, instable, integer-indexed. Kisi yang sama ini dapat digunakan untuk rendering dan fisika, khususnya karena Anda dapat menggunakan resolusi kisi yang berbeda untuk dua subsistem berbeda ini (saat menggunakan solusi berbasis octree seperti SVO).