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 |