7 Wyklad GK ProgramowanieGK

background image

Grafika komputerowa

Programowanie grafiki komputerowej

Rados$aw Mantiuk

Wydzia$ Informatyki

Zachodniopomorski Uniwersytet Technologiczny

Grafika komputerowa

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"#.

!

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).

Grafika komputerowa

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).

Grafika komputerowa

OpenGL - Architektura (1)

Przetwarzanie grafiki 2D (danych rastrowych) i 3D (danych geometrycznych).

Aplikacja

OpenGL

Sterownik karty graficznej

Karta graficzna - GPU

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.

background image

Grafika komputerowa

OpenGL - Architektura (2)

• 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.

Grafika komputerowa

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.

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.).

Grafika komputerowa

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.

Grafika komputerowa

OpenGL: Bufory

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)

Bufor (miejsce w pami!ci) tworzony w CPU i przesy$ny do GPU.

background image

Grafika komputerowa

OpenGL ES: Embedded Systems

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.

Grafika komputerowa

OpenGL ES: 1.x i 2.x

1.X - dwa profile zmiennych (fixed-point i mixed)
2.X - shader'y (OpenGL shading language), brak kompatybilnosci z 1.x

Grafika komputerowa

OpenGL ES: Urz&dzenia

http://www.glbenchmark.com

Grafika komputerowa

OpenGL - GLUT (OpenGL Utility Toolkit)

Biblioteka s$u%&ca do rysowania okien pod OpenGL’em.

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.

• Wieloplatformowo"#.
• Dost!pna jako open source.

background image

Grafika komputerowa

OpenGL - Graficzne interfejsy u%ytkownika GLUI

Biblioteka s!u'$ca do budowy interfejsów u'ytkownika pracuj$cych pod OpenGL (wymagana biblioteka

GLUT).

Grafika komputerowa

OpenGL - GLUI

Grafika komputerowa

Procesory GPU

Programowalny procesor pracuj&cy niezale%nie od CPU.

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).

Grafika komputerowa

Programowalne procesory GPU

shader

- program wykonywany na GPU (ang. Graphics Processor Unit)

background image

Grafika komputerowa

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 fish-
eye, 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&.

Grafika komputerowa

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.

Grafika komputerowa

Fragment shader - przyk$ady

Grafika komputerowa

Fragment shader - Phong shading (Cg)

background image

Grafika komputerowa

Programowanie shaderów

J!zyki programowania:
• GLSL - OpenGL Shading Language,
• CG (nVidia)
• HLSL (Microsoft)

Grafika komputerowa

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).

Grafika komputerowa

CUDA - Compute Unified Device Architecture

Grafika komputerowa

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.)

background image

Grafika komputerowa

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/


Wyszukiwarka

Podobne podstrony:
Języki programowania zaliczenie wykłady Języki programowania3
8 Wyklad GK Fotorealizm
2 Wyklad GK ObrazRastrowy
4 Wyklad GK PotokGraficzny
Wyklad 11. Programy operacyjne jako narzedzia realizacji pomocy unijnej (POKL, IiS, IG, PO RPW), kon
wykład z podstawy programowania, BHP z elementami ergonomii
Języki programowania zaliczenie wykłady Języki programowania4
6 Wyklad GK Teksturowanie
1 Wyklad GK Wprowadzenie
WYKLADY - SZCZEGOLOWY PROGRAM, psychoedukacja
Wykład ZFin-program-06, Wykład (podać z dokładnością do 2 godzin)
wykład III, PROGRAM WYKŁADU 3
3 Wyklad GK GrafikaRastrowa
Algorytmy i struktury danych Wykład 8 Języki programowania
programowanie-wykłady, Podstawy programowania
5 Wyklad GK Cieniowanie
Języki programowania zaliczenie wykłady Języki programowania2

więcej podobnych podstron