Grafika komputerowa. Grafika komputerowa. Grafika komputerowa



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

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

Przyspieszanie sprzętowe

Biblioteka OpenGL: Wprowadzenie

Zaawansowane systemy programowania grafiki. Wprowadzenie. Podstawy OpenGL

Wprowadzenie do grafiki maszynowej. Wprowadzenie do historii OpenGL

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

Grafika komputerowa i wizualizacja

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

Wprowadzenie. Artur Staszczyk Bartłomiej Filipek

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

Plan wykładu. Akcelerator 3D Potok graficzny

GRAFIKA CZASU RZECZYWISTEGO Wprowadzenie do OpenGL

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

Karty graficzne możemy podzielić na:

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

Architektura Komputerów

Gry Komputerowe - laboratorium 0

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

Programowanie procesorów graficznych GPGPU

Julia 4D - raytracing

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

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

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

Zaawansowana Grafika Komputerowa

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

dr inż. Jacek Dąbrowski, KSG

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

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

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

Systemy graficzne. dr inż. Mariusz Szwoch

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

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

Potok graficzny i shadery. Hubert Rutkowski

Bartłomiej Filipek

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

Specyfikacja OpenGL Podstawy programowania grafiki komputerowej*

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

Wprowadzenie do QT OpenGL

Programowanie z wykorzystaniem technologii CUDA i OpenCL Wykład 1

Przetwarzanie Równoległe i Rozproszone

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Grafika 3D na przykładzie XNA 3.1

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

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

Elementy do grafiki komputerowej. Wprowadzenie

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

Wykład 4. Rendering (1) Informacje podstawowe

Wyświetlanie terenu. Clipmapy geometrii

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

Architektura Procesorów Graficznych

Implementacja sieci neuronowych na karcie graficznej. Waldemar Pawlaszek

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

Wprowadzenie do grafiki komputerowej

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

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

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

1 Temat: Vertex Shader

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

INŻYNIERIA OPROGRAMOWANIA

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

i3: internet - infrastruktury - innowacje

Programowanie Procesorów Graficznych

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

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

PRZEWODNIK PO PRZEDMIOCIE

KARTA KURSU. Grafika komputerowa

WIZUALIZACJA TRÓJWYMIAROWYCH PÓL SKALARNYCH Z WYKORZYSTANIEM TECHNIK RENDERINGU OBJĘTOŚCIOWEGO

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

SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD

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

Karty Graczne i Sprz towe Wsparcie Dla Graki 3D

Moc płynąca z kart graficznych

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

Wprowadzenie do grafiki komputerowej. W. Alda

Przegląd metod renderingu czasu rzeczywistego dla fotorealistycznych wizualizacji architektonicznych

Przetwarzanie obrazów w czasie rzeczywistym za pomocą GPU

NV-DVR5108(S)/DVD ABV Technology Security Systems

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

NV-DVR1014. CCTV Monitoring > Rejestratory > rejestratory cyfrowe > NV-DVR1014. Utworzono : 22 czerwiec Model : - NV-DVR1014.

Architektura von Neumanna

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

Wprowadzenie do grafiki maszynowej. Wprowadzenie do wprowadzenia

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

Janusz Ganczarski. OpenGL Pierwszy program

Grafika Komputerowa. Wprowadzenie

Grafika trójwymiarowa

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

PROJEKTOWANIE SYSTEMÓW KOMPUTEROWYCH

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

Organizacja pamięci w procesorach graficznych

Grafika komputerowa i wizualizacja. dr Wojciech Pałubicki

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

Graficzny edytor cieniowania

Przegldanie stron wymaga odpowiedniej mikroprzegldarki w urzdzeniu mobilnym lub stosownego emulatora.

Przegląd architektury PlayStation 3

Akceleracja sprzętowa symulacji elektromagnetycznych. graficznych (GPU)

Temat: Wprowadzenie do OpenGL i GLUT

Transkrypt:

OpenGL - Koncepcja i architektura Aplikacja odwo!uje si" poprzez funkcje API OpenGL bezpo#rednio do karty graficznej (z pomini"ciem systemu operacyjnego). Programowanie grafiki komputerowej Rados!aw Mantiuk Wydzia! Informatyki Zachodniopomorski Uniwersytet Technologiczny 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 OpenGL - Open Graphics Library! 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%# (OpenGL ES).! Wiele typów danych (np. sta!opozycyjne i zmiennoprzecinkowe).! Mo&liwo%# po!"czenia z ró&nymi j$zykami. OpenGL - Architektura (1)! 1993: pierwsza wersja OpenGL 1.0 (== IRIX GL 5.0) w 1993 roku (IRIX GL 1.0 1983).! 2001: OpenGL 1.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). 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. OpenGL - Architektura (2) 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. 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 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). 1

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 (usuni$to 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. 2

OpenGL - Graficzne interfejsy u&ytkownika GLUI Biblioteka s!u%$ca do budowy interfejsów u%ytkownika pracuj$cych pod OpenGL (wymagana biblioteka GLUT). OpenGL - GLUI Procesory GPU (Graphics Processor Unit) Programowalny procesor pracuj"cy niezale&nie od CPU. Programowalne procesory GPU shader - program wykonywany na GPU (ang. Graphics Processor Unit) szybkie operacje macierzowe - architektura SIMD (w ograniczonym zakresie MIMD), zrównoleglenie oblicze& (wiele potoków renderuj$cych, stream programming), mog$ by' wykorzystane do innych oblicze& GPGPU (General Purpose GPU), szybszy rozwój ni% CPU (brak rozbudowanej logiki),!$czenie architektury GPU i CPU. Vertex shader Transformacje zwi$zane z wierzcho!ami: obliczenie po!o&enia, koloru, wektorów normalnych, wspó!rz$dnych tekstur. Fragment shader Transformacje zwi$zane z fragmentami: obliczanie koloru fragmentu, teksturowanie, obliczanie o%wietlenia (Phong shading), mg!a. 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". Zastosowania: proceduralne teksturowanie, obliczanie tekstury z wykorzystaniem danych ze standardowych tekstur, mapowanie tekstur. 3

Fragment shader - przyk!ady 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 (GTX GPU). 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.) 4

Open CL (Computation Library) Wykorzystanie do oblicze& ca!ych zasobów komputera (np. CPU i GPU równocze#nie). Dost$pny na wielu platformach. Interfejs API napisany w C. Kody (ród!owe programu przekacywane do OpenCL Runtime i dynamicznie kompilowane. 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/ OpenGL ES Specyfikacja objemuj"ca wybrane funkcje OpenGL, przeznaczone do implementacji w urz"dzeniach o ograniczonych zasobach (urz"dzeniach przeno%nych). 5