Download - Lecture01 - Introducere, Hardware Grafic, Pipeline

Transcript
  • 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)