İnternette Ray Tracing'in gelişimi ve nereden çıktığı hakkında bir sürü örnek ve içerik var. Ancak ben bugün size biraz daha pratik bilgiler vererek, oyunlarda bizlere nasıl bir etki sunduğunu anlatmak istiyorum. NVIDIA'nın yaklaşık iki yıldır dilinden düşürmediği “Ray Tracing Nedir?” sorusuna kısa yoldan cevap vereceğim.
Öncelikle bana “Madem çıkalı iki sene geçti, neden bu kadar geç anlatıyorsun?” diye sorabilirsiniz. Hemen belirtmem lazım ki bu teknolojinin getirileri, yakında çıkacak olan PlayStation 5 ve X Box Series X'e de uygulanacak. O yüzden bilmek ya da bilgilerimizi tazelemekte fayda var. Açık söylemek gerekirse teknik yönüm buradaki birçok arkadaşımızdan daha iyi değil. Ancak merak ettiğim için araştırdım ve o sırada da elde ettiğim bilgileri son kullanıcı gözü ile size anlatmaya çalışacağım.
Sonuç olarak, birçok kişi bu konularda daha çok bilgi sahibi olmak isteyecek: Işın izleme (Ray Tracing) nedir? Ne işe yarar? Video oyunlarında nasıl uygulanır? Bu makalede bu ve diğer soruları cevaplamaya çalışıyoruz.
Son dönemde geliştirilen ekran kartları, önceki nesillerde kullanılan teknolojilerin yerine yenilerine getirerek, daha üst seyiyede görsel deneyimler ve performans sunmayı hedefliyor. Anti Aliasing olarak bildiğimiz teknoloji, oyunlar sırasındaki kırılmaları ya da daha basit bir terim ile görsellerin üzerinde bulunan tırtırklanmaları gidermeye çalışan bir sistem idi. 2X, 4X, 8X gibi seçimler sayesinde bu kırılmaları azaltabiliyor, görsel anlamda daha iyi sonuçlar elde edebiliyorduk. Ancak ekran kartımız bu hesaplamaları yaparken o kadar çok yoruluyordu ki, yüksek FPS değerlerini almamızı engelliyordu.
Ancak NVIDIA, 2000 serisi ekran kartlarda bu konuya oldukça yoğun eğilmiş durumda. Sadece bu Ray Tracing için özel, GPU içerisindeki, RT çekirdeklerini ayırmış durumda. Bu sayede, ışınların gidiş yönü, çarptığı yüzey, uzaklık gibi faktörleri hesaplayarak, daha gerçekçi görüntüyü daha hızlı elde edebiliyor.
Nerede ise hepimiz, yeni bir ekran kartı serisi çıktığında aynı şeyleri duyuyoruz. Daha iyi görüntüler olacak, daha çok FPS alacağız vs. vs. Bu şekilde anlatımlar çok zaman bana safsata olarak geliyor. İçeriği doldurmak için ya da bilgi eksikliğinden eklenmiş cümleler gibi düşünüyorum. Ancak, çok basit bir örnek ile anlatımı mümkün. Zihninizde ön bir canlandırma yapacağım. Şimdi odanızda bulunduğunuz yerden karşıdaki duvara bakın. Ona ulaştığınızda geliş açısı ile gittiği noktayı takip edin. Altta eklediğim resimden ne demek istediğimi rahatça anlayacaksınız.
Burada tablo üzerindeki yansımanın görüş noktasına bağlı olarak, dış etkenlerle iletişimi sağlandıktan sonra oluşturulmasını kısaca Ray Tracing olarak açıklayabilirim. Işın kaynağına bağlı olarak, oluşacak yansımalar dinamik olarak üretiliyor. Ancak öyle benim resimde gösterdiğim gibi bir tane ışın gidiyor gibi düşünmeyin. Her bir piksel için ayrı ayrı anlık olarak giden onlarcası, hatta nesnenin kaç poligondan oluştuğuna bağlı olarak binlercesinden bahsediyorum.
Tabii bu da bir çok işlem demek. Bugüne kadar bunu gerçekleştirmek için gereken güçlü işlemciler evlere girecek kadar ucuz değildi. Elbette ekran kartlarının çok ucuz olduğunu söylemiyorum. Ancak daha önce sinema sektöründe kullanılan cihazların ücretini verip alarak, evde bu kalitede oynamanız mümkün değildi. İşte Ray Tracing teknolojisi de böylesine kaliteli grafikleri odamıza kadar sokmamıza yarayan bir sistemi de beraberinde getiriyor.
XBX DirectX Ultimate ile geliştirilmiş DXR 1.1 sürümünü destekleyecek. PS5'in ise Vulkan destekli Ray tracing destekleyecek. Ray Tracing'i tek bir olay olarak görmeyin. Olayın temelinde fizik hesaplamaları yatıyor. Fakat yansımalar, ışığın izlediği yol. Işığın her bir cisime çarptığında cisimden cisime bağlı olarak değişken ışık geçirgenlik miktarları ayrı ayrı hesaplanıyor. DXR 1.1, 1.0'ün üzerine üç ana özellik ekliyor en büyük farkı bu. 1.1 sürüm ile eskiden bazı hesaplamalarda CPU gücüne ihtiyaç duyuyordu. Ancak 1.1 ile onu aradan tamamen çıkardılar. Ekran kartlarının içerisinde gölgelendirme birimi denilen bir kısım var. "shaders" olarak geçer. Artık bu birimler de RayTracing hesaplamalarına dahil olabiliyor. Fakat, bunların gerçekleşmesi için geliştiricilerin de oyunlar üzerinde o yönde geliştirmelerini yapması lazım.
Yeni kartlarda yeni nesil teknolojiler kullanıldığından yukarıda bahsetmiştim. Teorik olarak Anti Aliasing için kullanılabilse de DLSS öncelikli olarak upscaling (düşük çözünürlükte renderlayıp yüksek çözünürlük şeklinde yansıtmak) teknolojisi olarak ortaya çıkmış ve AA teknolojilerinin yerini alma gibi bir amacı bulunmuyor. Ancak AA teknolojisinin yerini de alacağı belli oluyor. Bu, ekran kartınızın yapay zekasının karşılığı oluyor bir nebze. Firma, kendi bilgisayarlarında oluşturduğu alt yapılar ile oyunlarda karşılaşılacak sahneleri, yazılımına öğretiyor. Bu sayede, daha önceden hesaplanmış koordinat ya da görseller, oyun sırasında karşınıza çıktığında bilgisayarın elinde hazır veri olduğu için çok hızlı bir şekilde render alınıp, ekrana yansıtılabiliyor. NVIDIA'nın FPS değerinden ödün vermek istememesi sonucu ortaya çıkan bu teknoloji, oyunlarda sinematik seviyesinde ilerlememizi sağlayan bir teknoloji.
DLSS fikrinin iki ana kısmı var. Deep Learning / Derinlemesine Öğrenme ve Super Sampling / Süper Örnekleme.
Süper Örnekleme şu anda birçok oyunla bilgisayarınızda yapabileceğiniz bir şeydir. İşin özünde, oyunu monitörünüzün destekleyebileceğinin ötesinde bir çözünürlükte oluşturmak bulunuyor. Bu sayede poligon grafiklerdeki sert kenarların bazılarının düzeltilmesini sağlayabiliyor. Bazı PC oyunları gibi NVIDIA ve AMD kartları da bu teknolojiyi zaten destekliyor.
İşin en önemli kısmında ise “Derin Öğrenme” yatıyor. Derin öğrenme bulutumsu bir terimdir: temelde zamanla gelişen bir süreçte tonlarca hesaplama için yüksek güçlü donanım gerektirir. Bazı uygulamalar buna “yapay zeka” (AI) diyor, ama bu yanlış adlandırma; sistem herhangi bir insani anlamda “öğrenmiyor”, tekrarlayan bir süreçte daha da iyi oluyor. NVIDIA’nın DLSS sistemi, devasa veri merkezlerindeki grafik kartları ile belirli bir oyunda defalarca süper örnekleme yapıyor. Süper örnekleme tekniğini, oyunun görsellerinde tekrarlanan işlemlerle (ekranınızda gördüklerinizi oluşturan poligonlar ve dokular) bir oyuna uygulamanın en iyi yollarını hesaplıyor. Sürecin “derin öğrenme” kısmı burada devreye giriyor; sistem oyunun nasıl göründüğü ve nasıl daha iyi görüneceği hakkında mümkün olduğu kadar çok şey öğrenip, bunun uygulanması için verileri firmaya veriyor.
Sonuç olarak daha düzgün poligon çizgileri ve dokuları için süper örneklemeyi, bir oyuna genel iyileştirmeler uygulamak için derin öğrenmeyi alın ve bu ikisini birleştirin. Elinizde DLSS oluyor. NVIDIA’nın veri merkezlerinde daha önceden hesaplanan resim iyileştirme teknikleri, RTX kartındaki Tensor işleme çekirdeği aracılığıyla anında uygulanarak, bize şu ana kadar elde edilmiş en kusursuz oyun deneyimini sunuyor.
Aşağıdaki videodan Anti Aliasing teknolojisi ile DLSS'i karşılaştıran harika bir örneği izleyebilirsiniz.
Teorik olarak Ray Tracing nedir?
İsterseniz biraz daha derinlemesine bakalım. Teorik olarak, Ray Tracing, bir sahnedeki herhangi bir ışık kaynağından ışın üretilmesini içerir. Bu ışınlar daha sonra yüzeylere vurdukları, yansıttıkları veya kırıldıkları yollarında takip edilir. Her bir yüzeyle çarpışmada, ışığın özellikleri, malzemenin özellikleriyle birleştirilir ve açıkçası darbe açısı da önemli bir rol oynar.
Süreçte karşılaşılan nesneden farklı bir renk toplayabilen ışık, yansıyan ışığı simüle eden daha fazla ışın kullanılarak, dolayısıyla ışın izleme terimi kullanılarak daha da geri çekilir. İzleme süreci ışınlar sahneyi terk edene kadar devam eder. Tabii bir de bunun sonsuza ulaşması gibi durumlar olmaktadır. Mesela gökyüzüne giden ışınlar gibi. Tüm bunların hesaplanması için de DSLL'in önceden yaptığı hesaplamalar kullanılmaktadır.
Tahmin edebileceğiniz gibi, bu çok fazla zaman ve kaynak gerektiren bir süreçtir, çünkü ışınların çoğu sahnede hiçbir şeye çarpmaz ya da diğer ışınlar sonsuz olarak geri sekebilir.
Günümüzde ışın izlemeyi teorinin gerektirdiği şekilde uygulamak mümkün değildir ve bu nedenle video oyunlarında nihai görüntünün milisaniye sırasına göre oluşturulduğu gerçek zamanlı olarak tanıtılabilmesi için optimizasyonlar gereklidir.
Terminoloji
Teorik ışın izlemeyi oyun alanında geniş anlamda uygulamıştır, ancak bunun yansıması söz konusu olduğunda göz ardı edilemeyecek başka terimler ve süreçler de bulunuyor. Bunları da kısaca açıklamakta fayda var.
Ray Casting / Işın dökümü: Işın izleme algoritması içinde, ışınların ilkellerle (üçgenler) kesişip kesişmediğini kontrol etmek için ana video kameradan bir veya daha fazla ışın (örneğin karakterinizin FPS'deki gözleri) bir düzlemsel görüntünün her pikseli boyunca yansıtan süreçtir.
Bounding Volume Hierarchy (BVH) / Sınırlı Hacim Hiyerarşisi: Bir ağaç hızlandırma yapısı kullanan, hiyerarşik bir şekilde düzenlenmiş bir sahnede farklı miktarlarda geometri veya ilkelleri çevreleyen kutulara dayanan oldukça popüler bir ışın izleme hızlandırma tekniğidir.
BVH kavramı basit ama önemli bir varsayımdan başlar. Bir sahnede ışın ve obje arasındaki her bir kesişimin kontrol edilmesi, gerekli hesaplamalar açısından ağır olduğu için verimsiz bir süreçtir. BVH işleri hızlandırmak için kullanılabilecek tekniklerden biridir. Aslında her ışın, sahnenin her bir obje yerine derinliğe bağlı bir enine geçiş işlemi kullanılarak BVH'ye göre doğrulanmalıdır.
Denoising Filtering / Kirlilik Filtrelemesi: Diğer ışınların yansıtılmasına gerek kalmadan görüntü performansını ve kalitesini artırabilen bir filtreleme tekniğidir. Bu filtre, özellikle görüntüdeki ışınların izlendiği süreyi azaltmada etkilidir ve yüksek kalitede görüntüler üretebilir.
Lisede iken hepimizin sorduğu ama cevabını alamadığımız bir soru vardır. “İyi de bu bilgiler benim gerçek hayatta ne işime yarayacak?” Şimdi ona cevap vermenin vakti geldi. Henüz piyasaya çok fazla Ray Tracing ve DLSS destekli oyun bulunmamakta. Sonuçta bunun yeni bir teknoloji olduğunu bilir ve de oyunların yıllar gibi uzun sürelerde ortaya çıktığını düşünürsek, zaten bu teknoloji tarafından desteklenen oyunların da “henüz” çok fazla sayıda olmadığını düşünmek çok zor olmaz. Yine de ana akım bazı oyunlar bu teknolojileri desteklemekte. Mesela Battlefield V, Shadow of the Tomb Raider ve Metro Exodus gibi.
Minecraft
Minecraft'ta Ray Tracing daha kapsamlısı olan Path Tracing kullanılıyor. Yani ekranda Ray Tracing kullanılmadan görüntülenen hiç bir şey bulunmuyor. Bu sayede Control'deki gibi rasterizasyon (ray tracing olmayan standart rendering/görüntüleme metodu) kullanılarak görüntülenen pikseller oluşmuyor. Ama Minecraft'te bir iki partikül efekti hariç her şey ray tracing ile görüntüleniyor. Kısacası, bütün görseller ışın izleme ile görüntülendiğinde o oyunda path tracing kullanmış diyoruz.
Görsellerden önce kısaca Path Tracing'den de bahsetmek istiyorum. Path tracing, ışın izleme teknolojisini uygularken donanım gücünü ekomonik kullanmak için ışın kaynaklarından çıkan bütün ışınları takip etmektense, izleyiciye gelecek olan ışınları takip etmek için kameradan çıkıp ışık kaynaklarına doğru geriye hareket etmeye ve bu esnada ekrana görüntüleri ışın izleme metodu ile getirmiş olmaya verilen isimdir.
"Ray Tracing Nedir?" sorusuna en güzel cevap verecek görsel bu.
Control
2019 yılının en iyi oyunlarından biri olan ve ek paketler ile güncellenmeye devam eden Control, DLSS 2.0'ı en iyi kullanan yapımların başında geliyor. DLSS 2.0 sayesinde Control oyununda maksimum performans ve kalite almak mümkün de diyebiliriz. DLSS 2.0 ile birlikte objelerde daha keskin bir görünüme kavuşurken, 1080P, 2K ve 4 K çözünürlüklerde gözle görülür bir performans artışı sağlanıyor.
Aşağıdaki videodan DLSS 2.0'ın Control performansına göz atabilirsiniz.
DLSS 2.0 şu an itibariyle Wolfenstein: Youngblood, Control, Deliver Us The Moon ve Mechwarrior 5: Mercenaries oyunlarında bulunuyor.
Grafik kartım RTX ve DLSS destekliyor mu?
Bu teknolojiyi kullanabilmek için en düşük kart şu an piyasada bulunan yaklaşık 3.000 TL'lik fiyat etiketi bulunan RTX 2060 ekran kartı.
Ray Tracing ve DLSS nasıl etkinleştirilir?
Öncelikle NVIDIA'nın en son ekran kartı sürücüsünü yüklemenizi tavsiye ediyoruz. https://www.nvidia.com/en-gb/geforce/news/battlefield-v-metro-exodus-dlss-ray-tracing-game-ready-driver/
Sırada Windows 10'un Ekim 2018 güncelleştirmesi var. (sürüm 1809 veya üzeri olmalı)
https://blogs.windows.com/windowsexperience/2018/10/02/how-to-get-the-windows-10-october-2018-update/
Oyun içersindeki video seçenekleri menüsünden “NVIDIA RTX” i etkinleştirin ve “Ray Tracing” detay seviyesi seçip, içindeki “DLSS” yi açın (kimi oyunlarda yeniden başlatılmak gerekebilir).
RTX'li ekran kartlarına buraya tıklayarak ulaşabilirsiniz.