Microsoft hat die Vorabversion von Shader Model 6.10 und AgilitySDK 1.720 angekündigt und damit die Möglichkeiten der DX12-API mit neuen, auf Entwickler ausgerichteten Funktionen deutlich erweitert.
Erweiterte Funktionen in Shader Model 6.10 & AgilitySDK 1.720
Die neueste Einführung baut auf den vorherigen Verbesserungen des Shader-Modells 6.9 und DXR 1.2 auf, die beide in der AgilitySDK-Version 1.619 enthalten waren. Die AgilitySDK 1.720-Vorschau präsentiert mehrere neue Funktionen zur Erweiterung der DX12-API, die im Folgenden detailliert beschrieben werden:
- Shader-Modell 6.10 (über DXC 1.10.2605.2):
- Lineare Algebra APIs (linalg::Matrix)
- Gruppenwellenindex
- Variable Gruppen-gemeinsamer Speicher
- Raytracing-Intrinsics:
- Dreieckobjektpositionen
- ClusterID
Einführung der APIs für lineare Algebra (linalg::Matrix)
Shader Model 6.10 integriert eine umfassende Suite von Matrix-APIs in LinAlg. Diese Integration ermöglicht es Entwicklern, neuronale Rendering-Techniken effizient direkt in Shader-Threads zu implementieren und so die Leistung der Echtzeit-Grafikpipeline zu verbessern. Darüber hinaus unterstützt es Matrixmultiplikationen (MMA) mit hoher Bandbreite für Anwendungen im Bereich maschinelles Lernen und Bildverarbeitung – alles innerhalb eines einzigen API-Frameworks.

Gruppenwellenindex: Verbesserung der Shader-Leistung
Die neuen intrinsischen Funktionen `GetGroupWaveIndex()` und `GetGroupWaveCount()` wurden dem Shader-Modell 6.10 hinzugefügt. Sie ermöglichen es verschiedenen Shader-Typen – Compute-, Mesh-, Amplification- und Node-Shadern –, Einblicke in die Wellenstruktur innerhalb einer Thread-Gruppe zu gewinnen.`GetGroupWaveIndex()` liefert den Index der aktuellen Welle, während `GetGroupWaveCount()` die Gesamtzahl der ausgeführten Wellen in der Gruppe anzeigt. Diese Funktionalität fördert die Arbeitsteilung und die Zusammenarbeit zwischen Wellen, ohne dass unzuverlässige Workarounds wie die veraltete Methode der Division von `SV_GroupIndex` über `WaveGetLaneCount()` erforderlich sind, die keine universelle Hardware-Zuverlässigkeit bietet.
Variable Gruppen-Shared-Memory: Neue Möglichkeiten
Eine weitere wichtige Verbesserung in Shader Model 6.10 ist die Aufhebung der bisherigen Beschränkung von 32 KB (28 KB für Mesh-Shader) für den gemeinsam genutzten Gruppenspeicher. Durch die neue Laufzeitabfrage `MaxGroupSharedMemoryPerGroup`, die die tatsächliche Hardwaregrenze offenlegt, können Shader-Entwickler nun benutzerdefinierte Attribute verwenden, um die benötigte Speichergröße ihrer Shader festzulegen. Dieser Übergang ermöglicht den Zugriff auf moderne GPU-Kapazitäten und gewährleistet gleichzeitig die Kompatibilität bestehenden Codes mit den alten Beschränkungen. Dadurch können Entwickler nun fortgeschrittene Algorithmen wie das Culling großer Tiles und komplexe Matrix-Workloads implementieren, ohne durch die bisherigen Spezifikationen eingeschränkt zu sein.
Erkundung der D3D12-Funktionen
APIs für die asynchrone Befehlslistenverarbeitung im Batch-Verfahren
Die Einführung von D3D12-Batch-Befehlen behebt die inhärenten Serialisierungsprobleme früherer Befehle wie CopyBufferRegion`get`, ClearUnorderedAccessViewFloat/Uint`get` und ResolveSubresource`get`, die sequenziell ausgeführt wurden. Diese Einschränkung führte zu GPU-Verzögerungen und damit zu Verzögerungen unabhängiger Operationen. Die neue Funktion „Asynchrone Batch-Befehle“ ermöglicht Entwicklern die Nutzung erweiterter Befehlslistenmethoden, die die implizite Serialisierung aufheben und so die Überlappung unabhängiger Aufgaben durch die Hardware ermöglichen. Entwickler können nun die Synchronisierung mit erweiterten Barrieren explizit nur bei Bedarf durchführen und so die Effizienz bei parallelen Arbeitslasten steigern.
Alle führenden Hardwarehersteller, darunter NVIDIA, AMD und Intel, unterstützen diese Vorabversionen nun:
| Hardware-Anbieter | Fahrerverbindungen |
| AMD | AMD Software: AgilitySDK Developer Preview Edition 25.30.41.02 |
| Intel | Intel Arc Graphics – Windows |
| NVIDIA | Für den Zugriff auf Treiber in der Entwicklungsphase wenden Sie sich bitte an Ihren Ansprechpartner im Bereich Entwicklerbeziehungen. |
Was die Hardwareunterstützung angeht, deckt NVIDIA mit seiner gesamten RTX-GPU-Produktpalette ein breites Spektrum an Funktionen ab, während AMD und Intel bestimmte Funktionalitäten auf ihre neuesten Produkte, darunter die Arc B-Serie und RDNA 4 (Radeon RX 9000), beschränken. So wird beispielsweise der Group Wave Index von AMDs RX 7000- und RX 9000-GPUs unterstützt, während NVIDIA die Implementierung in einer zukünftigen Version plant. Zukünftige Intel-Updates werden zudem die neue Linear Algebra API unterstützen.
| AMD | Intel | NVIDIA | |
| linAlg::Matrix | Unterstützt auf Produkten der AMD Radeon RX 9000-Serie. | Geplant für eine demnächst erscheinende Veröffentlichung. | Unterstützt von allen RTX-Hardwarekomponenten. |
| Gruppenwellenindex | Unterstützt auf Produkten der AMD Radeon RX 7000 und 9000 Serie. | Unterstützt von Intel Arc B-Series-Grafikkarten. | Geplant für eine demnächst erscheinende Veröffentlichung. |
| Variable Gruppen-gemeinsamer Speicher | Aktuell wird das Standard-Speicherlimit unterstützt; höhere Limits werden in zukünftigen Treiberversionen erwartet. | Unterstützt von Intel Arc B-Series-Grafikkarten. | Unterstützt von allen RTX-Hardwarekomponenten, Werte variieren je nach Gerät. |
| Raytracing-Intrinsics: TriangleObjectPositions/ClusterID | Unterstützt auf Produkten der AMD Radeon RX 7000 und 9000 Serie. | Unterstützt von Intel Arc B-Series-Grafikkarten. | Unterstützt auf allen RTX-Hardwarekomponenten. |
| APIs für die asynchrone Befehlslistenverarbeitung im Batch-Verfahren | Unterstützt auf Produkten der AMD Radeon RX 7000 und 9000 Serie. | Unterstützt von Intel Arc B-Series-Grafikkarten. | Unterstützt auf allen RTX-Hardwarekomponenten. |
Weitere Informationen und visuelle Darstellungen zu dieser Ankündigung finden Sie in der Originalquelle: Quelle & Bilder.
Schreibe einen Kommentar