ผล�ารค้นหารูปภาพสำหรับ NVIDIA RTX
UFABET PRESENT : NVIDIA RTX

ภายหลังจากรั่วกันแล้วรั่วกันอีก ว่ามันจะชื่อ 1180 บางข่าวสารก็บอก 2080 แล้วพวกเราก็ทายใจๆกันมาพักใหญ่กว่ามันจะมีกี่ CUDA Cores แล้ววันนี้ ทุกคนก็จำต้องประหลาดใจ เพราะมันไม่ใช่ GTX เฉยๆแล้ว มันเป็น "RTX"


ก่อนที่เราจะมี Ray Tracing

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

Pyramid of vision.svg

ต่อจากนั้น ก็คำนวณว่า สีแต่ละสีบน โพลีกอนนั้น ควรจะเป็นสีอะไรบ้าง ขั้นตอนนี้เรียกว่า Shading ตอนต้นสุดพวกเราก็ไม่มี Shading อะไรเลย ออกมาเป็นเส้น เรียกว่า"Wireframe" แล้วหลังจากนั้นก็ปรับปรุงขึ้นมาเป็น Flat Shading และมาเป็น Gouraud Shading และพูดยาวไปอีกเป็นพรืดเลย ถ้าหากติดตามเรื่อง Computer Graphics มานาน ก็จะมีความเห็นว่า ไอเดียเหล่านี้ โดนจับมาใส่ไว้ใน GPU เกือบครบหมดแล้วตัวอย่างเช่น Specular Hilight (1973) คิดภาพช้อนทานข้าวรางๆที่นิดหน่อยมันจะเป็นสีขาวเวลาโดนแสง, Environmental Mapping (1976) เอาเงารอบๆมาติดบนโพลีกอนเลียนแบบการสะท้อนแสง, Shadow Mapping (1978) ก็เงาที่พวกเรายังไง, Bump Mapping (1978) ที่ทำให้วัตถุเสมือนมีรอยตะปุ่มตะป่ำ ที่พึ่งทำเป็น ภายหลังมีระบบระเบียบ Pixel Shader เมื่อตอน DirectX9 แล้วก็ปัจจุบันที่พวกเราได้ใช้ ก็คือAmbient Occlusion (1994) ที่ทำให้ขอบห้องหรือขอบวัตถุมีเงามืดๆที่พึ่งจะมีในเกมเมื่อไม่กี่ปีที่ผ่านมาก่อนหน้านี้ ผมวงเล็บปีเอาไว้ให้ด้วย เพื่อมีความคิดเห็นว่า มันเป็นเวลายาวนานมาก กว่าไอเดียพวกนั้น มันจะเปลี่ยนมาเป็น Real-time ในเกมได้


แม้กระนั้นในที่สุดแล้ว พวกเราก็คงจะมองเห็นอยู่แล้วสินะ ว่าเกมที่พวกเราเล่นกันทุกๆวันนี้ แม้กระทั่งมันมองงามขนาดไหน มันก็ยังมองไม่เหมือนจริงพอๆกับฉากในหนังอยู่ดี เพราะเหตุใดกัน???


ก๊เนื่องจากว่าเคล็ดวิธีทั้งผองที่ผมได้กลาวถึงนั้นน่ะ มันเป็นเพียงแค่การ "คาดคะเน" (Approximate) การปรากฏของแสงสว่างบางสิ่งบางอย่างออกมา เนื่องจากเอาเข้าจริงๆการเรนเดอร์ภาพออกมา ก็คือการพยายามเลียนแบบธรรมชาติของการที่ตาพวกเราเห็นแสงสว่าง ด้วยเหตุว่าแสงสว่างจากต้นกำเนิดแสงสว่าง ตกกระทบวัตถุ แล้วสะท้อนเข้าตาพวกเราอย่างไรละ ตราบเท่าที่พวกเรายังได้เพียงแค่ "คาดคะเน" แต่ว่ามิได้ "เลียนแบบ" (Simulate) การที่แสงสว่างตกกระทบวัตถุจริงๆภาพมันก็ไม่มีวัน "เหมือนจริง"ได้ จริงไหมละ?


โดยเหตุนี้ถ้าหากพวกเราจะให้มันเหมือนจริงได้ขนาดนั้น พวกเราก็ต้องเลียนแบบการปรากฏนั้นให้ได้ รวมทั้งซึ่งก็คือ Ray Tracing อย่างไรละ


Ray Tracing?

การ Ray Tracing นี่พูดได้ว่า มันขั้นท้ายสุดของกราฟฟิกแบบ Real-time สำหรับจอภาพ 2 มิติแล้ว(ละมั๊ง)


หากท่านที่เคยใช้งานโปรแกรมดีไซน์สามมิติ ไม่ว่าจะเป็น Sketchup (Lumion, TheaRender), 3D Max, Maya, Blender เหล่านี้ คงจะเพียงพอรู้ดีว่า งานที่ออกมาจากโปรแกรมเหล่านี้ เมื่อเทียบกับภาพที่ออกมาจาก Game Engine ต่างๆที่คนสร้างเกมหรือพวกเราเองเรียกว่า "สมจริงสมจัง" (Realistic) หรือ "ราวกับรูปถ่าย" (Photo-Realistic) นั้น ยังไกลห่างกันมากมาย


เพราะ การเรนเดอร์ หรือการแปลงข้อมูล 3 มิติ จากโปรแกรมพวกนั้น ออกมาเป็นภาพเพื่อแสดงผลลัพธ์บนจอแบบ 2 มิติ ที่พวกเราใช้กันอยู่เวลานี้ ใช้เคล็ดลับแบบ Ray-tracing ครับผม ซึ่งการทำงานของมัน ก็ตรงตามชื่อเลยหมายถึงการต่อว่าดตาม(Trace) ลำแสง (Ray - จริงๆมันไม่ใช่ ลำแสงซะทีเดียว แม้กระนั้นไม่รู้เรื่องจะมีความหมายว่าอะไรดี เหอๆ) แต่ละเส้นๆว่า เมื่อแสงสว่างตกกระทบกับวัตถุต่างๆแล้วสะท้อนไปโดนวัตถุอื่นๆนั้น มันนำมาซึ่งสีอะไรออกมา รวมทั้งสิ่งที่จำเป็นที่สุดเป็น มันทำให้ลำแสงเส้นนั้น มีสีต่างออกไปอย่างไรบ้าง แต่จะดำเนินงานสลับด้านกับที่พวกเราคิดอยู่นิดหนึ่ง เป็นการต่อว่าดตาม มิได้มีเหตุมาจากแสงสว่างต้นทาง แต่เป็นการติดตามจาก"ตา" หรือ "กล้องถ่ายภาพ" ที่ใช้ดูข้อมูล 3 มิตินั้นออกมา เรียกว่า "eye-based ray-tracing" (แน่ๆว่าก็มีผู้เสนอการเรนเดอร์อีกแบบนึง ที่มองจากแสงสว่างต้นทางหมายถึง"Light-based" ด้วยเหมือนกัน แม้กระนั้นอ่านไปอีกนิด จะเข้าจิตใจว่า เพราะอะไรพวกเราไม่ทำอย่างงั้น)


Ray trace diagram.svg


ฟังมองเป็นแถวคิดที่ช่างไกลห่างมากมาย คุณพระ~ การตำหนิดตามแสงสว่างครั้งละเส้นๆมันจะเป็นได้เช่นไร! เชื่อไหมว่า แนวความคิดรูปแบบนี้ มีผู้เสนอขึ้นมาเป็นครั้งแรกตั้งแต่ปี 1968 เป็นคุณ Arthur Appel (โชคร้ายที่ Wikipedia ไม่มีข้อมูลของนักค้นคว้าท่านนี้) โดยเรียกเคล็ดลับนี้ว่า "Ray Casting" รวมทั้งที่สำคัญมันก็เคยถูกใช้ในเกมคลาสสิกมากมายๆหลายเกม ซึ่งก็ไม่ใช่ใครกันแน่ไหน นาย John Carmack ผู้ครอบครองบริษัท id Software ที่ทำให้พวกเรามีเกม First Person Shooter (FPS) เล่นกันปัจจุบันนี้เนี่ยล่ะ ที่เป็นคนเอามาใช้คนแรก หรือไม่ก็คนแรกๆเลยละ




คุณปู่ของ Ray Tracing : Ray Casting

แนวทางของคุณ Arthur Appel ก็คือ ให้แบ่งภาพผลสรุป ออกเป็นช่องๆ(Pixel) แล้วติดตามว่า ในแต่ละช่อง เมื่อยิงลำแสง (Ray) ออกไป มันไปชนกับวัตถุไหนบ้าง ถ้าเกิดมันชน ก็หมายความว่า ผู้ดูจำต้องแลเห็นผิวนั้น ส่วนสีของวัตถุนั้นจะเป็นสีอะไร(Shading) ทางคุณ Appel เขามิได้กำหนดไว้นะ


แบบอย่างเกมที่ใช้เคล็ดลับนี้ ก็คือเกม Hovertank 3D ที่คุณ John Carmack ใช้เวลา6 อาทิตย์สร้างเอนจิ้นของเกมนี้ขึ้นมา จากภาพ Gif (ที่ผม Hotlink จาก Wikipediaมา แม้กระนั้นหาบทความที่ก็อบมาไม่พบแล้ว จะต้องขอประทานโทษจริงๆ) คงจะพอเพียงทำให้เห็นภาพว่า จากจุดสีแดงซึ่งแทนเพศผู้เล่น พอเพียงยิงลำแสงออกไป ตัวเกมจะสามารถรู้ได้ว่า บล็อคฝาผนังอันไหนบนแผนที่ของเกมบ้างที่ผู้เล่นนั้นแลเห็นแล้วต่อจากนั้นก็เอาข้อมูลนี้ มาคิดต่ออีกครั้งว่า จะแสดงผลลัพธ์บล็อค (Surface) นั้นยังไง แทนที่จะจำต้องประมวลผลข้อมูลของฉาก มันฟังมองค่อนจะเป็นแถวคิดกล้วยๆเพราะว่าพวกเรามองดูจากในช่วงเวลานี้ ถ้าเกิดพวกเรามีความคิดว่า เป็นยุคเมื่อ 30ปีกลาย ที่พวกเรายังไม่มีแม่้แต่ว่าเกมสามมิติ มันเป็นแถวคิดที่ใหม่ว๊าวมากมายเลยนะ



แล้วของจริงก็มา Recursive Ray Tracing

อีกโดยประมาณเกือบจะ 10 ปีถัดมา ในปี 1979 คุณ Turner Whitted เป็นคนเสนอแนวความคิด Ray Tracing แบบที่พวกเราใช้กันอยู่ปัจจุบันนี้นี่แหละ ก็คือจาก Ray Casting เดิม ที่พวกเรายิงแสงสว่างไปโดนผิวแล้วจบ คุณ Whitted กล่าวว่า พวกเราต้องตามแสงสว่างมันถัดไปเรื่อยด้วยนะ ซึ่งคุณ Whitted เสนอว่า เมื่อแสงสว่างตกกระทบกับวัตถุแล้ว จะกำเนิดลำแสงแบบใหม่ขึ้นมาอีก 3 อย่างเป็น


- Reflection : เงาสะท้อน ถ้าเกิดเป็นลำแสงแบบงี้ พวกเราก็ตามไปดูว่า ufabet มันจะสะท้อนอะไรออกมาบนผิวแรกที่พวกเราพบ

- Refraction : แสงสว่างหักเห ถ้าหากเป็นลำแสงอย่างงี้ มันสามารถทะลุผ่านวัตถุได้ก็ตามไปดูว่ามันทะลุผ่านวัตถุอะไรบ้าง แล้วเอาสีรวมๆกันมา

- Shadow : เงา ถ้าเกิดเป็นลำแสงแบบงี้เป็นต้องตามโดยมองเทียบกับบ่อเกิดแสงสว่างถ้าหากว่ามีอะไรมาขวาง มีความหมายว่าจุดนั้นเป็นเงา


ชี้แจงด้วยภาพ ก็โดยประมาณนี้ แต่ว่าผมไม่รู้เรื่องสมการพวกนั้นหรอกนะ เหอะๆ

Ray Tracing Illustration First Bounce.png


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



สำหรับปัญหาที่ทิ้งเอาไว้ ก็คือ แล้วเพราะเหตุไรไม่ตามแสงสว่างจากต้นทางมา? โน่นก็เพราะ มันมี Shadow, Refraction, Reflection นี่เองยังไง ก็คือแสงสว่างจำนวนมากที่มันส่งออกมาจากแหล่งเกิดแสงสว่าง นิดหน่อยมันบางทีอาจจะมาไม่ถึงตาพวกเราเลยก็ได้ พวกเรามัวไปตามมันก็เสียการประเมินผลไปเปล่าๆ


แต่ว่าถึงพวกเราจะพากเพียรลดปริมาณแสงสว่างที่ต้องตามแล้ว ไม่ต้องบอกก็คงจะทราบดีว่า การที่จะมานั่งตามแสงสว่างไปที่ละเส้นๆอย่างงี้ ถึงแม้ว่าจะเอาเฉพาะแสงสว่างที่แลเห็นก็เหอะ มันใช้เวลานานมากมาย พวกเราก็เลยไม่เคยมองเห็นมันถูกใช้ในเกมมาก่อนเลย กล้วยๆก็ โปรแกรม Cinebench ที่พวกเราถูกใจใช้ทดลองกัน เพียงแค่จะเรนเดอร์ขึ้นมา 1 ภาพ แม้กระทั่งเป็น CPU แรงมากมาย ก็ยังคงใช้เวลามากยิ่งกว่า 30 วินาที หรือการเรนเดอร์ด้วยโปรแกรมทดลองของ TheaRender ซึ่งขนาด ใช้ทั้งยัง CPU/GPU ช่วยเหลือกันแล้ว ก็ยังคงใช้เวลาแทบ 5 นาที สำหรับเพื่อการเรนเดอร์ภาพเพียงแต่ 4 ภาพ!



อ้าว? แล้วเราเอามาทำให้มันอยู่ในเกมได้ยังไง?

เรื่องตลกก็คือ คุณ Jen-Hsun Huang (Jensen) บอกว่าใช้เวลา 10 ปี ในการพัฒนา จนกระทั่งทำให้เรามี Real-time Ray Tracing ในเกมได้ แม้กระนั้นตั้งใจจริงๆวีดีโอที่แสดงการใช้ Ray Tracing มีมาก่อนแล้วเมื่อ 10 ปีก่อนพอดี (10 ปี กับอีก 3 วัน) เป็นการเรียนของ Intel สำหรับเพื่อการเอา Ray Tracing มาใช้ในเกม Quake Wars ขอรับ แม้กระนั้นถ้าหากที่ผมเข้าใจก็คือ เป็นการใช้ Ray Tracing ทั้งภาพที่เรามองเห็นเลยนะหรือพูดง่ายๆว่า Quake Wars มันเป็น Ray-Tracing Renderer จริง


แม้กระนั้นสำหรับ RTX นั้น ไม่ใช่กระบวนการทำ Ray Tracing ทั้งยังภาพ แม้กระนั้นเป็นระบบ Hybrid ก็คือ การเอาจุดเด่นของ Rasterization แบบเดิม ซึ่งพวกเราใช้งานกันเป็น ถูกจูนมาอย่างยอดเยี่ยม เอนจิ้นมีมากมาย ufabet แล้วก็เร็วอยู่แล้ว มารวมกับ Ray Tracing ก็คือเอฟเฟคบางสิ่ง ที่ไม่สามารถที่จะทำได้ด้วยแนวทาง Rasterization ก็เอาความรู้ความเข้าใจของ Ray Tracing มาทำเป็น เรียกมันว่า Ray Traced Effects (*ภาพทั้งผองจากส่วนนี้ Screen Cap มาจาก VDO)




เรื่อง Ray-Traced Effects นี่ จริงๆ Nvidia ได้ออกมาแพลมๆ ตั้งแต่ 5 เดือนมาแล้ว ซึ่งเดโมที่ฮือฮามาที่สุด ก็เป็นคงอันนี้แหละ รันบน Unreal Engine สังเกตเงาบนเกราะของ Phasma ให้ดีเชียว มันทำแบบนี้ไม่ได้นะ ถ้าไม่ใช้ Ray Tracing


Turing ก็มา ใน GTX20


แล้วคุณ Jensen ก็ปลดปล่อยระเบิดมาเมื่อคืน ด้วย NVIDIA GeForce RTX ~! ซึ่งใช้สถาปัตยกรรม Turing อ่าวเฮ้ย พวกเราสามารถแลเห็น Ray Tracing ในการ์ดจอบ้านๆได้แล้ว และก็ที่โหดเหี้ยมกว่าเป็น Turing 1 ตัว (ไม่รู้ตัวไหน) เร็วกว่า Volta 4 ตัวถึง 20%!แล้วผู้ที่ซื้อ DGX ไป 5 เดือนที่แล้วจะทำอย่างไรเนี่ย แล้วก็ถ้าเกิดเทียบกับ Pascal ตัวTuring ดำเนินการ RTX ได้ดียิ่งไปกว่า เกือบจะ 7 เท่า!!



ในงานก็มีเดโมจากเกมจริงให้ดูด้วย แล้วหลังจากนั้นก็เสมือนคิดเดโมเขาก็คิดมาแล้วว่าต้องแสดง 3 ข้าวของ Ray Tracing ให้พวกเรามอง มากันครบ อย่างละเกมพอดิบพอดี


- Shadow of Tomb Raider แสดงการใช้เงาแบบ Ray Traced Shadow ซึ่งตอนนี้พวกเราก็เลียนแบบเงาบนพื้นได้เยอะพอสมควรแล้ว และก็มันก็งามมากมายแล้วนะ แต่พอประมาณ Ray Tracing จะมีความเห็นว่าแสงสีเขียวกะสีส้ม สามารถผสมสีกันได้ด้วย ส่วนเงา ที่พวกเราคุ้นชินกันการเห็นตัวคนติดลงบนพื้นแบบเอียงๆก็เป็นเงาที่มองสมจริงสมจังมากมายเป็นเงาตรงปลายตีนจะเป็นตัวเป็นตน ufabet มากยิ่งกว่าเงาของตอนบนตัวคน