top of page

Biased vs Unbiased Render

Güncelleme tarihi: 26 Kas 2019

Bu yazımızda az biraz gelişmiş bir meseleyi ele almaya çalışacağız. Resimli boyamalı kitap seven, okumaktan sıkılan arkadaşlara sessizce uzaklaşmalarını tavsiye ediyorum.


Günümüzde ışığın doğadaki davranışlarını birebir taklit etmek işlemci gücü açısından olanaksızdır. Daha önce bahsettiğimiz yansıma, kırılma, IOR, TIR, SSS, enerji transferleri (radiance) gibi birçok davranış ve nitelik fiziksel olarak doğaya uygun, yakın bir şekilde programlanabilir. Fakat böyle bir durumda 1px²'lik bir alanı render etmek yıllar sürebilir. Işığın mikro ölçekte sayısız kez yansıması ve her yansımada niceliklerinin ve bazen niteliklerinin değişmesi kuantum işlemcilerin de yetişemeyeceği bir durumdur ve bu, görsel efektlerin uygulanmasını imkansız kılar.


Bu noktada daha önce de bahsettiğimiz Predictable vs Accurate meselesi yine karşımıza çıkar. İlim adamları ışığın davranışlarında mutlak tutarlı (Accurate) sonuçlar elde etmenin imkansızlığından yola çıkarak eldeki imkanlarla tahmin edilebilir, tatmin edici (Predictable) sonuçlar ortaya çıkacak ve elimizdeki işlem gücünün kaldırabileceği bazı temel algoritmalar, fonksiyonlar, kurallar geliştirmişlerdir. Bunlar doğa kanunlarını esas almakla birlikte özünde indirgemeye dayalı kurallardır ve bu sayede beklenen sonuç verimli bir şekilde elde edilebilir. Bu indirgemeyi basit olarak şöyle örneklendirebiliriz:


Fotonların teker teker izlediği yollar, sayısız yansımaları, enerji transferlerini hesaplamak yerine kümülatif bir bakışla ışın (ışık demeti) davranışları hesaplanır.


Yansıma sayısız bir şekilde hesaplanmak yerine, artık algımızda bir fark oluşturmayacağı noktaya kadar hesaplanır. Yani ışığın yansıma sayısı sınırlandırılabilir.


Algımızda fark oluşturmayacak nitelik ve niceliklerin hesaplanması engellenebilir.


Caustics gibi sahnemizle alakası olmayan ve pahalı etkiler hesaba katılmayabilir.


Indirect Illumination'da (dolaylı aydınlatma) ışığın falloff etkisiyle, içbükey köşelerde ortaya çıkan belirgin gölgeler (contact shadow) ve çok az ışık alan bölgelerdeki karartılar Ambient Occlusion denen bir metodla hızlı bir şekilde hesaplanır. Bunun temel çalışma prensibi yüzeylerin birbirlerine yakınlık ve uzaklığının hesaplanması, yakın-uzak bölgelere farklı tonlamaların atanması ve ara bölgelerin interpolasyonla hesaplanması şeklindedir.


Basit bir şekilde anlattığımız bu durum biased - ön yargılı renderdır. İşin bu kadar temelinde indiğimizde aslında bütün render motorları biased çalışır.

Peki biased-unbiased ayrımı nedir ? Bunu isabetli tanımlamak için çok biased vs az biased olarak görmek yerinde olur. Bu yüzden unbiased dediğimizde az biased olarak anlayınız.


Şimdi biased render sistemini eskilerden ördek bir render motoruyla basitçe açıklamaya çalışalım. Ön bilgi olarak çok-biased sisteminin indirgeme üstüne indirgeme, genelleme üstüne genelleme olduğunu belirtelim.


Mental Ray dönemlerinden gelen eskiler iyi bilirler, Final Gathering denen ve animasyonlarda bizi çıldırtan bir teknik vardı. Bu teknik temelde sahneye ekstra ışınlar göndererek Global Illuminaton hesaplamasını iyileştirmek için kullanılırdı. Indirect Illumination kullandığımız birçok sahnede GI kullanmadan işimizi FG ile hallederdik.

İlk zamanlarda Final Gather tekniğinin en büyük sorunu flicker denen, animasyonda gölgelerin titremesi sorunuydu. Bu sorunun temeli çok-biased bir yöntem kullanıyor olmamızdan başka bir şey değildi. Ufaktan açıklamaya çalışalım. FG, verilen bir renk veya Dome Map'ten renk alıp, verilen Sample değerine göre sahneye ışık demetleri fırlatır. Sahneye gönderilen ışınlar çoğunlukla yeterli gelmez. Yeterli sayıda göndermek renderı sonsuza dek uzatabilir. Bu noktada FG, ortalama veya interpolasyon denen bir yönteme başvurur. Peki bu nedir nasıl çalışır? Sahneye rastgele gönderilen öbekler (ışın) kendisine en yakın öbeklerle etkileşime girerek ortalama hesaplamasıyla merge edilir yani birleştirilirler. Bu sayede öbeklenmemiş, nispeten pürüzsüz gölgeler elde ederiz. Her öbeğin interpolasyonu farklı olduğundan başta göze fazla çarpmayan tonlama farklılıkları oluşur. Eğer sample değeri düşük ve eskilerden Radius, sonralardan Interpolation değeri yüksek olursa gölgelerde şekil olarak da belirgin düzensizlikler ortaya çıkar. Şimdi Sample ve Radius değerlerinin ideal olduğunu varsayalım. İlk karemizi yukarıdaki gibi hesaplattık. İkinci kareye geldiğinde sorun ortaya çıkar. Şöyle ki; ikinci karede de FG yine sahneye rastgele demetler-öbekler gönderir. Farklı noktalarda farklı değerlerde bulunan ışınlar yine interpole edildiği zaman ilk kare ile ikinci kare arasında ciddi tonlama ve form farklılıkları ortaya çıkar. Bu her kare için geçerli olduğunda çılgın flicker dediğimiz sorunu elde ederiz. Bu da çok-biased Predictable yöntemin basit ve eski sorunlarındandır. But make no mistake! Final Gather kendi içinde esasen Accurate,Monte Carlo,Unbiased dediğimiz bir yöntem de taşır. İsim olarak FG içinde geçmese de genel olarak buna Brute Force denir. Bu yöntem Final Gather interpolasyonunu kapatmaktan ibarettir. Yani eskilerde Radius, az eskilerde Interpolation değerlerini sıfırladığımızda FG sahnedeki her piksele azami miktarda ışın gönderir. Öyle ki interpolasyona artık gerek kalmaz ve bu sayede her karedeki değişimler blok büyüklüğünde değil piksel ölçütünde olur. Bu da farklı bir sorun ortaya çıkarır! Yeterli miktarda sample vermediğimizde her pikselde ortaya çıkan değişim mikro flicker oluşturur. Yani noise dediğimiz sorun. Bunu aşmak için sample değerini artırdığımızda bir karenin render süresi saatleri geçebilirdi. Eski zamanlar. Teknoloji metodlar artık epey gelişti. İşin içine GPU'nun dahil olması renderda marjinal bir devrime yol açtı.


Buraya kadar takip ettiyseniz biased-unbiased konusunda temel bir anlayış edindiğinizi varsayarak iki yöntem arasındaki benzerlikleri, farkları ortaya koymaya başlayalım.


B VS UB


Biased Render


  • Işığın fiziğini katı bir şekilde modellemek yerine çeşitli kısayol ve yaklaşımlar kullanır. Her pikseli hesaplamaya gerek kalmaz.

  • Bu kısayollar render işlemini hızlandırır.

  • Işık üzerinde kullanıcıya çok daha fazla kontrol verir.

  • Render süreleri net ve tutarlı bir şekilde tahmin edilebilir.

  • Realtime uygulamalar ve oyunlar için idealdir.

  • Unbiased render kadar tatmin edici sonuçlar verebilir.

Biased render motorunun tipik parametreleri şu şekildedir :


Light Bounce Definition : Işınların kaç kere yansıyacağı kontrol edilebilir

Cache : Kompleks ışık modellemelerini hızlandırmak için hesaplamalar bellekte saklanır.

Adaptive Sampling : Heterojen bir sahnede ışınlar belirli bölgelere odaklandırabilir. Işıkların veya GI etkisinin fazla görüldüğü ve sample'a fazla ihtiyaç duyulan bölgeler vs.

Caustics : Pahalı Caustic efektinin hesaplanıp hesaplanmaması tercih edilebilir.

Firefly Reduction: Glossy yansımalarda rastgele ortaya çıkabilen ekstrem noktasal parlamaları önlemek için ilgili ışınlar kısıtlandırılabilir.



Unbiased Render


  • Biased gibi yoğun kısayollar kullanmaz.

  • Accurate tanımına daha yakın sonuçlar verir.

  • Kullanıcıya daha az kontrol bırakır.

  • Olağanüstü render kalitesi üretebilir.

  • Biased'a göre yavaştır.


Başta söylediğimiz durumu unutmayalım. İkisi de nihayetinde biased renderdır. Dolayısıyla ikisinin de verdiği sonuç fiziksel olarak inaccurate yani hatalıdır. Birçok unbiased render motoru da kendine has kısayollar kullanır fakat bunlar hardcode edilmiş yani yazılımın içine gömülmüş ve kontrolü kullanıcıya bırakılmamıştır. Bunun dışında biased renderın tipik parametrelerini unbiased bir render motorunda da görebilirsiniz. Fakat bir unbiased render motoru hiçbir zaman kullanıcıya biased kadar çeşitli ve çok kontrol bırakmaz. Bu hem doğası hem hilesi sebebiyledir.


Hibrid bir render motoru olan Vray'in üretici Chaos Group'un konuyla ilgili bir makalesi vardır ve makaledeki şu paragraf dikkat çekicidir :


Long story short: if you are doing true scientific physical calculations and have a ton of computational power and time, unbiased may serve you well. If you are interested in rendering physically plausible images in a reasonable amount of time, biased solutions will get you there faster. Chances are you are already doing this no matter what rendering engine you are using.

Çevirmeye çalışalım :


Uzun lafın kısası eğer hakiki bilimsel ve fiziksel hesaplamalar yapıyorsanız (abartı) ve tonlarca işlem gücünüz, zamanınız varsa (unbiased ezmece, abartı, günümüzde çok bir önemi yok) unbiased render size iyi hizmet edebilir. Eğer makul bir zamanda fiziksel olarak makul bir sonuçla ilgileniyorsanız biased render istediğinizi daha hızlı verir. Hangi render motorunu kullanıyorsanız kullanın muhtemelen yaptığınız da budur.

Görüldüğü gibi Chaos Group daha önce bahsettiğimiz biased doğaya yaslanarak unbiased render motorlarını gömmeye çalışmaktadır. CG bununla ne yapmak istemektedir? Neyi amaçlamaktadır? Böyle yorumlar milletimizi böl.....


Unbiased render listesi şu şekildedir :

  • Arion

  • Arnold

  • Cycles

  • Indigo Renderer

  • Kerkythea (Hibrid)

  • LuxRender

  • Mantra

  • Maxwell Render

  • Mental Ray (Opsiyonel)

  • Octane Render (GPU)

  • VRay (Opsiyonel)


Sonuç olarak ortaya çıkacak kalite %99.99 kullanıcının bilgisi ve yeteneğiyle alakalıdır. Kendi tecrübeme göre biased Redshift epey hızlı bir render motoruyken kendini unbiased ilan eden Octane, Redshift'e göre daha gerçekçi sonuçlar verir. Aynı gerçekçiliği elde etmek için Redshift'te biraz fazla ayar yapmanız gerekebilir. Bu ayarları yaptığınızda da render hızları birbirine denk gelecektir. Arnold, kalitesiyle unbiased hissini başarılı bir şekilde verir. Birçok büyük prodüksiyon şirketinin tercihidir. Houdini'nin render motoru Mantra da benzerdir fakat yavaştır. Mental Ray hala kaldı mı fikrim yok. CPU render kullanıyorsanız VRay, kalitesiyle ikinci tercihiniz olabilir. Birinci tabiki Arnold. Maxwell kaliteli ve yavaştır. Yeni GPU sürümü Octane ve Redshift'i zorlayabilir.


Sonucun da sonucu yaptığınız işe göre bu ayrımın gereksiz ve saçma olduğu ihtimalini de gözardı etmeyin. Nitekim bu kadar yazdıktan sonra zamanımı boşa harcamış gibi hissetmiyor da değilim.


Selametle kalın.




167 görüntüleme1 yorum

Son Yazılar

Hepsini Gör

1 Comment


Enes Şimşek
Enes Şimşek
Dec 13, 2019

Aydınlandım. Teşekkürler

Like
bottom of page