ปริมาณการแพร่กระจายแสง: การกรองแบบแอนไอโซทรอปิกของข้อมูลปริมาณ


9

ฉันได้ดำเนินการขยายพันธุ์แสง Cascaded เล่มอัลกอริทึม (ไม่มีแชโดว์อ้อมยัง) สำหรับแบบ real-time กระจายโลกสว่างรายละเอียดที่นี่และที่นี่ ใช้งานได้ดี แต่ฉันยังคงพยายามแก้ไขสิ่งประดิษฐ์โดยเฉพาะอย่างยิ่ง

สรุปสั้น ๆ

คุณสามารถข้ามสิ่งนี้ได้หากคุณรู้วิธีการทำงานของอัลกอริทึมแล้ว

อัลกอริธึมทำงานโดยการจัดเก็บข้อมูลแสงในรูปแบบของฮาร์โมนิกส์กลมในตาราง 3 มิติโดยเริ่มแรกข้อมูลในแต่ละเซลล์ของกริดมาจากการแสดงแผนที่เงาแบบขยาย ( แผนที่เงาสะท้อนแสง)) ที่มีสีและข้อมูลปกตินอกเหนือจากความลึก แนวคิดก็คือพิกเซลทั้งหมดที่มองเห็นโดยแหล่งกำเนิดแสงนั้นเป็นสาเหตุของการสะท้อนแสงทางอ้อมครั้งแรกดังนั้นคุณจึงจัดเก็บข้อมูลที่จำเป็นพร้อมกับบัฟเฟอร์ความลึกปกติที่คุณใช้สำหรับการทำแผนที่เงาและตัวอย่างข้อมูลทั้งหมดเพื่อเริ่มต้นตาราง 3D . ข้อมูลในตาราง 3 มิติจะถูกแพร่กระจายซ้ำ ๆ กัน (สำหรับการวนซ้ำแต่ละครั้ง) เผยแพร่ข้อมูลในเซลล์เดียวไปยังเพื่อนบ้านโดยตรงทั้งหมด 6 แห่ง (เหนือ, ล่าง, ซ้าย, ขวา, บน, ล่าง) เมื่อต้องการให้แสงฉากโดยใช้ข้อมูลในตารางคุณใช้การส่งผ่านหน้าจอแบบเต็มหน้าจอสำหรับแต่ละพิกเซลที่ผ่านการแรสเตอร์คุณมีตำแหน่งพื้นที่โลกของพื้นผิวที่มีการแรสเตอร์ (เช่นจาก G-Buffers ในการแรเงาแบบเลื่อน) ทราบว่าเซลของกริดหนึ่งพิกเซลบนหน้าจอเป็นของใคร

นี่เป็นการทำงานที่ดีสำหรับส่วนใหญ่นี่คือภาพสองภาพที่ไม่มีการจำลอง GI และเพียงแค่คำศัพท์ล้อมรอบฮาร์ดโค้ดและถัดจากภาพด้วยอัลกอริทึม LPV สังเกตเห็นการสะท้อนสีบนพื้นผิวรายละเอียดเชิงลึกที่ดีขึ้น ฯลฯ

ป้อนคำอธิบายรูปภาพที่นี่

ปัญหา

เมื่อค้นหาเซลล์ในช่วงแสงการแก้ไข trilinear (โดยใช้ฟิลเตอร์พื้นผิวของฮาร์ดแวร์) จะถูกใช้เพื่อสอดแทรกข้อมูลระหว่างจุดกึ่งกลางของเซลล์เซลล์ที่อยู่ใกล้เคียงและการประสานงานพื้นผิวที่เกิดขึ้นจริงได้อย่างราบรื่น โดยพื้นฐานแล้วการแก้ไขนี้เลียนแบบการแพร่กระจายของข้อมูลแสงที่ศูนย์กลางของเซลล์ไปยังพิกเซลคอนกรีตรอบ ๆ จุดศูนย์กลางที่มีการค้นหาข้อมูล นี่เป็นสิ่งจำเป็นเพราะมิฉะนั้นแสงจะดูหยาบและน่าเกลียด อย่างไรก็ตามเนื่องจากการแก้ไข trilinear ไม่ได้คำนึงถึงทิศทางของการแพร่กระจายของแสงของข้อมูลแสงที่เข้ารหัสในเซลล์ (จำไว้ว่ามันอยู่ในทรงกลมประสานกัน) แสงสามารถแพร่กระจายอย่างไม่ถูกต้องไปยังพิกเซลค้นหา ตัวอย่างเช่นหากความเปล่งปลั่งที่เข้ารหัสในเซลล์แพร่กระจายสู่ (1,0,0) เท่านั้น ("

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

ป้อนคำอธิบายรูปภาพที่นี่

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

คำถามจริง

ผู้เขียนแนะนำรูปแบบของตัวกรอง anisotropic ด้วยตนเองเพื่อแก้ไขปัญหานี้ เขาให้ความกระจ่างใส (ฉันสมมติว่าค่าสัมประสิทธิ์ SH สุ่มตัวอย่างจากเซลล์ปัจจุบัน) ไปยังทิศทางของพื้นผิวปกติ n เป็น:

ป้อนคำอธิบายรูปภาพที่นี่

และรัฐต่างๆ

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

คำถามของฉัน:

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

แล้วการไล่ระดับสีนั้นจะเปลี่ยนวิธีการใช้แสงตัวอย่างจากเซลล์ไปยังพื้นผิวได้อย่างไร? ผู้เขียนเพิ่งเขียน "การเปรียบเทียบอนุพันธ์ทิศทางความกระจ่างใสกับทิศทางความกระจ่างใส" แต่นี่ค่อนข้างคลุมเครือ

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

คำตอบ:


4

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

cฟังก์ชั่นไม่จำเป็นต้องเป็นสิ่งที่แม่นยำเพียงแค่ความคิดของเช่นความสดชื่นดังนั้นเพียงแค่ประเมิน SH โดยใช้ปกติในปัจจุบันของคุณ

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

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

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

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

นอกจากนี้บาง บริษัท (เช่น Square Enix) ใช้กำแพง Blocker ที่ออกแบบด้วยตนเองเพื่อฆ่ารอยรั่วเช่นปริมาณเรขาคณิตควรให้คุณ (ปริมาตรรูปทรงเรขาคณิตช่วยลดการรั่วไหล แต่การย้อนกลับ RSM เพื่อทำให้ฉากเป็นส่วนเกินไปในกรณีส่วนใหญ่และสร้างนามแฝงที่ระดับเซลล์ LPV ซึ่งทำให้การรั่วไหลดูแย่ยิ่งขึ้นเนื่องจากความเข้มแตกต่างกันอย่างมาก)

คุณสามารถดูดลงและพยายามที่จะลดปัญหาโดยให้คำสุดท้ายที่แข็งแกร่งน้อยกว่า LPV ในแสงทางอ้อมขั้นสุดท้ายใช้คำคงที่ที่มีน้ำหนัก (0.5?) และ LPV อาจมีส่วนร่วม 0.5 ทางอ้อมที่เหลือ เบา. ลองปรับใช้โวลุ่มเรขาคณิตก็จะช่วยลดปัญหาได้ และในที่สุดความแตกต่างกลาง


เป็นการปรับปรุงมากกว่า 50% ของค่าคงที่รอบด้านเทคนิคที่เรียกว่า "ambient BRDF" (โดย tri-Ace) สามารถใช้ได้
v.oddou
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.