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