İçeriğe geç
SAVUNMA SANAYİİ · ASKERİ HAVACILIK · JEOPOLİTİK
Milli Savunma.
Geleceğin Doktrinleri.

Shader compilation takılması ilk harita açılışında neden olur ve nasıl önlenir?

Ana sayfa › Forumlar › Battlefield Serisi & Güncel Oyunlar › Battlefield 4 & 3 Nostalji, Klasik Haritalar › Shader compilation takılması ilk harita açılışında neden olur ve nasıl önlenir?

  • Bu konu 1 yanıt içerir, 2 izleyen vardır ve en son 13 saat 41 dakika önce User AvatarAnonim tarafından güncellenmiştir.
2 yazı görüntüleniyor - 1 ile 2 arası (toplam 2)
  • Yazar
    Yazılar
  • #23589
    User AvatarAnonim
    Pasif

    Arkadaşlar, ilk harita yüklenirken ekranın donup shader derlemesi sırasında takıldığı o klasik stall sorunuyla uğraşıyorum; ama merak ettiğim şey tam o anın arkasındaki somut maliyet hesabı. Yani GPU’nun vertex/fragment shader’larını JIT derlerken VRAM’de ne kadar buffer ayrılıyor, cache miss oranı kaçta bir patlıyor ve bu stabin millisecond olarak FPS motorunu ne kadar frame drop’a çevirdiğini merak ediyorum. 1080p’de 60 Hz hedefle bu takılma 16 ms frame budget’in ne kadarını eritiyor, yoksa bu süre 4K’da 33 ms eşiğine yaklaşınca tamamen oynanışı kesen bir stall’a mı dönüşüyor?

    İkinci olarak bu sürecin mühendislik ve hukuki sınırlarında ne var? Yani driver’ın shader cache’ini disk’e yazarken tüketdiği I/O maliyeti ile kullanıcı cihazında harcadığı sürenin arasında kabul edilebilir bir denge var mı? Yasal yaptırım açısından düşüneyim: bir oyunda shader derlemesini zorla arka plana atıp gizlemek ya da kullanıcıya ”

    "────────────────────────────────────────"
    "Göz ancak aklın görebildiği kadarını fark eder; hakikat ise ancak dürüst bir kalple sezilir."
    #24039
    User AvatarAnonim
    Pasif

    Sorunun kökü çoğu zaman “shader derlenmiyor, çalışmıyor” sanılan ama aslında derleme zamanlamasının kötü olmasında. Battlefield motorunda (Frostbite tabanlı) shader’lar artık map bazlı ön derlemeli cache ile geliyor, ama ilk açılışta o haritanın varyant havuzunu (lighting, foliage, water, volumetric, destruction fragmanları) JVM tarzı JIT derlemesiyle ayağa kaldırman gerekiyor. Stall’ın gerçek maliyeti GPU değil CPU tarafında: derleyici thread’ler tek kuyruğa dizildiğinde main thread’i blockluyor, o frame’de uniform upload ve draw queue boşuna bekliyor. Yani ekranda gördüğün takılma “derleme yavaş”dan değil, “derleme sync”den kaynaklanıyor. Pratik çözüm: shader cache’i disk üzerinde tutmak + derlemeyi async pool’a almak (genellikle 4-8 worker thread) +

    "Emek zayi olmaz; doğru tohum samimi bir niyetle atılmışsa, meyvesi vakti gelince mutlaka yeşerir."
2 yazı görüntüleniyor - 1 ile 2 arası (toplam 2)
  • Bu konuyu yanıtlamak için giriş yapmış olmalısınız.