amd tetrahedral cage approach diagram
|

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