- "Render" ne anlama geliyor?
- DirectX/OpenGL ve Işın İzleme Karşılaştırması
- Gerçek dünya etkilerinin simülasyonuna örnekler
- Işın izlemenin temelleri
- Işıklar ve gölgeler
- Malzemeler ve BRDF'ler
- Monte-Carlo yöntemleri
- Etkiler
- Oluşturma Denklemi
- Yol izleme
- Önyargılı/önyargısız coğrafi bilgi algoritmaları
- Kesişim için veri yapıları
- Fiziksel tabanlı işleme
- Çözüm
Bu bölümde, fotogerçekçi görüntüleme yöntemi olarak ışın izlemenin temellerini sunacağız. Fotogerçekçi ve gerçek zamanlı görüntüleme arasındaki farkları ele alacak ve kamera, gölgelendirme, ışın izleme, ışıklar, gölgeler, küresel aydınlatma, malzemeler, BRDF’ler , Monte-Carlo yöntemleri, önyargılı/önyargısız GI algoritmaları gibi bazı yaygın terimleri tanıtacağız. Genel bilgisayar grafikleri ve lise düzeyinde matematik bilgisine sahip olmanız beklenmektedir.
“Render” ne anlama geliyor? #
Geriye dönüp biraz teoriyle başlayalım. “Render” terimiyle başlayalım . Bir bilgisayar oyunu düşünün – render işlemi içerir. Sanal bir dünyası vardır – seviyeler, silahlar, patlamalar, olaylar , ışıklar vb. soyut bir şekilde tanımlanmıştır. Render, bu soyut tanımı ekranda gösterilecek bir görüntüye dönüştürmek anlamına gelir.
Bu sanal gerçekliğin tüm unsurlarına sahne diyoruz . Sahnedeki unsurlar, döndürme, öteleme vb. bazı matematiksel özelliklerle tanımlanır. Bu sahneyi bir görüntüye dönüştürmeye ise işleme (rendering) diyoruz .


Görüntü oluşturma için farklı algoritmalar mevcuttur. Bu bölümde ışın izlemeyi ele alacağız, diğer önemli yaklaşım ise DirectX/OpenGL aracılığıyla rasterleştirmedir.
DirectX/OpenGL ve Işın İzleme Karşılaştırması #
Oyunlarda rasterleştirme, yüksek hızı nedeniyle kullanılır. Mevcut tüm video donanımları, gerçek dünya nesnelerinin temsilleri olan üçgen ağlarını rasterleştirmek için optimize edilmiştir. DirectX ve OpenGL, altta yatan video donanımına yönelik API’lerdir. Nesnelerin dikkate alınan ana özelliği şekilleridir . Bu adımdan sonra, rasterleştirilmiş üçgenler shader programları kullanılarak renklendirilir.
Işın izleme yönteminde asıl önemli olan ışıktır; ışığa ne olduğu, nasıl hareket ettiği, maddeden nasıl geçtiği ve ortamla nasıl etkileşime girdiği. Işığın dalga özelliklerini değil, parçacık (foton) özelliklerini simüle ediyoruz. Fotonlar düz ışınlar halinde hareket eder, bu ışınlar emilir, yüzeylerden yansır, camdan kırılır ve atmosferik etkilerle etkileşime girer.
3 boyutlu şekli sunmak o kadar önemli değil. Üçgen ağlar, küre için matematiksel denklem ve daha parametrik şekiller, alt bölüm yüzeyleri kullanabiliriz.
“Işın izleme” kavramı hem süreci hem de uygulanmasına yönelik somut bir algoritmayı ifade eder. Süreç olarak bu, ışığın malzemeler, hacimler içinden nasıl hareket ettiğini, yüzeylerle nasıl etkileşimde bulunduğunu simüle etmek anlamına gelir. Ayrıca daha sonra ele alacağımız somut bir algoritma da vardır. Optik sektöründe, bizim algoritmamızdan daha fazla etki uygulayan başka ışın izleme algoritmaları kullanılır. Bunlar, dalga girişimi, kırınım, polarizasyon gibi etkiler için ışığın tam olarak ne olduğunu inceler; bunlar orada önemlidir, ancak fotogerçekçi görüntülememizde o kadar önemli değildir.
Gerçek dünya etkilerinin simülasyonuna örnekler #
Işın izleme ile atmosferik olmayanlar da dahil olmak üzere her türlü ışık efektini simüle edebiliriz. Bu tür efektlere örnek olarak küresel aydınlatma, yansımalar ve kırılmalar ile alan derinliği verilebilir. Bunlar, çoklu geçişlerde işleme ve sonrasında birleştirme gibi hilelerle yalnızca rasterleştirme yoluyla taklit edilebilir.
Aşağıdaki örnek görselleri inceleyin:
Alan derinliği

Katmanlama ilk örneğimizde işe yarayacak, ancak ikincisinde yaramayacak.
Balık gözü kamera

Fotoğraf: Josef Stuefer
Üçüncü örnekte, ışın izleme ile “hazır olarak” simüle edilebilen balık gözü kamera kullanılıyor. Alan derinliğine benzer şekilde, rasterleştirmede bu, birden fazla render işlemi kullanılarak taklit edilebilir; bu da kötü kalite, yavaş render süreleri vb. sonuçlara yol açar.
Çözüm #
Işın izlemenin avantajları şunlardır: Çok gerçekçi sonuçlar elde eder ve bilinen fizik yasalarına uyduğu için uygulanması daha kolaydır. Dezavantajı ise oldukça yavaş olmasıdır; bir oyunda (rasterizasyon kullanılıyorsa) HD çözünürlükte 60 FPS ile oynayabilirsiniz, ancak aynı çözünürlükte yüksek kaliteli bir görüntünün ışın izleme yöntemiyle işlenmesi dakikalar, saatler hatta günler sürebilir. Sonucun doğruluğu söz konusu olduğu sürece, ışın izlemeden elde edilen sonuç “gerçek sonuç” olarak kabul edilir.
Işın izlemenin temelleri #
Işın izleme algoritmaları şu yapıya sahiptir: Sanal uzayda gözü temsil eden bir kameramız var . Kameradan, doğadaki ışığın yollarını simüle eden ışınlar gönderiyoruz. Bu ışınlar, bir engele çarpana kadar düz bir yönde ilerler. Simülasyon yönü, ışığın kaynağından göze doğru ilerlediği doğadaki durumun tersidir. İzlemeyi “doğru” yönde de yapabiliriz, ancak bu etkisiz olur çünkü gönderilen ışınların sadece küçük bir kısmı kameraya ulaşır. Ters izleme ile görüntü, kat kat daha hızlı çözünürlüğe ulaşır. Bu herhangi bir endişe yaratmaz çünkü çoğu ışık efekti simetriktir. Kameranın önünde, ekranı temsil eden hayali bir dikdörtgen bulunur.
Kamera #
Kameradan ışınlar geçirmek

Kameranın önündeki piramit, ışınların başlangıç noktasıdır. Sağdaki dikdörtgen ağ ise sanal ekrandır.
Kavşak #
-
Işınlar gönderiyoruz ve her ışın, ilgili piksel için sonuçta rol oynuyor.
-
Işın gönderildikten sonra, onu geometriyle kesiştirmeliyiz. Genellikle katı bir cisim üzerindeki en yakın kesişme noktasını bulmalıyız.

Renklendirme/gölgeleme #
-
Bir kesişme noktası bulduktan sonra, sahneden bu noktaya ne kadar ışığın ulaştığını ve kameraya geri yansıdığını hesaplamamız gerekir. Bu işleme gölgelendirme diyoruz ve ışın izlemenin hesaplama açısından en ağır kısmıdır.
Ciltler arasında iz sürmek #
Işık sadece yüzeylerle değil, hacimlerle de etkileşime girebilir. * Sis, bulut, duman gibi atmosferik etkileri, * Işın yönünün kırılmasını (pus, heterojen ortamlar gibi), * Işığın emici ortamlarda zayıflamasını (çay gibi) simüle edebiliriz.
Beer-Lambert yasası:

Görsel Wikipedia’dan alınmıştır .
Işık şiddetinin azalması, ortamda kat edilen mesafenin üssüyle orantılıdır.
Medya aracılığıyla izleme #
Işık, bu tür ortamlarda zayıflamasının yanı sıra saçılır da; bu da simüle edilmesi gereken önemli bir etkidir. Bu tür malzemeler arasında deri, süt, balmumu bulunur ve yüzey altı saçılması adı verilen bir etkiye yol açar . İşte bir örnek:

Klasik ışın izleme algoritması, sahnedeki nesnelerin yüzeyleriyle çalışır. Bu yüzeylerin özellikleri, geometrinin kaplandığı malzemelere bağlıdır . Örneğin, bir araba var ve ona “araba boyası” malzemesi atanmış. Ona ağaç malzemesi atarsanız oldukça garip görünür. Malzemeleri tanımlamanın çeşitli yolları vardır. Fiziksel tabanlı render motorlarında (PBRT, V-Ray vb.) malzemeleri tanımlamak için seçilen yöntem, BRDF ( Çift Yönlü Yansıma Dağılım Fonksiyonu ) adı verilen yansıtıcı özelliklerinin farklı fonksiyonlarıdır.
Işıklar ve gölgeler #
Bir sonraki konumuz ışıklar ve gölgeler. Kesişim noktasına ne kadar ışık ulaştığına bakalım. Bir sahnedeki aydınlatma ışıklardan gelir . Bir geometriyi kesiştirdiğimizde, bu noktanın ışıklar tarafından ne kadar aydınlatıldığını kontrol etmeliyiz. Standart yaklaşım, gölgeye neden olacak bir engel olup olmadığını kontrol etmek için kesişim noktasından ışıklara ışınlar göndermektir. Bu ışınlara gölge ışınları denir .

Burada A noktası 2 ışıkla tamamen aydınlatılmış, B noktası kısmen gölgelenmiş ve C noktası tamamen gölgelenmiştir.
Işıklar #
Işın izleme algoritmasının iyi yanı, çok sayıda ışık kaynağı kullanabilmemizdir:
-
Nokta (omni) – DirectX/OpenGL oluşturmada temel ışık kaynağı. Gerçek dünyadaki bir ışık kaynağının (örneğin lamba) çok kaba bir yaklaşık temsilidir.
-
yönlü (paralel ışınlar)
-
koni şeklinde (spot ışığı)
-
Dikdörtgen veya sıfırdan farklı bir alana sahip başka bir şekil – bunlar daha gerçekçidir ve yumuşak gölgeler oluşturur.
-
Ölçülü bir IES profili ile (belirli bir gerçek ışık kaynağı, örneğin ampul, bir goniophotometre kullanılarak ölçülür)
-
üçgen ağdan keyfi şekil ile

Alan ışıklarını simüle etmek, genellikle render işlemini yavaşlatan birden fazla ışın göndermeyi içerir.
Gölgelendirme #
Hatırlayalım ki, gölgelendirme, sahnedeki ışığın belirli bir noktaya ne kadar düştüğünü ve kameraya ne kadar yansıdığını hesaplamaktır. Bunun 2 ana bileşeni vardır:
-
Işık kaynaklarından doğrudan gelen ışık, gelen tüm ışığın bir kısmını temsil eder ve doğrudan aydınlatma olarak adlandırılır . Işıklar ana ışık kaynaklarıdır, bu nedenle bu kısım genellikle en büyüktür. Bu dersteki en son görselde bu bileşen kırmızı renkle gösterilmiştir.
-
Sahnedeki diğer nesnelerden yansıyan ışığı hesaplamak için teknikler vardır – bu dolaylı aydınlatmadır . Aynı görüntüde bu bileşen yeşil ve mavi renkte gösterilmiştir.
Küresel aydınlatma #
Gerçek dünyada küresel aydınlatma (GI) = doğrudan + dolaylı aydınlatmadır. Bunun doğru simülasyonu, ortam örtüşmesi, renk yayılması gibi fotogerçekçilik efektleri için önemlidir. Bunlardan daha sonra bahsedeceğiz.
Malzemeler ve BRDF’ler #
BRDF’lerin tanımı: #

fr( x , ωi, ωo) := ” x noktasında ωi’den gelen bir ışık ışınının ωo yönünde yansıma olasılığı?”
Resimdeki güneş bir ışık kaynağını, x ise yüzey üzerindeki bir noktayı temsil eder. Ayrıca “gelen yönden gelen ışığın ne kadarının giden yöne gittiğini” de sorabiliriz, ancak bunun yerine BRDF’nin aslında bir olasılık dağılım fonksiyonu olduğu olasılık modelini kullanacağız. Sezgisel olarak, bir yönden gelen ışığın ne kadarının diğer yöne doğru devam ettiğini merak ediyoruz.
BRDF’lerin Özellikleri #
-
Simetri
fr( x , ωi, ωo) = fr( x , ωo, ωi)
-
Enerjinin korunumu
∫Ω fr ( x , ωi, ωo) cos(θo)dωo ≤ 1
İkincisi, BRDF’nin ışık “üretmediği” anlamına gelir. Işığı emebilir. Ω, yüzeyin üzerindeki bir yarım küredir.
BRDF Türleri #
-
Gerçek malzemelerin BRDF’leri (Bölgesel Yansıma Dağılım Fonksiyonları) bir gonioreflektometre kullanılarak ölçülebilir. Bu yöntem, belirli bir noktayı aydınlatmak için bir lazer kullanır ve ölçüm cihazı ile yarım küreyi tarayarak ışığın hangi kısmının farklı yönlere girdiğini gözlemler. Bu şekilde tablo şeklinde bir BRDF oluşturabiliriz. Pratikte bu şekilde ölçülmüş BRDF’ler nadiren kullanılır.
-
Sıklıkla kullanılan malzemelere benzeyen “ideal” BRDF’leri kullanabiliriz.
Örnekler #
-
Dağınık BRDF (tıpkı bir kağıt yaprağı gibi) – ışık her yöne eşit olarak dağılır:

fr( x , ωi, ωo) = 1/2π Yarım kürenin katı açısı 2π steradyan olduğundan, her yön için olasılık 1/2π’dir.
Yansıtıcı BRDF (cilalı metal, ayna, su yüzeyi gibi):

fr( x , ωi, ωo) = {∞, ωo=reflect(ωi) olduğunda; 0, aksi halde}
-
Kombine yüzey (pürüzlü metal, buzlu ayna gibi) – parlak yansımayı simüle eder:

Katmanlı malzemeler #
Genellikle gerçek dünyadaki BRDF’ler, birkaç daha basit BRDF’nin bir kombinasyonuyla yaklaşık olarak elde edilebilir. Örneğin, cilalı ahşabı simüle etmek, farklı BRDF’lere sahip 2 katman kullanmayı gerektirebilir: * Vernik (üst katman) – yarı saydam, yansıtıcı * Ahşap (alt katman) – dağınık, dokulu (bu, BRDF değerinin x’in doku uzayındaki konumuna bağlı olduğu anlamına gelir)
Monte-Carlo yöntemleri #
Işın izleme için oldukça önemli olan bazı teorik konularla devam edelim: Monte-Carlo entegrasyon yöntemleri. Genel olarak, bu yöntem, belirli bir hata payı içinde keyfi bir fonksiyonun integralini hesaplayabilir, bu da çözümün bir yaklaşık değerini verir. Dikkat çekici bir şekilde, integralleri çözmek için kullanılan bu sayısal yöntemler, fonksiyonun entegre edilmesi kolay olmadığında bile (sürekli değilse, büyük bir varyasyon gösteriyorsa) iyi performans gösterir. Monte-Carlo yöntemini bu tür alışılmadık fonksiyonlar için kullanmanın sorunu, gürültü veya bir miktar yanlışlık üretmesidir. Her piksel için integrali hesapladığımızda, gerçek değerden bir miktar sapma olacaktır ve bunu gürültü olarak göreceğiz. Ancak, doğru bir görüntüye sahip olmak, yanlış olan pürüzsüz bir görüntüye sahip olmaktan daha iyidir, ancak biraz gürültü de içerir.
Aşağıdaki formül Monte-Carlo yöntemini açıklamaktadır:
∫ f(x)dx ≈ (1 / N ) ∑Ni=1 f(xi) / ρ(xi)
-
f(x) – integralini aldığımız fonksiyon; çok boyutlu olabilir, bizim durumumuzda renk döndürür; x de bir vektör olabilir.
-
N – örnek sayısı
-
xi – etki alanındaki (tekdüze dağılımlı) rastgele noktalar
-
ρ(xi) – xi’yi seçme olasılığı
Teoriye göre hata 1 / √N ile orantılıdır, dolayısıyla örnek sayısı arttıkça azalır. Seçtiğimiz noktaların dağılımı önemlidir, çünkü bir alt alanda çok fazla nokta alırsak, hesaplama o değerlere doğru yanlı olacaktır.
Monte-Carlo Yönteminin Uygulanması #
Basit bir uygulama örneği olarak, dikdörtgen bir ışık kaynağından yayılan aydınlatmayı hesaplayabiliriz.

Monte-Carlo tekniğinde, ışık yüzeyinde rastgele birkaç nokta seçilir ve bu noktalara ışınlar gönderilir. Alt noktaya ne kadar ışık düştüğünü hesaplamak istiyoruz. Bu görev için ışık yüzeyinde 3 nokta seçiyoruz ve bunlardan hangilerinin ilgi noktasından görülebildiğine bakıyoruz. Pratikte, gereken doğruluğa bağlı olarak 20, 30 veya 1000 ışın göndereceğiz. İntegral almak istediğimiz fonksiyon, bir vektör (ışık yüzeyindeki bir nokta) alır ve 0 veya 1 döndürür. İlgi noktası ışık noktasından görülebiliyorsa 1, aksi takdirde 0. İki ilgi noktası arasında bir ışın oluşturuyoruz ve eğer bir nesneye çarpmazsa fonksiyon 1’e, aksi takdirde 0’a eşittir.
Bizim durumumuzda, ışık üzerindeki noktalar düzgün dağılmışsa, her noktayı seçme olasılığı eşittir, bu nedenle ρ(xi)’yi göz ardı edebiliriz. Sezgisel olarak, hesaplamanın bu kısmını göz ardı edebilir ve sonucu ışığın boyutuyla çarpabiliriz. Bu şekilde daha büyük ışıklar daha parlak olur.
İntegral alması daha zor fonksiyonlara sahip olduğumuzda, sabit olmayan bir ρ’ya sahip olmak daha uygundur. Örneğin, ışık orta bölgesinde daha parlaksa ve rastgele noktalar seçip gölgelenmeyi kontrol edersek, bu belirli noktadaki ışık gücüyle çarptığımızda, orta bölgedeki noktalar daha önemlidir. Bu, “ilginç” alandan çok az örnek aldığımız için sonucun optimal olmadığı anlamına gelir. Bu nedenle, noktaları düzensiz bir şekilde seçmek daha iyidir; örnek durumda, orta bölgeden daha fazla nokta alın. Bu, denklemin ρ kısmının artık sabit olmadığı, düzensiz dağılımı dikkate aldığı anlamına gelir.
Monte-Carlo yöntemi özellikle doğru değildir. Örneğin, sahnede yan yana 2 noktamız varsa, bazı durumlarda ışığın “aydınlatılmış” kısmında 2 nokta daha fazla, bazı durumlarda ise 2 nokta daha az olacaktır. Bu, komşu noktalar için integral fonksiyonunun farklı değerlerine yol açar ve bu da gürültü olarak görülür. Bu gürültüden kurtulmak, iyi görünümlü bir görüntü üretmenin anahtarıdır. Bunun için kullanılan tekniklerden biri Önem Örneklemesi olarak adlandırılır ; fonksiyonun “ilginç” olduğu, yani daha yüksek bir değere sahip olduğu alanlardaki örnekleri seçer. Kullanıcı tarafından kontrol edilen bir parametreye sahip olabiliriz ve bu parametre, bu entegrasyon için kaç örnek kullanacağımızı belirtir. Önem örneklemesi ile, benzer kalitede bir görüntü üretmek için çok daha az sayıda örnek kullanabiliriz, örneğin 1000 yerine 100. Bu, entegrasyon hızını önemli ölçüde azaltır.
Diğer Monte-Carlo teknikleri #
Monte-Carlo entegrasyonu için 3 tekniği daha ele alacağız:
-
Kenar yumuşatma (antialiasing) – grafik kartlarında bulunur. Bunu, piksel başına birden fazla ışın göndererek, her ışının kendi katkısını vererek ve ardından tüm ışın katkılarının ortalama değerini bularak elde ederiz.
-
Parlak yansımaları uygulamak için benzer bir teknik kullanılabilir. Bir ışık ışını parlak yansıtıcı bir yüzeydeki bir noktaya çarptığında, tamamen speküler yansıma yönünün etrafındaki yönlere kısmen yansır. Monte-Carlo yöntemini kullanarak bu ikincil yönlere ek ışınlar gönderebilir ve bu noktadaki toplam rengi hesaplayabiliriz.
-
Üçüncü teknik, alan derinliği efektini simüle etmek için kullanılabilir. Bu, yine kameradan birden fazla, hafifçe yer değiştirmiş ışın gönderilerek elde edilir. Her piksel için birden fazla ışın gönderilir ve daha sonra toplam renk, tüm yer değiştirmiş ışınların toplamı olarak kabul edilir. Bu aslında gerçek dünyadaki bir kamera merceğinin davranışını simüle eder.
Monte-Carlo yöntemleri, render işleminin çeşitli alanlarında kullanılır. Sahnenin belirli bir noktasındaki dolaylı aydınlatmayı hesaplamak için kullanılan yöntemlerden bahsetmiştik ki bu, küresel aydınlatma için önemlidir. Bunların bazıları yine Monte-Carlo tekniklerine dayanmaktadır.
Bu hesaplamaların temel teorisi, 1986 yılında Jim Kajiya tarafından yazılan “Render Denklemi” olarak adlandırılır. Makalesinde ortaya konan formül son derece önemlidir ve GI ile çalışan fotogerçekçi renderlama için kullanılan neredeyse tüm ticari ürünler tarafından pratikte kullanılmaktadır.
Küresel aydınlatma (GI) #
GI’nin temel fikri, belirli bir noktadan kameraya yansıyan ışığın, tüm sahneden o noktaya gelen ışık olduğudur. Bazı sahnelerde dolaylı aydınlatma (görüntüdeki daha ince ışınlar) oldukça önemlidir.

Şimdi de dolaylı aydınlatmanın önemine dair bazı örnekler göreceğiz:

Görsel Wikipedia’dan alınmıştır .
İlk örnekte, sahne genelinde eşit olan bir ortam aydınlatması varsayıyoruz. Bazı kenarlarda (sütunun üst kısmında) detay kaybını görebilirsiniz. Dolaylı aydınlatma kullandığımızda (ikinci örnek), çok daha gerçekçi bir görüntü elde ediyoruz.
Etkiler #
Ortam tıkanıklığı #
Ele alacağımız bir sonraki etki, ortam örtüşmesi olarak adlandırılır. Bu etki, tabancaya yakın her noktanın gökyüzünün farklı bir bölümünü “görmesinden” kaynaklanır. Bunu simüle ettiğimizde, aşağıdaki resimde görülebilecek özel gölgeler ortaya çıkar:

Resim Dan Cole’un blogundan alınmıştır.
Renk akması #
Sonraki resimde görebileceğimiz üçüncü etki ise renk yayılması olarak adlandırılır. Sahnedeki küpler gri renktedir. Vurgulanan alanlarda, başka bir renkli yüzeye yakın olan yüzeyler, o yüzeyin renginden bir miktar alır.

Tamamen dolaylı aydınlatma #
Bir tarafında ışık, diğer tarafında ise bazı nesnelerin bulunduğu, P şeklinde bir koridor hayal edin. Işık yalnızca yansımalar yoluyla ilerler.

Oluşturma Denklemi #
-
Kajiya, fikrini “aydınlatmanın temel formülü” (Görüntüleme Denklemi), diğer adıyla “Işık taşıma denklemi” ile resmileştirir.
-
Onun formülünü uygulayarak sahnenin her noktasındaki ışığı hesaplayabiliriz.


Görsel Wikipedia’dan alınmıştır .
x noktasından ωo yönünde gelen ışığı hesaplamak istiyoruz. İlk bileşen Le, “yayan” kısımdır; yani x noktasından yayılan ışık, eğer bir ışığa aitse, onu ifade eder. En zor kısım integraldedir. Bu integral, tüm olası giriş yönlerini (ωi ile gösterilir) kapsayan yarım küre üzerinde yapılır. Gelen tüm ışınlar için Li’yi (gelen ışık) hesaplayabilir ve bunu o nokta ve giriş yönü için yansıma fonksiyonu BRDF ile çarpabiliriz. Ayrıca, ωi ile x noktasındaki yüzey normali arasındaki açının kosinüsü ile de çarparız .
-
Hesaplamak istediğimiz ilk bileşen Lo(x, ωo)’dur.
-
İkinci olarak, Le(x, ωo), çıkış yönündeki ışık bileşenidir. Yalnızca x bir ışığın parçası olduğunda sıfırdan farklıdır .
-
fr, BRDF fonksiyonudur.
-
Monte-Carlo yöntemi kullanarak entegre ettiğimiz tüm giriş yönlerinden gelen tüm giriş ışığını Li(x, ωi) elde ediyoruz.
-
Yüzey normali n ile giriş ışını ωi arasındaki kosinüsü alıyoruz. Kosinüs kullanmamızın nedeni, ışık keskin bir açıdan geldiğinde daha geniş bir yüzeye dağılması ve belirli bir noktada yoğunluğunun daha düşük olmasıdır. Bu aynı zamanda “Lambertian terimi” olarak da bilinir.
-
Son olarak, gelen tüm ışığı kapsayacak şekilde tüm olası giriş yönlerini entegre ediyoruz.
Bu, belirli bir noktadaki ışığı hesaplamanın, diğer tüm noktalardaki ışığı hesaplamayı gerektirdiği ve her şeyin birbirine bağlı olduğu anlamına gelir. Ancak tüm noktalara eşit derecede ilgi duymuyoruz. Bu nedenle, önce en önemli noktaları, sonra daha az önemli olanları, daha da az önemli olanları ve bu şekilde devam eden bir algoritma oluşturabiliriz. Sahneyi dolaşırken, her ardışık nokta seviyesi daha az önemlidir ve geri kalan her şeyi göz ardı edebileceğimiz bir noktaya ulaşırız. Bu nedenle, belirli bir noktadaki ışığı hesaplamak için, ışık yaymayan noktalar da dahil olmak üzere diğer tüm noktalardan gelen ışığı hesaplamak için formülü kullanmalıyız.

Yol izleme #
-
Kajiya’nın kendisi de yol izleme adı verilen buna benzer bir algoritma öneriyor. Bu algoritma 25 yıldan fazla bir süre sonra bile çok iyi çalışıyor. Ayrıca “kaba kuvvet” olarak da adlandırılıyor.
-
Buradaki fikir, birçok yol (çoklu ışın çizgileri) oluşturmaktır. Işınlar kameradan başlar ve her kesişme noktasında yeni, rastgele bir ışın (yolun bir sonraki kısmı) gönderilir.
-
Her noktadaki hesaplamalar, yolun iki ardışık bölümü için BRDF kullanılarak, İşleme Denklemi ile yapılır. Her yol nihai görüntüye katkıda bulunur, ancak sonuçlar oldukça çeşitli olabilir – aşırı aydınlatılmış piksellerden tamamen siyah piksellere kadar. İyi sonuçlar elde etmek için çok sayıda (örneğin binlerce) yolu entegre etmemiz gerekir. İşleme motoruna daha fazla zaman vererek daha iyi sonuçlar elde ederiz.

Önyargılı/önyargısız coğrafi bilgi algoritmaları #
Şimdi de coğrafi bilgi sistemleri (GI) için önyargılı ve önyargısız algoritmaları ele alacağız.
-
Tarafsız:
-
Yol izleme tarafsızdır; hatası yalnızca gürültüye neden olur. Bu, yeterli zaman verildiğinde sonunda doğru sonuçlara ulaşacağı anlamına gelir.
-
Ayrıca ışık izleme yöntemi de vardır; bu yöntemde ışık kaynaklarından kameraya kadar izlenir.
-
Çift yönlü yol izleme – yukarıdaki iki yöntemi birleştirir.
-
Metropolis ışık taşınımı, yol izlemeye benzer, ancak iyi bir yol (daha fazla enerjiye sahip bir yol) bulduğunda, buna dayalı olarak daha fazla yol oluşturur. Örneğin, aşağıdaki klasik patolojik GI testi gibi bir sahnede iyi sonuçlar verir: Kilitli kapalı bir kapı ve dışarıda parlak bir ışık var. Işığın kilitten geçmesini simüle etmemiz gerekiyor. Normal yol izleme ile bir yolun kilitten geçmesi pek olası değildir veya bir sonuç elde etmek için çok sayıda ışın hesaplamamız gerekir. Metropolis ışık taşınımı, kilitten geçen bir yol bulduğunda, buna benzer daha fazla yol oluşturmaya başlar.
-
-
Önyargılı – sonuçları daha az örneklemle daha düzgün görünebilir, ancak örneklem sayısından bağımsız olarak ortadan kalkmayan yanlışlıklar içerebilir. İşte önyargılı algoritmalara örnekler:
-
Foton haritalama
-
Işınım haritalaması oldukça iyi, ancak bazı özel durumlarda daha kötü sonuçlara yol açabiliyor.
-
Radyasyon
-
Kesişim için veri yapıları #
Çünkü tüm Monte Carlo stratejileri için milyonlarca, hatta milyarlarca ışının izlenmesi gerekiyor.
-
Kavşak çok hızlı olmalı.
-
Işınların sayısı geometrik temel öğelerden (nesneler ve üçgenler) çok daha fazla olduğunda, hızlı kesişim için yapılar kullanmak faydalı olur.
-
Kd ağacı
-
Üçgen ağlarla kesişen ışınlar için kullanışlı olan uzamsal yapı.
-
Normal durumda kesişim için O(log N), yapım için O(N log N)
-
İnşaat süresinin, daha hızlı kavşaklardan elde edilecek faydayı ortadan kaldırmamasına dikkat etmeliyiz.
-
-
Sınırlandırıcı Hacim Hiyerarşisi (BVH)
-
Genellikle Kd ağacından çok daha hızlı bir şekilde oluşturulur.
-
Kavşaklar, Kd ağacına göre biraz daha yavaştır.
-
Hibrit olabilir: küçük Kd ağaçları içeren bir BVH.
-
Işın izleme için paralel algoritmalar #
-
Her bir ışın atışının tek bir piksele katkıda bulunduğu (ve bilgi alırken sahneyi değiştirmediği) göz önüne alındığında, algoritma neredeyse sonsuz derecede paralelleştirilebilir.
-
Görüntü oluşturma işlemi birçok işlemciye, birçok makineye, birçok kaynağa dağıtılabilir.
Fiziksel tabanlı işleme #
Maksimum fotogerçekçiliğe ulaşmak için, sahnedeki tüm unsurların fiziksel olarak doğru bir modeli takip etmesi gerekir.
-
Enerji korunumu yasasına uyan malzemeler
-
Fiziksel olarak doğru BRDF’ler
-
Fotometrik alan ve ölçülen (IES) ışıklar, fiziksel modellere dayalı Güneş-gökyüzü sistemi
-
Fiziksel olarak doğru GI algoritmaları
Çözüm #
Sonuç olarak, ışın izlemenin, kameradan gelen ışığın görüntü düzlemindeki pikseller üzerinden izlediği yolları takip ederek ve sanal nesnelerle karşılaşmalarının etkilerini simüle ederek görüntü oluşturma tekniği olduğunu hatırlayabiliriz. Farklı efektler oluşturmak için farklı ışınlar izlenir. Yukarıdaki diyagram, temel efektlerin nasıl oluşturulduğunu göstermektedir. Birincil ışınlar (Kırmızı), nihai görüntüde neyin görünür olacağını belirlemek için her zaman kameradan sahneye doğru izlenir. Doğrudan aydınlatma ve gölgeler oluşturmak için, “Gölge ışınları” (Siyah), her işlenmiş noktadan sahnedeki her ışığa doğru izlenir. Işınlar bir ışığa “çarparsa”, nokta ışığın ayarlarına göre aydınlatılır. Bir nesneye çarparlarsa, nokta gölgelenir. Yansıma ışınları (Yeşil), yansıma türüne (normal veya Fresnel) ve malzemenin kırılma indisine bağlı olan speküler yansıma vektörü yönünde izlenir. Kırılma ışınlarının (Mavi) yönü yalnızca malzemenin kırılma indisine bağlıdır. Net yansımalar ve kırılmalar için yalnızca tek bir ışın izlenir. Parlak yansımalar veya kırılmalar oluşturmak için birçok ışın bir koni içinde izlenir; koninin yayılımı parlaklık miktarına bağlıdır.
Yüzey altı saçılma ve saydamlık etkileri, geometri içindeki ışınların izlenmesiyle oluşturulur.

