AMD นำเสนอเทคนิค Tetrahedral Cages ลดภาระการประมวลผล Ray Tracing และใช้หน่วยความจำน้อยลง
หากคุณเล่นเกมที่มีฉากป่า ต้นไม้แต่ละต้นอาจเอนไปตามลมต่างกัน เมื่อเปิด Ray Tracing เกมต้องคำนวณแสงและเงาให้ตรงกับต้นไม้ที่กำลังขยับด้วย ยิ่งมีต้นไม้มากและมีรายละเอียดสูง การ์ดจอก็ยิ่งมีงานเพิ่มขึ้น
AMD นำเสนอเทคนิคชื่อ Tetrahedral Cages เพื่อช่วยจัดการงานส่วนนี้ แนวคิดคือใช้โครงควบคุมที่มีรายละเอียดน้อยมาควบคุมการเคลื่อนไหว แล้วนำข้อมูลโมเดลรายละเอียดสูงที่เตรียมไว้กลับมาใช้ซ้ำ
ที่มาวิดีโอ: https://gpuopen.com/learn/how-tetrahedral-cages-significantly-reduce-bvh-memory-usage/
ต้นไม้ขยับ ทำไมการ์ดจอต้องทำงานเพิ่ม
Ray Tracing ต้องตรวจสอบว่าแสงเดินทางไปกระทบอะไรในฉาก เกมจึงเตรียมข้อมูลช่วยค้นหาตำแหน่งพื้นผิว เพื่อให้การ์ดจอหาคำตอบได้เร็วขึ้น ข้อมูลส่วนนี้เรียกว่า BVH
เมื่อต้นไม้เอนหรือกิ่งไม้เปลี่ยนตำแหน่ง เกมต้องปรับข้อมูลช่วยค้นหาให้ตรงกับรูปร่างใหม่ด้วย หากต้นไม้หลายพันต้นขยับต่างกัน เกมก็ต้องจัดการข้อมูลการเคลื่อนไหวของแต่ละต้น งานนี้ใช้ทั้งเวลาประมวลผลและพื้นที่หน่วยความจำบนการ์ดจอ หลักการอัปเดตข้อมูลสำหรับวัตถุที่เปลี่ยนรูปอธิบายไว้ใน เอกสาร DirectX Raytracing ของ Microsoft
วิธีของ AMD ลดงานตรงไหน
AMD สร้างโครงสามมิติครอบโมเดลไว้ โครงนี้มีจุดควบคุมน้อยกว่าโมเดลจริงมาก เมื่อทำให้ต้นไม้เอน ระบบจะขยับโครงเพื่อกำหนดว่าต้นไม้ควรเปลี่ยนรูปอย่างไร
ส่วนข้อมูลพื้นผิวละเอียดและข้อมูลช่วยค้นหาที่เตรียมไว้ยังใช้ชุดเดิมได้ ระบบอาศัยรูปร่างของโครงที่ขยับไปแล้วในการปรับการคำนวณ Ray Tracing ให้สัมพันธ์กับโมเดลต้นฉบับ จึงลดงานอัปเดตข้อมูลรายละเอียดสูงซ้ำในทุกภาพ
ตัวอย่างเช่น ต้นไม้ที่มาจากโมเดลเดียวกันสามารถใช้ข้อมูลรายละเอียดร่วมกันได้ แต่มีโครงควบคุมการเคลื่อนไหวแยกกัน ทำให้แต่ละต้นเอนตามลมต่างกันได้

ตัวอย่างต้นไม้ใบหญ้า 25,000 ต้น ทำงานเกิน 60 FPS
AMD ทดลองกับฉากที่มีต้นไม้เล็กใหญ่ประมาณ 25,000 ต้น เคลื่อนไหวแยกกันบน Radeon RX 9070 XT ที่ความละเอียด 1080p เดโมทำงานได้มากกว่า 60 FPS โดยใช้ Ray Tracing คำนวณภาพจากกล้องและเงา
ผลที่น่าสนใจคือหน่วยความจำและเวลาที่ใช้ปรับข้อมูล BVH ในฉากนี้
| สิ่งที่ AMD เปรียบเทียบ | วิธีเดิมที่ใช้ในการเปรียบเทียบ | Tetrahedral Cages |
|---|---|---|
| หน่วยความจำสำหรับ BVH | สูงสุดประมาณ 80 GB | ประมาณ 1.7 GB |
| เวลาอัปเดต BVH ต่อภาพ | มากกว่า 300 มิลลิวินาที | ประมาณ 3.3 มิลลิวินาที |
ตัวเลข 1.7 GB เป็นหน่วยความจำเฉพาะส่วน BVH ส่วนเกมยังต้องใช้หน่วยความจำกับพื้นผิวและข้อมูลอื่นอีก เช่นเดียวกับเวลา 3.3 มิลลิวินาทีที่นับเฉพาะการอัปเดต BVH ดูผลทดลองที่ AMD เผยแพร่ (ลิงก์ท้ายบทความ)
เพื่อให้เห็นภาพ หากคุณต้องการเล่นที่ 60 FPS การ์ดจอมีเวลาสร้างภาพแต่ละภาพประมาณ 16.7 มิลลิวินาที การลดงานส่วนหนึ่งให้เหลือ 3.3 มิลลิวินาทีจึงช่วยให้มีเวลาเหลือสำหรับงานสร้างภาพส่วนอื่น
ผู้เล่นเกมจะได้ประโยชน์อย่างไร
จากผลทดลองนี้ หากผู้พัฒนานำเทคนิคไปใช้กับฉากที่เหมาะสม ก็มีโอกาสเพิ่มต้นไม้หรือวัตถุที่เคลื่อนไหว โดยใช้หน่วยความจำและเวลาเตรียมข้อมูล Ray Tracing น้อยลง ประโยชน์ที่คุณอาจเห็นจึงเป็นฉากที่มีวัตถุเคลื่อนไหวมากขึ้นภายใต้ทรัพยากรการ์ดจอเท่าเดิม
อย่างไรก็ตาม ความละเอียดของโครงควบคุมมีผลต่อการเคลื่อนไหว โครงที่เรียบง่ายประหยัดทรัพยากร แต่เก็บการเปลี่ยนรูปเล็ก ๆ ได้จำกัด AMD จึงมองว่างานอย่างต้นไม้ไหว หญ้า และตัวละครระยะไกลเหมาะกับวิธีนี้ ส่วนภาพใกล้ที่ต้องแสดงการเปลี่ยนรูปละเอียดอาจต้องใช้วิธีอื่น
เทคนิคนี้เป็นวิธีที่ผู้พัฒนาเกมต้องนำไปใช้ในระบบสร้างภาพ คุณจึงควรดูผลจากเกมที่นำไปใช้จริงต่อไป ว่าช่วยลดการใช้หน่วยความจำ เพิ่มความลื่นไหล หรือเพิ่มรายละเอียดในฉากได้มากเพียงใด
ข้อมูล AMD GPUOpen

