Registros de ps_3_0

Sombreadores de pixel dependem de registros para obter dados de vértice, para gerar dados de pixel, para manter resultados temporários durante cálculos e para identificar estágios de amostragem de textura. Há vários tipos de registros, cada um com uma funcionalidade exclusiva. Esta seção contém informações de referência para os registros de entrada e saída implementados pelo sombreador de pixel versão 3_0.

Novos Registros

Registro de Entrada

Os Registros de Entrada (v#) agora são totalmente flutuantes e o Registro de Coordenadas de Textura(t#) foi consolidado nele. O dcl_semantics (sm3 - ps asm) na parte superior do sombreador é usado para descrever o que está contido em um Input_Register específico. Uma semântica para os tipos de pixel é introduzida (análoga ao lado do vértice) para esse modelo. Nenhuma fixação é executada quando os registros de entrada são definidos como cores (como coordenadas de textura). A avaliação dos registros definidos como cor difere das coordenadas de textura durante a multiamostragem.

Registro Facial

O registro facial (vFace) é novo para esse modelo. Este é um registro escalar de ponto flutuante que eventualmente conterá a área primitiva. No ps_3_0, no entanto, somente o sinal desse registro é válido. Portanto, se o valor for menor que zero (o bit de sinal é definido como negativo), o primitivo será a face traseira (a área é negativa, no sentido anti-horário). Portanto, em ps_3_0 faz sentido comparar esse registro com 0 (> 0 ou < 0). Dentro do sombreador de pixel, o aplicativo pode tomar uma decisão sobre qual técnica de iluminação usar. A iluminação de dois lados pode ser alcançada dessa forma. Esse registro requer uma declaração, portanto, o uso não declarado será sinalizado como um erro. Para linhas e primitivos de ponto, esse registro é indefinido. O registro facial só pode ser usado como condição com as seguintes instruções: setp_comp - ps, if_comp - ps ou break_comp - ps.

Registro de Contador de Loop

O Registro de Contador de Loop (aL) é novo para esse modelo. Ele é incrementado automaticamente em cada execução do loop - ps/endloop - bloco ps . Ele pode ser usado no bloco para endereçamento relativo, se necessário. É inválido usar o Registro de Contador de Loop fora do loop.

Registro de Posição

O Registro de Posição (vPos) é novo para esse modelo. Ele contém os pixels atuais (x, y) nos canais correspondentes. Os canais (z, w) são indefinidos. Esse registro requer uma declaração, portanto, o uso não declarado será sinalizado como um erro. Quando declarado, esse registro deve ter exatamente uma das seguintes máscaras: .x, .y, .xy.

Tipos de registro de entrada

Registre-se Nome Contagem R/W # Portas de leitura # Leituras/inst Dimensão RelAddr Padrões Requer DCL
V # Registro de Entrada 10 R 1 Ilimitado 4 Al Nenhum Sim
R # Registro Temporário 32 R/W 3 Ilimitado 4 Não Nenhum Não
c# Registro float constante 224 R 1 Ilimitado 4 Não 0000 Não
Eu # Registro inteiro constante 16 R 1 1 4 Não 0000 Não
B # Registro booliano constante 16 R 1 1 1 Não FALSE Não
p0 Registro de predicado 1 R 1 1 1 Não Nenhum Não
s # Sampler (Direct3D 9 asm-ps) 16 R 1 1 4 Não Confira a Observação 1 Sim
vFace Face_Register 1 R 1 Ilimitado 1 Não Nenhum Sim
vPos Position_Register 1 R 1 Ilimitado 4 Não Nenhum Sim
Al Loop_Counter_Register 1 R 1 Ilimitado 1 n/d Nenhum Não

 

Observações:

  • Os padrões para pesquisas de amostragem existem, mas os valores dependem do formato de textura.

O número de readports é o número de registros diferentes (para cada tipo de registro) que podem ser lidos em uma única instrução.

Tipos de registro de saída

Registre-se Nome Contagem R/W Dimensão RelAddr Padrões Requer DCL
Oc # Registro de Cor de Saída Consulte Texturas de vários elementos (Direct3D 9) W 4 Não Nenhum Não
oDepth Registro de Profundidade de Saída 1 W 1 Não Nenhum Não

 

Registros