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



Podobne dokumenty
Grafika komputerowa. Grafika komputerowa. Grafika komputerowa

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

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

Scena 3D. Cieniowanie (ang. Shading) Scena 3D - Materia" Obliczenie koloru powierzchni (ang. Lighting)

Biblioteka OpenGL: Wprowadzenie

Przyspieszanie sprzętowe

Wprowadzenie do grafiki maszynowej. Wprowadzenie do historii OpenGL

Zaawansowane systemy programowania grafiki. Wprowadzenie. Podstawy OpenGL

Grafika komputerowa i wizualizacja

Wprowadzenie. Artur Staszczyk Bartłomiej Filipek

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

Obraz realistyczny. Realizm w grafice komputerowej. Realizm modelu: z!o#one siatki wielok$tów. Realizm modelu geometrycznego. Realizm modelu: spline'y

Plan wykładu. Akcelerator 3D Potok graficzny

Architektura Komputerów

Karty graficzne możemy podzielić na:

GRAFIKA CZASU RZECZYWISTEGO Wprowadzenie do OpenGL

Analiza moż liwości i porównanie nowych ję zyków do programowania grafiki

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

Programowanie procesorów graficznych GPGPU

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

Potok graficzny i shadery. Hubert Rutkowski

Gry Komputerowe - laboratorium 0

PORÓWNANIE WYDAJNOŚCI JĘZYKÓW CIENIOWANIA CG I HLSL

Dowiedz się, jak tworzyć zapierające dech w piersiach gry 3D i efektowne, trójwymiarowe wizualizacje!

Systemy graficzne. dr inż. Mariusz Szwoch

dr inż. Jacek Dąbrowski, KSG

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

PROGRAMOWANIE WSPÓŁCZESNYCH ARCHITEKTUR KOMPUTEROWYCH DR INŻ. KRZYSZTOF ROJEK

Grafika komputerowa (ang. computer graphics) Wprowadzenie do grafiki komputerowej. Grafika komputerowa - Zastosowania (2) Grafika komputerowa - Geneza

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Specyfikacja OpenGL Podstawy programowania grafiki komputerowej*

Julia 4D - raytracing

Bartosz Bazyluk GAME LOOP Podstawowy element silnika gry komputerowej. Programowanie Gier Komputerowych, Informatyka S1, III Rok

Wykład 4. Rendering (1) Informacje podstawowe

CUDA część 1. platforma GPGPU w obliczeniach naukowych. Maciej Matyka

Elementy do grafiki komputerowej. Wprowadzenie

Bartłomiej Filipek

Karty graficzne: budowa, zasada działania, standardy, parametry, dodatkowe funkcje

Wprowadzenie do grafiki komputerowej

Rasteryzacja (ang. rasterization or scan-conversion) Grafika rastrowa. Rysowanie linii (1) Rysowanie piksela. Rysowanie linii: Kod programu

Wprowadzenie do QT OpenGL

Karta graficzna. Karta graficzna przyjmuje. rozszerzeń montowanej w magistrali wejścia/wyjścia na płycie głównej. Opcjonalnie układ graficzny

Implementacja sieci neuronowych na karcie graficznej. Waldemar Pawlaszek

Architektura von Neumanna

Programowanie w modelu równoległości danych oraz dzielonej globalnej pamięci wspólnej. Krzysztof Banaś Obliczenia równoległe 1

Programowanie z wykorzystaniem technologii CUDA i OpenCL Wykład 1

GPGPU General-Purpose computing on the GPU. Piotr Stańczyk

Rasteryzacja (ang. rasterization or scan-conversion) Grafika rastrowa. Rysowanie linii (1) Rysowanie piksela

Organizacja pamięci w procesorach graficznych

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2013/2014

Co to jest OpenGL? Oprogramowanie i wykorzystanie stacji roboczych. Wykład 5. OpenGL - Achitektura. OpenGL - zalety. olas@icis.pcz.

Przegląd architektury PlayStation 3

Wprowadzenie do grafiki komputerowej. W. Alda

Porównanie wydajności CUDA i OpenCL na przykładzie równoległego algorytmu wyznaczania wartości funkcji celu dla problemu gniazdowego

JCuda Czy Java i CUDA mogą się polubić? Konrad Szałkowski

Programowanie Procesorów Graficznych

Opis efektów kształcenia dla modułu zajęć

Programowanie procesorów graficznych NVIDIA (rdzenie CUDA) Wykład nr 1

KARTA KURSU. Grafika komputerowa

PROJEKTOWANIE SYSTEMÓW KOMPUTEROWYCH

Bartosz Bazyluk OpenGL Współczesne podejście do programowania grafiki Część II: Programy cieniujące (shadery)

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

Przetwarzanie obrazów w czasie rzeczywistym za pomocą GPU

Algorytmy renderingu dla programowalnych jednostek graficznych. prof. dr hab. inż. Maria Pietruszka mgr inż. Dominik Szajerman

1 Temat: Vertex Shader

OpenGL oświetlenie i tekstury. OpenGL oświetlenie. Bogdan Kreczmer.

Wprowadzenie do grafiki maszynowej. Wprowadzenie do wprowadzenia

Akceleracja sprzętowa symulacji elektromagnetycznych. graficznych (GPU)

Programowanie gier komputerowych Tomasz Martyn Wykład 6. Materiały informacje podstawowe

Architektury komputerów Architektury i wydajność. Tomasz Dziubich

Grafika Komputerowa. Wprowadzenie

Grafika komputerowa i wizualizacja. dr Wojciech Pałubicki

Karty Graczne i Sprz towe Wsparcie Dla Graki 3D

System 32-Bit 1: Microsoft Windows 7 Home Premium 2;, Professional, Ultimate, Enterprise Microsoft Windows 8/8.1, Pro, Enterprise 2;

Wykład 5. Rendering (2) Geometria

Bartosz Bazyluk Wprowadzenie Organizacja i tematyka zajęć, warunki zaliczenia.

Architektura Procesorów Graficznych

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 5

Graficzny edytor cieniowania

Bartosz Bazyluk Wprowadzenie Organizacja i tematyka zajęć, warunki zaliczenia.

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

Programowanie warstwy wizualnej gry

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Grafika 3D na przykładzie XNA 3.1

Zdjęcia i opis stanowisk laboratoryjnych wykorzystywanych w ramach projektu

Temat: Wprowadzenie do OpenGL i GLUT

Wprowadzenie. Karty graficzne możemy podzielić na:

Wyświetlanie terenu. Clipmapy geometrii

Przetwarzanie Równoległe i Rozproszone

Przegląd metod renderingu czasu rzeczywistego dla fotorealistycznych wizualizacji architektonicznych

Elementy składowe karty graficznej

Shadery. Artur Staszczyk Bartłomiej Filipek

Bartosz Bazyluk Wprowadzenie Organizacja i tematyka zajęć, warunki zaliczenia.

Janusz Ganczarski. OpenGL Pierwszy program

SOP System Obsługi Parkingów

PROGRAMOWANIE GRAFIKI 2D W ŚRODOWISKU EMBARCADERO RAD STUDIO XE4 Z WYKORZYSTANIEM BIBLIOTEKI DirectX

SYMULACJA OPADÓW ATMOSFERYCZNYCH I POKRYWY ŚNIEŻNEJ W GENERATORZE OBRAZU JASKIER IG

Moc płynąca z kart graficznych

Google Android. Opracował Maciej Ciurlik

Potok graficzny. System graficzny. Potok graficzny 3D. O$wietlenie globalne i lokalne. scena 3D algorytm graficzny obraz 2D. czasu rzeczywistego

Transkrypt:

OpenGL - Open Graphics Library Programowanie grafiki komputerowej Rados$aw Mantiuk Wydzia$ Informatyki Zachodniopomorski Uniwersytet Technologiczny! OpenGL: architektura systemu do programowania grafiki komputerowej (programowanie grafiki -> synteza obrazów)! Wspomaganie sprz!towe (system graficzny czasu rzeczywistego).! Bazuje na specyfikacji (nie implementacji).! Maszyna stanu (ang. rendering state machine).! Rozszerzalno"#.! Wieloplatformowo"#.! Wiele typów danych (np. sta$opozycyjne i zmiennoprzecinkowe).! Mo%liwo"# po$&czenia z ró%nymi j!zykami.! 1993: pierwsza wersja OpenGL 1.0 (== IRIX GL 5.0) w 1993 roku (IRIX GL 1.0 1983).! 2001: OpenGL1.4, vertex shader (programowalo"# operacji na wierzcho$kach).! 2003: OpenGL 1.5, fragment shader (oprogramowalno"# operacji na fragmentach).! Standard - OpenGL Khronos Group (ARB (Architecture Review Board), 3Dlabs, Apple, ATI, Dell Computer, IBM, Intel, NVIDIA, SGI, and Sun Microsystems).! Implementowana przez producentów kart graficznych.! Dost!pna na wi!kszo"ci platform sprz!towych i programowych (OpenGL ES).! Rozszerzalna (ang. OpenGL extensions). OpenGL 3.0! Shader model 4.0! geometry shader: per primitive programability! texture array! compact floating point textures (HDR)! FBO! depth-peeling (przezroczysto"#)! color space conversions (support for srgb) Przysz$o"# OpenGL: programowanie tessallacji (np. w LOD), CPU bed& generowa$y z$o%one instrukcje steruj&ce GPU (glcalllist), Eliminacja selektorów. Lepsze po$&czenie z shaderami (GLSL). OpenGL - Architektura (1) Aplikacja odwo!uje si" poprzez funkcje API OpenGL bezpo#rednio do karty graficznej (z pomini"ciem systemu operacyjnego). Implementacja software'owa - wszystkie funkcje mog& by# wykonywane przez CPU, jednak producenci kart mog& zast!powa# cz!"# funkcji OpenGL swoimi rozwi&zaniami sprz!towymi. Dla programisty ta zamiana jest niewidoczna. Aplikacja OpenGL Sterownik karty graficznej Karta graficzna - GPU Przetwarzanie grafiki 2D (danych rastrowych) i 3D (danych geometrycznych).

OpenGL - Architektura (2) OpenGL - Architektura (3) OpenGL - zestaw funkcji s$u%&cych do tworzenia dwu- i trójwymiarowych obiektów oraz kontrolowania w jaki sposób obiekty te s& renderowane do framebuffer a. Pisanie programu w OpenGL u: 1. utworzenie okna we framebuffer ze, 2. przechwycenie kontekstu okna, 3. renderowanie obiektów w oknie (np. rysowanie linii, wielok&tów, itp.). Architektura OpenGL bazuje na maszynie stanu kontroluj&cej dzia$anie zestawu funkcji graficznych. Wykorzystywana jest lista rozkazów (ang. display list) Biblioteka ma architektur! klient-serwer. Klient wysy$a polecenia do serwera. Klient nie musi znajdowa# si! na komputerze z serwerem. Publiczne API biblioteki zaimplementowane jest w C. Mo%liwe pomini!cie przetwarzania wierzcho$ków. Evaluator - zamiana obiektów z$o%onych na obiekty podstawowe. Fragment Operations - sk$adanie obiektów 2D wygenerowanych przez rasteryzer i umieszczanie ich we frambufferze. Biblioteka nie obs$uguje operacji wej"cia (np. myszy, klawiatury) i wyj"cia (np. monitora). Biblioteka rysuje obiekty podstawowe sk$adaj&ce si! z jednego lub wielu wierzcho$ków (wiecho$ek - ang. vertex). Ka%dy wierzcho$ek przetwarzany jest niezale%nie od innych. Jego parametrami s&: po$o%enie, kolor, wektor normalny, wspó$rz!dne tekstury. Do przetwarzania wierzcho$ków wykorzystywane s& funkcje graficzne (obliczenia macierzowe, równanie o"wietlenia, antyaliasing, itp.). OpenGL - Rasteryzacja fragment - zbiór danych wykorzystywanych do narysowania jednego piksela obrazu. Jego parametrami s& po$o%enie, dane o kolorze, wspó$. tekstury, wspó$. mg$y i Z-bufora dla poszczególnych punktów rastra, stan buforów Alpha, Stencil, itp. OpenGL: Bufory Bufor (miejsce w pami!ci) tworzony w CPU i przesy$ny do GPU. VBO (ang. Vertex Buffer Object) 1. utworzenie bufora z danymi o wierzcho$kach (po$o%enie, kolory, itp.) 2. utworzenie VBO (GL_ARRAY_BUFFER) (skopiowanie danych z CPU do GPU) 3. glbindbuffer() + gldrawarray() (mo%liwo"# podania offset'u)

OpenGL ES: Embedded Systems OpenGL ES: 1.x i 2.x Standard obejmuj&cy wybrane funkcje OpenGL, przeznaczone do implementacji w urz&dzeniach o ograniczonych zasobach (urz&dzeniach przeno"nych). Uproszczone wersje standardów (usunieto szereg funkcji). Mechanizmy!$czenia funkcji OpenGL ES z natywnym systemem operacyjnym. Wprowadzono dzia$anie na zmiennych sta!opozycyjnych (OpenGL ES 1.x). Programowalny potok graficzny (OpenGL ES 2.x). Coformance tests - testy zgodno"ci biblioteki ze standardem. 1.X - dwa profile zmiennych (fixed-point i mixed) 2.X - shader'y (OpenGL shading language), brak kompatybilnosci z 1.x OpenGL ES: Urz&dzenia http://www.glbenchmark.com OpenGL - GLUT (OpenGL Utility Toolkit) Biblioteka s$u%&ca do rysowania okien pod OpenGL em. Wieloplatformowo"#. Dost!pna jako open source. Funkcje: Wy"wietlanie okien, w których mo%e odbywa# si! renderowanie realizowane przez OpenGL (mo%e by# otwarte wiele takich okien), Obs$uga zdarze' wej"cia/wyj"cia za pomoc& callback ów. Obs$uga urz&dze' wej"ciowych (np. klawiatura, mysz). Obs$uga timer ów. Pop-up menu. Generowanie biblioteki obiektów z$o%onych. Wspomaganie wczytywania bitmap i fontów bitmapowych. Zarzadzanie oknami.

OpenGL - Graficzne interfejsy u%ytkownika GLUI OpenGL - GLUI Biblioteka s!u'$ca do budowy interfejsów u'ytkownika pracuj$cych pod OpenGL (wymagana biblioteka GLUT). Procesory GPU Programowalny procesor pracuj&cy niezale%nie od CPU. Programowalne procesory GPU shader - program wykonywany na GPU (ang. Graphics Processor Unit) W$asno"ci: bardzo szybkie przetwarzanie danych graficznych, szybkie operacje macierzowe - architektura SIMD (w organiczonym zakresie MIMD), zrównoleglenie oblicze% (wiele jednostek vertex i fragment shaderów), mog$ by& wykorzystane do innych oblicze% GPGPU (General Purpose GPU), szybszy rozwój ni' CPU (brak predykcji skoków).

Vertex shader Transformacje zwi$zane z wierzcho!ami: obliczenie po$o%enia, koloru, wektorów normalnych, wspó$rz!dnych tekstur. Zastosowania: efekty zwi&zane z deformacjami kamer (lens effects) - obiektywy fisheye, itp., zginanie i skr!canie obiektów, lokalny ruch obiektów (falowanie wody, ruch ubrania, itp.), teselacja (ang. tesselation) trójk&tów po$&czona z animacj&. Fragment shader - przyk$ady Fragment shader Transformacje zwi$zane z fragmentami: obliczanie koloru fragmentu, teksturowanie, obliczanie o"wietlenia (Phong shading), mg$a. Zastosowania: proceduralne teksturowanie, obliczanie tekstury z wykorzystaniem danych ze standardowych tekstur, mapowanie tekstur. Fragment shader - Phong shading (Cg)

Programowanie shaderów J!zyki programowania: GLSL - OpenGL Shading Language, CG (nvidia) HLSL (Microsoft) CUDA - Compute Unified Device Architecture Technologia programowania algorytmów GPGPU (General Purpose GPU). Dost!pna na GPU nvidia, seria 8 i nowsze (G8X GPU), luty 2007. Stream processing - SIMD, zrównoleglenie. Programowanie wysokopoziomowe (program C + rozszerzenia). CUDA - Compute Unified Device Architecture OpenVG - Vector Graphics Acceleration Standard i API s!u'$ce do rysowania dwuwymiarowej grafiki wektorowej i rastrowej. Rysowanie wspomagane sprz!towo. Stadard unifikujacy zestaw funkcji (niezalezny od urzadzenia). Rysowanie tekstów. Wspomaganie dla Adobe Flash. Anty-aliasing. Zmniejszenie zu%ycia baterii poprzez wykorzystanie wspomagania sprz!towego. Podzia$ zada' mi!dzy CPU i GPU niewodoczny dla u%ytkownika. Skalowalno"# ($atwo"# zmiany rozdzielczo"ci). Wspomaganie istniej&cych j!zyków (postscript, flash, itp.)

Literatura 1. Tomas Moller, Eric Haines, Real-Time Rendering, A K Peters, ISBN 1-56881-101-2 2. NVIDIA Whitepapers http://partners.nvidia.com/developer,.introduction to Vertex Shaders. Introduction to Pixel Shaders. 3. OpenGL Programming Guide (The Red Book), http://fly.srk.fer.hr/~unreal/theredbook/