Miért probléma a shader fordítás PC-n?

A hagyományos és az explicit grafikus API-kkal sem volt jó a helyzet, holott konzolokon vajsima a kapott élmény.

Jó, de mi a megoldás?

Jelenleg ez a millió dolláros kérdés. Világos, hogy a DirectX 11, illetve a korábbi hagyományos API-k modellje nem volt jó, de a DirectX 12 és a Vulkan esetében is az mondható el, hogy a működésen ugyan javítottak, de nem annyit, amennyit talán kellett volna. Alapvetően az sem jó, ha a shaderek az első indításnál lesznek lefordítva, de az sem, ha ténylegesen a játék közben. Ráadásul ha ezen át is esik a felhasználó, akkor is ott van az a gond, hogy az egész kezdődik elölről az adott program, illetve a meghajtó frissítésekor.

Az egyik potenciális megoldás, amivel kíséreteznek az érintettek, az a felhasználói gyorsítótárak megosztása. Tudni kell, hogy egy adott grafikus vezérlőre levetítve, az adott programverzióval, illetve eszközillesztővel mindig ugyanolyan shaderek készülnek. Tehát, ha a programkód, a grafikus meghajtó, illetve a GPU megegyezik két gép esetén, akkor az egyik rendszer által generált állományok, vagyis a lefordított és gyorsítótárazott shaderek átmásolhatók a másikra. Meg lehet tehát azt tenni, hogy egy adott szoftver- és hardverkonfigurációt tekintve csak az első felhasználó essen át a kellemetlen élményen, és a gépe által előállított adatok mindenki másnak elérhetők lehetnek egy szerverre feltöltve.

Ennél a módszernél persze gondolni kell arra, hogy jogi értelemben a lefordított shaderek személyes adatnak számítanak, még akkor is, ha nincs bennük amúgy semmi személyhez köthető információ. A játékosoknak tehát az egyes platformokon vagy a megvásárolt játékhoz kapcsolódó felhasználói licencszerződésben vállalniuk kell ezek megosztását. És ha ez megvan, akkor is biztosítania kell a program fejlesztőjének és kiadójának a megfelelő adatkezelést, ezek esetleges kérésre történő törlését, tehát mindent, amit a fejletebb államokban a jogszabályok előírnak.

Technikailag tehát adja magát az ötlet, hogy legyen a PC-s shader fordítás közösségi szintre emelve, de jogi értelemben ez sem egy egyszerű kérdéskor.

Na de a konzolok...

Az előbbiek alapján kiderülhetett, hogy akármerre lépünk, csak problémákba ütközünk, és akinek van konzolja, most felkiált, hogy márpedig ilyen jellegű akadások ezeken a gépeken nincsenek. Újabb kérdés merülhet fel: miért? Nos, ennek az oka az, hogy a konzolok fix hardverek, vagyis egy adott gépnek olyan fix specifikációja van, ami a teljes életciklusa alatt sem változik meg. Emiatt a fejlesztők itt nem is gondolkodnak köztes nyelveken vagy futtatási időben történő optimalizáláson, egyszerűen az adott shaderből előre lefordítanak egy olyan bináris állományt, ami helyből ráereszthető a grafikus vezérlőre. A program működését tekintve a fejlesztők eleve tudnak mindent arról, hogy mi várható a hardver oldalán, tehát nagyon jól lehet gépi kódra optimalizálni, és ez garantált, hogy az adott konzolon mindig futni fog, sőt, újabban már a visszafelé kompatibilitásra is figyel a Microsoft és a Sony, így akár a később érkező generációk is célozhatók lehetnek.

Látható tehát, hogy konzolokon a helyzet összehasonlíthatatlanul egyszerűbb, mint PC-ken. De működhetne ez a modell a személyi számítógépeken is? Papíron igen, de a gyakorlatban inkább nem. Az a gond, hogy a grafikus vezérők utasításarchitektúrája folyamatosan változik. Leginkább a memóriamodellhez nyúlnak hozzá a gyártók, mivel ez biztosítja a skálázhatóságot, vagyis ha PC-re lefordítanák a shadereket bináris állományba, akkor az működne a célzott hardvereken, de semmi máson. És ebbe beleértendők a később érkező grafikus vezérlők is. Ez a módszer tehát nem játszik, hiszen alapvetően fontos a fejlesztőknek, hogy ha megírnak egy programot, akkor azt több generáción át is futtatni tudják a felhasználók a PC-ken. Az egyszerűen nem felvállalható, hogy valaki megvesz egy játékot, és jön egy újabb VGA, amin az már nem indítható el, legalábbis addig, amíg le nem fordítják az utasításarchitektúrájára a shadereket.

A cikk még nem ért véget, kérlek, lapozz!

Azóta történt

Előzmények

Hirdetés