Birkaç yılda bir, oyunları daha gerçekçi hale getirme vaadinde bulunan yeni bir teknoloji ortaya çıkıyor. Uzun yıllar boyunca, gölgelendiriciler, mozaikleme ve gölge haritalama yöntemleri kullanıldı; şimdi ise yeni bir teknolojiyle tanışıyoruz: Path Tracing (Yol İzleme).
Eğer grafik teknolojisindeki bu yeniliğin detaylarını merak ediyorsanız, doğru yerdesiniz. Gelin, ışık ve öğrenme yolunu takip ederek bu teknolojiyi derinlemesine inceleyelim.
Path Tracing (Yol İzleme) Nedir?
Bu sorunun kısa ve öz cevabı şudur: “Path Tracing, Ray Tracing’den farksızdır“. Işığın davranışını modellemek için kullanılan denklemler ve ışın-üçgen etkileşimlerini hızlandırmak için kullanılan veri yapıları aynıdır. Modern GPU’lar da süreci hızlandırmak için benzer birimler kullanmaktadır. Ancak, bu süreç oldukça hesaplama yoğun bir süreçtir.
Ama, eğer bu iki teknoloji gerçekten aynıysa, Path Tracing’in neden farklı bir adı vardır ve oyun geliştiricilerine ne gibi faydalar sağlar? Path Tracing, Ray Tracing’den farklı olarak, tüm sahne boyunca çok sayıda ışın izlemek yerine, sadece ışığın en olası yolunu izler.
Path Tracing, Ray Tracing algoritmasından farklı olarak, tüm sahne boyunca çok sayıda ışını takip etmek yerine, yalnızca ışığın en olası yolunu izler.
Işınların nasıl çalıştığını daha önce inceledik (bkz: Daha Derin Bir İnceleme: Rasterizasyon ve Ray Tracing), ancak burada sürecin kısaca özetlenmesi gerekecek. Çerçeve, grafik kartının tüm geometriyi (sahneyi oluşturan üçgenleri) işlemesi ve belleğe kaydetmesiyle başlar.
Daha sonra, geometrinin daha hızlı aranabilmesi için bilgiler düzenlenir ve Ray Tracing süreci devreye girer. Her piksel için kameradan sahneye doğru tek bir ışın gönderilir.
Tam olarak değil; kamera ve pikselin konumuna göre ayarlanan bir vektör denklemi oluşturulur. Daha sonra, her ışın sahnenin geometrisine göre kontrol edilir ve bu, Ray Tracing’in karmaşıklığının ilk kısmıdır. Neyse ki, AMD ve Nvidia’nın en son GPU’ları bu süreci hızlandırmak için özel donanım birimleriyle donatılmıştır.
Bir ışın ve nesne etkileşime girdiğinde, hangi üçgenin etkileşime girdiğini bulmak için başka bir hesaplama yapılır ve üçgenin rengi, pikselin rengini etkiler.
Ancak ışık, bir nesneye çarptığında genellikle tamamen emilir. Gerçekte, çok fazla yansıma ve kırılma meydana gelir; bu nedenle mümkün olan en gerçekçi görüntüyü elde etmek için, yansıyan ve kırılan ışınlar için yeni vektör denklemleri üretilir.
Bu ışınlar, bir nesneye çarpana kadar izlenir ve bu süreç, bir ışık kaynağına geri dönene kadar devam eder. Orijinal birincil ışından itibaren, sahne boyunca izlenen toplam ışın sayısı her sıçramada üssel olarak artar.
Çerçevedeki diğer tüm piksellerde aynı işlem tekrarlanır; sonuç olarak gerçekçi bir şekilde aydınlatılmış bir sahne elde edilir, ancak son görüntüyü düzeltmek için hala ek işleme ihtiyaç duyulacaktır.
Ancak, en güçlü GPU ve CPU’larla bile, tam ışın izlemeli bir kare oluşturmak, hesaplama ve piksel gölgelendiricileri kullanılarak geleneksel yöntemlerle oluşturulan bir kareden çok daha fazla zaman alır.
İşte tam bu noktada Path Tracing devreye giriyor; kelime oyunu için özür dileriz.
Daha Fazla İş, Daha Az İş Anlamına Geldiğinde
Path Tracing’in ilk konsepti, James Kajiya tarafından 1986 yılında Caltech’te araştırmacıyken tanıtıldı. Bir işlemcinin durma noktasına gelmesi, sürekli artan ışın sayısıyla çalışması sorununun, sahnenin istatistiksel örneklemesi (özellikle Monte Carlo algoritmaları) kullanılarak çözülebileceğini gösterdi.
Geleneksel Ray Tracing, her ışının yansıma veya kırılma yolunun tam olarak hesaplanmasını ve bunların bir veya daha fazla ışık kaynağına kadar izlenmesini içerir. Yol izleme ile her piksel için birden fazla ışın üretilir; ancak bunlar rastgele bir yönde yansıtılır. Bu, bir ışın bir nesneye çarptığında tekrarlanır ve bir ışık kaynağına ulaşılana veya önceden ayarlanmış bir yansıma sınırına ulaşılana kadar devam eder.
Bu, kendi başına büyük bir hesaplama değişikliği gibi görünmüyor; peki sihirli kısım nerede?
Tüm ışınlar, karedeki pikselin son rengini oluşturmak için kullanılmayacaktır. Sadece belirli bir sayıda ışın örneklenecek ve algoritma, sonuçları kameradan ışık kaynağına doğru neredeyse ideal bir ışık sıçrama yolu olarak kullanacaktır. Daha sonra, son görüntünün doğruluğunu ayarlamak için her piksel için örnek sayısı ölçeklenebilir.
Fazladan matematik ve kodlama olsa da, nihai sonuç, Path Tracing’in genellikle piksel başına düzinelerce ışın ateşlemesine rağmen, işlenecek çok daha az ışın olmasıdır. Işınları izlemek ve etkileşim hesaplamalarını yapmak, normal işlemeyle karşılaştırıldığında performans düşüşüne neden olur; bu nedenle, bir pikseli renklendirmek için daha az ışın kullanmak avantajlıdır.
Ancak asıl önemli nokta şu: normalde daha az ışın, daha az gerçekçi bir aydınlatmaya yol açar; ancak çerçevenin piksellerinin renginin büyük bir kısmı yalnızca birincil ışınlardan etkilendiği için, ikincil ışınların çoğunu veya tamamını atmak, düşündüğünüz kadar olumsuz bir etki yaratmıyor.
Eğer sahnede ışığı yansıtacak çok sayıda yüzey varsa ve cam ya da su gibi ışığı kırıyorsa, ikincil ışınlar önemli hale gelir. Bu tür durumlarda, algoritma belirli bir piksel için doğru sonucu bulmak için yeterince örneklemenin yapılması gerekecektir.
Oyunlarda Yol İzleme
Son birkaç yılda, Path Tracing daha da popüler hale geldi. Bu teknoloji, oyunların daha iyi görünmesini sağlıyor ve gerçek zamanlı oyunlarda giderek daha fazla tercih ediliyor. Ancak, bu teknolojinin temel sıkıntılarından biri, genellikle diğer çözümlerle birlikte kullanılmasıdır. En iyi görsellik için bir oyun, Path Tracing ile birlikte geleneksel ışıklandırma, gölgelendirme ve efekt yöntemlerini birleştirebilir.
Yol izleme işlemi sadece ışığı izlemiyor; aynı zamanda aydınlatmanın nasıl yapıldığını da gözler önüne seriyor. Işık kaynağından gelen ışınların, nesnelerle etkileşime geçtikten sonra hangi yansıma ve kırılma yollarını izlediği, görsel dünyayı inşa eden önemli bir detaydır.
Eğer tam anlamıyla Path Tracing uygulayan bir oyun geliştirmek isterseniz, bu sürecin maliyeti ve gereksinimleri oldukça fazla olacaktır. Ancak bazı oyunlar bu teknolojiyi yalnızca belirli bir bölümde kullanmayı tercih edebilir. Bir başka deyişle, Path Tracing, sahne karmaşık hale geldikçe daha etkili hale gelirken, daha basit sahnelerde diğer yöntemlerle birlikte kullanılması daha uygun hale gelebilir.
Sonuç olarak, Path Tracing’in geleceği oldukça umut verici. Daha önce yalnızca yüksek kaliteli 3D grafik işleme için kullanılan bir yöntem olan bu teknoloji, oyunlarda daha yaygın bir uygulama bulmayı sürdürüyor.
Bu teknoloji ilk olarak bir kişinin çalışmasıyla başladı. Christoph Schied, teknik olarak bilinen adıyla Q2VKPT’yi, bir araştırma projesi kapsamında oluşturdu. Diğer grafik teknolojisi uzmanlarının katkılarıyla, Quake II RTX doğdu ve tüm aydınlatmasını Path Tracing (Yol İzleme) ile gerçekleştiren ilk ünlü oyun oldu.
Orijinal modeller ve dokular hala aynı kaldı; tek değişen şey yüzeylerin nasıl aydınlatıldığı ve gölgelerin nasıl oluşturulduğuydu. Statik görüntüler, yeni aydınlatma modelinin ne kadar etkili olduğunu göstermekte yetersiz kalabilir. Ücretsiz bir kopya edinebilir veya bu videoyu izleyerek kendiniz görebilirsiniz:
Path Tracing’in Zorlukları ve Gelişimi
Grafik teknolojisindeki stokastik çoklu önem örneklemesi ve varyans azaltma algoritmaları gibi kavramlar, projenin iki önemli noktaya işaret etmesine yardımcı oldu: Birincisi, Path Tracing’in müthiş bir görsel kalite sunduğu, ikincisi ise geliştiriciler ve donanım için hala büyük bir zorluk oluşturduğuydu. Matematiksel olarak bu sürecin ne kadar karmaşık olduğunu görmek isterseniz, “Ray Tracing Gems II” kitabının 47. bölümüne göz atabilirsiniz.
Quake II RTX, her şeyin mümkün olduğunu gösterirken, Control ve Cyberpunk 2077 gibi oyunlar, tüm aydınlatma ve gölgelendirme yöntemlerinin bir araya gelmesiyle muhteşem grafiklerin elde edilebileceğini kanıtlıyor. Yansıma ve gölgeler için Ray Tracing, rasterizasyon ve gölgelendiricilerle harmanlanarak kullanılıyor.
Yani, oyunların tamamen Path Tracing kullanarak oluşturulduğunu görmemize daha zaman var.
Geleceğe Doğru Yol İzleme
Gerçek zamanlı render dünyasında nispeten yeni olmasına rağmen, Path Tracing kesinlikle burada kalacak gibi görünüyor. Bu teknolojiyi oyunlarda gördük ve Path Tracing, çevrimdışı render süreçlerinde de yoğun olarak kullanılıyor. Blender, Autodesk Arnold ve Pixar’ın RenderMan gibi yazılımları bu teknolojiye örnektir.
GPU’lar işlem kapasitelerinin sınırlarına ulaşmış değiller, bu yüzden Ray Tracing (geleneksel veya yol izleme) hala oldukça talepkar bir süreç olsa da, yıllar içinde daha güçlü donanımların piyasaya çıkması bekleniyor.
Path Tracing, Game of Thrones gibi dizilerin CGI’larını oluşturmak için de kullanıldı.
Gelecekteki PC oyun geliştiricilerinin, muhteşem grafikler sağlayan işleme tekniklerini araştırmaya devam edecekleri aşikar ve Path Tracing bu noktada önemli bir potansiyele sahip. Konsol tarafında da Xbox Series X ve PlayStation 5 gibi cihazlar Ray Tracing için destek sunuyor, ancak bu cihazların GPU’ları birkaç yıl içinde eski kalacağından, geliştiriciler son kalan performans kapasitelerini kullanmak için çeşitli optimizasyon yollarına başvuracaklar.
Özetle, Path Tracing, Ray Tracing’in hızlı bir alternatifi olarak karşımızda. Neredeyse aynı kalitede görüntü sunarken, çok daha hızlı çalışıyor. Ev bilgisayarları ve konsol grafik teknolojisi sürekli gelişirken, yakın gelecekte en sevdiğimiz oyunlarda, sinema filmlerindeki grafik kalitesine ulaşmamız uzun sürmeyecek.