ld (sm4 - asm)

Ruft Daten aus dem angegebenen Puffer oder der angegebenen Textur ohne jegliche Filterung (z. B. Punktsampling) mithilfe der bereitgestellten Integer-Adresse ab. Die Quelldaten können von einem beliebigen Ressourcentyp mit Ausnahme von TextureCube stammen.

ld[_aoffimmi(u,v,w)] dest[.mask], srcAddress[.swizzle], srcResource[.swizzle]
Element Beschreibung
dest
[in] Die Adresse des Ergebnisses des Vorgangs.
srcAddress
[in] Die Texturkoordinaten, die zum Ausführen des Samples erforderlich sind.
srcResource
[in] Ein Texturregister (t#), das deklariert worden sein muss und identifiziert, aus welcher Textur oder aus welchem Puffer abgerufen werden soll.

Hinweise

Diese Anweisung ist eine vereinfachte Alternative zur sample-Anweisung. Im Gegensatz zu sample ist Id auch in der Lage, Daten aus Puffern abzurufen. ld kann auch aus Ressourcen mit mehreren Samples abgerufen werden (nur für Pixelshader).

srcAddress stellt die Gruppe von Texturkoordinaten bereit, die zum Ausführen des Samples in Form von Ganzzahlen ohne Vorzeichen erforderlich sind. Wenn srcAddress außerhalb des Bereichs [0...( #texels in Dimension -1)] liegt, wird das Verhalten außerhalb der Grenzen aufgerufen, wobei ld in allen nicht fehlenden Komponenten des Formats der srcResource Null und den Standard für fehlende Komponenten zurückgibt. Eine Anwendung, für die eine flexiblere Kontrolle über das Verhalten außerhalb des Bereichs von Adressen gewünscht wird, sollte stattdessen die sample-Anweisung verwenden, da sie wrap-/mirror-/clamp-Adressverhalten berücksichtigt, das als Samplerzustand definiert ist.

srcAddress.a (POS-swizzle) stellt immer eine Ganzzahl-Mipmap-Ebene (ohne Vorzeichen) bereit. Wenn der Wert außerhalb des Bereichs [0...( Num miplevels in resource-1)]) ist, wird das Verhalten außerhalb der Grenzen aufgerufen. Wenn die Ressource ein Puffer ist, der keine Mipmaps aufweisen kann, wird srcAddress.a ignoriert.

srcAddress.gb (POS-swizzle) wird für Puffer und Texture1D (Nicht-Array) ignoriert. srcAddress.b (POS-swizzle) wird für Texture1D-Arrays und Texture2Ds ignoriert.

Für Texture1D-Arrays stellt srcAddress.g (POS-swizzle) den Arrayindex als Ganzzahl ohne Vorzeichen bereit. Wenn sich der Wert außerhalb des Bereichs der verfügbaren Arrayindizes befindet [0...( Arraygröße-1)], wird das Verhalten außerhalb der Grenzen aufgerufen.

Für Texture2D-Arrays stellt srcAddress.b (POS-swizzle) den Arrayindex andernfalls mit der gleichen Semantik wie für Texture1D bereit.

Das Abrufen von t#, das nichts an sich gebunden hat, gibt für alle Komponenten Null zurück.

Adressoffset

Das optionale Suffix [_aoffimmi(u,v,w)] (Adressoffset durch eine unmittelbare ganze Zahl) gibt an, dass die Texturkoordinaten für die ld durch einen Gruppe bereitgestellter ganzzahliger Werte des unmittelbaren Texelbereichs versetzt werden sollen. Die Literalwerte sind eine Gruppe von zwei Komplementärzahlen a 4 Bit im ganzzahligen Bereich [-8,7]. Dieser Modifizierer ist nur für Texture1D/2D/3D definiert, einschließlich Arrays und nicht für Puffer.

Die Offsets werden zu den Texturkoordinaten im Texelbereich relativ zum mip-Level hinzugefügt, auf den durch die ld zugegriffen wird.

Adressoffsets werden nicht entlang der Arrayachse von Texture1D/2D-Arrays angewendet.

Die _aoffimmi v.w-Komponenten werden für Texture1Ds ignoriert.

Die _aoffimmi w-Komponente wird für Texture2Ds ignoriert.

Da die Texturkoordinaten für ld nicht ganze Zahlen ohne Vorzeichen sind, führt der Offset dazu, dass die Adresse unter Null liegt, in eine große Adresse umgebrochen wird und zu einem Zugriff außerhalb der Grenzen führt.

Steuerung des Rückgabetyps

Das von ld an das Zielregister zurückgegebene Datenformat wird auf die gleiche Weise bestimmt wie für die sample-Anweisung beschrieben. Es basiert auf dem Format, das an den srcResource-Parameter (t#) gebunden ist.

Wie bei der sample-Anweisung sind zurückgegebene Werte für ld 4-Vektoren mit formatspezifischen Standardwerten für Komponenten, die nicht im Format vorhanden sind. Der Swizzle auf srcResource bestimmt, wie das 4-Komponenten-Ergebnis aus der Texturlast zurückkehrt. Danach bestimmt .mask in dest bestimmt, welche Komponenten in dest aktualisiert werden.

Wenn ein 32-Bit-Float-Wert von ld in ein 32-Bit-Register gelesen wird, bleiben die Bits unberührt, d. h. denormale Werte bleiben denormal. Dies unterscheidet sich von der sample-Anweisung.

Sonstige Details

Da der ld-Anweisung keine Filterung zugeordnet ist, gelten Konzepte wie LOD Bias nicht für ld. Dementsprechend gibt es keinen Sampler-s#-Parameter.

Beschränkungen

  • srcResource muss ein t#-Register und kein TextureCube sein. srcResource kann auch kein Konstantenpuffer sein, da dieser nicht an t#-Register gebunden werden kann.
  • Relative Adressierung für srcResource ist nicht zulässig.
  • srcAddress muss ein temp-Register (r#/x#), eine Konstante (cb#) oder ein Eingaberegister (v#) sein.
  • dest muss ein temporäres Register (r#/x#) oder ein Ausgaberegister (o*#) sein.

Diese Anweisung gilt für die folgenden Shaderphasen:

Vertex-Shader Geometrie-Shader Pixel-Shader
x x 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)