msad4
4 バイトの参照値と 8 バイトのソース値を比較し、4 個の合計値のベクターを累積します。 各合計は、参照値とソース値の間の異なるバイトアラインメントの絶対差のマスクされた合計に対応します。
uint4 result = msad4(uint reference, uint2 source, uint4 accum); |
---|
パラメーター
-
参照
-
[入力]1 つの uint 値の 4 バイトの参照配列。
-
ソース
-
[入力]2 つの uint2 値の 8 バイトのソース配列。
-
accum
-
[入力]4 つの値のベクトル。 msad4 は、 参照値とソース値の間の異なるバイトアラインメントの絶対差のマスクされた合計にこのベクトルを追加します。
戻り値
4 つの合計のベクトル。 各合計は、参照値とソース値の異なるバイト アラインメントの差の絶対値のマスク合計に対応します。 msad4 では、その差がマスクされている場合 (つまり、参照バイトが 0) の場合、合計に差は含まれません。
解説
シェーダー コードで msad4 組み込みを使用するには、 id3D11Device::CheckFeatureSupport メソッドを D3D11_FEATURE_D3D11_OPTIONS と共に呼び出して、Direct3D デバイスが SAD4ShaderInstructions 機能オプションをサポートしていることを確認します。 msad4 組み込みには WDDM 1.2 ディスプレイ ドライバーが必要であり、すべての WDDM 1.2 ディスプレイ ドライバーは msad4 をサポートする必要があります。 アプリが機能レベル 11.0 または 11.1 を持つレンダリング デバイスを作成し、コンパイル ターゲットがシェーダー モデル 5 以降である場合、HLSL ソース コードでは msad4 組み込みを使用できます。
戻り値は、最大 65535 まで正確です。 msad4 組み込みを 65535 より大きい戻り値になる可能性がある入力を呼び出すと、msad4 は未定義の結果を生成します。
最小シェーダー モデル
この関数は、次のシェーダー モデルでサポートされています。
シェーダー モデル | サポートされています |
---|---|
シェーダー モデル 5 以降 | はい |
例
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}
msad4 を使用してバッファー内の参照パターンを検索する方法の例を次に示します。
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;
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント |
Windows 8 [デスクトップ アプリ |UWP アプリ] |
サポートされている最小のサーバー |
Windows Server 2012 [デスクトップ アプリ |UWP アプリ] |