Işın izleme teknolojisi Nvida’nın 2000 serisi ekran kartlarıyla beraber hayatımıza girdi. Artık diğer kart üreticilerinin de önemle üzerine durduğu bu teknoloji yepyeni bir forma kavuşuyor. Işık ışınlarının yansımalarının da hesaplandığı Path Tracing sayesinde yeni nesil oyunlarda çok daha iyi aydınlatmalara sahip olabileceğiz.
Oyun grafikleri son on, hatta özellikle son beş yıl içerisinde çok ciddi ilerlemeler kaydetti. Gerçekçi görsellere yetişmek amacıyla donanımlar sürekli gelişirken, teknoloji devleri daha yüksek kalite, performans ve deneyim sunmak amacıyla yazılım alanında her geçen gün üzerine koymaya devam ediyor. Bugün ise tıpkı ray tracing (ışın izleme) gibi görsel kaliteyi artıran, gelecekte ismini sıkça duyacağımız oldukça önemli bir teknolojiye bakacağız: Path Tracing.
NVIDIA, GDC 2022 ile birlikte görüntü oluşturma tekniklerini bir sonraki noktaya taşımak amacıyla bazı adımlar attı. Yakın zamanda “en doğru işleme yöntemi” olarak duyurulan bu teknoloji, ışın izleme ve grafikler söz konusu olduğunda çıtayı yükseltecek gibi görünüyor.
Path tracing (yol izleme), görüntüyü çoğaltabilmek için tek bir piksel ile birlikte rastgele yönlerde sıçramalar yaparak ışığın gittiği yolu simüle etmeye dayanan, daha gelişmiş bir ışın izleme biçimidir. Işınlar doğrusal bir şekilde izlenmek yerine, ışık kaynağından hedef nesneye kadar birçok sıçrama üzerinden izlenmektedir. Grafik Araştırmaları Başkan Yardımcısı Aron Lefohn, RTX 3090 ve bu teknikle birlikte neler yapılabileceğini gösteren birçok video klip yayınladı. Ormanda yürüyen bir kaplanı gösteren klipte, 3 milyar örneklenmiş üçgen olduğu bildirilen, 30 sıçramalık bir metrikle path tracing özelliği bulunuyor. Yukarıdaki tweet dizisinden yayınlanan tüm videoları görebilir, fikir sahibi olabilirsiniz.
Path tracing gerçek zamanlı ilerliyor, dinamik ışık ve gölge, yansımalar ve kırılmalarla dolu, etkileşimli, fotogerçekçi 3B ortamların oluşturulması için kapıları aralıyor. Peki “yol izleme” olarak Türkçeye çevirebileceğimiz path tracing tam olarak nedir?
Oyunlarda veya çeşitli yazılımlarla üretilen görseller genellikle üç boyutludur. Rasterizasyon (rasterleştirme) ile üretilen görüntüler ise sadece tek bir bakış açısına yöneliktir. Bu teknik esasen en başından beri GPU’ların kalbinde yer alıyor. Modern NVIDIA GPU’lar saniyede 100 milyardan fazla rasterizasyona uğramış piksel üretebiliyor. Bu da rasterleştirmeyi oyun gibi gerçek zamanlı grafikler için ideal hale getiriyor.
Path Tracing Neden Önemli?
Işın izleme (ray tracing) ise çok daha güçlü, bizleri cezbeden görseller sunan tamamen farklı bir teknik. Işın izlemede tek bir noktayla sınırlı değiliz. Birçok farklı noktadan, birçok farklı yönden bakıldığında görülebilen gerçekçi nesneler/objeler üretilebiliyor. NVIDIA, Turing mimarisinden başlayarak bu zorlu iş yüklerinin üstesinden gelebilmek için RT çekirdekleri sunmaya başladı. Bugün tek bir GPU saniyede milyarlarca ışını işleyebiliyor. Öte yandan AMD de RDNA 2 mimarisi ve Radeon RX 6000 serisi ekran kartlarıyla birlikte ışın izleme dünyasına giriş yaptı. Intel tarafından piyasaya sürülen Xe-HPG tabanlı Arc Alchemist ekran kartları yine NVIDIA’dakine benzer şekilde ışın izleme donanımları taşıyor.
Tüm bu ışınları izleyebilme imkanı, ışığın gerçek dünyada nasıl dağıldığını, rasterleştirme ile mümkün olandan çok daha doğru bir şekilde simüle etme imkanı tanıyor. Ancak bu ışığı nasıl simüle edeceğiz ve bu simülasyonu GPU’ya nasıl getireceğiz?
Oyunlarda path tracing fikri kısa zaman öncesine kadar hayal bile edilemezdi. Birçok oyun geliştiricisi, ihtiyaç duyduğu performansa sahip oldukları takdirde gerçek zamanlı grafikler için “yol izleme” tekniğini kullanmak istediğini açıkça belirtmişti. Ancak geçmişte donanımlarla sunulan performans çok yetersizdi ve bu fikir ulaşılamaz görünüyordu.
Sonrasında GPU’lar gelişmeye devam etti ve artık ışın izleme destekli donanımlara ulaşmak o kadar da zor değil. Tıpkı filmlerde olduğu gibi, bu teknolojileri oyunlarda ilk olarak sınırlı bir şekilde gördük. Ancak şimdi tanıklık ettiğiniz gibi ray tracing destekli oyunların sayısı hızla artıyor. Ayrıca belirli ışın izlemeli oyunlar, geleneksel rasterizasyon tabanlı işleme tekniklerini bazı ışın izleme efektleriyle birleştiriyor.
Geliştiriciler isterlerse tekniklerin oyunlarında bir karışımını kullanabilirler. Oyun geliştiricileri, birincil ışınlar üzerinde rasterizasyon yapabilir ve ardından sahnenin aydınlatılması için ışığın yolunu izleyebilir.
Rasterizasyon, basit tabirle tek bir noktadan bir dizi ışığı yayma işlemidir. Işın izleme bunu daha da ileri götürür ve ışınları birçok noktadan herhangi bir yöne gönderebilir. Yol izleme (path tracing) ise ışın izlemeyi daha büyük ışık simülasyon sisteminin bir bileşeni olarak kullanan gerçek ışık fiziğini simüle eder. Bu, bir sahnedeki tüm ışıkların (Monte Carlo veya diğer teknikler kullanılarak) odalara veya ortamlara stokastik olarak örneklendiği anlamına gelmekte.
Simüle etme sürecinde bir ışını tek bir sekmeden geriye doğru izlemek yerine, ışınlar ışık kaynaklarına kadar, çoklu sekmeler üzerinden izleniyor. Birkaç oyun bunu zaten yapıyor ve sonuçlar oldukça etkileyici. Hatırlarsanız Microsoft, Minecraft’ta path tracing’i çalıştıran bir eklenti yayınlamıştı. Öte yandan Quake II yeni bir eklenti sayesinde bu tekniği kullanabiliyor.
Doğrusu halen yapılacak çok şey var. Öte yandan tüketicilerin bu tür deneyimleri yaşaması için yüksek bilgi işlem gücü sunabilen, güçlü donanımlara sahip olması gerekiyor. Oyun geliştiricileri ise teknoloji dünyasındaki gelişmişlik seviyesine göre daha kaliteli, aynı zamanda daha fazla güç gerektiren oyunlar tasarlıyor. Ek olarak, görsel hesaplama söz konusu olduğunda en zorlu projelerin oyunlar olduğunu belirtelim.
Path tracing yine bir ışın izleme biçimi, ancak iki görüntü oluşturma tekniğinin aralarında bazı nüanslar var. Ray tracing (ışın izleme) izleme tekniği aslında ismiyle her şeyi açıklıyor. Bu teknikte ışınlar simüle ediliyor ve köklerinden son noktasına kadar izleniyor.
Buna karşılık path tracing, başlangıç noktası ile hedef arasında rastgele yönlerde ayrılmak üzere yayılan farklı ışınlar üretiyor. Yansıyan ışık, ışın izlemedeki gibi doğrusal şekilde değil, yüzeylere ulaştığında vereceği farklı tepkilerle birlikte gerçekçi tasvirlerle sonuçlanıyor. Nihayetinde path tracing çok daha geniş kapsamlı ve gelişmiş bir teknik. Bu nedenle donanımsal olarak daha fazla kaynak gerektirdiğini not düşelim.