การฟื้นคืนชีพอันน่าประหลาดของ OpenGL: Mesh Shaders มาถึงในขณะที่ชุมชนถกเถียงถึงอนาคตของ Graphics API

ทีมชุมชน BigGo
การฟื้นคืนชีพอันน่าประหลาดของ OpenGL: Mesh Shaders มาถึงในขณะที่ชุมชนถกเถียงถึงอนาคตของ Graphics API

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

เวลาที่เลือกปล่อยครั้งนี้มีความน่าสนใจเป็นพิเศษเมื่อพิจารณาจากสถานะปัจจุบันของ Graphics API ในขณะที่ Vulkan ถูกวางตำแหน่งให้เป็นผู้สืบทอดของ OpenGL มาตั้งแต่เกือบสิบปีก่อน การอภิปรายในชุมชนเผยให้เห็นว่านักพัฒนาจำนวนมากยังคงชอบใช้ OpenGL เนื่องจากความเรียบง่ายและความเข้ากันได้ในวงกว้าง across platforms

การเชื่อมโยงกับ Minecraft ที่ขับเคลื่อนนวัตกรรม

แรงผลักดันสำหรับการรองรับ mesh shader ใน OpenGL ดูเหมือนจะได้รับอิทธิพลอย่างมีนัยสำคัญจากชุมชนผู้ปรับแต่ง Minecraft โดยมีมอดยอดนิยมชื่อ nvidium ที่เคยใช้ส่วนขยาย mesh shader เฉพาะของ NVIDIA เพื่อปรับปรุงประสิทธิภาพการเรนเดอร์อย่างมาก แต่สิ่งนี้กลับปิดกั้นผู้ใช้ที่มีการ์ดกราฟิกจาก AMD และ Intel ด้วยส่วนขยายข้ามผู้ขายใหม่นี้ ประโยชน์ด้านประสิทธิภาพเหล่านี้จะพร้อมใช้งานสำหรับผู้เล่นทุกคน

มอดดังกล่าวทำการคัดเอาส่วน chunk ที่มองไม่เห็นออกโดยขับเคลื่อนด้วย GPU และยังสร้างสามเหลี่ยมเองด้วย mesh shader จากข้อมูลภูมิประเทศ ซึ่งช่วยลดขนาด vertex ลงได้อย่างมาก

สิ่งนี้แสดงให้เห็นว่าการใช้งานในโลกจริง แม้แต่ในมอดเกม ก็สามารถขับเคลื่อนความก้าวหน้าทั่วทั้งอุตสาหกรรมได้ แนวทางของมอดที่สร้างสามเหลี่ยมโดยตรงจากข้อมูลภูมิประเทศโดยใช้ mesh shaders เป็นตัวแทนของนวัตกรรมประเภทเดียวกันที่ส่วนขยายใหม่นี้เปิดโอกาส

ประโยชน์ของ Mesh Shader สำหรับเกมแบบ Voxel

  • การคัดกรองเรขาคณิตที่มองไม่เห็นโดยใช้ GPU
  • การสร้างสามเหลี่ยมโดยตรงจากข้อมูลภูมิประเทศ
  • ลดขนาด vertex buffer และการใช้หน่วยความจำ
  • ลดจำนวน draw call ผ่านการรวมกลุ่มที่ดีขึ้น
  • รองรับข้ามผู้ผลิต (แตกต่างจากการใช้งานก่อนหน้าที่รองรับเฉพาะ NVIDIA เท่านั้น)

ทำความเข้าใจกับก้าวกระโดดทางเทคนิค

Mesh shaders เป็นตัวแทนของการเปลี่ยนแปลงพื้นฐานในวิธีที่ไปป์ไลน์กราฟิกจัดการกับเรขาคณิต การเรนเดอร์ OpenGL แบบดั้งเดิมใช้ไปป์ไลน์แบบคงที่ด้วย vertex shader และ geometry shader ที่แยกจากกัน Mesh shaders รวมขั้นตอนเหล่านี้เข้าด้วยกันเป็นแนวทางที่ยืดหยุ่นกว่า คล้ายกับการประมวลผลแบบ compute ซึ่งมอบการควบคุมที่ละเอียดยิ่งขึ้นให้นักพัฒนาว่าจะประมวลผลและคัดเรขาคณิตออกอย่างไร

ประโยชน์ในทางปฏิบัติมีมากสำหรับแอปพลิเคชันอย่าง Minecraft ที่เรนเดอร์รูปทรงเรขาคณิตง่าย ๆ จำนวนมหาศาล ด้วยการประมวลผลกลุ่ม vertex ขนาดเล็กที่ชาญฉลาดขึ้นและคัดเรขาคณิตที่มองไม่เห็นออกโดยตรงบน GPU, mesh shaders สามารถลดทั้งการใช้งานหน่วยความจำและค่าใช้จ่ายในการเรนเดอร์ลงได้อย่างมาก สิ่งนี้มีคุณค่าเป็นพิเศษสำหรับเกมที่ใช้ voxel ซึ่งโครงสร้างของข้อมูล vertex มีความสม่ำเสมอและบีบอัดได้สูง

การอภิปรายในวงกว้าง: OpenGL vs. Vulkan vs. ความเป็นจริง

การอภิปรายในชุมชนเผยให้เห็นถึงความแตกแยกอย่างลึกซึ้งในความชอบการเขียนโปรแกรมกราฟิก นักพัฒนาจำนวนมากแสดงความหงุดหงิดกับความซับซ้อนของ Vulkan โดยชี้ให้เห็นว่าการดำเนินการที่ควรจะง่ายดายมักต้องใช้โค้ดแบบ boilerplate นับสิบบรรทัด ตามที่นักพัฒนาคนหนึ่งระบุไว้อย่างตรงไปตรงมาว่า สิ่งที่ควรจะเป็น malloc กลับกลายเป็นวิทยานิพนธ์ปริญญาเอกใน Vulkan, สิ่งที่ควรจะเป็น memcpy ก็เป็นอีกวิทยานิพนธ์หนึ่ง, และสิ่งที่ควรจะเป็น kernel launch ง่ายๆ กลับกลายเป็นเรื่องบ้าบอ

ความรู้สึกนี้สะท้อนโดยคนอื่นๆ ที่พบว่าความเรียบง่ายเปรียบเทียบของ OpenGL เหมาะสมกว่าสำหรับหลายกรณีการใช้ ในขณะที่ Vulkan นำเสนอการควบคุมระดับต่ำกว่า ค่าใช้จ่ายในการพัฒนาก็มีมาก ทำให้ไม่เหมาะสำหรับโครงการขนาดเล็ก, การศึกษา, หรือแอปพลิเคชันที่ประสิทธิภาพสูงสุดไม่ใช่สิ่งสำคัญ

การอภิปรายยังเน้นย้ำถึงความกังวลเรื่องความแตกแยกของแพลตฟอร์ม ในขณะที่ WebGPU กำลังเกิดขึ้นเป็นมาตรฐานเว็บที่เป็นไปได้ มันยังคงตามหลัง API ดั้งเดิมในด้านคุณสมบัติ ตามที่ความคิดเห็นหนึ่งระบุ OpenGL ซึ่งถูกยกเลิกการสนับสนุนโดยพฤตินัยมาแล้วกว่าห้าปี ยังมีพลัง/คุณสมบัติด้านความสามารถของฮาร์ดแวร์ที่มากกว่า WebGPU เป็น orders of magnitude

การเปรียบเทียบ Graphics API

ด้าน OpenGL Vulkan WebGPU
ความยากในการเรียนรู้ ปานกลาง ยากมาก ปานกลาง
โค้ดเบื้องต้นที่ต้องเขียน น้อยที่สุด มากมาย ปานกลาง
การรองรับแพลตฟอร์ม ครอบคลุมทั่วไป ครอบคลุมทั่วไป เน้นเว็บ
ศักยภาพด้านประสิทธิภาพ ดี ยอดเยี่ยม ดี
ความเร็วในการพัฒนา เร็ว ช้า ปานกลาง

อนาคตของ Graphics API

การมาถึงของ mesh shaders ใน OpenGL บ่งชี้ว่าข่าวการตายของ API นี้คงจะถูกกล่าวอ้างเกินจริง แม้ผู้ขายแพลตฟอร์มรายใหญ่เช่น Apple จะเลิกสนับสนุน OpenGL แล้วเพื่อไปสนับสนุน Metal และ Khronos จะมุ่งเน้นการพัฒนา Vulkan แต่การวิวัฒนาการอย่างต่อเนื่องของ OpenGL ผ่านส่วนขยายแสดงให้เห็นถึงความเกี่ยวข้องที่ยั่งยืนของมัน

การอภิปรายในชุมชนชี้ให้เห็นว่า API ที่แตกต่างกันตอบสนองความต้องการที่แตกต่างกัน Vulkan ดีเลิศสำหรับเกมเอ็นจิ้นระดับ AAA ที่ต้องการประสิทธิภาพและการควบคุมสูงสุด ในขณะที่ OpenGL ยังคงมีคุณค่าสำหรับวัตถุประสงค์ทางการศึกษา, แอปพลิเคชันรุ่นเก่า, และนักพัฒนาที่ให้ความสำคัญกับความเร็วในการพัฒนามากกว่าประสิทธิภาพสัมบูรณ์ ไดรเวอร์ Zink ของโปรเจกต์ Mesa ซึ่งนำ OpenGL ไปทำงานบน Vulkan อาจเป็นตัวแทนของอนาคตในระยะยาวสำหรับความเข้ากันได้ของ OpenGL

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

อ้างอิง: Mesh Shaders In The Current Year