Bagikan melalui


Pengubah untuk ps_1_X

Pengubah instruksi memengaruhi hasil instruksi sebelum ditulis ke dalam register tujuan. Misalnya, gunakan untuk mengalikan atau membagi hasil dengan faktor dua, atau untuk menjepit hasil antara nol dan satu. Pengubah instruksi diterapkan setelah instruksi berjalan tetapi sebelum menulis hasilnya ke register tujuan.

Daftar pengubah ditunjukkan di bawah ini.

Pengubah Deskripsi Sintaks Versi 1_1 Versi 1_2 Versi 1_3 Versi 1_4
_x2 Kalikan dengan 2 instruction_x2 X X X X
_x4 Kalikan dengan 4 instruction_x4 X X X X
_x8 Kalikan dengan 8 instruction_x8 X
_d2 Bagi dengan 2 instruction_d2 X X X X
_d4 Bagi dengan 4 instruction_d4 X
_d8 Bagi dengan 8 instruction_d8 X
_Duduk Jenuh (klem dari 0 dan 1) instruction_sat X X X X

 

  • Pengubah kali mengalikan data register dengan kekuatan dua setelah dibaca. Ini sama dengan shift kiri.
  • Pengubah pembagian membagi data register dengan kekuatan dua setelah dibaca. Ini sama dengan pergeseran ke kanan.
  • Pengubah jenuh menjepit rentang nilai register dari nol hingga satu.

Pengubah instruksi dapat digunakan pada instruksi aritmatika. Mereka mungkin tidak digunakan pada instruksi alamat tekstur.

Pengubah perkalian

Contoh ini memuat register tujuan (dest) dengan jumlah dua warna dalam operan sumber (src0 dan src1) dan mengalikan hasilnya dengan dua.

add_x2 dest, src0, src1

Contoh ini menggabungkan dua pengubah instruksi. Pertama, dua warna dalam operand sumber (src0 dan src1) ditambahkan. Hasilnya kemudian dikalikan dua, dan dijepit antara 0,0 hingga 1,0 untuk setiap komponen. Hasilnya disimpan di register tujuan.

add_x2_sat dest, src0, src1

Pemodifikasi pembagian

Contoh ini memuat register tujuan (dest) dengan jumlah dua warna dalam operan sumber (src0 dan src1) dan membagi hasilnya dengan dua.

add_d2 dest, src0, src1

Pengubah jenuh

Untuk instruksi aritmatika, pengubah saturasi menjepit hasil instruksi ini ke dalam rentang 0,0 hingga 1,0 untuk setiap komponen. Contoh berikut menunjukkan cara menggunakan pengubah instruksi ini.

dp3_sat r0, t0_bx2, v0_bx2    ; t0 is bump, v0 is light direction

Operasi ini terjadi setelah pengubah instruksi kalikan atau bagi. _sat paling sering digunakan untuk menjepit hasil produk titik. Namun, ini juga memungkinkan emulasi metode multipass yang konsisten di mana buffer bingkai selalu dalam rentang 0 hingga 1, dan sintaks multitektur DirectX 6 dan 7,0, di mana saturasi didefinisikan terjadi pada setiap tahap.

Contoh ini memuat register tujuan (dest) dengan jumlah dua warna dalam operan sumber (src0 dan src1), dan menjepit hasilnya ke dalam rentang 0,0 hingga 1,0 untuk setiap komponen.

add_sat dest, src0, src1

Contoh ini menggabungkan dua pengubah instruksi. Pertama, dua warna dalam operand sumber (src0 dan src1) ditambahkan. Hasilnya dikalikan dua dan dijepit antara 0,0 hingga 1,0 untuk setiap komponen. Hasilnya disimpan di register tujuan.

add_x2_sat dest, src0, src1

Instruksi Piksel Shader