SampleCmp (DirectX HLSL Texture Object)
Durchmustert eine Textur und vergleicht eine einzelne Komponente mit dem angegebenen Vergleichswert.
float Object.SampleCmp(
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¹ | x |
- Texture2DArray und TextureCubeArray sind im Shadermodell 4.1 oder höher verfügbar.
- 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.