Kaj je Shader Compilation in zakaj računalniške igre zatikajo?

Elden Ring slika bojne scene z vitezom na konju, ki se bori z zmajem.

Because every PC’s GPU is different, shader compilation is necessary for games to run on different brands and models of graphics card. Unfortunately, that compilation process can cause annoying stutter.

Nekatere igre imajo vrsto zatikanja, ki se zgodi ne glede na to, kako močan je vaš računalnik ali katere nastavitve izberete. To je posledica postopka, znanega kot »kompilacija senčil«, in je vse večja težava pri računalniških igrah.

Preberi več

Kaj so senčniki?

Shaderji so računalniški programi, ki pomagajo določiti različne vidike upodobljene grafike. Pixel shaderji na primer izračunajo atribute piksla. To vključuje barvo, svetlost, odbojnost ali prosojnost te slikovne pike. Če želite, da je nekaj v vaši igri videti mokro, uporabite posebno senčilo, da dosežete ta videz, namesto da bi to delali skrbno ročno.

Senčniki so tisto, zaradi česar so sodobni grafični procesorji tako prilagodljivi, saj so ti grafični procesorji zasnovani za izvajanje česar koli, kar je mogoče izraziti v programski jezik shader. Zamenjajo staro tehnologijo grafičnih procesorjev »cevovod s fiksnimi funkcijami«, pri kateri so bile vrste grafične matematike, ki jo je lahko izvajal grafični procesor, vgrajene v njegov silicij.

Kaj je Shader kompilacija?

"Kompilacija” je računalniški izraz, ki se nanaša na vzetje kode, kot jo je napisal človeški programer, in njeno prevajanje v strojno kodo, ki jo lahko razume določen procesor, ki je namenjen zagonu zadevne programske opreme. Tako lahko na primer prevedete svojo kodo za delovanje v procesorju Intel ali Apple silicij.

Enako je potrebno za GPU. Kodo senčila je treba prevesti za delovanje na določeni znamki GPE in zadevnem modelu. Če spremenite GPE, posodobite njegove gonilnike ali če igra prejme posodobitev, je treba senčnike znova prevesti.

Zakaj nekatere računalniške igre kompilacijo senčnikov zatikajo?

V nekaterih igrah prevajanje senčil v ozadju moti samo igro in povzroči vidno zatikanje. Računalnik se preveč trudi pri prevajanju senčil, da bi lahko igro pognal gladko. Nekateri razvijalci si prizadevajo optimizirati kompilacijo, tako da ima malo ali nič vpliva na zmogljivost igre, medtem ko drugi razširijo kompilacijo senčil skozi igro, v upanju, da bo zastoj kratkotrajen. V tem primeru bi se z zatikanji srečali le na začetku nove ravni ali ko vstopite v novo okolje, ki uporablja senčnike, ki do te točke niso bili potrebni.

Zastoji pri kompilaciji so bili še posebej hudi v igrah Unreal Engine 4, ki je zelo razširjen in priljubljen motor za igre. Natančneje, to jecljanje postane težava, ko se igra pod DirectX 12. To je delno zato, ker DirectX 12 spremeni način delovanja prevajanja senčil in da več nadzora v roke razvijalcem. Vendar pa to tudi pomeni, da razvijalci morda nimajo najboljšega načina za optimizacijo prevajanja senčil, ki je zasnovan z uporabo najnovejše in najboljše različice DirectX.

Zakaj konzole nimajo zatikanja kompilacije senčil?

Zatikanje pri prevajanju senčil je težava, ki je popolnoma odsotna pri konzolah, kot je PS5 in Xbox Series X|S. To je preprosto zato, ker razvijalci natančno vedo, katera strojna oprema je v vsaki konzoli, tako da lahko vnaprej prevedejo vse senčnike; ni jih treba prevajati v lokalnem sistemu, ker že veste, na katero GPU ciljate.

To je mogoče storiti na osebnem računalniku, a ker je na voljo toliko grafičnih procesorjev in sistemskih konfiguracij, to ne bi bilo praktično. Vendar pa v primeru Parni krov ventila, Valve vključuje vnaprej preveden predpomnilnik senčil z nekaterimi igrami, ker imajo seveda vsi Steam Deck isti GPE.

Kaj lahko storite glede jecanja kompilacije?

Na žalost morajo večino časa razvijalci odpraviti težave pri prevajanju senčil. Dobra novica je, da bodo sčasoma obvladali postopek. Unreal Engine 5.1 lahko vključuje avtomatizirana funkcija ki bo pomagal razvijalcem pri predpomnjenju, ne da bi bil vpliv na zmogljivost tako resen.

Seznam stvari, ki jih lahko naredite za ublažitev jecljanja, ni dolg, vendar vam lahko nekatere od teh možnosti pomagajo:

  • Če vam igra omogoča vnaprejšnje prevajanje senčil, pustite to. To lahko traja nekaj časa, vendar bo izkušnja igre brez zatikanja.
  • Razen če posodobitev igre vključuje popravek zatikanja senčil, počakajte, dokler ne končate z igranjem, sicer se lahko senčniki znova prevedejo.
  • Odložite posodobitve gonilnikov GPU, dokler ne končate trenutne igre, v primeru, da znova sproži prevajanje.
  • Ko se v igri začne zatikati kompilacija, pritisnite gumb za premor in počakajte, da se konča, preden nadaljujete z igranjem.
  • Uporabite različico igre DirectX 11 namesto različice DirectX 12. Pogosto je zatikanje senčil zmanjšano ali ga sploh ni, čeprav se boste po ugodni ceni odrekli funkcijam DX12.
  • Namesto tega igrajte igro na konzoli.

Sčasoma bo ta težava verjetno izginila ali postala veliko manj vsiljiva. Na primer, razvijalci lahko kompilacijo senčil prenesejo na jedra CPU, ki jih igra ne potrebuje, kar je običajna situacija na sodobnih osebnih računalnikih z veliko jedri. Do takrat pa je #stutterstruggle bo ostal moteč problem pri računalniških igrah.

Original člen

Podobni objav