El proyecto Wine ha publicado la versión del paquete vkd3d 1.7 con la implementación de Direct3D 12, que funciona mediante la traducción de llamadas a la API gráfica Vulkan. El paquete incluye las bibliotecas libvkd3d con la implementación de Direct3D 12, libvkd3d-shader con el traductor de modelos de sombreador 4 y 5, y libvkd3d-utils con funciones para facilitar la portabilidad de aplicaciones Direct3D 12, así como un conjunto de ejemplos de demostración, incluyendo el puerto de glxgears a Direct3D 12. El código del proyecto se distribuye bajo la licencia LGPLv2.1.
La biblioteca libvkd3d soporta la mayor parte de las funcionalidades de Direct3D 12, incluyendo herramientas para gráficos y cálculos, colas y listas de comandos, descriptores y descriptores de montones, firmas raíz, acceso desordenado, Samplers, firmas de comandos, constantes raíz, renderizado indirecto, métodos Clear*() y Copy*(). En libvkd3d-shader se implementó la traducción de bytecode de versiones 4 y 5 de modelos de shaders a la representación intermedia SPIR-V. Se soportan shaders de vértices, píxeles, teselación, cómputo y de geometría simple, así como la serialización y deserialización de la firma raíz. Se han implementado instrucciones de shaders para operaciones aritméticas, atómicas y bitwise, operadores de comparación y control del flujo de datos, instrucciones sample, gather y load, y operaciones de acceso desordenado (UAV, Unordered Access View).
En la nueva versión:
- Continúa el trabajo en la mejora del compilador de sombreados en HLSL (High-Level Shader Language):
- Se ha añadido la capacidad de invocar funciones personalizadas y utilizar matrices como parámetros de funciones personalizadas.
- Se ha añadido soporte para los parámetros SV_DispatchThreadID, SV_GroupID y SV_GroupThreadID.
- Se han añadido funciones integradas all(), distance(), exp(), exp2(), frac(), lit(), reflect(), sin(), cos(), smoothstep(), sqrt(), rsqrt(), step(), transpose().
- Se ha añadido soporte inicial para tipos de baja precisión de punto flotante, como 'min16float'.
- Se ha mejorado significativamente el soporte para los perfiles de modelo de sombreador Direct3D 1/2/3.
- Se ha añadido una 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
