Lecture01 - Introducere, Hardware Grafic, Pipeline
-
Upload
alex-dumix -
Category
Documents
-
view
244 -
download
7
Transcript of Lecture01 - Introducere, Hardware Grafic, Pipeline
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
1/67
Semestrul II 2011/12
Mr.conf.univ.dr.ing. Cristian Molder
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
2/67
Introducere
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
3/67
Ce este CG?
Mijloc de creare, stocare i manipulare amodelelor i imaginilor cu ajutorul sistemelorgrafice
Modelele provin din diverse domenii deaplicaie, precum fizic, matematic, art,biologie etc.
Bazat pe geometria obiectelor i atributeleacestora
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
4/67
Modelarea CAD
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
5/67
Efecte video speciale
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
6/67
Animatie
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
7/67
Ex: Arta
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
8/67
Simulatoare de zbor
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
9/67
Simularea fenomenelor
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
10/67
Jocuri video
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
11/67
Ce se nvata?
nelegerea principiilor de baz ale tehnologiilorgrafice hardware i software, algoritmi iterminologie
Utilizarea interfeei de programare a aplicaiilorOpenGLpentru a scrie programe grafice 2D/3D
Nu se nva pachete de programe !
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
12/67
Temele principale ale cursului
Sisteme hardware de procesare videoSisteme de afiareCuloarea n sistemele grafice
Proiecii i transformriGenerarea primitivelor grafice 2DDecuparea scenelor
Reprezentarea obiectelor 3D
Detecia suprafeelor vizibileIluminarea i randarea suprafeelor
Animaie
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
13/67
Hardware-ul grafic
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
14/67
Hardware-ul grafic
Hardware dedicat operaiilor de prelucrarei afiare a informaiilor grafice
Hardware:
Integrat(onboard)utilizeaz parial/totalresursele sistemului de calcul pentru
efectuarea calculului grafic
Extern(stand-alone) hardware dedicatexclusiv efecturii calculului grafic
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
15/67
Structura unei placi video
BIOSmemorie PROM care conine osecven de program necesar interfarii
hardware-ului video cu sistemul de calcul
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
16/67
Timergenereaz semnalele de ceas(frecvenele) pentru operarea circuitelor
Structura unei placi video
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
17/67
VRAM (Video RAM)memorie volatildedicat, de mare vitez, interfaat cu
procesorul grafic
Structura unei placi video
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
18/67
RAMDAC (Random Access Memory Digital-Analog Converter)convertete informaia
digital n semnale analogice necesare
monitorului
Structura unei placi video
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
19/67
GPU (Graphic Processing Unit) procesordestinat efecturii operaiilor grafice, n
arhitectur paralel dedicat
Structura unei placi video
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
20/67
Interfete hardware
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
21/67
Interfete hardware
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
22/67
Interfete hardware
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
23/67
Pipeline-ul grafic
Pipeline flux de procesare hardware = ordinea ncare sunt efectuate operaiile de generare a unei
imagini pornind de la modelul 3D
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
24/67
Procesoare grafice (GPU)
Arhitectur paralel cu uniti de calcul dedicate Vertex shaderpreia vertexurile (punctele) din spaiul 3Di le proiecteaz n planul 2D al imaginii
Pixel shadergenereaz triunghiuri elementare(poligoane) pornind de la pixelii generai anterior de ctrevertex shader i le adaug informaia de culoare
Texture mapping unitefectueaz operaii de rotaie i
rescalare a imaginilor textur pentru a fi aplicate petriunghiurile poligonale
Render output unitgenereaz imaginea final i o scrie
n frame buffer
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
25/67
GeForce 6 Series
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
26/67
GeForce 8 Series
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
27/67
Memoria video (VRAM)
Memorie RAM de mare vitez, conectat la GPU prinintermediul unei magistrale de date
Limea magistralei influeneaz semnificativ
performanele hardware-ului grafic (n prezentmagistrale pe 128-512 bii)
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
28/67
Memoria video (VRAM)
GPU VRAM
Interfa
(AGP, PCIe)
RAM
Sistem
CPU
RAM
Sistem
GPU CPU
Hardware video cumemorie dedicat
(VRAM)
Hardware video cumemorie partajatcu cea a sistemului
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
29/67
Memoria video (VRAM)
Memoria VRAM este situat doar pe placa videoSe poate utiliza i memoria sistemului (TurboCache)
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
30/67
Hardware graficUtilizarea a dou plci video conectate n mod
master/slave (nVidia = SLI sau ATI = CrossFire)
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
31/67
Hardware graficUtilizarea a dou procesoare grafice, unul integrat
onboard iar cellalt dedicat (nVidia = Hybrid SLI)
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
32/67
CUDAUnificarea arhitecturii (CPU+GPU) pentru mrirea
puterii de calculGPU efectueaz att calcule grafice, ct i calcule defizica obiectelor (fluide, foc, fum etc.)
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
33/67
GPGPUUtilizarea puterii de calcul al GPU pentru rezolvarea
unor sarcini non-grafice primite de la sistemul PC(General-Purpose computing on Graphics ProcessingUnits)
Aplicaii: Prelucrare de semnal audio
Calcule financiare
Reele neurale Transformate Fourier
Fizic molecular Prelucrarea bazelor de date
Criptografie
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
34/67
Tehnologii
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
35/67
API-uri de programareAPI = Application Programming Interface,
reprezint interfaarea dintre aplicaia software ihardware
Direct3Dproprietar Microsoft, uurin n creareaaplicaiilor
OpenGL sistem de tip Open Source, portabil pe
orice sistem de operare, creaz aplicaii optimizate
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
36/67
Programarea aplicaiilor
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
37/67
Pipeline-ul grafic al OpenGL
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
38/67
Ghiduri de programare
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
39/67
Grafica 2D
Generarea n OpenGL a uneiferestre grafice (utiliznd GLUT)
Generarea unor primitive 2Dsimple (linii, triunghiuri, poligoane)
Utilizarea tastaturii i a mouse-ului
http://../Graphics/myTests/lab1/lab1/Debug/lab1.exe -
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
40/67
Generarea primitivelor grafice 3D
Poziionarea obiectelor n spaiu
Utilizarea transformatelor decoordonate
Grafica 3D
http://../Graphics/myTests/lab2/lab2/lab2/Debug/lab2.exe -
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
41/67
Randarea scenelor
Randare Procesul de calculare a unei imagini pornind de la
datele de intrareDate de intrare
Puncte, linii, poligoane etc
Atribute: culoare, textur, iluminare etc
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
42/67
Tehnici de randare
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
43/67
Terminologie
Randare conversia scenei 3D n imagine 2D
Scen modelarea mediului 3D cu ajutorul primitivelorgraficesuportate de ctre sistem
Modelelesunt create de mn sau automat
Imagineaeste afiat pe un monitor, listat la imprimant saustocat n fiiere
Fluxul de procesare totalitatea etapelor parcurse de lamodelarea scenei i pn la afiarea imaginii randate
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
44/67
Programarea n Visual C++
Cerine:
1. Mediul de programare instalat
2. Existena bibliotecii GLUT (5 fiiere)
3. Existena unui hardware graficcompatibil cu versiunea bibliotecii OpenGL
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
45/67
1. Crearea unui proiect
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
46/67
1. Crearea unui proiect
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
47/67
1. Crearea unui proiect
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
48/67
1. Crearea unui proiect
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
49/67
2. Crearea unei surse
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
50/67
2. Crearea unei surse
3 I l d i
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
51/67
3. Includerea unei surse
3 I l d i
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
52/67
3. Includerea unei surse
3 I l d i
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
53/67
3. Includerea unei surse
4 R l li i i
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
54/67
4. Rularea aplicatiei
Compilare
Build
Execuie
4 R l li i i
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
55/67
4. Rularea aplicatiei
5 F t l i li tii
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
56/67
5. Formatul unei aplicatii
C il O GL
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
57/67
Comenzile OpenGL
Instruciunile au prefixul gl iar sufixele specific numrulargumentelor i tipul de date utilizate ca argument n interiorulinstruciunii
glClearColor();
glVertex2i(1,3);
glVertex3f(1.0, 3.0, -1.2);
float punct[]={1.0, 3.0, -1.2};
glVertex3v(punct);
C il O GL
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
58/67
Comenzile OpenGL
Variantele de sufix pentru definirea tipului de date
C il O GL
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
59/67
Comenzile OpenGL
Constantele sunt definite sub forma unor stringuri majuscule
care conin prefixul GL iar restul cuvintelor sunt separate cuajutorul simbolului underscore
GL_COLOR_BUFFER_BIT
Bibliotecile grafice specifice conin prefix propriu. De exemplu,instruciunile rezervate ale bibliotecii GLUT (OpenGL pentruWindows) au prefixul glut
glutInitWindow(GLUT_SINGLE|GLUT_RGB);
O GL l i l
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
60/67
OpenGL: un exemplu simplu
Etapele parcurse pentru crearea unei aplicaii simple degenerare i afiare a unui obiect ntr-o fereastr grafic:
1) tergerea ferestrei grafice cu o anumit culoare
2) Alegerea unei culori pentru desenarea unui obiect grafic
3) Desenarea unui obiect grafic
4)
Controlul modului de desenare al obiectului grafic
5) Forarea execuiei instruciunilor grafice
O GL l i l
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
61/67
OpenGL: un exemplu simplu
Instructiuni pentru stergerea ferestrei grafice cu o anumita culoare
glClearColor(0.0, 0.0, 0.0, 0.0);
glClear(GL_COLOR_BUFFER_BIT);
glClearColor(0.0, 0.0, 0.0, 0.0);
glClearDepth(0.0);
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
O GL l i l
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
62/67
OpenGL: un exemplu simplu
Instructiuni pentru alegerea culorii de trasare a unui obiect grafic
glColor3f(0.0, 0.0, 0.0); black
glColor3f(1.0, 0.0, 0.0); red
glColor3f(0.0, 1.0, 0.0); green
glColor3f(1.0, 1.0, 0.0); yellow
glColor3f(0.0, 0.0, 1.0); blue
glColor3f(1.0, 0.0, 1.0); magenta
glColor3f(0.0, 1.0, 1.0); cyanglColor3f(1.0, 1.0, 1.0); white
O GL l i l
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
63/67
OpenGL: un exemplu simplu
Instructiuni pentru definirea coordonatelor primitivei grafice
glVertex2f(0.0, 0.0);
glVertex3f(1.0, 1.0, -1.0);
int punct[]={1, 1, -1};
glVertex3v(punct);
O GL l i l
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
64/67
OpenGL: un exemplu simplu
Instructiuni pentru definirea primitivelor grafice
glBegin(tip_obiect);
...
enumerare vertexuri
...
glEnd();
OpenGL: n e empl simpl
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
65/67
OpenGL: un exemplu simplu
Valorile posibile ale argumentului tip_obiect
GL_POINTS
GL_LINES
GL_POLYGON
GL_TRIANGLES
GL_QUADS
GL_LINE_STRIP
GL_LINE_LOOPGL_TRIANGLE_STRIP
GL_TRIANGLE_FAN
GL_QUAD_STRIP
OpenGL: un exemplu simplu
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
66/67
OpenGL: un exemplu simplu
Instructiuni pentru setarea atributelor obiectului
glPointSize(4);
glLineWidth(3);
glBegin(GL_POINTS)
...
glEnd();
OpenGL: un exemplu simplu
-
7/31/2019 Lecture01 - Introducere, Hardware Grafic, Pipeline
67/67
OpenGL: un exemplu simplu
Instructiuni pentru executarea comenzilor grafice
glFlush(); pentru bufferare simpl(GLUT_SINGLE)
glutSwapBuffers(); pentru bufferare dubl
(GLUT_DOUBLE)