Projekat Wine je objavio izdanje paketa vkd3d 1.7 sa implementacijom Direct3D 12 koji radi putem emitovanja poziva na Vulkan grafički API. Paket uključuje libvkd3d biblioteke sa implementacijama Direct3D 12, libvkd3d-shader sa prevodiocem shader modela 4 i 5 i libvkd3d-utils sa funkcijama za pojednostavljenje prenosa Direct3D 12 aplikacija, kao i skup demo primjera, uključujući port od glxgears u Direct3D 12. Projektni kod se distribuira pod licencom LGPLv2.1.
Biblioteka libvkd3d podržava većinu Direct3D 12 funkcija, uključujući grafičke i računarske mogućnosti, redove i liste komandi, ručke i heap ručke, korijenske potpise, pristup van redoslijeda, uzorke, potpise naredbi, korijenske konstante, indirektno prikazivanje, Clear metode *( ) i Kopiraj*(). U libvkd3d-shaderu implementirano je prevođenje bajtkoda shader modela 4 i 5 u srednju SPIR-V reprezentaciju. Podržava temenske, pikselne, teselacijske, računarske i jednostavne geometrijske shadere, serijalizaciju korijenskog potpisa i deserializaciju. Instrukcije shadera uključuju aritmetičke, atomske i bitne operacije, operatore poređenja i kontrole protoka podataka, instrukcije uzorka, prikupljanja i učitavanja, operacije neuređenog pristupa (UAV, Unordered Access View).
U novoj verziji:
- Nastavljen je rad na poboljšanju kompajlera shadera u HLSL-u (High-Level Shader Language):
- Dodata mogućnost pozivanja prilagođenih funkcija i korištenja nizova kao parametara prilagođenih funkcija.
- Dodata podrška za parametre SV_DispatchThreadID, SV_GroupID i SV_GroupThreadID.
- Dodane ugrađene funkcije all(), distance(), exp(), exp2(), frac(), lit(), reflect(), sin(), cos(), smoothstep(), sqrt(), rsqrt () , step(), transpose().
- Dodata početna podrška za tipove s pomičnim zarezom niske preciznosti kao što je "min16float".
- Značajno poboljšana podrška za Direct3D 1/2/3 profile modela shadera.
- Dodan javni API za raščlanjivanje (vkd3d_shader_parse_dxbc) i serijalizaciju (vkd3d_shader_serialize_dxbc) DXBC binarnih podataka.
izvor: opennet.ru