กลับไปหน้าบทความ

อ่าน 39 นาที

การเรนเดอร์ (กราฟิกคอมพิวเตอร์)

การเรนเดอร์คือกระบวนการสร้างภาพจากข้อมูลอินพุต เช่นโมเดล 3 มิติคำว่า "เรนเดอร์" (ในความหมายหนึ่ง) เดิมหมายถึงงานที่ศิลปินทำเมื่อวาดภาพสิ่งที่เป็นจริงหรือจินตนาการ...

การเรนเดอร์ (กราฟิกคอมพิวเตอร์)

ภาพที่สร้างขึ้นโดยใช้POV-Ray 3.6
ภาพจำลองทางสถาปัตยกรรมที่สร้างขึ้นในหลากหลายสไตล์โดยใช้Blender

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

ใน บริบทของ กราฟิกคอมพิวเตอร์ในการใช้งานมาตรฐาน คำว่า "การเรนเดอร์" โดยตัวมันเองหมายถึงการเรนเดอร์ฉาก 3 มิติ[ a ]แต่บางครั้งก็ใช้ในความหมายที่กว้างกว่านั้น มีการใช้คำขยาย เช่น "2D" หรือ "3D" เมื่อมีความกำกวมที่อาจเกิดขึ้นได้ (เช่น การเรนเดอร์ 3 มิติ ) [ 6 ] [ 7 ] : 2.1,38.1 [ 8 ] : คำนำ

แอปพลิเคชันซอฟต์แวร์หรือส่วนประกอบที่ทำการเรนเดอร์เรียกว่าเอนจินเรนเดอร์ [ 9 ]เอนจินเรนเดอร์ระบบเรนเดอร์เอนจินกราฟิกหรือเรียกง่ายๆ ว่าเรนเดอร์

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

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

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

อัลกอริทึมการสร้างภาพแรสเตอร์ยังใช้ในการสร้างภาพที่มีเฉพาะรูปทรง 2 มิติ เช่นรูปหลายเหลี่ยมและข้อความการเรนเดอร์ประเภทนี้บางครั้งเรียกว่าการเรนเดอร์ 2 มิติ[ 7 ] : 3.6 และแอปพลิเคชันต่างๆ ได้แก่ภาพประกอบดิจิทัลการออกแบบกราฟิกแอนิเมชั่น 2 มิติการจัดพิมพ์บนเดสก์ท็อปและการแสดงผลอินเทอร์เฟซผู้ใช้

ในอดีต การเรนเดอร์เรียกว่าการสังเคราะห์ภาพ[ 10 ] : xxi แต่ในปัจจุบัน คำนี้มีแนวโน้มที่จะหมายถึงการสร้างภาพด้วย AI [ 11 ]บางครั้งมีการใช้คำว่า "การเรนเดอร์ด้วยโครงข่ายประสาท" เมื่อโครงข่ายประสาท เป็นวิธีการหลักในการสร้างภาพ แต่มีการควบคุมภาพที่ ได้ออกมาในระดับหนึ่ง[ 12 ]โครงข่ายประสาทยังสามารถช่วยในการเรนเดอร์ได้โดยไม่ต้องแทนที่อัลกอริธึมแบบดั้งเดิม เช่น การกำจัดสัญญาณรบกวนจากภาพที่ติดตามเส้นทาง

หมายเหตุ
  1. ^ "การเรนเดอร์คือกระบวนการสร้างภาพจากคำอธิบายของฉาก 3 มิติ" Pharr et al., Physically Based Rendering, The MIT Press, 2023, บทนำ [ 5 ]

คุณสมบัติ

การเรนเดอร์ภาพเสมือนจริง

งานวิจัยด้าน กราฟิกคอมพิวเตอร์ส่วนใหญ่มุ่งเน้นไปที่การสร้างภาพที่คล้ายกับภาพถ่าย เทคนิคพื้นฐานที่ทำให้สิ่งนี้เป็นไปได้ถูกคิดค้นขึ้นในช่วงทศวรรษ 1980 แต่ในช่วงปลายทศวรรษนั้น การสร้างภาพที่เหมือนจริงสำหรับฉากที่ซับซ้อนยังคงถือเป็นเป้าหมายที่ห่างไกล[ 13 ] : x ปัจจุบัน การสร้างภาพที่เหมือนจริงสามารถทำได้เป็นประจำสำหรับการเรนเดอร์แบบออฟไลน์ แต่ยังคงเป็นเรื่องยากสำหรับการเรนเดอร์แบบเรียลไทม์ [ 14 ] : 1–2

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

ผลกระทบที่อาจต้องจำลอง ได้แก่:

  • เงาต่างๆรวมถึงเงาที่มีขอบคมชัดและเงาอ่อนที่มีทั้งเงามืดและเงามัว
  • ภาพสะท้อนในกระจกและพื้นผิวเรียบ รวมถึงพื้นผิวสะท้อนแสงที่ขรุขระหรือเป็นคลื่น
  • การหักเห  ของแสง คือการที่แสงเบี่ยงเบนไปเมื่อผ่านขอบเขตระหว่างวัสดุโปร่งใสสองชนิด เช่น อากาศและกระจก ปริมาณการเบี่ยงเบนจะแตกต่างกันไปตามความยาวคลื่นของแสง ซึ่งอาจทำให้เกิดแถบสีหรือ "รุ้ง" ปรากฏขึ้น
  • ผลกระทบเชิงปริมาตร – การดูดซับและการกระเจิงเมื่อแสงเดินทางผ่านสารที่โปร่งแสงบางส่วนหรือโปร่งแสง (เรียกว่าสื่อที่มีส่วนร่วมเนื่องจากปรับเปลี่ยนแสงแทนที่จะปล่อยให้รังสีผ่านไปเฉยๆ) [ 17 ] : 140 [ 15 ]
  • Caustics  – จุดสว่าง บางครั้งมีเส้นใยที่ชัดเจนและมีลักษณะพับหรือบิดเบี้ยว เกิดขึ้นเมื่อแสงสะท้อนหรือหักเหก่อนที่จะส่องสว่างวัตถุ[ 17 ] : 109

ในฉากที่สมจริง วัตถุต่างๆ จะได้รับแสงทั้งจากแสงที่มาจากแหล่งกำเนิดแสงโดยตรง (หลังจากผ่านอากาศโดยส่วนใหญ่ไม่มีสิ่งกีดขวาง) และแสงที่สะท้อนจากวัตถุอื่นๆ ในฉาก การจำลองแสงที่ซับซ้อนนี้เรียกว่า การให้แสงแบบทั่วโลก (global illumination ) ในอดีต มักมีการจำลองแสงทางอ้อม (โดยเฉพาะอย่างยิ่งเมื่อเรนเดอร์ภาพยนตร์แอนิเมชั่น ) โดยการวางไฟที่ซ่อนอยู่เพิ่มเติมในฉาก แต่ปัจจุบันมีการใช้path tracing เพื่อเรนเดอร์แสงทางอ้อมได้อย่างแม่นยำ [ 18 ] : 3 [ 17 ] : 108

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

การเรนเดอร์ที่สมจริงใช้คำอธิบายทางคณิตศาสตร์ของวิธีที่วัสดุพื้นผิวต่าง ๆ สะท้อนแสง ซึ่งเรียกว่าแบบจำลองการสะท้อน แสง หรือ (เมื่อเป็นไปได้ทางกายภาพ) ฟังก์ชันการกระจายการสะท้อนแสงแบบสองทิศทาง (BRDF) [ 15 ] การเรนเดอร์วัสดุ เช่นหินอ่อนใบไม้ และผิวหนังมนุษย์ จำเป็นต้องจำลองเอฟเฟกต์ที่เรียกว่าการกระเจิงใต้พื้นผิวซึ่งส่วนหนึ่งของแสงเดินทางเข้าไปในวัสดุ กระเจิง แล้วเดินทางกลับออกมาอีกครั้ง[ 17 ] : 143 วิธีที่สีและคุณสมบัติ เช่นความหยาบเปลี่ยนแปลงไปตามพื้นผิว สามารถแสดงได้อย่างมีประสิทธิภาพโดยใช้ การแม ปพื้นผิว[ 8 ] : 6.1

รูปแบบอื่นๆ ของการเรนเดอร์ภาพ 3 มิติ

สำหรับแอปพลิเคชันบางอย่าง (รวมถึงขั้นตอนเริ่มต้นของการสร้างแบบจำลอง 3 มิติ ) รูปแบบการเรนเดอร์ที่เรียบง่าย เช่นการเรนเดอร์แบบโครงร่างเส้นลวดอาจเหมาะสม โดยเฉพาะอย่างยิ่งเมื่อยังไม่ได้กำหนดรายละเอียดของวัสดุและพื้นผิว และทราบเพียงรูปร่างของวัตถุเท่านั้น[ 20 ] : 5.3 เกมและแอปพลิเคชันแบบเรียลไทม์อื่นๆ อาจใช้เทคนิคการเรนเดอร์ที่เรียบง่ายและไม่สมจริงมากนัก เพื่อเป็นการเลือกทางศิลปะหรือการออกแบบ หรือเพื่อให้ได้อัตราเฟรม ที่สูงขึ้น บนฮาร์ดแวร์ระดับล่าง

การฉายภาพ แบบออร์โธกราฟิกและไอโซเมตริกสามารถใช้เพื่อสร้างเอฟเฟกต์แบบมีสไตล์หรือเพื่อให้แน่ใจว่าเส้นขนานจะแสดงเป็นเส้นขนานในการเรนเดอร์CAD [ 8 ] : 4.7 [ 20 ] : 3.7

การเรนเดอร์แบบไม่เหมือนจริง (NPR)ใช้เทคนิคต่างๆ เช่นการตรวจจับขอบและการลดจำนวนพิกเซลเพื่อสร้างภาพสามมิติที่คล้ายกับภาพประกอบทางเทคนิค การ์ตูน หรือภาพวาดหรือภาพระบายสีในรูปแบบอื่นๆ[ 8 ] : บทที่ 15

การเรนเดอร์ 2 มิติ

ในกราฟิกคอมพิวเตอร์ 2 มิติตำแหน่งและขนาดของรูปร่างจะถูกระบุโดยใช้พิกัด 2 มิติ (x และ y) แทนที่จะเป็นพิกัด 3 มิติ (x, y และ z) API การเรนเดอร์ 2 มิติ มักใช้ระบบพิกัดที่ไม่ขึ้นกับความละเอียด โดย วิวพอร์ตจะกำหนดวิธีการแปลงพิกัดเป็นดัชนีพิกเซล ที่เรียกว่า พิกัดอุปกรณ์[ 21 ] : 46 การแปลงต่างๆเช่นการปรับขนาดการเลื่อนและการหมุนอาจถูกนำมาใช้ก่อนการเรนเดอร์รูปร่างการแปลงเชิงเส้น เหล่านี้ มักแสดงด้วยเมทริกซ์ 3 × 3ทำให้การประกอบการแปลงทำได้ ง่ายขึ้น [ 21 ] : 245–255

เอ็นจิ้นการเรนเดอร์ 2 มิติคุณภาพสูง เช่น เรนเดอร์ SVGมักใช้การลดรอยหยัก (anti-aliasing)เพื่อลด ลักษณะเป็นรอย หยักของเส้นและขอบรูปทรงที่ถูก แรสเตอร์ [ 22 ] : 2.5.6 เมื่อเรนเดอร์รูปทรงที่ซ้อนทับกัน เรนเดอร์มักใช้ " โมเดลของจิตรกร" (painter's model ) ซึ่งรูปทรงจะถูกวาดตามลำดับที่กำหนด หรือส่วนประกอบของรูปทรงเหล่านั้นในแต่ละพิกเซลจะถูกรวมเข้าด้วยกันโดยใช้การดำเนินการผสม (blending operations)ซึ่งอาจขึ้นอยู่กับลำดับของอินพุต[ 22 ] : 3.3 เรนเดอร์อาจอนุญาตให้กำหนด " ดัชนี z " หรือ "ลำดับการซ้อน" ให้กับรูปทรงเพื่อระบุลำดับการเรนเดอร์หรือการผสม (ซึ่งแตกต่างจากพิกัด z ที่ใช้ในการเรนเดอร์ 3 มิติ พิกัดที่สามนี้ระบุเฉพาะลำดับไม่ใช่ระยะทาง และไม่สามารถหมุนร่วมกับพิกัด x และ y ได้อย่างมีความหมาย) [ 22 ] : 3.4

โดยทั่วไปการเรนเดอร์ 2 มิติจะไม่จำลองการแพร่กระจายของแสง (ซึ่งอาจต้องระบุตำแหน่ง 3 มิติหรือความหนาสำหรับรูปร่าง) เอฟเฟกต์ต่างๆ เช่นเงาตกกระทบและความโปร่งใสถูกกำหนดโดยฟังก์ชันทางคณิตศาสตร์ที่ไม่มีพื้นฐานทางกายภาพ[ 23 ] : 9.12 [ 24 ] : 5

การเรนเดอร์ 2 มิติสำหรับการพิมพ์อาจต้องรองรับความละเอียดสูงมาก เช่น 600 หรือ 1200 DPIสำหรับเครื่องพิมพ์เลเซอร์ ทั่วไป หรือ 2400 DPI หรือสูงกว่าสำหรับเครื่องพิมพ์ภาพหรือเครื่องพิมพ์เพลทภาพขาวดำและภาพสีต้องใช้ฮาล์ฟโทน (หรือ การกระจายสีหรือการคัดกรองแบบสุ่มบางรูปแบบ) และการแยกสี เอ็น จิ้นการเรนเดอร์ที่เรียกว่าตัวประมวลผลภาพแรสเตอร์ (RIP) จะแปลงข้อมูลอินพุต เช่น ไฟล์ PDFให้เป็นภาพบิตแมปความละเอียดสูงที่ใช้โดยเครื่องพิมพ์[ 25 ] : บทที่ 1–2

ข้อมูลนำเข้า

ก่อนที่จะเรนเดอร์ฉาก 3 มิติหรือภาพ 2 มิติ จะต้องอธิบายในลักษณะที่ซอฟต์แวร์เรนเดอร์สามารถเข้าใจได้ ในอดีต อินพุตสำหรับการเรนเดอร์ทั้ง 2 มิติและ 3 มิติ มักจะเป็นไฟล์ข้อความซึ่งง่ายกว่าไฟล์ไบนารีสำหรับมนุษย์ในการแก้ไขและดีบัก สำหรับกราฟิก 3 มิติ รูปแบบข้อความส่วนใหญ่ถูกแทนที่ด้วยรูปแบบไบนารี ที่มีประสิทธิภาพมากกว่า และด้วยAPIที่อนุญาตให้แอปพลิเคชันแบบโต้ตอบสื่อสารโดยตรงกับส่วนประกอบการเรนเดอร์โดยไม่ต้องสร้างไฟล์บนดิสก์ (แม้ว่าคำอธิบายฉากมักจะยังคงถูกสร้างขึ้นในหน่วยความจำก่อนการเรนเดอร์ก็ตาม) [ 6 ] : 1.2, 3.2.6, 3.3.1, 3.3.7

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

รูป แบบ PostScript (ซึ่งมักได้รับการยกย่องว่าเป็นต้นกำเนิดของการจัดพิมพ์บนเดสก์ท็อป ) เป็นวิธีมาตรฐานที่สามารถทำงานร่วมกันได้ในการอธิบายกราฟิก 2 มิติและเค้าโครงหน้ากระดาษรูป แบบ Scalable Vector Graphics (SVG)ก็เป็นรูปแบบข้อความเช่นกัน และ รูปแบบ PDFใช้ภาษา PostScript ภายใน ในทางตรงกันข้าม แม้ว่ารูปแบบไฟล์กราฟิก 3 มิติหลายรูปแบบจะได้รับการกำหนดมาตรฐานแล้ว (รวมถึงรูปแบบข้อความ เช่นVRMLและX3D ) แต่แอปพลิเคชันการเรนเดอร์ที่แตกต่างกันมักใช้รูปแบบที่ปรับให้เหมาะกับความต้องการของตนเอง และสิ่งนี้ได้นำไปสู่การแพร่หลายของรูปแบบที่เป็นกรรมสิทธิ์และรูปแบบเปิด โดยไฟล์ไบนารีเป็นที่นิยมมากกว่า[ 6 ] : 3.2.3, 3.2.5, 3.3.7 [ 26 ] : vii [ 27 ] [ 7 ] : 16.5.2. [ 28 ]

กราฟิกเวกเตอร์ 2 มิติ

คำ อธิบายภาพ กราฟิกเวกเตอร์อาจรวมถึง: [ 26 ] [ 27 ]

เรขาคณิต 3 มิติ

คำอธิบายฉากเรขาคณิตอาจรวมถึง: [ 6 ] : บทที่ 4-7, 8.7 [ 29 ]

มีรูปแบบไฟล์มากมายสำหรับการจัดเก็บวัตถุ 3 มิติแต่ละชิ้นหรือ " โมเดล " สามารถนำเข้าสู่ฉากขนาดใหญ่ หรือโหลดตามความต้องการโดยซอฟต์แวร์การเรนเดอร์หรือเกมได้ ฉากที่สมจริงอาจต้องใช้วัตถุหลายร้อยชิ้น เช่น ของใช้ในบ้าน ยานพาหนะ และต้นไม้ และศิลปิน 3 มิติมักใช้คลังโมเดลขนาดใหญ่ ในการผลิตเกม โมเดลเหล่านี้ (พร้อมกับข้อมูลอื่นๆ เช่น พื้นผิว ไฟล์เสียง และแอนิเมชัน) เรียกว่า " แอสเซ็ต " [ 28 ] [ 30 ] : บทที่ 4

ข้อมูลปริมาตร

การแสดงภาพทางวิทยาศาสตร์และวิศวกรรมมักต้องการการเรนเดอร์ข้อมูลปริมาตรที่สร้างขึ้นจากการสแกนหรือการจำลอง 3 มิติ แหล่งข้อมูลดังกล่าวที่พบได้บ่อยที่สุดคือ การสแกน CTและMRI ทางการแพทย์ ซึ่งจำเป็นต้องเรนเดอร์เพื่อการวินิจฉัย ข้อมูลปริมาตรอาจมีขนาดใหญ่มาก และต้องการรูปแบบข้อมูลเฉพาะเพื่อจัดเก็บอย่างมีประสิทธิภาพ โดยเฉพาะอย่างยิ่งหากปริมาตรนั้นเบาบาง (มีบริเวณว่างที่ไม่มีข้อมูล) [ 8 ] : 14.3.1 [ 31 ] [ 32 ]

ก่อนการเรนเดอร์ สามารถแยก ชุดระดับสำหรับข้อมูลปริมาตรและแปลงเป็นตาข่ายสามเหลี่ยมได้ เช่น โดยใช้ อัลกอริทึม marching cubesนอกจากนี้ยังมีการพัฒนาอัลกอริทึมที่ทำงานโดยตรงกับข้อมูลปริมาตร ตัวอย่างเช่น เพื่อเรนเดอร์ภาพที่สมจริงของวิธีที่แสงกระเจิงและถูกดูดซับโดยเมฆและควัน และการเรนเดอร์ปริมาตรประเภทนี้ถูกนำมาใช้อย่างกว้างขวางในเอฟเฟกต์ภาพสำหรับภาพยนตร์ เมื่อเรนเดอร์ข้อมูลปริมาตรที่มีความละเอียดต่ำโดยไม่มีการแทรกสอด ลูกบาศก์แต่ละลูกหรือ " voxels " อาจมองเห็นได้ ซึ่งเป็นเอฟเฟกต์ที่บางครั้งใช้โดยเจตนาสำหรับกราฟิกเกม[ 33 ] : 4.6 [ 8 ] : 13.10, บทที่ 14, 16.1

การถ่ายภาพทางอากาศและการสแกน

ภาพถ่ายของวัตถุในโลกแห่งความเป็นจริงสามารถนำมาใช้ในฉากที่เรนเดอร์ได้โดยใช้ภาพเหล่านั้นเป็นพื้นผิวสำหรับวัตถุ 3 มิติ นอกจากนี้ยังสามารถต่อภาพถ่ายของฉากเข้าด้วยกันเพื่อสร้างภาพพาโนรามาหรือแผนที่สภาพแวดล้อมซึ่งช่วยให้สามารถเรนเดอร์ฉากได้อย่างมีประสิทธิภาพมาก แต่จากมุมมองเดียวเท่านั้น การสแกนวัตถุและฉากจริงโดยใช้แสงที่มีโครงสร้างหรือไลดาร์จะสร้างกลุ่มจุดที่ประกอบด้วยพิกัดของจุดแต่ละจุดนับล้านจุดในอวกาศ บางครั้งอาจมีข้อมูลสีด้วย กลุ่มจุดเหล่านี้อาจถูกเรนเดอร์โดยตรงหรือแปลงเป็นตาข่ายก่อนเรนเดอร์ (หมายเหตุ: "กลุ่มจุด" บางครั้งยังหมายถึงรูปแบบการเรนเดอร์แบบเรียบง่ายที่สามารถใช้กับรูปทรงเรขาคณิต 3 มิติใดๆ ก็ได้ คล้ายกับการเรนเดอร์แบบโครงร่างเส้น) [ 8 ] : 13.3, 13.9 [ 6 ] : 1.3

การประมาณค่าทางประสาทและสนามแสง

แนวทางการทดลองที่ใหม่กว่าคือการอธิบายฉากโดยใช้ฟิลด์ความสว่างซึ่งกำหนดสี ความเข้ม และทิศทางของแสงที่เข้ามาในแต่ละจุดในอวกาศ (แนวคิดนี้คล้ายคลึงกัน แต่ไม่เหมือนกับฟิลด์แสงที่บันทึกโดยโฮโลแกรม ) สำหรับความละเอียดที่มีประโยชน์ใดๆ ปริมาณข้อมูลในฟิลด์ความสว่างมีขนาดใหญ่มากจนไม่สามารถแสดงโดยตรงเป็นข้อมูลปริมาตรได้ และต้องหาฟังก์ชันการประมาณค่า โดยทั่วไปแล้วจะใช้ เครือข่ายประสาทเทียมในการสร้างและประเมินค่าประมาณเหล่านี้ บางครั้งใช้เฟรมวิดีโอหรือชุดภาพถ่ายของฉากที่ถ่ายจากมุมต่างๆ เป็น " ข้อมูลการฝึกอบรม " [ 34 ] [ 35 ]

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

เอาต์พุต

ผลลัพธ์ของการเรนเดอร์อาจแสดงผลบนหน้าจอทันที (หลายครั้งต่อวินาที ในกรณีของการเรนเดอร์แบบเรียลไทม์ เช่น เกม) หรือบันทึกใน รูปแบบไฟล์ กราฟิกแรสเตอร์เช่นJPEGหรือPNGแอปพลิเคชันการเรนเดอร์ระดับสูงมักใช้ รูปแบบไฟล์ OpenEXRซึ่งสามารถแสดงการไล่ระดับสีที่ละเอียดกว่าและแสงที่มีช่วงไดนามิกสูง ทำให้สามารถใช้ การปรับโทนสีหรือการปรับแต่งอื่นๆ ได้ในภายหลังโดยไม่สูญเสียคุณภาพ[ 37 ] [ 38 ] : บทที่ 14, ภาค B

แอนิเมชันที่เรนเดอร์อย่างรวดเร็วสามารถบันทึกเป็นไฟล์วิดีโอได้โดยตรง แต่สำหรับการเรนเดอร์คุณภาพสูง เฟรมแต่ละเฟรม (ซึ่งอาจเรนเดอร์โดยคอมพิวเตอร์หลายเครื่องในคลัสเตอร์หรือฟาร์มเรนเดอร์และอาจใช้เวลาหลายชั่วโมงหรือหลายวันในการเรนเดอร์) จะถูกส่งออกเป็นไฟล์แยกต่างหากและนำมารวมกันในภายหลังเป็นคลิปวิดีโอ[ 39 ] [ 30 ] : 1.5, 3.11, 8.11

ผลลัพธ์ของโปรแกรมเรนเดอร์บางครั้งไม่ได้มีเพียงค่าสี RGB เท่านั้น ตัวอย่างเช่น สามารถสุ่มตัวอย่างสเปกตรัมโดยใช้ความยาวคลื่นแสงหลายความยาว หรืออาจรวมข้อมูลเพิ่มเติม เช่น ความลึก (ระยะห่างจากกล้อง) หรือวัสดุของแต่ละจุดในภาพ (ข้อมูลนี้สามารถนำไปใช้ในระหว่างการคอมโพสิตหรือเมื่อสร้างแผนที่พื้นผิวสำหรับการเรนเดอร์แบบเรียลไทม์ หรือใช้เพื่อช่วยในการกำจัดสัญญาณรบกวนจากภาพที่ติดตามเส้นทาง) สามารถรวมข้อมูลความโปร่งใสได้ ทำให้สามารถนำวัตถุพื้นหน้าที่มีการเรนเดอร์มาคอมโพสิตกับภาพถ่ายหรือวิดีโอได้ นอกจากนี้ บางครั้งก็มีประโยชน์ในการจัดเก็บส่วนประกอบของแสงที่แตกต่างกัน หรือแสงสะท้อนและแสงกระจาย ในช่องสัญญาณแยกต่างหาก เพื่อให้สามารถปรับแสงได้หลังจากการเรนเดอร์ รูปแบบ OpenEXRอนุญาตให้จัดเก็บข้อมูลหลายช่องสัญญาณในไฟล์เดียว โปรแกรมเรนเดอร์เช่นBlenderและPixar RenderManรองรับค่าที่กำหนดค่าได้หลากหลายที่เรียกว่า Arbitrary Output Variables (AOVs) [ 37 ] [ 38 ] : บทที่ 14, ภาค B [ 40 ]

เทคนิค

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

ความแตกต่างที่สำคัญคือระหว่าง อัลกอริ ธึมลำดับภาพซึ่งวนซ้ำพิกเซลในภาพ และ อัลกอริธึม ลำดับวัตถุซึ่งวนซ้ำวัตถุในฉาก สำหรับฉากที่เรียบง่าย อัลกอริธึมลำดับวัตถุมักจะมีประสิทธิภาพมากกว่า เนื่องจากมีวัตถุน้อยกว่าพิกเซล[ 41 ] : บทที่ 4

กราฟิกเวกเตอร์ 2 มิติ
การแสดงผลเวกเตอร์ในช่วงทศวรรษ 1960-1970 ใช้การเบี่ยงเบนของลำแสงอิเล็กตรอนเพื่อวาดส่วนของเส้นตรงลงบนหน้าจอโดยตรง ปัจจุบันกราฟิกเวกเตอร์ ถูกเรน เดอร์โดยอัลกอริทึมการสร้างภาพแรสเตอร์ซึ่งรองรับรูปทรงที่เติมสีด้วย โดยหลักการแล้ว โปรแกรมเรนเดอร์กราฟิกเวกเตอร์ 2 มิติใดๆ ก็สามารถใช้เรนเดอร์วัตถุ 3 มิติได้โดยการฉายภาพวัตถุเหล่านั้นลงบนระนาบภาพ 2 มิติก่อน[ 21 ] : 93, 431, 505, 553
การแปลงภาพเป็นพิกเซลแบบ 3 มิติ
ปรับอัลกอริทึมการแรสเตอร์แบบ 2 มิติเพื่อให้สามารถใช้งานได้อย่างมีประสิทธิภาพมากขึ้นสำหรับการเรนเดอร์ 3 มิติ โดยจัดการ กับ การลบพื้นผิวที่ซ่อนอยู่ผ่าน เทคนิค สแกนไลน์หรือบัฟเฟอร์ zสามารถสร้างเอฟเฟกต์ที่สมจริงหรือมีสไตล์ที่แตกต่างกันได้โดยการระบายสีพิกเซลที่วัตถุครอบคลุมด้วยวิธีต่างๆ โดยทั่วไปพื้นผิวจะถูกแบ่งออกเป็นตาข่ายของสามเหลี่ยมก่อนที่จะทำการแรสเตอร์ การแรสเตอร์มักจะมีความหมายเหมือนกับการเรนเดอร์ "ลำดับวัตถุ" (ดังที่อธิบายไว้ข้างต้น) [ 21 ] : 560-561, 575-590 [ 6 ] : 8.5 [ 41 ] : บทที่ 9
เรย์แคสติ้ง
ใช้สูตรทางเรขาคณิตในการคำนวณวัตถุแรกที่รังสีตัดผ่าน[ 42 ] : 8 สามารถใช้เพื่อดำเนินการเรนเดอร์ "ลำดับภาพ" โดยการฉายรังสีสำหรับแต่ละพิกเซล และค้นหาจุดที่สอดคล้องกันในฉาก การฉายรังสีเป็นการดำเนินการพื้นฐานที่ใช้เพื่อวัตถุประสงค์ทั้งด้านกราฟิกและไม่ใช่กราฟิก[ 14 ] : 6 เช่น การพิจารณาว่าจุดอยู่ในเงาหรือไม่ หรือการตรวจสอบสิ่ง ที่ศัตรูมองเห็นในเกม
การติดตามรังสี
จำลองเส้นทางการสะท้อนของแสงที่เกิดจากการสะท้อนแบบสเปคูลาร์และการหักเห ซึ่งต้องใช้การดำเนินการฉายรังสีจำนวนต่างกันสำหรับแต่ละเส้นทาง รูปแบบขั้นสูงใช้เทคนิค Monte Carloเพื่อสร้างเอฟเฟกต์ต่างๆ เช่น แสงแบบพื้นที่ความลึกของภาพการสะท้อนแบบเบลอ และเงาแบบนุ่มนวลแต่การคำนวณการส่องสว่างทั่วโลกมักอยู่ในขอบเขตของการติดตามเส้นทาง[ 42 ] : 9-13 [ 43 ]
เรดิโอซิตี้
วิธี การวิเคราะห์องค์ประกอบจำกัดที่แบ่งพื้นผิวในฉากออกเป็นชิ้น ๆ และประมาณปริมาณแสงที่แต่ละชิ้นได้รับจากแหล่งกำเนิดแสง หรือโดยอ้อมจากพื้นผิวอื่น ๆ เมื่อ ทราบค่า ความเข้มแสงของแต่ละพื้นผิวแล้ว ก็สามารถเรนเดอร์ฉากโดยใช้การแรสเตอร์หรือการติดตามรังสีได้[ 10 ] : 888-890, 1044-1045
การติดตามเส้นทาง
ใช้การบูรณาการแบบมอนเตคาร์โลร่วมกับรูปแบบการติดตามรังสีแบบง่าย โดยคำนวณความสว่างเฉลี่ยของตัวอย่างเส้นทางที่เป็นไปได้ที่โฟตอนอาจใช้เมื่อเดินทางจากแหล่งกำเนิดแสงไปยังกล้อง (สำหรับบางภาพ จำเป็นต้องสุ่มตัวอย่างเส้นทางหลายพันเส้นทางต่อพิกเซล[ 14 ] : 8 ) วิธีนี้ถูกนำมาใช้เป็นวิธีการแก้สมการการเรนเดอร์ที่ไม่ลำเอียงทางสถิติทำให้การติดตามรังสีมีพื้นฐานทางคณิตศาสตร์ที่เข้มงวด[ 44 ] [ 42 ] : 11-13

แต่ละแนวทางข้างต้นมีรูปแบบที่หลากหลาย และมีการทับซ้อนกันบ้าง การติดตามเส้นทางอาจถือได้ว่าเป็นเทคนิคที่แตกต่างกันหรือเป็นการติดตามรังสีประเภทหนึ่งโดยเฉพาะ[ 10 ] : 846, 1021 โปรดทราบว่าการใช้คำศัพท์ที่เกี่ยวข้องกับการติดตามรังสีและการติดตามเส้นทางมีการเปลี่ยนแปลงอย่างมากเมื่อเวลาผ่านไป[ 42 ] : 7

ฉากนี้สร้างขึ้นแบบเรียลไทม์โดยใช้เทคนิค Ray Marching กับ Signed Distance Fieldsเอฟเฟ็กต์แสงและเงาเกิดจากการเขียนโค้ดอย่างสร้างสรรค์ (ไม่ได้อิงตามหลักฟิสิกส์)

Ray marchingคือตระกูลของอัลกอริธึมที่ใช้โดย ray casting เพื่อค้นหาจุดตัดระหว่างรังสีกับวัตถุที่ซับซ้อน เช่นชุดข้อมูลปริมาตรหรือพื้นผิวที่กำหนดโดยฟังก์ชันระยะทางแบบมีเครื่องหมายโดยตัวมันเองไม่ใช่วิธีการเรนเดอร์ แต่สามารถนำไปรวมเข้ากับ ray tracing และ path tracing ได้ และถูกใช้โดย rasterization เพื่อสร้างการสะท้อนแสงในพื้นที่หน้าจอและเอฟเฟกต์อื่นๆ[ 42 ] : 13

เทคนิคที่เรียกว่าการทำแผนที่โฟตอนจะติดตามเส้นทางของโฟตอนจากแหล่งกำเนิดแสงไปยังวัตถุ โดยสะสมข้อมูลเกี่ยวกับความเข้มของแสงซึ่งจะถูกนำไปใช้ในระหว่างการติดตามรังสีหรือการติดตามเส้นทางแบบดั้งเดิม[ 10 ] : 1037-1039 การเรนเดอร์ฉากโดยใช้รังสีที่ติดตามจากแหล่งกำเนิดแสงไปยังกล้องเท่านั้นนั้นไม่สามารถทำได้จริง แม้ว่าจะสอดคล้องกับความเป็นจริงมากขึ้นก็ตาม เนื่องจากจะต้องจำลองโฟตอนจำนวนมหาศาล ซึ่งมีเพียงเศษส่วนเล็กน้อยเท่านั้นที่ตกกระทบกล้อง[ 45 ] : 7-9 [ 21 ] : 587

ผู้เขียนบางคนเรียกการติดตามรังสีแบบดั้งเดิมว่า "การติดตามรังสีแบบย้อนกลับ" เนื่องจากเป็นการติดตามเส้นทางของโฟตอนย้อนกลับจากกล้องไปยังแหล่งกำเนิดแสง และเรียกการติดตามเส้นทางจากแหล่งกำเนิดแสง (เช่นในการทำแผนที่โฟตอน) ว่า "การติดตามรังสีแบบไปข้างหน้า" [ 45 ] : 7-9 อย่างไรก็ตาม บางครั้งความหมายของคำเหล่านี้ก็กลับกัน[ 46 ]การติดตามรังสีที่เริ่มต้นจากแหล่งกำเนิดแสงอาจเรียกว่าการติดตามอนุภาคหรือการติดตามแสงซึ่งช่วยหลีกเลี่ยงความกำกวมนี้ได้[ 18 ] : 92 [ 47 ] : 4.5.4

การเรนเดอร์แบบเรียลไทม์ รวมถึงกราฟิกวิดีโอเกม โดยทั่วไปจะใช้การแรสเตอร์ไรเซชัน แต่ก็มีการผสมผสานกับการเรย์เทรซซิ่งและพาธเทรซซิ่งมากขึ้นเรื่อยๆ[ 14 ] : 2 เพื่อให้สามารถส่องสว่างทั่วโลก ได้อย่างสมจริง การเรนเดอร์แบบเรียลไทม์มักจะอาศัยแสงที่เรนเดอร์ไว้ล่วงหน้า ("อบ") สำหรับวัตถุที่อยู่กับที่ สำหรับวัตถุที่เคลื่อนที่ อาจใช้เทคนิคที่เรียก ว่า โพรบแสงซึ่งแสงจะถูกบันทึกโดยการเรนเดอร์มุมมองแบบรอบทิศทางของฉาก ณ จุดที่เลือกในอวกาศ (มักจะเป็นจุดบนตารางกริดเพื่อให้สามารถประมาณค่า ได้ง่ายขึ้น ) สิ่งเหล่านี้คล้ายกับแผนที่สภาพแวดล้อมแต่โดยทั่วไปจะใช้ความละเอียดต่ำมากหรือการประมาณค่า เช่นฮาร์มอนิกทรงกลม[ 48 ] (หมายเหตุ: Blenderใช้คำว่า 'โพรบแสง' สำหรับข้อมูลแสงที่บันทึกไว้ล่วงหน้าในประเภททั่วไปมากขึ้น รวมถึงแผนที่การสะท้อน[ 49 ] )

การแปลงภาพแรสเตอร์

ภาพจำลองทางสถาปัตยกรรมของกล้องโทรทรรศน์ขนาดใหญ่พิเศษ (Extremely Large Telescope)จากปี 2009 ซึ่งน่าจะสร้างขึ้นโดยใช้เทคนิคหลายอย่างผสมผสานกัน

คำว่า"แรสเตอร์ไรเซชัน " (ในความหมายกว้างๆ) ครอบคลุมเทคนิคหลายอย่างที่ใช้สำหรับการเรนเดอร์ภาพ 2 มิติ และ การเรนเดอร์ภาพ 3 มิติแบบ เรียล ไท ม์ ภาพยนตร์แอนิเมชั่น 3 มิติถูกเรนเดอร์ด้วยแรสเตอร์ไรเซชันก่อนที่เทคนิคเรย์เทรซซิ่งและพาธเทรซซิ่งจะนำมาใช้ได้จริง

ตัวเรนเดอร์จะรวมการแรสเตอร์ไรเซชันเข้ากับการประมวลผลเรขาคณิต (ซึ่งไม่เฉพาะเจาะจงกับการแรสเตอร์ไรเซชัน) และการประมวลผลพิกเซลซึ่งคำนวณค่าสี RGBที่จะวางในเฟรมบัฟเฟอร์เพื่อแสดงผล[ 8 ] : 2.1 [ 41 ] : 9

งานหลักของการสร้างภาพแรสเตอร์ (รวมถึงการประมวลผลพิกเซล) ได้แก่: [ 8 ] : 2, 3.8, 23.1.1

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

การแรสเตอร์ไรเซชัน 3 มิติโดยทั่วไปเป็นส่วนหนึ่งของไปป์ไลน์กราฟิกซึ่งแอปพลิเคชันจะจัดเตรียมรายการสามเหลี่ยมที่จะเรนเดอร์ และระบบเรนเดอร์จะแปลงและฉายพิกัดของสามเหลี่ยมเหล่านั้น กำหนดว่าสามเหลี่ยมใดบ้างที่อาจมองเห็นได้ในวิวพอร์ตและดำเนินการแรสเตอร์ไรเซชันและการประมวลผลพิกเซลข้างต้นก่อนที่จะแสดงผลลัพธ์สุดท้ายบนหน้าจอ[ 8 ] : 2.1 [ 41 ] : 9

ในอดีต การแรสเตอร์ไรเซชัน 3 มิติใช้อัลกอริธึม เช่นอัลกอริธึม Warnockและการเรนเดอร์แบบสแกนไลน์ (เรียกอีกอย่างว่า "การแปลงสแกน") ซึ่งสามารถจัดการกับรูปหลายเหลี่ยมใดๆ ก็ได้ และสามารถแรสเตอร์ไรเซชันรูปทรงหลายๆ รูปพร้อมกันได้ แม้ว่าอัลกอริธึมดังกล่าวยังคงมีความสำคัญสำหรับการเรนเดอร์ 2 มิติ แต่การเรนเดอร์ 3 มิติในปัจจุบันมักจะแบ่งรูปทรงออกเป็นรูปสามเหลี่ยมและแรสเตอร์ไรเซชันทีละรูปโดยใช้วิธีการที่ง่ายกว่า[ 50 ] [ 51 ] [ 21 ] : 456, 561–569

มี อัลกอริธึมประสิทธิภาพสูงสำหรับการสร้างภาพแรสเตอร์ ของ เส้น 2 มิติรวมถึงเส้นที่ป้องกันการบิดเบี้ยว ตลอดจน วงรีและสามเหลี่ยมที่เติมสี กรณีพิเศษที่สำคัญของการสร้างภาพแรสเตอร์ 2 มิติคือการแสดงผลข้อความซึ่งต้องใช้การป้องกันการบิดเบี้ยวและการปัดเศษพิกัดอย่างระมัดระวังเพื่อหลีกเลี่ยงการบิดเบือนรูปทรงของตัวอักษรและรักษาระยะห่าง ความหนาแน่น และความคมชัด[ 41 ] : 9.1.1 [ 52 ]

หลังจากที่พิกัด 3 มิติถูกฉายลงบนระนาบภาพแล้ว การแรสเตอร์ไรเซชันส่วนใหญ่จะเป็นปัญหา 2 มิติ แต่เนื่องจากมิติที่ 3 ทำให้จำเป็นต้องกำจัดพื้นผิวที่ซ่อนอยู่กราฟิกคอมพิวเตอร์ยุคแรกใช้ขั้นตอนวิธีทางเรขาคณิตหรือการฉายรังสีเพื่อกำจัดส่วนที่ซ่อนอยู่ของรูปร่าง หรือใช้ขั้นตอนวิธีของจิตรกรซึ่งจัดเรียงรูปร่างตามความลึก (ระยะห่างจากกล้อง) และเรนเดอร์จากด้านหลังไปด้านหน้า ต่อมาการจัดเรียงตามความลึกถูกหลีกเลี่ยงโดยการรวมการเปรียบเทียบความลึกเข้ากับขั้นตอนวิธีเรนเดอร์แบบสแกนไลน์ ขั้นตอน วิธี z-bufferทำการเปรียบเทียบทางอ้อมโดยการรวมค่าความลึกหรือค่า "z" ไว้ในเฟรมบัฟเฟอร์พิกเซลจะถูกครอบคลุมโดยรูปร่างก็ต่อเมื่อค่า z ของรูปร่างนั้นต่ำกว่า (แสดงว่าอยู่ใกล้กล้องมากกว่า) ค่า z ที่อยู่ในบัฟเฟอร์ในปัจจุบัน z-buffer ต้องการหน่วยความจำเพิ่มเติม (ซึ่งเป็นทรัพยากรที่มีราคาแพงในขณะที่คิดค้นขึ้น) แต่ช่วยลดความซับซ้อนของโค้ดการแรสเตอร์ไรเซชันและอนุญาตให้ทำการประมวลผลหลายรอบได้ หน่วยความจำในปัจจุบันเร็วขึ้นและมีมากขึ้น และบัฟเฟอร์ z มักใช้สำหรับการเรนเดอร์แบบเรียลไทม์[ 53 ] [ 54 ] [ 21 ] : 553–570 [ 8 ] : 2.5.2

ข้อเสียของอัลกอริธึม z-buffer พื้นฐาน คือพิกเซลแต่ละพิกเซลจะถูกปกคลุมด้วยวัตถุชิ้นเดียวทั้งหมดหรือถูกเติมด้วยสีพื้นหลัง ทำให้เกิดขอบหยักในภาพสุดท้าย วิธี การป้องกันรอยหยัก ในยุคแรกๆ แก้ปัญหานี้โดยการตรวจจับเมื่อพิกเซลถูกปกคลุมด้วยรูปร่างบางส่วน และคำนวณพื้นที่ที่ถูกปกคลุมA-buffer (และ เทคนิคการสุ่มตัวอย่าง แบบซูเปอร์แซมปลิงและมัลติแซมปลิง อื่นๆ ) แก้ปัญหาได้ไม่แม่นยำเท่า แต่มีประสิทธิภาพสูงกว่า สำหรับกราฟิก 3 มิติแบบเรียลไทม์ การใช้ฮิวริสติกที่ซับซ้อน (และแม้แต่โครงข่ายประสาทเทียม ) เพื่อทำการป้องกันรอยหยักกลาย เป็นเรื่องปกติ [ 54 ] [ 55 ] [ 41 ] : 9.3 [ 8 ] : 5.4.2

ในการแรสเตอร์แบบ 3 มิติ สีมักจะถูกกำหนดโดยพิกเซลเชเดอร์หรือแฟรกเมนต์เชเดอร์ซึ่งเป็นโปรแกรมขนาดเล็กที่ทำงานสำหรับแต่ละพิกเซล เชเดอร์จะไม่ (หรือไม่สามารถ) เข้าถึงข้อมูล 3 มิติสำหรับฉากทั้งหมดโดยตรง (ซึ่งจะช้ามาก และจะส่งผลให้ได้อัลกอริทึมที่คล้ายกับการติดตามรังสี) และได้มีการพัฒนาเทคนิคต่างๆ มากมายเพื่อเรนเดอร์เอฟเฟกต์ต่างๆ เช่นเงาและการสะท้อนโดยใช้เพียงการแมปพื้นผิวและหลายรอบ[ 41 ] : 17.8

การใช้งานการแรสเตอร์แบบ 3 มิติที่เก่ากว่าและพื้นฐานกว่านั้นไม่รองรับเชเดอร์ และใช้เทคนิคการแรเงาแบบง่ายๆ เช่นการแรเงาแบบแบน (แสงจะถูกคำนวณเพียงครั้งเดียวสำหรับแต่ละสามเหลี่ยม จากนั้นจึงเรนเดอร์ทั้งหมดด้วยสีเดียว) การแรเงาแบบกูโรด์ (แสงจะถูกคำนวณโดยใช้เวกเตอร์ปกติที่กำหนดไว้ที่จุดยอด จากนั้นสีจะถูกแทรกสอดไปทั่วแต่ละสามเหลี่ยม) หรือการแรเงาแบบฟอง (เวกเตอร์ปกติจะถูกแทรกสอดไปทั่วแต่ละสามเหลี่ยมและแสงจะถูกคำนวณสำหรับแต่ละพิกเซล) [ 41 ] : 9.2

จนกระทั่งเมื่อไม่นานมานี้Pixarใช้การแรสเตอร์ไรเซชันในการเรนเดอร์ภาพยนตร์แอนิเมชั่น ของตน ซึ่งแตกต่างจากเรนเดอร์ที่ใช้กันทั่วไปสำหรับกราฟิกแบบเรียล ไทม์ ระบบเรนเดอร์ Reyesใน ซอฟต์แวร์ RenderMan ของ Pixar ได้รับการปรับให้เหมาะสมสำหรับการเรนเดอร์รูปหลายเหลี่ยมขนาดเล็กมาก (ขนาดพิกเซล) และรวมเอา เทคนิคการสุ่มตัวอย่าง แบบสุ่มซึ่งมักเกี่ยวข้องกับการเรย์เทรซซิ่ง [ 6 ] : 2, 6.3 [ 56 ]

เรย์แคสติ้ง

หนึ่งในวิธีที่ง่ายที่สุดในการเรนเดอร์ฉาก 3 มิติคือการทดสอบว่ารังสีที่เริ่มต้นจากจุดมอง ("ตา" หรือ "กล้อง") ตัดกับรูปทรงเรขาคณิตใดๆ ในฉากหรือไม่ โดยทำการทดสอบซ้ำโดยใช้ทิศทางรังสีที่แตกต่างกันสำหรับแต่ละพิกเซล วิธีนี้เรียกว่าการฉายรังสี (ray casting ) ซึ่งมีความสำคัญในกราฟิกคอมพิวเตอร์ยุคแรก และเป็นองค์ประกอบพื้นฐานสำหรับอัลกอริทึมขั้นสูงกว่า การฉายรังสีสามารถใช้ในการเรนเดอร์รูปทรงที่กำหนดโดย การดำเนินการ เรขาคณิตของแข็งเชิงสร้างสรรค์ (CSG) [ 42 ] : 8-9 [ 57 ] : 246–249

การทดลองการฉายรังสีในช่วงแรกๆ ได้แก่ งานของ Arthur Appel ในช่วงทศวรรษ 1960 Appel สร้างเงาโดยการฉายรังสีเพิ่มเติมจากจุดพื้นผิวที่มองเห็นได้แต่ละจุดไปยังแหล่งกำเนิดแสง เขายังพยายามสร้างความหนาแน่นของการส่องสว่างโดยการฉายรังสีแบบสุ่มจากแหล่งกำเนิดแสงไปยังวัตถุและพล็อตจุดตัด (คล้ายกับเทคนิคในภายหลังที่เรียกว่าการทำแผนที่โฟตอน ) [ 58 ]

สามารถใช้ Ray marchingเพื่อค้นหาจุดตัดแรกของรังสีกับรูปทรงที่ซับซ้อน เช่นแฟร็กทัลMandelbulb นี้

เมื่อเรนเดอร์ฉากที่มีวัตถุจำนวนมาก การทดสอบการตัดกันของรังสีกับวัตถุทุกชิ้นจะมีค่าใช้จ่ายสูงมาก จึง มีการใช้ โครงสร้างข้อมูล พิเศษ เพื่อเร่งกระบวนการนี้โดยอนุญาตให้ยกเว้นวัตถุจำนวนมากได้อย่างรวดเร็ว (เช่น วัตถุที่อยู่ด้านหลังกล้อง) โครงสร้างเหล่านี้คล้ายคลึงกับดัชนีฐานข้อมูลสำหรับการค้นหาวัตถุที่เกี่ยวข้อง โครงสร้างที่พบได้บ่อยที่สุดคือลำดับชั้นปริมาตรขอบเขต (BVH) ซึ่งจัดเก็บกล่องหรือทรงกลมขอบเขต ที่คำนวณไว้ล่วงหน้า สำหรับแต่ละสาขาของต้นไม้ของวัตถุ และต้นไม้ kdซึ่งแบ่งพื้นที่ออกเป็นสองส่วนแบบเรียกซ้ำGPU รุ่นใหม่ๆ มีการเร่งความเร็วฮาร์ดแวร์สำหรับการทดสอบการตัดกันของ BVH ต้นไม้ kd เป็นกรณีพิเศษของการแบ่งพื้นที่แบบไบนารีซึ่งมักใช้ในกราฟิกคอมพิวเตอร์ยุคแรกๆ (นอกจากนี้ยังสามารถสร้างลำดับการแรสเตอร์สำหรับอัลกอริทึมของจิตรกรได้ ) Octrees ซึ่ง เป็นเทคนิคที่ได้รับความนิยมในอดีตอีกเทคนิคหนึ่ง ยังคงถูกใช้บ่อยสำหรับข้อมูลปริมาตร[ 14 ] : 16–17 [ 59 ] [ 57 ] [ 7 ] : 36.2

สูตรทางเรขาคณิตเพียงพอสำหรับการหาจุดตัดของรังสีกับรูปทรงต่างๆ เช่นทรงกลม รูปหลายเหลี่ยมและทรงหลายเหลี่ยมแต่สำหรับพื้นผิวโค้งส่วนใหญ่ไม่มีวิธีแก้ปัญหาเชิงวิเคราะห์หรือการคำนวณจุดตัดอย่างแม่นยำโดยใช้ตัวเลขทศลอยที่มี ความแม่นยำจำกัดนั้นทำได้ยาก บางครั้งอาจใช้ อัลก อริธึมการหาค่ารากเช่นวิธีของนิวตัน เพื่อหลีกเลี่ยงความซับซ้อนเหล่านี้ พื้นผิวโค้งมักจะถูกประมาณเป็น ตาข่ายของรูปสามเหลี่ยมการเรนเดอร์ปริมาตร (เช่น การเรนเดอร์เมฆและควัน) และพื้นผิวบางอย่าง เช่นแฟรกทัลอาจต้องใช้การเดินรังสีแทนการฉายรังสีพื้นฐาน[ 60 ] [ 42 ] : 13 [ 8 ] : 14, 17.3

การติดตามรังสี

Spiral Sphere and Julia, Detailเป็นภาพที่สร้างขึ้นด้วยคอมพิวเตอร์โดยศิลปิน Robert W. McGregor โดยใช้เพียงโปรแกรม POV-Ray 3.6 และภาษาการอธิบายฉากในตัวของโปรแกรม เท่านั้น

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

การติดตามรังสีแบบคลาสสิก (เรียกอีกอย่างว่า การติดตามรังสี แบบ Whittedหรือแบบเรียกซ้ำ ) ขยายวิธีการนี้เพื่อให้สามารถเรนเดอร์กระจกและวัตถุโปร่งใสได้ หากรังสีที่ติดตามย้อนกลับจากกล้องมีต้นกำเนิดที่จุดบนกระจก จะใช้ สูตรการสะท้อนจากทัศนศาสตร์เชิงเรขาคณิตเพื่อคำนวณทิศทางที่รังสีสะท้อนมาจาก และรังสีอีกเส้นจะถูกส่งย้อนกลับในทิศทางนั้น หากรังสีมีต้นกำเนิดที่พื้นผิวโปร่งใส รังสีจะถูกส่งย้อนกลับทั้ง รังสี สะท้อนและ รังสี หักเห (โดยใช้กฎของ Snellเพื่อคำนวณทิศทางการหักเห) ดังนั้นการติดตามรังสีจึงจำเป็นต้องรองรับ "ต้นไม้" ของรังสีที่มีการแตกแขนง ในการใช้งานแบบง่าย จะมีการเรียก ฟังก์ชันแบบเรียกซ้ำเพื่อติดตามรังสีแต่ละเส้น[ 8 ] : 11.2.2 [ 42 ] : 9

การติดตามรังสีมักจะทำการลดรอยหยักโดยการหาค่าเฉลี่ยของตัวอย่าง หลายๆ ตัวอย่าง สำหรับแต่ละพิกเซล นอกจากนี้ยังอาจใช้ตัวอย่างหลายๆ ตัวอย่างสำหรับเอฟเฟกต์ต่างๆ เช่นความลึกของภาพและการเบลอจากการเคลื่อนไหวหากใช้ทิศทางหรือเวลาของรังสีที่เว้นระยะห่างเท่าๆ กันสำหรับคุณลักษณะเหล่านี้ จะต้องใช้รังสีจำนวนมาก และรอยหยักบางส่วนจะยังคงอยู่ การติดตามรังสี แบบ Cook , แบบสุ่มหรือ แบบ Monte Carloหลีกเลี่ยงปัญหานี้โดยใช้การสุ่มตัวอย่างแบบสุ่มแทนการสุ่มตัวอย่างที่เว้นระยะห่างเท่าๆ กัน การติดตามรังสีประเภทนี้มักเรียกว่าการติดตามรังสีแบบกระจายหรือการติดตามรังสีแบบกระจายเนื่องจากเป็นการสุ่มรังสีจากความน่าจะเป็นการติดตามรังสีแบบกระจายยังสามารถเรนเดอร์เงา "นุ่มนวล" ที่สมจริงจากแสงขนาดใหญ่ได้โดยใช้ตัวอย่างแบบสุ่มของจุดบนแสงเมื่อทดสอบเงา และสามารถจำลองความคลาดเคลื่อนของสี ได้ โดยการสุ่มความยาวคลื่นหลายๆ ค่าจากสเปกตรัมของแสง[ 42 ] : 10 [ 45 ] : 25

วัสดุพื้นผิวจริงสะท้อนแสงปริมาณเล็กน้อยในเกือบทุกทิศทาง เนื่องจากมีปุ่มและร่องเล็กๆ (หรือระดับจุลภาค) ตัวติดตามรังสีแบบกระจายสามารถจำลองสิ่งนี้ได้โดยการสุ่มตัวอย่างทิศทางรังสีที่เป็นไปได้ ซึ่งช่วยให้สามารถเรนเดอร์ภาพสะท้อนที่เบลอจากพื้นผิวมันวาวและโลหะได้ อย่างไรก็ตาม หากทำซ้ำขั้นตอนนี้แบบวนซ้ำเพื่อจำลองแสงทางอ้อมที่สมจริง และหากมีการสุ่มตัวอย่างมากกว่าหนึ่งครั้งที่แต่ละจุดบนพื้นผิว โครงสร้างของรังสีก็จะใหญ่ขึ้นอย่างรวดเร็ว การติดตามรังสีอีกประเภทหนึ่งที่เรียกว่าการติดตามเส้นทางจัดการกับแสงทางอ้อมได้อย่างมีประสิทธิภาพมากขึ้น หลีกเลี่ยงการแตกแขนง และทำให้มั่นใจได้ว่าการกระจายของเส้นทางที่เป็นไปได้ทั้งหมดจากแหล่งกำเนิดแสงไปยังกล้องจะถูกสุ่มตัวอย่างอย่างเป็นกลาง[ 45 ] : 25–27 [ 44 ]

การติดตามรังสีมักใช้สำหรับการเรนเดอร์ภาพสะท้อนในภาพยนตร์แอนิเมชั่น จนกระทั่งการติดตามเส้นทางกลายเป็นมาตรฐานสำหรับการเรนเดอร์ภาพยนตร์ ภาพยนตร์เช่นShrek 2และMonsters Universityยังใช้การติดตามรังสีแบบกระจายหรือการติดตามเส้นทางเพื่อคำนวณการส่องสว่างทางอ้อมสำหรับฉากหรือเฟรมก่อนที่จะเรนเดอร์โดยใช้การแรสเตอร์[ 17 ] : 118–121

ความก้าวหน้าในเทคโนโลยี GPU ทำให้การติดตามรังสีแบบเรียลไทม์เป็นไปได้ในเกม แม้ว่าในปัจจุบันมักจะใช้ร่วมกับการแรสเตอร์ไรเซชันก็ตาม[ 14 ] : 2 ซึ่งช่วยให้เกิดเอฟเฟกต์ภาพที่ทำได้ยากหากใช้เพียงการแรสเตอร์ไรเซชันเท่านั้น รวมถึงการสะท้อนจากพื้นผิวโค้งและวัตถุที่มีการสะท้อนแสง[ 61 ] : 305 และเงาที่แม่นยำในระยะทางและทิศทางพื้นผิวที่หลากหลาย[ 62 ] : 159-160 การสนับสนุนการติดตามรังสีรวมอยู่ใน API กราฟิกเวอร์ชันล่าสุดที่ใช้ ในเกม เช่นDirectX , MetalและVulkan [ 63 ]

การติดตามรังสีถูกนำมาใช้เพื่อสร้างภาพหลุมดำ จำลอง และลักษณะของวัตถุที่เคลื่อนที่ด้วยความเร็วใกล้เคียงกับความเร็วแสง โดยคำนึงถึงความโค้งของกาลอวกาศและผลกระทบเชิงสัมพัทธภาพในระหว่างการจำลองรังสีแสง[ 64 ] [ 65 ]

เรดิโอซิตี้

การสาธิตการคำนวณความสว่างของแสงแบบคลาสสิก พื้นผิวถูกแบ่งออกเป็นช่องขนาด 16x16 หรือ 16x32 ด้านบน: เฉพาะแสงโดยตรง ด้านล่าง: ผลลัพธ์การคำนวณความสว่างของแสง (สำหรับค่าอัลเบโด 0.85)
ด้านบน: ฉากเดียวกัน แต่ใช้ตาข่ายเรดิโอซิตี้ที่ละเอียดกว่า โดยปรับความเรียบของส่วนต่างๆ ในขั้นตอนการเรนเดอร์ขั้นสุดท้ายโดยใช้การประมาณค่าแบบไบลิเนียร์ด้านล่าง: ฉากที่เรนเดอร์ด้วยการติดตามเส้นทางแสง (โดยใช้ตัวเรนเดอร์ PBRT)

เรดิโอซิตี้ (ตั้งชื่อตามปริมาณทางรังสีวิทยาที่มีชื่อเดียวกัน ) เป็นวิธีการเรนเดอร์วัตถุที่ได้รับแสงสะท้อนจากพื้นผิวหยาบหรือด้านแสงประเภทนี้เรียกว่าแสงทางอ้อม แสงจากสภาพแวดล้อมแสงแบบกระจายหรือการสะท้อนแสงแบบกระจายและปัญหาของการเรนเดอร์ให้สมจริงเรียกว่า แสง ส่องสว่างทั่วโลก (Global Illumination ) การแรสเตอร์ไรเซชันและวิธีการเรย์เทรซแบบพื้นฐาน (นอกเหนือจากการเรย์เทรซแบบกระจายและการเรย์เทรซแบบเส้นทาง) สามารถประมาณแสงทางอ้อมได้เพียงคร่าวๆ เท่านั้น เช่น โดยการเพิ่มปริมาณแสง "แอมเบียนต์" ที่สม่ำเสมอซึ่งเลือกโดยศิลปิน เทคนิคเรดิโอซิตี้ยังเหมาะสำหรับการเรนเดอร์ฉากที่มีแสงแบบพื้นที่เช่น แผงไฟฟลูออเรสเซนต์รูปสี่เหลี่ยมผืนผ้า ซึ่งยากต่อการเรนเดอร์ด้วยแรสเตอร์ไรเซชันและการเรย์เทรซแบบดั้งเดิม เรดิโอซิตี้ถือเป็นวิธีการทางฟิสิกส์หมายความว่ามีเป้าหมายเพื่อจำลองการไหลของแสงในสภาพแวดล้อมโดยใช้สมการและข้อมูลจากการทดลองทางฟิสิกส์ อย่างไรก็ตาม มักจะสมมติว่าพื้นผิวทั้งหมดทึบแสงและเป็นแบบแลมเบอร์เชียน อย่างสมบูรณ์ ซึ่งลดความสมจริงและจำกัดการใช้งาน[ 8 ] : 10, 11.2.1 [ 10 ] : 888, 893 [ 66 ] [ 67 ] : 6

ในวิธีการแผ่รังสีแบบดั้งเดิม (เสนอครั้งแรกในปี 1984) ซึ่งปัจจุบันเรียกว่าการแผ่รังสีแบบคลาสสิกพื้นผิวและแสงในฉากจะถูกแบ่งออกเป็นชิ้น ๆ ที่เรียกว่าแพทช์ซึ่งเป็นกระบวนการที่เรียกว่าการสร้างตาข่าย (ขั้นตอนนี้ทำให้เป็นวิธีการองค์ประกอบจำกัด ) จากนั้นโค้ดการเรนเดอร์จะต้องกำหนดว่าแสงที่ปล่อยออกมาหรือสะท้อนแบบกระจาย (กระเจิง) โดยแต่ละแพทช์นั้นได้รับโดยแพทช์อื่น ๆ กี่เปอร์เซ็นต์ เศษส่วนเหล่านี้เรียกว่าฟอร์มแฟคเตอร์หรือวิวแฟคเตอร์ (ใช้ครั้งแรกในทางวิศวกรรมเพื่อจำลองการถ่ายเทความร้อน จากการแผ่รังสี ) ฟอร์มแฟคเตอร์จะถูกคูณด้วยค่าอัลเบโดของพื้นผิวที่รับแสงและใส่ลงในเมทริกซ์จากนั้นแสงในฉากสามารถแสดงเป็นสมการเมทริกซ์ (หรือเทียบเท่ากับระบบสมการเชิงเส้น ) ที่สามารถแก้ไขได้ด้วยวิธีการจากพีชคณิตเชิงเส้น[ 66 ] [ 68 ] : 46 [ 10 ] : 888, 896

การแก้สมการเรดิโอซิตีจะให้ปริมาณแสงทั้งหมดที่ปล่อยออกมาและสะท้อนโดยแต่ละแพทช์ ซึ่งจะถูกหารด้วยพื้นที่เพื่อให้ได้ค่าที่เรียกว่าเรดิโอซิตีซึ่งสามารถนำไปใช้เมื่อทำการแรสเตอร์หรือเรย์เทรซซิ่งเพื่อกำหนดสีของพิกเซลที่สอดคล้องกับส่วนที่มองเห็นได้ของแพทช์ สำหรับการเรนเดอร์แบบเรียลไทม์ ค่านี้ (หรือโดยทั่วไปคือค่าความเข้มแสงซึ่งไม่ขึ้นอยู่กับค่าอัลเบโดของพื้นผิวในพื้นที่) สามารถคำนวณล่วงหน้าและจัดเก็บไว้ในพื้นผิว (เรียกว่าแผนที่ความเข้มแสง ) หรือจัดเก็บเป็นข้อมูลจุดยอดสำหรับโมเดล 3 มิติ คุณสมบัตินี้ถูกใช้ในซอฟต์แวร์การแสดงภาพทางสถาปัตยกรรมเพื่อให้สามารถเดินชมภายในอาคารแบบเรียลไทม์ได้หลังจากคำนวณแสงแล้ว[ 10 ] : 890 [ 8 ] : 11.5.1 [ 67 ] : 332

ขนาดที่ใหญ่ของเมทริกซ์ที่ใช้ในการแผ่รังสีแบบคลาสสิก (กำลังสองของจำนวนแพทช์) ทำให้เกิดปัญหาสำหรับฉากที่สมจริง การใช้งานจริงอาจใช้ การวนซ้ำแบบ JacobiหรือGauss-Seidelซึ่งเทียบเท่า (อย่างน้อยในกรณีของ Jacobi) กับการจำลองการแพร่กระจายของแสงทีละการสะท้อนจนกว่าปริมาณแสงที่เหลืออยู่ (ที่ยังไม่ถูกดูดซับโดยพื้นผิว) จะมีค่าน้อยมาก จำนวนการวนซ้ำ (การสะท้อน) ที่ต้องการขึ้นอยู่กับฉาก ไม่ใช่จำนวนแพทช์ ดังนั้นงานทั้งหมดจึงเป็นสัดส่วนกับกำลังสองของจำนวนแพทช์ (ในทางตรงกันข้าม การแก้สมการเมทริกซ์โดยใช้การกำจัดแบบเกาส์เซียนต้องใช้งานที่แปรผันตามกำลังสามของจำนวนแพทช์) ปัจจัยรูปร่างอาจถูกคำนวณใหม่เมื่อจำเป็น เพื่อหลีกเลี่ยงการจัดเก็บเมทริกซ์ทั้งหมดไว้ในหน่วยความจำ[ 10 ] : 901, 907

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

เวอร์ชันทางเลือกและเวอร์ชันขยายของวิธีการแผ่รังสีรองรับพื้นผิวที่ไม่ใช่แบบแลมเบอร์เชียน เช่น พื้นผิวมันวาวและกระจก และบางครั้งก็ใช้ปริมาตรหรือ "กลุ่ม" ของวัตถุเช่นเดียวกับส่วนของพื้นผิว การแผ่รังสีแบบสุ่มหรือแบบมอนเตคาร์โลใช้การสุ่มตัวอย่างแบบสุ่มในหลายวิธี เช่น การสุ่มตัวอย่างแสงตกกระทบแทนการรวมเข้ากับส่วนต่างๆ ทั้งหมด ซึ่งสามารถปรับปรุงประสิทธิภาพได้ แต่เพิ่มสัญญาณรบกวน (สัญญาณรบกวนนี้สามารถลดลงได้โดยใช้การวนซ้ำแบบกำหนดเป็นขั้นตอนสุดท้าย ซึ่งแตกต่างจากสัญญาณรบกวนของการติดตามเส้นทาง) เวอร์ชันที่ง่ายขึ้นและคำนวณล่วงหน้าบางส่วนของการแผ่รังสีถูกใช้กันอย่างแพร่หลายสำหรับการเรนเดอร์แบบเรียลไทม์ ร่วมกับเทคนิคต่างๆ เช่นการแผ่รังสีแบบอ็อกทรีที่จัดเก็บค่าประมาณของสนามแสง[ 10 ] : 979, 982 [ 68 ] : 49 [ 69 ] [ 8 ] : 11.5

การติดตามเส้นทาง

ในฐานะส่วนหนึ่งของแนวทางที่เรียกว่าการเรนเดอร์ตามหลักฟิสิกส์การติดตามเส้นทางได้กลายเป็นเทคนิคที่โดดเด่นสำหรับการเรนเดอร์ฉากที่สมจริง รวมถึงเอฟเฟกต์สำหรับภาพยนตร์[ 70 ]ตัวอย่างเช่น ซอฟต์แวร์ 3 มิติโอเพนซอร์สยอดนิยมอย่าง Blenderใช้การติดตามเส้นทางในตัวเรนเดอร์ Cycles [ 71 ]ภาพที่สร้างขึ้นโดยใช้การติดตามเส้นทางสำหรับการส่องสว่างทั่วโลกโดยทั่วไปจะมีสัญญาณรบกวนมากกว่าเมื่อใช้เรดิโอซิตี้ (อัลกอริทึมหลักที่แข่งขันกันสำหรับการจัดแสงที่สมจริง) แต่เรดิโอซิตี้อาจยากที่จะนำไปใช้กับฉากที่ซับซ้อนและมีแนวโน้มที่จะเกิดสิ่งผิดปกติที่เกิดจากการใช้การแสดงค่าการแผ่รังสีแบบเทสเซลเลต[ 70 ] [ 10 ] : 975-976, 1045

เช่นเดียวกับการติดตามรังสีแบบกระจาย (distributed ray tracing ) การติดตามเส้นทาง (path tracing) เป็นการติดตามรังสีแบบสุ่มหรือ แบบสโต แคสติก ชนิดหนึ่ง ที่ใช้ การอินทิเกรต แบบมอนเตคาร์โลหรือควาซี-มอนเตคาร์โล วิธี การนี้ ได้รับการเสนอและตั้งชื่อในปี 1986 โดยจิม คาจิ ยะ ในบทความเดียวกันกับสมการการเรนเดอร์คาจิยะสังเกตว่าความซับซ้อนส่วนใหญ่ของการติดตามรังสีแบบกระจายสามารถหลีกเลี่ยงได้โดยการติดตามเส้นทางเดียวจากกล้องในแต่ละครั้ง (ในการใช้งานของคาจิยะ กฎ "ไม่แยกสาขา" นี้ถูกละเมิดโดยการติดตามรังสีเพิ่มเติมจากจุดตัดของพื้นผิวแต่ละจุดไปยังจุดที่เลือกแบบสุ่มบนแหล่งกำเนิดแสงแต่ละแหล่ง) คาจิยะแนะนำให้ลดสัญญาณรบกวนในภาพเอาต์พุตโดยใช้การสุ่มตัวอย่างแบบแบ่งชั้น (stratified sampling ) และการสุ่มตัวอย่างแบบสำคัญ (importance sampling)สำหรับการตัดสินใจแบบสุ่ม เช่น การเลือกรังสีที่จะติดตามในแต่ละขั้นตอนของเส้นทาง แม้จะมีเทคนิคเหล่านี้ การติดตามเส้นทางก็ยังไม่สามารถนำไปใช้ได้จริงสำหรับการเรนเดอร์ภาพยนตร์โดยใช้คอมพิวเตอร์ที่มีอยู่ในขณะนั้น เนื่องจากต้นทุนการคำนวณในการสร้างตัวอย่างให้เพียงพอเพื่อลดความแปรปรวนให้อยู่ในระดับที่ยอมรับได้นั้นสูงเกินไปMonster Houseซึ่งเป็นภาพยนตร์เรื่องแรกที่สร้างขึ้นโดยใช้ path tracing ทั้งหมด ไม่ได้ออกฉายจนกระทั่ง 20 ปีต่อมา[ 44 ] [ 70 ] [ 72 ]

ในรูปแบบพื้นฐาน การติดตามเส้นทางไม่มีประสิทธิภาพ (ต้องใช้ตัวอย่างมากเกินไป) สำหรับการเรนเดอร์แสงสะท้อนและฉากที่แสงเข้ามาทางอ้อมผ่านพื้นที่แคบๆ มีความพยายามที่จะแก้ไขจุดอ่อนเหล่านี้ในช่วงทศวรรษ 1990 การติดตามเส้นทางแบบสองทิศทางมีความคล้ายคลึงกับการทำแผนที่โฟตอนโดยติดตามรังสีจากแหล่งกำเนิดแสงและกล้องแยกกัน จากนั้นจึงหาวิธีเชื่อมต่อเส้นทางเหล่านี้ (แต่ต่างจากการทำแผนที่โฟตอนตรงที่มักจะสุ่มตัวอย่างเส้นทางแสงใหม่สำหรับแต่ละพิกเซล แทนที่จะใช้ข้อมูลที่แคชไว้เดียวกันสำหรับทุกพิกเซล) การขนส่งแสงแบบเมโทรโพลิสจะสุ่มตัวอย่างเส้นทางโดยการปรับเปลี่ยนเส้นทางที่ติดตามไว้ก่อนหน้านี้ โดยใช้เวลามากขึ้นในการสำรวจเส้นทางที่คล้ายกับเส้นทาง "สว่าง" อื่นๆ ซึ่งจะเพิ่มโอกาสในการค้นพบเส้นทางที่สว่างยิ่งขึ้นการสุ่มตัวอย่างความสำคัญหลายรายการช่วยลดความแปรปรวนเมื่อรวมตัวอย่างจากวิธีการสุ่มตัวอย่างมากกว่าหนึ่งวิธี โดยเฉพาะอย่างยิ่งเมื่อตัวอย่างบางส่วนมีสัญญาณรบกวนมากกว่าตัวอย่างอื่นๆ มาก[ 70 ] [ 18 ]

งานในภายหลังนี้ได้รับการสรุปและขยายความในวิทยานิพนธ์ปริญญาเอกของEric Veach ในปี 1997 ซึ่งช่วยกระตุ้นความสนใจในการติดตามเส้นทางในชุมชนกราฟิกคอมพิวเตอร์ โปรแกรมเรนเดอร์ Arnoldซึ่งเปิดตัวครั้งแรกในปี 1998 พิสูจน์ให้เห็นว่าการติดตามเส้นทางนั้นใช้ได้จริงสำหรับการเรนเดอร์เฟรมสำหรับภาพยนตร์ และมีความต้องการ การเรนเดอร์ ที่ไม่ลำเอียงและอิงตามหลักฟิสิกส์ในอุตสาหกรรมภาพยนตร์ โปรแกรมเรนเดอร์การติดตามเส้นทางเชิงพาณิชย์และโอเพนซอร์สอื่นๆ เริ่มปรากฏขึ้น ต้นทุนการคำนวณได้รับการแก้ไขโดยความก้าวหน้าอย่างรวดเร็วในประสิทธิภาพของCPUและคลัสเตอร์[ 70 ]

ความเรียบง่ายของการติดตามเส้นทางและลักษณะของมันในฐานะวิธีการมอนเตคาร์โล (การสุ่มตัวอย่างเส้นทางหลายร้อยหรือหลายพันเส้นทางต่อพิกเซล) ทำให้การนำไปใช้งานบนGPU น่าสนใจ โดยเฉพาะอย่างยิ่งบน GPU รุ่นใหม่ๆ ที่รองรับเทคโนโลยีเร่งความเร็วการติดตามรังสี เช่นRTXและOptiX ของ Nvidia [ 73 ] อย่างไรก็ตาม การติดตามเส้นทางแบบสองทิศทางและการขนส่งแสงแบบเมโทรโพลิสทำได้ยากกว่าในการนำไป ใช้งานบน GPU อย่างมีประสิทธิภาพ[ 74 ] [ 75 ]

มีการพัฒนาเทคนิคเพื่อลดสัญญาณรบกวนในเอาต์พุตของการติดตามเส้นทาง ลดจำนวนเส้นทางที่จำเป็นเพื่อให้ได้คุณภาพที่ยอมรับได้ โดยมีความเสี่ยงที่จะสูญเสียรายละเอียดบางส่วนหรือทำให้เกิดสิ่งแปลกปลอมขนาดเล็กที่ไม่พึงประสงค์มากกว่าสัญญาณรบกวน[ 76 ] [ 77 ] ปัจจุบันมีการใช้ เครือข่ายประสาทเทียมอย่างแพร่หลายเพื่อจุดประสงค์นี้[ 78 ] [ 79 ] [ 80 ]

การวิจัยเพื่อปรับปรุงการติดตามเส้นทางยังคงดำเนินต่อไป มีการสำรวจการติดตามเส้นทางแบบสองทิศทางและการขนส่งแสง Metropolis หลายรูปแบบ รวมถึงวิธีการรวมการติดตามเส้นทางเข้ากับการทำแผนที่โฟตอน[ 81 ] [ 82 ] แนวทาง การนำทางเส้นทางล่าสุดสร้างการประมาณค่าของ การกระจายความน่าจะเป็นของ สนามแสงในแต่ละปริมาตรของพื้นที่ เพื่อให้สามารถสุ่มตัวอย่างเส้นทางได้อย่างมีประสิทธิภาพมากขึ้น[ 82 ]

ด้วยการรวมการลดสัญญาณรบกวนและการเร่งความเร็วการติดตามรังสีด้วยฮาร์ดแวร์ ทำให้ตอนนี้สามารถใช้การติดตามเส้นทางสำหรับการเรนเดอร์แบบเรียลไทม์ได้ เนื่องจากข้อจำกัดด้านประสิทธิภาพ อาจมีการรวมเทคนิคที่มีอคติ เช่น แคชความสว่างการสุ่มตัวอย่างอ่างเก็บน้ำเชิงพื้นที่และเวลา (ReSTIR) มีจุดมุ่งหมายเพื่อปรับปรุงคุณภาพของการติดตามเส้นทางแบบเรียลไทม์และอนุญาตให้มีแสงที่ซับซ้อนมากขึ้นโดยการใช้ตัวอย่าง (เส้นทาง) จากเฟรมก่อนหน้าและพิกเซลที่อยู่ติดกันซ้ำ[ 83 ] : 16.2.4 [ 84 ]

การเรียนรู้ของเครื่อง

นับตั้งแต่ปี 2546 เทคนิค การเรียนรู้ของเครื่อง (ML) ถูกนำมาใช้ในด้านอื่นๆ ของกราฟิกคอมพิวเตอร์เช่นการสังเคราะห์พื้นผิวการปรับพื้นผิวให้เข้ากับกลุ่มจุดและการปรับเส้นโค้งให้เข้ากับข้อมูลการจับการเคลื่อนไหว[ 85 ]การใช้ ML สำหรับการเรนเดอร์ขยายตัวมากขึ้นเมื่อมีGPUที่สามารถประเมินเครือข่ายประสาท (โดยเฉพาะ เครือข่ายประสาทแบบคอนโวลูชัน ) ได้อย่างรวดเร็ว

โครงข่ายประสาทเทียมและแบบจำลองส่วนผสมเกาส์เซียนถูกนำมาใช้ร่วมกับเทคนิคการเรนเดอร์ เช่นการติดตามเส้นทางเพื่อเข้ารหัสฟังก์ชันการกระจายการสะท้อนแบบสองทิศทาง (BRDF) หรือเพื่อเข้ารหัสความสว่าง ที่แคช ไว้ที่จุดต่างๆ ในอวกาศ (เพื่อเร่งความเร็วในการเรนเดอร์แบบมีอคติหรือเพื่อนำทางเส้นทาง) ฟิลด์ความสว่างของโครงข่ายประสาทเทียม (NeRF) ใช้แนวทางหลังนี้อย่างสุดขั้ว โดยเข้ารหัสความสว่างที่ทุกจุดในปริมาตร และใช้การประเมินค่าประมาณนี้เป็นวิธีการเรนเดอร์หลัก[ 86 ] : 16.3.2

หนึ่งในการประยุกต์ใช้การเรียนรู้ของเครื่องในการเรนเดอร์ที่ใช้กันอย่างแพร่หลายที่สุดคือการลดสัญญาณรบกวนของภาพที่ได้จากการติดตามเส้นทาง (ในทางปฏิบัติ การติดตามเส้นทางส่วนใหญ่ในปัจจุบันมักใช้ตัวลดสัญญาณรบกวนดังกล่าว) เครือข่ายประสาทเทียมที่ฝึกฝนบนคู่ของภาพที่มีสัญญาณรบกวนและสัญญาณรบกวนต่ำ (หรือบางครั้งคู่ของภาพที่มีสัญญาณรบกวนที่ไม่สัมพันธ์กัน) สามารถใช้ข้อมูลเช่นค่าปกติ ของพื้นผิว และ ค่า อัลเบโดนอกเหนือจากภาพที่เรนเดอร์แล้ว เพื่อลดการเบลอหรือสิ่งแปลกปลอม และรักษาพื้นผิว และมีประสิทธิภาพในการกำจัดพิกเซลสว่างที่กระจัดกระจายที่เรียกว่า "หิ่งห้อย" ซึ่งมักเกิดขึ้นในการติดตามเส้นทาง ตัวลดสัญญาณรบกวนที่เชี่ยวชาญสำหรับการเรนเดอร์แบบเรียลไทม์สามารถทำงานได้ด้วยจำนวนตัวอย่างที่ต่ำมากและปรับปรุงความสอดคล้องเชิงเวลาเพื่อลดการกระพริบ[ 86 ] : 16.3.2 [ 14 ] : 26.5

การเร่งความเร็วฮาร์ดแวร์

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

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

ประวัติศาสตร์

ในยุคของจอภาพเวกเตอร์ (เรียกอีกอย่างว่าจอแสดงผลแบบเขียนด้วยลายมือ ) หน่วยประมวลผลการแสดงผล (DPU) คือCPUหรือโคโปรเซสเซอร์ เฉพาะ ที่รักษาลิสต์ขององค์ประกอบภาพและวาดใหม่บนหน้าจออย่างต่อเนื่องโดยการควบคุมลำแสงอิเล็กตรอน DPU ขั้นสูง เช่นLine Drawing System-1ของEvans & Sutherland (และรุ่นต่อมาที่ผลิตในช่วงทศวรรษ 1980) ได้รวมคุณสมบัติการแปลงพิกัด 3 มิติเพื่อเร่งการเรนเดอร์ภาพโครงร่างเส้นลวด [ 21 ] : 93–94, 404–421 [ 87 ] Evans & Sutherland ยังได้สร้าง ระบบฉายภาพ ท้องฟ้าจำลองDigistarซึ่งเป็นจอแสดงผลเวกเตอร์ที่สามารถเรนเดอร์ได้ทั้งดาวและกราฟิกโครงร่างเส้นลวด (Digistar และ Digistar II ที่ใช้เวกเตอร์ถูกใช้ในท้องฟ้าจำลองหลายแห่ง และบางแห่งอาจยังคงใช้งานอยู่) [ 88 ] [ 89 ] [ 90 ]ต้นแบบ Digistar ถูกใช้สำหรับการเรนเดอร์ภาพดวงดาว 3 มิติสำหรับภาพยนตร์เรื่องStar Trek II: The Wrath of Khanซึ่งเป็นหนึ่งในลำดับภาพกราฟิกคอมพิวเตอร์ 3 มิติชุดแรกๆ ที่เคยเห็นในภาพยนตร์สารคดี[ 91 ]

การเรนเดอร์กราฟิก 3 มิติแบบแรเงาในช่วงทศวรรษ 1970 และต้นทศวรรษ 1980 มักจะถูกนำไปใช้บนคอมพิวเตอร์ทั่วไป เช่นPDP-10ที่นักวิจัยในมหาวิทยาลัยยูทาห์ใช้[ 92 ] [ 54 ]การเร่งความเร็วโดยใช้ฮาร์ดแวร์เฉพาะทางนั้นทำได้ยาก เนื่องจากเกี่ยวข้องกับขั้นตอนที่ซับซ้อนหลายขั้นตอน ซึ่งต้องใช้การกำหนดที่อยู่ข้อมูล การตัดสินใจ และความสามารถในการคำนวณ ซึ่งโดยทั่วไปมีให้เฉพาะ CPU เท่านั้น (แม้ว่าจะมีการเสนอวงจรเฉพาะเพื่อเร่งความเร็วการทำงานบางอย่างก็ตาม[ 92 ] ) บางครั้งมีการใช้ ซูเปอร์คอมพิวเตอร์หรือคอมพิวเตอร์มัลติ CPU หรือคลัสเตอร์ที่ออกแบบมาเป็นพิเศษสำหรับการติดตามรังสี[ 57 ]ในปี 1981 เจมส์ เอช. คลาร์กและมาร์ค ฮันนาห์ได้ออกแบบ Geometry Engine ซึ่งเป็น ชิป VLSIสำหรับดำเนินการบางขั้นตอนของไปป์ไลน์การแรสเตอร์ไรเซชัน 3 มิติ และก่อตั้งบริษัทSilicon Graphics (SGI) เพื่อทำการตลาดเทคโนโลยีนี้[ 93 ] [ 94 ]

คอมพิวเตอร์ส่วนบุคคลและเครื่องเล่นเกมในช่วงทศวรรษ 1980 มีหน่วยประมวล ผลกราฟิก ที่สามารถเลื่อนและเติมพื้นที่แสดงผล รวมถึงวาดสไปรต์และเส้นได้ แม้ว่าจะไม่เหมาะสำหรับการเรนเดอร์ภาพที่สมจริงก็ตาม[ 95 ] [ 96 ]ในช่วงปลายทศวรรษ 1980 การ์ดกราฟิกสำหรับพีซีและเกมอาร์เคด ที่มีการเร่งความเร็วการเรนเดอร์ 3 มิติเริ่มปรากฏขึ้น และในทศวรรษ 1990 เทคโนโลยีดังกล่าวก็กลายเป็นเรื่องธรรมดา ปัจจุบัน แม้แต่ โปรเซสเซอร์มือถือที่มีกำลังไฟต่ำก็มักจะรวมคุณสมบัติการเร่งความเร็วของกราฟิก 3 มิติไว้ด้วย[ 93 ] [ 97 ]

จีพียู

ตัวเร่งกราฟิก 3 มิติในช่วงทศวรรษ 1990 ได้พัฒนามาเป็น GPU ในปัจจุบัน GPU เป็นโปรเซสเซอร์อเนกประสงค์เช่นเดียวกับCPUแต่ได้รับการออกแบบมาสำหรับงานที่สามารถแบ่งออกเป็นงานย่อยขนาดเล็กที่คล้ายกันและส่วนใหญ่เป็นอิสระ (เช่น การเรนเดอร์พิกเซลแต่ละพิกเซล) และดำเนินการแบบขนานซึ่งหมายความว่า GPU สามารถเร่งความเร็วอัลกอริทึมการเรนเดอร์ใด ๆ ที่สามารถแบ่งออกเป็นงานย่อยในลักษณะนี้ได้ ตรงกันข้ามกับตัวเร่ง 3 มิติในช่วงทศวรรษ 1990 ซึ่งได้รับการออกแบบมาเพื่อเร่งความเร็วอัลกอริทึมการแรสเตอร์เฉพาะและเอฟเฟกต์การแรเงาและแสงแบบง่ายเท่านั้น (แม้ว่า จะสามารถใช้ เทคนิคเพื่อดำเนินการคำนวณทั่วไปได้มากขึ้นก็ตาม) [ 8 ] : ch3 [ 98 ]

เนื่องจากต้นกำเนิดของ GPU โดยทั่วไปจึงยังคงให้การเร่งความเร็วฮาร์ดแวร์เฉพาะทางสำหรับบางขั้นตอนของไปป์ไลน์ การแรสเตอร์แบบ 3 มิติแบบดั้งเดิม รวมถึงการลบพื้นผิวที่ซ่อนอยู่โดยใช้บัฟเฟอร์ zและการแมปพื้นผิวด้วยmipmapsแต่คุณสมบัติเหล่านี้ไม่ได้ถูกใช้เสมอไป[ 8 ] : ch3 GPU รุ่นใหม่ๆ มีคุณสมบัติในการเร่งความเร็วการค้นหาจุดตัดของรังสีกับลำดับชั้นปริมาตรขอบเขตเพื่อช่วยเร่งความเร็วการติดตามรังสีและการติดตามเส้นทาง ทุกรูปแบบ [ 59 ]รวมถึง คุณสมบัติการเร่งความเร็ว เครือข่ายประสาทซึ่งบางครั้งมีประโยชน์สำหรับการเรนเดอร์[ 99 ]

โดยทั่วไป GPU จะถูกรวมเข้ากับระบบหน่วยความจำที่มีแบนด์วิดท์สูงเพื่อรองรับความต้องการแบนด์วิดท์ ในการอ่านและเขียนสำหรับการเรนเดอร์แบบเรียลไทม์ที่มีความละเอียดสูง โดยเฉพาะอย่างยิ่งเมื่อต้องใช้หลายรอบในการเรนเดอร์เฟรม อย่างไรก็ตาม ความหน่วง ของหน่วยความจำ อาจสูงกว่าบน CPU ซึ่งอาจเป็นปัญหาหากเส้นทางวิกฤตในอัลกอริทึมเกี่ยวข้องกับการเข้าถึงหน่วยความจำจำนวนมาก การออกแบบ GPU ยอมรับความหน่วงสูงว่าเป็นสิ่งที่หลีกเลี่ยงไม่ได้ (ส่วนหนึ่งเป็นเพราะเธรด จำนวนมาก ใช้บัสหน่วยความจำ ร่วมกัน ) และพยายาม "ซ่อน" ความหน่วงนั้นโดยการสลับระหว่างเธรดอย่างมีประสิทธิภาพ เพื่อให้เธรดอื่นสามารถทำการคำนวณได้ในขณะที่เธรดแรกกำลังรอให้การอ่านหรือเขียนเสร็จสมบูรณ์[ 8 ] : ch3 [ 100 ] [ 101 ]

อัลกอริทึมการเรนเดอร์จะทำงานได้อย่างมีประสิทธิภาพบน GPU ก็ต่อเมื่อสามารถนำไปใช้โดยใช้กลุ่มเธรดขนาดเล็กที่ดำเนินการส่วนใหญ่เหมือนกัน ตัวอย่างเช่น โค้ดที่ตรงตามข้อกำหนดนี้: เมื่อเรนเดอร์พิกเซลสี่เหลี่ยมเล็กๆ ใน ภาพ เรย์เทรซ แบบง่ายๆ เธรดทั้งหมดมักจะตัดกับรังสีของวัตถุเดียวกันและทำการคำนวณแสงแบบเดียวกัน ด้วยเหตุผลด้านประสิทธิภาพและสถาปัตยกรรม GPU จะรันกลุ่มเธรดประมาณ 16-64 เธรดที่เรียกว่าwarpsหรือwavefrontsพร้อมกัน (เธรดทั้งหมดในกลุ่มจะดำเนินการคำสั่งเดียวกันในเวลาเดียวกัน) หากเธรดทั้งหมดในกลุ่มไม่จำเป็นต้องรันบล็อกโค้ดเฉพาะ (เนื่องจากเงื่อนไข) เธรดบางส่วนจะไม่ได้ทำงาน หรือผลลัพธ์ของการคำนวณจะถูกทิ้ง ทำให้ประสิทธิภาพลดลง[ 8 ] : ch3 [ 101 ]

การเรนเดอร์ฮาร์ดแวร์และซอฟต์แวร์

ในอดีต คำว่าการเรนเดอร์ด้วยฮาร์ดแวร์ (อาจเป็นคำย่อของ "การเรนเดอร์ที่เร่งด้วยฮาร์ดแวร์" หรือ "การเรนเดอร์ที่ใช้ฮาร์ดแวร์ช่วย") บางครั้งถูกใช้เพื่อหมายถึงการเรนเดอร์โดยใช้ไปป์ไลน์การแรสเตอร์ แบบเร่งด้วยฮาร์ดแวร์ (โดยทั่วไปสำหรับการเรนเดอร์แบบเรียลไทม์ ) [ 67 ] : 243, 249, 284, 324 ในทางตรงกันข้าม การเรนเดอร์ด้วยซอฟต์แวร์หมายถึงการเรนเดอร์แบบออฟไลน์โดยใช้ซอฟต์แวร์ที่ไม่ถูกจำกัดด้วยความสามารถของฮาร์ดแวร์กราฟิก และสามารถใช้เทคนิคที่สมจริงและมีคุณภาพสูงกว่าได้[ 6 ] : 1.5 ทั้งฮาร์ดแวร์และซอฟต์แวร์มีการพัฒนาขึ้น และถึงแม้ว่าคำศัพท์เหล่านี้ยังคงถูกใช้ แต่ความหมายของคำศัพท์เหล่านี้อาจขึ้นอยู่กับบริบทในปัจจุบัน

เมื่อ มีการเปิด ตัว OpenGLและDirect3Dในช่วงทศวรรษ 1990 มีความจำเป็นต้องใช้API เหล่านี้ บนคอมพิวเตอร์ที่ไม่มีการเร่งความเร็วฮาร์ดแวร์สำหรับกราฟิก 3 มิติ การใช้งานการเรนเดอร์แบบ "สำรอง" จึงถูกจัดเตรียมไว้ซึ่งไม่จำเป็นต้องใช้ฮาร์ดแวร์พิเศษ และบางครั้งสิ่งเหล่านี้เรียกว่า "ตัวเรนเดอร์ซอฟต์แวร์" (ปัจจุบันการเร่งความเร็วฮาร์ดแวร์มีให้ใช้งานเกือบตลอดเวลา และ การใช้งานที่ใช้ CPUเท่านั้นเหล่านี้ส่วนใหญ่ใช้สำหรับการทดสอบ) [ 102 ] : Ch2,13 เมื่อไม่นานมานี้ "การเรนเดอร์ซอฟต์แวร์" อาจหมายถึงการเรนเดอร์ที่ไม่ใช้ API กราฟิก เช่น OpenGL, Metal , Direct3D หรือVulkan [ 103 ] : Intr .

ประเภทของเรนเดอร์ที่ในอดีตอาจเรียกว่า "ซอฟต์แวร์เรนเดอร์" (เช่น เรนเดอร์ แบบ path tracingที่ใช้สำหรับการเรนเดอร์แบบออฟไลน์สำหรับภาพยนตร์) ปัจจุบันมักใช้การ เร่งความเร็ว GPUโดยส่วนใหญ่ผ่าน API เช่นCUDAหรือOpenCLซึ่งไม่ได้จำเพาะเจาะจงกับกราฟิก เนื่องจาก API เหล่านี้อนุญาตให้รัน โค้ด C++บน GPU ได้ จึงทำให้สามารถรันโค้ดเรนเดอร์เดียวกันได้ทั้งบน CPU หรือ GPU [ 73 ]

ลำดับเหตุการณ์ของอัลกอริธึมและเทคนิค

ต่อไปนี้เป็นไทม์ไลน์คร่าวๆ ของเทคนิคการเรนเดอร์ที่กล่าวถึงบ่อยๆ รวมถึงหัวข้อการวิจัยในปัจจุบัน โปรดทราบว่าแม้ในกรณีที่แนวคิดถูกกล่าวถึงในเอกสารเฉพาะ ก็มักจะมีนักวิจัยหรือทีมหลายทีมทำงานในด้านเดียวกัน (รวมถึงงานที่เกี่ยวข้องก่อนหน้านี้) เมื่อมีการเสนอวิธีการครั้งแรก มักจะไม่มีประสิทธิภาพมากนัก และต้องมีการวิจัยเพิ่มเติมและความพยายามในทางปฏิบัติเพื่อเปลี่ยนให้เป็นเทคนิคที่มีประโยชน์[ 10 ] : 887

รายชื่อนี้เน้นที่งานวิจัยทางวิชาการและไม่รวมถึงฮาร์ดแวร์ (สำหรับประวัติเพิ่มเติม โปรดดูที่#ลิงก์ภายนอกรวมถึงกราฟิกคอมพิวเตอร์#ประวัติศาสตร์และยุคทองของวิดีโอเกมอาร์เคด#เทคโนโลยี )

ดูเพิ่มเติม

อ่านเพิ่มเติม

หนังสือล่าสุด

  • อาเคนีน-โมลเลอร์, โทมัส; เฮนส์, เอริค; ฮอฟฟ์แมน, เนตี้; เพสเช, แองเจโล; อิวานิกกี้, มิคาล; ฮิลแลร์, เซบาสเตียน (2018) การเรนเดอร์แบบเรียลไทม์ (ฉบับที่ 4) โบคา ราตัน ฟลอริดา: AK Peters/CRC Press ไอเอสบีเอ็น 978-1138627000.
  • Pharr, Matt ; Jakob, Wenzel; Humphreys, Greg (28 มีนาคม 2023). การเรนเดอร์ภาพตามหลักฟิสิกส์: จากทฤษฎีสู่การนำไปใช้ (ฉบับที่ 4). เคมบริดจ์, แมสซาชูเซตส์: สำนักพิมพ์ MIT. ISBN 978-0262048026.
  • ดูเทร, ฟิลิป; บาลา, กวิตา; เบคาร์ต, ฟิลิปป์ (2015) การส่องสว่างระดับโลกขั้นสูง (ฉบับที่ 2) เอเค ปีเตอร์ส/สำนักพิมพ์ CRC ไอเอสบีเอ็น 978-1-4987-8562-4.
  • Hughes, John F.; Van Dam, Andries ; McGuire, Morgan; Sklar, David F.; Foley, James D .; Feiner, Steven K.; Akeley, Kurt (2014). กราฟิกคอมพิวเตอร์: หลักการและการปฏิบัติ (ฉบับที่ 3). Addison-Wesley. ISBN 978-0-321-39952-6.
  • มาร์ชเนอร์, สตีฟ; เชอร์ลีย์, ปีเตอร์ (2022) พื้นฐานของคอมพิวเตอร์กราฟิกส์ (ฉบับที่ 5) ซีอาร์ซี เพรส. ไอเอสบีเอ็น 978-1-003-05033-9.

หนังสือเก่า

  • ราฆาวาจารี, สัตตี (2005). การเรนเดอร์สำหรับผู้เริ่มต้น . สำนักพิมพ์โฟกัล. ISBN 0-240-51935-3.
  • กลาสเนอร์, แอนดรูว์ เอส. (2011) [1995]. หลักการสังเคราะห์ภาพดิจิทัล (PDF) . 1.0.1. สำนักพิมพ์มอร์แกน คอฟแมนน์ อิงค์ISBN 978-1-55860-276-2. เก็บถาวร(PDF)จากต้นฉบับเมื่อ 2024-01-27 . เรียกดูเมื่อ2024-01-27 .
  • Glassner, Andrew S. (11 เมษายน 2562) [1989]. บทนำเกี่ยวกับการติดตามรังสี (PDF) . 1.3. สำนักพิมพ์วิชาการ. ISBN 978-0-12-286160-4. เก็บถาวร(PDF)จากต้นฉบับเมื่อวันที่ 27 มกราคม 2024 . เรียกดูเมื่อวันที่ 27 มกราคม 2024 .
  • โคเฮน, ไมเคิล เอฟ. ; วอลเลซ, จอห์น อาร์. (1993). ความสว่างของรังสีและการสังเคราะห์ภาพที่สมจริง (PDF) . สำนักพิมพ์ Academic Press. ISBN 0-12-178270-0.

การเรนเดอร์ที่ไม่ใช่ภาพเสมือนจริง

  • กูช, บรูซ; กูช, เอมี (2001). การเรนเดอร์ที่ไม่ใช่ภาพเสมือนจริง . เอเค ปีเตอร์ส. ISBN 978-1-56881-133-8.
  • สโตรท็อตต์, โทมัส; ชเลชท์เว็ก, สเตฟาน (2002) คอมพิวเตอร์กราฟิก ที่ไม่สมจริงมอร์แกน คอฟมันน์. ไอเอสบีเอ็น 978-1-55860-787-3.

บทเรียนออนไลน์ (มีจำหน่ายในรูปแบบหนังสือด้วย)

  • เดอ ไวรีส์, โจอี้. "เรียนรู้ OpenGL " Learnopengl.com
  • Shirley, Peter; Black, Trevor D.; Hollasch, Steve. "การสร้างภาพด้วยรังสีเรย์ในวันหยุดสุดสัปดาห์เดียว (ชุด)" . raytracing.github.io .
  • vintage3d.org "เส้นทางสู่โลก 3 มิติที่บ้าน"  – ประวัติศาสตร์โดยละเอียดของฮาร์ดแวร์กราฟิกคอมพิวเตอร์ รวมถึงการวิจัย การค้า และวิดีโอเกมและเครื่องเล่นเกม
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Rendering_(computer_graphics)&oldid=1356575959 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ การเรนเดอร์ (กราฟิกคอมพิวเตอร์)

การเรนเดอร์คือกระบวนการสร้างภาพจากข้อมูลอินพุต เช่นโมเดล 3 มิติคำว่า "เรนเดอร์" (ในความหมายหนึ่ง) เดิมหมายถึงงานที่ศิลปินทำเมื่อวาดภาพสิ่งที่เป็นจริงหรือจินตนาการ...

การเรนเดอร์ภาพเสมือนจริง

งานวิจัยด้าน กราฟิกคอมพิวเตอร์ ส่วนใหญ่มุ่งเน้นไปที่การสร้างภาพที่คล้ายกับภาพถ่าย เทคนิคพื้นฐานที่ทำให้สิ่งนี้เป็นไปได้ถูกคิดค้นขึ้นในช่วงทศวรรษ 1980 แต่ในช่วงปลายทศวรรษนั้น การสร้างภาพที่เหมือนจริงสำหรับฉากที่ซับซ้อนยังคงถือเป็นเป้าหมายที่ห่างไกล [ 13 ] : x...

รูปแบบอื่นๆ ของการเรนเดอร์ภาพ 3 มิติ

สำหรับแอปพลิเคชันบางอย่าง (รวมถึงขั้นตอนเริ่มต้นของ การสร้างแบบจำลอง 3 มิติ ) รูปแบบการเรนเดอร์ที่เรียบง่าย เช่น การเรนเดอร์แบบโครงร่างเส้นลวด อาจเหมาะสม โดยเฉพาะอย่างยิ่งเมื่อยังไม่ได้กำหนดรายละเอียดของวัสดุและพื้นผิว และทราบเพียงรูปร่างของวัตถุเท่านั้น [ 20...

การเรนเดอร์ 2 มิติ

ใน กราฟิกคอมพิวเตอร์ 2 มิติ ตำแหน่งและขนาดของรูปร่างจะถูกระบุโดยใช้ พิกัด 2 มิติ (x และ y) แทนที่จะเป็นพิกัด 3 มิติ (x, y และ z) API การเรนเดอร์ 2 มิติ มักใช้ระบบพิกัด ที่ไม่ขึ้นกับความละเอียด โดย วิวพอร์ต จะกำหนดวิธีการแปลงพิกัดเป็นดัชนี พิกเซล ที่เรียกว่า...