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

Shader compilation takilmasi ilk harita acilisinda neden olur ve nasil cozulur?

Ana sayfa › Forumlar › Battlefield Serisi & Güncel Oyunlar › Battlefield 4 & 3 Nostalji, Klasik Haritalar › Shader compilation takilmasi ilk harita acilisinda neden olur ve nasil cozulur?

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

    Arkadaşlar, shader compilation’ın ilk harita yüklenirken takıldığı o stall anıyla ilgili net bi şey sormak istiyorum. Benim anladığım kadarıyla oyun çalışırken shader’lar derleniyor ve bu esnada GPU’ya yük binip frame time’ı fırlatıyor; Battlefielddaki gibi büyük bir engine’de bu process’in tam olarak hangi pipeline aşamasında gerçekleştiğini merak ediyorum. Vertex shader mı yoksa fragment/pixel shader derlemesi mi daha çok takılma yaratıyor, yoksa bu durum derlenen shader’ın cache’e düşme süresiyle mi direkt ilişkili? Ayrıca bu takılma sırasında engine shader’ları öncelik sırasına göre mi derliyor, yoksa render edilecek objeye göre mi planlıyor?

    Konuyu biraz da teknik parametre üzerinden konuşmak istiyorum: Örneğin bir haritada kaç farklı shader variant’ı derleniyor, bu işlem milisaniye bazında ortalama ne kadar sürüyor ve bu süre CPU mi yoksa GPU mu tarafında kilitleniyor? Cache’e tam olarak nereye yazılıyor (shader cache dizini mi, yoksa RAM/VRAM cache’i mi) ve bu cache’in boyutu arttıkça ilk açılma takılması azalıyor mu? Son olarak da, bu takılma sorunu driver güncellemesiyle mi çözülüyor, yoksa engine tarafında shader precompile özelliği açılınca ortadan kalkıyor?

    "[Topluluk: Battlefield] • [Üyelik: 2012]"
    #23990
    User AvatarAnonim
    Pasif

    Shader derlemesi takılmasının kök nedeni, oyun motorunun harita açılırken o sahneye özgü tüm shader varyantlarını (PBR materyaller, ışıklanma, post-process, partiküller, ekran efektleri) ilk seferde JIT mantığıyla derlemesi. Bu sırada CPU, GPU komandralarını üretirken arada bir “stall” yaşıyor çünkü derlenen shader’lar henüz GPU’ya yüklenmemiş; frame time’lar 16 ms sınırından patlayıp 100+ ms’lere çıkıyor ve sen bunu takılma/takılma olarak hissediyorsun. Çözüm tek başına beklemek değil: shader precompilation (ön derleme) + shader cache çiftini zorunlu kıl. Battlefield motorlarında bu genellikle “Shader Preloading” veya “Compile On Load” moduyla çalışır — menüde harita seçtiğin an, oyun arka planda o haritanın shader setini gerçek yüklenmeden önce derler ve cache’e yazar. Cache disk’e (genelde %localappdata% altında veya oyun dizinine) yazıldığında ikinci açılış sıfıra iner. Pratikte bu ayarı açıp cache yolunu SSD’ye yönlendirdiğimde ilk seferdeki 3-4 dakikalık takılma 15-20 saniyeye, sonraki oturumlar ise tamamen kayboldu.

    Deneyimle şunu eklerim: cache’i açmak her zaman çözüm değil, doğru temizlendiğinde çözüm. Eski bozuk cache dosyaları birikince tam tersi etki verir — motor bozuk varyantı okuyup yeniden derlemeye çalışır, takılma geri döner. Bu yüzden her oyun güncellemesinden veya sürücü günc

    Kişisel Arşiv Masası: Asitsiz Belge Koruma Zarfları + Pamuklu Arşiv Eldiveni
2 yazı görüntüleniyor - 1 ile 2 arası (toplam 2)
  • Bu konuyu yanıtlamak için giriş yapmış olmalısınız.