มองไปที่พื้นผิวโพรบแบบเบาดูเหมือนว่าแผนที่สภาพแวดล้อมที่พร่ามัว
อะไรคือความแตกต่างระหว่างทั้งสองกับวิธีการสอบสวนแสงและสิ่งที่เป็นประโยชน์จากการที่พร่ามัว?
มองไปที่พื้นผิวโพรบแบบเบาดูเหมือนว่าแผนที่สภาพแวดล้อมที่พร่ามัว
อะไรคือความแตกต่างระหว่างทั้งสองกับวิธีการสอบสวนแสงและสิ่งที่เป็นประโยชน์จากการที่พร่ามัว?
คำตอบ:
มีความหมายทั่วไปสองแบบที่แตกต่างกันของ "หัววัดแสง" ที่ฉันรู้ ทั้งสองเป็นตัวแทนของแสงรอบจุดเดียวในฉากคือสิ่งที่คุณจะเห็นรอบตัวคุณในทุกทิศทางถ้าคุณหดตัวลงจนมีขนาดเล็กและยืนตรงจุดนั้น
หนึ่งความหมายคือการเป็นตัวแทนกลมกลืนของแสงรอบจุด ฮาร์โมนิกส์ทรงกลมคือชุดของฟังก์ชั่นที่กำหนดเหนือโดเมนทรงกลมซึ่งคล้ายกับคลื่นไซน์ที่แกว่งไปมาจำนวนหนึ่งรอบ ๆ เส้นศูนย์สูตรและจากขั้วหนึ่งไปยังอีกขั้วหนึ่งบนทรงกลม
สามารถใช้ฮาร์มอนิกทรงกลมเพื่อสร้างฟังก์ชั่นทรงกลมที่เรียบและมีความละเอียดต่ำโดยการปรับและเพิ่มฮาร์มอนิกส์ทรงกลมจำนวนหนึ่ง - โดยปกติ 4 (รู้จักกันในแนวเส้นตรงระดับแรกหรือหนึ่งวง SH) หรือ 9 ( เรียกว่ากำลังสอง, สององศา, หรือสองวง SH) มีขนาดกะทัดรัดมากเพราะคุณต้องเก็บปัจจัยการปรับสเกลเท่านั้น ตัวอย่างเช่นสำหรับ SHR กำลังสองที่มีข้อมูล RGB คุณจะต้องใช้ค่า 9 * 3 = 27 ต่อการสอบสวนเท่านั้น ดังนั้น SH จึงมีขนาดกะทัดรัดมาก แต่ก็จำเป็นที่จะต้องนุ่มและพร่ามัวมาก ๆ เพื่อแสดงแสงรอบจุด เหมาะสำหรับการกระจายแสงและอาจมีความขรุขระสูง
สกรีนช็อตจากบล็อกของ Tech's Simonแสดงอาร์เรย์ของแสงโพรบ SH ที่เว้นระยะตลอดฉากแต่ละฉากแสดงแสงทางอ้อมที่ได้รับ ณ จุดนั้น:
ความหมายทั่วไปอื่น ๆ ในปัจจุบันของ "หัววัดแสง" คือแผนที่ลูกบาศก์สภาพแวดล้อมซึ่งระดับ mip ได้รับการเบลอล่วงหน้าไปยังส่วนขยายที่แตกต่างกันดังนั้นจึงสามารถนำมาใช้สำหรับแสงแบบเฉพาะที่มีระดับความขรุขระที่แตกต่างกัน ภาพจากบล็อกของ Seb Lagardeแสดงความคิดพื้นฐาน:
Mips ความละเอียดสูง (ทางซ้าย) ใช้สำหรับพื้นผิวที่มีความมันเงาสูงซึ่งคุณต้องการภาพสะท้อนที่มีรายละเอียดมาก ไปทางขวาระดับ mip ที่มีความละเอียดต่ำจะเบลอมากขึ้นและใช้สำหรับการสะท้อนจากพื้นผิวที่ขรุขระ ใน shader เมื่อสุ่มตัวอย่าง cubemap นี้คุณสามารถคำนวณระดับ mip ที่ร้องขอตามความหยาบของวัสดุและใช้ประโยชน์จากฮาร์ดแวร์ตัวกรอง trilinear
หัววัดแสงทั้งสองประเภทนี้ใช้ในกราฟิกแบบเรียลไทม์เพื่อให้แสงโดยประมาณใกล้เคียง ในขณะที่แสงโดยตรงสามารถคำนวณได้แบบเรียลไทม์ (หรืออย่างน้อยประมาณอย่างดีสำหรับไฟพื้นที่), แสงทางอ้อมมักจะยังคงอบใน preprocess ออฟไลน์เนื่องจากความซับซ้อนและค่าใช้จ่ายในการคำนวณ
ตามเนื้อผ้าผลลัพธ์ของกระบวนการอบจะเป็น lightmaps แต่ lightmaps ใช้สำหรับการกระจายแสงบนเรขาคณิตคงที่เท่านั้นและมันใช้หน่วยความจำจำนวนมากนอกเหนือจากนั้น การอบหัววัดแสง SH หลายอัน (คุณสามารถซื้อได้มากเนื่องจากมีขนาดกะทัดรัดมาก) บวกกับหัววัดแสง cubemap แบบโรยหน้าด้วย sparser ซึ่งจะช่วยให้คุณได้รับแสงทางอ้อมที่กระจายได้ดี พวกเขาเป็นตัวเลือกยอดนิยมในเกมวันนี้