El Proyecto Společnost Wine vydala novou verzi balíčku vkd3d 1.2 s implementace Direct3D 12 který funguje převodem volání na grafické rozhraní Vulkan.
Tato nová verze vkd3d 1.2 obsahuje různá vylepšení, ale hlavní, které vynikají, jsou dostupnost libvkd3d-shaderu jako veřejné knihovnyse podpora shaderu mozaikování, stejně jako podpora výstupu toku.
Balíka zahrnuje libvkd3d knihovny s implementacemi Direct3D 12, libvkd3d-shader s překladačem shaderů modelu 4 a 5 a libvkd3d-utils s funkcemi pro zjednodušení migrace aplikací Direct3D 12, stejně jako sada ukázek, včetně portu glxgears na Direct3D 12. Kód projektu je distribuován s licencí pod LGPLv2.1.
Knihovna libvkd3d podporuje většinu funkcí Direct3D 12, včetně grafických a výpočetních funkcí, seznamů příkazů a front, deskriptorů a deskriptorů haldy, podpisů root, neuspořádaného přístupu, vzorníků, podpisů příkazů, kořenových konstant, nepřímé reprezentace atd.
libvkd3d-shader implementuje překlad byte kódu 4 a 5 vzorů stínování v mezilehlé reprezentaci SPIR-V. Podporovány jsou vrcholy, pixely, mozaikování, výpočetní a jednoduchá shadery geometrie, serializace podpisů root a deserializace.
Pokyny shaderu zahrnují aritmetické, atomové a bitové operace, operátory řízení a porovnávání toku dat, pokyny pro vzorkování, sběr a načítání, operace neuspořádaného přístupu (UAV, zobrazení neuspořádaného přístupu).
V současné fázi vývoje nejsou implementována všechna volání Direct3D 12 a testy byly prováděny hlavně na sadě demo aplikací. Tato verze neobsahuje vývojové funkce, jako je podpora shaderů složité geometrie a mozaikování, stejně jako řada vylepšení souvisejících se základními metodami a shadery Direct3D 12. Tyto funkce budou nabízeny v budoucím vydání.
Hlavní nové funkce Vkd3d 1.2
Z nejdůležitějších změn, které jsou v nové verzi představeny, je dostupnost knihovny libvkd3d-shader pro použití v projektech třetích stran Byly přidány různé funkce Direct3D 12, například:
- Vícenásobné vzorkování.
- Rezervované zdroje.
- Rychlost předávání dat instance.
- „Soukromá data“ API pro všechna rozhraní.
- Mapování komponent shaderu pro zobrazení zdrojů.
- Rozšíření VK_KHR_draw_indirect_count.
- Predikátové / podmíněné vyjádření.
- Hloubkové vykreslení bez shaderu pixelů.
- Hloubkový výřez. To vyžaduje rozšíření VK_EXT_depth_clip_enable.
- Zrušte rasterizer.
- Míchání dvou zdrojů.
- Mapování umístěných zdrojů.
- Metody ID3D12Resource ReadFromSubresource () a WriteToSubresource ().
- Simultánní přístup k prostředkům s více frontami.
- Nulové pohledy. To znamená, pohledy bez podkladového zdroje.
- Několik dalších dotazů na podporu funkcí.
Kromě toho přidána je také podpora pro převod, serializaci a deserializaci podpisů root (vkd3d_serialize_versioned_root_signature () a vkd3d_create_versioned_root_signature_deserializer (), stejně jako podpora pro streamovaný výstup.
Další změnou, která vyniká, je implementace proměnné prostředí: VKD3D_CONFIG k nastavení možností pro změnu chování knihoven libvkd3d a VKD3D_VULKAN_DEVICE k přepsání zařízení pro rozhraní Vulkan API.
kromě toho přidána podpora pro pokyny pro stínování bufinfo, eval_centroid, eval_sample_index, ld2ms, sample_b, sample_d, sample_info, samplepos a předběžná podpora pro shadery modelu 5.1.
A také podpora pro cílová prostředí OpenGL SPIR-V. To umožňuje použití SPIR-V produkovaného libvkd3d-shaderem s GL_ARB_gl_spirv. To zahrnuje podporu pro počítadla atomů OpenGL a kombinované vzorkovače.
Konečně pokud o tom chcete vědět víc o této nové verzi můžete zkontrolovat kompletní seznam změn Na následujícím odkazu.
Jak nainstalovat vkd3d na Linux?
Pro ty, kteří mají zájem o instalaci vkd3d na svůj systém, by měli získat zdrojový kód a pokračovat v kompilaci, i když z praktických důvodů nebo pro nováčky mohou tuto knihovnu bez velké námahy vyzkoušet. K tomu musí nainstalovat pouze lutris a v rámci jeho konfigurací.
Pokud jde o zájemce o kompilaci, musí získat kód s:
git clone git://source.winehq.org/git/vkd3d.git/
./autogen.sh
./configure
make
../vkd3d/configure --build=i686-pc-linux-gnu "CPPFLAGS=-m32" "LDFLAGS=-m32"
Nakonec musí být povoleny vrstvy vulkánu:
export VK_INSTANCE_LAYERS=VK_LAYER_LUNARG_standard_validation
VKD3D_CONFIG=vk_debug