Tampilan yang diurutkan rasterizer

Tampilan yang diurutkan rasterizer (ROV) memungkinkan kode shader piksel menandai pengikatan tampilan akses yang tidak diurutkan (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.

Gambaran Umum

Alur grafis standar mungkin mengalami masalah saat 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 shader piksel menandai pengikatan UAV dengan deklarasi yang mengubah persyaratan normal untuk urutan hasil alur grafis untuk UAV.

ROV menjamin urutan akses UAV untuk sepasang pemanggilan shader piksel 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 koordinat sampel 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 shader piksel harus tersedia untuk dibaca oleh pemanggilan berikutnya dan tidak boleh memengaruhi pembacaan oleh pemanggilan sebelumnya. Pembacaan ROV yang dilakukan oleh pemanggilan shader piksel harus mencerminkan tulisan oleh pemanggilan sebelumnya dan tidak boleh mencerminkan tulisan dengan 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: