Vulkan – nova 3D API platforma | PC Press

Vulkan – nova 3D API platforma

Uspostaviti standarde nije lako jer svaki proizvođač vuče na svoju stranu i trudi se da svoj koncept nametne kao dominantan. Da li će korisnici ipak dobiti univerzalni 3D API, upotrebljiv na svim uređajima? Hardverski zahtevi koji se postavljaju pred „dobar“ računar su tokom poslednjih nekoliko godina nekako u stagnaciji, i to ne zbog sporog razvoja tehnologije, već zbog raznih softverskih dilema.

nvidia-gtx-vs-amd-radeon

Primarno softversko pitanje odnosi se na nov način upotrebe bilo kog računarskog hardvera. Za većinu stvari već postojeći hardver bio je dovoljan ogromnom procentu korisnika i nije bilo potrebe za dodatnim ulaganjima. Odnedavno su i mobilni uređaji „upali u isti koš“, što je postalo evidentno s novim generacijama uređaja koji hardverski nemaju mnogo toga novog da ponude. Istini za volju oni donose niz noviteta, ali te stvari krajnji korisnik jedva i da primeti.

4K rezolucija monitora za PC je povećala interesovanje za modernije grafičke kartice, ali i to je beznačajno prema onom što je u ovom momentu glavni pokretač razvoja hardvera. Zahvaljujući snažnom napretku VR tehnologija, prvi put posle dužeg vremena oseća se jača potreba za moćnijim i bržim hardverom. Kako se GPU proizvođači nalaze „prvi na udaru“, jasno je zbog čega su upravo oni najaktivniji u razvoju tehnoloških hardverskih i softverskih unapređenja za VR.

Brži 3D – API kao standardni problem

Veza hardvera i softvera bila je oduvek tesna, pa je logično da se paralelno s novim hardverom krenulo u razvoj adekvatne softverske podrške u vidu novog i modernog API‑ja. Da podsetimo, skraćenica API znači Application Programming Interface i predstavlja univerzalni naziv za sav softver koji povezuje neko drugo „parče“ softvera sa hardverom i njegovim drajverom.

Tradicionalni API predstavlja sistem visokog nivoa, jednostavno se postavlja između softvera i drajvera, prosleđujući zahteve i naredbe na adekvatan način, ali uz jedan veliki problem. Svi raniji API sistemi „visokog nivoa“ dizajnirani su za single core rad, dok su u međuvremenu GPU i procesori odavno postali multi core. Tako samo za jedan frejm u nekoj 3D sceni API treba da obradi i više desetina hiljada zahteva koje je uputila igra (3D engine) do procesora i GPU‑a, a kada se koristi samo jedno jezgro, jasno je gde se krije usko grlo za performanse. Ubrzanje CPU i GPU takta donosi relativno mali dobitak u performansama, pa je tu potrebno neko druge rešenje – novi API sistem.

The-Talos-Principle-Screenshot

AMD kao inovator

Prvi korak u rešenju problema s tradicionalnim API interfejsom napravio je pre tri godine AMD, kada je predstavio Mantle. To je bio potpuno novi API s kodom niskog nivoa, što znači da je komunikacija s drajverom mnogo direktnija. Preciznije rečeno, Mantle je gotovo bio deo drajvera koji je omogućavao upotrebu svih CPU i GPU jezgara na mnogo efikasniji način.

Budući da su Radeon grafički procesori uvek bili veoma dobri u paralelnom obrađivanju 3D geometrije, jasno je zbog čega je AMD nastojao da nametne upotrebu novog Mantle API‑ja. Osnovni problem za Mantle bio je upravo to „nametanje“, jer je bilo i očekivano da će izostati šira softverska podrška. Programski kod bilo kog 3D engine‑a mora značajno da se koriguje i optimizuje kako bi Mantle API pokazao sve svoje dobre strane, a developeri veoma teško i sporo prihvataju novitete koji utiču na njihov kod i traže izmene.

Zbog toga je AMD uspeo da „progura“ Mantle podršku kod svega desetak igara, što nikako nije bilo dovoljno da ovaj (inače odličan) API bude prihvaćen. AMD je pokazao da je novo i modernije API rešenje neophodno, kao i činjenicu da je Mantle radio veoma dobro. Tokom ranijih testiranja AMD grafičkih kartica mogli smo da probamo kako Mantle funkcioniše u praksi, i radio je dobro, donoseći pristojan skok performansi u igrama koje su ga podržavale. Ipak, AMD nije uspeo da izdejstvuje širu podršku gaming kompanija, pa je nakon dve godine obustavio Mantle projekat. Ipak, njegove komponente su integrisane u mnogo prihvaćeniji API.

DirectX 12

Kada je prošlog leta promovisan Windows 10, jedan od udarnih noviteta bio je DirectX 12 API. AMD je u pregovorima s kompanijom Microsoft uspeo da dobar deo Mantle ideja ugradi u DirectX 12, čime je napravljen dobar kompromis između integracije tehnologija i standardizacije. Windows je uvek mnogo značio za API standardizaciju, gde je DirectX jedan od najznačajnijih elemenata. Neki se sigurno sećaju 3DFX i Voodoo vremena (Glide API), kada je svaki proizvođač akceleratorskih 3D kartica imao sopstveni API, što na duže staze nikako nije bilo održivo.

Glavna ideja novog DirectX API‑ja jeste poboljšanje performansi, i to prvenstveno kroz maksimalni low level pristup grafičkom procesoru i boljem iskorišćenju modernih procesora. Sam API nudi pomenuti low level pristup uz prostije generisanje programskog koda, što je za developere bitna stavka.

Najveći broj novih funkcija koje ima DirectX 12 odnosi se na regulisanje problema navedenog na početku – bolju upotrebu većeg broja CPU i GPU jezgara. Ono što je interesantno, i pored svih DirectX 12 noviteta, broj igara koji iskorišćavaju te mogućnosti još je relativno mali. Naravno, s vremenom će se povećavati, ali je zanimljivo da ni Microsoft ne može više u toliko velikoj meri da utiče na gaming kompanije da brže prihvate nova API rešenja.

ProtoStar-Unreal-engine

Khronos grupa

Kriptični naziv Khronos nije iz nekog 007 filma gde predstavlja neku tajnu organizaciju, već je najnoviji korak u 3D API razvoju. To je grupa kompanija koje su se konačno dogovorile o razvoju novog zajedničkog API‑ja za 3D grafiku. Nakon AMD Mantle akcije i integracijom bitnog dela ovog API‑ja u DirectX 12, pokazalo se da je neophodan širi konsenzus. Na primer, zašto bi NVIDIA podržala nešto u čemu nije učestvovala, pa makar bile to i napredne DirectX 12 funkcije? Aktuelni NVIDIA grafički procesori pokazali su se loše u DirectX 12 okruženju u poređenju s Radeon karticama (videćemo kako će se Pascal GPU pokazati), pa je bilo očekivano da NVIDIA potraži neko drugo rešenje. Za dobrobit svih, to drugo rešenje leži u okviru Khronos grupe kompanija, među kojima su kao osnivači i NVIDIA i AMD.

Iako ova grupa dugo postoji (osnovana je još 2000), sada joj je u fokusu razvoj novog, široko prihvaćenog 3D API rešenja. Značajno je što u procesu učestvuju i druge kompanije, kao što su Intel, Sony, Qualcomm, Samsung, Huawei, PowerVR, Epic, Unity, Oculus VR i Google.

PowerVR-at-GDC-2016-Vulkan-OpenGL-ES-and-ray-tracing-6

Sledeći korak – Vulkan API

U skladu s postavljenim principima koje je zasnovao Mantle, novi API predstavlja najmodernije low level rešenje. Osnovna stvar je maksimalno iskorišćenje multi core procesora i veliki paralelizam, uz bolje upravljanje memorijom, prostiju DMA listu i direktan pristup, poseban univerzalni shader engine i tako dalje.

Ima tu raznih zanimljivih tehničkih detalja, ali najbitnija je finalna ideja – cross platform API. Dakle, Vulkan treba da bude API koji će doneti bolje 3D performanse na svim aktuelnim platformama. Sa Google‑om u Khronos grupi, to znači da će ovaj API biti podržan u operativnom  Android sistemu, što priču pomera dobar korak dalje. Tu je i PowerVR koji pravi striktno mobilna GPU rešenja, pa i on ima svoj interes, a isto važi i za kompanije Samsung i Huawei, jer je i kod njih relevantno tržište mobilnih telefona.

Vulkan su podržale i gaming kompanije kao što su Epic i Unity sa softverske strane, ali i gigant Sony koji je tu zarad svoje PlayStation platforme. Sony već neko vreme ima „problema“ s razvojem igara (zapravo s kompanijama koje to rade), navodeći da stari PlayStation API ima previše ograničenja i da se želi prelaz na Vulkan. Na kraju, tu je i Oculus kao proizvođač trenutno veoma popularnog Oculus Rift HMD sistema, a sećamo se da je jedan od glavnih ciljeva čitavog Vulkan API‑ja upravo podizanje VR performansi. Hardverski zahtevi VR igara su ogromni.

Vulkan API obezbeđuje da isti hardver radi isto na više platformi, odnosno da različiti hardver na različitim platformama koristi isti API, što je veliko olakšanje za developere koji će imati minimum posla oko portovanja igara. Android i PC su sada primarne platforme, ali se u nekom momentu može priključiti i Apple (ako bude hteo). Ključno je to što Vulkan API nije neka daleka priča – verzija 1.0 objavljena je nedavno za Android 6.0, Linux i PC platformu, s podržanim NVIDIA i AMD grafičkim procesorima koji imaju OpenGL ES 3.1 i OpenGL 4.1. Na redu su gaming kompanije koje treba da se prilagode, ali je ovoga puta situacija bolja, jer su Source 2 iz Valve‑a, Epic Unreal Engine 4 i ?? Digital Frostbite najavili podršku za Vulkan API.

ProtoStar-Unreal-engine

Da li će uspeti?

Iako je Microsoft deo Khronos grupe (kao saradnik), teško je očekivati da će se na Windows platformi bilo šta značajno desiti mimo DirectX‑a. Situacija oko Mantle API‑ja je dobra potvrda za to, ali i model kako se Vulkan može integrisati u DirectX 13. S dobrim nivoom integracije, Vulkan API može da bude deo i DirectX 13, ali i poseban API na drugim platformama, što će stvoriti široku GPU kompatibilnost koja se toliko traži.

Naravno, Microsoft se može protiviti tome, ali Vulkan API ima veoma moćnu podršku i ta opcija otvorenog DirectX i Vulkan sukoba u ovom momentu deluje kao moguća, ali ipak malo verovatna. Konkurencija po pitanju API‑ja dobra je za ubrzanje razvoja ali s ekonomske strane nikom nije u interesu. Eventualni razvoj bilo koje igre za dva odvojena API‑ja skup je i komplikovan proces, koji bi s Vulkan‑om svi želeli da eskiviraju, pa zbog toga treba očekivati da će se svi (pa čak i Sony) prilagoditi novom standardu.

Ostaje da vidimo koliko će to prilagođavanje trajati, ali jedva čekamo prva poboljšanja kroz direktan rast GPU performansi u novim igrama i, prvenstveno, VR primeni.

Miloš Stamenković

Objavljeno u časopisu PC#233


Excel kuhinjica

Twitter