پروژه 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 (زبان سایهزن سطح بالا) که در DirectX 9.0 معرفی شد، ایجاد شده است. این پیشرفتها شامل پشتیبانی بهبود یافته از انواع شیء HLSL مانند Texture2D در ساختارها و آرایهها، پشتیبانی بیشتر از توابع داخلی dot()، ldexp() و lerp() و پشتیبانی از عملگرهای منطقی "و"، "یا" و "نه" برای مدلهای سایهزن ۴ و ۵ و همچنین قابلیت تبدیل نوعهای بولی میشود.
- گزینه VKD3D_SHADER_COMPILE_OPTION_TYPED_UAV برای بارگذاری نمایش دسترسی نامرتب (UAV) برای فرمتهای SPIR-V چند جزئی (DXGI_FORMAT) پیادهسازی شد.
منبع: opennet.ru
