Ana içeriğe geç
Oyun

Oyun motorlarında doku belleği mimarisi performansı artırıyor

Öne çıkanlar

  • BC7 blok sıkıştırma yöntemi 4x4 piksellik bloklar kullanarak bellek boyutunu 4 kat küçültüyor.
  • Morton sıralaması doku piksellerini belleğe Z deseniyle yerleştirerek önbellek yerelliğini artırıyor.
  • Genellikle 64 KiB boyutundaki karolar, büyük dokuların belleğe ardışık olmayan adreslerle yüklenmesine yol açıyor.

Oyun motorlarını konsollara uyarlayan yazılım mühendisleri, platformlar arası doku dönüştürme süreçlerinde bellek yerleşimlerinin karmaşık yapısıyla karşılaşıyor. 505 Games bünyesinde çalışan Daniel Kvick, modern video oyunlarında dokuların doğrusal bir piksel dizisinden ibaret olmadığını; önbellek verimliliği ve bant genişliğini optimize etmek amacıyla çok katmanlı yapılar halinde saklandığını aktardı. Bu mimarinin temelini blok sıkıştırma, piksel sıralama, çözünürlük seviyeleri ve bellek karoları oluşturuyor.

Modern dokularda BC7 gibi blok sıkıştırma algoritmaları öne çıkıyor. Bu yöntem, pikselleri 4x4 boyutunda bloklara ayırarak her blok için uç renkler ve ara değer indeksleri belirliyor; böylece bellek boyutunu dörtte birine indiriyor. Önbellek yerelliğini yükseltmek içinse piksel verileri Morton sıralaması gibi fraktal Z modelleriyle belleğe diziliyor. Doku hiyerarşisinde yer alan mip haritaları çözünürlüğe göre önceden ölçeklendirme sağlarken, genellikle 64 KiB boyutundaki karolar da verinin GPU belleğine parçalı yüklenmesine olanak tanıyor.

Farklı oyun platformları, karoların sıralanışı ve mip haritalarının dizilim yönü gibi konularda farklı mimari standartlar uyguluyor. Akış sırasında bellek yığınlarında oluşan parçalanma nedeniyle aynı dokunun karoları ardışık olmayan adreslere dağılabiliyor. Bu durum, dokuları platformlar arasında dönüştürürken doğrusal bellek varsayımlarının geçersiz kalmasına ve adresleme işlemlerinin her karo için ayrı ayrı eşlenmesine yol açıyor.

Kaynak

Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.