vkd3d 1.2 bietet Kompatibilitätsverbesserungen, Schattierungen und mehr

Das Projekt Wine hat eine neue Version des vkd3d 1.2-Pakets veröffentlicht mit eine Direct3D 12-Implementierung Dies funktioniert durch die Übersetzung der Aufrufe in die Vulkan-Grafik-API.

Diese neue Version von vkd3d 1.2 enthält verschiedene Verbesserungen, aber von den wichtigsten, die auffallen, sind die Verfügbarkeit von libvkd3d-shader als öffentliche Bibliothekist die Shader-Unterstützung Tessellation sowie die Unterstützung der Durchflussleistung.

Das Paketund enthält libvkd3d-Bibliotheken mit Direct3D 12-Implementierungen, libvkd3d-shader mit Shader-Übersetzer Modell 4 und 5 und libvkd3d-Utils mit Funktionen zur Vereinfachung der Migration von Direct3D 12-Anwendungen sowie einer Reihe von Demos, einschließlich des glxgears-Ports auf Direct3D 12. Der Projektcode wird unter LGPLv2.1 lizenziert verteilt.

Die Bibliothek libvkd3d unterstützt die meisten Direct3D 12-Funktionen. Dazu gehören Grafik- und Berechnungsfunktionen, Befehlswarteschlangen und -listen, Heap-Deskriptoren und -Deskriptoren, Stammsignaturen, ungeordneter Zugriff, Sampler, Befehlssignaturen, Stammkonstanten, indirekte Darstellung usw.

Libvkd3d-Shader implementiert die Übersetzung der Bytecodes 4 und 5 der Schattierungsmuster in der SPIR-V-Zwischendarstellung. Es werden Scheitelpunkte, Pixel, Tessellation, rechnerische und einfache Geometrie-Shader, Serialisierung der Stammsignatur und Deserialisierung unterstützt.

Die Shader-Anweisungen enthalten arithmetische, atomare und bitweise Operationen. Datenflusskontroll- und Vergleichsoperatoren, Anweisungen zum Abtasten, Sammeln und Laden, ungeordnete Zugriffsvorgänge (UAV, Ansicht ungeordneter Zugriff).

In der aktuellen Entwicklungsphase sind nicht alle Aufrufe von Direct3D 12 implementiert Die Tests wurden hauptsächlich mit einer Reihe von Demoanwendungen durchgeführt. Die Version enthält keine Funktionen in der Entwicklung, wie z. B. Unterstützung für komplexe Geometrie-Shader und Tessellation, sowie eine Reihe von Verbesserungen in Bezug auf die grundlegenden Direct3D 12-Methoden und -Shader. Diese Funktionen werden in einer zukünftigen Version angeboten.

Wichtige neue Funktionen von Vkd3d 1.2

Zu den wichtigsten Änderungen, die in der neuen Version vorgestellt werden, gehört die Verfügbarkeit der libvkd3d-shader-Bibliothek zur Verwendung in Projekten von Drittanbietern, da Verschiedene Direct3D 12-Funktionen wurden hinzugefügt, z.

  • Multi-Sampling.
  • Reservierte Ressourcen.
  • Übergaberaten für Instanzdaten.
  • API "Private Daten" für alle Schnittstellen.
  • Komponentenzuordnungen für Shader-Ressourcenansichten.
  • Erweiterung VK_KHR_draw_indirect_count.
  • Prädikat / bedingte Darstellung.
  • Tiefenrendering ohne Pixel Shader.
  • Tiefenausschnitt. Dies erfordert die Erweiterung VK_EXT_depth_clip_enable.
  • Entsorgen Sie den Rasterizer.
  • Dual Source Mischen.
  • Zuordnung platzierter Ressourcen.
  • Die ID3D12Resource-Methoden ReadFromSubresource () und WriteToSubresource ().
  • Gleichzeitiger Zugriff auf Ressourcen mit mehreren Warteschlangen.
  • Nullansichten. Das heißt, Ansichten ohne zugrunde liegende Ressource.
  • Mehrere weitere Anfragen zum Feature-Support.

Darüber hinaus Die Unterstützung für das Konvertieren, Serialisieren und Deserialisieren von Signaturen wurde ebenfalls hervorgehoben root (vkd3d_serialize_versioned_root_signature () und vkd3d_create_versioned_root_signature_deserializer () sowie Unterstützung für die Streaming-Ausgabe.

Eine weitere herausragende Änderung ist die Implementierung von Umgebungsvariablen: VKD3D_CONFIG zum Festlegen von Optionen zum Ändern des Verhaltens von libvkd3d und VKD3D_VULKAN_DEVICE zum Überschreiben des Geräts für die Vulkan-API.

Außerdem Unterstützung für Schattierungsanweisungen hinzugefügt bufinfo, eval_centroid, eval_sample_index, ld2ms, sample_b, sample_d, sample_info, samplepos und vorläufige Unterstützung für Shader des Modells 5.1.

Und auch Unterstützung für OpenGL SPIR-V-Zielumgebungen. Dadurch kann SPIR-V, das von libvkd3d-shader erstellt wurde, mit GL_ARB_gl_spirv verwendet werden. Dies beinhaltet die Unterstützung von OpenGL-Atomzählern und kombinierten Samplern.

Schließlich wenn Sie mehr darüber wissen wollen Über diese neue Version können Sie die vollständige Liste der Änderungen überprüfen im folgenden Link.

Wie installiere ich vkd3d unter Linux?

Für diejenigen, die daran interessiert sind, vkd3d auf ihrem System zu installieren, sollten sie den Quellcode erhalten und mit der Kompilierung fortfahren, obwohl sie diese Bibliothek aus praktischen Gründen oder für Neulinge ohne großen Aufwand ausprobieren können. Dazu müssen sie nur lutris und innerhalb seiner Konfigurationen installieren.

Diejenigen, die an einer Kompilierung interessiert sind, müssen den Code erhalten mit:

git clone git://source.winehq.org/git/vkd3d.git/
./autogen.sh
./configure
make
../vkd3d/configure --build=i686-pc-linux-gnu "CPPFLAGS=-m32" "LDFLAGS=-m32"

Schließlich müssen die Vulkan-Ebenen aktiviert werden:

export VK_INSTANCE_LAYERS=VK_LAYER_LUNARG_standard_validation
VKD3D_CONFIG=vk_debug


Als bevorzugte Quelle in Google hinzufügen