Função mad
Executa uma operação aritmética de multiplicação/adição em três valores.
numeric mad(
in numeric mvalue,
in numeric avalue,
in numeric bvalue
);
-
mvalue [in]
-
Tipo: numérico
O valor de multiplicação.
-
avalue [in]
-
Tipo: numérico
O primeiro valor de adição.
-
bvalue [in]
-
Tipo: numérico
O segundo valor de adição.
Tipo: numérico
O resultado de mvalue * avalue + bvalue.
Essa função tem suporte nos modelos de sombreador a seguir.
Modelo de Sombreador | Com suporte |
---|---|
Modelo de sombreador 5 e modelos de sombreador superior | sim |
Essa função tem suporte nos seguintes tipos de sombreadores:
Vértice | Casco | Domínio | Geometry | Pixel | Computação |
---|---|---|---|---|---|
x | x | x | x | x | x |
Os autores de sombreador podem usar o instrinsic louco para direcionar explicitamente a instrução de hardware louco na saída do sombreador compilado, o que é particularmente útil com sombreadores que marcam resultados com o palavra-chave preciso. A instrução louca pode ser implementada no hardware como "fundida", que oferece maior precisão do que implementar uma instrução mul seguida de uma instrução add , ou como uma mula + adicionar.
Se os autores de sombreador usarem o instrinsic louco para calcular um resultado que o sombreador marcou como preciso, eles indicarão ao hardware para usar qualquer implementação válida da instrução louca (fundida ou não), desde que a implementação seja consistente para todos os usos desse intrínseco louco em qualquer sombreador nesse hardware. Os sombreadores podem aproveitar possíveis melhorias de desempenho usando uma instrução louca nativa (versus mul + add) em algum hardware. O resultado da execução de uma instrução de hardware louco nativo pode ou não ser diferente de executar uma mula seguida por um complemento. No entanto, seja qual for o resultado, o resultado deve ser consistente para que a mesma operação ocorra em vários sombreadores ou em diferentes partes de um sombreador.