Direct3D 10.1-Features
Direct3D 10.1 erweitert den Featuresatz von Direct3D 10.0 mit den folgenden neuen Features:
Blendmodi - Unabhängige Blendmodi pro Renderziel mithilfe der neuen Blend-State-Schnittstelle (siehe ID3D10BlendState1 Interface). Dual source blending operations are restricted to render target slot 0; Sie dürfen nicht in andere Ausgaben schreiben oder keine Renderziele an andere Slots als Slot 0 gebunden haben.
Culling-Verhalten – Flächengesichtsflächen werden automatisch gekullt; Dies wirkt sich nur auf das Rendern von Drahtmodelln aus.
Gleitkommaregeln – Verwendet dieselben IEEE-754-Regeln für Gleitkomma-Vorgänge mit Ausnahme von 32-Bit-Gleitkommavorgängen, um ein Ergebnis innerhalb von 0,5 Einheiten last-place (0,5 ULP) des unendlich genauen Ergebnisses zu erzielen. Dies gilt für Addition, Subtraktion und Multiplikation. (Genauigkeit auf 0,5 ULP für Multiplikation, 1,0 ULP für Kehrwert).
Formate – Die Genauigkeit der Float16-Mischung wurde auf 0,5 ULP erhöht. Blenden ist auch für UNORM16/SNORM16/SNORM8-Formate erforderlich.
Multisample Antialiasing – Multisampling wurde verbessert, um die abdeckungsbasierte Transparenz zu generalisieren und Multisampling mit Multidurchlaufrendering effektiver zu gestalten. Um dies zu erreichen, werden alle Multisamplesemantik so definiert, als ob der Pixelshader immer einmal pro Beispiel (Beispielhäufigkeit) ausgeführt wird, wobei eine separate Farbe pro Beispiel ermittelt wird. Wenn ein Pixelshader keine Pro-Sample-Attribute verwendet, wird derselbe Wert für jedes abgedeckte Beispiel in einem Pixel berechnet. In diesem Fall entspricht es der Hardware, die den Shader einmal pro Pixel (Pixelfrequenz) ausführt, wodurch das Ergebnis auf alle behandelten Beispiele repliziert wird. Natürlich erzeugt die Ausführung mit Pixelfrequenz immer dieselben Ergebnisse wie das Ausführen desselben Shaders bei der Beispielhäufigkeit, wenn die Attribute mit einer Pixelhäufigkeit abgesampt werden. Die PSInvocations-Pipelinestatistik erhöht sich bei der Stichprobenhäufigkeit, es sei denn, der Shader wird mit Pixelfrequenz ausgeführt.
Pipelinestufenbandbreite – Erhöhte Datenmenge, die zwischen Shaderphasen übergeben werden kann:
Ressource Grenzen Registriert zwischen Shaderphasen 32 (32-Bit x 4-Komponente) Vertex-Shadereingaberegister 32 Eingabesteckplätze für Eingabeassembler 32 Rasterungsregeln – Die Regeln für die Rasterung wurden für Zeilen geändert, zusätzlich wurden neue Funktionen hinzugefügt.
- MultisampleEnable wirkt sich nur auf die Linienrasterung aus (Punkte und Dreiecke sind nicht betroffen), und wird verwendet, um einen Linienzeichnungsalgorithmus auszuwählen. Dies bedeutet, dass einige Multisample-Rasterung aus Direct3D 10 nicht mehr unterstützt werden.
- Neue Beispielfrequenz-Pixelshaderausführung mit primitiver Rasterung.
Ressourcen – CopyResource ist in zwei neuen Szenarien aktiviert:
- Sowohl Farb- als auch Tiefen-/Schablonen-MSAA-Oberflächen können jetzt mit CopyResource als Quelle oder Ziel verwendet werden.
- Formatkonvertierung beim Kopieren zwischen bestimmten 32/64/128-Bit-Vorstrukturierungen, typierten Ressourcen und komprimierten Darstellungen derselben Bitbreite.
Textursampling – sample_c- und sample_c_lz Anweisungen sind definiert, um sowohl mit Texture2DArrays als auch mit TextureCubeArrays zu arbeiten, verwenden Sie das Location-Element (die Alphakomponente), um einen Arrayindex anzugeben.
Ansichten – TextureCube und das neue TextureCubeArray (siehe D3D10_TEXCUBE_ARRAY_SRV1) sind keine tatsächlichen Ressourcen, sondern neue Ansichten für eine Texture2DArray-Ressource. Erstellen Sie eine Ressourcenansicht aus einer Texture2DArray-Ressource mit einem neuen Verwendungskennzeichen (D3D10_RESOURCE_MISC_TEXTURECUBE), verwenden Sie die neue ID3D10ShaderResourceView1-Schnittstelle Schnittstelle, um eine Cubetexturansicht an die Pipeline zu binden.
Die neuen Features erfordern einen Gerätetyp 10.1 (siehe ID3D10Device1 Interface), der durch Aufrufen D3D10CreateDevice1erstellt werden kann, oder Sie können das Gerät und die Swapchain gleichzeitig erstellen, indem Sie D3D10CreateDeviceAndSwapChain1aufrufen.
In Windows Vista Service Pack 1 sind Direct3D 10.0- und Direct3D 10.1-DLLs nebeneinander auf dem System vorhanden. Führen Sie eine der folgenden Aktionen aus, um auf 10.1-Features zuzugreifen:
Zugreifen auf 10.1-Features für Vista Gold und Vista Service Pack 1
Entwickler, die Vista Gold und SP1 unterstützen möchten, müssen die fehlenden neuen 10.1-API-Erweiterungen auf Vista Gold berücksichtigen. Sowohl DXUT als auch D3DX10 bieten Komfortfunktionen zum Erstellen des entsprechenden Geräts, basierend auf den auf dem System verfügbaren DLLs und der verfügbaren Hardware (10.0 oder 10.1). Das 10.1-Gerät erbt vom 10.0-Gerät und kann mithilfe von QueryInterface() abgerufen werden. Es wird empfohlen, dass jede Anwendung den Gerätetyp nachverfolgt und einen Zeiger auf das 10.1-Gerät (sofern verfügbar) verwaltet, um häufige QueryInterface-Aufrufe zu vermeiden, wenn 10.1-Funktionen gewünscht werden. Wenn 10.1-Ressourcenansichten und Zustandsobjekte von der benutzerdefinierten Klasse einer Anwendung zugeordnet sind, wird empfohlen, dass die Anwendung nachverfolgt, ob das Objekt ein 10.0- oder 10.1-Typ ist, um redundante QueryInterface()-Aufrufe zu vermeiden. D3DX10 enthält eine Reihe von Hilfsfunktionen, um diesen Prozess zu vereinfachen (siehe D3DX10CreateDevice und D3DX10CreateDeviceAndSwapChain).
Ausschließlicher Zugriff auf 10.1-Features für Vista Service Pack 1
Einige Entwickler können festlegen, dass Vista Service Pack 1 erforderlich ist, das allgemein an Endbenutzer verteilt wird und eine Reihe von Verbesserungen außerhalb von Direct3D 10.1 enthält. Diese Entwickler können die Direct3D 10.1-Header und -Bibliotheken ausschließlich verwenden, wobei eine Abhängigkeit von den Direct3D 10.1-DLLs verwendet wird, die sowohl 10.0- als auch 10.1-Hardware unterstützen (einige Aufrufe können jedoch auf 10.0-Geräten fehlschlagen, auf denen die neue Funktionalität nicht unterstützt wird).
Einige zusätzliche Hinweise:
- Die im D3DX10.dll verfügbaren APIs akzeptieren sowohl 10.0- als auch 10.1-Geräte und nutzen 10.1-Funktionen, wenn verfügbar.
- D3D10SDKLayers.dll unterstützt ein 10.1-Gerät und kann die entsprechenden Debugspew für 10.1-Features ausgeben.
- D3D10Ref.dll implementiert ein 10.0- und 10.1-Softwaregerät.
- D3DX10 und FXC unterstützen das aktualisierte 10.1-Shadermodell mit den folgenden Zielen: vs_4_1, gs_4_1, ps_4_1 und fx_4_1, die an ein 10.1-Gerät gebunden werden können. Ein 10.1-Gerät unterstützt Shadermodell 4.0 und 4.1-Shader.
- Das Direct3D 10.0-Effektframework unterstützt 10.0- und 10.1-Geräte, jedoch müssen alle Techniken, die Shadermodell 4.1-Shader oder die neuen 10.1-Features enthalten, ein 10.1-Gerät verwenden.
Verwandte Themen