daftar ps_3_0

Pemecah piksel bergantung pada register untuk mendapatkan data vertex, untuk menghasilkan data piksel, untuk menyimpan hasil sementara selama perhitungan, dan untuk mengidentifikasi tahap pengambilan sampel tekstur. Ada beberapa jenis register, masing-masing dengan fungsionalitas unik. Bagian ini berisi informasi referensi untuk register input dan output yang diimplementasikan oleh pixel shader versi 3_0.

Daftar Baru

Daftar Input

Daftar Input (v#) sekarang sepenuhnya floating point dan Texture Coordinate Registers (t#) telah dikonsolidasikan ke dalamnya. Dcl_semantics (sm3 - ps asm) di bagian atas shader digunakan untuk menggambarkan apa yang terkandung dalam Input_Register tertentu. Semantik untuk jenis piksel diperkenalkan (dianalogikan dengan sisi puncak) untuk model ini. Tidak ada penjepitan yang dilakukan ketika register input didefinisikan sebagai warna (seperti koordinat tekstur). Evaluasi register yang didefinisikan sebagai warna berbeda dari koordinat tekstur saat multisampling.

Daftar Wajah

Face register (vFace) baru untuk model ini. Ini adalah register skalar floating point yang akhirnya akan berisi area primitif. Namun, dalam ps_3_0, hanya tanda register ini yang valid. Oleh karena itu, jika nilainya kurang dari nol (bit tanda diatur negatif) primitif adalah wajah belakang (areanya negatif, berlawanan arah jarang). Oleh karena itu, dalam ps_3_0 masuk akal untuk membandingkan register ini dengan 0 (> 0 atau < 0). Di dalam shader piksel, aplikasi dapat membuat keputusan mengenai teknik pencahayaan mana yang akan digunakan. Pencahayaan dua sisi dapat dicapai dengan cara ini. Register ini memerlukan deklarasi, sehingga penggunaan yang tidak dinyatakan akan ditandai sebagai kesalahan. Untuk garis dan titik primitif, register ini tidak terdefinisi. Face register hanya dapat digunakan sebagai kondisi dengan instruksi berikut: setp_comp - ps, if_comp - ps, atau break_comp - ps.

Loop Counter Register

Loop Counter Register (aL) baru untuk model ini. Ini secara otomatis akan bertahap dalam setiap eksekusi perulangan - ps/endloop - blok ps . Ini dapat digunakan di blok untuk mengatasi relatif jika diperlukan. Tidak valid untuk menggunakan Loop Counter Register di luar perulangan.

Daftar Posisi

Daftar Posisi (vPos) baru untuk model ini. Ini berisi piksel saat ini (x, y) di saluran yang sesuai. Saluran (z, w) tidak terdefinisi. Register ini memerlukan deklarasi, sehingga penggunaan yang tidak dinyatakan akan ditandai sebagai kesalahan. Ketika dinyatakan, register ini harus memiliki salah satu masker berikut: .x, .y, .xy.

Jenis Daftar Input

Daftar Nama Jumlah R/W # Membaca port # Baca/inst Dimensi RelAddr Default Membutuhkan DCL
V # Daftar Input 10 R 1 Tidak Terbatas 4 Al Tidak ada Ya
R # Daftar Sementara 32 R/W 3 Tidak Terbatas 4 Tidak Tidak ada Tidak
C # Daftar Float Konstan 224 R 1 Tidak Terbatas 4 Tidak 0000 Tidak
I # Daftar Bilangan Bulat Konstan 16 R 1 1 4 Tidak 0000 Tidak
B # Daftar Boolean Konstan 16 R 1 1 1 Tidak FALSE Tidak
p0 Daftar Predikat 1 R 1 1 1 Tidak Tidak ada Tidak
S # Sampler (Direct3D 9 asm-ps) 16 R 1 1 4 Tidak Lihat catatan 1 Ya
vFace Face_Register 1 R 1 Tidak Terbatas 1 Tidak Tidak ada Ya
vPos Position_Register 1 R 1 Tidak Terbatas 4 Tidak Tidak ada Ya
Al Loop_Counter_Register 1 R 1 Tidak Terbatas 1 n/a Tidak ada Tidak

 

Catatan:

  • Default untuk pencarian sampler ada, tetapi nilai bergantung pada format tekstur.

Jumlah readport adalah jumlah register yang berbeda (untuk setiap jenis register) yang dapat dibaca dalam satu instruksi.

Jenis Register Output

Daftar Nama Jumlah R/W Dimensi RelAddr Default Memerlukan DCL
Oc # Daftar Warna Output Lihat Tekstur Multi-elemen (Direct3D 9) W 4 Tidak Tidak ada Tidak
oDepth Register Kedalaman Output 1 W 1 Tidak Tidak ada Tidak

 

Register