Multipass Teknik
Bayangkan bahwa Anda ingin melukis dinding bata besar. Anda menggunakan pola bata ubin, yang memberikan dinding solid
melihat. Kita telah melihat bagaimana untuk mencapai hal ini dengan pemetaan tekstur konvensional. Tapi dinding bata yang jelas adalah
tidak terlalu menarik, sehingga Anda memutuskan untuk menambahkan kemampuan untuk mewakili tanda peluru dinamis di dinding sebagai
pemain menembak pistol itu. Untuk mencapai efek ini, Anda awalnya mempertimbangkan memiliki tekstur peta dua (salah satu
dinding kosong dan satu lagi dari dinding yang sama dengan tanda bullet), menggunakan yang sesuai di
tepat waktu. Tapi ini tidak praktis. Bagaimana jika pengguna tunas di lokasi yang berbeda di dinding, atau bahkan
lebih buruk, menembak beberapa kali? Apakah Anda akhirnya memiliki peta N tekstur untuk apa yang seharusnya menjadi sederhana
efek?
Solusi untuk masalah ini (dan banyak lainnya) adalah untuk multipass teknik rendering.Kita dapat menggunakan beberapa
lalukisan dengan pencampuran
diaktifkan sering lebih lambat dibandingkan tanpa campuran, sehingga kinerja akan menurun drastis jika Anda tidak
mengontrol penggunaan pencampuran.
Tekstur Optimasi
Menggunakan tekstur banyak kualitas penting untuk menciptakan dipercaya, tampan tingkat. Tapi tekstur yang mahal.
Sebuah tunggal 256 x 256 peta tekstur RGB mengambil sebagai sebanyak 192KB. Jika Anda ingin mipmapping di atas itu, Anda
jejak memori peta akan berlipat ganda. Dan, jujur saja, Anda akan memerlukan puluhan peta yang berbeda untuk membuat setiap
tingkat. Berhenti untuk kedua dan mencoba untuk memperkirakan berapa banyak memori yang Anda akan perlu untuk menyimpan semua Anda
tekstur peta. Seorang pengembang sesama pernah mengatakan kepada saya dia menggunakan antara 40 dan 100 peta per tingkat, dan bahwa
adalah permainan di dalam ruangan! Pada beberapa titik waktu (lebih baik lebih cepat daripada nanti), Anda akan menemukan Anda memiliki kurang
memori di platform target Anda dari yang Anda butuhkan. Hal ini terutama berlaku di konsol, di mana memori
merupakan sumber daya berharga, tetapi berlaku untuk pengembangan game PC juga. PC memiliki kolam memori yang lebih besar pada
subsistem grafis, tapi bus lebih lambat, dan dengan demikian mengurangi ukuran memori sangat penting utama di sini
juga. Anda bisa mencoba untuk menerapkan kebijakan caching, yang merupakan langkah yang baik, tetapi karena Anda akan menemukan di
selanjutnya bagian, yang tidak memecahkan semua masalah Anda. Pindah tekstur naik turun bus maka akan menjadi
pembunuh kinerja.
peta yang sudah benar-benar digunakan. Ini memiliki biaya CPU yang sangat rendah dan memungkinkan kita untuk melacak yang tekstur adalah
"Segar" (sedang bertanya sepanjang waktu) dan yang "semakin tua."
Setiap kali kita mendapatkan permintaan tekstur, kita perlu melakukan hal berikut:
terlihat jika tekstur dalam cache
jika sudah, menggunakannya dan memperbarui timestamp
lain
/ / Kita punya rindu
memindai cache, mencari tekstur tertua
menukar-out tekstur yang dipilih
Swap-in yang baru
akhir jika
Perhatikan bahwa kami menerapkan terakhir-terakhir digunakan (LRU) kebijakan. Ini berarti kita membuang peta yang
adalah terakhir digunakan, dan menggunakan ruang itu untuk mengalokasikan peta baru. Sebuah kebijakan alternatif, pertama, keluar pertama (FIFO),
memastikan bahwa peta tertua dalam cache tersebut akan dibuang, tidak peduli seberapa baru itu digunakan. Karena ini
mesin cache akan memiliki hit kinerja yang sangat rendah (kecuali untuk yang sebenarnya swapping, yang akan tergantung pada
bus kecepatan anda), kita dapat menggunakan LRU, yang merupakan algoritma yang paling tepat karena menghasilkan sedikit
jumlah meleset.
Selain itu, perhatikan bahwa kita perlu cache yang setidaknya mampu menahan tekstur yang dibutuhkan untuk membuat satu
frame (ditambah beberapa ruang ekstra untuk memiliki margin tertentu). Mesin cache tidak dapat melakukan pekerjaan mereka pada bingkai per-
dasar. Jumlah meleset harus satu dari setiap frame N, dengan N yang lebih besar menghasilkan nilai yang lebih baik
kinerja.
Keterangan :
Terjemahan : Buku Core Techniques and Algorithms in Game Programming
Chapter 18. Tekture Mapping
Sub Texture Optimization
Multipass Techniques
Multipass Techniques
Tidak ada komentar:
Posting Komentar