เรนเดอเรอร์ใหม่สำหรับ GTK
(blog.gtk.org)เรนเดอเรอร์ใหม่ของ GTK
- มีการเพิ่มเรนเดอเรอร์ใหม่สองตัวสำหรับ GL และ Vulkan ให้กับ GTK
- เรนเดอเรอร์เหล่านี้ใช้ชื่อเดิมซ้ำ โดยตั้งชื่อว่า "ngl" และ "vulkan"
- ทั้งสองตัวถูกสร้างจากซอร์สเดียวกัน จึงถูกเรียกว่าเรนเดอเรอร์แบบ "รวมศูนย์" ด้วย
ซอร์สเดียว
- เรนเดอเรอร์ทั้งสองถูกสร้างจากซอร์สเดียวกัน และออกแบบด้วยโมเดลที่อิงตาม Vulkan API
- มีชั้น abstraction เพื่อครอบคลุมความแตกต่างระหว่าง Vulkan กับ GL
- ทำให้สามารถใช้โครงสร้างพื้นฐานร่วมกันได้ เช่น การสำรวจ scene graph, การคงสถานะการแปลง, การแคช texture และ glyph
- ในอนาคตอาจขยายไปสู่เรนเดอเรอร์ที่อิง Metal บน macOS หรือ DirectX บน Windows ได้
รายละเอียดการใช้งาน
- เรนเดอเรอร์ GL เดิมใช้ shader ที่เรียบง่าย และพึ่งพาการเรนเดอร์แบบ offscreen สำหรับเนื้อหาที่ซับซ้อน
- เรนเดอเรอร์แบบรวมศูนย์มี shader แยกตามแต่ละโหนด และใช้ shader ที่ซับซ้อนกว่าเพื่อแปลผลข้อมูลจากบัฟเฟอร์แทนการใช้ offscreen
- เรนเดอเรอร์แบบรวมศูนย์ยังได้รับการปรับแต่งไม่มากนัก แต่เน้นความถูกต้องและการบำรุงรักษา จึงสามารถจัดการต้นไม้ของ render node ที่หลากหลายได้อย่างแม่นยำกว่า
ฟีเจอร์ใหม่
- Anti-aliasing: เรนเดอเรอร์ GL เดิมมีปัญหาทำให้รายละเอียดบางส่วนหายไป แต่เรนเดอเรอร์แบบรวมศูนย์ปรับปรุงจุดนี้ด้วย anti-aliasing
- Fractional scaling: เรนเดอเรอร์แบบรวมศูนย์รองรับการจัดการสเกลแบบเศษส่วนได้อย่างถูกต้อง
- Gradient แบบอิสระ: เรนเดอเรอร์แบบรวมศูนย์รองรับ gradient ที่มี color stop ได้ไม่จำกัด
- Dmabufs: เรนเดอเรอร์ Vulkan สามารถสร้าง dmabufs ได้เมื่อสร้าง texture ผ่าน API
render_texture
สิ่งที่ควรระวัง
- ไม่รองรับโหนด glshader อีกต่อไป
- ตำแหน่งแบบเศษส่วน: เรนเดอเรอร์ใหม่จะวางวัตถุในตำแหน่งที่แม่นยำ
- ปัญหาไดรเวอร์: เรนเดอเรอร์ใหม่ใช้กราฟิกไดรเวอร์ในรูปแบบใหม่และแตกต่างออกไป จึงอาจเกิดปัญหาได้
เร็วขึ้นหรือไม่?
- ตอนนี้เรนเดอเรอร์ใหม่ยังไม่ได้เร็วกว่า
- เรนเดอเรอร์ GL เดิมถูกปรับแต่งมาเพื่อความเร็ว ขณะที่เรนเดอเรอร์ใหม่มอบฟีเจอร์ใหม่และความถูกต้องที่มากขึ้น
- เรนเดอเรอร์ Vulkan แสดงประสิทธิภาพใกล้เคียงกับเรนเดอเรอร์ GL เดิมในการทดสอบ benchmark แบบไม่เป็นทางการ
ค่าเริ่มต้นใหม่
- ใน snapshot 4.13.6 ที่ประกาศล่าสุด ได้ตั้งค่าเรนเดอเรอร์ ngl เป็นค่าเริ่มต้นใหม่
- นี่เป็นมาตรการเชิงทดลอง และหากเกิดปัญหาก็สามารถย้อนกลับไปใช้เรนเดอเรอร์ GL เดิมได้
แผนและความเป็นไปได้ในอนาคต
- เรนเดอเรอร์ใหม่เป็นพื้นฐานที่ดีสำหรับการทำสีอย่างเหมาะสมรวมถึง HDR, path rendering บน GPU, การเรนเดอร์นอก main thread และการปรับปรุงประสิทธิภาพ
สรุป
- เรนเดอเรอร์ใหม่นี้มีฟีเจอร์ที่น่าสนใจ และยังมีอีกหลายฟีเจอร์ที่จะถูกเพิ่มเข้ามา
- มีการขอให้ลองใช้เรนเดอเรอร์ใหม่ และส่งฟีดแบ็กว่าใช้งานได้ดีหรือไม่
GN⁺ มีความเห็นว่า
- เรนเดอเรอร์ใหม่นี้เป็นพัฒนาการสำคัญที่มอบตัวเลือกการเรนเดอร์ที่แม่นยำและหลากหลายยิ่งขึ้นให้กับนักพัฒนา
- แนวทางการรวม Vulkan และ GL เข้าด้วยกันมีศักยภาพในการเพิ่มความเข้ากันได้ของการเรนเดอร์บนแพลตฟอร์มที่หลากหลายในอนาคต
- ความก้าวหน้าทางเทคนิคนี้จะช่วยยกระดับประสบการณ์ผู้ใช้ และเพิ่มคุณภาพด้านภาพของแอปพลิเคชัน
1 ความคิดเห็น
ความคิดเห็นบน Hacker News