โครงการ Wine ได้เปิดตัวแพ็คเกจ vkd3d 1.2 เวอร์ชันใหม่ กับ การใช้งาน Direct3D 12 ซึ่งทำงานโดยแปลการเรียกไปยัง Vulkan graphics API
vkd3d 1.2 เวอร์ชันใหม่นี้ ประกอบด้วยการปรับปรุงต่างๆ แต่ตัวหลักที่โดดเด่นคือ ความพร้อมใช้งานของ libvkd3d-shader เป็นห้องสมุดสาธารณะ, รองรับ shader tessellation เช่นเดียวกับการสนับสนุนการไหลออก
แพคเกจและรวมไลบรารี libvkd3d ที่มีการใช้งาน Direct3D 12, libvkd3d-shader ด้วยตัวแปล shader รุ่น 4 และ 5 และ libvkd3d-utils พร้อมฟังก์ชั่นเพื่อลดความซับซ้อนในการโยกย้ายแอปพลิเคชัน Direct3D 12 ตลอดจนชุดการสาธิตรวมถึงพอร์ต glxgears ไปยัง Direct3D 12 รหัสโครงการได้รับการแจกจ่ายลิขสิทธิ์ภายใต้ LGPLv2.1
ห้องสมุด libvkd3d รองรับคุณสมบัติ Direct3D 12 ส่วนใหญ่ รวมถึงกราฟิกและฟังก์ชันการคำนวณรายการคำสั่งและคิวตัวอธิบายฮีปและตัวอธิบายลายเซ็นรูทการเข้าถึงแบบไม่เรียงลำดับตัวอย่างลายเซ็นคำสั่งค่าคงที่รูทการแสดงทางอ้อมและอื่น ๆ
libvkd3d-shader ดำเนินการแปลรหัสไบต์ 4 และ 5 ของรูปแบบการแรเงาในการแสดงตัวกลาง SPIR-V รองรับจุดยอดพิกเซลเทสเซลเลชั่นเฉดสีเชิงคำนวณและเรขาคณิตอย่างง่ายการจัดลำดับลายเซ็นรูทและการดีซีเรียลไลเซชัน
คำแนะนำ shader ประกอบด้วยการคำนวณเลขคณิตอะตอมและบิต ตัวดำเนินการควบคุมและเปรียบเทียบการไหลของข้อมูลการสุ่มตัวอย่างการรวบรวมและการโหลดคำแนะนำการดำเนินการเข้าถึงแบบไม่เรียงลำดับ (UAV มุมมองการเข้าถึงแบบไม่เรียงลำดับ)
ในขั้นตอนของการพัฒนาปัจจุบันมีการเรียกใช้ Direct3D 12 ไม่ครบทั้งหมด และการทดสอบส่วนใหญ่ดำเนินการในชุดแอปพลิเคชันสาธิต รุ่นนี้ไม่รวมคุณสมบัติในการพัฒนาเช่นการรองรับเฉดสีเรขาคณิตที่ซับซ้อนและการเทสเซลเลชั่นตลอดจนการปรับปรุงหลายอย่างที่เกี่ยวข้องกับวิธีการและเฉดสีพื้นฐานของ Direct3D 12 ฟีเจอร์เหล่านี้จะนำเสนอในรุ่นอนาคต
คุณสมบัติใหม่หลักของ Vkd3d 1.2
การเปลี่ยนแปลงที่สำคัญที่สุดที่นำเสนอในเวอร์ชันใหม่คือไฟล์ ความพร้อมใช้งานของไลบรารี libvkd3d-shader สำหรับใช้ในโครงการของบุคคลที่สามตั้งแต่ เพิ่มฟังก์ชัน Direct3D 12 ต่างๆเช่น:
- หลายการสุ่มตัวอย่าง
- ทรัพยากรที่สงวนไว้
- อัตราการส่งผ่านข้อมูลอินสแตนซ์
- API "ข้อมูลส่วนตัว" สำหรับอินเทอร์เฟซทั้งหมด
- การแมปองค์ประกอบมุมมองทรัพยากร Shader
- VK_KHR_draw_indirect_count ส่วนขยาย
- การแสดงเพรดิเคต / เงื่อนไข
- การเรนเดอร์ความลึกโดยไม่มี Pixel Shader
- ตัวตัดความลึก สิ่งนี้ต้องการส่วนขยาย VK_EXT_depth_clip_enable
- ทิ้งแรสเตอร์
- การผสมแหล่งคู่
- การทำแผนที่ทรัพยากรที่วางไว้
- วิธีการ ReadFromSubresource () และ WriteToSubresource () ID3D12Resource
- เข้าถึงทรัพยากรหลายคิวพร้อมกัน
- มุมมอง Null นั่นคือมุมมองที่ไม่มีทรัพยากรพื้นฐาน
- คำถามเกี่ยวกับการสนับสนุนคุณสมบัติอื่น ๆ อีกมากมาย
นอกเหนือจากนี้ นอกจากนี้ยังมีการเพิ่มการสนับสนุนสำหรับการแปลงการทำให้เป็นอนุกรมและการแยกส่วนลายเซ็น root (vkd3d_serialize_versioned_root_signature () และ vkd3d_create_versioned_root_signature_deserializer () รวมทั้งการสนับสนุนสำหรับเอาต์พุตการสตรีม
การเปลี่ยนแปลงที่โดดเด่นอีกประการหนึ่งคือ การใช้งานตัวแปรสภาพแวดล้อม: VKD3D_CONFIG เพื่อตั้งค่าตัวเลือกเพื่อเปลี่ยนลักษณะการทำงานของ libvkd3d และ VKD3D_VULKAN_DEVICE เพื่อแทนที่อุปกรณ์สำหรับ Vulkan API
นอกเหนือจากนั้น เพิ่มการรองรับคำแนะนำในการแรเงา bufino, eval_centroid, eval_sample_index, ld2ms, sample_b, sample_d, sample_info, samplepos และการสนับสนุนเบื้องต้นสำหรับเฉดสี 5.1 รุ่น
และยังรองรับสภาพแวดล้อมเป้าหมาย OpenGL SPIR-V สิ่งนี้ช่วยให้ SPIR-V ที่ผลิตโดย libvkd3d-shader สามารถใช้กับ GL_ARB_gl_spirv ได้ ซึ่งรวมถึงการรองรับตัวนับอะตอม OpenGL และตัวอย่างรวม
ในที่สุด หากคุณต้องการทราบข้อมูลเพิ่มเติม เกี่ยวกับเวอร์ชันใหม่นี้คุณสามารถตรวจสอบรายการการเปลี่ยนแปลงทั้งหมดได้ ในลิงค์ต่อไปนี้.
จะติดตั้ง vkd3d บน Linux ได้อย่างไร?
สำหรับผู้ที่สนใจที่จะสามารถติดตั้ง vkd3d ในระบบของพวกเขาพวกเขาควรได้รับซอร์สโค้ดและดำเนินการรวบรวมแม้ว่าจะใช้งานได้จริงหรือสำหรับมือใหม่ก็สามารถลองใช้ไลบรารีนี้ได้โดยไม่ต้องใช้ความพยายามมากนัก สำหรับสิ่งนี้พวกเขาจะต้องติดตั้ง lutris และอยู่ในการกำหนดค่าเท่านั้น
สำหรับผู้ที่สนใจในการรวบรวมจะต้องได้รับรหัสด้วย:
git clone git://source.winehq.org/git/vkd3d.git/
./autogen.sh
./configure
make
../vkd3d/configure --build=i686-pc-linux-gnu "CPPFLAGS=-m32" "LDFLAGS=-m32"
สุดท้ายต้องเปิดใช้งานเลเยอร์ Vulkan:
export VK_INSTANCE_LAYERS=VK_LAYER_LUNARG_standard_validation
VKD3D_CONFIG=vk_debug