SampleCmp (DirectX HLSL Texture Object)

Durchmustert eine Textur und vergleicht eine einzelne Komponente mit dem angegebenen Vergleichswert.

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

Der Vergleich ist ein Einzelkomponentenvergleich zwischen der ersten Komponente, die in der Textur gespeichert ist, und dem an die -Methode übergebenen Vergleichswert.

Diese Methode kann nur über einen Pixel-Shader aufgerufen werden. Sie wird in einem Scheitelpunkt- oder Geometrie-Shader nicht unterstützt.

Parameter

Objekt

Beliebige Texturobjekttypen (außer Texture2DMS, Texture2DMSArray oder Texture3D).

S

[in] Ein Samplervergleichszustand, bei dem es sich um den Samplerzustand plus einen Vergleichszustand (eine Vergleichsfunktion und einen Vergleichsfilter) handelt. Details und ein Beispiel finden Sie im Samplertyp .

Lage

[in] Die Texturkoordinaten. Der Argumenttyp ist vom Texturobjekttyp abhängig.

Texture-Object Typ Parametertyp
Texture1D float
Texture1DArray, Texture2D float2
Texture2DArray¹, TextureCube float3
TextureCubeArray¹ float4

CompareValue

Ein Gleitkommawert, der als Vergleichswert verwendet werden soll.

Offset

[in] Ein optionaler Texturkoordinatenoffset, der für jeden Texturobjekttyp verwendet werden kann; der Offset wird vor der Stichprobenentnahme auf die Position angewendet. Die Texturoffsets müssen statisch sein. Der Argumenttyp ist vom Texturobjekttyp abhängig. Weitere Informationen finden Sie unter Anwenden von Texturkoordinatenoffsets.

Texture-Object Typ Parametertyp
Texture1D, Texture1DArray INT
Texture2D, Texture2DArray¹ int2
TextureCube, TextureCubeArray¹ Nicht unterstützt

Rückgabewert

Gibt einen Gleitkommawert im Bereich [0..1] zurück.

Für jeden abgerufenen Texel (basierend auf der Samplerkonfiguration des Filtermodus) führt SampleCmp einen Vergleich des z-Werts (3. Komponente der Eingabe) aus dem Shader mit dem Texelwert durch (1, wenn der Vergleich durchläuft; andernfalls 0). SampleCmp mischt dann diese 0 und 1 Ergebnisse für jeden Texel wie bei der normalen Texturfilterung (nicht einen Durchschnitt) zusammen und gibt den resultierenden [0..1]-Wert an den Shader zurück.

Bemerkungen

Die Vergleichsfilterung stellt einen einfachen Filtervorgang bereit, der für die prozentuale Tiefere Filterung nützlich ist.

Bei Verwendung dieser Methode für eine Gleitkommaressource (anstelle eines mit Vorzeichen normalisierten oder nicht signierten normalisierten Formats) wird der Vergleichswert nicht automatisch zwischen 0,0 und 1,0 eingespannt. Daher kann für gängige Schattentechniken eine manuelle Klemmung des Vergleichswerts erforderlich sein.

Verwenden Sie einen Offset nur auf einer ganzzahligen MIP-Ebene. Andernfalls können Sie je nach Hardwareimplementierung oder Treibereinstellungen unterschiedliche Ergebnisse erzielen.

Minimales Shadermodell

Diese Funktion wird in den folgenden Shadermodellen unterstützt.

vs_4_0 vs_4_1² ps_4_0 ps_4_1² gs_4_0 gs_4_1²
x
  1. Texture2DArray und TextureCubeArray sind im Shadermodell 4.1 oder höher verfügbar.
  2. Shadermodell 4.1 ist in Direct3D 10.1 oder höher verfügbar.

Hinweis

SampleCmp ist auch in ps 4_0_level_9_1 und 4_0_level_9_3 verfügbar, wenn Sie die Techniken verwenden, die unter Implementieren von Schattenpuffern für Direct3D-Featureebene 9 beschrieben werden.

Textur-Objekt