El proyecto Wine ha publicado el lanzamiento del paquete vkd3d 1.7 con una implementación de Direct3D 12 que funciona mediante llamadas de difusión a la API de gráficos Vulkan. El paquete incluye bibliotecas libvkd3d con implementaciones de Direct3D 12, libvkd3d-shader con un traductor de los modelos de sombreado 4 y 5 y libvkd3d-utils con funciones para simplificar la migración de aplicaciones Direct3D 12, así como un conjunto de ejemplos de demostración, incluido un puerto. de glxgears a Direct3D 12. El código del proyecto se distribuye con licencia LGPLv2.1.
La biblioteca libvkd3d admite la mayoría de las funciones de Direct3D 12, incluidas funciones informáticas y gráficas, colas y listas de comandos, identificadores y identificadores de montón, firmas raíz, acceso desordenado, muestreadores, firmas de comandos, constantes raíz, renderizado indirecto, métodos Clear *( ) y Copiar*(). En libvkd3d-shader, se implementa la traducción del código de bytes de los modelos de sombreador 4 y 5 a una representación SPIR-V intermedia. Admite sombreadores de vértices, píxeles, teselación, computación y geometría simple, serialización y deserialización de firmas de raíz. Las instrucciones de sombreado incluyen operaciones aritméticas, atómicas y de bits, operadores de comparación y control de flujo de datos, instrucciones de muestreo, recopilación y carga, operaciones de acceso desordenado (UAV, vista de acceso desordenado).
Versículos nuevos:
- Se continuó trabajando para mejorar el compilador de sombreadores en HLSL (lenguaje de sombreador de alto nivel):
- Se agregó la capacidad de llamar a funciones personalizadas y usar matrices como parámetros para funciones personalizadas.
- Se agregó soporte para los parámetros SV_DispatchThreadID, SV_GroupID y SV_GroupThreadID.
- Se agregaron funciones integradas all(), Distance(), exp(), exp2(), frac(), lit(), reflect(), sin(), cos(), smoothstep(), sqrt(), rsqrt. () , paso(), transposición().
- Se agregó soporte inicial para tipos de punto flotante de baja precisión como "min16float".
- Compatibilidad significativamente mejorada con perfiles de modelo de sombreado Direct3D 1/2/3.
- Se agregó API pública para el análisis (vkd3d_shader_parse_dxbc) y la serialización (vkd3d_shader_serialize_dxbc) de datos binarios DXBC.
Fuente: opennet.ru