Partager via


SampleCmp (Objet de texture HLSL DirectX)

Échantillonne une texture et compare un seul composant à la valeur de comparaison spécifiée.

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

La comparaison est une comparaison à composant unique entre le premier composant stocké dans la texture et la valeur de comparaison passée dans la méthode.

Cette méthode ne peut être appelée qu’à partir d’un nuanceur de pixels ; il n’est pas pris en charge dans un nuanceur de vertex ou de géométrie.

Paramètres

Objet

N’importe quel type d’objet de texture (à l’exception de Texture2DMS, Texture2DMSArray ou Texture3D).

S

[in] État de comparaison de l’échantillonneur, qui est l’état de l’échantillonneur plus un état de comparaison (une fonction de comparaison et un filtre de comparaison). Consultez le type d’échantillonneur pour plus d’informations et un exemple.

Emplacement

[in] Coordonnées de texture. Le type d’argument dépend du type texture-objet.

type Texture-Object Type de paramètre
Texture1D float
Texture1DArray, Texture2D float2
Texture2DArray¹, TextureCube float3
TextureCubeArray¹ float4

CompareValue

Valeur à virgule flottante à utiliser comme valeur de comparaison.

Compenser

[in] Décalage de coordonnées de texture facultatif, qui peut être utilisé pour n’importe quel type d’objet de texture ; le décalage est appliqué à l’emplacement avant l’échantillonnage. Les décalages de texture doivent être statiques. Le type d’argument dépend du type texture-objet. Pour plus d’informations, consultez Application de décalages de coordonnées de texture.

type Texture-Object Type de paramètre
Texture1D, Texture1DArray int
Texture2D, Texture2DArray¹ int2
TextureCube, TextureCubeArray¹ Non prise en charge

Valeur renvoyée

Retourne une valeur à virgule flottante dans la plage [0..1].

Pour chaque texel extrait (en fonction de la configuration de l’échantillonneur du mode de filtre), SampleCmp effectue une comparaison de la valeur z (3e composant d’entrée) du nuanceur par rapport à la valeur texel (1 si la comparaison réussit ; sinon 0). SampleCmp mélange ensuite ces résultats 0 et 1 pour chaque texel comme dans le filtrage de texture normal (et non une moyenne) et retourne la valeur [0,1] obtenue au nuanceur.

Notes

Le filtrage de comparaison fournit une opération de filtrage de base qui est utile pour le filtrage en pourcentage plus proche de la profondeur.

Lors de l’utilisation de cette méthode sur une ressource à virgule flottante (au lieu d’un format normalisé signé ou non signé-normalisé), la valeur de comparaison n’est pas automatiquement limitée entre 0,0 et 1,0. Par conséquent, une fixation manuelle de la valeur de comparaison peut être nécessaire pour les techniques courantes d’ombre.

Utilisez un décalage uniquement à un miplevel entier ; sinon, vous pouvez obtenir des résultats différents en fonction de l’implémentation matérielle ou des paramètres du pilote.

Modèle de nuanceur minimal

Cette fonction est prise en charge dans les modèles de nuanceur suivants.

vs_4_0 vs_4_1² ps_4_0 ps_4_1² gs_4_0 gs_4_1²
x
  1. Texture2DArray et TextureCubeArray sont disponibles dans le modèle de nuanceur 4.1 ou ultérieur.
  2. Le modèle de nuanceur 4.1 est disponible dans Direct3D 10.1 ou version ultérieure.

Notes

SampleCmp est également disponible dans ps 4_0_level_9_1 et 4_0_level_9_3 lorsque vous utilisez les techniques décrites dans Implémentation de mémoires tampons fantômes pour le niveau de fonctionnalité Direct3D 9.

Texture-Objet