Mengapa penting untuk membuat target dengan ukuran bit yang sama?

10

Saat ini saya sedang memikirkan jenis GBuffer apa yang saya perlukan untuk naungan yang ditangguhkan, maka saya mencoba juga untuk mendokumentasikan diri saya secara online tentang yang paling umum dan formatnya.

Sebagian besar GBuffer yang saya lihat menggunakan ukuran bit yang sama untuk setiap target render, yang mengarah juga sering ke saluran yang tidak digunakan. Namun, sebagai tebakan pertama untuk GBuffer saya, di atas kertas, saya membutuhkan dua target 24 bit dan dua target 32 ​​atau tiga 24 dan satu 32.

Saya mengerti bahwa memiliki "ukuran" yang sama setiap lampiran dapat disejajarkan dengan lebih baik, tetapi secara praktis apakah lebih baik membuang saluran (atau memesannya untuk penggunaan di masa mendatang) dan memiliki semua RT dengan ukuran yang sama atau saya harus menggunakan apa yang dibutuhkan? Dalam kasus sebelumnya, mengapa ini merupakan keuntungan, akankah yang 24 bit diisi hingga 32?

cifz
sumber

Jawaban:

9

Saya mengerti bahwa memiliki "ukuran" yang sama setiap lampiran dapat disejajarkan dengan lebih baik, tetapi secara praktis apakah lebih baik membuang saluran (atau memesannya untuk penggunaan di masa mendatang) dan memiliki semua RT dengan ukuran yang sama atau saya harus menggunakan apa yang dibutuhkan?

Memiliki 32bit yang diselaraskan Target Render yang lebih baik, bahkan jika itu berarti "membuang" beberapa memori. Ini akan jauh lebih cepat daripada memiliki memori yang tidak selaras 32bit. Anda juga tidak akan kesulitan untuk mendukung beberapa tipe buffer, menyalin dan menggabungkan buffer akan lebih mudah karena Anda tidak perlu mengkonversi antara beberapa tipe.

32bit adalah asli untuk GPU dan CPU, maka Anda akan mengurangi jumlah siklus yang diperlukan untuk membaca memori. GPU secara alami akan mencoba membaca 32 bit, jika Anda mencoba membaca alamat memori yang tidak selaras, seperti 24 bit yang disejajarkan, GPU akan membaca 32 bit dan kemudian akan menggeser byte yang tidak diinginkan.

Berikut ini adalah artikel terperinci tentang mengapa penyelarasan memori penting (walaupun berbicara tentang CPU bukan GPU, konsep tingkat tinggi masih berlaku.)

Apakah 24 bit yang akan diisi menjadi 32?

Beberapa GPU akan memasangnya, tetapi tidak dapat dijamin, sehingga terletak di area implementasi driver / GPU. Jadi, Anda harus membuat profil dan memeriksa hasilnya.

PS: 32bit atau 64bit tergantung arsitekturnya.

concept3d
sumber
5
dan jika mereka semua memiliki ukuran bit yang sama, Anda dapat menggagalkannya tanpa perlu mengonversi
ratchet freak