Bagikan melalui


texcrd - ps

Menyalin data koordinat tekstur dari daftar iterator koordinat tekstur sumber sebagai data warna dalam register tujuan.

Sintaks

texcrd dst, src

 

Di mana

  • dst adalah register tujuan.
  • src adalah register sumber.

Keterangan

Versi shader piksel 1_1 1_2 1_3 1_4 2_0 2_x 2_sw 3_0 3_sw
texcrd x

 

Instruksi ini menginterpretasikan data koordinat sebagai data warna (RGBA).

Tidak ada tekstur yang diambil sampelnya oleh instruksi ini. Hanya koordinat tekstur yang diatur pada tahap tekstur ini yang relevan.

Saat menggunakan texcrd, ingatlah detail berikut tentang bagaimana data disalin dari register sumber ke register tujuan. Register koordinat tekstur sumber (t#) menyimpan data dalam rentang [-D3DCAPS9. MaxTextureRepeat, D3DCAPS9. MaxTextureRepeat], sementara register tujuan (r#) hanya dapat menyimpan data dalam rentang (kemungkinan lebih kecil) [-D3DCAPS9. PixelShader1xMaxValue, D3DCAPS9. PixelShader1xMaxValue]. Perhatikan bahwa untuk pixel shader versi 1_4, D3DCAPS9. PixelShader1xMaxValue harus minimal delapan. Instruksi texcrd, dalam proses penjepitan data sumber yang berada di luar rentang register tujuan, kemungkinan akan bersifat berbeda pada perangkat keras yang berbeda. Perangkat keras pixel shader versi 1_4 pertama di pasar akan melakukan penjepit khusus untuk nilai di luar rentang. Klem ini dirancang untuk menghasilkan angka yang dapat masuk ke dalam register tujuan, tetapi juga untuk mempertahankan perilaku mengatasi tekstur untuk data di luar rentang (lihat D3DTEXTUREADDRESS) jika data kemudian digunakan untuk pengambilan sampel tekstur. Namun, perangkat keras baru dari produsen yang berbeda mungkin tidak menunjukkan perilaku ini dan mungkin hanya memotong data agar sesuai dengan rentang register tujuan. Oleh karena itu, tindakan paling aman saat menggunakan pixel shader versi 1_4 texcrd adalah menyediakan data koordinat tekstur hanya ke dalam shader piksel yang sudah berada dalam rentang [-8,8] sehingga Anda tidak mengandalkan cara klem perangkat keras.

Tidak seperti texcoord_, texcrd tidak menjepit nilai antara 0 dan 1.

Aturan untuk menggunakan texcrd :

  1. Pengubah .xyz atau .xyw yang sama harus diterapkan ke setiap pembacaan register t(n) individu dalam instruksi texcrd atau texld.
  2. Hasil saluran keempat texcrd tidak diatur/tidak terdefinisi dalam semua kasus.
  3. Saluran ketiga tidak diatur/tidak ditentukan untuk kasus xyw_dw.

Contoh

Kumpulan lengkap sintaks yang diizinkan untuk texcrd, dengan mempertimbangkan semua kombinasi pengubah/pemilih/pemilih sumber dan masker tulis tujuan yang valid, ditunjukkan di bawah ini. Perhatikan bahwa notasi .rgba dan .xyzw dapat digunakan secara bergantian.

Menyalin tiga saluran pertama dari register iterator koordinat tekstur, t(n), ke dalam r(m). Saluran keempat r(m) tidak diinisialisasi.

texcrd  r(m).rgb, t(n).xyz  

// Produces the same result as the previous instruction
texcrd  r(m).rgb, t(n)

Menempatkan komponen pertama, kedua, dan keempat t(n) ke dalam tiga saluran pertama r(m). Saluran keempat r(m) tidak diinisialisasi.

texcrd  r(m).rgb, t(n).xyw

Berikut adalah contoh pembagian proyektif menggunakan pengubah _dw.

Contoh ini menyalin x/w dan y/w dari t(n) ke dalam dua saluran pertama r(m). Saluran ketiga dan keempat r(m) tidak diinisialisasi. Data apa pun yang sebelumnya ditulis ke saluran ketiga r(m) akan hilang. Data di saluran keempat r(m) hilang karena penanda fase. Untuk versi 1_4, bendera D3DTTFF_PROJECTED diabaikan.

texcrd  r(m).rg,  t(n)_dw.xyw

Instruksi Pixel Shader