Apa gunanya rasterisasi perangkat lunak di mesin game modern?

9

Saya mengambil kursus Grafik Komputer kuartal ini. Salah satu proyek lab kami adalah tentang rasterisasi perangkat lunak.

Sekarang saya sedang merencanakan proposal proyek dan berpikir tentang bagaimana membuatnya berguna bagi orang lain dalam pengembangan game kontemporer.

Setelah beberapa pencarian singkat, saya belajar teknik yang disebut Software Occlusion Culling. Itu rasterisasi perangkat lunak pada buffer dari berbagai resolusi. Dan kita dapat meminta oklusi menggunakan buffer z hierarkis.

Pertanyaan saya : Apa gunanya rasterisasi perangkat lunak di mesin game modern selain Culling Penghentian Perangkat Lunak?

TheBusyTypist
sumber

Jawaban:

4

Sepengetahuan saya, Culling Perangkat Lunak Penyumbatan (yang telah Anda sebutkan), adalah satu-satunya hal yang masih akan digunakan oleh rasterizer perangkat lunak. Procworld memanfaatkan teknik serupa untuk menampilkan lingkungan voxelnya yang besar.

Sebagian besar metode pemusnahan lainnya seperti pemusnahan frustum bekerja pada CPU, tetapi, untuk tetap dengan contoh, tes terhadap frustrasi terjadi pada tingkat objek, mungkin dengan kotak bounded aligned axis (AABB). Tes persimpangan ini jauh lebih sederhana daripada menggunakan rasterizer perangkat lunak lengkap.

Dalam kasus-kasus tertentu, rasterisasi perangkat lunak dapat digunakan untuk pengambilan objek. Dalam mesin game, ini sering diselesaikan dengan menggunakan mesin fisika dan tabrakan segitiga-ray dengan mesh yang disederhanakan.

Dengan CPU yang menganggur saat menunggu GPU dalam aplikasi 3D interaktif modern, orang dapat berpikir bahwa mungkin bermanfaat untuk menggunakan siklus idle ini untuk membuat CPU menggunakan rasterizer perangkat lunak. Masalahnya di sini, selain rendering semakin rumit dan berbelit-belit, akan sering menjadi bandwidth. Gambar yang diberikan pada CPU harus ditransfer ke GPU sebelum ditampilkan, yang dapat membatalkan manfaatnya.

David Kuri
sumber
0

Game dengan konsep "kabut perang" seringkali memiliki visibilitas grid untuk mendefinisikan keadaan kabut perang di setiap lokasi. Rasterisasi kadang-kadang digunakan untuk memodifikasi kabut keadaan perang untuk bentuk tertentu di grid.

Misalnya, menggunakan kemampuan yang mengungkapkan lingkaran peta dengan jari-jari tertentu, atau mungkin sesuatu yang mengungkapkan kotak.

Tidak sepenuhnya terkait dengan grafis, tetapi jelas penggunaan rasterisasi dalam game modern, dan teknik yang terlihat digunakan dalam RTS.

Data berbasis grid lainnya dalam game dapat menggunakan rasterisasi untuk situasi serupa.

Alan Wolfe
sumber
-2

Rasterisasi adalah topik besar dengan banyak bagian dan saya bukan programmer mesin, tetapi saya akan melakukan yang terbaik untuk memberikan semacam gambaran umum (ini akan jauh dari daftar lengkap!).

Beberapa hal yang sangat mendasar, tingkat rendah meliputi:

  • Pemusnahan frustrum: membuang segala sesuatu di luar frustrasi kamera (menganggapnya sebagai area tampilan kamera).
  • Pemusnahan backface: buang semua poligon yang tidak mengarah ke kamera.
  • Algoritma Painter: menggambar objek sesuai jarak mereka ke kamera, mulai dengan objek yang jauh, kemudian menuju ke kamera.

Lebih banyak hal maju yang digunakan dalam game termasuk hal-hal seperti:

  • Tesselation : sebenarnya cukup mirip LOD (lihat di bawah), tetapi sekarang DirectX Version terbaru memperkenalkan tesselation, yang menyediakan pembagian atau pengurangan mesh otomatis. Ini memberikan peningkatan besar dalam kinerja grafis, karena Anda bisa mendapatkan polis jika Anda membutuhkannya dan menyingkirkannya jika Anda tidak menginginkannya lagi.
  • LOD : Sistem level-of-detail menggantikan mesh objek berdasarkan jarak antara objek dan kamera. misalnya, karakter Anda memiliki tiga jerat: satu dengan 10.000, satu dengan 5.000 dan satu lainnya dengan 1.000 polis. Jika Anda tetap berada di depannya, mesh resolusi tinggi (10.000 polys) ditampilkan, jika Anda menjauh, setelah 100m karakter digantikan oleh mesh media dan setelah 100m yang lain digantikan oleh mesh resolusi rendah. Alih-alih mengganti jala Anda bisa menguranginya, tetapi ini akan lebih kompleks untuk kode.
  • partisi ruang biner : ruang dibagi menjadi dua volume. ini akan diulangi sampai Anda mencapai tujuan Anda, misalnya sampai ruang tersebut hanya berisi polys yang harus digambar di layar
  • Portal dan sel : (alias Portal culling) digunakan dalam adegan indoor dan / atau penembak orang pertama. Adegan dibagi menjadi sel-sel (misalnya kamar bangunan) yang terhubung membuang portal (misalnya pintu). Anda dapat mengatur portal menjadi terbuka dan tertutup.

Dengan asumsi Anda memiliki pemahaman dasar tentang pipa grafis, saya mencoba fokus pada rasterisasi. Anda juga dapat melihat pencahayaan dan bayangan atau hal-hal lain ..

Ini termasuk beberapa teknologi yang memungkinkan untuk dimasukkan ke dalam proyek Anda. karena saya tidak memiliki cukup reputasi di stackexchange, saya tidak dapat memberikan banyak tautan, tetapi Anda akan menemukan semua itu di google :)

Micha Grandel
sumber
2
Pertanyaannya adalah tentang rasterisasi perangkat lunak (baca: CPU). Beberapa informasi yang Anda berikan adalah tentang rasterisasi secara umum, beberapa teknik - dalam buku saya - tidak ada hubungannya dengan rasterisasi sama sekali. Bisakah Anda jelaskan dalam jawaban Anda bagaimana teknik menggunakan atau mendapat manfaat dari rasterisasi perangkat lunak?
David Kuri