Sample(S,float,int,float)-Funktion (HLSL-Referenz)
Beispiele für eine Textur2D mit einem optionalen Wert zum Klammern von LoD-Werten (Level-of-Detail, Level-of-Detail).
Hinweis
Erfordert Shadermodell 5 oder höher.
Syntax
DXGI_FORMAT Sample(
in SamplerState S,
in float Location,
in int Offset,
in float Clamp
);
Parameter
-
S [in]
-
Ein Samplerzustand. Dies ist ein Objekt, das in einer Effektdatei deklariert wurde, die Zustandszuweisungen enthält.
-
Standort [in]
-
Texturkoordinaten Der Argumenttyp ist vom Texturobjekttyp abhängig.
Texture-Object Typ Parametertyp Textur1D 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 dem Sampling 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 -
Clamp [in]
-
Ein optionaler Wert zum Klammern von LOD-Beispielwerten. Wenn Sie beispielsweise 2,0f für den Clampwert übergeben, stellen Sie sicher, dass kein einzelnes Beispiel auf einen MIP-Wert unter 2,0f zugreift.
Rückgabewert
Das Texturformat, das einer der in DXGI_FORMAT aufgeführten typisierten Werte ist.
Bemerkungen
Textursampling verwendet die Texelposition, um einen Texelwert nachzuschlagen. Ein Offset kann vor der Suche auf die Position angewendet werden. Der Samplerzustand enthält die Sampling- und Filteroptionen. Diese Methode kann in einem Pixel-Shader aufgerufen werden, wird aber nicht in einem Vertex-Shader oder einem Geometry-Shader unterstützt.
Verwenden Sie einen Offset nur auf einer ganzzahligen Mipebene. Andernfalls erhalten Sie je nach Hardwareimplementierung 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 (Texturkoordinaten + Offsets + Umbruchmodus) angewendet, um Texturkoordinaten außerhalb des [0...1]-Bereichs zu ändern.
Für Texturarrays gibt ein zusätzlicher Wert im location-Parameter einen Index in ein Texturarray an. Dieser Index wird als skalierter Gleitkommawert 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 + clamp in den Arraybereich).
Anwenden von Texturkoordinatenoffsets
Der Offsetparameter ändert die Texturkoordinaten im Texelbereich. 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 beispielsweise mit dem DXGI_FORMAT_A8B8G8R8_UNORM_SRGB-Format definiert wurde, konvertiert der Samplingvorgang abgetastete Texel von Gamma 2,0 in 1,0, filtert und schreibt das Ergebnis als Gleitkommawert im Bereich [0..1].
Verwenden Sie einen Offset nur auf einer ganzzahligen Mipebene. Andernfalls erhalten Sie möglicherweise Ergebnisse, die nicht gut auf Hardware übertragen werden.
Siehe auch