Daftar Kedalaman Output

Register kedalaman output shader piksel (oDepth) adalah register skalar hanya-tulis dengan rentang [0..1] yang mengembalikan nilai kedalaman baru untuk pengujian kedalaman terhadap buffer stensil kedalaman.

Sintaks

oDepth

 

Mana:

Nama Deskripsi
oDepth Nilai kedalaman baru untuk pengujian kedalaman terhadap buffer stensil kedalaman

 

Penting untuk diketahui bahwa menulis ke oDepth menyebabkan hilangnya algoritma pengoptimalan buffer kedalaman khusus perangkat keras (yaitu Z hierarkis) yang mempercepat performa pengujian kedalaman.

Mereplikasi swizzle sumber (.x | .y | .z | .w) diperlukan saat menulis ke oDepth. Masker tulis eksplisit tidak diperbolehkan.

Menulis ke register oDepth menggantikan nilai kedalaman terinterpolasi (dan mengabaikan bias kedalaman/slopescale renderstates). Jika tidak ada buffer kedalaman yang dibuat atau dilampirkan ke perangkat, maka tulis ke oDepth diabaikan.

Jika Anda melakukan multisampling dan menulis ke oDepth, karena shader piksel hanya berjalan sekali per piksel, nilai kedalaman Anda direplikasi untuk semua lokasi sub-sampel yang tercakup. Pengujian kedalaman masih terjadi per sampel, tetapi Anda tidak memiliki nilai kedalaman per sampel yang masuk ke perbandingan dari shader piksel seperti yang Anda miliki jika Anda tidak menulis oDepth.

Jika aplikasi memiliki buffer w yang ditetapkan sebagai buffer kedalamannya, maka perlu mempertimbangkannya saat menulis ke oDepth. Ini berpotensi perlu mengirim informasi rentang-w ke shader piksel dan menghitung rentang-w untuk menskalakan nilai-w yang ditulis ke oDepth.

Pembatasan ps_2_0 dan ps_2_x

  • oDepth hanya dapat ditulis dengan instruksi mov - ps dan hanya dapat dilakukan sekali.
  • Tidak ada pengubah sumber yang diizinkan saat menulis ke oDepth.
  • Tidak ada pengubah instruksi yang diizinkan saat menulis ke oDepth.
  • Tidak ada penulisan ke oDepth dari dalam konstruksi kontrol alur, atau saat menggunakan predikasi.

Pembatasan ps_3_0

  • Untuk ps_3_0, output mendaftarkan oC# dan oD# dapat ditulis beberapa kali. Output shader piksel berasal dari konten register output di akhir eksekusi shader. Jika penulisan ke register output tidak terjadi, mungkin karena kontrol aliran atau jika shader tidak menulisnya, target render yang sesuai juga tidak diperbarui. Jika subset saluran dalam register output ditulis, maka nilai yang tidak ditentukan akan ditulis ke saluran yang tersisa.
  • Anda dapat menulis ke oDepth dalam kontrol alur atau predikasi selama semua jalur yang mungkin akhirnya menulis ke dalam register.
  • Anda tidak boleh melakukan perhitungan gradien apa pun (atau operasi yang secara implisit memanggil perhitungan gradien seperti texld - ps_2_0 dan up, texldb - ps, texldp - ps) di dalam pernyataan kontrol aliran yang kondisi percabangannya bervariasi berdasarkan per-primitif (yaitu: instruksi kontrol aliran dinamis). Predikasi instruksi tidak dianggap sebagai kontrol alur dinamis.

Register