Shader derleme takılması — ilk dakikalar neden en kötüsü

Bir oyunun sana ilk kez gösterdiği her şeyde neden takıldığı, bir sürücü güncellemesinin bunu neden baştan geri getirdiği, ve shader önbelleğini silmenin neden bedelini yeniden ödemeni garanti eden tek "çözüm" olduğu.

Bir süredir oynamadığın bir oyunu açıyorsun ve ilk on dakika berbat. Her yeni silah, her yeni efekt, belirli bir düşmanın ilk kez görünmesi — bir takılma. Sonra oturuyor, ve ikinci akşam oyun akıcı. Bunu yaptığın hiçbir değişiklik sağlamadı. Zaman sağladı.

Ya da öteki hâli: oyun gayet iyiydi, ekran kartı sürücüsünü güncelledin, ve ilk saatin tamamı yeniden sarsıntılı.

İkisi de aynı mekanizma, ve bu, gerçekten normal olan az sayıdaki takılma sebebinden biri — doğru yazılımı çalıştıran sağlıklı bir makinenin ürettiği anlamda.

İşin neden senin makinende olması gerekiyor

Bir gölgelendirici (shader), GPU üzerinde çalışan küçük bir program. Oyunun geliştiricisi onu yüksek seviyeli bir dilde yazıp derliyor, ama yolun yalnızca bir kısmı kadar — programın ne yaptığını anlatan, herhangi bir grafik yongasının bunu nasıl yapması gerektiğini anlatmayan bir ara biçime kadar.

GPU'nun gerçekten yürüttüğü makine kodu önceden üretilemiyor, çünkü geliştiricinin elinde olmayan iki şeye bağlı: senin tam GPU mimarin ve senin tam sürücü sürümün. Ara biçimi makinendeki silikonun komutlarına çeviren şey sürücünün kendi derleyicisi, ve o derleme senin işlemcinde, oyunun shader'a ihtiyaç duyduğu anda oluyor.

Yani bir sahne belirli bir shader, render durumu ve köşe düzeni bileşimine ilk kez ihtiyaç duyduğunda bir şeyin derlenmesi gerekiyor. Oyun bunu bir karenin ortasında isteyip beklerse o kare geç kalıyor. Hissettiğin takılma, o geç kare.

Sonuç diskte bir shader önbelleğine yazılıyor. Aynı şey ikinci kez göründüğünde derlenmiş kod yeniden üretilmek yerine önbellekten okunuyor; oyunun sen oynadıkça iyileşmesinin ve ikinci oturumun sorunsuz olmasının sebebi tam olarak bu.

Seni başa döndürenler

Önbellek yalnızca onu üreten sürücü ve donanım için geçerli. Bu listedeki her şey onu tamamen ya da kısmen geçersiz kılıyor, ve oyunun ilk saati yeniden sarsıntılı oluyor:

Bunların hiçbiri kusur değil. Bir önbelleğin bayat değil doğru olmasının bedeli.

Elindekinin bu olduğunu nasıl anlarsın

Shader derlemesinin ayırt edici bir parmak izi var, ve takılma listesindeki başka hiçbir şeye benzemiyor:

  1. Sönüp gidiyor. Ayırt edici işaret bu. Takılman üçüncü saatte de üçüncü dakikadaki gibiyse sebep bu değil.
  2. Yenilikle bağlantılı. Bir silahın, bir bölgenin, bir hava efektinin, belirli bir düşmanın ilk kez görülmesi. Aynı koridorda ikinci kez yürümek temiz.
  3. Sıcaklığı ve oturum uzunluğunu takmıyor. Termal sorunlar oynadıkça kötüleşiyor; bu iyileşiyor.
  4. Adını koyabildiğin bir düzende geri geliyor — bir sürücü güncellemesinden, bir yamadan, bir temizlikten sonra — rastgele değil.
  5. Meşgul olan taraf GPU değil. Derleme, işlemci işi. Bu takılmalar sırasında tam doluluğun epey altında duran bir GPU burada beklenen şey, ve oyunlarda ani FPS düşmeleri sayfasında anlatılan ayrı sorunun kanıtı değil.

Bu beşi senin belirtini anlatmıyorsa Windows 11'de oyunlar neden takılıyor sayfasındaki genel listeye dön — oradaki sebepler kendiliğinden sönmüyor.

Bu konuda ne yapılır

Çoğunlukla: olmasına izin ver. Ama kenarlarda gerçek tercihler var.

Shader önbelleğini bir çözüm diye silme. Bu sayfada iki kez okunmaya değen tavsiye bu. Önbelleği temizlemek takılmanın ilacı diye durmadan yazılıyor, oysa gerçekte yaptığı şey, tüm derleme bedelini sıfırdan yeniden ödemeni garanti etmek. Bir sürücü değişikliğinden sonraki görüntü bozulmaları için meşru bir sorun giderme adımı. Bir performans düzeltmesinin tam tersi.

Oyunun kendi ön derleme adımı varsa onu kullan, ve atlama. Menüden önce "shader'lar derleniyor" ekranında iki dakika geçiren bir oyun tam olarak bu işi peşinen yapıyor; orada sana beklemekten başka hiçbir şeye mal olmuyor.

Bir sürücü güncellemesinden sonra makineyi bir süre açık bırak. Bazı sürücüler DirectX 12 shader'larını sistem boştayken yeniden üretiyor, tam da çalışma zamanının sonradan daha azını yapması için. Bu ancak makine o boşta zamanı bulursa işe yarıyor.

Oyunu ve önbelleğini bir SSD'de, ve senkronize edilen bir klasörün dışında tut. Bir bulut istemcisi her yazmayı izliyor, ve bir oyun shader önbelleğini durmadan yazıyor — her girdi, filtre sürücüsü işine artı maçının kullandığı aynı bağlantı üzerinden bir yüklemeye dönüşüyor.

Bu pencerenin içinde ölçme. Bir sürücü güncellemesinden sonraki ilk dakikalarda alınan bir ölçüm koşusu sürücüyü değil, derleyiciyi ölçüyor. Karşılaştırma kurallarını benchmark'ı okumak anlatıyor; ilk kuralı kazara çiğnemenin kolay bir yolu bu.

Taramanın bu konuda söylediği

Takılma taraması bir shader önbelleğinin yakın zamanda temizlenip temizlenmediğine bakıyor, ve bulduğunda bu sayfanın söylediğini söylüyor: oyun silinen önbelleği sen oynadıkça yeniden derliyor, oturumun başındaki takılma normal ve kendiliğinden sönüyor, ve o pencere geçene kadar benchmark almamalısın.

Bu, bilerek onarılacak bir kusur olarak sunulmuyor. Onarılacak bir şey yok — bir kez ödenecek bir bedel var, ve bir aracın yapabileceği dürüst şey, akşamını bir ayarı suçlayarak geçirmeyesin diye o bedelin içinde olduğunu sana söylemek.

Nerede normal olmaktan çıkıyor

Hiç sönmeyen bir derleme takılması farklı bir sorun: önbellek saklanmıyor. Diskin dolu olmadığını, önbelleğin oturumlar arasında zamanlanmış bir temizlikle silinmediğini, ve oyun klasörünün bir bulut istemcisinin ya da bir boyut sınırının sürekli temizlediği bir yerde olmadığını kontrol et.

Ve koşu başa yığılmak yerine baştan sona düzensizse, elindeki onun yerine ortalama FPS yüksek ama %1 low kötü — bu bir ısınma sorunu değil, bir olay sorunu.

İlgili

CS2 mi oynuyorsun? Hangi başlatma seçeneğinin hâlâ bir şey yaptığı ve görüntü menüsünde karelerin asıl nerede olduğu: CS2'de FPS nasıl artırılır, kasma neden olur? Ölçüme dayalı kontrol listesi

w0a sen istemeden hiçbir Windows ayarını değiştirmez; bir optimizasyon yeni bir değer yazmadan önce eskisini kaydeder. Haber al

Bu sayfa yardımcı oldu mu?

Eksik olan neydi, ya da ne işe yaramadı? Bunların hepsini okuyoruz.

Bu sayfa sorununu çözmediyse bize yaz — hangi makaleyi okuduğunu da ekle, o makaleyi düzeltelim.