Condividi tramite


SampleCmp (oggetto Texture DirectX HLSL)

Esempi di una trama e confronta un singolo componente rispetto al valore di confronto specificato.

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

Il confronto è un confronto a componente singolo tra il primo componente archiviato nella trama e il valore di confronto passato al metodo.

Questo metodo può essere richiamato solo da un pixel shader; non è supportato in un vertice o in uno shader geometry.

Parametri

Oggetto

Qualsiasi tipo di oggetto trama (ad eccezione di Texture2DMS, Texture2DMSArray o Texture3D).

S

[in] Stato di confronto di esempio, che è lo stato del campione più uno stato di confronto (una funzione di confronto e un filtro di confronto). Per informazioni dettagliate e un esempio, vedere il tipo di sampler .

Posizione

[in] Coordinate della trama. Il tipo di argomento dipende dal tipo di oggetto trama.

Texture-Object tipo Tipo di parametro
Trama1D float
Texture1DArray, Texture2D float2
Texture2DArray¹, TextureCube float3
TextureCubeArray¹ float4

CompareValue

Valore a virgola mobile da usare come valore di confronto.

Compensare

[in] Offset di coordinate di trama facoltativo, che può essere usato per qualsiasi tipo di oggetto trama; l'offset viene applicato alla posizione prima del campionamento. Gli offset di trama devono essere statici. Il tipo di argomento dipende dal tipo di oggetto trama. Per altre informazioni, vedere Applicazione degli offset delle coordinate della trama.

Texture-Object tipo Tipo di parametro
Texture1D, Texture1DArray INT
Texture2D, Texture2DArray¹ int2
TextureCube, TextureCubeArray¹ Non supportato

Valore restituito

Restituisce un valore a virgola mobile nell'intervallo [0..1].

Per ogni texel recuperato (in base alla configurazione del sampler della modalità filtro), SampleCmp esegue un confronto del valore z (3° componente di input) dal shader rispetto al valore texel (1 se il confronto passa; in caso contrario 0). SampleCmp combina quindi questi risultati 0 e 1 per ogni texel insieme come nel normale filtro trama (non una media) e restituisce il valore [0.1] risultante allo shader.

Commenti

Il filtro di confronto offre un'operazione di filtro di base utile per il filtro più vicino alla percentuale.

Quando si usa questo metodo in una risorsa a virgola mobile (anziché un formato normalizzato con segno o normalizzato), il valore di confronto non viene bloccato automaticamente tra 0,0 e 1.0. Pertanto, un blocco manuale del valore di confronto può essere necessario per le tecniche di ombreggiatura comuni.

Usare un offset solo a un miplevel intero; in caso contrario, è possibile ottenere risultati diversi a seconda dell'implementazione hardware o delle impostazioni del driver.

Modello di shader minimo

Questa funzione è supportata nei modelli shader seguenti.

vs_4_0 vs_4_1² ps_4_0 ps_4_1² gs_4_0 gs_4_1²
x
  1. Texture2DArray e TextureCubeArray sono disponibili in Shader Model 4.1 o versione successiva.
  2. Shader Model 4.1 è disponibile in Direct3D 10.1 o versione successiva.

Nota

SampleCmp è disponibile anche in ps 4_0_level_9_1 e 4_0_level_9_3 quando si usano le tecniche descritte in Implementazione di buffer shadow per il livello di funzionalità Direct3D 9.

Texture-Object