sample_c (sm4 - asm)

Führt einen Vergleichsfilter aus.

sample_c[_aoffimmi(u,v,w)] dest[.mask], srcAddress[.swizzle], srcResource.r, srcSampler, srcReferenceValue
Element Beschreibung
dest
[in] Die Adresse der Ergebnisse des Vorgangs.
srcAddress
[in] Eine Reihe von Texturkoordinaten. Weitere Informationen finden Sie in der Beispielanweisung.
srcResource
[in] Ein Texturregister. Weitere Informationen finden Sie in der Beispielanweisung. Muss .r swizzle sein.
srcSampler
[in] Ein Samplerregister. Weitere Informationen finden Sie in der Beispielanweisung.
srcReferenceValue
[in] Ein Register mit einer einzelnen ausgewählten Komponente, die im Vergleich verwendet wird.

Hinweise

Der Hauptzweck dieser Anweisung besteht darin, einen Baustein für die Filterung der prozentualen Tiefe zu liefern. Das „c“ in sample_c steht für „Vergleich“.

Die Operanden von sample_c sind identisch mit denen der sample-Anweisung, außer dass es einen zusätzlichen float32-Quelloperanden gibt, srcReferenceValue, der ein Register mit einer ausgewählten Komponente oder ein skalares Literal sein muss.

Der Parameter srcResource muss einen .r (rot) Swizzle aufweisen. sample_c wird ausschließlich für die rote Komponente ausgeführt und gibt einen einzelnen Wert zurück. Der .r swizzle auf srcResource gibt an, dass das skalare Ergebnis auf alle Komponenten repliziert wird.

Die Reihenfolge der Vorgänge lautet srcReferenceValue {ComparisonFunction} texel.R.

Wenn ein Tiefenpuffer als Eingabetextur festgelegt ist, wird der Tiefenwert in der roten Komponente angezeigt.

Wenn diese Anweisung mit einer Ressource verwendet wird, die keine Texture1D/2D/2DArray/Cube/CubeArray ist, erzeugt sie nicht definierte Ergebnisse.

Wenn diese Anweisung ausgeführt wird, verwendet die Samplinghardware die ComparisonFunction des aktuellen Samplers, um srcReferenceValue mit dem Wert der roten Komponente für die Quellressource an jedem Filterspeicherort (Texel) zu vergleichen, den der aktuell konfigurierte Texturfilter abdeckt, basierend auf den bereitgestellten Koordinaten in srcAddress.

Der Vergleich tritt auf, nachdem srcReferenceValue auf die Genauigkeit des Texturformats quantisiert wurde, genau so, wie z auf tiefenpuffergenauigkeit quantisiert wird, bevor der Tiefenvergleich beim Ausgabezusammenführungs-Sichtbarkeitstest erfolgt. Dazu gehört eine Klammer zum Formatbereich (z. B. [0..1] für ein UNORM-Format).

Die rote Komponente des Quell texel wird mit der quantisierten srcReferenceValueverglichen. Für Texel, die von der Ressource fallen, wird der Wert der roten Komponente durch Anwenden der Adressmodi (und BorderColorR im Rahmenmodus) aus dem Sampler bestimmt. Der Vergleich beachtet alle D3D11 Fließkomma-Vergleichsregeln, wenn das Texturformat Fließkomma ist.

Jeder Übergänge gibt 1,0f als Rot-Komponentenwert für das Texel zurück, und jeder Vergleich, der fehlschlägt, gibt 0,0f als Rot-Wert für die Textur zurück. Die Filterung erfolgt dann genau wie durch die Sampler-Zustände angegeben, die nur in der Roten Komponente ausgeführt wird und ein einzelnes skalares Filterergebnis zurück an den Shader zurückgibt, repliziert in alle maskierten Dest-Komponenten.

Die Verwendung von sample_c ist orthogonal für alle anderen allgemeinen Filtersteuerelemente. sample_c arbeitet nahtlos mit den anderen allgemeinen Filtermodi zusammen. sample_c ändert das Verhalten der allgemeinen Filter so, dass die gefilterten Werte aufgrund von Vergleichsergebnissen zu 1,0f oder 0,0f werden.

Das Abrufen von einem Eingabeplatz, der nichts an ihn gebunden hat, gibt 0 für alle Komponenten zurück.

Weitere Informationen finden Sie in der Beispielanweisung.

Diese Anweisung gilt für die folgenden Shaderphasen:

Vertex-Shader Geometrie-Shader Pixel-Shader
x

Minimales Shadermodell

Diese Funktion wird in den folgenden Shadermodellen unterstützt.

Shadermodell Unterstützt
Shadermodell 5 ja
Shadermodell 4.1 ja
Shadermodell 4 ja
Shader Model 3 (DirectX HLSL) Nein
Shader Model 2 (DirectX HLSL) Nein
Shadermodell 1 (DirectX HLSL) Nein

Shadermodell 4-Assembly (DirectX HLSL)