Modificadores para ps_2_0 e superior

Os modificadores de instrução afetam o resultado da instrução antes que ela seja gravada no registro de destino.

Esta seção contém informações de referência para os modificadores de instrução implementados pelo sombreador de pixel versão 2_0 e superior.

Name Sintaxe 2_0 2_x 2_sw 3_0 3_sw
Centróide _Centróide x x x x x
Partial_Precision _Pp x x x x x
Saturar _Sentado x x x x x

 

Centróide

O modificador de centroide é um modificador opcional que fixa a interpolação de atributo dentro do intervalo da primitiva quando um centro de pixels de várias várias formas não é coberto pelo primitivo. Isso pode ser visto na Amostragem centroide.

Você pode aplicar o modificador centroide a uma instrução de assembly, conforme mostrado aqui:

dcl_texcoord0_centroid v0

Você também pode aplicar o modificador centroide a uma semântica, conforme mostrado aqui:

float4 TexturePointCentroidPS( float4 TexCoord : TEXCOORD0_centroid ) : COLOR0
{
    return tex2D( PointSampler, TexCoord );
}

Além disso, qualquer Registro de Cor de Entrada (v#) declarado com uma semântica de cor terá automaticamente o centroide aplicado. Não há garantia de que os gradientes calculados a partir de atributos com amostra de centroide sejam precisos.

Precisão parcial

O modificador de instrução de precisão parcial (_pp) indica áreas em que a precisão parcial é aceitável, desde que a implementação subjacente dê suporte a ela. As implementações são sempre livres para ignorar o modificador e executar as operações afetadas com precisão total.

O modificador _pp pode ocorrer em dois contextos:

  • Em uma declaração de coordenada de textura para habilitar a passagem de coordenadas de textura para o sombreador de pixel na forma de precisão parcial. Isso permite, por exemplo, o uso de coordenadas de textura para retransmitir dados de cor para o sombreador de pixel, que pode ser mais rápido com precisão parcial do que com precisão total em algumas implementações. Na ausência desse modificador, as coordenadas de textura devem ser passadas com precisão total.
  • Em qualquer instrução, incluindo instruções de carga de textura. Isso indica que a implementação tem permissão para executar a instrução com precisão parcial e armazenar um resultado de precisão parcial. Na ausência de um modificador explícito, a instrução deve ser executada com precisão total (independentemente da precisão de entrada).

Exemplos:

dcl_texcoord0_pp t1
cmp_pp r0, r1, r2, r3

Saturar

O modificador de instrução saturada (_sat) satura (ou fixa) o resultado da instrução para o intervalo [0, 1] antes de gravar no registro de destino.

O modificador de instrução _sat pode ser usado com qualquer instrução, exceto frc - ps, sincos - ps e qualquer instrução tex*.

Para ps_2_0, ps_2_x e ps_2_sw, o modificador de instrução _sat não pode ser usado com instruções de gravação em nenhum registro de saída (Registro de Cor de Saída ou Registro de Profundidade de Saída). Essa restrição não se aplica a ps_3_0 e superiores.

Exemplo:

dp3_sat r0, v0, c1

Instruções de sombreador de pixel