Güçlü bilgisayarlar bile neden oyunlarda anlık takılıyor?

K

Küresel Bülten

Küresel Bülten Editörü

25 Temmuz 20268 dk okuma0

Yüksek performanslı bir işlemci, güçlü bir ekran kartı ve hızlı bir SSD, oyunlarda her zaman kusursuz kare süreleri sağlamıyor. Ortalama FPS yüksek olmasına rağmen yeni bir bölgeye girildiğinde, farklı bir silah kullanıldığında veya daha önce görülmeyen bir görsel efekt ekrana geldiğinde kısa süreli takılmalar yaşanabiliyor. Sorun bazı oyunlarda shader ve grafik işlem hattı bileşenlerinin oyun Devamı: Güçlü bilgisayarlar bile neden oyunlarda anlık takılıyor? Technopat

Yüksek performanslı bir işlemci, güçlü bir ekran kartı ve hızlı bir SSD, oyunlarda her zaman kusursuz kare süreleri sağlamıyor. Ortalama FPS yüksek olmasına rağmen yeni bir bölgeye girildiğinde, farklı bir silah kullanıldığında veya daha önce görülmeyen bir görsel efekt ekrana geldiğinde kısa süreli takılmalar yaşanabiliyor. Sorun bazı oyunlarda shader ve grafik işlem hattı bileşenlerinin oyun sırasında hazırlanmasından kaynaklanıyor.Shader compilation takılması, gerekli shader veya Pipeline State Object henüz hazır değilken oyunun bu işlemi gerçek zamanlı olarak tamamlamasıyla ortaya çıkıyor. Derleme birkaç karelik süreyi aşarsa frametime değeri aniden yükseliyor ve görüntü kısa süreliğine donmuş gibi görünüyor. Ekran kartı normalde yüzlerce FPS üretebilecek kadar güçlü olsa bile ihtiyaç duyulan grafik işlem hattı hazır olmadan yeni kare oluşturulamıyor.Shader compilation nedir?Shader, ekran kartının görüntüyü oluştururken çalıştırdığı küçük programlara verilen isim. Nesnelerin konumu, yüzeylerin rengi, ışıklandırma, gölgeler, yansımalar, saydamlık, parçacıklar ve görüntü işleme efektleri farklı shader türleri üzerinden hesaplanabiliyor.Bir oyundaki metal yüzey, su, cam, sis, saç, deri ve kumaş aynı görsel işlemleri kullanmıyor. Aynı malzemenin gölgeli, ışın izlemeli, saydam veya farklı kalite ayarlarına göre çalışan çok sayıda çeşidi bulunabiliyor. Oyun motoru bu seçeneklere uygun shader varyasyonları hazırlıyor.Oyunun geliştirildiği sırada yazılan HLSL veya GLSL gibi shader kodları genellikle doğrudan ekran kartında çalıştırılmıyor. Kod önce DirectX için DXIL gibi ara biçimlere veya Vulkan için SPIR-V yapısına dönüştürülebiliyor. Ekran kartı sürücüsü daha sonra bu verileri kullanılan GPU mimarisine uygun komutlara hazırlıyor.Direct3D 12’de önceden derlenmiş shader nesneleri, Pipeline State Object adı verilen yapıların içinde kullanılıyor. PSO yalnızca shader kodlarını değil; rasterizasyon, harmanlama, derinlik testi ve hedef görüntü biçimi gibi grafik işlem hattı ayarlarını da bir arada tutuyor. Donanım ve sürücü bu yapıyı GPU üzerinde çalışacak duruma getiriyor.Oyunlarda shader compilation olarak adlandırılan takılmaların bir bölümü aslında kaynak shader kodunun sıfırdan derlenmesinden değil, yeni bir PSO’nun oluşturulmasından kaynaklanıyor. Gerekli shader daha önce hazırlanmış olsa bile farklı shader ve grafik ayarı birleşimi için yeni bir işlem hattı oluşturulması gerekebiliyor.Bir oyunda aynı malzemenin farklı ışıklandırma, gölge, saydamlık, geometri ve render hedefi seçenekleriyle kullanılması çok sayıda PSO kombinasyonu ortaya çıkarabiliyor. Oyun geliştiricisi gerekli kombinasyonları önceden belirleyip hazırlamazsa oyuncunun ilk kez karşılaştığı bazı durumlarda işlem oyun sırasında yaşandıriliyor.Shader derlemesi neden görüntüyü takıyor?Oyunların her kareyi belirli bir süre içinde tamamlaması gerekiyor. 60 FPS için bir kareye yaklaşık 16,67 milisaniye, 120 FPS için 8,33 milisaniye ve 144 FPS için yaklaşık 6,94 milisaniye ayrılıyor.Yeni bir shader veya PSO hazırlanırken oyun gerekli sonucun tamamlanmasını beklerse o kare normalden çok daha uzun sürüyor. Kare süresi aniden yükseldiğinde FPS sayacı kısa süreli düşebilir ancak asıl belirti frametime grafiğinde keskin bir sıçrama olarak görülüyor.Derleme işleminin arka planda başlatılması tek başına yeterli olmayabilir. Oyun o shaderı hemen kullanmak zorundaysa işlem tamamlanana kadar render süreci bekleyebilir. Unreal Engine de eksik bir materyalin shaderlarının gerektiğinde eş zamanlı olarak derlenebildiğini ve sonucun alınması için işlemin engelleyici hâle gelebileceğini belirtiyor.Bu takılma sürekli düşük FPS’den farklı davranıyor. Ekran kartı sınırında çalışan bir oyun yoğun sahnelerde uzun süre 45 veya 50 FPS’ye düşebilir. Shader compilation takılması ise genellikle tek bir efekt, malzeme veya PSO ilk kez kullanıldığında kısa ve keskin bir donma oluşturuyor.Oyuncu aynı bölgeden ikinci kez geçtiğinde takılmanın kaybolması shader veya PSO önbelleğine işaret edebilir. İlk karşılaşmada oluşturulan veri diske veya çalışma belleğine kaydedildiyse sonraki kullanımda yeniden hazırlanması gerekmiyor. Pipeline önbellekleri, daha önce oluşturulan yapıların sonraki çalıştırmalarda yeniden kullanılmasını sağlıyor.Bu belirti tek başına kesin teşhis sağlamıyor. Yeni bölgeye girerken yaşanan takılma; dokuların ve geometrilerin depolamadan yüklenmesi, VRAM taşması, işlemci iş parçacığının yoğunlaşması veya oyun dünyasının hazırlanması nedeniyle de oluşabilir. Shader compilation sorunu çoğunlukla yeni bir efekt ilk kez gösterildiğinde yaşanması ve aynı içerik tekrarlandığında azalmasıyla ayrılıyor.Güçlü bilgisayarlar neden sorunu engelleyemiyor?Shader ve PSO hazırlama süreci yalnızca ekran kartının ham işleme gücüne bağlı değil. İşin bir bölümü oyun motoru, işlemci ve ekran kartı sürücüsü tarafından yürütülüyor. Oyun gerekli işlem hattının tamamlanmasını bekliyorsa GPU yeni kareyi oluşturmaya hazır olsa bile çalışmaya başlayamıyor.Daha hızlı bir işlemci derleme süresini azaltabilir ancak oyunun kritik render yolunda gerçekleşen beklemeyi tamamen ortadan kaldırmaz. Normal kare süresinden birkaç kat uzun süren tek bir işlem bile ekranda takılma olarak hissedilebilir.Güçlü ekran kartı bazı durumlarda sorunu daha görünür hâle de getirebilir. Sistem normalde yüksek FPS üretiyorsa kare süreleri oldukça düşüktür. Düzenli biçimde birkaç milisaniyede hazırlanan karelerin arasına çok daha uzun süren bir kare girdiğinde değişim daha belirgin hissedilir.SSD’nin hızlı olması shader kodlarının ve önbellek dosyalarının daha kısa sürede okunmasına yardımcı olabilir. Ancak disk hızı, sürücü tarafından yaşandırilen derleme ve optimizasyon işlemlerini ortadan kaldırmıyor. Shader compilation takılması yalnızca depolama verisinin geç yüklenmesinden oluşmuyor.RAM ve VRAM kapasitesini artırmak da doğrudan çözüm sağlamıyor. Bellek yetersizliği başka takılma türlerine yol açabilir ancak eksik bir grafik işlem hattının oluşturulması yine gerekiyor. Ekran kartı belleğinde geniş boş alan bulunması, daha önce hazırlanmamış bir PSO’yu otomatik olarak kullanıma hazır hâle getirmiyor.DirectX 12 ve Vulkan gibi düşük seviyeli grafik API’lerinde işlem hattı yönetiminin önemli bölümü oyun ve motor tarafından kontrol ediliyor. Pipeline oluşturma işlemi maliyetli olabildiği için Vulkan, sonuçların kaydedilerek sonraki çalıştırmalarda yeniden kullanılmasına imkân veriyor. Microsoft da derlenmiş PSO’ların diskte saklanmasının sonraki açılışlarda sürücü kaynaklı derleme takılmalarını azaltabildiğini belirtiyor.Sorun yalnızca DirectX 12 veya Vulkan kullanan oyunlarla sınırlı değil. Daha eski grafik API’lerinde de sürücü gerekli shader ve donanım komutlarını hazırlayabilir. Ancak düşük seviyeli API’lerde önceden oluşturma ve önbellek yönetiminin doğru uygulanması oyun geliştiricisi açısından daha görünür bir sorumluluk taşıyor.Oyun neden shaderları önceden derlemiyor?Shader compilation takılmasını önlemenin en doğrudan yollarından biri gerekli shader ve PSO’ları oynanış başlamadan önce hazırlamak. Bazı oyunların ilk açılışta “shaderlar derleniyor” ekranı göstermesinin nedeni bu işlem.Ön derleme süresi donanıma, oyundaki shader sayısına ve kullanılan işlemciye göre uzayabiliyor. Buna karşılık yükleme ekranında geçirilen süre, yeni efektlerle karşılaşırken oluşabilecek anlık takılmaların önüne geçebiliyor.Bütün olası kombinasyonların önceden bulunması her zaman kolay değil. Oyunlarda farklı malzemeler, kalite ayarları, render teknikleri, ışıklandırma seçenekleri ve donanım özellikleri bulunuyor. Geliştirme sırasında kaydedilmeyen veya önbellek listesine eklenmeyen bir PSO, oyuncunun karşısına ilk kez oyun içinde çıkabiliyor.Unreal Engine’in PSO precaching sistemi, bileşenler yüklenirken gerekli materyal, vertex yapısı ve diğer işlem hattı bilgilerini toplayarak PSO’ları önceden hazırlayabiliyor. Hazırlanan durumların diske kaydedilmesi ve sonraki açılışlarda önceden derlenmesi, oynanış sırasındaki takılmaları azaltıyor.Ön derlemeyi oyun sırasında arka planda yapmak da mümkün. Ancak bu işlem işlemci kaynaklarını kullanıyor ve yanlış zamanda yürütüldüğünde performansı etkileyebiliyor. Unreal Engine, PSO ön derleme işlemlerinin oynanış sırasında durdurulup yükleme ekranı, menü veya video sırasında yeniden başlatılabileceğini belirtiyor.Bir diğer yöntem, gerekli özel PSO hazırlanırken daha önceden derlenmiş genel bir shader kullanmak. Microsoft’un Direct3D 12 örneğinde “uber shader” adı verilen daha genel işlem hattı, özel PSO tamamlanana kadar geçici olarak kullanılıyor. Bu yöntem kısa süreli GPU verim kaybı karşılığında kare sürelerinin daha düzenli kalmasını sağlayabiliyor.Sürücü güncellemesinden sonra takılmalar neden geri gelebiliyor?Derlenmiş shader ve pipeline verileri her koşulda evrensel değil. Kullanılan ekran kartı, GPU mimarisi, sürücü sürümü ve pipeline yapılandırması önbellekteki verinin geçerliliğini etkileyebiliyor.Vulkan pipeline derleme sonuçları üretici kimliğine, cihaz kimliğine, sürücü sürümüne ve donanımın diğer özelliklerine bağlı olabiliyor. Geçersiz veya uyumsuz önbellek verileri API tarafından kullanılmadan göz ardı edilebiliyor.Bu nedenle bazı ekran kartı sürücüsü güncellemelerinin ardından shader önbelleğinin yeniden oluşturulması gerekebilir. Temiz sürücü kurulumu yapılması, önbellek klasörlerinin silinmesi veya oyunun grafik API’sinin değiştirilmesi de daha önce hazırlanan verilerin kullanılamamasına yol açabilir.Oyun güncellemeleri shader kodlarını, materyalleri veya PSO yapılarını değiştirebilir. Eski önbellekte bulunmayan yeni kombinasyonlar ilk kez kullanıldığında yeniden derleme yapılması gerekir. Grafik ayarlarının değiştirilmesi de daha önce kullanılmamış shader varyasyonlarını devreye sokabilir.Önbelleğin bulunması bütün takılmaların kesin olarak ortadan kalkacağı anlamına gelmiyor. Önbellek eksik hazırlanmışsa, oyun bütün PSO’ları önceden tespit edemiyorsa veya yeni kombinasyonları oynanış sırasında oluşturuyorsa takılmalar devam edebilir.Her oyun açılışında aynı noktalarda aynı shader takılmalarının yeniden yaşanması, önbelleğin kalıcı biçimde kaydedilmediğini veya kayıtlı verinin kullanılmadığını gösterebilir. Bu durumda daha güçlü ekran kartı almak yerine oyun, sürücü veya önbellek yönetimindeki sorunun düzeltilmesi gerekir.Shader compilation takılması nasıl anlaşılır?Frametime grafiğinde normal çizginin arasına giren keskin ve kısa yükselişler ilk işareti oluşturuyor. Ortalama FPS yüksek kalabilir ancak tek bir kare normalden çok daha uzun sürdüğü için oyuncu kısa bir donma hisseder.Takılma yeni bir efekt, düşman, silah, alan veya malzeme ilk kez gösterildiğinde yaşanıyor ve aynı durum tekrarlandığında kayboluyorsa shader veya PSO derlemesi ihtimali artıyor. Sorun her geçişte tekrar ediyorsa veri aktarımı, bellek yetersizliği veya oyun dünyasının yüklenmesi gibi başka nedenler de incelenmelidir.VRAM dolduğunda yaşanan takılmalar genellikle yoğun sahnelerde ve yüksek doku ayarlarında tekrar edebiliyor. İşlemci darboğazı kalabalık alanlarda daha uzun süreli FPS düşüşü ve düzensiz frametime oluşturabiliyor. Shader compilation takılması ise çoğunlukla belirli bir görsel durumun ilk kullanımında tek seferlik sıçrama şeklinde ortaya çıkıyor.Oyunun başlangıçta sunduğu shader derleme işlemi tamamlanmadan oynanışa geçilmemeli. İşlemi atlamak veya arka planda sürerken oyuna başlamak, eksik shaderların oyun sırasında hazırlanmasına neden olabilir.Shader önbelleğini düzenli olarak silmek performans bakımından faydalı bir bakım işlemi değil. Önbellek bozulmadığı veya belirli bir sorunun giderilmesi için önerilmediği sürece mevcut verilerin korunması, daha önce tamamlanan derlemelerin tekrar kullanılmasını sağlar.Sürücü veya büyük oyun güncellemesinden sonraki ilk çalıştırmada görülen takılmalar sonraki oturumlarda azalabilir. Aynı sorun uzun süre devam ediyorsa yalnızca bilgisayarın gücüne odaklanmak yeterli olmaz. Oyunun PSO önbelleği, grafik API’si, sürücü davranışı ve güncel yamaları birlikte değerlendirilmelidir.

Reklam

Etiketler

#haber#makale#teknoloji#shader compilation

Paylaş

K

Bu haber bağımsız gazetecilik ilkeleri çerçevesinde hazırlanmıştır. Hata veya eksiklik için düzeltme talep edin.

Reklam