Ray Tracing ปรับปรุงประสิทธิภาพ GPU อย่างไร

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

การติดตามรังสีที่เราเริ่มเห็นในเกมไม่ใช่การใช้การติดตามรังสีที่ใช้ในภาพยนตร์ในปัจจุบันอย่างสมบูรณ์เนื่องจากจะช้าเกินไป แต่เป็นการรวมกันของเทคนิคการแรสเตอร์ที่ใช้มาจนถึงตอนนี้นอกเหนือจาก Ray Tracing เพื่อแก้ปัญหาบางอย่างที่ไม่สามารถแก้ไขได้ด้วยการแรสเตอร์

Ray Tracing ปรับปรุงประสิทธิภาพ GPU ได้อย่างไร

แนวคิดคือการแทนที่เทคนิคการแรสเตอร์แบบเดิม ๆ โดย Ray Tracing อย่างก้าวหน้าและค่อยเป็นค่อยไป แต่ถึงกระนั้นก็ตาม NVIDIAซึ่งเป็น บริษัท ที่ส่งเสริมเทคโนโลยีนี้มากที่สุดในช่วงไม่กี่ปีที่ผ่านมาในแง่ของการตลาดได้กำหนดวันที่สำหรับจุดเริ่มต้นของการสิ้นสุดการเปลี่ยนจากการแรสเตอร์เป็น Ray Tracing a ภายในปี 2023

การติดตามเรย์ 2023

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

นั่นหมายความว่าเกมจะละทิ้งการแรสเตอร์ทีละน้อยและ GPU ที่อยู่ในกราฟิกการ์ดของเราจะค่อยๆเปลี่ยนไปตามอุดมคตินั้น

Rasterized เทียบกับ Ray Tracing

เรย์ติดตาม Recorrido Luz

ในการแรสเตอร์เราอัปเดตค่าสีของพิกเซลบนหน้าจอแล้วอัปเดตพิกเซลนั้นอีกครั้ง นั่นหมายความว่าต้องอัปเดตพิกเซลเดียวหลายครั้งในฉากเดียว

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

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

ไปป์ไลน์การติดตามรังสีไฮบริด

ไปป์ไลน์ Ray Tracing Vulkan DX12U

ไม่ว่าเราจะใช้ Vulkan, DirectX 12 Ultimate หรือ API ประเภทอื่นก็ตามขั้นตอนและลำดับของสิ่งเหล่านี้จะเหมือนกันเสมอ

  • เรย์ เจเนอเรชัน เชเดอร์: จะต้องเรียกใช้ shader นี้ทุกครั้งที่เราต้องการให้วัตถุในฉากปล่อยรังสีชนิดหนึ่งออกมา
  • Intersection Shader: มัน เป็นเงาที่คำนวณจุดตัดระหว่างรังสีกับวัตถุเลิกใช้งานเนื่องจากหน่วยตัดกันเช่น RT Core ของ NVIDIA ทำงานนี้ควบคู่กันไปและมีประสิทธิภาพมากขึ้น
  • ความละเอียดเฉดสี: พวกเขา เป็นประเภทของโปรแกรม shader ที่ใช้กับวัตถุโดยขึ้นอยู่กับผลลัพธ์ของการตัดกันเรียกว่า miss shader, hit shader ที่ใกล้ที่สุด, hit shader ฯลฯ ทั้งหมดไม่ทำงานพร้อมกันเนื่องจากจุดตัดให้ หนึ่งผลลัพธ์

เนื่องจาก GPU ที่เราใช้ในระบบของเราสำหรับ Ray Tracing ขาดพลังสิ่งที่ทำคือการใช้งานขั้นต่ำโดย จำกัด ปริมาณรังสีที่ประกอบเป็นฉากและระดับการเรียกซ้ำ

การจัดแสงทางอ้อมข้อดีของการติดตามรังสี

Raster เทียบกับ Ray Tracing

แม้จะมีการปรับปรุงอย่างต่อเนื่องใน GPU พลังและความสามารถในการตั้งโปรแกรมในช่วงสองทศวรรษที่ผ่านมาทั้งหมดใช้อัลกอริทึมเดียวกันในการแสดงฉากฉากที่เรียกว่าอัลกอริทึมแรสเตอร์

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

ในทางกลับกันการติดตามรังสีจะเกี่ยวข้องกับเส้นทางของแสงในฉากและคำนึงถึงพฤติกรรมและวิถีของมันด้วย

" เราเข้าใจว่าเป็นแสงทางอ้อมซึ่งเกิดจากวัตถุเมื่อแหล่งกำเนิดแสงตรงมาตกกระทบ ".

ปัญหามาจากวิธีการเรนเดอร์ที่การแรสเตอร์ไม่ได้คำนึงถึงเส้นทางของแสงดังนั้นเมื่อพูดถึงการแสดงพฤติกรรมของสิ่งนี้เมื่อส่งผลกระทบต่อวัตถุจึงต้องหาวิธีการทดแทนเนื่องจาก ขาดข้อมูลในที่เกิดเหตุ

แผนที่เงาตัวอย่างของข้อ จำกัด ของการแรสเตอร์

แรสเตอร์แผนที่เงาที่น่ากลัว

มากกว่าหนึ่งครั้งการเล่นวิดีโอเกมจะทำให้คุณอยากละสายตาเพราะเงาในเกม เหตุผลก็คือ GPU ต้องทำงานพิเศษเพื่อให้เข้าใจว่าเงาจะเป็นอย่างไรเนื่องจากไม่มีข้อมูล

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

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

สิ่งหนึ่งที่เกิดขึ้นเพื่อแก้ไขโดยการติดตามรังสีคือแผนที่เงาและไม่เพียง แต่สิ่งเหล่านี้เท่านั้น แต่ยังรวมถึงการสะท้อนของวัตถุการหักเห ฯลฯ

การติดตาม Battlefield V Ray

เอฟเฟกต์ทั้งหมดนี้เริ่มถูกถ่ายโอนไปยัง Ray Tracing เนื่องจากข้อเท็จจริงที่ว่าการแรสเตอร์ไม่สามารถแก้ปัญหาภาพเหล่านี้ได้ด้วยคำจำกัดความเดียวกัน

อีกวิธีหนึ่งที่นักพัฒนาสามารถเอาชนะข้อ จำกัด ของการแรสเตอร์ได้คือการใช้แผนที่แสงเงาและ / หรือการสะท้อนแบบคงที่ ตัวอย่างเช่นสิ่งที่พวกเขาทำคือวางเงาคงที่บนพื้นที่งานซึ่งได้รับการคำนวณไว้ล่วงหน้าและเงาเหล่านี้ไม่ได้เป็นแบบไดนามิกและไม่เปลี่ยนแปลงเมื่อมีการเปลี่ยนแปลงของแสงอย่างต่อเนื่อง

ข้อดีอีกประการหนึ่ง: การเป็นตัวแทนของวัสดุ

Luz en วัสดุ

องค์ประกอบที่สำคัญอีกอย่างในการแสดงฉาก 3 มิติที่เหมือนจริงคือการแสดงวัสดุที่พฤติกรรมของแสงมีผลด้วยและเนื่องจากการแรสเตอร์มีรูปแบบของแสงที่ จำกัด มากจึงทำให้วัตถุในฉาก 3 มิติไม่ปรากฏขึ้น ควรจะเป็น.

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

ทุกครั้งที่รังสีกระทบวัตถุในกรณีที่เราทำให้วัตถุนั้นปล่อยผลิตภัณฑ์รังสีทางอ้อมของจุดตัดผ่านเครื่องสร้างรังสีจะออกมาพร้อมกับระดับพลังงานที่เทียบเท่ากับรังสีที่ตกกระทบบนวัตถุก่อนหน้านี้ โดยผลหารการหักเหของวัตถุ

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