White Furnace Testi
(lousodrome.net)- %100 yansıtıcı nesneler, düzgün çevresel aydınlatma altında arka plandan ayırt edilememelidir; bu özellik sayesinde bir renderer'ın fiziksel tutarlılığı hızlıca doğrulanabilir
- Mat, ayna ya da ikisinin arasındaki bir malzeme olsa bile, tam yansıtıcıysa ve düzgün biçimde aydınlatılıyorsa çevreyle aynı görünmeli, yani ortadan kaybolmuş gibi görünmelidir
- Taze karın albedosu %90–98 seviyesine çıkabildiğinden, bulutlu hava veya sisle birleştiğinde gökyüzü ile karın ayırt edilemediği bir whiteout oluşabilir
- Bu test, BRDF'nin enerji kaybedip kaybetmediğini ya da enerji üretip üretmediğini kontrol eder; gri bir ortamda aşırı yansıma enerjisi daha parlak görünerek hataların bulunmasını kolaylaştırır
- Saf beyaz Lambertian BRDF basit ve enerji korunumu açısından nettir; bu yüzden örnekleme dağılımı, ağırlıklar, PDF,
πveya 2 katsayısının eksik olması gibi integrasyon hatalarını ortaya çıkaran temel bir kontrol olarak kullanışlıdır
Düzgün ışıkta nesnenin neden kaybolması gerekir
- %100 yansıtıcı bir nesne düzgün bir ortam tarafından aydınlatıldığında, nesne arka plandan ayırt edilememelidir
- Bu özellik, nesnenin mat mı, ayna gibi mi yansıttığına ya da bu ikisinin arasında bir malzeme olduğuna bakılmaksızın geçerlidir
- Render sonucunda nesne görünmüyorsa, bu matematiksel olarak beklenen sonuçla uyuştuğunun bir işaretidir
Gerçek hayattaki benzer durum: whiteout
- Taze karın albedosu %90–98 seviyesine kadar çıkabilir ve neredeyse tam beyaza yaklaşabilir
- Bulutlu hava ya da sis eklendiğinde, karla gökyüzünün ayırt edilemediği bir whiteout durumu oluşur
- Bu durumda her yön tekdüze beyazmış gibi görünür; hemen önünüzdeki eğimi bile gözle ayırt etmek zor olabilir
BRDF'de enerji korunumunu doğrulama
- White furnace testi, bir BRDF'nin enerji korunumunu sağlayıp sağlamadığını kontrol etmek için sık kullanılır
- Esas mesele, yansıma sürecinde enerjinin kaybolup kaybolmadığını ya da yeni enerji üretilip üretilmediğini doğrulamaktır
- Örneğin roughness arttıkça malzemenin daha koyu görünmesi gibi sorunlar veya karşılıklı yansımaların artık ihmal edilemeyeceği durumlar bu şekilde tespit edilebilir
- Beyaz ortamın yanı sıra gri ortam da faydalıdır
- Yansıma enerjisi fazlaysa, çevreden daha parlak görünerek hata açığa çıkar
Renderer integrasyon uygulamasını denetleme yöntemi
- White furnace testi, yalnızca BRDF'nin kendisini değil, renderer'ın integrasyon kısmını denetlerken de etkilidir
- Albedosu %100 olan Lambertian BRDF, enerji korunumunu eksiksiz sağlar ve uygulaması da basittir; bu yüzden renderer implementasyonundaki hataları ortaya çıkarmak için uygundur
- Sorun çıkabilecek noktalar çoktur
- Örnekleme dağılımı
- Örnek ağırlıkları
- PDF hesabı
πveya 2 gibi katsayıların eksik olması
- Bu tür hatalar, sonuç görüntüsü hâlâ makul görünebildiği için tespit edilmesi zor olabilir
Başarısızlık örnekleri ve debug amaçlı kullanım
- Bir path tracer veya onun türevlerini yazarken, pre-convolved environment map üretirken ya da farklı örnekleme dağılımlarını denerken, önce saf beyaz Lambertian BRDF ile white furnace testini geçmek yararlı bir yaklaşımdır
- Bu aşama geçildikten sonra implementasyona belli ölçüde güvenilip BRDF'nin kendisi test edilebilir
- Hacker News yorumlarından sonra ShaderToy örneğine, testin başarısız olmasını gösteren
SIMULATE_INCORRECT_INTEGRATIONmakrosu eklendi - Bu makro, yarımküre integrasyonunun
2π'ye karşılık geldiğini unutmak veya örnekleme dağılımını hesaba katmamak gibi hatalı integrasyon bug'larını taklit eder - Bug etkinleştirildiğinde küre doğru miktarda enerji yansıtamaz ve bu nedenle ekranda görünür hale gelir
1 yorum
Hacker News yorumları
Yakın zamanda learnopengl'in PBR eğitimini izleyerek fiziksel tabanlı bir renderer (PBR) geliştirdim, ancak beyaz fırın testini geçemedi.
Bu sayede uyguladığım matematiği pek de anlamadığımı fark ettim; yazarın söylediği gibi, π ya da 2'yi gelişigüzel çarpmakla sonuç tutmuyordu.
BRDF olan bir normal dağılımı oluşturan teorik mikro yüzeyler arasındaki karşılıklı yansımaları hesaba katan modeller de var ve bunlar daha iyi olsa da, onların bile bu testi olduğu gibi geçip geçmediğinden emin olmak zor.
Pratikte yaygın kullanılanların çoğu enerji kaybediyor; bunu telafi etmek için BRDF'nin üzerine lookup table bindirilerek kullanıldığı durumlar da olmuştu.
Bu yazının HN'in üst sıralarına çıkması ilginç. Aslında iki farklı fırın testi var; diğeri 0.5 emisyon ve 0.5 albedo koşulunda, gürültülü piksel hatası hariç sonucun 1.0 çıkması gereken test.
Uzun zaman önce https://graphics.stanford.edu/~boulos/papers/brdftog.pdf çalışmasında enerji korunumu ile veri yeniden üretilebilirliğini takas etmeyi, bunun karşılığında da karşılıklılıktan vazgeçmeyi denemişlerdi.
Sonuçta BRDF'den malzeme verilerini otomatik olarak eşleştirme konusunu kimse pek önemsemedi; ilgilenenler de simetrik ve yeterince korunumlu BSDF'leri daha çok tercih etti.
Sonraki araştırmaların çoğu da bu tarafı iyileştirmeye odaklandı; özellikle simetriyi bozduğunuzda çift yönlü yol izleme gibi teknikler epey tuhaflaşıyor.
Testin adında neden furnace geçtiğini merak ediyorum. Genel kavramı anlıyorum ama isim oldukça rastgele seçilmiş gibi geliyor; dayanağı olan bir ad mı merak ediyorum.
Burada da kavram benzer: Nesne, tekdüze bir yayım spektrumuna sahip bir boşluğun içinde hapsolmuş durumda. Yalnız bu durumda kara cisim değil, beyaz.
Tam da birkaç gün önce YouTube önerilerimde bu konuyu ele alan bir video çıktı; planlanan Blender 4.0 sürümünün içeriğiyle ilgiliydi.
BSDF'ye yeni Multiscatter GGX fonksiyonu ekleniyor; konuya çok daha derin giriyor ve bolca örnek gösteriyor.
https://www.youtube.com/watch?v=v6qXbV_Q7z4
Gömülü ShaderToy'un normalde nasıl görünmesi gerektiğini bilmiyorum. Oynat'a basıp beklesem de bir dakikadan uzun süre hiçbir şey olmuyor.
Başarısız testlerden birkaç ekran görüntüsü olsa yazı çok daha iyi olurdu.
Ardından kırmızı ve mavi küreler yeniden çıkıyor ve merkezdeki kürede yansıma benzeri bir şey görünüyor; ancak merkez küre arka planla “eriyip birleştiği” için küre olduğunu anlamak zorlaşıyor.