Diablo Immortal, donanım ray izleme ile görüntü kalitesini artırıyor

Diablo Immortal, Blizzard Entertainment ve NetEase tarafından ortaklaşa geliştirilen, ücretsiz oynanabilen çok oyunculu bir aksiyon rol yapma oyunudur (ARPG). Diablo serisinin yeni bir bölümü olan Diablo Immortal, 2022'de kullanıma sunuldu. Oyun, Diablo 2 ile Diablo 3 arasındaki hikaye boşluğunu doldurur ve Dünya Taşı'nın parçaları etrafında yeni bir macera sunar. Oyuncular, iblislere ve yozlaşmış güçlere karşı savaşmak için Sanctuary kıtasını keşfeder.

Mobil GPU mimarisindeki yenilikler ve donanım hızlandırma özelliklerindeki gelişmeler sayesinde ışın izleme teknolojisi, masaüstünden mobil cihazlara kademeli olarak taşınıyor ve yüksek kaliteli grafik oluşturmanın temel itici güçlerinden biri haline geliyor. Fiziksel olarak gerçekçi dinamik yansımaları hesaplamak çok fazla işlem gücü gerektirir ancak özel bir donanım birimi, güç açısından kısıtlı mobil platformlarda bunu mümkün kılar. Bu teknoloji, ışığın sahnedeki yayılma yolunu gerçek zamanlı olarak izleyerek ayna, metal ve sıvı gibi karmaşık yüzeylerin yansıtıcı davranışını doğru şekilde simüle eder. Işın izleme, geleneksel rasterleştirme şemalarının mekansal sınırlamalarının ve yaklaşıklık hatalarının üstesinden gelir ve dinamik ışık kaynaklarının, ekran dışındaki nesnelerin ve çok seviyeli yansımaların küresel olarak tutarlı bir şekilde ifade edilmesini destekler.

Mobil cihazlarda donanım ray izleme

Donanım ışın izleme teknolojisi temel olarak iki uygulama paradigması içerir: ışın izleme ardışık düzeni ve ışın sorgusu.

Işın izleme ardışık düzeni, özel gölgelendirici aşamaları (ışın oluşturma / kesişim / en yakın isabet gölgelendiricisi) aracılığıyla eksiksiz bir ardışık düzen oluşturur. Işın etkileşimi üzerinde hassas kontrol sağlayabilse de ışın izleme ardışık düzeni bağımsız ardışık düzen yapılandırması gerektirir. Bu da geliştirmenin karmaşıklığını artırır.

Öte yandan ışın sorgusu, ışın sorgularının doğrudan geleneksel hesaplama veya parçacık gölgelendiricilerinden başlatılmasına olanak tanır. Bu da ışın sorgusunu mobil ışın izleme için temel bir teknoloji haline getirir. Ayrı ardışık düzenlere olan ihtiyacı ortadan kaldıran ışın sorgusu, geliştirme sürecini önemli ölçüde basitleştirmenin yanı sıra üç önemli avantaja sahiptir:

  1. Çeşitli hesaplama ortamları ve tam olmayan ışın izleme donanımlarıyla uyumluluk sağlar
  2. Herhangi bir gölgeleme aşamasında ışın izlemenin isteğe bağlı olarak çağrılmasını destekler
  3. Kaynak kullanımını azaltarak mobil platformların bant genişliği ve güç kısıtlamalarını karşılar ve mobil oyunlarda dinamik küresel aydınlatma ve gerçek zamanlı yansıma gibi gelişmiş efektler için uygun bir temel sağlar

Diablo Immortal, GPU'nun donanım ray izleme özelliklerinden yararlanmak için Vulkan'ı kullanır. Oyun, sahnedeki ışık ışınlarının yolunu gerçek zamanlı olarak hesaplar ve Android cihazlarda gerçek zamanlı yansıma efektleri elde etmek için karmaşık malzeme özelliklerini dikkate alır.

Şekil 1. Işın izlemeli yansımanın açık olduğu sahne.
Şekil 2. Işın izlemeli yansımanın kapalı olduğu sahne.

Hızlandırma yapısı

Hızlandırma yapısı, donanım ışın izlemenin temelini oluşturur. Hızlandırma yapısı, hiyerarşik veri organizasyonu aracılığıyla ışın kesişimi testinin verimliliğini büyük ölçüde artırır.

Sistem genellikle iki düzeyden oluşur: üst düzey hızlandırma yapısı (TLAS) ve alt düzey hızlandırma yapısı (BLAS):

  • TLAS, sahne yöneticisi rolünü oynar. Tüm BLAS örneklerinin uzamsal dönüşüm matrisini (konum, dönme ve ölçek dahil) kaydederek dinamik sahnelerin global organizasyonunu gerçekleştirir. Örneğin, TLAS geliştiricilerin aynı ağaç modelinin yüzlerce örneğini sahnede farklı konumlara ve pozlara dağıtmasına olanak tanır. Bu sayede geliştiricilerin, geometriyi yeniden oluşturmak yerine her karede hareket eden nesnenin dönüşüm matrisini güncellemesi yeterlidir.
  • Temel birim olarak BLAS: Tek bir 3D nesnenin geometrik ayrıntılarını verimli bir şekilde kodlamaktan sorumlu olan BLAS, sınırlayıcı hacim hiyerarşisi (BVH) algoritması aracılığıyla bir uzamsal dizin yapısı oluşturur. Böylece, ışın algılama sırasında alakasız alanlar hızlıca atlanabilir.

Bu hiyerarşik tasarım, ışın izleme ardışık düzeninin ışın ==> TLAS (kaba elek nesne örneği) ==> BLAS (tam kesişim) şeklinde verimli bir algılama zinciri oluşturmasına olanak tanır.

Dinamik ve statik modelleri ayırmak, hızlandırma yapısı oluşturma maliyetini en aza indirmenin anahtarıdır:

  • Statik model: BLAS'ın yalnızca başlatma aşamasında bir kez oluşturulması gerekir ve sonraki sahne yüklemelerinde doğrudan yeniden kullanılabilir. Büyük ölçekli sahnelerin yükleme gecikmesini önlemek için BLAS oluşturma görevini birden fazla çerçeveye dağıtmak amacıyla çerçevelemenin eşzamansız ön oluşturma teknolojisi kullanılabilir.
  • Dinamik model
    • İskelet animasyonla çalışan: Yeni bir köşe ucu arabelleği oluşturmak için kaplanmış köşe ucu verilerinin her karede paralel olarak işleme gölgelendiricisi tarafından hesaplanması ve ardından ilgili BLAS'ın artımlı güncellemesini tetiklemesi gerekir. Bu sayede performansı artırmak için tam yeniden yapılanma önlenir.
    • Katı cisim dönüşümü: Yalnızca kaydırma/döndürme/yakınlaştırma dönüşümleri söz konusuysa BLAS'ı değiştirmeniz gerekmez. TLAS'taki dünya dönüşüm matrisini güncelleyip TLAS hızlı güncelleme sürecini tetiklemeniz yeterlidir.

Dinamik sahnelerde ışın izlemede hızlandırma yapısı verimliliğini korumak için düzenli yeniden oluşturma işlemi gereklidir. Dinamik nesneler geometrik topolojide deformasyon veya büyük ölçekli köşe kayması gibi önemli değişiklikler geçirdiğinde orijinal uzamsal bölme başarısız olabilir. Bu da ışın geçişi sırasında çarpışma algılama performansını düşürür. Sonuç olarak, son derece dinamik BLAS/TLAS'ın artımlı güncelleme yerine tam yeniden yapılandırılması her N karede bir tetiklenmelidir.

Son olarak, ışın izleme oluşturmanın performansını optimize etmek için karakterin görüntülenebilir bölgesine dayalı dinamik bir TLAS oluşturma stratejisi benimseyin: Işın kesişimi hesaplamasının temel ek yükünü azaltmak için TLAS'a yalnızca karakterin etkin yarıçap eşiğindeki modeller dahil edilir.

Işın izlemeli yansımalar

Işın izlemeli yansımalar, ekran alanı yansımaları (SSR) ve düz yansımalar (bir sahneyi tek boyutta yansıtan basit yüzeyler) gibi geleneksel tekniklere kıyasla çeşitli avantajlara sahiptir. Işın izlemeli yansıma, ışığın yolunu fiziksel olarak simüle eder, sahnenin içindeki ve dışındaki dinamik nesneleri doğru şekilde yakalar, kavisli ve düz olmayan yüzeylerden gelen doğal yansımaları destekler ve aynalar gibi birden fazla ışık sıçrama efekti sağlar. Buna karşılık, SSR ekranda görünen bilgilerle sınırlıdır ve düz düzlemsel yansımalar karmaşık sahnelerde görsel hatalara veya bozulmalara eğilimlidir.

Şekil 3. Kanatların havuzdaki yansıması.
Şekil 4. Canavarın yansıması.

Işın izlemeli yansıma, prensipte geleneksel SSR'ye benzer: Işın izlemeli yansıma, görüş hattı yansıması yönünde piksel piksel ışınlar yayar ve ışınların sahne nesneleriyle kesişim noktasını hesaplar. Işın sorgusu API'si tarafından döndürülen kesişim noktası, üçgen düzeyinde geometrik bilgileri (örnek kimliği, geometri dizini ve ilkel dizini dahil) ve rasterleştirme parametrelerini (barysentrik koordinatlar) içerir ancak piksel renk verilerini içermez. Tipik çözüm, sahnenin tüm doku ve malzeme parametrelerini küresel bir dizin dizisinde önceden derlemek için bağlantısız kaynak bağlama teknolojisini kullanır. Işın sorgusu tarafından döndürülen geometrik tanımlayıcıları kullanarak, ilgili malzemenin fiziksel özellikleri (ör. normal harita ve pürüzlülük) aranabilir ve daha sonra yüzey gölgelendirme bilgilerini hesaplamak için barysentrik koordinat enterpolasyonu ile birleştirilebilir. Ayrıca kesişimin gerçek renk değeri, rasterleştirme yoluyla yeniden oluşturulabilir.

Ancak Diablo Immortal ekibi, uygulama sürecinde iki önemli teknik sorun tespit etti:

  1. Işıklandırma modelinin birleştirilmesi zorunlu kılınmıştı. Bu durum, projenin geçmişinde biriken çeşitli gölgelendirme sistemleriyle çelişiyordu ve parıltılı materyal ile orijinal materyal arasında bir uyuşmazlığa neden oluyordu.
  2. Çeşitli köşe noktası biçimleri, rasterizasyon aşamasında talimat dallandırma verimliliğinin azalmasına neden olur. Bu durum, mobil cihazın dar performans bütçesi nedeniyle önemli bir sorundur.

Diablo Immortal ekibi, geometri işlemeyi gölgelendirme hesaplamalarından ayırmak için görünürlük arabelleğini yenilikçi bir şekilde kullanıma sundu:

  • Işın izleme aşaması: Işın sorgusu aracılığıyla piksel düzeyinde ışın isabeti bilgileri gerçek zamanlı olarak yakalanır. Kesişim noktasının 3D uzamsal tanımlayıcısı (PrimitiveIndex ile InstanceID), kompakt bir görünürlük kimliğine kodlanır ve ekran alanı arabelleğine yazılır.
  • Renklendirme aşaması: Köşe ve piksel gölgelendiriciler tarafından yapılan işlemlere benzer şekilde, görünürlük arabelleğindeki geometrik tanımlayıcıları dinamik olarak ayrıştırılır, orijinal modelin köşe özellikleri (UV'ler ve normaller gibi) ve fiziksel tabanlı malzeme haritaları getirilir ve son olarak malzeme türüyle ilişkili gölgelendirme hesaplamaları yapılır.

Bu çözüm, resim öğelerinin, köşe noktası biçimlerini veya gölgelendiricileri değiştirmek zorunda kalmadan ışın izlemeli yansıma sistemine bağlanmasına olanak tanır.

Belirli oluşturma adımları

Işın sorgusu geçişi

Işın izleme aşamasına karşılık gelir ve ekran alanı yansımaları için bir görünürlük arabelleği oluşturur:

  • Renk0
    • Biçim: R32G32UInt
    • R = ÜçgenKimliği,G = Barycentrics
Şekil 5. Görünürlük tamponu.
  • Derinlik:
    • Biçim: Depth32F
    • D = EncodeAsFloat(InstanceIdx, GeometryIdx)
    • Kesişimin materyal tanımlayıcısı 32 bit kayan noktayla kodlanır ve materyalin derinlik kodlama eşleşme algılama tekniğinin sonraki aşaması için derinlik arabelleğine yazılır.
Şekil 6. Kodlanmış derinlik.

Pixel gölgelendiricideki ışın sorgusu, hesaplama gölgelendiriciye kıyasla aşağıdaki avantajlara sahiptir:

  • Ardışık düzen entegrasyonu: Ardışık düzen, doğrudan mevcut ileri/ertelenen oluşturma ardışık düzenlerine yerleştirilir ve oluşturma ardışık düzeni durumunun sürekliliğini korur.
  • Mobil bant genişliği optimizasyonu: Mobil karo tabanlı mimaride, ışın isabeti verileri RenderTarget'ye yazıldığında çip üzerinde kayıpsız sıkıştırma tetiklenebilir. Bu sayede, bellek bant genişliği tüketimi, arabelleğe alınan geleneksel hesaplama gölgelendirici çıkışına kıyasla azaltılır.
  • Işın miktarı kontrolü: Yansıtıcı olmayan alanlar, şablon testi ile birlikte bir ön hesaplama aşaması aracılığıyla işaretlenebilir ve reddedilebilir.

Kartı çözümleme

Diablo Immortal ekibi, renklendirme aşamasında (Işın izlemeli yansımalar bölümüne bakın) derinlik testi donanım birimini kullanarak ve malzemeleri art arda gruplar halinde renklendirerek hızlı tanımlama eşleştirmesi elde etti.

Her materyal için tam ekran bir çizim geçişi yayınlanır. Köşe üstü gölgelendirici, mevcut malzemenin kodlanmış tanımlayıcısını dinamik olarak yeniden oluşturur. Derinlik Eşit Testi kullanılarak tanımlayıcı, derinlik arabelleğindeki kodlanmış değerlerle karşılaştırılır ve yalnızca kodlanmış değerleri tam olarak eşleşen pikseller (yani geçerli materyal örneğine ait pikseller) tutulur. Saklanan pikseller, ilgili materyal gölgelendiricisini yürütür.

Ardından, piksel gölgelendiriciye yüksek hassasiyetli malzeme yeniden üretimi uygulanır:

  • Geometri verilerinin kodunu çözme: Görünürlük arabelleğinden üçgen tanımlayıcısı (MeshID + PrimitiveID) ve ağırlık merkezi koordinatlarını ayıklayıp ilgili üçgenin köşe özelliklerini (konum, UV, normal vb.) köşe arabelleğinden dinamik olarak yükler. Her model bağımsız bir malzeme olarak gölgelendirildiğinden, bağlama gibi gelişmiş özelliklere gerek yoktur.
  • Yüzey parametresi yeniden oluşturma: Kesişim noktasındaki UV koordinatlarını, ağırlık merkezi koordinatı enterpolasyonu kullanılarak hesaplar. Haritayı, interpole edilmiş UV'lere göre örneklemek için yazılım rasterleştirmesi gerçekleştirilir.
  • Gölgelendirme hesaplamasının yeniden kullanılması: Ana oluşturma ardışık düzeniyle aynı malzeme mantığını korumak için mevcut gölgelendirici kodunu doğrudan yeniden kullanır.
Şekil 7. Yansıma çözüldü.

Son olarak, yansıma hesaplamasına gerçekten katılan modeller yalnızca sahnenin çok küçük bir bölümünü oluşturur. GPU tarafından döndürülen yansıma modeli tanımlama verileri, yansımaya dahil olmayan modelleri/malzemeleri ortadan kaldırmak için eşzamansız olarak okunabilir. Bu sayede gölgelendirme aşamasında çizim çağrısı sayısını (çizim çağrısı, malzemeler ve bir ağ çizim için GPU'ya gönderildiğinde gerçekleşir) etkili bir şekilde azaltabilirsiniz.

Fiziğe dayalı yansıma

Yüksek kaliteli yansımalar elde etmek için yansıtıcı yüzeyler, pürüzlülüğüne göre üç türden birine sınıflandırılır:

  1. Yansıma yok: Kaynak tasarrufu için bu yüzeyler için yansıma hesaplamaları atlanabilir. Yüzey çok pürüzlüyse yansıma bulanık ve soluk olur, bu nedenle katkı belirgin olmaz.
  2. Aynada yansıma: Düz bir ayna gibi, yansıyan görüntü net ve bulanık değildir. Çizgiyi, görüş hattından doğrudan yansıma yönünde çekin.
  3. Parlak yansıma: Yüzeyin belirli bir pürüzlülüğüne sahip yansıması, hem hesaplama verimliliğini hem de fiziksel doğruluğu hesaba katabilecek GGX önem örnekleme yöntemine göre simüle edilir. Yansıma, çizgiyi yayarken yansımanın ana yönüne doğru sapma gösterir. Bu da vurgu alanının örnekleme verimliliğini artırır.

Diablo Immortal ekibi, sınırlı güç tüketimi ile kullanılabilir görüntü kalitesi elde etmek için 1SPP+Gürültü Azaltıcı çözümü benimsedi. Yani Diablo Immortal ekibi piksel başına bir örnek aldı ve ardından düşük örnekleme hızının neden olduğu büyük miktarda gürültüyü yumuşatmak için zamansal/uzamsal gürültü azaltma algoritması kullanıldı.

Diablo Immortal ekibi, ışın izlemeli yansımalar ve ekran alanı yansımaları için optimize edilmiş yüksek performanslı bir gürültü giderici olan AMD FidelityFX Denoiser'daki Yansıma Gürültü Gidericisi'ni seçti. Yansıma gürültü gidericinin temel avantajı, gürültü gidericinin uzay-zaman karma gürültü azaltma algoritmasıdır: Yansıma gürültü giderici, mevcut kare ve geçmiş kare verilerini (hareket telafisine dayalı) uzamsal filtreleme teknikleriyle (ör. varyans kılavuzlu kenar tutma filtreleme) birleştirerek gürültüyü etkili bir şekilde ortadan kaldırır ve çok düşük örnekleme hızında pürüzsüz yansıma efektleri oluşturur.

Diablo Immortal ekibi, kendi geliştirdiği oluşturma ardışık düzenlerinin özelliklerine uyum sağlamak ve mobil cihazların katı performans kısıtlamalarını karşılamak için AMD FidelityFX Reflection Denoiser'ı entegre ederken hedeflenen basitleştirme ve mimari uyarlamasını uyguladı.

Vulkan ile yüksek doğruluk oranı sunan ışın izleme

Diablo Immortal, Vulkan özellikli çok çeşitli Android cihazlarda çalışır. Diablo Immortal ekibi, bu cihazlarda yenilikçi GPU donanım ışın izleme özelliklerinden yararlandı. Vulkan, geliştirme maliyetini ve sürtünmesini azaltarak Android kullanıcılarına yüksek kaliteli Diablo Immortal içeriği ve oyun deneyimi sunmayı kolaylaştırdı.