ตลอดเวลาที่ผ่านมา โลกของเกมคอมพิวเตอร์ มักจะมีเทคโนโลยีใหม่ที่เข้ามาช่วยยกระดับภาพกราฟิกให้สมจริงเกิดขึ้นในทุกสองถึงสามปี ถ้ามองย้อนกลับไปในช่วงสิบกว่าปีที่ผ่านมา เราได้เห็นเทคโนโลยี Shaders, Tessellation, Shadow Mapping, Ray Tracing และในตอนนี้ก็ได้มีเทคโนโลยีใหม่ที่เริ่มนำมาใช้เพิ่มอีกตัวหนึ่งแล้ว นั่นก็คือ "Path Tracing"
Path Tracing เป็นเทคโนโลยีที่ช่วยในการจำลองแสงภายในเกมให้มีความสมจริงเหมือนกับ Ray Tracing แต่มีเทคนิคการทำงานที่ไม่เหมือนกัน ? มันต่างจากเดิมอย่างไร ? มาหาคำตอบกันครับ
ก่อนที่เราจะเข้าสู่เรื่อง Path Tracing คิดว่าควรมาเข้าใจเทคนิคที่นิยมใช้ในการจำลองแสงของกราฟิกคอมพิวเตอร์กันเสียก่อนสักเล็กน้อย โดยมันจะมีอยู่ 3 เทคนิค คือ Rasterization, Ray Tracing ที่เราเคยอธิบายไปแล้ว และ Path Tracing ที่เราจะมาเล่าให้ฟังในบทความนี้
Rasterization เป็นเทคนิคดั้งเดิมที่ได้รับความนิยมมาอย่างยาวนาน หลักการทำงานของมันคือใช้หลักคณิตศาสตร์ไปคำนวณค่าที่ได้จากรูปทรงแบบเวกเตอร์ (Vector) เพื่อนำมาแปลงเป็นค่าพิกเซลที่จะแสดงผลบนหน้าจอมอนิเตอร์ ซึ่งเมื่อใช้งานร่วมกับเทคนิคอื่น ๆ ก็ทำให้ได้ผลลัพธ์เป็นกราฟิกแสงที่ดูสมจริง อย่างไรก็ตาม เทคนิคนี้เป็นการจำลองแสงแบบคงที่ เพราะมันต้องคำนวณค่าจาก "แหล่งกำเนิดแสง" ที่ถูกเตรียมไว้ล่วงหน้า
อันที่จริง การทำงานของ Rasterization มันก็ทำงานได้ดีในแบบของมัน แต่เพราะความต้องการที่จะจำลองกราฟิกให้สมจริงยิ่งขึ้น ทำให้มันไม่เพียงพอเสียแล้ว สังเกตได้จากเกมสมัยนี้นิยมใส่โหมดถ่ายรูปมาให้เลยด้วยซ้ำ เพื่อใช้แสดงศักยภาพความสวยงามของกราฟิกที่ผู้ผลิตเกมทุ่มเทพัฒนามันขึ้นมา ระบบแสงที่ถูกเตรียมไว้ล่วงหน้าจึงไม่ตอบโจทย์ในจุดนี้ ซึ่งทาง NVIDIA ก็ได้เสนอทางเลือกใหม่ด้วยการเปิดตัวการ์ดจอซีรีย์ RTX ที่รองรับเทคโนโลยี Ray Tracing ออกมาวางจำหน่าย
การทำงานของ Ray Tracing เป็นการจำลองแสงที่เกิดขึ้นทีละเฟรมภาพแบบเรียลไทม์ ทำให้มันสามารถสร้างแสงสะท้อนจากแหล่งกำเนิดแสง ที่ตกกระทบไปยังวัตถุต่าง ๆ ภายในฉากได้แบบเรียลไทม์ ซึ่งเทคนิค Rasterization ไม่สามารถทำได้
ภาพจาก : https://www.pixelsham.com/2019/10/24/whats-the-difference-between-ray-tracing-and-rasterization/
อันที่จริง การทำ Ray Tracing ไม่ใช่เรื่องใหม่ มีใช้งานมานานแล้ว มันถูกพัฒนาขึ้นมาตั้งแต่ปี ค.ศ. 1969 (พ.ศ. 2512) แต่เนื่องจากการจะคำนวณหาค่าแสงแบบเรียลไทม์นั้น มีข้อมูลขนาดใหญ่มหึมาที่ต้องคำนวณ ทำให้ที่ผ่านมาใช้งานกันแค่ในระดับอุตสาหกรรมเท่านั้น แค่ฉากเพียงไม่กี่วินาที อาจต้องใช้เวลาทั้งอาทิตย์ในการเรนเดอร์ แต่ปัจจุบันนี้ NVIDIA ได้อาศัยเทคนิค และเทคโนโลยีหลายอย่างจนทำให้การ์ดจอระดับผู้ใช้งานตามบ้านก็สามารถใช้งาน Ray Tracing ในเกมได้แบบเรียลไทม์แล้ว
อย่างไรก็ตาม เทคนิค Ray tracing ที่ใช้ภายในเกมคอมพิวเตอร์ก็ไม่ใช่ว่าจะคำนวณค่าแสงทั้งหมดที่เกิดขึ้น เพราะมันเกินกำลังการประมวลผลของการ์ดจอไปมาก ส่วนใหญ่ก็จะคำนวณทิศทางจากแหล่งกำเนิดแสงแค่เพียงหนึ่ง ถึงสององค์ประกอบเท่านั้น ไม่ได้คำนวณทั้งฉาก แต่เมื่อใช้ทำงานร่วมกับระบบ Rasterization ผลลัพธ์สุดท้ายก็ออกมาน่าทึ่งพอสมควร
วิดีโอจาก : https://youtu.be/ZXhU9nLMRVM?si=-jppLAB40owyeLk9
และเทคโนโลยีจำลองแสงล่าสุดที่ถูกนำมาใช้ในการเรนเดอร์ภายในเกมก็คือ Path Tracing
Path Tracing เป็นเทคนิคการจำลองแสงที่ต่อยอดพัฒนามาจากการปรับปรุงเทคนิค Ray Tracing เป็นแนวคิดที่ถูกริเริ่มมาตั้งแต่ ปี ค.ศ. 1986 (พ.ศ. 2529) มันไม่ใช้เทคโนโลยีใหม่ ช่วงยุค 2000 สตูดิโอภาพยนตร์อย่าง Disney และ Sony ก็ใช้มันมานานแล้ว
การทำงานของ Path Tracing จะต่างจาก Ray Tracing โดยแทนที่จะติดตามเส้นทางการเดินของแสงทุกเส้น ไม่ว่าจะเป็นแสงเส้นหลัก หรือแสงสะท้อนก็ตาม การทำงานของ Path Tracing จะคำนวณเฉพาะเส้นแสงที่น่าจะเกิดขึ้นได้มากที่สุดในฉากเพียงอย่างเดียวแทน ซึ่งมันช่วยลดทรัพยากรในการประมวลผลไปได้เยอะมาก
การทำงานของ Path Tracing จะอาศัยสมการทางคณิตศาสตร์ที่มีความซับซ้อนกว่า Ray Tracing หลายเท่า แต่เนื่องจากมันไม่ต้องประมวลผลข้อมูลแสงเยอะเท่า Ray Tracing ทำให้ท้ายที่สุดแล้ว มันใช้ทรัพยากรในการเรนเดอร์กราฟิกได้ประสิทธิภาพสูงขึ้น
ในกรณีที่เป็น Ray Tracing มันจะคำนวณแสงจากทุกทิศทางที่ตกกระทบลงบนพื้นผิว เวลาคำนวณมันจะนำแสงจากทุกทิศทางมาประมวลหาผลลัพธ์ ตัวอย่างเช่น ถ้ามีแสงส่องตกกระทบวัตถุ และมีการสะท้อนเกิดขึ้น 5 ครั้ง จะมีการคำนวณแสงสะท้อนที่เกิดขึ้นหลายทิศทาง สมมติว่ามีแสงสะท้อนเกิดขึ้น 20 เส้น การคำนวณก็จะเป็น 205 หรือ 320,0000 ครั้ง ซึ่งเอาจริง ๆ แค่นี้มันก็ยังไม่ได้ผลลัพธ์ที่แม่นยำมากพอ ส่วนใหญ่จะมีการคำนวณค่าแสงหลักเข้ามาทำงานร่วมด้วย ส่งผลให้การจำลองแสงด้วย Ray Tracing มีต้นทุนทรัพยากรในการทำงานสูงมาก
ภาพจาก : https://ilchoi.weebly.com/monte-carlo-path-tracing.html
แต่เมื่อเป็น Path Tracing จะคำนวณจากค่าแสงเพียงเส้นเดียวเสมอ แต่จะมีการนำค่าแสงเดิมมาใช้ซ้ำโดยเปลี่ยนค่าทิศทางตามหลักการกระจายแสง Bidirectional reflectance distribution function (BRDF) ซึ่งเป็นฟังก์ชันความน่าจะเป็นของทิศทางที่สะท้อนของลำแสง ดังนั้น การส่องสว่างของพื้นผิวจะเท่ากับผลรวมความส่องสว่างของแต่ละเส้นทาง เมื่อรวมกับการทำงานของ AI ทำให้สุดท้ายภาพรวมของแสงที่แสดงผลได้ก็มีความสวยงามสมจริง
ซึ่งเมื่อ Path Tracing เป็นการคำนวณค่าจากแสงเพียงแหล่งเดียว แม้จะต้องใช้สมการคณิตศาสตร์ที่ซับซ้อนกว่า แต่สุดท้ายการทำงานของมันก็ใช้ทรัพยากรในการทำงานต่ำกว่า Ray Tracing นั่นหมายความว่าจะมีปริมาณความร้อนเกิดขึ้นที่ตัวการ์ดจอน้อยกว่ามาก ในปัจจุบันนี้มีหลายเกมที่แม้จะเปิดตัวมานานแล้ว แต่ผู้พัฒนาก็อัปเดตให้มันรองรับ Path Tracing ได้ ซึ่งไม่ใช่เรื่องที่พบเห็นได้บ่อยนัก
ภาพจาก : https://ilchoi.weebly.com/monte-carlo-path-tracing.html
ถึงแม้ว่า Patch Tracing จะดูดีมาก แต่มันก็มีข้อจำกัดของมันอยู่ เพราะหากเอาเรื่องการจำลองที่สมจริงแม่นยำที่สุด มันก็เป็นรอง Ray Tracing อยู่ในระดับหนึ่ง ซึ่งในกรณีที่เกมดังกล่าวไม่ได้มีแหล่งกำเนิดแสงภายในฉากมากมาย เช่น อยู่ในถ้ำมืด ๆ มีแหล่งกำเนิดแสงไม่กี่จุด หรือแสงเงาสะท้อนที่เกิดขึ้นบนผิวน้ำ และใบไม้ การใช้ Ray Tracing ก็จะให้ผลลัพธ์ออกมาดีกว่า นั่นเป็นเหตุผลว่าทำไมในเกมถึงยังมีตัวเลือกให้ใช้ Ray Tracing อยู่ แม้จะรองรับ Path Tracing แล้วก็ตาม
ในการทำงานของผู้พัฒนา ตามปกติก็จะใช้มีการใช้หลาย ๆ เทคนิคร่วมกันอยู่แล้ว เพื่อให้ได้ภาพที่สมจริงที่สุดในทุกสถานการณ์ จึงมักจะใช้ทั้ง Rasterization, Ray-Tracing และ Path Tracing ทำงานร่วมกันอยู่แล้ว
ทางด้านตัวผู้ใช้งานเอง การเลือกใช้งาน (ในกรณีที่เกมมีตัวเลือกให้ปรับได้) ก็ต้องพิจารณาจากการ์ดจอที่มีอยู่ด้วย ว่ามีประสิทธิภาพสูงขนาดไหน ? แล้วเลือกปรับตามการใช้งานให้เหมาะสม
อย่างไรก็ตาม ในปัจจุบัน และอนาคตอันใกล้นี้ Path Tracing ดูจะมีภาษีดีกว่าเพื่อน เพราะใช้ทรัพยากรในการทำงานต่ำกว่า Ray-Tracing ทำให้ผู้ใช้การ์ดจอระดับกลาง ๆ ซึ่งน่าจะเป็นกลุ่มที่มีจำนวนเยอะที่สุด ก็สามารถเข้าถึงได้
|
แอดมินสายเปื่อย ชอบลองอะไรใหม่ไปเรื่อยๆ รักแมว และเสียงเพลงเป็นพิเศษ |