Proiectul Vinului
biblioteca libvkd3d
libvkd3d-shader implementează traducerea bytecode 4 și 5 ale modelelor shader într-o reprezentare intermediară a SPIR-V. Suportă vertex, pixel, tesselation, calcul și umbrire geometrie simplă, serializare și deserializare semnături rădăcină. Operații aritmetice, atomice și pe biți, operatorii de comparare și control al fluxului de date, instrucțiuni de eșantionare, colectare și încărcare, operațiuni de acces neordonat (UAV, Unordered Access View) sunt implementate din instrucțiunile shader.
Printre cele mai semnificative
- Biblioteca libvkd3d-shader este gata de utilizare în proiecte terță parte.
- Suport pentru shader tesselation.
- Suport pentru conversia, serializarea și deserializarea semnăturilor rădăcină (vkd3d_serialize_versioned_root_signature() și vkd3d_create_versioned_root_signature_deserializer()).
- Suport pentru ieșire în flux.
- Implementarea multor funcții Direct3D 12 indisponibile anterior, inclusiv suport pentru eșantionare multiplă, rezervare de resurse,
randare indirectă indexată, randare în profunzime fără pixel shaders, acces simultan la resurse din diferite cozi de comandă, vizualizări nule. - S-au adăugat variabile de mediu: VKD3D_CONFIG pentru a seta opțiuni pentru a modifica comportamentul libvkd3d și VKD3D_VULKAN_DEVICE pentru a suprascrie dispozitivul pentru API-ul Vulkan.
- S-a adăugat suport pentru instrucțiunile bufinfo shader,
eval_centroid,
eval_sample_index,
ld2ms,
sample_b,
sample_d,
sample_info,
samplepos.
Sursa: opennet.ru