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

Fungsi Intrinsik