SampleCmp (DirectX HLSL-Texturobjekt)

Probieren Sie eine Textur aus, und vergleicht eine einzelne Komponente mit dem angegebenen Vergleichswert.

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

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

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

Parameter

Objekt

Jeder Texturobjekttyp (mit Ausnahme von Texture2DMS, Texture2DMSArray oder Texture3D).

S

[in ] einem Sampler-Vergleichszustand, bei dem es sich um den Samplerzustand plus einen Vergleichszustand (eine Vergleichsfunktion und einen Vergleichsfilter) handelt. Ausführliche Informationen und ein Beispiel finden Sie unter sampler type (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 jedes abgerufene Texel (basierend auf der Samplerkonfiguration des Filtermodus) führt SampleCmp einen Vergleich des z-Werts (dritte Eingabekomponente) aus dem Shader mit dem Texelwert durch (1, wenn der Vergleich erfolgreich ist; andernfalls 0). SampleCmp kombiniert dann diese 0- und 1-Ergebnisse für jedes Texel wie bei der normalen Texturfilterung (kein Durchschnitt) und gibt den resultierenden [ ] 0,.1-Wert an den Shader zurück.

Hinweise

Die Vergleichsfilterung bietet einen grundlegenden Filtervorgang, der für die Filterung mit näherer Tiefe in Prozent nützlich ist.

Wenn Sie diese Methode für eine Gleitkommaressource verwenden (anstelle eines mit Vorzeichen normalisierten oder nicht normalisierten Formats), wird der Vergleichswert nicht automatisch zwischen 0,0 und 1,0 gezeichnet. Daher kann eine manuelle Klammer des Vergleichswerts für gängige Shadowingtechniken erforderlich sein.

Verwenden Sie einen Offset nur auf einem ganzzahligen miplevel. Andernfalls erhalten Sie je nach Hardwareimplementierungen oder Treibereinstellungen möglicherweise unterschiedliche Ergebnisse.

Shader-Mindestmodell

Diese Funktion wird in den folgenden Shadermodellen unterstützt.

Vs _ 4 _ 0 vergleicht _ 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 Unter Implementieren von Schattenpuffern für Direct3D-Featureebene 9 beschriebenenTechniken verwenden.

Texturobjekt