Compartilhar via


SampleCmp (objeto de textura HLSL directx)

Amostra uma textura e compara um único componente com o valor de comparação especificado.

float Object.SampleCmp(
SamplerComparisonState S,
Float Location,
float CompareValue,
[int Offset]
);
 

A comparação é uma comparação de componente único entre o primeiro componente armazenado na textura e o valor de comparação passado para o método .

Esse método só pode ser invocado de um sombreador de pixel; Não há suporte para ele em um sombreador de vértice ou geometria.

Parâmetros

Objeto

Qualquer tipo de objeto de textura (exceto Texture2DMS, Texture2DMSArray ou Texture3D).

S

[in] Um estado de comparação de amostra, que é o estado do sampler mais um estado de comparação (uma função de comparação e um filtro de comparação). Consulte o tipo de amostra para obter detalhes e um exemplo.

Localização

[in] As coordenadas de textura. O tipo de argumento depende do tipo texture-object.

Tipo de Texture-Object Tipo de parâmetro
Texture1D FLOAT
Texture1DArray, Texture2D float2
Texture2DArray¹, TextureCube float3
TextureCubeArray¹ float4

CompareValue

Um valor de ponto flutuante a ser usado como um valor de comparação.

Deslocamento

[in] Um deslocamento de coordenada de textura opcional, que pode ser usado para qualquer tipo de objeto de textura; o deslocamento é aplicado ao local antes da amostragem. Os deslocamentos de textura precisam ser estáticos. O tipo de argumento depende do tipo texture-object. Para obter mais informações, consulte Aplicando deslocamentos de coordenadas de textura.

Tipo de Texture-Object Tipo de parâmetro
Texture1D, Texture1DArray INT
Texture2D, Texture2DArray¹ int2
TextureCube, TextureCubeArray¹ Sem suporte

Valor Retornado

Retorna um valor de ponto flutuante no intervalo [0..1].

Para cada texel buscado (com base na configuração do sampler do modo de filtro), SampleCmp executa uma comparação do valor z (3º componente de entrada) do sombreador em relação ao valor texel (1 se a comparação for aprovada; caso contrário, 0). SampleCmp combina esses resultados 0 e 1 para cada texel como na filtragem de textura normal (não uma média) e retorna o valor resultante [0,.1] para o sombreador.

Comentários

A filtragem de comparação fornece uma operação básica de filtragem que é útil para filtragem de profundidade mais próxima de porcentagem.

Ao usar esse método em um recurso de ponto flutuante (em vez de um formato normalizado com sinal ou normalizado sem sinal), o valor de comparação não é fixado automaticamente entre 0,0 e 1,0. Portanto, um grampo manual do valor de comparação pode ser necessário para técnicas comuns de sombreamento.

Use um deslocamento somente em um miplevel inteiro; caso contrário, você poderá obter resultados diferentes dependendo da implementação de hardware ou das configurações do driver.

Modelo de sombreador mínimo

Essa função tem suporte nos seguintes modelos de sombreador.

vs_4_0 vs_4_1² ps_4_0 ps_4_1² gs_4_0 gs_4_1²
x
  1. Texture2DArray e TextureCubeArray estão disponíveis no Modelo de Sombreador 4.1 ou superior.
  2. O Modelo de Sombreador 4.1 está disponível no Direct3D 10.1 ou superior.

Observação

SampleCmp também está disponível em ps 4_0_level_9_1 e 4_0_level_9_3 quando você usa as técnicas descritas em Implementando buffers de sombra para o nível 9 do recurso Direct3D.

Objeto Texture-Object