ld2dms (sm4.1 - asm)
Liest einzelne Beispiele aus zweidimensionalen mehrdimensionalen Texturen.
ld2dms[_aoffimmi(u,v)] dest[.mask], srcAddress[.swizzle], srcResource[.swizzle], sampleIndex |
---|
Element | BESCHREIBUNG |
---|---|
Dest |
[in] Die Adresse des Ergebnisses des Vorgangs. |
srcAddress |
[in] Die Texturkoordinaten, die zum Ausführen des Beispiels erforderlich sind. |
srcResource |
[in] Ein Texturregister (t#), das deklariert worden sein muss, um anzugeben, aus welcher Textur oder welchem Puffer abgerufen werden soll |
sampleIndex |
[in] Idendifiziert die Beispiele, um aus srcResource (Skalaropernd) zu lesen. |
Hinweise
Diese Anweisung ist eine vereinfachte Alternative zur Beispielanweisung . Es ruft Daten aus der angegebenen Textur ohne Filterung (z. B. Punktsampling) unter Verwendung der bereitgestellten ganzzahligen srcAddress und sampleIndex ab.
srcAddress stellt den Satz von Texturkoordinaten bereit, die zum Ausführen des Beispiels in Form von ganzen Zahlen ohne Vorzeichen erforderlich sind. Wenn srcAddress außerhalb des Bereichs[0...( #texels in Dimension -1)], ld2dms gibt immer 0 in allen Komponenten im Format der Ressource und Standardwerte (0,0,0,1.0f/0x00000001) für fehlende Komponenten zurück.
sampleIndex muss kein Literal sein. Die Anzahl mehrerer Stichproben muss nicht für die Texturressource angegeben werden, und sie funktioniert mit Tiefen- oder Schablonenansichten.
Eine Anwendung, die flexiblere Kontrolle über das Verhalten außerhalb des Adressbereichs wünscht, sollte stattdessen die Beispielanweisung verwenden, da sie das als Samplerzustand definierte Adressumbruch-/Spiegelungs-/Clamp-/Rahmenverhalten berücksichtigt.
srcAddress.b (post-swizzle) wird für Texture2Ds ignoriert. Wenn der Wert außerhalb des Bereichs der verfügbaren Arrayindizes [0...( array size-1)], gibt ld2dms in allen Komponenten, die im Format der Ressource vorhanden sind, immer 0 und für fehlende Komponenten standardwerte (0,0,0,1.0f/0x00000001) zurück.
Für Texture2D-Arrays stellt srcAddress.b (post-swizzle) den Arrayindex bereit. Oherwise, es hat das gleiche Verhalten wie Texture2D.
srcAddress.a (post-swizzle) wird immer ignoriert. Der HLSL-Compiler gibt dort nie etwas aus.
srcResource ist ein Texturregister (t#), das deklariert worden sein muss(22.3.11), das identifiziert, aus welcher Textur abgerufen werden soll.
Beim Abrufen von t#, an das nichts gebunden ist, wird für alle Komponenten 0 zurückgegeben.
Adressoffset
Das optionale [_aoffimmi(u,v,w)]-Suffix (Adressoffset durch eine sofortige ganze Zahl) gibt an, dass die Texturkoordinaten für die ld2dms durch eine Reihe von angegebenen konstanten Werten für den direkten texel-Leerraum versetzt werden sollen. Die Literalwerte sind eine Gruppe von 4-Bit-2-Komplementzahlen mit ganzzahligem Bereich [-8,7].
Die Offsets werden den Texturkoordinaten im Texelbereich hinzugefügt.
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 es sich bei den Texturkoordinaten für ld2dms um ganze Zahlen ohne Vorzeichen handelt, führt der Offset dazu, dass die Adresse unter null fällt, in eine große Adresse umschließt und zu einem zugriff außerhalb der Grenzen führt, der wie ld in allen Komponenten, die im Format der Ressource vorhanden sind, 0 und die Standardwerte (0,0,0,1.0f/0x00000001) für fehlende Komponenten zurückgibt.
Beispielnummer
ld2dms ist für die Verwendung für jede Ressource verfügbar. ld2dms funktioniert identisch mit ld , mit Ausnahme von 2D-Multsample-Ressourcen, indem der zusätzliche (0-basierte) sampleIndex-Operand verwendet wird, um zu identifizieren, welches Beispiel aus der Ressource gelesen werden soll.
Das Ergebnis der Angabe eines sampleIndex , der die Anzahl der Stichproben in der Ressource überschreitet, ist nicht definiert, kann jedoch keine Daten außerhalb des Adressraums des Gerätekontexts zurückgeben.
Rückgabetyp-Steuerelement
Das von ld2dms an das Zielregister zurückgegebene Datenformat wird auf die gleiche Weise wie für die Beispielanweisung beschrieben bestimmt. Sie basiert auf dem Format, das an den srcResource-Parameter (t#) gebunden ist.
Wie bei der Beispielanweisung sind zurückgegebene Werte für ld2dms 4-Vektoren mit formatspezifischen Standardwerten für Komponenten, die nicht im Format vorhanden sind. Der Swizzle für srcResource bestimmt, wie das Ergebnis mit vier Komponenten aus der Texturlast geschwenscht werden soll. Danach bestimmt .mask on dest , welche Komponenten in dest aktualisiert werden.
Wenn ein 32-Bit-Float-Wert von ld2dms in ein 32-Bit-Register gelesen wird, bleiben die Bits unberührt. d. h. denormale Werte bleiben denormal. Dies unterscheidet sich von der Beispielanweisung .
Sonstige Details
Da dieser Anweisung keine Filterung zugeordnet ist, gelten Konzepte wie LOD-Verzerrungen nicht. Dementsprechend gibt es keinen Sampler s#- Parameter.
Beschränkungen
- srcResource muss ein t#-Register und kein TextureCube, Texture1D oder Texture1DArray sein. srcResource kann kein ConstantBuffer sein, der nicht an t#-Register gebunden werden kann.
- Die relative Adressierung in srcResource ist nicht zulässig.
- srcAddress und sampleIndex müssen ein temp-Register (r#/x#), ein Konstantenregister (cb#) oder ein Eingaberegister (v#) sein.
- dest muss ein temp-Register (r#/x#) oder ein Ausgaberegister (o*#) sein.
Diese Anweisung gilt für die folgenden Shaderphasen:
Vertexshader | Geometrie-Shader | Pixelshader |
---|---|---|
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 | Nein |
Shadermodell 3 (DirectX HLSL) | Nein |
Shadermodell 2 (DirectX HLSL) | Nein |
Shadermodell 1 (DirectX HLSL) | Nein |