แนวคิด “No Graphics API” – ลดความซับซ้อนของกราฟิก API

Sebastian Aaltonen นักพัฒนาเกมที่มีประสบการณ์กว่า 30 ปี อธิบายว่าการเปลี่ยนผ่านจาก DirectX 11 และ OpenGL ไปสู่ API รุ่นใหม่อย่าง DirectX 12, Vulkan และ Metal เกิดขึ้นเพื่อตอบโจทย์ความต้องการของ AAA games ที่ต้องการประสิทธิภาพสูง แต่ผลลัพธ์กลับไม่เป็นไปตามคาด หลายเกมเมื่อพอร์ตไปยัง API ใหม่กลับมีประสิทธิภาพลดลง เพราะโครงสร้างของ engine เดิมไม่สอดคล้องกับ persistent objects ที่ API ใหม่บังคับใช้.

เขาชี้ว่า GPU ปัจจุบันมีวิวัฒนาการไปไกล เช่น coherent last-level caches, bindless texture samplers และการรองรับ 64-bit GPU pointers ทำให้ไม่จำเป็นต้องใช้ retained mode objects ที่ซับซ้อนอีกต่อไป ปัญหาใหญ่ที่สุดคือ PSO permutation explosion ที่ทำให้ cache ของผู้ใช้กินพื้นที่มากกว่า 100GB และต้องพึ่งพา cloud servers ของ vendor เพื่อเก็บ pipeline state objects.

Aaltonen เสนอว่าหากออกแบบ API ใหม่โดยยึดตามสถาปัตยกรรม GPU ปัจจุบัน เราสามารถลดความซับซ้อนลงอย่างมาก เช่น ใช้ pointer-based memory management แบบ CUDA และ Metal, รองรับ wide loads และ coherent memory โดยตรง รวมถึงการจัดการ descriptor heap ที่โปร่งใสและง่ายต่อการเขียน shader.

แนวคิด “No Graphics API” จึงไม่ใช่การลบ API ออกไปทั้งหมด แต่เป็นการลด abstraction ที่ไม่จำเป็น และให้ GPU ทำงานตรงกับหน่วยความจำและ pointer โดยตรง เพื่อแก้ปัญหาประสิทธิภาพและความซับซ้อนที่สะสมมานานกว่า 20 ปีในวงการกราฟิก API.

สรุปเป็นหัวข้อ
ปัญหาของ API รุ่นใหม่ (DX12/Vulkan/Metal)
ซับซ้อนเกินไปสำหรับ engine เดิม
เกิด PSO permutation explosion และ cache ขนาดมหาศาล

วิวัฒนาการของ GPU ปัจจุบัน
มี coherent caches และ bindless samplers
รองรับ 64-bit GPU pointers และ direct memory access

แนวคิด “No Graphics API”
ลด abstraction ที่ไม่จำเป็น
ใช้ pointer-based memory และ descriptor heap ที่โปร่งใส

คำเตือนต่ออุตสาหกรรม
หากยังยึดติดกับ API รุ่นเก่า จะสร้างภาระ cache และ pipeline state ที่ไม่จำเป็น
ความซับซ้อนที่สะสมอาจทำให้การพัฒนาเกมและกราฟิกช้าลงและสิ้นเปลืองทรัพยากร

https://www.sebastianaaltonen.com/blog/no-graphics-api
🖥️ แนวคิด “No Graphics API” – ลดความซับซ้อนของกราฟิก API Sebastian Aaltonen นักพัฒนาเกมที่มีประสบการณ์กว่า 30 ปี อธิบายว่าการเปลี่ยนผ่านจาก DirectX 11 และ OpenGL ไปสู่ API รุ่นใหม่อย่าง DirectX 12, Vulkan และ Metal เกิดขึ้นเพื่อตอบโจทย์ความต้องการของ AAA games ที่ต้องการประสิทธิภาพสูง แต่ผลลัพธ์กลับไม่เป็นไปตามคาด หลายเกมเมื่อพอร์ตไปยัง API ใหม่กลับมีประสิทธิภาพลดลง เพราะโครงสร้างของ engine เดิมไม่สอดคล้องกับ persistent objects ที่ API ใหม่บังคับใช้. เขาชี้ว่า GPU ปัจจุบันมีวิวัฒนาการไปไกล เช่น coherent last-level caches, bindless texture samplers และการรองรับ 64-bit GPU pointers ทำให้ไม่จำเป็นต้องใช้ retained mode objects ที่ซับซ้อนอีกต่อไป ปัญหาใหญ่ที่สุดคือ PSO permutation explosion ที่ทำให้ cache ของผู้ใช้กินพื้นที่มากกว่า 100GB และต้องพึ่งพา cloud servers ของ vendor เพื่อเก็บ pipeline state objects. Aaltonen เสนอว่าหากออกแบบ API ใหม่โดยยึดตามสถาปัตยกรรม GPU ปัจจุบัน เราสามารถลดความซับซ้อนลงอย่างมาก เช่น ใช้ pointer-based memory management แบบ CUDA และ Metal, รองรับ wide loads และ coherent memory โดยตรง รวมถึงการจัดการ descriptor heap ที่โปร่งใสและง่ายต่อการเขียน shader. แนวคิด “No Graphics API” จึงไม่ใช่การลบ API ออกไปทั้งหมด แต่เป็นการลด abstraction ที่ไม่จำเป็น และให้ GPU ทำงานตรงกับหน่วยความจำและ pointer โดยตรง เพื่อแก้ปัญหาประสิทธิภาพและความซับซ้อนที่สะสมมานานกว่า 20 ปีในวงการกราฟิก API. 📌 สรุปเป็นหัวข้อ ✅ ปัญหาของ API รุ่นใหม่ (DX12/Vulkan/Metal) ➡️ ซับซ้อนเกินไปสำหรับ engine เดิม ➡️ เกิด PSO permutation explosion และ cache ขนาดมหาศาล ✅ วิวัฒนาการของ GPU ปัจจุบัน ➡️ มี coherent caches และ bindless samplers ➡️ รองรับ 64-bit GPU pointers และ direct memory access ✅ แนวคิด “No Graphics API” ➡️ ลด abstraction ที่ไม่จำเป็น ➡️ ใช้ pointer-based memory และ descriptor heap ที่โปร่งใส ‼️ คำเตือนต่ออุตสาหกรรม ⛔ หากยังยึดติดกับ API รุ่นเก่า จะสร้างภาระ cache และ pipeline state ที่ไม่จำเป็น ⛔ ความซับซ้อนที่สะสมอาจทำให้การพัฒนาเกมและกราฟิกช้าลงและสิ้นเปลืองทรัพยากร https://www.sebastianaaltonen.com/blog/no-graphics-api
WWW.SEBASTIANAALTONEN.COM
No Graphics API — Sebastian Aaltonen
Graphics APIs and shader languages have significantly increased in complexity over the past decade. It’s time to start discussing how to strip down the abstractions to simplify development, improve performance, and prepare for future GPU workloads.
0 ความคิดเห็น 0 การแบ่งปัน 7 มุมมอง 0 รีวิว