1 puan yazan GN⁺ 2023-10-24 | 1 yorum | WhatsApp'ta paylaş
  • %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_INTEGRATION makrosu eklendi
  • Bu makro, yarımküre integrasyonunun '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

 
GN⁺ 2023-10-24
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.

    • Şimdiye kadar gördüğüm çoğu BRDF, yazıda belirtildiği gibi pürüzlülük arttıkça daha koyulaşıyor.
      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.

    • Işın izleme hakkında gerçekten en temel düzeyde bilgim olmasına rağmen yazıyı takip edebildim. Yazı açık, ilgi çekici ve iyi yazılmıştı.
  • 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.

    • Adı, klasik kara cisim ışıması deneylerinde fırın, ocak veya yüksek sıcaklık fırını kullanılmasından geliyor.
      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.
    • Çünkü sıcak bir fırının içi, testte simüle edildiği gibi tekdüze aydınlatmayla parlar.
    • Tekdüze beyaz ışıkla aydınlatılan bir ortamın içindeki duruma bakan bir test olduğu için, çok sıcak bir fırın imgesini çağrıştıran bir hatırlatıcı ad sayılır.
  • 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.

    • Başta griyle başlıyor, kürenin konturu görünüyor, ardından arka plan fade-in oluyor. Kırmızı, mavi ve beyaz küreler ortadaki gri/beyaz kürenin etrafında belirip sonra sahne yeniden griye kayboluyor.
      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.
    • WebGL gerekiyor olabilir. Tarayıcıda WebGL'in açık olup olmadığını kontrol edebilir misiniz?