Ano ang Shader Compilation at Bakit Nauutal ang Mga Laro sa PC?


Buod: Dahil iba ang GPU ng bawat PC, kailangan ang shader compilation para tumakbo ang mga laro sa iba't ibang brand at modelo ng graphics card. Sa kasamaang palad, ang proseso ng compilation na iyon ay maaaring magdulot ng nakakainis na pagkautal.

Ang ilang mga laro ay may isang uri ng pagkautal na nangyayari gaano man kalakas ang iyong computer, o kung aling mga setting ang pipiliin mo. Ito ay sanhi ng isang proseso na kilala bilang shader compilation, at ito ay lumalaking isyu sa PC gaming.

Ano ang mga Shader?

Ang mga shader ay mga computer program na tumutulong sa pagtukoy ng iba't ibang aspeto ng mga render na graphics. Ang mga pixel shader, halimbawa, ay kinakalkula ang mga katangian ng isang pixel. Kabilang dito ang kulay, liwanag, reflectivity, o transparency ng pixel na iyon. Kung gusto mong magmukhang basa ang isang bagay sa iyong laro, gagamit ka ng isang espesyal na shader para makuha ang hitsura na iyon sa halip na gawin itong maingat sa pamamagitan ng kamay.

Ang mga shader ang dahilan kung bakit napaka-flexible ng mga modernong GPU dahil ang mga GPU na ito ay idinisenyo upang patakbuhin ang anumang bagay na maaaring ipahayag sa shader programming language. Pinapalitan nila ang lumang teknolohiya ng GPU na fixed-function pipeline kung saan ang mga uri ng graphical math na maaaring gawin ng GPU ay naka-hard-wired sa silicon nito.

Ano ang Shader Compilation?

Ang compilation ay isang termino sa computer na tumutukoy sa pagkuha ng code gaya ng isinulat ng isang programmer ng tao at pagsasalin nito sa machine code na mauunawaan ng partikular na processor na nilalayong patakbuhin ang software na pinag-uusapan. Kaya, halimbawa, maaari mong i-compile ang iyong code upang tumakbo sa isang Intel CPU o Apple Silicon.

Ang parehong bagay ay kinakailangan para sa isang GPU. Dapat na i-compile ang shader code upang tumakbo sa partikular na tatak at modelo ng GPU na pinag-uusapan. Kung babaguhin mo ang GPU, i-update ang mga driver nito, o ang laro ay makakatanggap ng update, dapat na i-compile muli ang mga shader.

Bakit May Shader Compilation na Nauutal ang Ilang Mga Laro sa PC?

Sa ilang laro, ang pag-compile ng mga shader sa background ay nakakasagabal sa laro mismo, na nagiging sanhi ng nakikitang pagkautal. Ang computer ay nagtatrabaho nang husto sa pag-compile ng mga shader upang patakbuhin ang laro nang maayos. Nagsusumikap ang ilang developer na i-optimize ang compilation para wala itong epekto sa performance ng laro, habang ang iba naman ay nagpapakalat ng shader compilation sa buong laro, umaasa na panandalian lang ang hitching. Kung ganoon, makakatagpo ka lang ng mga stutter sa simula ng isang bagong level o kapag pumasok ka sa isang bagong environment na gumagamit ng mga shader na hindi pa kinakailangan hanggang sa puntong iyon.

Ang mga pag-utal ng compilation ay naging partikular na kakila-kilabot sa mga laro ng Unreal Engine 4, na isang laganap at sikat na engine ng laro. Sa partikular, nagiging isyu ang mga stutter na ito kapag nagpapatakbo ng laro sa ilalim ng DirectX 12. Ito ay bahagyang dahil binago ng DirectX 12 kung paano gumagana ang shader compilation, na naglalagay ng higit na kontrol sa mga kamay ng mga developer. Gayunpaman, nangangahulugan din ito na ang mga developer ay maaaring walang pinakamahusay na paraan upang i-optimize ang shader compilation na ipinako gamit ang pinakabago at pinakamahusay na bersyon ng DirectX.

Bakit Walang Shader Compilation na Nauutal ang Mga Console?

Ang Shader compilation stutter ay isang problema na ganap na wala sa mga console tulad ng PS5 at Xbox Series X|S. Ito ay dahil lang sa alam ng mga developer kung ano mismo ang hardware sa loob ng bawat console para ma-pre-compile nila ang lahat ng shaders; hindi na kailangang i-compile ang mga ito sa lokal na sistema dahil alam mo na kung aling GPU ang iyong tina-target.

Posibleng gawin ito sa PC, ngunit dahil napakaraming GPU at mga configuration ng system, hindi ito magiging praktikal. Gayunpaman, sa kaso ng Valve Steam Deck, ang Valve ay may kasamang pre-compiled shader cache na may ilang mga laro dahil, siyempre, lahat ng Steam Deck ay may parehong GPU.

Ano ang Magagawa Mo Tungkol sa Compilation Stutter?

Sa kasamaang palad, kadalasan, kailangang ayusin ng mga developer ang mga problema sa compilation ng shader. Ang mabuting balita ay sa kalaunan ay magkakaroon sila ng hawakan sa proseso. Maaaring magsama ang Unreal Engine 5.1 ng isang naka-automate na feature na makakatulong sa mga developer sa pag-cache nang hindi masyadong matindi ang epekto sa performance.

Ang listahan ng mga bagay na maaari mong gawin upang mabawasan ang pagkautal ay hindi mahaba, ngunit maaaring makatulong ang ilan sa mga opsyong ito:

  • Kung hinahayaan ka ng isang laro na mag-pre-compile ng mga shader, hayaan ito. Maaaring magtagal ito, ngunit ang karanasan sa laro ay magiging walang pagkautal.
  • Maliban na lang kung ang pag-update ng laro ay may kasamang shader stutter fix, huminto hanggang sa matapos kang maglaro, o maaaring mag-compile muli ang mga shader.
  • I-hold off ang mga update sa driver ng GPU hanggang sa matapos mo ang iyong kasalukuyang laro kung sakaling mag-trigger itong muli ng compilation.
  • Kapag nagsimula ang compilation stutter sa isang laro, pindutin ang pause button at maghintay hanggang matapos ito bago maglaro nang higit pa.
  • Gamitin ang DirectX 11 sa halip na ang DirectX 12 na bersyon ng isang laro. Kadalasang nababawasan o wala ang shader stutter, bagama't tatalikuran mo ang mga feature ng DX12 sa bargain.
  • Laruin ang laro sa isang console sa halip.

Sa paglipas ng panahon, ang problemang ito ay malamang na mawawala o hindi gaanong nakakagambala. Halimbawa, maaaring i-offload ng mga developer ang shader compilation sa mga CPU core na hindi kailangan ng laro, na isang karaniwang sitwasyon sa mga modernong PC na may maraming core. Hanggang sa panahong iyon, ang #stutterstruggle ay mananatiling isang nakakainis na isyu sa PC gaming.