mad 関数
3 つの値に対して算術乗算/加算演算を実行します。
numeric mad(
in numeric mvalue,
in numeric avalue,
in numeric bvalue
);
-
mvalue [in]
-
型: 数値
乗算値。
-
avalue [in]
-
型: 数値
最初の加算値。
-
bvalue [in]
-
型: 数値
2 番目の加算値。
型: 数値
mvalue avalue * + bvalue の結果。
この関数は、次のシェーダー モデルでサポートされています。
シェーダー モデル | サポートされています |
---|---|
シェーダー モデル 5 以降のシェーダー モデル | はい |
この関数は、次の種類のシェーダーでサポートされています。
Vertex | Hull | Domain | ジオメトリ | ピクセル | Compute |
---|---|---|---|---|---|
x | x | x | x | x | x |
シェーダー作成者は、mad instrinsic を使用して、コンパイルされたシェーダー出力で mad ハードウェア命令を明示的にターゲットにすることができます。これは、正確なキーワード (keyword)で結果をマークするシェーダーで特に便利です。 狂った命令は、"融合" としてハードウェアに実装できます。これは、mul 命令を実装した後に追加命令を実装するよりも高い精度を提供します。また、mul + add として実装することもできます。
シェーダー作成者が mad instrinsic を使用して、シェーダーが正確としてマークされた結果を計算する場合、そのハードウェア上のシェーダーでその mad 組み込みのすべての使用に対して実装が一貫している限り、ハードウェアに対して mad 命令の有効な実装 (融合されているかどうか) を使用することを示します。 その後、シェーダーは、一部のハードウェアでネイティブの mad 命令 ( mul + add) を使用することで、潜在的なパフォーマンス向上を活用できます。 ネイティブの 狂った ハードウェア命令を実行した結果は、 mul を実行した後に add を実行する場合と異なる場合と異なる場合があります。 ただし、結果が何であれ、同じ操作が複数のシェーダーまたはシェーダーの異なる部分で発生するには、結果の一貫性が必要です。