sample_c (sm4 - asm)

Executa um filtro de comparação.

sample_c[_aoffimmi(u,v,w)] dest[.mask], srcAddress[.swizzle], srcResource.r, srcSampler, srcReferenceValue
Item Descrição
dest
[in] O endereço dos resultados da operação.
srcAddress
[in] Um conjunto de coordenadas de textura. Para obter mais informações, confira a instrução de amostra.
srcResource
[in] Um registro de textura. Para obter mais informações, confira a instrução de amostra. Deve ser .r swizzle.
srcSampler
[in] Um registro de amostra. Para obter mais informações, confira a instrução de amostra.
srcReferenceValue
[in] Um registro com um único componente selecionado, que é usado na comparação.

Comentários

O objetivo principal desta instrução é fornecer um bloco de construção para a filtragem de Profundidade de Porcentagem Mais Próxima. O "c" em sample_c significa Comparação.

Os operandos para o sample_c são idênticos à instrução de exemplo, exceto que há um operando de origem adicional do float32, srcReferenceValue, que deve ser um registro com um único componente selecionado ou um literal escalar.

O parâmetro srcResource deve ter um .r swizzle (vermelho). O sample_c opera exclusivamente no componente vermelho e retorna um único valor. O .r swizzle em srcResource indica que o resultado escalar é replicado para todos os componentes.

A ordem das operações é srcReferenceValue {ComparisonFunction} texel.R.

Quando um Buffer de Profundidade é definido como textura de entrada, o valor de profundidade aparece no componente vermelho.

Se essa instrução for usada com um Recurso que não seja um Texture1D/2D/2DArray/Cube/CubeArray, ela produzirá resultados indefinidos.

Quando essa instrução é executada, o hardware de amostragem usa o ComparisonFunction da Amostra atual para comparar o srcReferenceValue com o valor do componente Vermelho para o Recurso de origem em cada local de "toque" do filtro (texel) que o filtro de textura configurado atualmente cobre, com base nas coordenadas fornecidas em srcAddress.

A comparação ocorre depois que o srcReferenceValue foi quantizado para a precisão do formato de textura, exatamente da mesma forma que z é quantizado para a precisão do buffer de profundidade antes da Comparação de Profundidade no teste de visibilidade de Fusão de Saída. Isso inclui uma fixação para o intervalo de formato (por exemplo, [0..1] para um formato UNORM).

O componente Vermelho do texel de origem é comparado com o srcReferenceValue quantizado. Para texels que caem do Recurso, o valor do componente Vermelho é determinado aplicando os Modos de Endereço (e BorderColorR, se no modo Borda) da Amostra. A comparação respeita todas as regras de comparação de ponto flutuante D3D11, caso o formato de textura seja o ponto flutuante.

Cada comparação que passa retorna 1.0f como o valor do componente Vermelho para o texel, e cada comparação que falha retorna 0.0f como o valor Vermelho da textura. A filtragem ocorre exatamente como especificado pelos estados da Amostra, operando apenas no componente Vermelho e retornando um único resultado de filtro escalar para o Sombreador, replicado para todos os componentes dest mascarados.

O uso de sample_c é ortogonal a todos os outros controles de filtragem de uso geral. O sample_c funciona perfeitamente com os outros modos de filtro de uso geral. O sample_c altera o comportamento dos filtros de uso geral de modo que os valores que estão sendo filtrados se tornam 1.0f ou 0.0f devido aos resultados da comparação.

A busca de um slot de entrada que não tem nada vinculado a ele retorna 0 para todos os componentes.

Para obter mais informações, confira a instrução de amostra.

Esta instrução se aplica aos seguintes estágios de sombreador:

Sombreador de vértice Sombreador de geometria Sombreador de pixel
x

Modelo de Sombreador Mínimo

Essa função é compatível com os seguintes modelos de sombreador.

Modelo de Sombreador Com suporte
Modelo de Sombreador 5 sim
Modelo de Sombreador 4.1 sim
Modelo de Sombreador 4 sim
Modelo de Sombreador 3 (DirectX HLSL) não
Modelo de Sombreador 2 (DirectX HLSL) não
Modelo de Sombreador 1 (DirectX HLSL) não

Assembly do Modelo de Sombreador 4 (DirectX HLSL)