Projekti Wine lëshimi i paketës me realizimin e Direct3D 12, i cili funksionon përmes përkthimit të thirrjeve në API-në grafike Vulkan. Paketa përfshin bibliotekat libvkd3d me zbatimin e Direct3D 12, libvkd3d-shader me përkthyesin e modeleve të shenjave 4 dhe 5, dhe libvkd3d-utils me funksione për thjeshtimin e portimit të aplikacioneve Direct3D 12, si dhe një grup shembujsh demonstrues, përfshirë portimin e glxgears në Direct3D 12. Kodi i projektit nën licencën LGPLv2.1.
Biblioteka libvkd3d përfshin shumicën e mundësive të Direct3D 12, duke përfshirë mjete për grafikë dhe llogaritje, radhët dhe listat e komandave, deshkruesit dhe deshkrues të grumbullit, nënshkrimet themelore, qasje të pa renditur, Sampler, nënshkrimet e komandave, konstantat themelore, çizme të drejtpërdrejta (indirect), metodat Clear*() dhe Copy*().
Në libvkd3d-shader është zbatuar përkthimi i kodit të bajtëve të modeleve 4 dhe 5 të shenjuesve në formën ndërmjetëse SPIR-V. Mbështeten shenjuesit e pikave, të dhëmbëve, të tesseluara, llogaritëse dhe gjeometrike të thjeshta, si dhe serializimi dhe deserializimi i nënshkrimit rrënjësor. Nga instruksionet e shenjuesve janë zbatuar operacionet aritmetike, atomike dhe bitore, operatorët e krahasimit dhe kontrollit të rrjedhës së të dhënave, instruksionet sample, gather dhe load, operacionet e qasjes së pakufizuar (UAV, Unordered Access View).
Ndër më të rëndësishmet në Vkd3d 1.2 veçohen:
- Gatishmëria e bibliotekës libvkd3d-shader për përdorim në projekte të palëve të treta.
- Mbështetje për shenjues të tesseluar.
- Mbështetje për konvertimin, serializimin dhe deserializimin e nënshkrimeve rrënjësore (vkd3d_serialize_versioned_root_signature() dhe vkd3d_create_versioned_root_signature_deserializer()).
- Mbështetje për daljen në rrjedhë.
- Zbatimi i shumë mundësive të tjera të paqasshme më parë të Direct3D 12, duke përfshirë mbështetje për multisimulim, rezervimin e burimeve,
renderimin me indeks të drejtpërdrejtë, renderimin e thellësisë pa shenjues të pikave, qasje të njëkohshme në burime nga radhët e ndryshme të komandave, pamje të zeros (Null-views). - Shtuar variablat e ambientit: VKD3D_CONFIG për të vendosur opsionet për të ndryshuar sjelljen e libvkd3d dhe VKD3D_VULKAN_DEVICE për të kaluar pajisjen për API Vulkan.
- Shtuar mbështetje për instrukcionet e shenjave bufinfo,
eval_centroid,
eval_sample_index,
ld2ms,
sample_b,
sample_d,
sample_info,
samplepos.
Burimi: opennet.ru
