Diablo Immortal เพิ่มคุณภาพของภาพด้วยระบบเรย์ทราซิงในฮาร์ดแวร์

Diablo Immortal เป็นเกมเล่นฟรีแนวแอ็กชันบทบาทสมมติ (ARPG) แบบผู้เล่นหลายคนที่พัฒนาร่วมกันโดย Blizzard Entertainment และ NetEase Diablo Immortal ซึ่งเป็นบทใหม่ในซีรีส์ Diablo ที่เปิดตัวในปี 2022 เกมนี้ช่วยเติมเต็มช่องว่างของเนื้อเรื่องระหว่าง Diablo 2 กับ Diablo 3 และเปิดฉากการผจญภัยครั้งใหม่เกี่ยวกับชิ้นส่วนของหินโลก ซึ่งผู้เล่นจะได้สำรวจทวีป Sanctuary เพื่อต่อสู้กับปีศาจและกองกำลังที่บิดเบือน

นวัตกรรมสถาปัตยกรรม GPU บนอุปกรณ์เคลื่อนที่และความสามารถที่ก้าวล้ำของฮาร์ดแวร์ในการเร่งความเร็วทำให้เทคโนโลยีเรย์ tracing ค่อยๆ ย้ายจากเดสก์ท็อปไปยังอุปกรณ์เคลื่อนที่ และกลายเป็นหนึ่งในปัจจัยหลักในการทำให้การแสดงผลกราฟิกมีความสมจริง การคำนวณการสะท้อนแบบไดนามิกที่สมจริงตามหลักฟิสิกส์ต้องใช้การประมวลผลที่มีประสิทธิภาพ แต่หน่วยฮาร์ดแวร์เฉพาะช่วยให้ดำเนินการนี้ได้บนแพลตฟอร์มอุปกรณ์เคลื่อนที่ที่จำกัดพลังงาน เทคโนโลยีนี้จำลองลักษณะการสะท้อนของพื้นผิวที่ซับซ้อน เช่น กระจก โลหะ และของเหลว ได้อย่างแม่นยำด้วยการติดตามเส้นทางการแผ่รังสีของแสงผ่านฉากแบบเรียลไทม์ เรย์ tracing ช่วยขจัดข้อจำกัดเชิงพื้นที่และข้อผิดพลาดในการประมาณของรูปแบบแรสเตอร์แบบดั้งเดิม และรองรับการแสดงผลที่สอดคล้องกันทั่วโลกของแหล่งแสงแบบไดนามิก วัตถุนอกหน้าจอ และการสะท้อนหลายระดับ

เรย์ tracing บนฮาร์ดแวร์ในอุปกรณ์เคลื่อนที่

เทคโนโลยีเรย์ tracing ของฮาร์ดแวร์มีแพลตฟอร์มการใช้งานหลักๆ 2 แพลตฟอร์ม ได้แก่ ไปป์ไลน์เรย์ tracing และการค้นหาเรย์

ไปป์ไลน์เรย์ tracing จะสร้างไปป์ไลน์ที่สมบูรณ์ผ่านระยะของโปรแกรมเปลี่ยนรูปแบบเฉพาะ (การสร้างเรย์ / จุดตัดกัน / โปรแกรมเปลี่ยนรูปแบบที่โดนเป้าหมายใกล้ที่สุด) แม้ว่าจะควบคุมการโต้ตอบของรังสีได้อย่างแม่นยำ แต่ไปป์ไลน์การเรย์ tracing ต้องมีการกำหนดค่าไปป์ไลน์อิสระ ซึ่งเพิ่มความซับซ้อนในการพัฒนา

ในทางกลับกัน การค้นหาด้วยเรย์ช่วยให้เริ่มการค้นหาด้วยเรย์ได้โดยตรงจากการคำนวณหรือเชดเดอร์เศษแบบดั้งเดิม ซึ่งทำให้เป็นเทคโนโลยีหลักสำหรับการเรย์ tracing บนอุปกรณ์เคลื่อนที่ เนื่องจากการไม่ต้องใช้ไปป์ไลน์แยกต่างหาก เรย์คิวรีจึงไม่เพียงลดความซับซ้อนของกระบวนการพัฒนาอย่างมากเท่านั้น แต่ยังมีข้อดีหลักๆ 3 ข้อดังนี้

  1. เข้ากันได้กับสภาพแวดล้อมการประมวลผลแบบผสมและฮาร์ดแวร์เรย์ tracing ที่ไม่สมบูรณ์
  2. รองรับการเรียกใช้เรย์ tracing แบบออนดีมานด์ในทุกระยะการแรเงา
  3. การลดการใช้ทรัพยากรจะช่วยตอบสนองข้อจำกัดของแบนด์วิดท์และพลังงานของแพลตฟอร์มอุปกรณ์เคลื่อนที่ รวมถึงเป็นพื้นฐานที่เป็นไปได้สำหรับเอฟเฟกต์ขั้นสูง เช่น การจัดแสงโดยรวมแบบไดนามิกและการสะท้อนแสงแบบเรียลไทม์ในเกมบนอุปกรณ์เคลื่อนที่

Diablo Immortal ใช้ Vulkan เพื่อใช้ประโยชน์จากความสามารถของฮาร์ดแวร์เรย์แคสต์ของ GPU เกมจะคำนวณเส้นทางของแสงผ่านฉากแบบเรียลไทม์และพิจารณาคุณสมบัติของวัสดุที่ซับซ้อนเพื่อให้ได้เอฟเฟกต์การสะท้อนแสงแบบเรียลไทม์ที่ยอดเยี่ยมในอุปกรณ์ Android

รูปที่ 1 ฉากที่มีการเปิดใช้การสะท้อนด้วยระบบเรย์แคสต์
รูปที่ 2 ฉากที่มีปิดการสะท้อนด้วยระบบเรย์แคสต์

โครงสร้างการเร่ง

โครงสร้างการเร่งเป็นหัวใจหลักของการเรย์แคสต์ด้วยฮาร์ดแวร์ โครงสร้างการเร่งความเร็วช่วยเพิ่มประสิทธิภาพของการตรวจหาจุดตัดของรังสีได้อย่างมากผ่านการจัดระเบียบข้อมูลที่แบ่งลำดับชั้น

โดยปกติแล้วระบบจะมี 2 ระดับ ได้แก่ โครงสร้างการเร่งระดับบนสุด (TLAS) และโครงสร้างการเร่งระดับล่าง (BLAS) ดังนี้

  • TLAS ทำหน้าที่เป็นตัวจัดการฉาก โดยบันทึกเมทริกซ์การเปลี่ยนรูปแบบเชิงพื้นที่ (รวมถึงตำแหน่ง การหมุน และมาตราส่วน) ของอินสแตนซ์ BLAS ทั้งหมด ซึ่งทำให้ TLAS ตระหนักถึงการจัดระเบียบฉากแบบไดนามิกทั่วโลก ตัวอย่างเช่น TLAS ช่วยให้นักพัฒนาแอปสามารถเผยแพร่อินสแตนซ์ของโมเดลต้นไม้เดียวกันหลายร้อยรายการในตำแหน่งและท่าทางต่างๆ ในฉากได้ นักพัฒนาแอปจึงต้องอัปเดตเฉพาะเมทริกซ์การเปลี่ยนรูปแบบของวัตถุที่เคลื่อนไหวในแต่ละเฟรมแทนการสร้างเรขาคณิตขึ้นมาใหม่
  • BLAS เป็นหน่วยฐาน - มีหน้าที่รับผิดชอบในการเข้ารหัสรายละเอียดเชิงเรขาคณิตของวัตถุ 3 มิติรายการเดียวอย่างมีประสิทธิภาพ โดย BLAS จะสร้างโครงสร้างดัชนีเชิงพื้นที่ผ่านอัลกอริทึมลําดับชั้นปริมาตรที่กําหนดขอบเขต (BVH) เพื่อให้ข้ามพื้นที่ที่ไม่เกี่ยวข้องได้อย่างรวดเร็วระหว่างการตรวจจับเรย์

การออกแบบแบบลําดับชั้นนี้ช่วยให้ไปป์ไลน์การเรย์ tracing สามารถสร้างเชนการตรวจจับที่มีประสิทธิภาพของเรย์ ==> TLAS (อินสแตนซ์ออบเจ็กต์ตะแกรงหยาบ) ==> BLAS (จุดตัดที่แน่นอน)

การแยกโมเดลแบบไดนามิกและแบบคงที่เป็นกุญแจสำคัญในการลดต้นทุนการสร้างโครงสร้างการเร่ง

  • โมเดลแบบคงที่ — จำเป็นต้องสร้าง BLAS เพียงครั้งเดียวในระยะเริ่มต้น และสามารถนำมาใช้ซ้ำได้โดยตรงในการโหลดฉากต่อๆ มา หากต้องการหลีกเลี่ยงการโหลดที่ล่าช้าของฉากขนาดใหญ่ คุณสามารถใช้เทคโนโลยีการสร้างก่อนการประมวลผลแบบไม่พร้อมกันของการจัดเฟรมเพื่อกระจายงานการสร้าง BLAS ไปยังหลายเฟรม
  • โมเดลแบบไดนามิก
    • ขับเคลื่อนโดยภาพเคลื่อนไหวโครงกระดูก — ข้อมูลเวิร์กเท็กซ์ที่ผ่านการปรับผิวต้องได้รับการประมวลผลแบบขนานโดยเชดเดอร์การประมวลผลทุกเฟรมเพื่อสร้างบัฟเฟอร์เวิร์กเท็กซ์ใหม่ จากนั้นจึงทริกเกอร์การอัปเดตแบบเพิ่มของ BLAS ที่เกี่ยวข้อง ซึ่งจะช่วยหลีกเลี่ยงการสร้างใหม่ทั้งหมดเพื่อปรับปรุงประสิทธิภาพ
    • การเปลี่ยนรูปแบบของวัตถุคงที่ — หากมีเฉพาะการเปลี่ยนรูปแบบการแปล/การหมุน/การซูม ก็ไม่จําเป็นต้องแก้ไข BLAS เพียงอัปเดตเมทริกซ์การเปลี่ยนรูปแบบของวัตถุใน TLAS แล้วเรียกใช้กระบวนการอัปเดตด่วนของ TLAS

การสร้างใหม่เป็นระยะๆ เป็นสิ่งจําเป็นในการรักษาประสิทธิภาพของโครงสร้างการเร่งเร้าในฉากแบบไดนามิกของเรย์ tracing เมื่อวัตถุแบบไดนามิกมีการเปลี่ยนแปลงที่สำคัญในเรขาคณิตแบบทอพอโลยี เช่น การเสียรูปหรือการกระจัดของจุดยอดในวงกว้าง การแบ่งพื้นที่เดิมอาจไม่สำเร็จ ซึ่งจะลดประสิทธิภาพการตรวจจับการชนระหว่างเรย์ในการสแกน ด้วยเหตุนี้ ระบบจึงต้องเรียกใช้การสร้างใหม่ทั้งหมดแทนการอัปเดตแบบเพิ่มทีละน้อยของ BLAS/TLAS ที่มีการเปลี่ยนแปลงสูงทุกๆ N เฟรม

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

การสะท้อนด้วยระบบเรย์แคสต์

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

รูปที่ 3 ภาพสะท้อนของปีกในสระน้ำ
รูปที่ 4 ภาพสะท้อนของสัตว์ประหลาด

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

อย่างไรก็ตาม ในระหว่างกระบวนการติดตั้งใช้งาน ทีม Diablo Immortal ได้ค้นพบปัญหาทางเทคนิคที่สำคัญ 2 ข้อ ดังนี้

  1. ระบบต้องบังคับให้ใช้รูปแบบการจัดแสงแบบเดียวกัน ซึ่งขัดแย้งกับระบบแรเงาที่หลากหลายที่สะสมมาตลอดประวัติของโปรเจ็กต์ และอาจส่งผลให้วัสดุที่สะท้อนแสงไม่ตรงกับวัสดุต้นฉบับ
  2. รูปแบบเวิร์กเท็กซ์ที่หลากหลายทำให้ประสิทธิภาพการแยกสาขาของคำสั่งลดลงในระยะแรสเตอร์ ซึ่งถือเป็นปัญหาสำคัญภายใต้งบประมาณด้านประสิทธิภาพที่จำกัดของอุปกรณ์เคลื่อนที่

ทีม Diablo Immortal ได้เปิดตัวบัฟเฟอร์การแสดงผลอย่างสร้างสรรค์เพื่อแยกการประมวลผลเรขาคณิตออกจากการคํานวณการแรเงา

  • ระยะการเรย์แคสต์ — ระบบจะบันทึกข้อมูลการตี Ray ระดับพิกเซลแบบเรียลไทม์ผ่าน Ray Query ตัวระบุเชิงพื้นที่ 3 มิติ (InstanceID พร้อม PrimitiveIndex) ของจุดตัดจะเข้ารหัสเป็นรหัสการแสดงผลแบบกะทัดรัดและเขียนลงในบัฟเฟอร์พื้นที่หน้าจอ
  • ระยะการระบายสี — คล้ายกับการดำเนินการที่ดำเนินการโดยเวิร์กเท็กซ์และพิกเซลเชดเดอร์ ระบบจะแยกวิเคราะห์ตัวระบุเชิงเรขาคณิตในบัฟเฟอร์การแสดงผลแบบไดนามิก ดึงข้อมูลพร็อพเพอร์ตี้เวิร์กเท็กซ์ (เช่น UV และเวกเตอร์ปกติ) และแผนที่วัสดุตามหลักฟิสิกส์ของโมเดลต้นฉบับ และดำเนินการคำนวณการแรเงาที่เกี่ยวข้องกับประเภทวัสดุในขั้นตอนสุดท้าย

โซลูชันนี้ช่วยให้เชื่อมต่อชิ้นงานภาพกับระบบการสะท้อนด้วยระบบเรย์แคสต์ได้โดยไม่ต้องแก้ไขรูปแบบเวิร์กเท็กซ์หรือชิเดอร์

ขั้นตอนการแสดงผลที่เฉพาะเจาะจง

พาสการค้นหาด้วย Ray

สอดคล้องกับระยะการเรย์แคสต์และสร้างบัฟเฟอร์การแสดงผลสำหรับการสะท้อนในพื้นที่หน้าจอ

  • Color0
    • รูปแบบ:R32G32UInt
    • R = TriangleID,G = Barycentrics
รูปที่ 5 บัฟเฟอร์การแสดงผล
  • ความลึก:
    • รูปแบบ:Depth32F
    • D = EncodeAsFloat(InstanceIdx, GeometryIdx)
    • ตัวระบุวัสดุของจุดตัดจะเข้ารหัสเป็นทศนิยม 32 บิตและเขียนลงในบัฟเฟอร์ความลึกสำหรับระยะถัดไปของเทคนิคการตรวจจับการจับคู่การเข้ารหัสความลึกของวัสดุ
รูปที่ 6 ความลึกที่เข้ารหัส

เรย์คิวรีในพิกเซลเชดเดอร์มีข้อดีต่อไปนี้เมื่อเทียบกับคอมพิวตเชดเดอร์

  • การผสานรวมไปป์ไลน์ — ฝังไปป์ไลน์ลงในไปป์ไลน์เรนเดอร์แบบส่งต่อ/เลื่อนเวลาที่มีอยู่โดยตรง เพื่อรักษาสถานะไปป์ไลน์เรนเดอร์ให้ต่อเนื่อง
  • การเพิ่มประสิทธิภาพแบนด์วิดท์ของอุปกรณ์เคลื่อนที่ — สำหรับสถาปัตยกรรมแบบไทล์บนอุปกรณ์เคลื่อนที่ ระบบจะเรียกใช้การบีบอัดแบบไม่สูญเสียข้อมูลในชิปเมื่อมีการเขียนข้อมูลการตีของเรย์ลงในRenderTarget ซึ่งจะช่วยลดการใช้แบนด์วิดท์ของหน่วยความจำเมื่อเทียบกับการส่งออกคอมพิวตเชดเดอร์แบบดั้งเดิมไปยังบัฟเฟอร์
  • การควบคุมจำนวนรังสี — คุณสามารถทําเครื่องหมายและปฏิเสธพื้นที่ที่ไม่สะท้อนแสงได้โดยใช้ระยะก่อนการประมวลผลร่วมกับการทดสอบสเตนซิล

แก้ไขบัตร

ในขั้นตอนการตกแต่งสี (ดูการสะท้อนด้วยระบบเรย์แคสต์) ทีม Diablo Immortal จับคู่การระบุได้อย่างรวดเร็วโดยใช้หน่วยฮาร์ดแวร์ทดสอบความลึกและดำเนินการตกแต่งสีของวัสดุเป็นกลุ่มๆ ต่อเนื่อง

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

ถัดไป ระบบจะใช้การจำลองวัสดุที่มีความแม่นยำสูงในพิกเซลเชเดอร์ ดังนี้

  • การถอดรหัสข้อมูลเรขาคณิต — ดึงข้อมูลตัวระบุรูปสามเหลี่ยม (MeshID + PrimitiveID) และพิกัดจุดศูนย์กลางมวลจากบัฟเฟอร์การแสดงผล และโหลดแอตทริบิวต์เวิร์กเท็กซ์ (ตำแหน่ง, UV, ปกติ ฯลฯ) ของรูปสามเหลี่ยมที่เกี่ยวข้องจากบัฟเฟอร์เวิร์กเท็กซ์แบบไดนามิก เนื่องจากโมเดลแต่ละโมเดลมีการแรเงาเป็นวัสดุอิสระ คุณจึงไม่จำเป็นต้องใช้ฟีเจอร์ขั้นสูง เช่น การเชื่อมโยง
  • การสร้างใหม่ของพารามิเตอร์พื้นผิว — คํานวณพิกัด UV ที่จุดตัดโดยใช้การหาค่าพิกัดศูนย์กลางมวล ระบบจะแรสเตอร์ซอฟต์แวร์เพื่อสุ่มตัวอย่างแผนที่ตาม UV ที่หาค่าเฉลี่ยแล้ว
  • การใช้การคำนวณการแรเงาซ้ำ — ใช้โค้ดเชดเดอร์ที่มีอยู่ซ้ำโดยตรงเพื่อรักษาตรรกะวัสดุแบบเดียวกับไปป์ไลน์การแสดงผลหลัก
รูปที่ 7 ปิดการสะท้อนแล้ว

สุดท้าย โมเดลที่มีส่วนร่วมในการคำนวณการสะท้อนแสงจริงจะคิดเป็นเพียงส่วนเล็กๆ ของฉากเท่านั้น ระบบจะอ่านข้อมูลการระบุโมเดลการสะท้อนที่ GPU แสดงผลแบบไม่พร้อมกันเพื่อกำจัดโมเดล/วัสดุที่ไม่ได้มีส่วนร่วมในการสะท้อน ซึ่งจะช่วยลดจำนวนการเรียกให้วาด (การเรียกให้วาดเกิดขึ้นเมื่อส่งวัสดุและเมชไปยัง GPU เพื่อวาด) ในขั้นตอนการจัดแสงได้อย่างมีประสิทธิภาพ

การสะท้อนแสงที่สมจริงตามหลักฟิสิกส์

ระบบจะจัดประเภทพื้นผิวสะท้อนแสงออกเป็น 3 ประเภทตามระดับความขรุขระเพื่อให้ได้ภาพสะท้อนที่สมจริง

  1. ไม่มีแสงสะท้อน - ข้ามการคำนวณแสงสะท้อนสำหรับพื้นผิวเหล่านี้เพื่อประหยัดทรัพยากรได้ หากพื้นผิวขรุขระมาก การสะท้อนจะเบลอและจางลง จึงทำให้การมีส่วนร่วมไม่ชัดเจน
  2. ภาพสะท้อนในกระจก — รูปภาพที่สะท้อนต้องชัดเจนและไม่เบลอ เหมือนกับกระจกเรียบ ถ่ายภาพเส้นในทิศทางของแสงสะท้อนจากแนวสายตาโดยตรง
  3. การสะท้อนแสงแบบมันวาว — การสะท้อนแสงที่มีพื้นผิวขรุขระบางอย่างจะจำลองตามการสุ่มตัวอย่างแบบสำคัญ GGX ซึ่งจะพิจารณาทั้งประสิทธิภาพการประมวลผลและความถูกต้องทางกายภาพ การสะท้อนแสงจะเบี่ยงเบนไปยังทิศทางหลักของการสะท้อนแสงที่สะท้อนเมื่อปล่อยเส้น ซึ่งจะปรับปรุงประสิทธิภาพการสุ่มตัวอย่างของบริเวณไฮไลต์

ทีม Diablo Immortal ใช้โซลูชัน 1SPP+Denoiser เพื่อให้ได้คุณภาพรูปภาพที่ใช้งานได้โดยมีการใช้พลังงานอย่างจำกัด กล่าวคือ ทีม Diablo Immortal ทำการสุ่มตัวอย่าง 1 รายการต่อพิกเซล จากนั้นจะใช้อัลกอริทึมการลดสัญญาณรบกวนเชิงเวลา/เชิงพื้นที่เพื่อปรับระดับสัญญาณรบกวนจำนวนมากที่เกิดจากการสุ่มตัวอย่างที่อัตราต่ำ

ทีม Diablo Immortal เลือกตัวลดสัญญาณรบกวนจากภาพสะท้อนใน AMD FidelityFX Denoiser ซึ่งเป็นตัวลดสัญญาณรบกวนประสิทธิภาพสูงที่เพิ่มประสิทธิภาพให้เหมาะกับภาพสะท้อนจากการเรย์แคสต์และภาพสะท้อนในหน้าจอ ข้อได้เปรียบหลักของโปรแกรมลดสัญญาณรบกวนจากภาพสะท้อนคืออัลกอริทึมการลดสัญญาณรบกวนแบบผสมตามพื้นที่และเวลาของโปรแกรมลดสัญญาณรบกวน ซึ่งทำงานโดยการรวมเฟรมปัจจุบันและข้อมูลเฟรมที่ผ่านมา (ตามการชดเชยการเคลื่อนไหว) เข้ากับเทคนิคการกรองเชิงพื้นที่ (เช่น การกรองการคงขอบตามความแปรปรวน) โปรแกรมลดสัญญาณรบกวนจากภาพสะท้อนจึงกำจัดสัญญาณรบกวนได้อย่างมีประสิทธิภาพและแสดงผลเอฟเฟกต์ภาพสะท้อนที่ราบรื่นด้วยการสุ่มตัวอย่างที่ต่ำมาก

ทีม Diablo Immortal ได้ปรับแต่งการผสานรวม AMD FidelityFX Reflection Denoiser ให้มีประสิทธิภาพมากขึ้นและปรับสถาปัตยกรรมให้เหมาะกับลักษณะของไปป์ไลน์การเรนเดอร์ที่พัฒนาขึ้นเองเพื่อตอบสนองข้อจำกัดด้านประสิทธิภาพที่เข้มงวดของอุปกรณ์เคลื่อนที่

เรย์ tracing คุณภาพสูงด้วย Vulkan

Diablo Immortal ทำงานได้ในอุปกรณ์ Android ที่เปิดใช้ Vulkan หลากหลายรุ่น ซึ่งทีม Diablo Immortal ใช้ประโยชน์จากความสามารถอันล้ำสมัยของฮาร์ดแวร์ GPU ในการเรย์แคสต์ Vulkan ช่วยลดค่าใช้จ่ายและปัญหาในการพัฒนา ซึ่งช่วยให้สามารถนำเสนอเนื้อหาและเกมเพลย์คุณภาพสูงของ Diablo Immortal แก่ผู้ใช้ Android ได้

เริ่มต้นใช้งานการเรย์ tracing ใน Vulkan

ดังที่ Diablo Immortal แสดงให้เห็น การแสดงผลด้วยเทคโนโลยีเรย์ทราซิงใน Android นั้นเกี่ยวข้องกับการใช้ Vulkan API ในฮาร์ดแวร์ที่มีประสิทธิภาพ นักพัฒนาแอปที่สนใจใช้ Vulkan โดยตรงสามารถดูหัวข้อดูข้อมูลเกี่ยวกับ Ray Tracing ด้วย Vulkan ใน Android โดย ARM หรือส่วน Raytracing ของ Adreno GPU ในอุปกรณ์เคลื่อนที่: แนวทางปฏิบัติแนะนำโดย Qualcomm ดูรายละเอียดเกี่ยวกับ API ได้ที่ข้อมูลจำเพาะอย่างเป็นทางการของ Ray Tracing ใน Vulkan ของ Khronos

สําหรับการพัฒนาที่อิงตามเครื่องมือ Unreal Engine ร่วมมือกับ ARM มอบการรองรับเวอร์ชันทดลองสําหรับ Lumen ที่มีเรย์ tracing ของฮาร์ดแวร์บนอุปกรณ์เคลื่อนที่ แม้ว่าการรองรับการเรย์ tracing บนฮาร์ดแวร์ของ Unity จะยังคงพัฒนาอย่างต่อเนื่อง แต่โปรดติดตามการอัปเดตของ Unity