Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Buffer kedalaman, atau z-buffer, menyimpan informasi kedalaman untuk mengontrol area poligon mana yang dirender daripada disembunyikan dari tampilan.
Gambaran umum
Buffer kedalaman, sering disebut z-buffer atau w-buffer, adalah properti perangkat yang menyimpan informasi kedalaman yang akan digunakan oleh Direct3D. Ketika Direct3D merender adegan ke permukaan target, itu dapat menggunakan memori di permukaan buffer kedalaman terkait sebagai ruang kerja untuk menentukan bagaimana piksel poligon rasterisasi satu sama lain. Direct3D menggunakan permukaan Direct3D di luar layar sebagai target tempat nilai warna akhir ditulis. Permukaan buffer kedalaman yang terkait dengan permukaan target render digunakan untuk menyimpan informasi kedalaman yang memberi tahu Direct3D seberapa dalam setiap piksel yang terlihat di adegan.
Ketika adegan dirasterisasi dengan buffering kedalaman diaktifkan, setiap titik pada permukaan penyajian diuji. Nilai dalam buffer kedalaman dapat menjadi titik koordinat z atau koordinat w-koordinat homogen - dari lokasi titik (x,y,z,w) di ruang proyeksi. Buffer kedalaman yang menggunakan nilai z sering disebut z-buffer, dan yang menggunakan nilai w disebut w-buffer. Setiap jenis buffer kedalaman memiliki kelebihan dan kekurangan, yang dibahas nanti.
Pada awal pengujian, nilai kedalaman dalam buffer kedalaman diatur ke nilai terbesar yang mungkin untuk adegan. Nilai warna pada permukaan penyajian diatur ke nilai warna latar belakang atau nilai warna tekstur latar belakang pada saat itu. Setiap poligon dalam adegan diuji untuk melihat apakah bersinggungan dengan koordinat saat ini (x,y) pada permukaan penyajian.
Jika bersinggungan, nilai kedalaman - yang akan menjadi koordinat z dalam z-buffer, dan koordinat w dalam w-buffer - pada titik saat ini diuji untuk melihat apakah itu lebih kecil dari nilai kedalaman yang disimpan di buffer kedalaman. Jika kedalaman nilai poligon lebih kecil, nilai tersebut disimpan di buffer kedalaman dan nilai warna dari poligon ditulis ke titik saat ini pada permukaan penyajian. Jika nilai kedalaman poligon pada saat itu lebih besar, poligon berikutnya dalam daftar diuji. Proses ini diperlihatkan dalam diagram berikut.
Teknik buffering
Meskipun sebagian besar aplikasi tidak menggunakan fitur ini, Anda dapat mengubah perbandingan yang digunakan Direct3D untuk menentukan nilai mana yang ditempatkan di buffer kedalaman dan kemudian permukaan target render. Pada beberapa perangkat keras, mengubah fungsi perbandingan dapat menonaktifkan pengujian z hierarkis.
Hampir semua akselerator di pasar mendukung z-buffering, menjadikan z-buffer sebagai jenis buffer kedalaman yang paling umum saat ini. Namun di mana-mana, z-buffer memiliki kelemahan mereka. Karena matematika yang terlibat, nilai z yang dihasilkan dalam z-buffer cenderung tidak didistribusikan secara merata di seluruh rentang z-buffer (biasanya 0,0 hingga 1,0, inklusif).
Secara khusus, rasio antara bidang kliping jauh dan dekat sangat memengaruhi seberapa tidak merata nilai z didistribusikan. Menggunakan jarak bidang jauh ke rasio jarak bidang dekat 100, 90 persen dari rentang buffer kedalaman dihabiskan pada 10 persen pertama dari rentang kedalaman adegan. Aplikasi umum untuk simulasi hiburan atau visual dengan adegan eksterior sering memerlukan rasio bidang jauh/hampir bidang di mana saja antara 1.000 hingga 10.000. Pada rasio 1.000, 98 persen dari rentang dihabiskan pada 2 persen pertama dari rentang kedalaman, dan distribusi menjadi lebih buruk dengan rasio yang lebih tinggi. Ini dapat menyebabkan artefak permukaan tersembunyi dalam objek yang jauh, terutama ketika menggunakan buffer kedalaman 16-bit, kedalaman bit yang paling umum didukung.
Buffer kedalaman berbasis w, di sisi lain, sering didistribusikan lebih merata antara bidang klip dekat dan jauh daripada z-buffer. Manfaat utamanya adalah bahwa rasio jarak untuk bidang kliping yang jauh dan dekat tidak lagi menjadi masalah. Ini memungkinkan aplikasi untuk mendukung rentang maksimum yang besar, sambil tetap mendapatkan buffer kedalaman yang relatif akurat dekat dengan titik mata. Buffer kedalaman berbasis w tidak sempurna, dan terkadang dapat menunjukkan artefak permukaan tersembunyi untuk objek dekat. Kelemahan lain dari pendekatan w-buffered terkait dengan dukungan perangkat keras: w-buffering tidak didukung secara luas dalam perangkat keras seperti z-buffering.
Menggunakan z-buffer memerlukan overhead selama penyajian. Berbagai teknik dapat digunakan untuk mengoptimalkan penyajian saat menggunakan z-buffer. Aplikasi dapat meningkatkan performa saat menggunakan z-buffering dan texturing dengan memastikan bahwa adegan dirender dari depan ke belakang. Primitif z-buffer bertekstur diprediksi terhadap z-buffer berdasarkan garis pemindaian. Jika garis pemindaian disembunyikan oleh poligon yang dirender sebelumnya, sistem menolaknya dengan cepat dan efisien. Z-buffering dapat meningkatkan performa, tetapi teknik ini paling berguna ketika adegan menarik piksel yang sama lebih dari sekali. Ini sulit dihitung dengan tepat, tetapi Anda sering dapat membuat perkiraan dekat. Jika piksel yang sama digambar kurang dari dua kali, Anda dapat mencapai performa terbaik dengan menonaktifkan z-buffering dan merender adegan dari belakang ke depan.
Interpretasi aktual dari nilai kedalaman khusus untuk perender.
Topik terkait