El Proyecto víno odhaleno Před několika dny byla spuštěna nová verze Balíček vkd3d 1.7 s implementací Direct3D 12, která funguje prostřednictvím překladu volání do grafického API Vulkan.
El paquete obsahuje knihovny libvkd3d s implementacemi Direct3D 12, libvkd3d-shader s shader model translate 4 a 5 a libvkd3d-utils s funkcemi pro zjednodušení migrace aplikací Direct3D 12 a také sadou ukázek, včetně portu glxgears na Direct3D 12.
Knihovna libvkd3d podporuje většinu funkcí Direct3D 12, včetně grafiky a výpočtů, seznamů příkazů a front, deskriptorů a deskriptorů haldy, kořenových signatur, neuspořádaného přístupu, vzorků, signatur příkazů, kořenových konstant, nepřímé reprezentace, metod Clear*() a Copy*().
Kromě toho libvkd3d-shader implementuje překlad bajtkódu 4 a 5 stínících modelů ve střední reprezentaci SPIR-V. Podporuje vertex, pixel, teselaci, výpočty a jednoduché geometrické shadery, serializaci kořenových signatur a deserializaci.
Aritmetické, atomické a bitové operace, operátory porovnávání a řízení toku dat, vzorkování, shromažďování a načítání instrukcí, operace přístupu mimo pořadí (UAV, zobrazení přístupu mimo pořadí) jsou implementovány ze stínových instrukcí.
Hlavní nové funkce vkd3d 1.7
V této nové verzi, která je představena vkd3d 1.7, vyniká éPokračoval jsem v práci na vylepšení kompilátoru HLSL shaderu (High-Level Shader Language), stejně jako přidání možnosti volat uživatelem definované funkce a používat pole jako parametry uživatelsky definovaných funkcí.
Další ze změn, která v nové verzi vyniká, je výrazně vylepšená podpora profilů shader model Direct3D 1/2/3, Také přidána počáteční podpora pro typy s plovoucí desetinnou čárkou s nízkou přesností, jako je min16float.
Je také zdůrazněno, že přidána podpora pro parametry SV_DispatchThreadID, SV_GroupID a SV_GroupThreadID a že bylo přidáno veřejné API pro analýzu (vkd3d_shader_parse_dxbc) a serializaci (vkd3d_shader_serialize_dxbc) binárních dat DXBC.
Z další změny, které vynikají nové verze:
- Podpora pro volitelný parametr "offset" objektu textury Load().
metoda. - Podpora vnitřní funkce all().
- Podpora vnitřní funkce distance().
- Podpora vnitřních funkcí exp() a exp2().
- Podpora vnitřní funkce frac().
- Podpora pro vnitřní funkci lit().
- Podpora vnitřní funkce reflect().
- Podpora vnitřních funkcí sin() a cos().
- Podpora vnitřní funkce smoothstep().
- Podpora vnitřních funkcí sqrt() a rsqrt().
- Podpora vnitřní funkce step().
- Podpora vnitřní funkce transpose().
- Podpora pro varianty dat float a dword bez ohledu na velikost písmen
typy - Částečná podpora pro datové typy s minimální přesností, jako je „min16float“. Ty jsou v současnosti interpretovány jako jejich běžné protějšky.
Vylepšená podpora konstantního šíření, zejména konstantního šíření pomocí swizzles. - Možnost kompilace VKD3D_SHADER_COMPILE_OPTION_WRITE_TESS_GEOM_POINT_SIZE lze použít k určení, zda mají shadery SPIR-V zacílené na prostředí Vulkan zapisovat velikosti bodů pro shadery geometrie a tessellation, pokud není zadána, budou zapsány velikosti bodů.
Konečně, Pro ty, kteří se o tom chtějí dozvědět více, měli by vědět, že kód projektu je licencován pod LGPLv2.1 a že si mohou přečíst podrobnosti o této nové verzi Na následujícím odkazu.
Jak nainstalovat vkd3d 1.7?
pro zájem o možnost nainstalovat vkd3d Musí vědět, že musí zkompilovat zdrojový kód, takže jej musíme nejprve získat, je důležité zmínit, že Vkd3d závisí na SPIRV-Headers a Vulkan-Headers (>= 1.2.139).
Pro provedení kompilace musíme otevřít terminál a do něj napíšeme následující příkaz:
git clone https://gitlab.winehq.org/wine/vkd3d.git
Jakmile je toto hotovo, přistoupíme k vstupu do nedávno staženého adresáře pomocí:
cd vkd3d
A pokračujeme ke kompilaci provedením následujících příkazů:
./configure make make install
Si chcete vědět více o kompilaci vkd3d si můžete zkontrolovat podrobnosti v tento odkaz