มีการเพิ่มเอ็นจิ้นการเรนเดอร์ใหม่สำหรับ OpenGL และ Vulkan ใน GTK

ผู้พัฒนาไลบรารี GTK ได้ประกาศความพร้อมใช้งานของเอ็นจิ้นการเรนเดอร์ใหม่สองตัว - “ngl” และ “vulkan” โดยใช้ OpenGL (GL 3.3+ และ GLES 3.0+) และ API กราฟิก Vulkan เอ็นจิ้นใหม่จะรวมอยู่ใน GTK 4.13.6 รุ่นทดลอง ในสาขา GTK ทดลอง ตอนนี้กลไก ngl ถูกใช้เป็นค่าเริ่มต้น แต่หากมีการระบุปัญหาสำคัญในสาขาเสถียรถัดไป 4.14 กลไกการเรนเดอร์ "gl" แบบเก่าจะถูกส่งกลับ

เครื่องยนต์ใหม่อยู่ในตำแหน่งที่เป็นหนึ่งเดียวและประกอบจากฐานรหัสเดียว สาระสำคัญของการรวมเป็นหนึ่งคือ Vulkan API ถูกใช้เป็นพื้นฐาน นอกเหนือจากนั้นยังมีการสร้างระดับนามธรรมแยกต่างหากสำหรับ OpenGL โดยคำนึงถึงความแตกต่างระหว่าง OpenGL และ Vulkan แนวทางนี้ทำให้สามารถใช้โครงสร้างพื้นฐานทั่วไปในเอ็นจิ้นทั้งสองเพื่อประมวลผลกราฟฉาก การแปลง พื้นผิวแคช และร่ายมนตร์ การรวมยังทำให้การบำรุงรักษาฐานรหัสของเครื่องยนต์ทั้งสองง่ายขึ้นอย่างมาก และทำให้พวกเขาทันสมัยและซิงโครไนซ์อยู่เสมอ

ต่างจากกลไก gl แบบเก่า ซึ่งใช้เชเดอร์ธรรมดาแยกต่างหากสำหรับโหนดการเรนเดอร์แต่ละประเภท และจัดเรียงข้อมูลใหม่เป็นระยะระหว่างการเรนเดอร์นอกหน้าจอ เอ็นจิ้นใหม่แทนที่จะเรนเดอร์นอกจอใช้เชเดอร์ที่ซับซ้อน (ubershader) ที่ตีความข้อมูลจากบัฟเฟอร์ . ในรูปแบบปัจจุบัน การใช้งานใหม่ยังคงล่าช้ากว่าแบบเก่าในแง่ของระดับการปรับให้เหมาะสม เนื่องจากจุดสนใจหลักในขั้นตอนปัจจุบันคือการทำงานที่ถูกต้องและความง่ายในการบำรุงรักษา

คุณสมบัติใหม่ที่ขาดหายไปในเอ็นจิ้น gl รุ่นเก่า:

  • Contour Smoothing - ช่วยให้คุณรักษารายละเอียดและได้รูปทรงที่นุ่มนวลยิ่งขึ้น
    มีการเพิ่มเอ็นจิ้นการเรนเดอร์ใหม่สำหรับ OpenGL และ Vulkan ใน GTK
  • การก่อตัวของการไล่ระดับสีตามอำเภอใจ ซึ่งสามารถใช้สีจำนวนเท่าใดก็ได้และการลดรอยหยัก (ในเครื่องยนต์ gl รองรับเฉพาะการไล่ระดับสีเชิงเส้น รัศมี และทรงกรวยที่มีสีหยุด 6 สี)
    มีการเพิ่มเอ็นจิ้นการเรนเดอร์ใหม่สำหรับ OpenGL และ Vulkan ใน GTK
  • มาตราส่วนเศษส่วนซึ่งช่วยให้คุณตั้งค่ามาตราส่วนที่ไม่ใช่จำนวนเต็มได้ เช่น เมื่อใช้มาตราส่วน 125% สำหรับหน้าต่างขนาด 1200x800 บัฟเฟอร์ขนาด 1500x1000 จะถูกจัดสรร และไม่ใช่ 2400x1600 เหมือนในเอ็นจิ้นเก่า
  • รองรับเทคโนโลยี DMA-BUF สำหรับการใช้ GPU หลายตัวและถ่ายโอนการดำเนินการแต่ละรายการไปยัง GPU อื่น
  • โหนดการเรนเดอร์จำนวนมากที่มีปัญหาในการใช้งานแบบเก่าได้รับการประมวลผลอย่างถูกต้อง

ข้อจำกัดของเอ็นจิ้นใหม่ ได้แก่ การขาดการสนับสนุนสำหรับการวางตำแหน่งด้วยค่าที่ไม่ใช่จำนวนเต็ม (ตำแหน่งเศษส่วน) และโหนด glshader ซึ่งเชื่อมโยงอย่างมากกับคุณสมบัติของเอ็นจิ้นเก่า และซึ่งไม่จำเป็นอีกต่อไปหลังจากเพิ่มการรองรับ โหนดที่มีมาสก์ (มาสก์) และพื้นผิวที่มีความโปร่งใส มีการกล่าวถึงด้วยว่ามีความเป็นไปได้ที่จะเกิดปัญหากับไดรเวอร์กราฟิกที่เกิดขึ้นเนื่องจากการเปลี่ยนแปลงวิธีการทำงานกับไดรเวอร์

ในอนาคตตามโมเดลแบบครบวงจรใหม่ ไม่รวมการสร้างเอ็นจิ้นการเรนเดอร์โดยใช้ Metal ใน macOS และ DirectX ใน Windows แต่การสร้างเอ็นจิ้นดังกล่าวมีความซับซ้อนเนื่องจากการใช้ภาษาอื่นสำหรับเชเดอร์ ("ngl" ” และเอ็นจิ้น “vulkan” ใช้ภาษา GLSL ดังนั้นสำหรับ Metal และ Direct จะต้องทำซ้ำเชเดอร์หรือใช้เลเยอร์ตามชุดเครื่องมือ SPIRV-Cross)

แผนในอนาคตรวมถึงการให้การสนับสนุน HDR และเครื่องมือสำหรับการจัดการสีที่ถูกต้อง การสนับสนุนการเรนเดอร์ Path บนฝั่ง GPU ความสามารถในการเรนเดอร์สัญลักษณ์ การเรนเดอร์แบบออฟไลน์ และการเพิ่มประสิทธิภาพสำหรับอุปกรณ์รุ่นเก่าและพลังงานต่ำ ในรูปแบบปัจจุบัน ประสิทธิภาพของเครื่องยนต์ "วัลแคน" นั้นใกล้เคียงกับประสิทธิภาพของเครื่องยนต์ "gl" แบบเก่า เอ็นจิ้น "ngl" มีประสิทธิภาพต่ำกว่าเอ็นจิ้น "gl" รุ่นเก่า แต่ประสิทธิภาพที่มีอยู่เพียงพอสำหรับการเรนเดอร์ที่ 60 หรือ 144 FPS คาดว่าสถานการณ์จะเปลี่ยนแปลงหลังจากการเพิ่มประสิทธิภาพ

ที่มา: opennet.ru

เพิ่มความคิดเห็น