dp3 - ps
Calcula o produto de ponto de três componentes dos registros de origem.
Syntax
dp3 dst, src0, src1 |
---|
onde
- dst é o registro de destino.
- src0 é um registro de origem.
- src1 é um registro de origem.
Comentários
Versões do sombreador de pixel | 1_1 | 1_2 | 1_3 | 1_4 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|---|---|---|
dp3 | x | x | x | x | x | x | x | x | x |
O snippet de código a seguir mostra as operações executadas:
dest.x = dest.y = dest.z = dest.w =
(src0.x * src1.x) + (src0.y * src1.y) + (src0.z * src1.z);
Esta instrução é executada no pipeline de vetor, sempre escrevendo para os canais de cores. Para a versão 1_4, essa instrução ainda usa o pipeline de vetor, mas pode gravar em qualquer canal.
Uma instrução com uma máscara de gravação .rgb (.xyz) de registro de destino pode ser co-emitida com dp3, conforme mostrado abaixo.
dp3 r0.rgb, t0, v0 // Copy scalar result to color components
+mov r2.a, t0 // Copy alpha component from t0 in parallel
A instrução dp3 pode ser modificada usando o modificador de argumento de entrada de escala assinado de registro de origem (_bx2) aplicado aos seus argumentos de entrada se eles ainda não estiverem expandidos para o intervalo dinâmico assinado. Para um sombreador de iluminação, o modificador de instrução de saturação (_sat) geralmente é usado para fixar os valores negativos em preto, conforme mostrado no exemplo a seguir.
dp3_sat r0, t0_bx2, v0_bx2 // t0 is a bump map, v0 contains the light direction
Tópicos relacionados