Az vkd3d 1.2 kompatibilitási fejlesztésekkel, árnyékolással és egyebekkel rendelkezik

A Wine projekt kiadta a vkd3d 1.2 csomag új verzióját egy Direct3D 12 implementációval , amely a hívásokat a Vulkan grafikus API-ra fordítja.

A vkd3d 1.2 ezen új verziója számos fejlesztést tartalmaz, de a legfontosabbak a libvkd3d-shader elérhetősége nyilvános könyvtárként , a tessellation shaderek támogatása , valamint a stream kimenet támogatása.

A csomag tartalmazza a libvkd3d könyvtárat Direct3D 12 implementációkkal, a libvkd3d-shader könyvtárat 4-es és 5-ös modellű shader fordítóval, valamint a libvkd3d-utils könyvtárat a Direct3D 12 alkalmazások migrálásának egyszerűsítésére szolgáló függvényekkel, valamint egy sor demót, beleértve a glxgears Direct3D 12-re portolását. A projektkód az LGPLv2.1 licenc alatt kerül terjesztésre.

A libvkd3d könyvtár a legtöbb Direct3D 12 funkciót támogatja, beleértve a grafikus és számítási függvényeket, parancslistákat és -sorokat, leírókat és heap leírókat, gyökérszignatúrákat, rendezetlen hozzáférést, mintavevőket, parancsszignatúrákat, gyökérkonstansokat, indirekt renderelést stb.

A Libvkd3d-shader a shader modellek 4. és 5. bájtkódjának köztes SPIR-V reprezentációvá való fordítását valósítja meg . Támogatott a csúcspontok, pixelek, tesselláció, egyszerű és számítógépes geometriai shaderek, gyökérszignatúra-szerializáció és a deszerializáció.

A shader utasítások magukban foglalják a számtani, atomi és bitenkénti műveleteket, az adatfolyam-vezérlési és összehasonlító operátorokat, a mintavételezési, gyűjtési és betöltési utasításokat, valamint a rendezetlen hozzáférési műveleteket (UAV, Unordered Access View).

A fejlesztés jelenlegi szakaszában még nem minden Direct3D 12 hívás van implementálva , és a tesztelést elsősorban egy sor demó alkalmazáson végezték. Ez a kiadás nem tartalmaz fejlesztés alatt álló funkciókat, mint például a tesselláció és az összetett geometriájú shaderek támogatása, valamint számos, a shaderekhez és az alapvető Direct3D 12 metódusokhoz kapcsolódó fejlesztést. Ezek a funkciók egy későbbi kiadásban lesznek elérhetők.

A Vkd3d 1.2 fő újdonságai

Az új verzió egyik legfontosabb változása a libvkd3d-shader könyvtár elérhetősége harmadik féltől származó projektekben való használatra, mivel számos Direct3D 12 funkció került hozzáadásra, például:

  • Több mintavétel.
  • Foglalt források.
  • Példány adattovábbítási arányok.
  • "Privát adat" API az összes interfészhez.
  • Shader erőforrás nézet összetevő hozzárendelések.
  • VK_KHR_draw_indirect_count kiterjesztés.
  • Predikátum / feltételes ábrázolás.
  • Mélység renderelés pixel shader nélkül.
  • Mélység kivágás. Ehhez a VK_EXT_depth_clip_enable kiterjesztés szükséges.
  • Dobja ki a rasztert.
  • Kettős forráskeverés.
  • Az elhelyezett erőforrások feltérképezése.
  • A ReadFromSubresource () és a WriteToSubresource () ID3D12Resource módszerek.
  • Egyidejű hozzáférés a többsoros erőforrásokhoz.
  • Null nézetek. Vagyis nézetek mögöttes erőforrás nélkül.
  • Több további szolgáltatás-támogatási kérdés.

Ezen felül figyelemre méltó a root aláírások konvertálásának, szerializálásának és deszerializálásának támogatása (vkd3d_serialize_versioned_root_signature() és vkd3d_create_versioned_root_signature_deserializer()) , valamint a streamelt kimenet támogatása is.

Egy másik figyelemre méltó változás a környezeti változók implementálása: a VKD3D_CONFIG a libvkd3d viselkedését módosító opciók beállításához, a VKD3D_VULKAN_DEVICE pedig az eszköz felülbírálásához a Vulkan API esetében.

Ezenkívül támogatást adtak a bufinfo, eval_centroid, eval_sample_index, ld2ms, sample_b, sample_d, sample_info, samplepos árnyékolási utasításokhoz , valamint előzetes támogatást nyújtottak a model 5.1 shaderekhez.

Emellett támogatja az OpenGL SPIR-V célkörnyezeteket. Ez lehetővé teszi a libvkd3d-shader által előállított SPIR-V használatát a GL_ARB_gl_spirv-vel. Ez magában foglalja az OpenGL atomszámlálók és a kombinált mintavevők támogatását.

Végül, ha többet szeretne megtudni erről az új verzióról, a következő linken tekintheti meg a változások teljes listáját .

Hogyan kell telepíteni a vkd3d szoftvert Linuxra?

Azok számára, akik érdekeltek abban, hogy telepíthessék a vkd3d fájlt a rendszerükbe, meg kell szerezniük a forráskódot, és folytatniuk kell az összeállítást, bár gyakorlati célokból vagy az újoncok számára különösebb erőfeszítés nélkül kipróbálhatják ezt a könyvtárat. Ehhez csak a lutris-t kell telepíteniük és annak konfigurációin belül.

Ami az összeállítás iránt érdeklődőket illeti, meg kell szerezniük a kódot:

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

Végül engedélyezni kell a Vulkan rétegeket:

export VK_INSTANCE_LAYERS=VK_LAYER_LUNARG_standard_validation
VKD3D_CONFIG=vk_debug


Hozzáadás előnyben részesített forrásként a Google-ben