Sample(S,float,int,float,uint)-Funktion (HLSL-Referenz)
Probieren Sie eine Texture2D mit einem optionalen Wert aus, um LoD-Werte (Sample Level of Detail) zu klammern, und gibt den Status des Vorgangs zurück.
Hinweis
Erfordert Shadermodell 5 oder höher.
Syntax
DXGI_FORMAT Sample(
in SamplerState S,
in float Location,
in int Offset,
in float Clamp,
out uint Status
);
Parameter
-
S [ in]
-
Ein Samplerzustand. Dies ist ein Objekt, das in einer Effektdatei deklariert ist, die Zustandszuweisungen enthält.
-
Standort [ In]
-
Texturkoordinaten Der Argumenttyp ist vom Texturobjekttyp abhängig.
Texture-Object-Typ Parametertyp Texture1D float Texture1DArray, Texture2D float2 Texture2DArray, Texture3D, TextureCube float3 TextureCubeArray float4 -
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 Texture3D int3 TextureCube, TextureCubeArray Nicht unterstützt -
Klammer [ In]
-
Ein optionaler Wert zum Klammern von LOD-Beispielwerten. Wenn Sie beispielsweise 2,0f für den Klammerwert übergeben, stellen Sie sicher, dass keine einzelne Stichprobe auf eine Mip-Ebene kleiner als 2,0f zugreift.
-
Status [ out]
-
Der Status des Vorgangs. Sie können nicht direkt auf den Status zugreifen. Übergeben Sie stattdessen den Status an die systeminterne Funktion CheckAccessFullyMapped. CheckAccessFullyMapped gibt TRUE zurück, wenn alle Werte aus dem entsprechenden Beispiel-, Gather- oder Load-Vorgang auf zugeordnete Kacheln in einer gekachelten Ressourcezugegriffen haben. Wenn Werte aus einer nicht zugeordneten Kachel stammen, gibt CheckAccessFullyMapped FALSE zurück.
Rückgabewert
Das Texturformat, bei dem es sich um einen der typisierten Werte handelt, die in DXGI _ FORMATaufgeführt sind.
Bemerkungen
Textursampling verwendet die Texelposition, um einen Texelwert zu suchen. Vor der Suche kann ein Offset auf die Position angewendet werden. Der Zustand des Samplers enthält die Sampling- und Filteroptionen. Diese Methode kann innerhalb eines Pixel-Shaders aufgerufen werden, wird jedoch in einem Scheitelpunkt-Shader oder einem Geometrie-Shader nicht unterstützt.
Verwenden Sie einen Offset nur auf einem ganzzahligen miplevel. Andernfalls erhalten Sie je nach Hardwareimplementierungen oder Treibereinstellungen möglicherweise unterschiedliche Ergebnisse.
Berechnen von Texelpositionen
Texturkoordinaten sind Gleitkommawerte, die auf Texturdaten verweisen, was auch als normalisierter Texturraum bezeichnet wird. Adressumbruchmodi werden in dieser Reihenfolge angewendet (Texturkoordinaten + Offsets + Umbruchmodus), um Texturkoordinaten außerhalb des [ Bereichs 0...1 zu ] ändern.
Bei Texturarrays gibt ein zusätzlicher Wert im location-Parameter einen Index in einem Texturarray an. Dieser Index wird als skalierter float-Wert behandelt (anstelle des normalisierten Raums für Standardtexturkoordinaten). Die Konvertierung in einen ganzzahligen Index erfolgt in der folgenden Reihenfolge (float + round-to-nearest-even integer + Klammer an den Arraybereich).
Anwenden von Texturkoordinatenoffsets
Der offset-Parameter ändert die Texturkoordinaten im Texelraum. Obwohl Texturkoordinaten normalisierte Gleitkommazahlen sind, wendet der Offset einen ganzzahligen Offset an. Beachten Sie auch, dass die Texturoffsets statisch sein müssen.
Das zurückgegebene Datenformat wird durch das Texturformat bestimmt. Wenn die Texturressource z. B. mit dem _ DXGI FORMAT _ A8B8G8R8 _ UNORM _ SRGB-Format definiert wurde, konvertiert der Samplingvorgang die stichprobenierten Texel von Gamma 2.0 in 1.0, filtert und schreibt das Ergebnis als Gleitkommawert im Bereich [ 0..1. ]