Freigeben über


Direct3D 12-Glossar

Diese Begriffe unterscheiden sich von Direct3D 12.

Bindung

Der Prozess zum Anfügen von Arbeitsspeicher an die Grafikpipeline. Die Ressourcenbindung umfasst beispielsweise die Bindung einer Ressource, z. B. einer Textur, an die Pipeline zur Verwendung beim Rendern eines Objekts.

Puffer

Ein Typ von D3D-Ressource, der synonym mit einer zusammenhängenden Speicherbelegung ist.

Bündel

Ein Befehlspuffer, den die Grafikverarbeitungseinheit (GRAPHICS Processing Unit, GPU) nur direkt über eine direkte Befehlsliste ausführen kann. Ein Bundle erbt den gesamten GPU-Zustand (mit Ausnahme des derzeit festgelegten Pipelinezustandsobjekts und der primitiven Topologie).

Befehlszuweisung

Die zugrunde liegenden Speicherbelegungen, in denen GPU-Befehle gespeichert werden. Das Befehlszuweisungsobjekt gilt sowohl für direkte Befehlslisten als auch für Bundles.

Befehlsliste

Eine Befehlsliste entspricht einer Reihe von Befehlen, die von der GPU ausgeführt werden. Dazu gehören Befehle wie Festlegen des Zustands, Zeichnen, Löschen und Kopieren. Die D3D12-Befehlslistenschnittstelle unterscheidet sich erheblich von der D3D11-Befehlslistenschnittstelle. Die D3D12-Befehlslistenschnittstelle enthält APIs, die den D3D11-Gerätekontextrendering-APIs ähneln.

Eine D3D12-Befehlsliste ordnet keine Ressourcen zu oder hebt die Zuordnung auf, ändert Kachelzuordnungen, ändert die Größe von Kachelpools, ruft Abfragedaten ab und übermittelt auch keine Befehle implizit zur Ausführung an die GPU.

Im Gegensatz zu verzögerten D3D11-Kontexten unterstützen D3D12-Befehlslisten nur zwei Dereferenzierungsebenen. Eine direkte Befehlsliste entspricht einem Befehlspuffer, den die GPU ausführen kann. Ein Bundle kann nur direkt über eine direkte Befehlsliste ausgeführt werden.

Eine direkte Befehlsliste erbt keinen GPU-Zustand. Ein Bundle erbt den gesamten GPU-Zustand (mit Ausnahme des derzeit festgelegten Pipelinezustandsobjekts und der primitiven Topologie).

Der Arbeitsspeicher für eine Befehlsliste wird durch die Befehlszuweisung festgelegt. Der Zweck von Befehlslisten besteht darin, dass sie als einzelne Renderinganforderung an eine GPU übermittelt werden können.

Befehlswarteschlange

Eine Warteschlange mit Befehlen listet auf, dass die GPU nacheinander ausgeführt wird. Anwendungen müssen Befehlslisten zur Ausführung explizit an eine Befehlswarteschlange übermitteln. In der Regel gibt es drei Befehlswarteschlangen: 3D-Grafiken, Compute und Kopieren, die der 3D-Grafikpipeline, der Compute-Engine und einer oder mehreren Kopiermodulen auf der GPU entsprechen.

konservative Rasterisierung

Die konservative Rasterisierung ist ein Betriebsmodus für die Rasterisierungsphase der Direct3D-Grafikpipeline. Es deaktiviert die standardmäßige beispielbasierte Rasterung und rastert stattdessen ein Pixel, das von einem Grundtyp abgedeckt wird. Ein wichtiger Unterschied besteht darin, dass zwar jede Abdeckung überhaupt ein rasterisiertes Pixel erzeugt, diese Abdeckung jedoch nicht durch die Hardware gekennzeichnet werden kann, sodass die Abdeckung für einen Pixelshader immer binär erscheint: entweder vollständig abgedeckt oder nicht abgedeckt. Es bleibt dem Pixelshadercode überlassen, die tatsächliche Abdeckung analytisch zu bestimmen.

Konservative Rasterung kann bei Problemen wie Kollisions- und Treffererkennung, Binning und Okklusionskulling helfen, bei denen die Farbe eines Pixels sicherer ist und Edgefälle eliminiert werden können. Weitere Informationen finden Sie unter Konservative Rasterung.

Konstantenpufferansicht (CBV)

Konstantenpuffer enthalten Shaderkonstantendaten, z. B. eine Kameraansicht, Projektionsmatrizen und Weltmatrizen. Eine "Konstantenpufferansicht" ist die formatspezifische Ansicht des Puffers, wie sie von der Grafikpipeline angezeigt wird.

Standardheap

Ein Benutzermodusheap, der sich auf die Unterstützung persistenter GPU-Ressourcentypen konzentriert, einschließlich gpu-geschriebener Ressourcen.

Deskriptor

Deskriptoren sind die primäre Bindungseinheit für eine einzelne Ressource in D3D12. Ein Deskriptor ist ein relativ kleiner Datenblock, der ein Objekt für die GPU vollständig in einem GPU-spezifischen Format beschreibt. Es gibt viele verschiedene Arten von Deskriptoren: Shaderressourcensichten (SRVs), Unordered Access Views (UAVs), Constant Buffer Views (CBVs) und Sampler sind einige Beispiele.

Deskriptorheap

Ein Deskriptorheap ist eine Sammlung zusammenhängender Zuordnungen von Deskriptoren, eine Zuordnung für jeden Deskriptor. Der primäre Punkt eines Deskriptorheaps besteht darin, den Großteil der Speicherbelegung zu umfassen, der zum Speichern der Deskriptorspezifikationen von Objekttypen erforderlich ist, auf die Shader auf ein möglichst großes Renderingfenster verweisen (idealerweise ein ganzer Renderingframe oder mehr).

Deskriptortabelle

Eine Deskriptortabelle ist logisch ein Array von Deskriptoren. Jede Deskriptortabelle speichert Deskriptoren eines oder mehrerer Typen, einschließlich SRVs, UAVe, CBVs und Sampler. Eine Deskriptortabelle ist keine Speicherbelegung, sie ist einfach ein Offset und eine Länge in einem Deskriptorheap.

Direkte Befehlsliste

Ein Befehlspuffer, den die GPU ausführen kann. Eine direkte Befehlsliste erbt keinen GPU-Zustand.

Zaun

Ein Mechanismus zum Synchronisieren von GPU und CPU. Sowohl die GPU als auch die CPU können angewiesen werden, an einem Zaun zu warten und zu warten, bis der andere Prozessor aufholen kann. Weitere Informationen finden Sie unter Synchronisierung mit mehreren Engines.

Gefahrenverfolgung, Gefahrenverfolgung

Eine Gefahr tritt auf, wenn eine Ressource für einen Zweck verwendet wurde und die App beabsichtigt, sie für einen anderen Zweck wiederzuverwenden. Um die Ressource erneut verwenden zu können, müssen Zwischencaches geleert oder ungültig werden, die Komprimierungsanforderungen müssen mit der zweiten Verwendung konsistent sein, und die Ressource sollte sich im erforderlichen Zustand befinden, um zu vermeiden, dass die Ressource gelesen wird, nachdem sie in den beabsichtigten Zweck geschrieben und für ungültig erklärt wurde.

Der Prozess zum Verwalten von Ressourcen und zur Vermeidung dieser Synchronisierungsprobleme wird als Gefahrenverfolgung bezeichnet. Wenn es keine Gefahrenverfolgung durch den Fahrer gibt, ist die App dafür verantwortlich. In den meisten früheren Versionen von DirectX wurde die Gefahrenverfolgung vom Treiber verarbeitet. Um die Leistung zu verbessern, sind Methoden ohne Gefahrenverfolgung in DirectX 12 verfügbar.

High-Level Shader Language (HLSL)

Eine Computersprache, die sich ähnlich, aber in vielerlei Hinsicht von C unterscheidet, die zum Schreiben von Shadercode verwendet wird. Vertex-, Pixel-, Geometry-, Compute-, Domänen- und Hull-Shader werden alle mit HLSL geschrieben. Ein Compiler konvertiert die HLSL-Quelle in ein Binärformat für die GPU, die genutzt werden soll.

Multiengine

Die verschiedenen Instanzen und Typen von Engines in einer einzelnen GPU. Die Typen von Engines umfassen: Grafiken, Compute und Kopieren.

MultiGPU

Eine Hardwarekonfiguration, bei der mehrere Grafikkarten vorhanden sind. Die separaten Adapter werden manchmal als Knoten bezeichnet. Wenn Mehrere GPUs vorhanden sind, kann die Synchronisierung mit der CPU und untereinander erheblich komplexer sein als mit einer einzelnen GPU.

Pipeline State-Objekt (PSO)

Ein erheblicher Teil des Zustands der GPU. Dieser Zustand umfasst alle derzeit festgelegten Shader und bestimmte Objekte mit festem Funktionszustand. Die einzige Möglichkeit zum Ändern der im Pipelineobjekt enthaltenen Zustände besteht darin, das aktuell gebundene Pipelineobjekt zu ändern.

Prädication

Die Prädication ist ein Feature, mit dem die GPU und nicht die CPU bestimmen kann, ob ein Objekt nicht gezeichnet, kopiert oder verteilt wird. Wenn z. B. ein Begrenzungsrahmen eines Objekts von einem anderen Objekt vollständig verdeckt wird oder die Perspektive das Objekt auf kleiner als die Größe eines Pixels reduziert hat, kann es keinen Sinn haben, das ausgeblendete Objekt überhaupt zu zeichnen. Siehe Prädication.

Rasterisierungsreihenfolgeansicht (ROV)

Standardgrafikpipelines haben möglicherweise Probleme, mehrere Texturen, die Transparenz enthalten, ordnungsgemäß zusammenzuführen. Objekte wie Drahtzäune, Rauch, Feuer, Vegetation und farbiges Glas nutzen Transparenz, um den gewünschten Effekt zu erzielen. Probleme treten auf, wenn mehrere Texturen, die Transparenz enthalten, nebeneinander stehen (z. B. Rauch vor einem Zaun vor einem Glasgebäude mit Vegetation). Rasterizer ordered views (ROVs) ermöglichen es den zugrunde liegenden Order Independent Transparency (OIT)-Algorithmen, Features der Hardware zu verwenden, um zu versuchen, die Transparenzreihenfolge ordnungsgemäß aufzulösen. Transparenz wird vom Pixelshader behandelt.

Rasterizer Ordered Views (ROVs) ermöglichen es Pixelshadercode, UAV-Bindungen (Unordered Access View) mit einer Deklaration zu markieren, die die normalen Anforderungen für die Reihenfolge der Grafikpipelineergebnisse für UAVs ändert.

Readback-Heap

Ein Benutzermodusheap, der sich auf die Datenübertragung von der GPU zurück zur CPU konzentriert.

Ressource

Eine Entität, die Daten für die Pipeline bereitstellt und definiert, was während der Szene gerendert wird. Ressourcen können von Ihren Spielmedien geladen oder dynamisch zur Laufzeit erstellt werden. In der Regel umfassen Ressourcen Texturdaten, Vertexdaten und Shaderdaten. Die meisten Direct3D-Anwendungen erstellen und zerstören Ressourcen während ihrer gesamten Lebensdauer umfassend.

Ressourcenbarriere

Eine Ressourcenbarriere benachrichtigt den Treiber darüber, dass möglicherweise eine Synchronisierung mehrerer Zugriffe auf eine einzelne Ressource erforderlich ist, z. B. Lesen und Schreiben in derselben Textur.

Ressourcenbindung

Bei der Ressourcenbindung werden Ressourcen (Texturen, Vertexpuffer, Indexpuffer usw.) mit der Grafikpipeline verknüpft, sodass die Shader der Pipeline die richtige Ressource verarbeiten können.

Ressourcenheaps

Ressourcenheaps ist ein generischer Begriff für die Heaps, bei denen es sich um Speicherpuffer handelt, die bei der Übertragung an und von der GPU Ressourcen enthalten. Für eine Übertragung an die GPU ist ein Upload heap erforderlich, von der GPU auf die CPU ist ein Readback-Heap erforderlich, und ein persistenter Heap, damit die GPU mehrere Renderingframes verwalten kann, wird als Standardheap bezeichnet.

Stammsignatur

Stammsignaturen definieren alle Ressourcen, die an die Grafik- oder Computepipelines gebunden werden sollen. Eine Stammsignatur wird von der App konfiguriert und verknüpft Befehlslisten mit den Ressourcen, die die Shader benötigen. In der Regel gibt es eine Grafik und eine Computestammsignatur pro App.

Sampler

Ein Sampler ist Code, der aus einer Textur liest.

Shaderressourcenansicht (SRV)

Eine formatspezifische Möglichkeit zum Betrachten der Daten in einer Shaderressource, z. B. einer Textur.

statischer Heap

Ein Benutzermodus-Heap, der sich auf mehrere schreibgeschützte GPU-Ressourcen konzentriert, die in der Regel gleichzeitig verwendet werden und nicht häufig geändert werden.

Swap chain

Swap chains steuern die Rückwärtspufferrotation und bilden die Grundlage der Grafikanimation. Swapchains werden vom LOW-Level-API-Satz DXGI verarbeitet (siehe DXGI-Übersicht).

Swizzle

Ein Verfahren zum Auffinden mehrdimensionaler Daten im Speicher, sodass Daten mit näherer Dimensionalität in der Regel adressen in der Nähe aufweisen. Insbesondere befinden sich alle Daten für eine Zeile nicht zusammenhängend vor den Daten für die nächste Zeile. Ein "Parametrisiertes Swizzle" beschreibt eine standardisierte Methode zum Beschreiben von Swizzle-Mustern.

Textur

Ein D3D-Ressourcentyp, der mehrdimensional ist und über ein Speicherlayout verfügt, das für den mehrdimensionalen Zugriff über die GPU optimiert ist. Texturen enthalten häufig das rohe Bild, das zum Rendern auf einer Oberfläche erforderlich ist, bevor beleuchtungs- und blending erfolgt, aber sie können andere Formen von Daten enthalten, z. B. Farbverläufe und Referenzfarben. Direct3D 12 unterstützt ein-, zwei- und dreidimensionale Texturen.

Fliese

Eine Seite des Videospeichers, ähnlich einer CPU-/Systemseite des Arbeitsspeichers. Die Kachelnotation trägt dazu bei, das Subsystem des virtuellen GPU-Arbeitsspeichers vom subsystem des virtuellen CPU-Arbeitsspeichers zu unterscheiden. GPUs bieten ähnliche Funktionen des virtuellen Arbeitsspeichers wie der virtuelle Systemspeicher. Einige GPUs verfügen über freigegebene Funktionen des virtuellen Arbeitsspeichers, die die Gemeinsame Nutzung einiger Seiten des virtuellen Speichersubsystems mit cpu und GPU ermöglichen.

gekachelte Ressourcen

Gekachelte Ressourcen werden benötigt, sodass weniger GPU-Arbeitsspeicher verschwendet wird, um Speicherbereiche von Oberflächen zu speichern, von denen die Anwendung weiß, dass nicht auf sie zugegriffen wird, und die Hardware kann verstehen, wie sie über benachbarte Kacheln filtern kann. Gekachelte Ressourcen sind große logische Ressourcen, die jedoch kleine Mengen an physischem Arbeitsspeicher erfordern.

Ungeordnete Zugriffsansicht (UAV)

Eine nicht sortierte Zugriffsansicht in eine Ressource (einschließlich Puffer, Texturen und Texturarrays ohne Multisampling) ermöglicht zeitlich ungeordneten Lese-/Schreibzugriff aus mehreren Threads. Dies bedeutet, dass dieser Ressourcentyp gleichzeitig von mehreren Threads gelesen/geschrieben werden kann, ohne Speicherkonflikte zu erzeugen.

Heap hochladen

Ein Benutzermodus-Heap, der sich auf die Datenübertragung von der CPU zur GPU konzentriert.

Heap im Benutzermodus

Eine Sammlung großer, zusammenhängender Speicherzuordnungen, die ohne Daseinsbewusstsein der Kernelkomponenten wiederverwendet werden: Die Zuordnungs- und Zerstörungsmethoden rufen keine Kernelzuordnungs- und Zerstörungsmethoden während des stabilen Zustands auf. Upload-, Readback- und Standardheaps sind Varianten von Benutzermodus-Heaps.

gekachelte Volumeressourcen

Dreidimensional gekachelte Ressourcen.