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
Topik terkait