Projekt Wine wydało nową wersję pakietu vkd3d 1.2 z implementacja Direct3D 12 który działa poprzez tłumaczenie wywołań do API graficznego Vulkan.
Ta nowa wersja vkd3d 1.2 zawiera różne ulepszenia, ale z głównych, które się wyróżniają, to dostępność libvkd3d-shader jako biblioteki publicznej, obsługa shaderów mozaikowanie, a także wsparcie wyjścia przepływu.
Paczkai obejmuje biblioteki libvkd3d z implementacjami Direct3D 12, libvkd3d-shader z translatorem shaderów modeli 4 i 5 oraz libvkd3d-utils z funkcjami upraszczającymi migrację aplikacji Direct3D 12, a także zestawem demonstracyjnym, w tym portem glxgears do Direct3D 12. Kod projektu jest rozpowszechniany na licencji LGPLv2.1.
Biblioteka libvkd3d obsługuje większość funkcji Direct3D 12, w tym funkcje graficzne i obliczeniowe, listy poleceń i kolejki, deskryptory i deskryptory sterty, sygnatury główne, dostęp nieuporządkowany, próbniki, sygnatury poleceń, stałe główne, reprezentacja pośrednia i tak dalej.
libvkd3d-shader implementuje tłumaczenie kodu bajtu 4 i 5 wzorów cieniowania w reprezentacji pośredniej SPIR-V. Obsługiwane są wierzchołki, piksele, mozaikowanie, obliczeniowe i proste moduły cieniujące geometrii, serializacja sygnatur głównych i deserializacja.
Instrukcje shadera obejmują operacje arytmetyczne, atomowe i bitowe, operatorzy kontroli i porównania przepływu danych, instrukcje pobierania próbek, pobierania i ładowania, operacje dostępu nieuporządkowanego (UAV, widok dostępu nieuporządkowanego).
Na obecnym etapie rozwoju nie wszystkie wywołania Direct3D 12 są realizowane a testy były przeprowadzane głównie na zestawie aplikacji demonstracyjnych. To wydanie nie zawiera funkcji będących w trakcie opracowywania, takich jak obsługa złożonych shaderów geometrii i teselacji, a także szeregu ulepszeń związanych z podstawowymi metodami i modułami cieniującymi Direct3D 12. Te funkcje będą oferowane w przyszłej wersji.
Główne nowe funkcje Vkd3d 1.2
Z najważniejszych zmian, które zostały zaprezentowane w nowej wersji, dotyczy Dostępność biblioteki libvkd3d-shader do użytku w projektach stron trzecich, od Dodano różne funkcje Direct3D 12, takie jak:
- Pobieranie wielu próbek.
- Zarezerwowane zasoby.
- Szybkość przesyłania danych instancji.
- API „danych prywatnych” dla wszystkich interfejsów.
- Odwzorowania komponentów widoku zasobów modułu cieniującego.
- Rozszerzenie VK_KHR_draw_indirect_count.
- Reprezentacja predykatu / warunkowa.
- Renderowanie głębi bez modułu cieniującego pikseli.
- Wycięcie na głębokość. Wymaga to rozszerzenia VK_EXT_depth_clip_enable.
- Odrzuć rasteryzator.
- Miksowanie z dwoma źródłami.
- Mapowanie umieszczonych zasobów.
- Metody ReadFromSubresource () i WriteToSubresource () ID3D12Resource.
- Jednoczesny dostęp do zasobów wielu kolejek.
- Widoki zerowe. Oznacza to, że widoki bez podstawowego zasobu.
- Kilka dodatkowych pytań dotyczących pomocy technicznej.
Oprócz tego Dodano również obsługę konwersji, serializacji i deserializacji podpisów root (vkd3d_serialize_versioned_root_signature () i vkd3d_create_versioned_root_signature_deserializer (), a także obsługę przesyłania strumieniowego.
Kolejną wyróżniającą się zmianą jest implementacja zmiennej środowiskowej: VKD3D_CONFIG, aby ustawić opcje zmiany zachowania libvkd3d i VKD3D_VULKAN_DEVICE, aby zastąpić urządzenie dla API Vulkan.
poza tym dodano obsługę instrukcji cieniowania bufinfo, eval_centroid, eval_sample_index, ld2ms, sample_b, sample_d, sample_info, samplepos oraz wstępne wsparcie dla shaderów modelu 5.1.
A także wsparcie dla środowisk docelowych OpenGL SPIR-V. Dzięki temu SPIR-V wyprodukowany przez libvkd3d-shader może być używany z GL_ARB_gl_spirv. Obejmuje to obsługę liczników atomowych OpenGL i połączonych próbników.
W końcu jeśli chcesz dowiedzieć się więcej na ten temat o nowej wersji możesz sprawdzić pełną listę zmian W poniższym linku.
Jak zainstalować vkd3d w systemie Linux?
Ci, którzy są zainteresowani instalacją vkd3d w swoim systemie, powinni uzyskać kod źródłowy i kontynuować kompilację, chociaż ze względów praktycznych lub dla początkujących mogą wypróbować tę bibliotekę bez większego wysiłku. W tym celu muszą tylko zainstalować lutris w jego konfiguracjach.
Osoby zainteresowane kompilacją muszą otrzymać kod zawierający:
git clone git://source.winehq.org/git/vkd3d.git/
./autogen.sh
./configure
make
../vkd3d/configure --build=i686-pc-linux-gnu "CPPFLAGS=-m32" "LDFLAGS=-m32"
Wreszcie warstwy Vulkan muszą być włączone:
export VK_INSTANCE_LAYERS=VK_LAYER_LUNARG_standard_validation
VKD3D_CONFIG=vk_debug