mad-Funktion
Führt eine arithmetische Multiplikations-/Add-Operation 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.
Hinweise
Shader-Mindestmodell
Diese Funktion wird in den folgenden Shadermodellen unterstützt.
| Shadermodell | Unterstützt |
|---|---|
| Shadermodell 5 und höhere Shadermodelle | Ja |
Diese Funktion wird in den folgenden Shadertypen unterstützt:
| Scheitelpunkt | Rumpf | Domain | Geometrie | Pixel | Compute |
|---|---|---|---|---|---|
| x | x | x | x | x | x |
Shaderautoren können mithilfe der instrinsischen Instrinsik explizit auf die unbrauchbare Hardwareanweisung in der kompilierten Shaderausgabe abzielen. Dies ist besonders nützlich bei Shadern, die Ergebnisse mit dem schlüsselwort precise markieren. Die tollsinnige Anweisung kann in der Hardware entweder als "fused" implementiert werden, was eine höhere Genauigkeit als die Implementierung einer mul-Anweisung gefolgt von einer add-Anweisung bietet, oder als ein mul + add.
Wenn Shaderautoren die instrinsische Farbe verwenden, um ein Ergebnis zu berechnen, das der Shader als präzise markiert hat, geben sie der Hardware an, eine gültige Implementierung der irrsinnigen Anweisung zu verwenden (fused oder nicht), solange die Implementierung für alle Verwendungen dieser intrinsischen Intrinsik in einem Shader auf dieser Hardware konsistent ist. Shader können dann die Vorteile potenzieller Leistungsverbesserungen nutzen, indem sie eine native tollanweisung (im Gegensatz zu mul + add) auf einigen Hardwarekomponenten verwenden. Das Ergebnis der Ausführung einer nativen rauschenden Hardwareanweisung unterscheidet sich möglicherweise von der Ausführung eines Muls gefolgt von einer add -Anweisung. Unabhängig vom Ergebnis muss das Ergebnis jedoch konsistent sein, damit der gleiche Vorgang in mehreren Shadern oder verschiedenen Teilen eines Shaders ausgeführt wird.