Das Wine-Projekt hat Vkd3d 1.14 veröffentlicht, das die Implementierung von Direct3D 12 beinhaltet.

Das Wine-Projekt hat die Version vkd3d 1.14 veröffentlicht, die eine Implementierung von Direct3D 12 bietet, die über die Übersetzung von Aufrufen in die Vulkan-Grafik-API funktioniert. Das Paket enthält die Bibliotheken libvkd3d mit der Implementierung von Direct3D 12, libvkd3d-shader mit einem Translator für Shader-Modell 4 und 5 sowie libvkd3d-utils mit Funktionen zur Vereinfachung der Portierung von Direct3D 12-Anwendungen, einschließlich einer Reihe von Demo-Beispielen, darunter der Port von glxgears auf Direct3D 12. Der Code des Projekts ist unter der LGPLv2.1-Lizenz verfügbar.

Die libvkd3d-Bibliothek unterstützt die meisten Funktionen von Direct3D 12, einschließlich Grafik- und Rechenressourcen, Warteschlangen und Befehlssätze, Deskriptoren und Heap-Deskriptoren, Root-Signaturen, ungeordneten Zugriff, Sampler, Befehlssignaturen, Root-Konstanten, indirekte Renderaufrufe, sowie die Clear*() und Copy*()-Methoden. In libvkd3d-shader wird die Übersetzung des Bytecodes von Shader-Modellen in das Intermediate Representation SPIR-V implementiert. Es werden Vertex-, Pixel-, Tessellation-, Compute- und einfache Geometrieshader unterstützt, einschließlich der Serialisierung und Deserialisierung von Root-Signaturen. Von den Shader-Instruktionen sind arithmetische, atomare und bitweise Operationen, Vergleichsoperatoren und Datenflusssteuerungsanweisungen, sowie Instruktionen wie sample, gather und load implementiert, sowie operaciones für ungeordneten Zugriff (UAV, Unordered Access View).

In der neuen Version:

  • Erste Unterstützung für die Shadersprache MSL (Metal Shading Language), die von Apple in der Grafik-API Metal verwendet wird, wurde hinzugefügt.
  • Die Unterstützung für einen Disassembler für binäre Effekte wurde implementiert.
  • In der Bibliothek libvkd3 wurde im Interface ID3D12GraphicsCommandList1 die Methode OMSetDepthBounds() implementiert, um den zulässigen Wertebereich für die Tiefe im Z-Puffer dynamisch zu ändern.
  • Die Umgebungsvariable VKD3D_CAPS_OVERRIDE wurde hinzugefügt, um die von Anwendungen zurückgegebenen Informationen über verfügbare Funktionen, wie die maximal unterstützten Funktionalitätslevel und Ressourcenbindungen, zu überschreiben.
  • Im Shader-Sprache HLSL wurde die erste Unterstützung für Tessellations-Shader hinzugefügt. Die integrierten Funktionen dst(), f32tof16(), mad(), modf() und sincos() wurden implementiert. Für die Shader-Modelle der Profile 1, 2 und 3 wurde die Unterstützung für die Operation „discard“ ergänzt. Außerdem wurde die Unterstützung für die Eingabesemantik SV_SampleIndex für Fragment-Shader und SV_GroupIndex für Compute-Shader hinzugefügt.
  • Eine große Anzahl neuer Anweisungen für die Shader-Sprache GLSL wurde implementiert.

Quelle: opennet.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster