Проектът Wine публикува Vkd3d 1.14 с реализация на Direct3D 12.

Проект Wine публикува нова версия на пакета vkd3d 1.14 с реализиране на Direct3D 12, работеща чрез транслация на повиквания в графичния API Vulkan. Пакетът включва библиотеки libvkd3d с реализация на Direct3D 12, libvkd3d-shader с транслатор за шейдъри от четвърта и пета версия и libvkd3d-utils с функции за улесняване на портването на приложения Direct3D 12, както и набор от демонстрационни примери, включително порта glxgears за Direct3D 12. Кодът на проекта се разпространява под лиценз LGPLv2.1.

Библиотеката libvkd3d поддържа повечето възможности на Direct3D 12, включително средства за графика и изчисления, опашки и списъци с команди, дескриптори и куп дескриптори, коренови сигнатури, неупорядочен достъп, Sampler-и, сигнатури на команди, коренови константи, непряка (indirect) отрисовка, методи Clear*() и Copy*(). В libvkd3d-shader е реализирана транслация на байткода на шейдерите в междинно представяне SPIR-V. Поддържат се върхови, пикселни, тесселационни, изчислителни и основни геометрични шейдери, сериализация и десериализация на кореновата сигнатура. От шейдерните инструкции са реализирани аритметични, атомарни и битови операции, оператори за сравнение и управление на потока на данни, инструкции sample, gather и load, операции за неупорядочен достъп (UAV, Unordered Access View).

В новата версия:

  • Добавена е начална поддръжка на езика за шейдъри MSL (Metal Shading Language), използван от Apple в графичния API Metal.
  • Реализирана е поддръжка на дизасемблер за бинарни ефекти.
  • В библиотеката libvkd3 в интерфейса ID3D12GraphicsCommandList1 е реализиран методът OMSetDepthBounds() за динамично променяне на допустимия диапазон от стойности на дълбочината в Z-буфера.
  • Добавена е променлива на средата VKD3D_CAPS_OVERRIDE за пренастройване на информацията, предоставяна на приложенията относно наличните възможности, като максимално поддържани нива на функционалност и свързване на ресурси.
  • В реализацията на езика шейдъри HLSL е добавена начална поддръжка на теселационни шейдъри. Реализирани са вградени функции dst(), f32tof16(), mad(), modf() и sincos(). За профили 1, 2 и 3 на шейдърите е добавена поддръжка на операцията "discard". Добавена е поддръжка на семантиката на входните данни SV_SampleIndex за фрагментни шейдъри и SV_GroupIndex за компютърни шейдъри.
  • Реализирана е голяма порция нови инструкции за езика шейдъри GLSL.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster