Mobilne akceleratory grafiki



Podobne dokumenty
Karty graficzne możemy podzielić na:

Plan wykładu. Akcelerator 3D Potok graficzny

GLKit. Wykład 10. Programowanie aplikacji mobilnych na urządzenia Apple (IOS i ObjectiveC) #import "Fraction.h" #import <stdio.h>

Podsystem graficzny. W skład podsystemu graficznego wchodzą: karta graficzna monitor

CMS, CRM, sklepy internetowe, aplikacje Web

Zaawansowane systemy programowania grafiki. Wprowadzenie. Podstawy OpenGL

JavaFX. Technologie Biznesu Elektronicznego. Wydział Informatyki i Zarządzania Politechnika Wrocławska

Grafika komputerowa i wizualizacja

Karta graficzna karta rozszerzeo odpowiedzialna generowanie sygnału graficznego dla ekranu monitora. Podstawowym zadaniem karty graficznej jest

MonoGame. Wieloplatformowe gry w C# Mateusz Cicheński

GRAFIKA CZASU RZECZYWISTEGO Wstęp do programowania grafiki czasu rzeczywistego.

Politechnika Poznańska, Instytut Informatyki, TWO/GE. Programowanie dla ios

Systemy graficzne. dr inż. Mariusz Szwoch

Android - wprowadzenie. Łukasz Przywarty

Wprowadzenie do grafiki maszynowej. Wprowadzenie do historii OpenGL

Wprowadzenie do QT OpenGL

Karta przedmiotu. Podstawy programowania procesorów graficznych. realizowanego w ramach projektu PO WER

KATEDRA SYSTEMÓW MULTIMEDIALNYCH SEMINARIUM MULTIMEDIALNE SYSTEMY MEDYCZNE

GRAFIKA KOMPUTEROWA. Rozwiązania sprzętowe i programowe. Przyspieszanie sprzętowe. Synteza i obróbka obrazu

Systemy operacyjne na platformach mobilnych 3 Wstęp do systemu Android

GRAFIKA KOMPUTEROWA. Rozwiązania sprzętowe i programowe. Przyspieszanie sprzętowe. Synteza dźwięku i obrazu

OpenGL - Open Graphics Library. Programowanie grafiki komputerowej. OpenGL 3.0. OpenGL - Architektura (1)

Gry Komputerowe Laboratorium 1. Zajęcia organizacyjne Animacja z uwzględnieniem czasu. mgr inż. Michał Chwesiuk 1/22. Szczecin,

Tablet MODECOM FreeTAB HD X2

Symulator doboru koloru i przetłoczenia bramy garażowej oraz wzoru drzwi wejściowych. do elewacji budynku klienta

Projekt inżynierski uwagi

Projektowanie gier komputerowych. dr inż. Mariusz Szwoch

Bibliografia: pl.wikipedia.org Historia i rodzaje procesorów w firmy Intel

PRZEWODNIK PO PRZEDMIOCIE

T-Bull S.A. Made by gamers for gamers. STRATEGIA ROZWOJU T-Bull S.A. na lata Wrocław, 19 września 2017 r.

Wykład 4. Rendering (1) Informacje podstawowe

CUDA Median Filter filtr medianowy wykorzystujący bibliotekę CUDA sprawozdanie z projektu

Nowinki technologiczne procesorów

Projektowanie, tworzenie aplikacji mobilnych na platformie Android

Projektowanie aplikacji graficznych. dr inż. Jarosław Zubrzycki

/wpisać: model, symbol, producent urządzenia/

BUDOWA APLIKACJI NA PLATFORMĘ IPHONE/IPAD. dr inż. Marcin Tomana

Moc płynąca z kart graficznych

Opracował: Jan Front

Zagadnienia wstępne WSTĘP DO PROGRAMOWANIA APLIKACJI MOBILNYCH DLA SYSTEMU ANDROID

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

Wstęp do Informatyki. Klasyfikacja oprogramowania

Nowinki technologiczne procesorów

Specjalność Systemy Aplikacyjne Grafiki i Multimediów. Wydział Informatyki, Politechnika Białostocka

Wymagania systemowe dla Qlik Sense. Qlik Sense February 2018 Copyright QlikTech International AB. Wszelkie prawa zastrzeżone.

Przegląd architektury PlayStation 3

Podział komputerów. Wykład z Technologii Informacyjnych. Piotr Mika

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

Grafika Komputerowa Wykład 4. Synteza grafiki 3D. mgr inż. Michał Chwesiuk 1/30

Większe możliwości dzięki LabVIEW 2009: programowanie równoległe, technologie bezprzewodowe i funkcje matematyczne w systemach czasu rzeczywistego

Tablet MODECOM FreeTAB 7001 HD IC

System zarządzający grami programistycznymi Meridius

Piotr Orzechowski. Technologie Biznesu Elektronicznego

GUI - projektowanie interfejsów

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.

L.dz.: WETI /16/2014 Gdańsk, dn

WYKORZYSTANIE PLATFORMY FireMonkey W PROCESIE URUCHAMIANIA I TESTOWANIA UKŁADÓW MIKROPROCESOROWYCH

MOBILNA BANKOWOŚĆ potrzeba czy moda?

Król Łukasz Nr albumu:

Wprowadzenie. Artur Staszczyk Bartłomiej Filipek

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

Narzędzia uruchomieniowe dla systemów Embedded firmy Total Phase

Załącznik nr 6 do SIWZ nr postępowania II MJ Zaoferowany. sprzęt L P. Parametry techniczne

Systemy Geoinformatyczne

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Programowanie procesorów graficznych GPGPU

Nowinkach technologicznych procesorów

TABLET MULTIMEDIALNY MODECOM FreeTAB 1331 X2 HD

Wykład 5. Rendering (2) Geometria

Spis treści. Wykaz ważniejszych skrótów Wprowadzenie Rdzeń Cortex-M Rodzina mikrokontrolerów XMC

ABIX Cyfrowa edukacja z oprogramowaniem Open Source

Wymagania systemowe dla Qlik Sense. Qlik Sense June 2018 Copyright QlikTech International AB. Wszelkie prawa zastrzeżone.

Karta sieciowa, 10/100/1000Mbit Dopuszcza się możliwość stosowania kart sieciowych zintegrowanych z płyta główną 8. Nagrywarka DVD+-RW DL SATA

Architektura Komputerów

Pakiet nr 1. Zestawienie wymaganych parametrów technicznych - funkcjonalnych

Google Android. Opracował Maciej Ciurlik

Przyspieszanie sprzętowe

MISJA AMD 2 HISTORIA AMD 2014

Grafika 3D na przykładzie XNA 3.1

Systemy operacyjne. Informatyka Stosowana, I rok. Krzysztof Wilk. Katedra Informatyki Stosowanej i Modelowania

Systemy operacyjne na platformach mobilnych 2 Programowanie aplikacji z graficznym interfejsem użytkownika w GTK+

Dla klientów biznesowych Microsoft przygotował dwie wersje systemu Windows Vista, w zależności od wielkości i skali działalności organizacji:

RESPONSYWNE INTERFEJSY. Klasy urządzeń klienckich Responsywne style CSS. Waldemar Korłub

PROCESOR Z ODBLOKOWANYM MNOŻNIKIEM!!! PROCESOR INTEL CORE I7 4790K LGA1150 BOX

Wymagania systemowe dla Qlik Sense. Qlik Sense 3.1 Copyright QlikTech International AB. Wszelkie prawa zastrzeżone.

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

Wymagania systemowe dla Qlik Sense. Qlik Sense June 2017 Copyright QlikTech International AB. Wszelkie prawa zastrzeżone.

i3: internet - infrastruktury - innowacje

SPECYFIKACJA TECHNICZNA OPROGRAMOWANIA

Laptop Lenovo IdeaPad V

ZAKRES TEMATYCZNY KONKURSU 3/1.2/2016/POIR PROGRAMU SEKTOROWEGO GAMEINN. A.1 Innowacyjne rozwiązania w zakresie projektowania modeli rozgrywki w grach

SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD

opracował Adam Nowiński

Dokumentacja projektu QUAIKE Architektura oprogramowania

Systemy na Chipie. Robert Czerwiński

Tworzenie i obsługa wirtualnego laboratorium komputerowego

Wykład 2. Mikrokontrolery z rdzeniami ARM

Programowanie dla ios

Twórz mobilne aplikacje biznesowe dzięki SAP Mobile Platform

Transkrypt:

Mobilne akceleratory grafiki Kamil Trzciński Zakład Grafiki Komputerowej Instytut Informatyki Politechniki Warszawskiej 29 stycznia 2013 Streszczenie W ostatnim czasie obserwujemy ogromny wzrost znaczenia branży mobilnej. Telefony komórkowe oraz tablety powoli zastępują komputery i konsole w szeroko pojętej wirtualnej rozrywce. Skutkiem tego jest niezwykle dynamiczny rozwój mobilnych akceleratorów grafiki odpowiedzialnych za wizualizację wirtualnych światów gier i aplikacji. Dynamizm wzrostu wydajności mobilnych kart graficznych jest wyższy niż ten obserwowany dla innych segmentów rynku. Firma nvidia przewiduje, że wydajność urządzeń mobilnych w 2014 roku zrówna się z wydajnością obecnej generacji konsol. Celem tego artykułu jest zaznajomienie czytelnika z obecnymi oraz przyszłymi technologiami mobilnymi. Dokument przedstawia możliwości oraz ograniczenia obecnie wykorzystywanych API programistycznych, podstawowe problemy z obecnymi technologiami oraz zarysowuje prawdopodobny kierunku rozwoju mobilnej grafiki. 1 Wstęp Od kilku lat obserwujemy bardzo dużą popularyzację smartfonów (ang. smartphone). Przenośnych urządzeń telefonicznych łączących w sobie funkcję telefonu komórkowego i komputera kieszonkowego (PDA). Bardzo często zastępują one laptopa, komputer PC a nawet konsolę do gier. Potrafią wyświetlać pełne strony Internetowe jak i zoptymalizowane wersje mobilne. Pozwalają na szybki dostęp do Internetu poprzez WiFi lub szerokopasmową sieć komórkową. Jednakże największy wpływ na popularyzację smartfonów miały sklepy z mobilnymi aplikacjami. Urządzenia mobilne zbudowane są obecnie na bazie wielordzeniowych procesorów, wydajnych akceleratorów grafiki, wielomegapikselowych aparatów fotograficznych, gigabajtowych wbudowanych kart pamięci, megapikselowej rozdzielczosći ekranu obsługującego wielodotyk. 1

Rysunek 1: Obrazek przedstawia dochód sklepów z mobilnymi aplikacjami http: // en. wikipedia. org/ wiki/ File: Global_ Mobile_ Applications_ Store_ Revenue. svg Te i inne czynniki doprowadziły do eksplozji popularności na rynku gier mobilnych. Najnowsze dane pokazują, że wartość tego segmentu rynku w 2012 będzie około 7,8 miliarda $ a w 2016 osiągnie 18,3 miliarda $ 1. Większość przychodów pochodzi lub będzie pochodzić ze sprzedaży gier oraz dodatków. Obecnie użytkownicy tabletów spędzają 67% czasu na graniu w mobilne gry. W przypadku telefonów jest to 39% 2. Przewiduje się powolną erozję popularności konsol do gier na rzecz właśnie urządzeń mobilnych, smartfonów i tabletów. Zapotrzebowanie na pełniejsze doznania wymusza nieprzerwany rozwój tej branży. Wynika to ze stałego wzrostu wielkości urządzeń (powoli się stabilizującego), zwiększania rozdzielczości matryc, jakości aparatów oraz wymagań gier i aplikacji. 1 http://www.gamesindustry.biz/articles/2012-11-28-the-state-of-mobile-game-development 2 http://www.boston.com/business/innovation/2012/11/01/ mobile-apps-upending-video-game-industry/unpw0t2zbnylj83iz6uhjk/story.html 2

Rysunek 2: Gra Need For Speed: Most Wanted dla systemu Android 2 Wiodące platformy mobilne Obecnie używanymi mobilnymi systemami operacyjnymi są Google Android, Apple ios, BlackBerry OS, Samsung Bada, Microsoft Windows Phone oraz inne platformy oparte o system Linux. Rozdział ten ma na celu przedstawienie najpopularniejszych. 2.1 ios Jest to system operacyjny Apple Inc. dla urządzeń mobilnych iphone, ipod touch oraz ipad. Obecna nazwa funkcjonuje od 7 czerwca 2010, wcześniej system był znany jako iphone OS. Bazuje on na systemie operacyjnym Mac OS X 10.5 i tym samym jądrze Darwin. ios obsługuje dwa API graficzne: Core Graphics / Quartz 2D - jest to API dedykowane urządzeniom Apple, będące częścią Core Graphics. Wykorzystywane głównie do akceleracji interfejsu użytkownika. OpenGL ES - jest to mobilna wersja wieloplatformowej biblioteki graficznej OpenGL. Biblioteka jest interfejsem programowania aplikacji. Wersja 1.1 jest obsługiwana na wszystkich urządzeniach Apple, natomiast nowsza 2.0 dopiero od ipada, ipada Mini, iphone 3GS oraz ipod Tocuh trzeciej generacji. 3

iphone oraz ipad są obecnie najpopularniejszymi mobilnymi platformami dla gier. Większość najnowszych produkcji powstaje właśnie na system ios. Po części wynika to z relatywnie małego piractwa oraz stosunkowo dużego zysku z publikowanych w sklepie aplikacji. 2.2 Android Android jest to system operacyjny oparty na jądrze Linuxa, zaprojektowany dla dotykowych urządzeń mobilnych tj.: smartfony lub mobilne komputery. Kod źródłowy systemu jest otwarty i udostępniany przez Google na licencji Apache. Otwartosć systemu pozwala na dowolną modyfikację i dystrybucję urządzeń opartych o Androida. Te i inne czynniki pozwoliły stać się Androidowi najczęściej wykorzystywaną platformą mobilną. System operacyjny obsługuję rendering grafiki 2D i 3D. Wykorzystuje w tym celu OpenGL ES. OpenGL jest specyfikacją uniwersalnego API do generowania grafiki. ES jest natomiast rozszerzeniem specyfikacji przystosowanej do wykorzystania na urządzeniach mobilnych. OpenGL ES 1.0 oraz 1.1 jest obsługiwany od pierwszej wersji Androida. OpenGL ES 2.0 obsługiwany jest od Android 2.2. 2.3 Windows Phone Jest to najmłodsza z opisywanych w niniejszym artykule platform. Windows Phone jest platformą mobilną zaprojektowaną przez Microsoft. Jest następcą Windows Mobile, jednakże niekompatybilnym z tą platformą. System operacyjny wykorzystuje innowacyjny interfejs Modern i jest kierowany na rynek konsumencki, a nie tak jak poprzednio rynek biznesowy. Najnowsza odsłona systemu, to Windows Phone 8. Wersja ta zastępuje poprzednią architekturę opartą na Windows CE na Windows NT. Wiele komponentów jest współdzielonych z systemem Windows 8, co ułatwia przenoszenie aplikacji między tymi systemami. Aplikacje oraz gry dla Windows Phone są pisane z wykorzystaniem XNA, zoptymalizowanej wersji Silverlight, głównie w języku C#. Windows Phone 8.0 wprowadził możliwość pisania aplikacji z wykorzystaniem komponentów kodu natywnego. Umożliwia to prostsze niż poprzednio przenoszenie aplikacji między różnymi platformami. Kod pisany jest w C/C++ z wykorzystaniem uproszczonej wersji Windows API oraz DirectX 11. Windows Phone jako platforma deweloperska udostępnia najlepsze i najszybsze narzędzia do programowania spośród wszystkich opisywanych wcześniej systemów operacyjnych. 4

3 Układy sprzętowe Jednym z czynników, które przyczyniły się do znaczącego wzrostu popularności urządzeń mobilnych była widoczna poprawa jakości wyświetlaczy graficznych. Pierwsze urządzanie cechowały się wyświetlaczami monochromatycznymi o rozdzielczości 4k pikseli. Obecnym standardem dla telefonów są wyświetlacze o 1M pikseli, a dla tabletów 2M-3M pikselowe. Kierunek tej tendencji raczej się nie zmieni. Już zapowiedziane są smartfony z wyświetlaczami 2M pikselowymi (jest kwestia miesięcy kiedy wejdą do sprzedaży). Obecne urządzenia cechują się mocą obliczeniową porównywalną z komputerami klasy PC sprzed 5 lat. Różnica jest natomiast w wielkości i poborze mocy. Najwydajniejsze obecnie urządzenia potrafią podczas intensywnego korzystania wytrzymać po 10-12 godzin 3 [glb]. To ciągłe współzawodnictwo między producentami wymusza wprowadzanie nowych i szybszych technologii oraz dalszą miniaturyzacją układów scalonych. Praktycznie wszystkie obecnie produkowane urządzenia zbudowane są w technologii SoC 4 (ang. System-on-a-chip). Opis według Wikipedii brzmi następująco: SoC (ang. System-on-a-chip) lub SOC (ang. System On Chip) mianem tym określa się układ scalony zawierający kompletny system elektroniczny, w tym układy cyfrowe, analogowe (także radiowe) oraz cyfrowo-analogowe. Poszczególne moduły tego systemu, (...), pochodzą zwykle od różnych dostawców. (...) Typowym obszarem zastosowań SoC są systemy wbudowane, a najbardziej rozpowszechnionym przedstawicielem tego rozwiązania są systemy oparte na procesorach w architekturze ARM. (...). W odróżnieniu od mikrokontrolerów SoC są wyposażone w CPU o stosunkowo dużej mocy obliczeniowej (pozwalającej uruchamiać systemy operacyjne takie jak Linux i Windows CE) oraz bardziej specjalizowane peryferia. Obecnie na rynku funkcjonuje wielu dostawców systemów SoC oraz mobilnych akceleratorów grafiki. Dokument ten przedstawia układy mające największy procentowy udział w urządzeniach mobilnych. 3.1 ARM Mali Mali jest akceleratorem graficznym (GPU), produktem firmy ARM. Firma ARM jest projektantem większości dostępnych na rynku układów 3 http://www.mgsm.pl/pl/katalog/samsung/galaxysiii/test/671/ Galaxy-S3-lepszy-niz-iPhone.html 4 http://pl.wikipedia.org/wiki/system-on-a-chip 5

Rysunek 3: Matryca układu NVIDIA Tegra 3, Kolorem żółtym oznaczone są rdzenie procesora A9 http: // www. anandtech. com/ show/ 5072/ nvidias-tegra-3-launched-architecture-revealed ARM (m.in. nowych Cortex-A8, A9 i A15) oraz popularnych układów graficznych dla urządzeń mobilnych Mali, znanych chociażby z Samsungów Galaxy S II, Galaxy S III czy Galaxy Note. Układ, tak jak większość procesorów dedykowanych do obsługi 3D, nie udostępnia kontrolera wyświetlania na monitorze. Procesor implementuje jedynie funkcje renderingu 3D do pamięci operacyjnej, która może być następnie przetworzona i wyświetlona na panelu LCD. Obecnie na rynku jest dostępnych wiele układów bazujących na tej architekturze. Standardem jest obsługa standardu OpenGL ES 2.0 oraz OpenVG. 3.2 PowerVR PowerVR jest dywizją Imagination Technologies będącej twórcą rozwiązań sprzętowych i programowych przeznaczonych do renderingu 2D i 3D. Początkowo projektowane urządzenia były przeznaczone na rynek PC gdzie miały konkurować z takimi firmami jak NVIDIA, czy AMD. Ich przewaga nad konkurencją był głównie lepszy współczynnik ceny do wydajności. Jednakże bardzo dynamiczny rozwój technologii desktopowych zmusił mniejszych graczy tj. PowerVR do zmiany strategii biznesowej. Odpowiedzią firmy na te zdarzenia było zaprojektowanie procesorów grafiki przeznaczonych dla urządzeń niskonapięciowych. Z czasem urządzenia te zostały wcielone w układy SoC dedykowane dla urządzeń 6

mobilnych. Architektura procesora jest w pełni skalowalna i z powodzeniem może być wykorzystywana w tanich urządzeniach jak i wysoko wydajnych. Układ potrafi realizować funkcję poprzez wykorzystanie techniki GPGPU. Pozwala to GPU zwykle zajmującym się obliczeniami związanymi z grafiką komputerową na wykonywanie obliczeń ogólnego przeznaczenia, tak jak CPU. Umożliwia również wykonywanie wielu obliczeń równolegle, szybciej niż z wykorzystaniem procesora ogólnego przeznaczenia. PowerVR wykorzystuje do wizualizacji grafiki 3D metodę zwaną odroczonym kafelkowym mechanizemem renderingu. Obraz jest renderowany dopiero w momencie, gdy wszystkie renderowane poligony zostaną przesłane dla danej ramki. Kosztowne operacje, tj.: teksturowanie i cieniowanie pikseli jest odroczone do momentu, gdy będzie znana widoczność wszystkich pikseli renderowanego obrazu. Obraz następnie jest dzielony na kafle o rozmiarze 32x32 piksele. Do każdego kafla przypisana jest lista wpływających na wynikowy obraz trójkątów. Obraz jest następnie renderowany techniką podobną do rzucania promieniami (ang. ray-casting). Większość obecnie dostępnych układów obsługuje najważniejsze API programistyczne, tj.: OpenGL ES 1.1, 2.0, OpenVG 1.1, DirectX 9, 10.1 oraz OpenCL. Seria układów od PowerVR jest z powodzeniem wykorzystywana w najnowszych urządzeniach firmy Apple: wszystkie wersje ipada, iphone 4S i 5 oraz urządzeniach innych producentów, np.: Samsung. 3.3 NVIDIA Tegra NVIDIA Tegra[nVI11] seria układów scalonych zbudowanych w systemie System-on-a-chip dedykowanych dla mobilnych platform na architekturze ARM przeznaczona głównie dla urządzeń mobilnych. Układy można te znaleźć w wielu dostępnych urządzeniach: 1 Motorola Xoom 2 Samsung Galaxy R 3 LG Optimus 2X 4 Nexus 7 Obecnie na rynku dostępne są: Tegra 2 - druga generacja układu SoC zbudowana na bazie dwurdzeniowego procesora ARM Cortex-A9. Jako układ graficzny został wykorzystany Ultra low power GeForce z 4 jednostkami cieniowania wierzchołków i pikseli, 32 bitowym kontrolerem pamięci, 32KB cache L1 dla rdzenia oraz 1MB współdzielonej pamięci L2. Tegra 3 - trzecia generacja układu SoC zbudowana na bazie czterordzeniowego procesora ARM Cortex-A9 oraz piątego rdzenia. Piąty rdzeń pracuje jako układ o małej wydajności, zoptymalizowany do długiej pracy na baterii. Układ ma wbudowane mechanizmy automatycznego przenoszenia zadań między normalnymi rdzeniami, a piątym. Układ graficzny wykorzystuje 12 jednostek cieniowania 7

wierzchołków i pikseli taktowanych wyższą częstotliwością niżw Tegra 2. Tegra 4 - najnowsza wersja układu, jeszcze niedostępna w sprzedaży. Przewiduje się, że układ jest 20x szybszy niż Tegra 2 oraz 6x szybszy niż Tegra 3. 4 API graficzne Obecne karty graficzne mogą być programowane przy pomocy różnych interfejsów graficznych. Dwa najpopularniejsze i konkurencyjne to OpenGL i DirectX. OpenGL jest uniwersalnym API do generowania grafiki dostępnym na prawie wszystkich platformach. DirectX jest własnościowym produktem firmy Microsoft ograniczonym tylko do platformy Windows i systemów zależnych. Firmy produkujące silniki graficzne, aby zapewnić współpracę ze wszystkimi urządzeniami zmuszone są tak przygotować kod, aby był w stanie działać z każdym z nich. Każdy z interfejsów posiada wiele różnych wersji: inne wersje dla komputerów PC, inne dla urządzeń mobilnych i jeszcze inne dla konsol. Pokrótce postaram się przedstawić idee, stojące za każdym z nich. 4.1 OpenGL OpenGL [JN94][MS07] (ang. Open Graphics Library) jest to specyfikacja uniwersalnego API do generowania grafiki. Zestaw funkcji składa się z 250 podstawowych wywołań, umożliwiających budowanie złożonych trójwymiarowych scen z podstawowych figur geometrycznych. OpenGL wykorzystywany jest często przez gry komputerowe i wygaszacze ekranu, spełnia rolę analogiczną jak konkurencyjny Direct3D (część DirectX) w systemie Windows firmy Microsoft. Również programy do przedstawiania wyników badań naukowych, CAD, oraz wirtualnej rzeczywistości używają OpenGL. Idea działania w najnowszych wersjach OpenGL jest bardzo podobna do DirectX. Różnica jest w API. Interfejs biblioteki OpenGL jest interfejsem niskopoziomowym, wykorzystującym programowanie strukturalne, gdzie interfejs dla biblioteki DirectX opiera się o wykorzystanie interfejsów pełniących rolę obiektów, umożliwiających dostęp do konkretnych metod. OpenGL został zaprojektowany w taki sposób, aby producenci sprzętu graficznego mogli rozszerzać jego funkcjonalność poprzez własne rozszerzenia [nvi07]. Rozszerzenia takie dystrybuowane są poprzez publikację zarówno sterowników obsługujących dane funkcje, jak również plików nagłówkowych z definicjami tychże, aby z funkcji tych mogli skorzystać programiści piszący oprogramowanie używające OpenGL. 8

Funkcje lub stałe występujące w rozszerzeniach oznaczane są skrótami przyporządkowanymi poszczególnym producentom (np. funkcje firmy NVIDIA oznaczane są skrótem NV). Jeśli funkcja jest używana przez więcej niż jednego producenta, oznaczana jest skrótem EXT. W przypadku, gdy zostanie oficjalnie zaakceptowana przez Architectural Review Board, staje się ona rozszerzeniem standardowym i otrzymuje oznaczenie ARB. Później, rozszerzenie może zostać oficjalnie częścią standardu OpenGL, w kolejnej jego wersji. Wyróżniamy specjalną wersję biblioteki przygotowaną dla potrzeb urządzeń mobilnych: OpenGL ES[gle] (ang. OpenGL for Embedded Systems). OpenGL ES jest podzbiorem OpenGL 3D zaprojektowanym m.in. dla urządzeń mobilnych typu telefony komórkowe, palmtopy i konsole do gier. Jest zdefiniowany i rozpowszechniany przez Khronos Group. Wykorzystywany w systemach operacyjnych, tj.: Symbian, Android i ios. Obecnie na rynku funkcjonuje kilka wersji specyfikacji OpenGL ES. Pokrótce są one przedstawione w rozdziałach poniżej. 4.2 OpenGL ES 1.0 Jest to najstarsza wersja biblioteki. Została ona zaprojektowana na podstawie specyfikacji OpenGL 1.3. Korzystanie z tej biblioteki wiązało się z: 1. Rezygnacją z wykorzystania funkcji glbegin() i glend() 2. Całość obliczeń opierała się na arytmetyce stałoliczbowej 3. Rezygnacją z ręcznego wywołania funkcji renderujących na rzecz buforów wierzchołków 4. Usunięciem wielu typów renderowanych objektów, tj.: kwadratów, poligonów, linii 5. Usunięciem obsługi bufora akumulacji, list wyświetlania oraz niektórych parametrów materiałowych Wersja tej biblioteki jest obsługiwana przez starsze urządzenia mobilne, jak i również konsolę Playstation 3. 4.3 OpenGL ES 1.1 Jest to rozszerzenie możliwości wersji OpenGL ES 1.0. Dodano następujące funkcje: 1. Bufory danych - funkcja umożliwiła zapisywanie wierzchołków i indeksów w pamięci karty graficznej 9

2. Multiteksturing - funkcja umożliwiła nakładanie wielu tekstur w jednym przebiegu renderingu, pozwoliło to np. na wykonywanie operacji iloczynu skalarnego 3. Automatyczną generację poziomów szczegółowości - aplikacje nie musiały implementować lub zapisywać dalszych poziomów szczegółowości dla tekstur, operację tą wykonywała karta graficzna lub sterownik karty graficznej 4.4 OpenGL ES 2.0 Trzecia wersja biblioteki była pewnym przełomem. Wprowadziła zamiast nieprogramowalnego (stałego) potoku renderingu, programowalny. Wszystkie operacje, tj.: transformacja, oświetlenie, parametry materiału, parametry oświetlenia zostały zastąpione specjalnie przygotowywanymi programami cieniującymi wierzchołki i piksele (ang. shaders). Te małe fragmenty kodu były przygotowywane przez programistę. Z tego powodu biblioteka OpenGL ES 2.0 nie jest wstecznie kompatybilna z 1.0/1.1. 4.5 OpenGL ES 3.0 Jest to najnowsza wersja specyfikacji, zaprezentowana w sierpniu 2012. Specyfikacja zachowuje wsteczną kompatybilność z OpenGL ES 2.0 dodając tylko nowe funkcje pozwalające programować nowe efekty wizualne w aplikacjach. Do nowości dodanych do biblioteki należą: 1. Określanie widoczności obiektów (occlusion queries) 2. Wyświetlanie wielu obiektów jednocześnie (instanced rendering) 3. Obsługa wielu buforów renderingu (MRT) 4. Obsługa stało oraz zmiennoprzecinkowych operacji w shaderach 5. Obsługa tekstur głębokości (depth textures) 6. Rozszerzenie obsługiwanych formatów tekstur, buforów renderingu oraz ich wielkości 7. Wymuszenie większej spójności implementacyjnej między różnymi urządzeniami 4.6 DirectX DirectX to zestaw funkcji API wspomagających generowanie grafiki (dwu- i trójwymiarowej), dźwięku oraz innych zadań związanych zwykle z grami i innymi aplikacjami multimedialnymi. Najczęściej 10

jest wykorzystywany do obsługi grafiki w grach komputerowych. Używany jest również do pisania programów do specyficznych zadań z wykorzystaniem np. grafiki trójwymiarowej (np. symulacja komputerowa). DirectX jest produktem firmy Microsoft, dostępnym tylko na platformę Windows, platformy mobilne oparte o Windows Phone oraz konsolę Xbox. Obecnie dostępna jest wersja DirectX 11, która została wprowadzona wraz z premierą systemu operacyjnego Microsoft Windows 7. Wraz z biblioteką DirectX 10[Lun08] wprowadzono tzw. poziomy funkcjonalności (ang. feature levels). Najnowsza wersja API DirectX udostępnia tylko funkcje programowalnego potoku renderingu[mic11b][sl05][mic11a]. Zakres programowalności zależy wtedy od wybranego poziomu funkcjonalności: 9.1-9.3 - obsługa Shader Model 2.0/2.x, instancing, tekstury 4K oraz wolumetryczne, kompresję DXT, MRT, mieszanie z wykorzystaniem formatów zmiennoprzecinkowych 10.0-10.1 - obsługę Shader Model 4.0/4.1, cieniowania geometrii, renderowania do bufora wierzchołków, tekstury 8K oraz MSAA, dwustronny bufor szablonowy, tablice tekstur 11.0-11.1 - obsługę Shader Model 5.0, bufory stałych, teselację, obsługę GPGPU (DirectCompute), tekstury 16K Na komputerach osobistych obecnie dostępna jest specyfikacja oznaczona jako 11.1. Natomiast telefony oparte o najnowszy system Windows Phone wykorzystują 9.3. Unifikacja interfejsu oraz wprowadzenie poziomów funkcjonalności ułatwia proces przygotowania i utrzymania kodu aplikacji. Nowsze poziomy są wstecznie kompatybilne. W większości przypadków rozszerzenie funkcjonalności aplikacji wymaga zmiany poziomu na wyższy oraz dodanie implementacji nowych efektów. 5 Narzędzia programistyczne Na rynku jest dostępnych wiele narzędzi, które ułatwiają proces tworzenia gier i aplikacji wykorzystujących wizualizację 2D i 3D. Pokrótce przedstawię kilka z nich. 5.1 Unity Unity jest to komercyjne narzędzie do tworzenia gier trójwymiarowych lub innych materiałów interaktywnych takich jak wizualizacje czy animacje trójwymiarowe. Środowisko działa na platformie Microsoft Windows, OS X oraz Linux, a gry wyprodukowane na tym silniku mogą działać na takich platformach jak Windows, Linux, Mac OS, Xbox 360, PlayStation 3, Wii, ipad, iphone i Android. 11

Unity było pierwszym silnikiem graficznym dostępnym na iphone. Obecnie jest to najpopularniejsze narzędzie wykorzystywane przez deweloperów na platformach mobilnych (53,1% 5 deweloperów). Środowisko posiada bogatą bibliotekę zasobów. Biblioteka jest dostępna bezpośrednio z edytora Unity. Znajduje się w niej około 5000 paczek z różnymi modelami, teksturami, materiałami, efektami cząsteczkowymi oraz dźwiękowymi. Rysunek 4: Obrazek z gry Drift Mania Championship na bazie Unity3D 5.2 OGRE OGRE (ang. Object-Oriented Graphics Rendering Engine) silnik graficzny 3D napisany w C++. Obsługuje zarówno Direct3D jak i OpenGL. Jest to jeden z popularniejszych narzędzi OpenSource, mocno wspierany przez hobbystów. Projekty napisane z wykorzystaniem OGRE są uruchamiane m.in. na Androidzie, ios. Można też znaleźć informacje o udanych próbach uruchomienia dem na Windows Phone 6. 5.3 cocos2d Biblioteka cocos2d zapewnia wygodny i łatwy w użyciu zestaw klas, które pozwalają na szybkie tworzenie dwuwymiarowych gier na platformy mobilne. Obecnie dostępne są implementacje dla iphone, Androida oraz 5 http://www.gamasutra.com/view/news/169846/mobile_game_developer_survey_ leans_heavily_toward_ios_unity.php#.uqd8kr-pnkh 6 http://www.ogre3d.org/2012/10/30/ogre 12

Windows Phone (oparta na XNA). Biblioteka obsługuje: 1. Zarządzanie sceną 2. Duszki oraz obiekty 3. Różne funkcje akcji, m.in.: przesunięcie, rotacja, skalowanie, sekwencja, powtórzenie, sinusojda, kamera 4. Prosty interfejs UI 5. Obsługę symulacji fizyki opartą o Box2D oraz Chipmunk 6. System cząsteczkowy 7. Obsługę ekranów dotykowych i akcelerometrów 8. Obsługę dźwięku Rysunek 5: Obrazek z gry Fishing Frenzy napisany na bazie Cocos2d http: // newsicare. wordpress. com/ 2010/ 07/ 24/ cocos2d 5.4 ANGLE Projekt implementuje funkcjonalność API graficznego OpenGL ES 2.0 na systemach Windows wykorzystując do tego celu m.in. środowisko DirectX 9. Projekt jest wykorzystywany jako platforma dla WebGL. WebGL jest rozszerzeniem możliwości języka JavaScript, zapewniającym dostęp do trójwymiarowego API w przeglądarce internetowej. Analiza kodu źródłowego projektu dostarcza cennych informacji o działaniu OpenGL ES 2.0. Mechanizmy wykorzystywane w projekcie, tj.: automatyczna translacja kodu GLSL na HLSL, czy rozbudowane mechanizmy walidacji wywołań API, pozwalają na zapewnienie szerokiej kompatybilności aplikacji WebGL na różnych przeglądarkach WWW oraz systemach operacyjnych. 13

5.5 Optymalizator kodu GLSL Projekt GLSL Optimizer[gls] celuje w zniwelowanie obecnego problemu kompilatorów GLSL w urządzeniach mobilnych, dokładniej ich słabej jakości. Optymalizator pozwala w znaczący sposób przyspieszyć szybkość jednostek cieniujących wykorzystujących API OpenGL ES 2.0. Jego analiza dostarcza odpowiedzi na pytanie: W jaki sposób należy optymalizować kod programów cieniujących, aby osiągnąć możliwie jak najwyższą wydajność. 6 Podsumowanie Obecnie obserwujemy dużą popularyzację urządzeń mobilnych, szczególnie smartfonów. Wyniki sprzedażowe największych firm na świecie liczone są w dziesiątkach milionów sprzedanych urządzeń. Na rynku pojawia się coraz więcej producentów z Chin, które swoją ceną oraz coraz lepszą jakością z powodzeniem konkurują z firmami amerykańskimi oraz koreańskimi. Należy spodziewać się pojawienia kolejnych coraz lepszych urządzeń mobilnych. Oczekuje się, że wraz z popularyzacją nowych specyfikacji interfejsów graficznych (OpenGL ES 3.0) nastąpi kolejny skok jakościowy. Według wielu firm z branży (m.in. NVIDIA) w perspektywie 2-3 lat mobilne akceleratory grafiki powinny osiągnąć wydajność obecnej generacji konsol6. Od paru lat dynamizm rynku mobilnego znacząco przewyższa ten obserwowany na rynku PC i konsol. Wzrost szybkości akceleratorów już nie jest tak spektakularny jak miało to miejsce na początku tysiąclecia. Najprawdopodobniej wynika, to w dużej mierze z negatywnego wpływu obecnej (trzeciej) generacji konsol. Powszechną opinią jest, że brak nowych i wydajniejszych konsol wpływa na stagnację rynku. Przekłada się to na całą branżę PC a korzysta na tym głównie branża mobilna. Literatura [AMS08] [Bly08] T. Akenine-Moller and J. Strom. Graphics processing units for handhelds. Proceedings of the IEEE, 96(5):779 789, may 2008. D. Blythe. Rise of the graphics processor. Proceedings of the IEEE, 96(5):761 778, may 2008. [CPAM08] T. Capin, K. Pulli, and T. Akenine-Moller. The state of the art in mobile graphics research. Computer Graphics and Applications, IEEE, 28(4):74 84, july-aug. 2008. [glb] Top performance results of devices in GLBenchmark. http: //www.glbenchmark.com/result.jsp. 14

Rysunek 6: Wydajność akceleratorów grafiki http: // www. anandtech. com/ show/ 5762 [gle] OpenGL ES - The Standard For Embedded Accelerated 3D Graphics. http://www.khronos.org/opengles/. [gls] GLSL Optimizer. http://aras-p.info/blog/2010/09/29/ glsl-optimizer/. [JN94] M. Woo J. Neider, T. Davis. OpenGL Programming Guide (The Red Book). Silicon Graphics, 1994. [Lun08] F. D. Luna. Introduction to 3D Game Programming with DirectX R 10. Jones & Bartlett Learning, 2008. [Mic11a] Microsoft. Dynamic Linking. http://msdn.microsoft.com/ en-us/library/windows/desktop/ff471420(v=vs.85).aspx, 2011. [Mic11b] Microsoft. Programming Guide for HLSL. http: //msdn.microsoft.com/en-us/library/windows/desktop/ bb509635(v=vs.85).aspx, 2011. [MS07] K. Akeley M. Segal. The OpenGL Graphics System: A Specification. Silicon Graphics, 2007. [nvi07] nvidia. NVIDIA OpenGL Extension Specifications for the GeForce 8 Series Architecture (G8x). nvidia, 2007. 15

[nvi11] nvidia. Bringing High-End Graphics to Handheld Devices. Technical report, 2011. [SL05] S. St-Laurent. The COMPLETE Effect And HLSL Guide. Paradoxal Press, 2005. [Tun11] Bruno Tunjic. Computer Graphics on Mobile Devices. 2011. 16