โครงการ ไวน์เปิดตัว เมื่อไม่กี่วันที่ผ่านมามีการเปิดตัวเวอร์ชันใหม่ของ แพ็คเกจ vkd3d 1.7 ด้วยการใช้งาน Direct3D 12 ที่ทำงานผ่านการแปลการเรียกไปยัง Vulkan graphics API
บรรจุภัณฑ์ รวมถึงไลบรารี libvkd3d ด้วยการปรับใช้ Direct3D 12, libvkd3d-shader พร้อม shader model translate 4 และ 5 และ libvkd3d-utils พร้อมฟังก์ชันเพื่อลดความซับซ้อนในการย้ายแอปพลิเคชัน Direct3D 12 ตลอดจนชุดสาธิต รวมถึงพอร์ตของ glxgears ไปยัง Direct3D 12
ไลบรารี libvkd3d รองรับคุณสมบัติ Direct3D 12 ส่วนใหญ่ รวมถึงกราฟิกและการคำนวณ, รายการคำสั่งและคิว, คำอธิบายและคำอธิบายฮีป, ลายเซ็นรูท, การเข้าถึงแบบไม่เรียงลำดับ, ตัวอย่าง, ลายเซ็นคำสั่ง, ค่าคงที่รูท, การแทนทางอ้อม, วิธี Clear*() และ Copy*()
นอกจากนั้นแล้ว libvkd3d-shader ใช้การแปลของ bytecode 4 และ 5 ของแบบจำลองการแรเงาในการแสดงระดับกลางของ SPIR-V รองรับจุดสุดยอด พิกเซล เทสเซลเลชัน การคำนวณและเชดเดอร์รูปทรงเรขาคณิตอย่างง่าย การซีเรียลไลเซชันของรูทซิกเนเจอร์
การดำเนินการทางเลขคณิต อะตอม และบิต การเปรียบเทียบและตัวดำเนินการควบคุมการไหลของข้อมูล ตัวอย่าง รวบรวม และโหลดคำแนะนำ การดำเนินการเข้าถึงที่ไม่อยู่ในลำดับ (UAV มุมมองการเข้าถึงที่ไม่อยู่ในลำดับ) ถูกนำมาใช้จากคำแนะนำการทำแชโดว์
คุณสมบัติใหม่หลักของ vkd3d 1.7
ในเวอร์ชั่นใหม่นี้ที่นำเสนอ vkd3d 1.7 โดดเด่นกว่า él ทำงานอย่างต่อเนื่องเพื่อปรับปรุงคอมไพเลอร์ HLSL shader (High-Level Shader Language) รวมทั้งเพิ่มความสามารถในการเรียกใช้ฟังก์ชันที่ผู้ใช้กำหนด และใช้อาร์เรย์เป็นพารามิเตอร์ของฟังก์ชันที่ผู้ใช้กำหนด
การเปลี่ยนแปลงอีกอย่างที่โดดเด่นในเวอร์ชันใหม่คือ การสนับสนุนที่ดีขึ้นอย่างมากสำหรับโปรไฟล์ โมเดลเชดเดอร์ Direct3D 1/2/3, นอกจากนี้ยังเพิ่มการสนับสนุนเริ่มต้นสำหรับประเภททศนิยมที่มีความแม่นยำต่ำ เช่น min16float
ยังเน้นย้ำว่า เพิ่มการรองรับพารามิเตอร์ SV_DispatchThreadID, SV_GroupID และ SV_GroupThreadID และมีการเพิ่ม API สาธารณะในการแยกวิเคราะห์ (vkd3d_shader_parse_dxbc) และทำให้เป็นอันดับ (vkd3d_shader_serialize_dxbc) ข้อมูลไบนารี DXBC
ของ การเปลี่ยนแปลงอื่น ๆ ที่โดดเด่น ของเวอร์ชันใหม่:
- รองรับพารามิเตอร์ "offset" ที่เป็นทางเลือกของวัตถุพื้นผิว Load()
กระบวนการ. - รองรับฟังก์ชั่นที่แท้จริงทั้งหมด ()
- รองรับฟังก์ชั่นระยะทาง () ที่แท้จริง
- รองรับฟังก์ชั่นที่แท้จริง exp() และ exp2()
- รองรับ frac() ฟังก์ชันภายใน
- รองรับฟังก์ชั่น lit() ที่แท้จริง
- รองรับฟังก์ชั่นการสะท้อนกลับ ()
- รองรับฟังก์ชันที่แท้จริง sin() และ cos()
- รองรับฟังก์ชั่นภายในของ SmoothStep()
- รองรับฟังก์ชัน sqrt() และ rsqrt() ในตัว
- รองรับ step() ฟังก์ชันภายใน
- รองรับฟังก์ชันที่แท้จริง transpose()
- รองรับตัวแปรของ float และ dword data ที่ไม่คำนึงถึงขนาดตัวพิมพ์
ประเภท - การสนับสนุนบางส่วนสำหรับประเภทข้อมูลที่มีความแม่นยำขั้นต่ำ เช่น "min16float" ปัจจุบันสิ่งเหล่านี้ถูกตีความว่าเป็นคู่หูปกติ
ปรับปรุงการรองรับการขยายพันธุ์อย่างต่อเนื่อง โดยเฉพาะอย่างยิ่งการขยายพันธุ์อย่างต่อเนื่องผ่านสวิซเซิล - สามารถใช้ตัวเลือกการคอมไพล์ VKD3D_SHADER_COMPILE_OPTION_WRITE_TESS_GEOM_POINT_SIZE เพื่อระบุว่า SPIR-V shaders ที่กำหนดเป้าหมายสภาพแวดล้อม Vulkan ควรเขียนขนาดพอยต์สำหรับ geometry และ tessellation shaders หรือไม่ หากไม่ได้ระบุ ขนาดพอยต์จะถูกเขียน
ในที่สุด สำหรับผู้สนใจต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้พวกเขาควรทราบว่ารหัสโครงการได้รับอนุญาตภายใต้ LGPLv2.1 และพวกเขาสามารถศึกษารายละเอียดของรุ่นใหม่นี้ได้ ในลิงค์ต่อไปนี้.
จะติดตั้ง vkd3d 1.7 ได้อย่างไร?
สำหรับ สนใจสามารถติดตั้ง vkd3d ได้ พวกเขาต้องรู้ว่าต้องคอมไพล์ซอร์สโค้ด ดังนั้นเราต้องได้รับมันก่อน สิ่งสำคัญคือต้องระบุว่า Vkd3d ขึ้นอยู่กับ SPIRV-Headers และ Vulkan-Headers (>= 1.2.139)
ในการดำเนินการคอมไพล์ เราต้องเปิดเทอร์มินัล และในนั้นเราจะพิมพ์คำสั่งต่อไปนี้:
git clone https://gitlab.winehq.org/wine/vkd3d.git
เมื่อเสร็จแล้ว เราจะเข้าสู่ไดเร็กทอรีที่ดาวน์โหลดล่าสุดด้วย:
cd vkd3d
และเราดำเนินการรวบรวมโดยใช้คำสั่งต่อไปนี้:
./configure make make install
Si คุณต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับการรวบรวม ของ vkd3d คุณสามารถตรวจสอบรายละเอียดได้ใน ลิงค์นี้