Tahap Stream-Output

Tujuan dari tahap stream-output adalah untuk terus mengeluarkan (atau mengalirkan) data vertex dari tahap geometry-shader (atau tahap vertex-shader jika tahap geometry-shader tidak aktif) ke satu atau beberapa buffer dalam memori (lihat Memulai tahap Stream-Output).

Tahap stream-output (SO) terletak di alur tepat setelah tahap geometry-shader dan tepat sebelum tahap rasterisasi, seperti yang ditunjukkan pada diagram berikut.

diagram lokasi tahap stream-output dalam alur

Data yang dialirkan ke memori dapat dibaca kembali ke alur dalam kode penyajian berikutnya, atau dapat disalin ke sumber daya penahapan (sehingga dapat dibaca oleh CPU). Jumlah data yang dialirkan dapat bervariasi; ID3D11DeviceContext::D rawAuto API dirancang untuk menangani data tanpa perlu mengkueri (GPU) tentang jumlah data yang ditulis.

Saat segitiga atau garis garis terikat ke tahap perakitan input, setiap strip dikonversi menjadi daftar sebelum dialirkan. Simpul selalu ditulis sebagai primitif lengkap (misalnya, 3 simpul sekaligus untuk segitiga); primitif yang tidak lengkap tidak pernah dialirkan. Jenis primitif dengan kedekatan membuang data yang berdekatan sebelum streaming data keluar.

Ada dua cara untuk memberi umpan data stream-output ke dalam alur:

  • Data stream-output dapat disalurkan kembali ke tahap perakitan input.
  • Data stream-output dapat dibaca oleh shader yang dapat diprogram menggunakan fungsi beban (seperti Load).

Untuk menggunakan buffer sebagai sumber daya stream-output, buat buffer dengan bendera D3D11_BIND_STREAM_OUTPUT . Tahap stream-output mendukung hingga 4 buffer secara bersamaan.

  • Jika Anda mengalirkan data ke dalam beberapa buffer, setiap buffer hanya dapat mengambil satu elemen (hingga 4 komponen) dari data per puncak, dengan data tersirat melangkah sama dengan lebar elemen di setiap buffer (kompatibel dengan cara buffer elemen tunggal dapat terikat untuk input ke dalam tahap shader). Selain itu, jika buffer memiliki ukuran yang berbeda, penulisan berhenti segera setelah salah satu buffer penuh.
  • Jika Anda mengalirkan data ke dalam satu buffer, buffer dapat menangkap hingga 64 komponen skalar data per puncak (256 byte atau kurang) atau langkah puncak dapat mencapai 2048 byte.

Di bagian ini

Topik Deskripsi
Memulai Tahap Stream-Output
Bagian ini menjelaskan cara menggunakan shader geometri dengan tahap output aliran.

Alur Grafik

Tahap alur (Direct3D 10)