setp_comp - vs
Defina o registro de predicado.
Sintaxe
setp_comp dst, src0, src1 |
---|
Em que:
_comp é uma comparação por canal entre os dois registros de origem. Pode ser um dos seguintes:
Sintaxe Comparação _Gt Maior que _Tenente Menor que _Ge Maior ou igual _Le Inferior ou igual _Eq Igual a _Ne É diferente de dst é o registro de registro de predicado , p0.
src0 é um registro de origem.
src1 é um registro de origem.
Comentários
Versões do sombreador de vértice | 1_1 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|
setp_comp | x | x | x | x |
Esta instrução funciona como:
per channel in destination write mask
{
dst.channel = src0.channel cmp src1.channel
}
Para cada canal que pode ser gravado de acordo com a máscara de gravação de destino, salve o resultado booliano da operação de comparação entre os canais correspondentes de src0 e src1 (depois que os swizzles do modificador de origem tiverem sido resolvidos).
Os registros de origem permitem que os swizzles de componente arbitrários sejam especificados.
O registro de destino permite máscaras de gravação arbitrárias.
O registro de dest deve ser o registro de predicado.
Aplicando o Registro de Predicado
Depois que o registro de predicado tiver sido inicializado com setp, ele poderá ser usado para controlar uma instrução por componente. Esta é a sintaxe:
([!]p0[.swizzle]) instruction dest, srcReg, ...
Em que:
- [!] é um NOT booliano opcional
- p0 é o registro de predicado
- [.swizzle] é um swizzle opcional a ser aplicado ao conteúdo do registro de predicado antes de usá-lo para mascarar a instrução. Os swizzles disponíveis são: .xyzw (padrão quando nenhum especificado) ou qualquer swizzle de replicação: .x/.r, .y/.g, .z/.b ou .a/.w.
- instrução é qualquer instrução aritmética ou textura. Não pode ser uma instrução de controle de fluxo estático ou dinâmico.
- dest, srcReg, ... são os registros exigidos pela instrução
Supondo que o registro de predicado tenha sido configurado com valores de componente (true, true, false, false), ele pode ser aplicado a esta instrução:
// given r0 = 0,0,1,1
// given r1 = 1,1,0,0
setp_le p0, r0, r1
(p0) add r2, r3, r4
para executar uma adição de dois componentes.
r2.x = r3.x + r4.x
r2.y = r3.y + r4.y
Os componentes x e y do r2 não serão gravados, pois o registro de predicado continha false nos componentes z e w.
Aplicar o registro de predicado a uma instrução aritmética ou de textura aumenta sua contagem de slots de instrução em 1.
O registro de predicado também pode ser aplicado às instruções if pred - vs, callnz pred - vs and breakp - vs . Essas instruções de controle de fluxo não têm nenhum aumento na contagem de slots de instrução ao usar o registro de predicado.
Tópicos relacionados