msad4
Membandingkan nilai referensi 4 byte dan nilai sumber 8 byte dan mengakumulasi vektor 4 jumlah. Setiap jumlah sesuai dengan jumlah yang ditutupi dari perbedaan absolut dari perataan byte yang berbeda antara nilai referensi dan nilai sumber.
hasil uint4 = msad4(referensi uint, sumber uint2, akumulasi uint4); |
---|
Parameter
-
Referensi
-
[in] Array referensi 4 byte dalam satu nilai uint .
-
Sumber
-
[in] Array sumber 8 byte dalam dua nilai uint2 .
-
akumulasi
-
[in] Vektor 4 nilai. msad4 menambahkan vektor ini ke jumlah yang ditutupi dari perbedaan absolut dari perataan byte yang berbeda antara nilai referensi dan nilai sumber.
Tampilkan Nilai
Vektor 4 jumlah. Setiap jumlah sesuai dengan jumlah yang ditutupi dari perbedaan absolut dari perataan byte yang berbeda antara nilai referensi dan nilai sumber. msad4 tidak menyertakan perbedaan dalam jumlah jika perbedaan tersebut ditutupi (yaitu, byte referensi adalah 0).
Keterangan
Untuk menggunakan intrinsik msad4 dalam kode shader Anda, panggil metode ID3D11Device::CheckFeatureSupport dengan D3D11_FEATURE_D3D11_OPTIONS untuk memverifikasi bahwa perangkat Direct3D mendukung opsi fitur SAD4ShaderInstructions . Intrinsik msad4 memerlukan driver tampilan WDDM 1.2, dan semua driver tampilan WDDM 1.2 harus mendukung msad4. Jika aplikasi Anda membuat perangkat penyajian dengan tingkat fitur 11.0 atau 11.1 dan target kompilasi adalah model shader 5 atau yang lebih baru, kode sumber HLSL dapat menggunakan msad4 intrinsik.
Nilai yang dikembalikan hanya akurat hingga 65535. Jika Anda memanggil msad4 intrinsik dengan input yang mungkin menghasilkan nilai pengembalian yang lebih besar dari 65535, msad4 menghasilkan hasil yang tidak terdefinisi.
Minimum Shader Model
Fungsi ini didukung dalam model shader berikut.
Shader Model | Didukung |
---|---|
Model shader 5 atau yang lebih baru | ya |
Contoh
Berikut adalah contoh perhitungan hasil untuk msad4:
reference = 0xA100B2C3;
source.x = 0xD7B0C372
source.y = 0x4F57C2A3
accum = {1,2,3,4}
result.x alignment source: 0xD7B0C372
result.x = accum.x + |0xD7 0xA1| + 0 (masked) + |0xC3 0xB2| + |0x72 0xC3| = 1 + 54 + 0 + 17 + 81 = 153
result.y alignment source: 0xA3D7B0C3
result.y = accum.y + |0xA3 0xA1| + 0 (masked) + |0xB0 0xB2| + |0xC3 0xC3| = 2 + 2 + 0 + 2 + 0 = 6
result.z alignment source: 0xC2A3D7B0
result.z = accum.z + |0xC2 0xA1| + 0 (masked) + |0xD7 0xB2| + |0xB0 0xC3| = 3 + 33 + 0 + 37 + 19 = 92
result.w alignment source: 0x57C2A3D7
result.w = accum.w + |0x57 0xA1| + 0 (masked) + |0xA3 0xB2| + |0xD7 0xC3| = 4 + 74 + 0 + 15 + 20 = 113
result = {153,6,92,113}
Berikut adalah contoh bagaimana Anda dapat menggunakan msad4 untuk mencari pola referensi dalam buffer:
uint4 accum = {0,0,0,0};
for(uint i=0;i<REF_SIZE;i++)
accum = msad4(
buf_ref[i],
uint2(buf_src[DTid.x+i], buf_src[DTid.x+i+1]),
accum);
buf_accum[DTid.x] = accum;
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung |
Windows 8 [aplikasi desktop | Aplikasi UWP] |
Server minimum yang didukung |
Windows Server 2012 [aplikasi desktop | Aplikasi UWP] |
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk