Tampilan yang diurutkan rasterizer
Tampilan yang diurutkan rasterizer (ROV) memungkinkan kode piksel shader menandai pengikatan tampilan akses tidak berurutan (UAV) dengan deklarasi yang mengubah persyaratan normal untuk urutan hasil alur grafis untuk UAV. Ini memungkinkan algoritma transparansi independen pesanan (OIT) berfungsi, yang memberikan hasil penyajian yang jauh lebih baik ketika beberapa objek transparan sejalan satu sama lain dalam tampilan.
Ikhtisar
Alur grafis standar mungkin mengalami masalah dalam menyusun beberapa tekstur yang berisi transparansi dengan benar. Objek seperti pagar kawat, asap, api, vegetasi, dan kaca berwarna menggunakan transparansi untuk mendapatkan efek yang diinginkan. Masalah muncul ketika beberapa tekstur yang mengandung transparansi sejalan satu sama lain (asap di depan pagar di depan bangunan kaca yang berisi vegetasi, sebagai contoh). Tampilan yang diurutkan rasterizer (ROV) memungkinkan algoritma OIT yang mendasar untuk menggunakan fitur perangkat keras untuk mencoba menyelesaikan urutan transparansi dengan benar. Transparansi ditangani oleh shader piksel.
Tampilan yang diurutkan rasterizer (ROV) memungkinkan kode piksel shader menandai pengikatan UAV dengan deklarasi yang mengubah persyaratan normal untuk urutan hasil alur grafis untuk UAV.
ROV menjamin urutan akses UAV untuk sepasang pemanggilan piksel shader yang tumpang tindih. Dalam hal ini "tumpang tindih" berarti bahwa pemanggilan dihasilkan oleh panggilan gambar yang sama dan berbagi koordinat piksel yang sama ketika dalam mode eksekusi frekuensi piksel, dan piksel dan sampel koordinat yang sama dalam mode frekuensi sampel.
Urutan di mana akses ROV yang tumpang tindih dari pemanggilan piksel shader dijalankan identik dengan urutan pengiriman geometri. Ini berarti bahwa, untuk pemanggilan shader piksel yang tumpang tindih, penulisan ROV yang dilakukan oleh pemanggilan piksel shader harus tersedia untuk dibaca oleh pemanggilan berikutnya dan tidak boleh memengaruhi bacaan oleh pemanggilan sebelumnya. Pembacaan ROV yang dilakukan oleh pemanggilan shader piksel harus mencerminkan penulisan oleh pemanggilan sebelumnya dan tidak boleh mencerminkan tulisan oleh pemanggilan berikutnya. Ini penting untuk UAV karena secara eksplisit dihilangkan dari jaminan output-invariance yang biasanya ditetapkan oleh urutan tetap hasil alur grafis.
Detail implementasi
Tampilan yang diurutkan rasterizer (ROV) dinyatakan dengan objek High Level Shader Language (HLSL) baru berikut, dan hanya tersedia untuk shader piksel:
RasterizerOrderedBuffer
RasterizerOrderedByteAddressBuffer
RasterizerOrderedStructuredBuffer
RasterizerOrderedTexture1D
RasterizerOrderedTexture1DArray
RasterizerOrderedTexture2D
RasterizerOrderedTexture2DArray
RasterizerOrderedTexture3D
Gunakan objek ini dengan cara yang sama seperti objek UAV lainnya (seperti RWBuffer
dll.).
Ringkasan API
ROV adalah konstruksi khusus HLSL yang menerapkan semantik perilaku yang berbeda untuk UAV. Semua API yang relevan dengan UAV juga relevan dengan ROV. Perhatikan bahwa metode, struktur, dan kelas pembantu berikut mereferensikan rasterizer:
- D3D12_RASTERIZER_DESC : struktur yang memegang deskripsi rasterizer.
- D3D12_FEATURE_DATA_D3D12_OPTIONS : struktur memegang boolean, menunjukkan dukungan.
- CheckFeatureSupport : metode untuk mengakses fitur yang didukung.
- CD3DX12_RASTERIZER_DESC : kelas pembantu untuk membuat deskripsi rasterizer.
- D3D12_GRAPHICS_PIPELINE_STATE_DESC : struktur yang memegang status alur.
Topik terkait
- Rasterisasi Konservatif
- Rendering
- Pengikatan Sumber Daya di HLSL
- Model Shader 5.1