mad-Funktion
Führt einen arithmetischen Multi-/Add-Vorgang für drei Werte aus.
Syntax
numeric mad(
in numeric mvalue,
in numeric avalue,
in numeric bvalue
);
Parameter
-
mvalue [in]
-
Typ: numerisch
Der Multiplikationswert.
-
avalue [in]
-
Typ: numerisch
Der erste Additionswert.
-
bvalue [in]
-
Typ: numerisch
Der zweite Additionswert.
Rückgabewert
Typ: numerisch
Das Ergebnis von mvalue * avalue + bvalue.
Bemerkungen
Minimales Shadermodell
Diese Funktion wird in den folgenden Shadermodellen unterstützt.
Shadermodell | Unterstützt |
---|---|
Shadermodell 5 und höher | ja |
Diese Funktion wird in den folgenden Shadertypen unterstützt:
Scheitelpunkt | Hull | Domain | Geometrie | Pixel | Compute |
---|---|---|---|---|---|
x | x | x | x | x | x |
Shaderautoren können die verrückte Instrinsik verwenden, um explizit auf die mad Hardware-Anweisung in der kompilierten Shaderausgabe zu zielen, was besonders bei Shadern nützlich ist, die Ergebnisse mit dem präzisen Schlüsselwort (keyword) markieren. Die verrückte Anweisung kann in der Hardware entweder als "fused" implementiert werden, was eine höhere Genauigkeit bietet als die Implementierung einer mul-Anweisung gefolgt von einer Add-Anweisung , oder als mul + add.
Wenn Shaderautoren die verrückte Instrinsik verwenden, um ein Ergebnis zu berechnen, das der Shader als präzise markiert hat, geben sie der Hardware an, jede gültige Implementierung der verrückten Anweisung (fused oder nicht) zu verwenden, solange die Implementierung für alle Verwendungen dieses verrückten Intrins in jedem Shader auf dieser Hardware konsistent ist. Shader können dann potenzielle Leistungsverbesserungen nutzen, indem sie eine native verrückte Anweisung (im Gegensatz zu mul + add) auf einer Hardware verwenden. Das Ergebnis einer nativen , verrückten Hardware-Anweisung kann oder nicht anders sein als die Ausführung eines Mul gefolgt von einem Add. Unabhängig vom Ergebnis muss das Ergebnis jedoch konsistent sein, damit derselbe Vorgang in mehreren Shadern oder verschiedenen Teilen eines Shaders ausgeführt wird.
Siehe auch