Freigeben über


gather4_po (sm5 - asm)

Eine Variante von gather4, aber anstatt einen sofortigen Offset [-8..7] zu unterstützen, kommt der Offset als Parameter zur Anweisung und hat auch einen größeren Bereich von [-32..31].

gather4_po dest[.mask], srcAddress[.swizzle], srcOffset[.swizzle], srcResource[.swizzle], srcSampler[.select_component]
Element BESCHREIBUNG
Dest
[in] Die Adresse des Ergebnisses des Vorgangs.
srcAddress
[in] Ein Satz von Texturkoordinaten.
Srcoffset
[in] Der Offset.
srcResource
[in] Ein Texturregister.
srcSampler
[in] Ein Samplerregister.

Bemerkungen

Die ersten beiden Komponenten des 4-Vektoroffsetparameters liefern 32-Bit-Ganzzahloffsets. Die anderen Komponenten dieses Parameters werden ignoriert.

Die 6 am wenigsten signifikanten Bits jedes Offsetwerts werden als signierter Wert berücksichtigt, was einen [-32..31]-Bereich ergibt.

Diese Anweisung funktioniert nur mit 2D-Texturen, im Gegensatz zu gather4, das auch mit TextureCubes funktioniert.

Die einzigen Im Sampler berücksichtigten Modi sind die Adressierungsmodi. Es wird nur der detaillierteste Mip in der Ressourcenansicht verwendet.

Wenn die Adresse auf ein Texel-Center fällt, bedeutet dies nicht, dass die anderen Texel auf null gesetzt werden können.

Der srcSampler-Parameter enthält [.select_component], sodass jede einzelne Komponente einer Textur abgerufen werden kann, einschließlich der Rückgabe von Standardwerten für fehlende Komponenten.

Wenn der abgerufene Wert bei Formaten mit float32-Komponenten normalisiert, denormalisiert, +-0 oder +-INF ist, wird er unverändert an den Shader zurückgegeben. NaN wird als NaN zurückgegeben, aber die genaue Bitdarstellung des NaN kann geändert werden. Für TextureCubes muss eine Synthese des fehlenden 4. Texels an Ecken erfolgen, sodass die Idee, bits unverändert für das synthetisierte Texel zurückzugeben, nicht zutrifft, und Denormierungen könnten geleert werden.

Verwenden Sie diese Anweisung, um den Offsetbereich von gather4 zu erweitern, um größer und programmierbar zu sein. Das Suffix "po" im Namen bedeutet "programmierbarer Offset".

Diese Anweisung gilt für die folgenden Shaderphasen:

Scheitelpunkt Hull Domain Geometrie Pixel Compute
X X X X X X

Minimales Shadermodell

Diese Anweisung wird in den folgenden Shadermodellen unterstützt:

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

Assembly des Shadermodells 5 (DirectX HLSL)