AMD โชว์ Ray Tracing แบบใหม่ ใช้ “กรงเตตระฮีดรอน” ลด VRAM จาก 80GB เหลือแค่ 1.7GB รันต้นไม้ 25,000 ต้นเกิน 60 FPS
AMD เปิดเผยเทคนิค Ray Tracing สำหรับฉากที่มี Geometry หนาแน่นและเคลื่อนไหวจำนวนมหาศาล โดยใช้แนวคิดที่เรียกว่า Tetrahedral Cages เพื่อแก้ปัญหาสำคัญของการเรนเดอร์แบบ Ray Tracing นั่นคือ การอัปเดต Bounding Volume Hierarchy (BVH) ของวัตถุที่มีการเคลื่อนไหวจำนวนมาก
ผลการสาธิตของ AMD น่าสนใจอย่างมาก เพราะฉากที่มีต้นไม้กว่า 25,000 ต้น ซึ่งเคลื่อนไหวอย่างอิสระต่อกัน สามารถเรนเดอร์ด้วย Ray Tracing ที่ความละเอียด 1080p บน Radeon RX 9070 XT ได้มากกว่า 60 FPS ขณะที่ลดหน่วยความจำสำหรับ BVH จากสูงสุดประมาณ 80GB เหลือเพียง 1.7GB และลดเวลาอัปเดต BVH จากมากกว่า 300 มิลลิวินาที เหลือประมาณ 3.3 มิลลิวินาทีต่อเฟรม
ปัญหาของ Ray Tracing เมื่อทั้งฉาก “ขยับพร้อมกัน”
ปกติ Ray Tracing จะพึ่งพา BVH หรือ Bounding Volume Hierarchy เพื่อช่วยให้ GPU ค้นหาว่า Ray แต่ละเส้นมีโอกาสชนกับวัตถุส่วนใดของฉาก โดยไม่ต้องตรวจสอบทุก Triangle
ปัญหาจะเกิดขึ้นเมื่อมี Geometry จำนวนมหาศาลและวัตถุเหล่านั้น ขยับหรือเปลี่ยนรูปแบบอิสระทุกเฟรม
ในวิธีทั่วไป ระบบอาจต้อง Refitting หรืออัปเดต Acceleration Structure ของ Geometry ที่เคลื่อนที่อยู่ตลอดเวลา ยิ่งจำนวน Triangle และจำนวนวัตถุเพิ่มขึ้น ภาระด้าน Memory และเวลาในการอัปเดตยิ่งสูงขึ้น
AMD ยกตัวอย่างฉากพืชที่มีรายละเอียดสูงถึง 2.8 พันล้าน Triangle และหากต้องจัดการ Geometry ที่เคลื่อนไหวอย่างอิสระด้วยวิธีแบบดั้งเดิม ตัว BVH อาจใช้หน่วยความจำสูงสุดถึง 80GB และต้องใช้เวลามากกว่า 300ms ต่อเฟรม บน Radeon RX 9070 XT ซึ่งสูงเกินกว่าจะนำมาใช้แบบ Real-Time ได้
ทางออกของ AMD: อย่าขยับทุก Triangle ให้ขยับ “กรง” แทน
แนวคิดของ Tetrahedral Cage คือ AMD ไม่ได้พยายามควบคุมหรืออัปเดต Geometry ความละเอียดสูงทุกจุดโดยตรง แต่สร้าง โครงหุ้มขนาดเล็กที่ประกอบด้วย Tetrahedron หรือรูปทรงสี่หน้าขึ้นมาครอบ Mesh ที่มีรายละเอียดสูง
เมื่อวัตถุเคลื่อนไหว ระบบจะขยับ Cage ซึ่งมีจำนวนองค์ประกอบน้อยกว่าจำนวน Triangle ของ Mesh จริงอย่างมหาศาล ขณะที่ Geometry และโครงสร้าง Ray-Tracing ที่มีรายละเอียดสูงสามารถเก็บไว้ในสถานะอ้างอิงเดิมและนำกลับมาใช้ซ้ำได้
ในช่วง Runtime เมื่อ Cage เปลี่ยนรูป Ray จะถูกแปลงกลับเข้าสู่ Reference Space ก่อนนำไปตรวจสอบกับ Geometry แบบ Static ที่อยู่ภายใน ส่งผลให้ภาระการอัปเดต Acceleration Structure ไม่ได้เพิ่มขึ้นตามจำนวน Triangle ทั้งหมด แต่ขึ้นอยู่กับ ความซับซ้อนของ Cage แทน
นี่คือหัวใจสำคัญของเทคนิค
ขยับ Geometry 500 ล้าน Triangle = แพงมาก
ขยับ Cage ที่เล็กกว่ามาก = ถูกกว่าหลายระดับ
2.8 พันล้าน Triangle เหลือประมาณ 500 ล้านที่ถูก Ray Trace ต่อเฟรม
เดโมของ AMD ใช้ฉากที่มีพืชประมาณ 25,000 ต้น และแต่ละต้นสามารถเคลื่อนไหวแยกจากกันได้
ที่ระดับรายละเอียดสูงสุด พืชทั้งหมดมี Geometry รวมกันประมาณ 2.8 พันล้าน Triangle
หลังระบบเลือกระดับรายละเอียดหรือ LOD แล้ว จำนวน Animated Triangle ที่ถูกนำมาทำ Ray Tracing ต่อเฟรมลดลงเหลือประมาณ 500 ล้าน Triangle และเดโมยังสามารถทำงานที่มากกว่า 60 FPS ที่ 1080p บน Radeon RX 9070 XT โดยยิงทั้ง Primary Ray และ Shadow Ray
จุดสำคัญคือ จำนวน 500 ล้าน Triangle ไม่ได้หมายความว่า Tetrahedral Cage ลด 2.8 พันล้าน Triangle ลงโดยตรงทั้งหมด แต่ตัวเลขดังกล่าวเกิดจาก LOD Selection ซึ่งเป็นอีกขั้นตอนหนึ่งของระบบ ส่วน Tetrahedral Cage เข้ามาแก้ปัญหาต้นทุนในการทำให้ Geometry เหล่านั้นเคลื่อนไหวและยังสามารถใช้ Ray Tracing ได้อย่างมีประสิทธิภาพ
ตัวเลขที่น่าตกใจที่สุดคือ VRAM
สิ่งที่ AMD เน้นว่าเป็นผลลัพธ์หลักของเทคนิคนี้ไม่ใช่เพียงจำนวน Triangle แต่คือ Memory Footprint ของ BVH
การจัดการ Geometry แบบเดิมในเดโมอาจต้องใช้ BVH Memory สูงสุดประมาณ
80GB
ขณะที่ Tetrahedral Cage ลดลงเหลือประมาณ
1.7GB
หรือประหยัดหน่วยความจำได้ราว 47 เท่า
และเวลาในการอัปเดต BVH จากมากกว่า
300ms → 3.3ms ต่อเฟรม
คิดเป็นการลดเวลาประมาณ 91 เท่า
ตัวเลขนี้สำคัญมาก เพราะ 300ms ต่อเฟรมแทบไม่มีทางนำมาใช้กับเกมที่ต้องการ 60 FPS ได้ แต่ 3.3ms อยู่ในช่วงที่สามารถนำไปจัดสรรงบ Frame Time สำหรับงาน Ray Tracing และ Rendering ส่วนอื่นได้
เหมาะกับป่า หญ้า และวัตถุจำนวนมหาศาล
ข้อดีของระบบไม่ได้หมายความว่า Tetrahedral Cages เหมาะกับ Geometry ทุกประเภท
AMD ระบุว่าเทคนิคนี้เหมาะเป็นพิเศษกับ Connectivity-Preserving Animation หรือวัตถุที่โครงสร้างพื้นฐานยังคงเดิม เช่น
ต้นไม้และพืช
ทุ่งหญ้า
ฝูงตัวละคร
ตัวละครที่อยู่ไกลจากกล้อง
ฉากที่ต้องมีวัตถุจำนวนมากเคลื่อนไหวพร้อมกัน
ตัวอย่างที่เหมาะมากคือฉากป่าที่ต้นไม้แต่ละต้นต้องตอบสนองต่อแรงลมที่แตกต่างกัน เพราะไม่จำเป็นต้องขยับทุก Vertex ของต้นไม้แบบอิสระจริง ๆ แต่สามารถใช้ Cage เพื่อจำลองการเคลื่อนไหวของทั้งวัตถุได้
ข้อแลกเปลี่ยนคือความละเอียดในการควบคุม Animation
แน่นอนว่าเทคนิคนี้ไม่ได้มีแต่ข้อดี
เมื่อ Animation ถูกขับเคลื่อนด้วย Cage เราจะสูญเสียความสามารถในการควบคุม ทุก Vertex แบบอิสระ เมื่อเทียบกับระบบ Animation ปกติ
หากวัตถุมีการเปลี่ยนรูปร่างที่ซับซ้อนมาก มีการเคลื่อนไหวขนาดเล็กจำนวนมาก หรือมีการเปลี่ยน Topology เทคนิคนี้จะไม่เหมาะเท่าไรนัก
AMD จึงมองว่า Tetrahedral Cages เหมาะกับสภาพแวดล้อมอย่างป่า หญ้า ฝูงคน หรือวัตถุที่เคลื่อนไหวในลักษณะคล้ายกันมากกว่า
ใช้ร่วมกับ DXR ได้
อีกจุดที่น่าสนใจคือ AMD ระบุว่าแนวคิดนี้สามารถนำไปใช้ร่วมกับ Microsoft DirectX Raytracing (DXR) ได้ และทีมวิจัยกำลังพัฒนา DXR Samples รวมถึง Header-only C++ Library เพื่อให้แนวทางดังกล่าวนำไปใช้งานได้ง่ายขึ้นในอนาคต
นั่นหมายความว่าในทางเทคนิค Tetrahedral Cages ไม่ได้ถูกออกแบบให้เป็นระบบปิดเฉพาะ Demo ของ AMD แต่มีเป้าหมายให้สามารถเชื่อมเข้ากับ Ray-Tracing Pipeline ที่ใช้มาตรฐาน DXR ได้
ยังเป็นงานวิจัย แต่ RX 9070 XT รันได้แล้ววันนี้
แม้ผลเดโมจะน่าประทับใจ แต่ AMD ระบุชัดว่าเทคโนโลยีนี้ยังอยู่ใน ขั้น Research และยังต้องพัฒนาทั้งกระบวนการสร้าง Cage และคุณภาพของ Animation ต่อไป
ดังนั้นจึงยังไม่มีการประกาศว่าเทคนิคนี้จะกลายเป็นฟีเจอร์ในเกมใด หรือจะถูกเปิดให้ผู้ใช้ Radeon นำไปใช้งานได้เมื่อใด
อย่างไรก็ตาม การที่เดโมสามารถทำงานจริงบน Radeon RX 9070 XT ที่ 1080p และมากกว่า 60 FPS แสดงให้เห็นแล้วว่าแนวคิดนี้สามารถทำงานร่วมกับ Hardware Ray Tracing ของ GPU รุ่นปัจจุบันได้
AMD กำลังแก้ “คอขวด” อีกจุดของ Ray Tracing
ในช่วงหลายปีที่ผ่านมา การเพิ่มประสิทธิภาพ Ray Tracing มักมุ่งไปที่การเร่ง Ray Traversal, Denoising, Upscaling หรือการลดจำนวน Ray
แต่ Tetrahedral Cages กำลังแก้ อีกปัญหาหนึ่งที่อยู่เบื้องหลัง นั่นคือ ต้นทุนในการจัดการ Geometry ที่เคลื่อนไหวจำนวนมหาศาล
และนั่นอาจสำคัญมากขึ้นเรื่อย ๆ เมื่อเกมยุคใหม่ต้องการฉากที่มีต้นไม้ ใบไม้ หญ้า ฝูง NPC หรือวัตถุจำนวนมากที่ไม่ได้เป็นเพียงฉาก Static แต่ต้องตอบสนองต่อ Physics และสภาพแวดล้อมแบบ Real-Time
ถ้าเทคนิคนี้พัฒนาไปถึงระดับ Production ได้จริง สิ่งที่ AMD กำลังแสดงอาจช่วยให้เกมมี ฉากที่ละเอียดและเคลื่อนไหวสมจริงขึ้น โดยไม่ต้องแลกด้วย VRAM และเวลาในการสร้าง BVH มหาศาล
พูดง่าย ๆ คือ AMD ไม่ได้พยายามทำให้ Ray Tracing “คำนวณเร็วขึ้น” เพียงอย่างเดียว แต่กำลังพยายามเปลี่ยนวิธีที่ GPU จัดการกับ Geometry ที่กำลังเคลื่อนไหว ตั้งแต่ต้น
และตัวเลข 80GB เหลือ 1.7GB พร้อม 300ms เหลือ 3.3ms คือเหตุผลว่าทำไมงานวิจัยชิ้นนี้จึงน่าจับตามองอย่างมากสำหรับอนาคตของ Real-Time Ray Tracing
ที่มา: TweakTown



