Freigeben über


D3D12DDI_RAYTRACING_GEOMETRY_TRIANGLES_DESC_0054 Struktur (d3d12umddi.h)

Beschreibt eine Geometrie des Ray-Tracing-Dreiecks.

Syntax

typedef struct D3D12DDI_RAYTRACING_GEOMETRY_TRIANGLES_DESC_0054 {
  D3D12DDI_GPU_VIRTUAL_ADDRESS            ColumnMajorTransform3x4;
  DXGI_FORMAT                             IndexFormat;
  DXGI_FORMAT                             VertexFormat;
  UINT                                    IndexCount;
  UINT                                    VertexCount;
  D3D12DDI_GPU_VIRTUAL_ADDRESS            IndexBuffer;
  D3D12DDI_GPU_VIRTUAL_ADDRESS_AND_STRIDE VertexBuffer;
} D3D12DDI_RAYTRACING_GEOMETRY_TRIANGLES_DESC_0054;

Angehörige

ColumnMajorTransform3x4

Adresse einer 3x4 affinen Transformationsmatrix im Zeilen-Hauptlayout, die auf die Scheitelpunkte im VertexBuffer- während eines Beschleunigungsstrukturbuilds angewendet werden soll. Der Inhalt VertexBuffer- wird nicht geändert. Wenn ein 2D-Vertexformat verwendet wird, wird die Transformation mit der dritten Vertexkomponente angewendet, die als Null angenommen wird.

Wenn ColumnMajorTransform3x4 NULL ist, werden die Scheitelpunkte nicht transformiert. Die Verwendung von ColumnMajorTransform3x4 kann zu erhöhten Berechnungs- und/oder Speicheranforderungen für den Beschleunigungsstrukturbuild führen.

Der Speicher, auf den verwiesen wird, muss Ressourcenstatus D3D12DDI_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE sein.

IndexFormat

Eine DXGI_FORMAT, die das Format der Indizes in IndexBufferdarstellt. Dieser Wert muss eine der folgenden Werte sein:

  • DXGI_FORMAT_UNKNOWN (wenn IndexBuffer NULL ist)
  • DXGI_FORMAT_R32_UINT
  • DXGI_FORMAT_R16_UINT

VertexFormat

Eine DXGI_FORMAT, die das Format der Scheitelpunkte (Positionen) in VertexBufferdarstellt. Dieser Wert muss eine der folgenden Werte sein:

  • DXGI_FORMAT_R32G32_FLOAT (dritte Komponente angenommen 0)
  • DXGI_FORMAT_R32G32B32_FLOAT
  • DXGI_FORMAT_R16G16_FLOAT (dritte Komponente angenommen 0)
  • DXGI_FORMAT_R16G16B16A16_FLOAT

IndexCount

Anzahl der Indizes in IndexBuffer. Muss 0 sein, wenn IndexBuffer- NULL ist.

VertexCount

Anzahl der Scheitelpunkte (Positionen) in VertexBuffer-.

IndexBuffer

Array von Vertexindizes. Wenn NULL, werden Dreiecke nicht indiziert. Die Adresse muss an der Größe von IndexFormat-ausgerichtet werden.

Der Speicher, auf den verwiesen wird, muss Ressourcenstatus D3D12DDI_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE sein.

VertexBuffer

Array von Scheitelpunkten einschließlich einer Stride. Die Ausrichtung auf die Adresse und den Stride muss ein Vielfaches der Komponentengröße sein, d. h. 4 Bytes für Formate mit 32-Bit-Komponenten und 2 Byte für Formate mit 16-Bit-Komponenten. Es gibt keine Einschränkung für die Stride (während es einen Grenzwert für Grafiken gibt), außer dass die unteren 32-Bits des Werts alle verwendet werden. Dies bedeutet, dass das Feld UINT64 rein, um benachbarte Felder sauber und offensichtlich überall auszurichten. Jede Scheitelpunktposition wird erwartet, dass sie sich an der Startadresse des Stride-Bereichs befindet und jeglicher übermäßig viel Platz durch Beschleunigungsstrukturbuilds ignoriert wird. Dieser übermäßige Speicherplatz kann andere App-Daten wie Vertexattribute enthalten, die die App für das manuelle Abrufen von Shadern verantwortlich ist, unabhängig davon, ob sie in Vertexpuffern oder an anderer Stelle interleaviert wird.

Der Speicher, auf den verwiesen wird, muss Ressourcenstatus D3D12DDI_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE sein.

Bemerkungen

Die geometrie, auf die diese Struktur verweist, befindet sich immer in Dreiecksliste (indizierte oder nicht indizierte Form). Streifen werden nicht unterstützt.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 10, Version 1809
Header- d3d12umddi.h