Freigeben über


resinfo (sm4 – asm)

Fragen Sie die Dimensionen einer bestimmten Eingaberessource ab.

resinfo[_uint|_rcpFloat] dest[.mask], srcMipLevel.select_component, srcResource[.swizzle]
Element BESCHREIBUNG
Dest
[in] Die Adresse des Ergebnisses des Vorgangs.
srcMipLevel
[in] Die mip-Ebene.
srcResource
[in] Eine t#- oder u#-Eingabetextur, für die die Dimensionen abgefragt werden.

Bemerkungen

srcMipLevel wird als ganzzahliger Skalar ohne Vorzeichen gelesen, sodass eine einzelne Komponentenauswahl für das Quellregister erforderlich ist, wenn es sich nicht um einen skalaren unmittelbaren Wert handelt.

dest empfängt [width, height, depth or array size, total-mip-count], ausgewählt durch die Schreibmaske.

Die zurückgegebenen Breiten-, Höhen- und Tiefenwerte gelten für die vom srcMipLevel-Parameter ausgewählte mip-Ebene und sind in der Anzahl von Texels unabhängig von der texel-Datengröße. Für Multisampelressourcen (texture2D[Array]MS#) werden Breite und Höhe auch in Texels zurückgegeben, nicht in Beispielen.

Die gesamt zurückgegebene MIP-Anzahl in dest.w ist vom srcMipLevel-Parameter nicht betroffen.

Bei UAVs (u#) ist die Anzahl der MIP-Ebenen immer 1.

Alle Aspekte dieser Anweisung basieren auf den Merkmalen der Ressourcenansicht, die an die t#/u#gebunden ist, nicht auf der zugrunde liegenden Basisressource.

Zurückgegebene Werte sind alle Gleitkommawerte, es sei denn, der _uint-Modifizierer wird verwendet. In diesem Fall sind die zurückgegebenen Werte alle ganzen Zahlen. Wenn der _rcpFloat-Modifizierer verwendet wird, sind alle zurückgegebenen Werte Gleitkommapunkte, und die Breite, Höhe und Tiefe werden als Reziprozien zurückgegeben (1.0f/width, 1.0f/height, 1.0f/depth), einschließlich INF, wenn breite/höhe/tiefe 0 vom Verhalten außerhalb des Bereichs srcMipLevel sind. Der _rcpFloat-Modifizierers gilt nur für zurückgegebene Werte für Breite, Höhe und Tiefe und gilt nicht für Werte, die auf 0 festgelegt und daher nicht zurückgegeben werden, und gilt auch nicht für Arraygrößenrückgaben.

Der Swizzle auf srcResource ermöglicht es, die zurückgegebenen Werte willkürlich zu schwenken, bevor sie in das Ziel geschrieben werden.

Wenn srcResource eine Textur1D ist, wird width in dest.x zurückgegeben, und dest.yz ist auf 0 festgelegt.

Wenn srcResource ein Texture1DArray ist, wird die Breite in dest.x zurückgegeben, die Arraygröße in dest.y und dest.z auf 0 festgelegt.

Wenn srcResource eine Textur2D ist, werden breite und höhe in dest.xy zurückgegeben, und dest.z ist auf 0 festgelegt.

Wenn srcResource ein Texture2DArray ist, werden breite und höhe in dest.xy zurückgegeben, und die Arraygröße wird in dest.z zurückgegeben.

Wenn srcResource eine Textur3D ist, werden Breite, Höhe und Tiefe in dest.xyz zurückgegeben.

Wenn srcResource ein TextureCube ist, werden die Breite und Höhe der einzelnen Cubesichtdimensionen in dest.xy zurückgegeben, und dest.z ist auf 0 festgelegt.

Wenn srcResource ein TextureCubeArray ist, werden die Breite und Höhe der einzelnen Cubesichtdimensionen in dest.xy zurückgegeben. dest.z ist auf einen nicht definierten Wert festgelegt.

Wenn die mip-Klemme pro Ressource für srcResource angegeben wurde, gibt resinfo immer die Gesamtanzahl von Mipmaps in der Ansicht für die mip-Anzahl zurück, unabhängig von der Klemme. Wenn jedoch die Abmessungen eines bestimmten miplevels per resinfo angefordert und der miplevel abgeklemmt wurde (z. B. eine Klammer von 2,2 bedeutet, dass mips 0 und 1 abgeklemmt wurden), sind die zurückgegebenen Dimensionen nicht definiert. Einige Implementierungen geben das Out-of-Bounds-Verhalten zurück, das für resinfo angegeben ist, wenn sich der miplevel außerhalb des Bereichs befindet. Andere Implementierungen geben die Dimensionen des mip zurück, als wäre er nicht geklemmt worden.

Beschränkungen

  • srcResource muss ein t#- oder u#-Register sein, das kein Puffer, sondern eine Textur* ist.
  • Relative Adressierung von srcResource ist nicht zulässig.
  • srcMipLevel muss eine einzelne Komponentenauswahl verwenden, wenn es sich nicht um einen skalaren Unmittelbaren handelt.
  • Beim Abrufen von t# oder u#, an das nichts gebunden ist, wird 0 für Breite, Höhe, Tiefe oder Arraygröße und total-mip-count zurückgegeben. Der _rcpFloat-Modifizierer wird in diesem Fall weiterhin berücksichtigt, sodass INF für die entsprechenden zurückgegebenen Werte zurückgegeben wird.
  • Wenn srcMipLevel außerhalb des Bereichs der verfügbaren Anzahl von miplevels in der Ressource liegt, ist das Verhalten für die Größenrückgabe (dest.xyz) mit dem einer ungebundenen t#- oder u#-Ressource identisch. Die Gesamtzahl der MIP-Werte wird für diesen Fall weiterhin in dest.w zurückgegeben.

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 ja
Shadermodell 3 (DirectX HLSL) Nein
Shadermodell 2 (DirectX HLSL) Nein
Shadermodell 1 (DirectX HLSL) Nein

Shadermodell 4-Assembly (DirectX HLSL)