Wine-projektet har udgivet en ny version af vkd3d 1.2-pakken med en Direct3D 12-implementering , der fungerer ved at oversætte kald til Vulkan-grafik-API'et.
Denne nye version af vkd3d 1.2 indeholder adskillige forbedringer, men de vigtigste, der skiller sig ud, er tilgængeligheden af libvkd3d-shader som et offentligt bibliotek , understøttelse af tessellation-shadere samt understøttelse af stream-output.
Pakken indeholder libvkd3d-biblioteket med Direct3D 12-implementeringer, libvkd3d-shader-biblioteket med en model 4 og 5 shader-oversætter og libvkd3d-utils-biblioteket med funktioner til at forenkle migreringen af Direct3D 12-applikationer, samt et sæt demoer, inklusive glxgears-porten til Direct3D 12. Projektkoden distribueres under LGPLv2.1-licensen.
libvkd3d-biblioteket understøtter de fleste Direct3D 12-funktioner, herunder grafik- og beregningsfunktioner, kommandolister og -køer, deskriptorer og heap-deskriptorer, rodsignaturer, uordnet adgang, samplere, kommandosignaturer, rodkonstanter, indirekte rendering osv.
Libvkd3d-shader implementerer oversættelsen af bytekode 4 og 5 fra shadermodeller til den mellemliggende SPIR-V-repræsentation. Punkter, pixels, tessellation, shadere med simple og beregningsmæssige geometrier, rodsignaturserialisering og deserialisering understøttes.
Shader-instruktioner omfatter aritmetiske, atomare og bit-for-bit operationer, dataflowkontrol og sammenligningsoperatorer, sampling-, indsamlings- og indlæsningsinstruktioner samt uordnede adgangsoperationer (UAV, Unordered Access View).
På dette udviklingstrin er ikke alle Direct3D 12-kald implementeret , og testen blev primært udført på et sæt demoapplikationer. Denne udgivelse inkluderer ikke funktioner under udvikling, såsom understøttelse af tessellation og shaders med kompleks geometri, samt adskillige forbedringer relateret til shaders og kernemetoder i Direct3D 12. Disse funktioner vil blive tilbudt i en fremtidig udgivelse.
Vigtigste nye funktioner i Vkd3d 1.2
En af de vigtigste ændringer i den nye version er tilgængeligheden af libvkd3d-shader-biblioteket til brug i tredjepartsprojekter, da flere Direct3D 12-funktioner er blevet tilføjet, såsom:
- Multi-prøveudtagning.
- Reserverede ressourcer.
- Forekomst af instansdata.
- "Private data" API til alle grænseflader.
- Komponenttilknytninger i Shader-ressourcevisning.
- VK_KHR_draw_indirect_count udvidelse.
- Predikat / betinget repræsentation.
- Dybdegengivelse uden pixelskygge.
- Dybdeudskæring. Dette kræver udvidelsen VK_EXT_depth_clip_enable.
- Kassér rasterizer.
- Dobbelt kildeblanding.
- Kortlægning af placerede ressourcer.
- Metoderne ReadFromSubresource () og WriteToSubresource () ID3D12Resource.
- Samtidig adgang til ressourcer i flere køer.
- Nul visninger. Det vil sige synspunkter uden en underliggende ressource.
- Flere flere forespørgsler om funktionssupport.
Derudover er den tilføjede understøttelse af konvertering, serialisering og deserialisering af rodsignaturer (vkd3d_serialize_versioned_root_signature() og vkd3d_create_versioned_root_signature_deserializer()) også bemærkelsesværdig , såvel som understøttelsen af streaming af output.
En anden bemærkelsesværdig ændring er implementeringen af miljøvariabler: VKD3D_CONFIG til at angive indstillinger for at ændre libvkd3ds opførsel og VKD3D_VULKAN_DEVICE til at tilsidesætte enheden for Vulkan API'en.
Derudover blev der tilføjet understøttelse af shading-instruktionerne bufinfo, eval_centroid, eval_sample_index, ld2ms, sample_b, sample_d, sample_info, samplepos og foreløbig understøttelse af model 5.1 shaders.
Og også support til OpenGL SPIR-V målmiljøer. Dette gør det muligt at bruge SPIR-V produceret af libvkd3d-shader med GL_ARB_gl_spirv. Dette inkluderer support til OpenGL-atomtællere og kombinerede samplere.
Endelig, hvis du vil vide mere om denne nye version, kan du se den komplette liste over ændringer på følgende link.
Hvordan installeres vkd3d på Linux?
For dem, der er interesseret i at være i stand til at installere vkd3d på deres system, skal de hente kildekoden og fortsætte med kompileringen, selvom de til praktiske formål eller for de nybegyndere kan prøve dette bibliotek uden megen anstrengelse. Til dette skal de kun installere lutris og inden for dets konfigurationer.
Hvad angår dem, der er interesseret i kompilering, skal de få koden med:
git clone git://source.winehq.org/git/vkd3d.git/
./autogen.sh
./configure
make
../vkd3d/configure --build=i686-pc-linux-gnu "CPPFLAGS=-m32" "LDFLAGS=-m32"
Endelig skal Vulkan-lagene være aktiveret:
export VK_INSTANCE_LAYERS=VK_LAYER_LUNARG_standard_validation
VKD3D_CONFIG=vk_debug