Hirdetés

Zöld utat adott a konzolfunkciók PC-re hozásának az AMD

A vállalat az újonnan bejelentett shader kiterjesztéseibe a fejlesztők által leginkább igényelt funkciókat építette be.

A tehetősebb kiadói háttérrel rendelkező PC-s játékfejlesztők mondhatni állandóan elégedetlenek. Ez önmagában nem baj, hiszen az elégedetlenségük viszi előre az ipart. A gyártók és a szabványalkotók számára ugyanis a fejlesztők által felvázolt problémák megoldására kell törekedni. Ezért is történt az, hogy a hagyományos API-k helyére megérkeztek az olyan explicit API-k, mint a Microsoft DirectX 12 és a Khronos Group Vulkan, ezeket azonban egy gyártói megoldás előzte meg az AMD Mantle személyében. A cél minden esetben az igények kiszolgálása volt, első körben gyártói, majd később szabványos formában.

A fentieknek mindenki örült, de az explicit API-k csak egy alapvető problémakört oldanak meg, és nem ez az egyetlen gondjuk a fejlesztőknek. A hatékonyságon túl ugyanis jelentős igény a konzolok képességeihez közelebb vinni a PC-t. Ez már csak azért is célszerű, mert a kiadók a konzolokat célozva költenek a legtöbbet kutatásra és fejlesztésre, és az így kialakított algoritmusok és optimalizálások sokszor átmenthetetlenek PC-re. Utóbbi azért gond, mert a PC ilyen helyzetben csak másodhegedűs lehet, ugyanis a legtöbb kiadó a konzolra költött erőforrás töredékét szánja ennek a piacnak, ami még a legjobb szándék mellett is csak visszafogott eredmények biztosítására jó.

Hirdetés

Az egész felfogható úgy, hogy a konzolfunkciók elérhetővé tétele PC-n elhozhatja a következő minőségi ugrást az explicit API-k után. Nem véletlen, hogy az AMD a GPUOpen bejelentésekor azt a célt tűzte ki, hogy a konzolra és PC-re történő fejlesztést a lehető legközelebb vigye egymáshoz, így a konzolokra való optimalizálásból a PC is direkten hasznot húzhat.

A koncepcióról az AMD az idei GDC-n már beszélt, amiről korábban be is számoltunk, de most a tényleges megjelenésre is sor került. A vállalat által Shader Intrinsic Functions gyűjtőnéven emlegetett shader kiterjesztések DirectX 11, DirectX 12 és Vulkan API alatt lesznek kihasználhatók.

A Vulkan esetében az AMD SPIR-V kiterjesztésekkel operál, ami azért fontos, mert a Vulkan semmilyen más nyelven nem fogad el programot. A kihasználáshoz jelenleg a GLSL nyelvet lehet bevetni, amihez az AMD biztosított egy glslangValidator kiegészítést, aminek segítségével megfelelő SPIR-V kód állítható elő. A DirectX mellett az új AGS 4.0-t (AMD GPU Services) kell bevetni, amely a Mantle API-hoz is használt, speciális HLSL fordítón keresztül fordítja le a shadert AMDIL-re, vagyis a Radeon GPU-k által használt virtuális utasításarchitektúrára.

Az aktuálisan elérhetővé vált shader kiterjesztések elsődlegesen a fejlesztők által leginkább igényelt funkciókat biztosítják, amelyek közül is a két legfontosabb a Readfirstline és a Ballot. Az előbbi lehetővé teszi a fejlesztőknek a vektorregiszterek használatának redukálását, méghozzá úgy, hogy előre elmondható a fordítónak, hogy mely értékek állandók az adott wavefronton belül, amely ezeket a skalár regiszterbe is betöltheti. Ezzel jobb lehet a regiszterallokáció, ami növelheti a CU vektorfeldolgozóin belül futó wavefrontok számát. A Ballot szintén fontos, ugyanis nagyon egyenletes folyamatirányítási esetekben jelentősen növeli a végrehajtási tempót.

Lényeges megemlíteni, hogy a Vulkan API-hoz használt SPIR-V mindkét funkciót szabványosan definiálja readFirstInvocationARB és ballotARB néven, illetve van gl_SubGroupInvocationARB is, amelyet az AMD a DirectX API-kra elérhetővé tett LaneId néven. Ezek a szabványos SPIR-V újítások azonban még nem használhatók ki szabványos fordítással, ugyanis a GLSL nyelv Vulkanhoz specifikált verziójában még nincsenek benne. Ugyanakkor az AMD konstrukciójával szállíthatóvá válik olyan SPIR-V kód, amely ha csak az említett szabványos funkciókra épül, akkor esetlegesen futtatható az NVIDIA és az Intel hardverein is, de szabványos validátor nélkül ezzel nagyon óvatosan kell bánni, így az adott fejlesztőnek nagyon tudnia kell, hogy mit csinál.

Nagyon sokszor elhangzott az igény a baricentrikus koordináták direkt elérésének lehetőségére is, amelyet a Microsoft Xbox One és a Sony PlayStation 4 is megad, de ugyanakkor egyetlen PC-s API-ban sem érhető el a funkció. Pedig talán ez a leghasznosabb újítása a konzoloknak, mivel biztosítja az alapot az új interpolációs és attribútum csomagolási metódusok megalkotására, illetve számos olyan algoritmust lehetővé tesz pixel shader alól, amelyek eddig csak a geometry shader lépcsőben futhattak le. Utóbbi azért fontos, mert pixel shaderen belül lényeges sebességnövekedést lehet elérni. Nem elhanyagolható az sem, hogy számos konzolos analitikai élsimítási eljárást a baricentrikus koordináták direkt elérésével implementálnak a fejlesztők, kiemelve például az Ubisoft – híresnek mondható – HRAA megoldását, amely az új kiterjesztéssel végre áthozható PC-re is. Némi limitáció azonban, hogy ez a funkció DirectX 11-re nem érhető el.

Kiemelhetők még a komponensfelcserélést lehetővé tevő swizzle, a háromkomponenses min/median/max utasítások, illetve a gyors összepréselést lehetővé tevő mbcnt instrukció, amelyeket a konzolokon szintén sokszor használnak a fejlesztők, és az AMD ezeket is elérhetővé tette a DirectX 11, 12 és Vulkan API-kra.

A fenti shader kiterjesztések DirectX 11 és 12 alatti használatához a Radeon Software Crimson Edition 16.5.2-es meghajtó szükséges, míg a Vulkan API mellett a 16.5.3-as verziót kell telepíteni. Az AMD újításai minden GCN architektúrára épülő Radeonon üzemképesek.

Jó hír, hogy a fejlesztők egyelőre örömmel fogadták a bejelentést. A Frostbite Team számos konzolra már bevetett optimalizálás PC-re való áthozását helyezte kilátásba, míg a Firaxis Games programozói csapata ugyan a konzolokban nem igazán gondolkodik, de a baricentrikus koordináták direkt elérése után nagyon érdeklődnek. Az AMD nézőpontja szerint a shader kiterjesztések célja tisztán az egyedi fejlesztői igények kielégítése, illetve a szabványosítás felgyorsítása azoknál a funkcióknál, amelyeket a fejlesztők a konzolokon már használnak és nagyon szeretnék PC-n is látni ezeket.

Hirdetés

  • Kapcsolódó cégek:
  • AMD

Azóta történt

Előzmények

Hirdetés