Ray Tracing Hakkýnda Bilmeniz Gereken Her Þey



Grafik iþlemede önemli bir dönüm noktasý olan Ray Tracing teknolojisi hakkýnda bilmeniz gerekenleri bu yazýda anlatýyoruz.

Nvidia, aylardýr Ray Tracing teknolojisini yaygýnlaþtýrmak için çalýþýyor. Oyun geliþtiricileri ve oyun motoru üreticileri de bu çaðrýya karþýlýk verdi. Nvidia yakýn zamanda sunduðu bir sürücü güncellemesiyle GTX ekran kartlarýna da Ray Tracing desteði getirdi. Böylelikle bu teknolojiyi kullanabilecek yeni kullanýcý kitlesine ulaþýldý. Tüm bunlar olurken de birçok oyun Ray Tracing teknolojisini desteklemeye baþladý.
Düzgün þekilde iþleyen ve gözüken bir dünyanýn sanal simülasyonunu oluþturmak oldukça karmaþýk bir iþlem. Yer çekimi ve fizik kanunlarýný bir kenara býrakýp dünyanýn nasýl gözüktüðünü düþünelim. Etrafa yayýlan sýnýrsýz ýþýk demeti, bunlarýn yüzeylerdeki yansýmalarý ve cisimlerin içinden geçiþi her nesnenin moleküler özelliklerine göre þekillenir. Böylesine sonsuz bir kaynaðý bilgisayarlarýn iþlem gücüyle çözmek þu an için mümkün deðil. Bu yüzden günümüz grafik iþleyicileri farklý yaklaþýmlar geliþtirmiþtir.
Pikselleþtirme olarak adlandýrýlan iþlemde genellikle çokgenler ve özellikle de üçgenler kullanýlýr. Oyunlarda milyonlarca çokgen kullanýlýyor ve pikselleþtirme iþlemi tüm bu verileri ekranda görüntülenecek þekilde iki boyutlu çerçevelere dönüþtürüyor.

Yoðun þekilde matematik içeren bu iþlemde her çokgenin gösterileceði ekran oraný belirleniyor. Tek bir üçgen tüm ekraný kaplayabileceði gibi sadece birkaç pikseli de kaplayabilir. Pikseller kararlaþtýrýldýðýnda ise dokular ve aydýnlatma da uygulanýyor. Yýllar içerisinde donaným ve kullanýlan teknikler pikselleþtirme iþlemini daha hýzlý hale getirdi ve modern oyunlarda milyonlarca görünür poligon bulunuyor. Üstelik bunlar inanýlmaz hýzlarda iþleniyor.
Gölge haritalarý, yumuþak gölgeler, ortam aydýnlatmasý ve daha fazla grafik tekniðiyle birlikte nesnelerin görünümü daha gerçekçi hale geldi. Her çerçeve için milyarlarca hesaplama yapýlmasý gerekse de modern grafik iþlemciler saniyede trilyonlarca hesaplama yapabiliyor.

Ray Tracing Nedir?

Ray Tracing yaklaþýmý ilk olarak Turner Whitted tarafýndan 1979 yýlýnda ortaya koyuldu. Turner; gölgeleri, yansýmalarý ve daha fazlasýný içeren etkileyici görüntülerin nasýl hesaplanacaðýný açýkladý. Bu yüzden de Turner þu anda Nvidia’nýn araþtýrma biriminde çalýþýyor. Ray Tracing yönteminin en önemli problemi ise pikselleþtirmeye göre daha kompleks iþlemlere ihtiyaç duymasýydý.
Ray Tracing yöntemi, üç boyutlu bir dünyada ýþýk demetinin izlediði yolu takip ediyor. Üç boyutlu dünya içerisinde tek bir piksel için bir ýþýn çiziliyor ve bu ýþýnýn ilk çarptýðý poligon olmasý gerektiði gibi renklendiriliyor. Ýyi bir sonuç olmak için de tek bir piksel için birçok ýþýn demeti kullanmak gerekiyor. Çünkü bir ýþýn bir nesneyle kesiþtiðinde, çokgen üzerindeki bu noktaya ulaþabilecek ýþýk kaynaklarýný hesaplamak ve bunun için de daha fazla ýþýn kullanmak gerekir. Yansýma özelliði, materyalin rengi, þekli gibi ek özellikler için de daha fazla ýþýn kullanýlýr.
Bir ýþýk kaynaðýndan tek bir piksele düþen ýþýðýn miktarýný hesaplamak için ray tracing formülü; ýþýðýn ne kadar uzakta olduðuna, ne kadar aydýnlýk olduðuna, ýþýk kaynaðýna göre yansýyan yüzeyin açýsýna göre yansýyan ýþýðýn sýcaklýk deðerini hesaplar. Bu süreç sahnedeki diðer nesnelerden yansýyan ýþýklar gibi diðer ýþýk kaynaklarý için de tekrarlanýr. Hesaplamalar materyalin yüzeyine göre uygulanýr. Cam ya da su gibi geçirgen ya da yarý geçirgen yüzeyler ýþýðý yansýtýr ve daha fazla iþlem gücü gerektirir. Öte yandan tüm bunlarýn bir sýnýrý vardýr. Çünkü sýnýr olmadan ýþýnlarý izlemek sonsuza kadar sürebilir.
Nvidia’ya göre en sýk kullanýlan Ray Tracing algoritmasý [Deðerli Ziyaretci, linki görmeniz icin bu mesaja cevap yazmanýz gerekiyorÜye olmak icin burayý týklayýnýz]‘dýr. Bu algoritmayý DirectX Raytracing API kullanýr ve Nvidia’nýn RT çekirdekleri hýzlandýrýr. Iþýnlarla çokgenlerin kesiþme hesaplamalarýný optimize etmek kritik önem taþýyor. Yüzlerce nesneye sahip bir sahneyi ele aldýðýmýz zaman, binlerce potansiyel poligona sahip oluruz ve ýþýnýn hangi poligonlarýný kestiðini hesaplamaya çalýþýrýz. Bu normal þekilde bir arama problemi oluþturur ve çok uzun zaman alýr. BVH ise bu süreci her nesnenin bir kutunun içerisine alýndýðý bir nesneler aðacý oluþturarak hýzlandýrýr.
Örneðin bir tavþan modelini ele aldýðýmýzda BVH kutusu ilk olarak tüm tavþaný içerir. Bu kutuyu kesen ýþýnlarýn hesaplamasý yapýlýr. Eðer kesen bir ýþýn yoksa bu kutu için daha fazla iþlem yapýlmaz. Kesen ýþýn olduðunda ise BVH algoritmasý kesilen kutunun içerisindeki daha küçük kutularý inceler. Bu iþlem istenilen noktaya ulaþýlýncaya kadar devam eder.
BVH hesaplamalarý CPU ya da GPU üzerinden yapýlabilir ancak bunun için ayrýlmýþ bir donaným hesaplamalarý büyük ölçüde hýzlandýrabilir. Bunun için Nvidia RTX kartlarýnýn RT çekirdekleri bu hesaplamalarý yürütüyor. BVH yapýsýna ve sahnenin karmaþýklýðýna göre saniyede hesaplanmasý gereken ýþýn miktarý deðiþiyor. Nvidia’nýn RT çekirdekleri bu algoritmayý CUDA çekirdeklerine göre 10 kat daha hýzlý yürütebiliyor. CUDA çekirdekleri de bu iþlemi CPU çekirdeklerine göre potansiyel olarak on kattan daha hýzlý gerçekleþtiriyor.
Her piksel için kaç ýþýnýn gerekli olduðu ise göreceli bir kavram. Düz ve yansýmayan bir zeminle uðraþmak kývrýmlý ve parlayan bir zemine göre daha kolaydýr. Özellikle aynalardan oluþan bir ortamda yüzlerce ýþýn gerekli olabilir. Bir sahne için tam Ray Tracing yapmak için piksel baþýna bir düzine ya da daha fazla hesaplama gerekebilir. Daha fazla ýþýnla daha iyi sonuçlar alýnabilir.
Karmaþýklýðýna raðmen günümüz filmleri genellikle Ray Tracing yöntemini kullanýyor ve yüksek detaylý bilgisayar resimleri oluþturuyor. Saniyede 60 karede çekilen 90 dakikalýk bir film için 324,000 kare gerekir ve her kare saatlerce bilgisayar iþlemi gerektirir. Oyunlarda tek bir GPU ile bunu yakalamak mümkün deðildir. O yüzden bir Hollywood filminde gördüðünüz çözünürlüðü ve kaliteyi elde edemezsiniz -en azýndan þimdilik.
Hibrit Grafik Ýþleme

Bilgisayar donanýmlarý pikselleþtirme iþlemini daha hýzlý hale getirmek için 20 yýldan daha fazla bir süredir uðraþýyor ve oyun tasarýmcýlarý baþarýlý sonuçlar elde ediyor. Ancak düzgün aydýnlatma, gölgeler ve yansýmalar halen sorun çýkarýyor.
Hibrit grafik iþleme ise geleneksel pikselleþtirme teknolojilerini bir çerçevedeki çokgenleri iþlemek için kullanýyor ve elde edilen sonuçlarý ihtiyaç olan yerde Ray Tracing ile birleþtiriyor. Ray Tracing iþlemi daha az karmaþýk hale geliyor ve yüksek FPS deðerlerine olanak saðlanýyor. Ancak performans ve kalite arasýndaki denge hiçbir zaman ortadan kalkmýyor.
Ray Tracing yönteminin nasýl çalýþtýðýný ve hesaplama karmaþýklýðýnýn sebebini daha iyi anlamak için belirli teknikleri gözden geçirelim.
Yansýmalar


Screen Space Reflections (SSR) gibi önceki aynalama ve yansýma teknikleri bir takým dezavantajlara sahipti. Bu teknikler çerçevede olmayan nesneleri gösteremiyor ya da olanlarý da kýsmen gösterebiliyordu. Ray Tracing kullanýlarak oluþturulan gölgeler ise üç boyutlu dünyada oluþturulduðu için sadece ekranda gözükenlerle sýnýrlý olmadan düzgün yansýmalar elde edilebiliyor.
Battlefield 5 için Ray Tracing kullanarak yansýmalar oluþturulmak istenildi. Çerçevenin grafik iþlemesi yapýldýðýnda piksel baþýna bir ýþýn kullanýlarak görünmesi gereken yansýma varsa oluþturulmaya çalýþýldý. Ancak çoðu yüzey yansýtan özellikte deðildi ve bu aþýrý yük getirdi. Optimize edilmiþ Battlefield 5 algoritmasý ise sadece yansýyan yüzeyler için gerekli ýþýnlarý hesaplýyor ve yarý yansýtan yüzeylerde de iki piksel için bir ýþýn kullanýyor.
Çoðu yüzey yansýtan özellikte olmadýðý için etki genellikle göze çarpmýyor ancak az iþlem gücü gerektiriyor. Çok yansýyan materyalin olduðu sahnelerde ise daha fazla ýþýn ve iþlem gücü gerekiyor. Bu yüzden RTX 2080 Ti ile bile 1080p çözünürlükte 54 FPS deðerinde kalýnabiliyor.
Gölgeler


Yansýmalarda olduðu gibi gölgeler için de Ray Tracing ile birden çok yaklaþým kullanmak mümkün. Ray Tracing ile birlikte oluþturulan gölgelerde yüzeydeki her piksel için bir ýþýk kaynaðýndan çýkan bir ýþýn gereklidir. Eðer ýþýn, yüzeye ulaþmadan önce bir nesne ile kesiþirse o piksel daha koyu olur. Iþýk kaynaðýna uzaklýk, ýþýðýn parlaklýðý ve rengi de hesaplamanýn içine katýlýr.
Ray Tracing, geliþtiricilere gölgeleri iþlemek için birçok araç sunuyor. Az önce bahsedilen teknikten daha karmaþýk ama gerçek dünya algýsýna yakýn teknikler de mevcut. Örneðin aþaðýda Shadow of the Tomb Raider oyunu için Ray Tracing ile oluþan gölge farkýný görüyorsunuz.

Çok sayýda ýþýk kaynaðý bulunuyor. Mum veya ampül gibi tek doðrultuda ýþýk veren ufak ýþýk kaynaklarýndan spot ýþýklara, neon iþaretlere varýncaya kadar farklý ýþýk kaynaklarý farklý davranýþlar sergiliyor. Ray Tracing gölgelerin daha yumuþak ve kompleks bir yelpazede daha doðru þekilde oluþmasýna olanak saðlýyor. Yukarýdaki örnekte olduðu gibi de ortaya ikna edici sonuçlar çýkýyor.
Ortam Aydýnlatma

Ortam aydýnlatma, gölge grafik iþlemenin çok özel bir kategorisini oluþturuyor. Köþelerde, aralýklarda, nesnelerin içindeki ve çevresindeki küçük alanlarda gördüðümüz grimsi gölgeleri çoðaltmaya yarýyor. Bir bölge içerisine ve bunun etrafýndaki bir bulut içerisine çok kýsa ve çok sayýda ýþýk göndererek elde ediliyor. Etraftaki nesnelerle oluþan kesiþim de hesaplanýyor. Kesiþim ne kadar fazla olursa daha koyu bölgeler elde ediliyor. Aslýnda bu yöntem çok fazla kaynak harcamýyor çünkü ýþýnlar yalnýzca yerel nesneler için test ediliyor ve BVH aðaçlarý daha küçük ve iþlenmesi kolay oluyor.
EA’ýn SEED grubu DirectX Ray Tracing kullanarak [Deðerli Ziyaretci, linki görmeniz icin bu mesaja cevap yazmanýz gerekiyorÜye olmak icin burayý týklayýnýz] ve Ray Tracing öncesi kullanýlan SSAO (Screen Space Ambient Occlusion) tekniðiyle RTAO (Ray Traced Ambient Occlusion) tekniðini kýyasladý. SSAO ile elde edilen sonuç kötü olmasa da RTAO daha iyi gözüküyor.
Caustic

Caustic, ýþýðýn kavisli yüzeylerden yansýtýlmasý ya da yansýmasý nedeniyle oluþan etkidir. Aydýnlýk bir havada öðle vakti güneþ ýþýðýnýn su dolu bir bardaktan yansýyan ýþýklarla oluþturduðu ýþýk demeti buna örnek olarak gösterilebilir.
Caustic etkisi de standart yansýmalara benzer þekilde hesaplanýr. Iþýnlar oluþturulur ve bir yüzeyle etkileþen ýþýnlar kaydedilir. Yansýmalar ve kýrýlmalar da buna göre oluþturulur. Yüzeysel caustic etkisi çok iþlem gücü gerektirmese de hacimsel caustic etkisi çok fazla hesaplama gerektirebiliyor.
Evrensel Aydýnlatma

En yüksek iþlem gücü gerektiren Ray Tracing tekniði evrensel aydýnlatmadýr ve tüm sahne boyunca her piksel için ýþýnlarý yayarak ýþýkta meydana gelen az deðiþikliklere bile uyum saðlamaya yarar. Evrensel aydýnlatma kavramý daha çok doðrudan olmayan, dolaylý aydýnlatma ile ilgilidir.
Örneðin karanlýk bir odada sürgülü bir pencerenin açýldýðýný düþünün. Pencerenin açýlýþý sadece duvarda ya da zeminde dikdörtgen biçiminde bir alaný aydýnlatmayacak ve ayný zamanda tüm oda daha aydýnlýk bir duruma gelecek. Evrensel aydýnlatma özelliði, karmaþýk bir ýþýn aðý yayar ve bir sahneyi aydýnlatmak için ek ýþýnlar oluþturur.

Metro Exodus, bu yöntemi uyguluyor ve bu yüzden de performans sorunlarý yaþayabiliyor. Sahnenin görünümünü her zaman deðiþtireceði anlamýna gelmese de bu yöntem Battlefield 5 ve Tomb Raider’da kullanýlan tekniklerden daha çok kaynak tüketiyor.
Ray tracing olmadan bile Metro Exodus, orta düzeyde ekran kartlarýný çok zorluyor. Ray Tracing ile birlikte de en yeni ve üst sýnýf ekran kartlarýný zorlayacak bir oyun olarak ortaya çýkýyor.
Performansý Arttýrmak Ýçin Yapay Zeka Kullanmak

Eðer oyunlardaki Ray Tracing örneklerine bakarsanýz, çoðu oyunda þu an için bir ya da iki Ray Tracing yönteminin kullanýldýðýný görürsünüz. Battlefield 5 sadece yansýmalarý, Tomb Raider gölgeleri, Metro da evrensel aydýnlatmayý kullanýyor. Þu anki GPU’lar için tüm yöntemlerin kullanýldýðý bir oyunu kaldýrmak mümkün olmasa da yakýn zamanda kabul edilebilir FPS deðerleriyle daha fazla Ray Tracing kullanan oyunlarý oynamak mümkün olacak.
Bu karmaþýklýðý azaltmak için çeþitli yöntemler de kullanýlýyor. Bu yöntemlerden birisi az sayýda piksel üzerinde Ray Tracing kullanmaktýr. Bunu da iki þekilde yapmak mümkündür. Nvidia’nýn DLSS algoritmasý, oyunun daha düþük bir çözünürlükte grafik iþlemesi yapmasýný ve ardýndan da yapay zeka kullanarak kýrýlmalarýn da kaldýrýlarak ölçeklenmesini saðlýyor. Bu yöntem mükemmel çalýþmýyor lakin en azýndan Ray Tracing ile düþen FPS’yi belli bir oranda telafi edebiliyor.
Bir diðer yöntem ise çözünürlüðü düþürmeden ýþýnlarýn sayýsýný azaltmak. Bu tekniðe de gürültü engelleme adý veriliyor. Bu teknikte daha az ýþýn kullanýlýyor ve daha sonra makine öðrenme algoritmalarý kullanýlarak boþluklar dolduruluyor. Gürültü engelleme tekniðini Ray Tracing kullanan üst düzey filmlerde de görüyoruz. Nvidia bu teknik üzerine de birçok araþtýrma yaptý. Oyunlarda bu tekniðin nasýl kullanýlacaðý henüz bilinmese de yöntemin potansiyeli mevcut.

Grafik Dünyasýnýn Geleceði

Epic ve Unreal Engine, Unity 3D, Frostbite gibi grafik iþlemedeki büyük isimler Ray Tracing tekniðini kullanmaya baþladý. Microsoft da donaným þirketleriyle ve yazýlým geliþtiricilerle bir araya gelerek DirectX 12 mimarisinin üstüne tamamen yeni bir DirectX Ray Tracing API ortaya çýkardý.
Nvidia’nýn RTX 2000 serisi GPU’larý, son kullanýcýlara sunulan ilk Ray Tracing hýzlandýrmasýna sahip donaným olmasýna raðmen, gelecek GPU’lar Ray Tracing performansýný iki ya da dört katýna çýkaracak. Bunun hangi noktaya varacaðýný þimdiden kestirmekse oldukça zor.
Her piksel için gerçek zamanlý Ray Tracing kullanmak RTX 2080 Ti üzerinde þu an için mümkün olmasa da grafik endüstrisi bu yönde bir yol izleyecek. 2030 yýlýnda GPU’larýn yüzlerce Ray Tracing çekirdeðine sahip olacaðýný görebiliriz.
Basit gölgeleri ve yansýmalarý düþündüðünüzde Ray Tracing kavramýnýn grafik iþlemenin geleceðini nasýl oluþturduðunu sorgulayabilirsiniz. Ancak gerçekte ýþýðýn doðru modellenmesi gerçek dünyanýn taklit edilmesinde oldukça önemli. Gerçek dünyadaki algýlarýmýzýn þekillenmesinde ýþýk kritik bir rol oynuyor. Bu çözülmesi zor bir sorun olsa da, Ray Tracing gerçekçi oyunlara atýlan büyük bir adým olarak karþýmýza çýkýyor.