PBR และ SSR ต่างกันอย่างไร


11

ฉันใหม่มากต่อการพัฒนาเกมและฉันพยายามเข้าใจถึงความแตกต่างระหว่าง Screen Space Reflection กับการแสดงผลทางกายภาพ

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

สำหรับ SSR โปรดแก้ไขให้ฉันด้วยถ้าฉันผิดมันเป็นวิธีที่แสงสะท้อนบนพื้นผิว

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

คำตอบ:


17

การแสดงผลตามร่างกาย

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

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

ตัวอย่างพงษ์แรเงาที่ใช้กันทั่วไปในเกม

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

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

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

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

ตัวอย่างของการเพิ่มการสะท้อนแสงที่มีค่าคงที่อัลเบโด้

ตัวอย่างนี้มาจากบทความMarmoset ที่อธิบายถึง PBR ที่แชร์โดยSyntac_

มีมากกว่าการเรนเดอร์ทางกายภาพมากกว่าการอนุรักษ์พลังงาน แต่นี่อาจเป็นสัญญาณที่บอกได้มากที่สุดว่าคุณกำลังทำงานกับระบบที่ใช้ร่างกาย

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

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

ตัวอย่างของฉากทดสอบการส่องสว่างระดับโลกทั่วไป

ภาพจากบทความนี้เกี่ยวกับการให้แสงสว่างระดับโลก

ภาพพื้นหลังสกรีน

ในขณะที่ PBR พยายามสร้างแบบจำลองวัสดุที่สะท้อนแสง แต่ ScreenSpace Reflection พยายามที่จะจับภาพสิ่งที่ถูกสะท้อนโดยเฉพาะสำหรับพื้นผิวที่มันวาวเหมือนกระจกฉันควรมองเห็นอะไรในการสะท้อน

นี่เป็นเทคนิคการเรนเดอร์ที่ค่อนข้างชัดเจนซึ่งอาจเข้าใจได้ชัดเจนที่สุดเมื่อเปรียบเทียบกับวิธีที่เกมเคยทำมาก่อน:

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

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

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

เลื่อนอธิบายการสะท้อนพื้นที่หน้าจอด้วยไดอะแกรมมุมมองด้านข้าง

นี่เป็นภาพนิ่งจากการนำเสนอ EA DICE เกี่ยวกับวิธีการของพวกเขาเพื่อสะท้อนในเครื่องยนต์

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

ตัวอย่างโครงการที่ใช้การสะท้อนหน้าจอ

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


ขอบคุณมากสำหรับคำตอบ นี่คือสิ่งที่ฉันอยากรู้
Kumaresan Sandran

สำหรับผู้ที่อยากรู้อยากเห็นมี 2015 กระดาษบนวิธีกึ่งขั้นสูง แต่ใช้งานง่ายในการแก้ปัญหา "ดูภาพสะท้อนของด้านล่างของก้อน" ปัญหา: เงยหน้าขึ้นมองกระดาษ: "Multi-Scale Global Illumination ใน Quantum Break"
Sirisian

1

พวกเขาไม่ได้เกี่ยวข้องกันจริงๆ

เอกสารนี้จาก Marmoset อธิบาย PBR ได้ดีโดยไม่ต้องใช้คณิตศาสตร์จำนวนมาก

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


1
เพิ่งมาที่นี่เพื่ออัปเดตลิงก์สำหรับทุกคนที่มาจากปี 2018 ... marmoset.co/posts/basic-theory-of-physically-based-rendering
sws

@sws ไชโยที่ปรับปรุงแล้ว
Syntac_
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.