Le projet Wine a publié Vkd3d 1.7 avec l'implémentation de Direct3D 12

Le projet Wine a publié la version du package vkd3d 1.7 avec une implémentation de Direct3D 12 qui fonctionne via la diffusion d'appels à l'API graphique Vulkan. Le package comprend les bibliothèques libvkd3d avec des implémentations de Direct3D 12, libvkd3d-shader avec un traducteur des modèles de shader 4 et 5 et libvkd3d-utils avec des fonctions pour simplifier le portage des applications Direct3D 12, ainsi qu'un ensemble d'exemples de démonstration, y compris un portage. de glxgears vers Direct3D 12. Le code du projet est distribué sous licence LGPLv2.1.

La bibliothèque libvkd3d prend en charge la plupart des fonctionnalités de Direct3D 12, notamment les fonctionnalités graphiques et informatiques, les files d'attente et les listes de commandes, les handles et les handles de tas, les signatures racine, l'accès dans le désordre, les échantillonneurs, les signatures de commande, les constantes racine, le rendu indirect, les méthodes Clear *( ) et Copier*(). Dans libvkd3d-shader, la traduction du bytecode des modèles de shader 4 et 5 en une représentation SPIR-V intermédiaire est implémentée. Prend en charge les shaders de sommets, de pixels, de tessellation, de calcul et de géométrie simple, la sérialisation et la désérialisation des signatures racines. Les instructions de shader incluent des opérations arithmétiques, atomiques et binaires, des opérateurs de comparaison et de contrôle de flux de données, des instructions d'échantillonnage, de collecte et de chargement, des opérations d'accès non ordonnées (UAV, Unordered Access View).

Dans la nouvelle version:

  • Les travaux se sont poursuivis pour améliorer le compilateur de shader en HLSL (High-Level Shader Language) :
    • Ajout de la possibilité d'appeler des fonctions personnalisées et d'utiliser des tableaux comme paramètres des fonctions personnalisées.
    • Ajout de la prise en charge des paramètres SV_DispatchThreadID, SV_GroupID et SV_GroupThreadID.
    • Ajout des fonctions intégrées all(), distance(), exp(), exp2(), frac(), lit(), reflex(), sin(), cos(), smoothstep(), sqrt(), rsqrt () , step(), transpose().
    • Ajout de la prise en charge initiale des types à virgule flottante de faible précision tels que "min16float".
  • Prise en charge considérablement améliorée des profils de modèles de shader Direct3D 1/2/3.
  • Ajout d'une API publique pour l'analyse (vkd3d_shader_parse_dxbc) et la sérialisation (vkd3d_shader_serialize_dxbc) des données binaires DXBC.

Source: opennet.ru

Ajouter un commentaire