Vinprojektet har frigivet Vkd3d 1.2 med Direct3D 12 implementering

Vin projekt опубликовал pakkefrigivelse vkd3d 1.2 med en Direct3D 12-implementering, der fungerer gennem udsendelse af opkald til Vulkan grafik API. Pakken indeholder libvkd3d-biblioteker med implementeringer af Direct3D 12, libvkd3d-shader med en oversætter af shader-modeller 4 og 5 og libvkd3d-utils med funktioner til at forenkle porteringen af ​​Direct3D 12-applikationer, samt et sæt demo-eksempler, inklusive en port af glxgears til Direct3D 12. Projektkode distribueret af licenseret under LGPLv2.1.

libvkd3d bibliotek bakker op De fleste af funktionerne i Direct3D 12, inklusive grafik og computerfaciliteter, køer og kommandolister, håndtag og heap-håndtag, rodsignaturer, out-of-order adgang, samplere, kommandosignaturer, rodkonstanter, indirekte gengivelse, Clear*()-metoder og Kopi*().

I libvkd3d-shader implementeres oversættelsen af ​​bytekode for shader-modeller 4 og 5 til en mellemliggende SPIR-V-repræsentation. Vertex, pixel, tessellation, beregning og simpel geometri shaders, rodsignatur-serialisering og deserialisering understøttes. Shader-instruktioner omfatter aritmetiske, atom- og bitoperationer, sammenlignings- og dataflowkontroloperatører, sample, indsamle og indlæse instruktioner, uordnede adgangsoperationer (UAV, Unordered Access View).

Blandt de mest betydningsfulde innovationer i Vkd3d 1.2 er følgende fremhævet:

  • Libvkd3d-shader-biblioteket er klar til brug i tredjepartsprojekter.
  • Tessellation shader støtte.
  • Understøttelse af konvertering, serialisering og deserialisering af rodsignaturer (vkd3d_serialize_versioned_root_signature() og vkd3d_create_versioned_root_signature_deserializer()).
  • Understøttelse af streaming output.
  • Implementering af mange tidligere utilgængelige Direct3D 12-funktioner, herunder understøttelse af multisampling, ressourcereservation,
    indirekte indekseret gengivelse, dybdegengivelse uden pixel shaders, samtidig adgang til ressourcer fra forskellige kommandokøer, Null-visninger.

  • Tilføjede miljøvariabler: VKD3D_CONFIG for at indstille muligheder for at ændre libvkd3d adfærd og VKD3D_VULKAN_DEVICE for at tilsidesætte enheden til Vulkan API.
  • Tilføjet understøttelse af buffinfo shader instruktioner,
    eval_centroid,
    eval_sample_index,
    ld2ms,
    sample_b,
    sample_d,
    sample_info,
    samplepos.

Kilde: opennet.ru

Tilføj en kommentar