gather4 (sm5 - asm)
Erfasst die vier Texel, die in einem bilinearen Filtervorgang verwendet werden, und packt sie in einem einzigen Register. Diese Anweisung funktioniert nur mit 2D- oder CubeMap-Texturen, einschließlich Arrays. Es werden nur die Adressierungsmodi des Samplers verwendet, und die oberste Ebene einer beliebigen Mip-Pyramide wird verwendet.
gather4[_aoffimmi(u,v)] dest[.mask], srcAddress[.swizzle], srcResource[.swizzle], srcSampler[.select_component] |
---|
Element | BESCHREIBUNG |
---|---|
Dest |
[in] Die Adresse der Ergebnisse des Vorgangs. |
srcAddress |
[in] Ein Satz von Texturkoordinaten. |
srcResource |
[in] Ein Texturregister. |
srcSampler |
[in] Ein Samplerregister. |
Bemerkungen
Diese Anweisung verhält sich wie die Beispielanweisung , aber ein gefiltertes Beispiel wird nicht generiert. Die vier Beispiele, die zur Filterung beitragen würden, werden in gegen den Uhrzeigersinn beginnend mit der Stichprobe unten links vom abgefragten Speicherort in xyzw platziert. Dies ist identisch mit punktbasierten Stichprobenentnahmen mit (u,v) Texturkoordinaten-Deltas an folgenden Stellen: (-,+),(+,+,-),(-,-), wobei die Größe der Deltas immer ein halbes Texel beträgt.
Bei CubeMap-Texturen werden texel aus dem benachbarten Gesicht verwendet, wenn sich ein bilinearer Fußabdruck über einen Rand erstreckt. Ecken verwenden die gleichen Regeln wie die Beispielanweisung . Das heißt, die unbekannte Ecke wird als Durchschnitt der drei einschneidenden Gesichtsecken betrachtet.
Für gather4 gelten Texturformateinschränkungen, die in der Formatliste ausgedrückt werden.
Der Swizzle für srcResource ermöglicht es, die zurückgegebenen Werte willkürlich zu schwenken, bevor sie in das Ziel geschrieben werden.
Der .select_component auf srcSampler wählt aus, aus welcher Komponente der Quelltextur (r/g/b/a) 4 Texel gelesen werden sollen.
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 Rückgabe von Bits, die für das synthetisierte Texel unverändert sind, nicht zutrifft, und Denormierungen könnten geleert werden.
Bei Hardwareimplementierungen können Optimierungen in der herkömmlichen bilinearen Filterung, die Stichproben direkt auf Texels erkennen und das Lesen von Texels überspringen, die das Gewicht 0 aufweisen, mit dieser Anweisung nicht genutzt werden. gather4 gibt immer alle angeforderten Texel zurück.
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 |