vkd3d 1.2 มาพร้อมกับการปรับปรุงความเข้ากันได้การแรเงาและอื่น ๆ

โครงการ Wine ได้ออกเวอร์ชันใหม่ของแพ็กเกจ vkd3d 1.2 ซึ่ง มาพร้อมกับการใช้งาน Direct3D 12โดยทำงานผ่านการแปลงการเรียกใช้ API กราฟิก Vulkan

vkd3d เวอร์ชัน 1.2 ใหม่นี้มีการปรับปรุงหลายอย่างแต่ที่โดดเด่นที่สุดคือการเปิดใช้งาน libvkd3d-shader เป็นไลบรารีสาธารณะการรองรับ tessellation shaders และการรองรับเอาต์พุตแบบสตรีม

แพ็คเกจนี้ประกอบด้วยไลบรารี 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 ระดับกลาง รองรับจุดยอด พิกเซล การแบ่งส่วนย่อย เชเดอร์เรขาคณิตแบบง่ายและแบบคำนวณ การแปลงลายเซ็นรากเป็นอนุกรม และการแปลงกลับเป็นอนุกรม

คำสั่ง Shader ประกอบด้วยการดำเนินการทางคณิตศาสตร์ อะตอมิก และบิตต่อบิตการควบคุมการไหลของข้อมูลและตัวดำเนินการเปรียบเทียบ คำสั่งการสุ่มตัวอย่าง การรวบรวม และการโหลด และการดำเนินการเข้าถึงแบบไม่เรียงลำดับ (UAV, Unordered Access View)

ในขั้นตอนนี้ของการพัฒนา ฟังก์ชันการทำงานของ 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 นั่นคือมุมมองที่ไม่มีทรัพยากรพื้นฐาน
  • คำถามเกี่ยวกับการสนับสนุนคุณสมบัติอื่น ๆ อีกมากมาย

นอกจากนี้การเพิ่มการรองรับการแปลง การทำให้เป็นอนุกรม และการยกเลิกการทำให้เป็นอนุกรมของลายเซ็นราก (vkd3d_serialize_versioned_root_signature() และ vkd3d_create_versioned_root_signature_deserializer()) ก็เป็นสิ่งที่น่าสนใจเช่นกันรวมถึงการรองรับการส่งออกข้อมูลแบบสตรีมมิ่งด้วย

การเปลี่ยนแปลงที่สำคัญอีกประการหนึ่งคือการนำตัวแปรสภาพแวดล้อมมาใช้ ได้แก่ VKD3D_CONFIG สำหรับตั้งค่าตัวเลือกเพื่อเปลี่ยนแปลงพฤติกรรมของ libvkd3d และ VKD3D_VULKAN_DEVICE สำหรับกำหนดค่าอุปกรณ์สำหรับ Vulkan API ใหม่

นอกจากนี้ ยังมีการเพิ่มการรองรับคำสั่งการแรเงา bufinfo, 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


เพิ่มเป็นแหล่งข้อมูลที่ต้องการใน Google