پروژه Wine انتشار بسته vkd3d 1.5 را با پیاده سازی Direct3D 12 منتشر کرده است که از طریق پخش تماس ها به API گرافیکی Vulkan کار می کند. این بسته شامل کتابخانههای libvkd3d با پیادهسازی Direct3D 12، libvkd3d-shader با مترجم مدلهای سایه زن 4 و 5 و libvkd3d-utils با عملکردهایی برای سادهسازی پورت کردن برنامههای Direct3D 12 و همچنین مجموعهای از نمونههای نمایشی شامل پورت است. از glxgears به Direct3D 12. کد پروژه با مجوز LGPLv2.1 توزیع شده است.
کتابخانه libvkd3d از اکثر ویژگیهای Direct3D 12 پشتیبانی میکند، از جمله امکانات گرافیکی و محاسباتی، صفها و فهرستهای دستوری، دستهها و دستههای پشته، امضاهای ریشه، دسترسی خارج از دستور، نمونهها، امضاهای فرمان، ثابتهای ریشه، رندر غیرمستقیم، روشهای پاک کردن *( ) و کپی*().
در libvkd3d-shader، ترجمه بایت کد مدل های سایه زن 4 و 5 به یک نمایش متوسط SPIR-V پیاده سازی شده است. از راس، پیکسل، تسلاسیون، محاسبات و شیدرهای هندسی ساده، سریالسازی امضای ریشه و سریالزدایی پشتیبانی میکند. دستورالعمل های سایه زن شامل عملیات حسابی، اتمی و بیت، مقایسه و عملگرهای کنترل جریان داده، دستورالعمل های نمونه، جمع آوری و بارگذاری، عملیات دسترسی نامرتب (UAV، Unordered Access View) می باشد.
در نسخه های جدید:
- بهبودهای زیادی در کامپایلر سایه زن HLSL (High-Level Shader Language) که از DirectX 9.0 ارائه شده است، انجام شده است. شامل پشتیبانی بهبود یافته برای انواع شی HLSL مانند Texture2D در ساختارها و آرایه ها، پشتیبانی اضافه شده برای توابع داخلی dot()، ldexp() و lerp()، پشتیبانی اضافه شده برای عملگرهای منطقی "and"، "or" برای مدل های سایه زن 4 و 5 و "not" و همچنین توانایی ریختن انواع Boolean.
- گزینه VKD3D_SHADER_COMPILE_OPTION_TYPED_UAV را برای بارگیری نمایش دسترسی نامرتب (UAV) برای قالبهای چند بخشی SPIR-V (DXGI_FORMAT) پیادهسازی کرد.
منبع: opennet.ru