Wraz z iOS 8 na urządzenia z procesorami A7 i A8 (iPad Air, iPad Mini z Retiną, iPhone 5S i późniejsze) trafił Metal. Ta zapowiedziana w czerwcu na konferencji WWDC nowa technologia w grafice 3D ma zwiększyć jakość obrazu i wydajność sprzętu jedynie za sprawą zmian w oprogramowaniu. Ten postęp ma pozwolić urządzeniom Apple'a dogonić duże platformy do gier (PS3, Xbox 360, a w przyszłości może nawet i te następnej generacji) - jako przykład podano Plants vs Zombies: Garden Warfare. Ta humorystyczna strzelanka od EA pojawiła się pierwotnie na dużych platformach właśnie. Dzięki Metalowi gra została uruchomiona na iPadzie Air, co wcześniej było niemożliwe.
Jakim cudem osiągnięto taki skok w wydajności bawiąc się jedynie oprogramowaniem, bez dotykania sprzętu? Aby odpowiedzieć na to pytanie, musimy przyjrzeć się temu, jak renderowana jest grafika 3D.
Metal ma znacząco zmniejszyć "ciężar" API w procesie generowania grafiki 3D Apple Apple
Kiedy pojawia się nowa gra, to, niezależnie od jakości grafiki, nikt nie będzie czerpał z niej przyjemności, jeśli nie będzie odpowiednio płynnie chodzić - innymi słowy, jeśli akcja nie będzie wyświetlana z prędkością przynajmniej 30 klatek obrazu na sekundę. Żeby sprzęt wyrenderował choćby jedną, potrzebna jest zaś współpraca między procesorem centralnym (CPU) a graficznym (GPU).
W tym tandemie CPU przygotowuje zestaw instrukcji zawierających informacje o tym, co ma się znaleźć w klatce, GPU zaś niezwłocznie te instrukcje wykonuje. Im krócej ten proces przebiega, tym więcej klatek na sekundę jest renderowanych. Idealnie CPU przygotowuje instrukcje w takim tempie, żeby GPU zawsze działał na pełnym obrotach.
Od pewnego czasu sytuacja jest jednak daleka od ideału. Procesory graficzne rozwijają się w niesamowitym tempie, większym niż procesory centralne (przykładem jest choćby sam iPhone 6 i układ A8 - CPU jest szybsze do 25% względem A7, GPU zaś do 50%). Dzisiejsze GPU uwijają się więc ze swoją robotą znacznie szybciej niż dostają instrukcje od CPU, czyniąc z tego ostatniego wąskie gardło wydajności.
W dużej mierze jest to wina graficznych API - to interfejsy programowania, które odpowiadają za sporządzanie wspomnianych wcześniej instrukcji. Fundamenty pod działanie dwóch najważniejszych, DirectX i OpenGL, wylano jeszcze w latach 90., kiedy na rynku konsumenckim dominowały akceleratory 3D pokroju Voodoo. Mówiąc dosadniej - w erze piksela łupanego.
Metal ma znacząco zmniejszyć "ciężar" API w procesie generowania grafiki 3D Apple Apple
Nowe API od Apple'a, Metal właśnie, jest "czystym" podejściem do tematu - działając jedynie na najnowszych układach Apple'a, A7 i A8, firma zmniejszyła ilość operacji przeprowadzanych przez API i umożliwiła twórcom bardziej bezpośrednią komunikację z GPU. Jeśli wierzyć zapowiedziom, efekty są naprawdę godne podziwu - nie tylko GPU dostaje instrukcje znacznie szybciej, ale także CPU jest mniej obciążone i posiada wolne zasoby obliczeniowe. Twórcy gier mogą wykorzystać ten fakt w dwojaki sposób:
1) Mogą utrzymać jakość grafiki na dotychczasowym poziomie, dzięki czemu GPU, działające od teraz na pełnych obrotach, wyrenderuje większą liczbę klatek na sekundę, zwiększając tym samym płynność gry. Dodatkową moc CPU mogą zaś przeznaczyć na obliczenia niezwiązane z grafiką, np. fizykę lub sztuczną inteligencję.
Albo
2) Mogą zlecić GPU jeszcze więcej roboty - tu do akcji wkraczają właśnie "Draw Calls", o których mówiono podczas konferencji. "Draw Calls" to, w uproszczeniu, ilość wyświetlanych obiektów na ekranie. Według Apple'a dzięki Metalowi możliwy jest ich nawet 10x wzrost, z 400 do 4000, co ma skutkować znacznie bardziej szczegółową grafiką przy 30 klatkach na sekundę.
Wyniki nowego API są imponujące i powinny pomóc Apple'owi nie tylko w utrzymaniu silnej już pozycji iPhone'a i iPada na rynku gier mobilnych, ale także w walce o produkcje na "większe platformy". Choć Metal dopiero trafił na rynek, już teraz cieszy się dużym wsparciem ze strony twórców gier, w tym naszego rodzimego CD Projekt RED, który na urządzenia z iOS-em zamierza wypuścić The Witcher Battle Arena. Sam Apple na wrześniowej konferencji zaprezentował grę Vain Glory, produkcję Super Evil Megacorp, która rzeczywiście oferuje oprawę graficzną, której duże produkcje by się nie powstydziły.
Ale pojawienie się Metala może także negatywnie odbić się na Androidzie. Jak?
Przed Metalem Apple korzystało na swoich urządzeniach z OpenGL. OpenGL jest graficznym API, który jednak, w odróżnieniu od DirectX Microsoftu, nie jest zamkniętym standardem. Wręcz przeciwnie, to otwarte oprogramowanie, z którego skorzystać może każdy chętny. Dzięki temu OpenGL jest popularny na wielu platformach, z Linuxem i Androidem na czele.
Nad rozwojem tego API czuwa konsorcjum firm o nazwie Khronos Group. Jest to niezwykle ciekawe grono, ponieważ znajdziemy w nim takich gigantów rynku, jak Google'a, Nokię, NVIDIĘ, AMD, Sony, Intela, Samsunga czy właśnie Apple'a. Konkurenci za dnia, w nocy współpracują ze sobą dla dobra ogółu?
Przed tegorocznym WWDC można było tak sądzić. Zapowiedź Metala psuje jednak tę idyllę. Jak mówi Kamil Brzeziński, szef zespołu aplikacji w Agora SA:
Metal dla Apple będzie tym czym jest DirectX dla Microsoftu, czyli ich własną implementacją API do grafiki 3D.
Apple porzuca otwarte rozwiązanie i wprowadza własne, zamknięte. Po co? Pierwsza odpowiedź, jaka się rzuca, to to, żeby mieć nad nim większą kontrolę. Ale dlaczego teraz gigant z Cupertino stawia na własne rozwiązanie, 20 lat po Microsofcie?
Jak zauważa Kamil Brzeziński, OpenGL nie jest dostosowany do chipu A7 i A8 oraz 64-bitowego procesora Apple'a. Teoretycznie, jako jeden z członków Khronos Group mógłby wpłynąć na rozwój OpenGL w pożądanym przez siebie kierunku, ale tutaj warto przytoczyć słowa Alexa St. Johna "Sainta", jednego w twórców DirectX.
Metal ma znacząco zmniejszyć "ciężar" API w procesie generowania grafiki 3D 2K Games XCOM: Enemy Unknown to jedna z "dużych" gier, które trafiły także na urządzenia mobilne- 2K Games
Według niego Apple doszedł do momentu, kiedy rozwijanie otwartych rozwiązań nie leży w jego interesie - firma ma już na tyle dużo wprawy w grafice 3D, że może stworzyć własne API. Co więcej, inwestowanie w OpenGL odbija rykoszetem na pozycji giganta z Cupertino, ponieważ, chcąc nie chcąc, wspiera swoją bezpośrednią konkurencję.
OpenGL nie jest wolny od wad - wielu porównuje go do przypadkowej zbieraniny funkcjonalności, które nie działają lub są niezoptymalizowane. Według "Sainta" urządzenia mobilne były wolne od tego bałaganu, ponieważ kierunek rozwoju mobilnej wersji OpenGL, OpenGL ES, wyznaczał Apple z myślą o swoim iOS. Korzystał z tego także Android, dzięki czemu smartfony z zielonym robocikiem również świetnie sprawdzają się w roli platform do gier.
Ta sytuacja może się jednak teraz skomplikować. Choć Khronos Group zapowiedziała właśnie inicjatywę stworzenia OpenGL nowej generacji, który ma dogonić rynkowe trendy i pozbyć się bagażu wcześniejszych wersji, to proces ten będzie trudny i długotrwały. Metal tymczasem już jest. Nic więc dziwnego, że pojawia się obawa, iż zacznie rosnąć growa przepaść między iOS-em a Androidem, która do momentu premiery OpenGL nowej generacji może okazać się zbyt wielka do zasypania.