Grafikus csővezeték és az OpenGL függvénykönyvtár



Hasonló dokumentumok
Grafikus csővezeték 2 / 77

Grafikus csővezeték 1 / 44

FEJLETT GRAFIKAI ALGORITMUSOK

Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter

Tanács Attila. Képfeldolgozás és Számítógépes Grafika Tanszék Szegedi Tudományegyetem

Szegedi Tudományegyetem Informatikai Tanszékcsoport tanév

Direct3D pipeline. Grafikus játékok fejlesztése Szécsi László t03-pipeline

Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter

Máté: Számítógépes grafika alapjai

Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 21./0. 3D grafika programozása OpenGL támogatással A 3D API

SZE, Doktori Iskola. Számítógépes grafikai algoritmusok. Összeállította: Dr. Gáspár Csaba. Felületmegjelenítés

Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter

Textúrák. Szécsi László

Máté: Számítógépes grafika alapjai

Máté: Számítógépes grafika alapjai

Algoritmusok raszteres grafikához

Számítógépes grafika

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

3D-s számítógépes geometria és alakzatrekonstrukció

HLSL programozás. Grafikus játékok fejlesztése Szécsi László t06-hlsl

The modular mitmót system. DPY kijelző kártya C API

A C programozási nyelv I. Bevezetés

2D képszintézis. Szirmay-Kalos László

A C programozási nyelv I. Bevezetés

QGIS. Tematikus szemi-webinárium Térinformatika. Móricz Norbert. Nemzeti Agrárkutatási és Innovációs Központ Erdészeti Tudományos Intézet (NAIK ERTI)

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Számítógépes Grafika SZIE YMÉK

Szegedi Tudományegyetem Informatikai Tanszékcsoport tanév

Plakátok, részecskerendszerek. Szécsi László

ARM Cortex magú mikrovezérlők

Mintavételes szabályozás mikrovezérlő segítségével

1. Bevezetés 1. Köszönetnyilvánítás A számítógépes játékfejlesztésről 3

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

Programozási nyelvek a közoktatásban alapfogalmak I. előadás

Mesh generálás. IványiPéter

Operációs rendszerek. Az X Window rendszer

Valasek Gábor

A szerzõrõl... xi Bevezetés... xiii

JUH ASZ IMRE OpenGL mobidi AK k onyvt ar

3D-s számítógépes geometria és alakzatrekonstrukció

Operációs rendszerek. Az NT folyamatok kezelése

Féléves feladat. Miről lesz szó? Bemutatkozás és követelmények

Általános áttekintés. Általános áttekintés

Szoftvertechnológia alapjai Java előadások

Google Summer of Code OpenCL image support for the r600g driver

Képszerkesztés. Letölthető mintafeladatok gyakorláshoz: Minta teszt 1 Minta teszt 2. A modul célja

Programozási nyelvek 6. előadás

Koós Dorián 9.B INFORMATIKA

Programozás BMEKOKAA146. Dr. Bécsi Tamás 8. előadás

Térbeli adatstruktúrák

3D koordináta-rendszerek

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós május 6. Széchenyi István Egyetem, Gy r

QGIS tanfolyam (ver.2.0)

A kurzusról. Pontok rajzolása. Szegedi Tudományegyetem Informatikai Tanszékcsoport

Architektúra, megszakítási rendszerek

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

JUHÁSZ IMRE. OpenGL. mobidiák könyvtár

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT

Digitális technika VIMIAA01 9. hét

Programozási nyelvek Java

SysCVideo: fiktív grafikus kártya SystemC modulként, SDL alapú megjelenítéssel

Bevezetés a CGI-be. 1. Történelem

Oracle Spatial. Térbeli adatot tartalmazó tábla: Geometry table Legalább 2 oszlopa van: Elsődleges kulcs, SDO_GEOMETRY típusú oszlop.

Számítógépes alapismeretek 2.

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

Számítógépes Graka - 4. Gyak

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

Függvények. Programozás I. Hatwágner F. Miklós november 16. Széchenyi István Egyetem, Gy r

A C programozási nyelv VI. Parancssori argumentumok File kezelés

Matematika osztályozó vizsga témakörei 9. évfolyam II. félév:

A számítógépes grafika alapjai kurzus, vizsgatételek és tankönyvi referenciák 2014

Képszerkesztés elméleti feladatainak kérdései és válaszai

Adatok ábrázolása, adattípusok

Bevezetés a programozásba I 10. gyakorlat. C++: alprogramok deklarációja és paraméterátadása

Párhuzamos és Grid rendszerek

Az iskolai rendszerű képzésben az összefüggő szakmai gyakorlat időtartama. 10. évfolyam Adatbázis- és szoftverfejlesztés gyakorlat 50 óra

Informatika terméktervezőknek

Képszerkesztés elméleti kérdések

Hogyan kell 3D tartalmat megtekinteni egy BenQ kivetítőn? Minimális rendszerkövetelmények 3D tartalom lejátszásához BenQ kivetítőn:

Programozás alapjai 1. (BMEVIEEA100)

A tervfeladat sorszáma: 1 A tervfeladat címe: ALU egység 8 regiszterrel és 8 utasítással

Mechatronika segédlet 10. gyakorlat

Realisztikus színtér 1 / 59

2. Generáció ( ) 3. Generáció (2001) NVIDIA TNT2, ATI Rage, 3dfx Voodoo3. Klár Gergely

Programozási környezetek

1. Egyszerű (primitív) típusok. 2. Referencia típusok

Transzformációk. Grafikus játékok fejlesztése Szécsi László t05-transform

2. modul - Operációs rendszerek

Operációs rendszerek. Tanmenet

Pontfelhő létrehozás és használat Regard3D és CloudCompare nyílt forráskódú szoftverekkel. dr. Siki Zoltán

Termék modell. Definíció:

Követelmény a 7. évfolyamon félévkor matematikából

Tartalom. Tartalom. Hajder Levente Szakasz raszterizálása. 2017/2018. II. félév. Poligon raszterizáció.

Programozás 1. Dr. Iványi Péter

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

MSP430 programozás Energia környezetben. Kitekintés, további lehetőségek

SZÁMÍTÓGÉPEK BELSŐ FELÉPÍTÉSE - 1

GPU Lab. 14. fejezet. OpenCL textúra használat. Grafikus Processzorok Tudományos Célú Programozása. Berényi Dániel Nagy-Egri Máté Ferenc

Telek-Alakítási feladatok napjainkban. Poligon(ok) egyedi (fel)darabolása Pr-SoftWare

Átírás:

Grafikus csővezeték és az OpenGL függvénykönyvtár 1 / 32

A grafikus csővezeték 3D-s színtér objektumainak leírása primitívekkel: pontok, élek, poligonok. Primitívek szögpontjait vertexeknek nevezzük Adott sorrendben végrehajtott műveletek segítségével áll elő a 2D-s kép Műveletek sorrendjét grafikus csővezetéknek nevezzük Rögzített műveleti sorrendű grafikus csővezeték Programozható grafikus csővezeték 2 / 32

Rögzített műveleti sorrendű grafikus csővezeték 3 / 32

Rögzített műveleti sorrendű grafikus csővezeték Vertex kapcsolódások Vertexek Vertex transzformáció Transzformált vertexek Primitív összerakás és raszterizálás Fragmensek Pixel pozíciók Fragmens textúrázás és színezés Színezett fragmensek Raszter műveletek Pixel frissítések 4 / 32

Rögzített műveleti sorrendű grafikus csővezeték Vertex transzformációk Matematikai műveletek sorozata Primitívek szögpontjainak meghatározása a képernyőn Vertex attribútumok átadása Színezett vertex vertex transzformáció után Primitív összerakás Raszterizálás Interpoláció, textúrázás és színezés 5 / 32

Rögzített műveleti sorrendű grafikus csővezeték Primitív összerakás és raszterizálás A vertexek primitívekbe vannak szervezve kapcsolódási információk alapján Vágás A 3D-s színtér látható térfogata Alkalmazás által definiált vágósíkok Raszterizáló eldobhat poligonokat Geometriai primitívek lefedése Fragmensek 6 / 32

Rögzített műveleti sorrendű grafikus csővezeték Fragmens textúrázás és színezés Mindegyik fragmensre textúrázás és matematikai műveletek végrehajtása Transzformált vertexekből származó interpolált szín Interpolált textúra koordináták Fragmenshez tartozó texel kinyerése Fragmens szín 7 / 32

Rögzített műveleti sorrendű grafikus csővezeték Raszterműveletek Fragmens és kapcsolódó adatok Pixeltulajdonteszt Olló teszt Alfa teszt Mélység teszt Stencil teszt Mélység puffer Stencil puffer Keveredés Dithering Logikai művelet Szín puffer 8 / 32

Rögzített műveleti sorrendű grafikus csővezeték Raszterműveletek Pixeltulajdon-teszt Képernyő adott pixelére írhatunk-e Olló teszt Olló téglalapra korlátozott kirajzolás Alfa teszt Fragmens alfa értékének összehasonlítása egy előre megadott értékkel Adott reláció mellett kapott hamis értéknél a fragmens eldobódik 9 / 32

Rögzített műveleti sorrendű grafikus csővezeték Raszterműveletek Stencil-teszt Fragmens pozíciójának megfelelő stencilpuffer érték összehasonlítása egy előre megadott értékkel Ha az összehasonlítás eredménye hamis, akkor a fragmens eldobódik Stencilpuffer értékének módosítása Műveletek megadása sikeres és sikertelen stencil teszt esetén Sikeres stencil teszt és a mélység teszttől függő művelet megadása 10 / 32

Rögzített műveleti sorrendű grafikus csővezeték Raszterműveletek Mélység teszt Fragmens mélység értékének összehasonlítása a mélységpufferben levő értékkel Sikeres teszt esetén frissül a színpuffer és a mélységpuffer Alap esetben a nézőponthoz közelebbi fragmens fog bekerülni a színpufferbe 11 / 32

Rögzített műveleti sorrendű grafikus csővezeték Raszterműveletek Keveredés: végső fragmens és pixelek egyesítése Dithering: a színmélység javítása a térbeli felbontás rovására Logikai műveletek: OR, XOR vagy INVERT Fragmens és kapcsolódó adatok Pixeltulajdonteszt Olló teszt Alfa teszt Mélység teszt Stencil teszt Mélység puffer Stencil puffer Keveredés Dithering Logikai művelet Szín puffer 12 / 32

Programozható grafikus csővezeték 13 / 32

Programozható grafikus csővezeték 3D-s alkalmazás vagy játék 3D-s API: OpenGL vagy Direct3D 3D-s API parancsok CPU - GPU határvonal GPU parancs és adat folyam Vertex index folyam Összerakott primitívek Pixel pozíció folyam Pixel frissítések GPU kapcsolódás Primitív összerakás Raszterizálás és interpolálás Raszter műveletek Frame puffer Előtranszformált vertexek Programozható vertexproc. Transzformált vertexek Raszterizált előtranszformált fragmensek Programozható fragmensproc. Transzformált fragmensek 14 / 32

Programozható grafikus csővezeték Programozható vertex processzor Vertex attribútumok betöltése a megfelelő regiszterekbe Vektorokon végzett matematikai műveletek Fejlettebb vertex processzorok a vezérlési szerkezeteket is támogatják Programozható fragmens processzor Hasonló műveletek végrehajtása, mint a vertex processzorok esetén A fragmens processzorok támogatják a textúra műveleteket is 15 / 32

Programozható grafikus csővezeték Programozható vertex processzor Begin Vertex atribútumok másolása a bemeneti regiszterekbe Vertex program utasítás memória A következő utasítás betöltése és dekódolása Bemeneti regiszterek Ideiglenes regiszterek A bemeneti és/vagy ideiglenes regiszterek olvasása Input értékek leképezése Műveletek végrehajtása Ideiglenes vagy kimeneti regiszterek írása maszkolással Vertex program utasítás ciklus Igen Van több utasítás? Nem Kimeneti regiszterek A kimeneti regiszter transzformált vertexként való kibocsátása End 16 / 32

Programozható grafikus csővezeték Programozható fragmens processzor Begin Paraméterek inicializálása Interpolált primitívek Fragmens program utasítás memória A következő utasítás betöltése és dekódolása Ideiglenes regiszterek Interpoláltak és/vagy ideiglenes regiszterek olvasása Textúra képek Textúra címek kiszámítása & részletek szintjei & texelek betöltése Texel szűrők Igen Input értékek leképezése Textúra beolvasási utasítás? Nem Műveletek végrehajtása Fragmens program utasítás ciklus Igen Ideiglenes vagy kimeneti regiszterek írása maszkolással Van több utasítás? Nem Kimeneti mélység és szín A végső fragmens kibocsátása End 17 / 32

OpenGL függvénykönyvtár 18 / 32

OpenGL függvénykönyvtár Hordozható, 3D-s grafikus függvénykönyvtár Több száz függvényt és definíciót tartalmaz Egy színtér leírásához OpenGL függvény hívások sorozatát kell megadni Vertex OpenGL primitívek szögpontjai 2D-s és 3D-s pozíciók Meghatározzák a primitív alakját és helyzetét 19 / 32

OpenGL függvénykönyvtár v 1 v 2 v 3 v 5 v 1 v 2 v 1 v 2 v 3 v 5 v 5 v 1 v 2 v 3 v 4 v 6 v 0 v 3 v 5 v 0 v 4 v 0 v 4 v 0 v 4 Pontok Vonalak Vonal hurok Töredezett vonal v 5 v 0 v 3 v0 v 3 v 4 v 1 v 2 v 4 v 5 v 1 v 2 v 4 v 5 v 0 v 3 Háromszögek Háromszögsáv v 1 v 2 Háromszög-legyező v 0 v 1 v 5 v 6 v 1 v 3 v 5 v 7 v 5 v 0 v 4 v 3 v v 4 v 7 2 v 0 v 2 v v 6 4 v 1 v 2 v 3 Négyszögek Négyszögsáv Poligon 20 / 32

OpenGL függvénykönyvtár Az OpenGL függvénykönyvtár támogatja a Megvilágítást Árnyalást Textúrázást Keveredést Átlátszóságot Más speciális hatásokat és képességeket Az OpenGL függvénykönyvtár nem tartalmaz Ablakkezelő függvényeket Felhasználói interaktivitást és I/O műveleteket végrehajtó függvényeket Nincs OpenGL file formátum A modellek tárolására A virtuális színtér tárolására 21 / 32

OpenGL függvénykönyvtár Adattípusok és függvényelnevezési szabályok OpenGL adattípus Belső reprezentáció C adattípusként definiálva GLbyte 8 bites egész signed char GLshort 16 bites egész short GLint, GLsizei 32 bites egész long GLfloat 32 bites lebegőpontos float GLclampf pont GLuint, GLenum, GLbitfield 32 bites előjel nélküli egész unsigned long <Könyvtár prefix><alap parancs><opcionális argumentum szám><opcionális argumentum típus> gl Color 3 f glcolor3f(0.5, 0.5, 0.5); 22 / 32

OpenGL függvénykönyvtár Platformfüggetlenség Operációs rendszerekhez kapcsolódó feladatok Ablakkezelés Felhasználói interakciók kezelése Felhasználó leütötte-e az Enter billentyűt? GLUT használata Kezdetekben AUX (auxiliary) lib Kereszt-platformos példák szemléltetése Pop-up menük, ablakok, joystick támogatás, stb. GUI programozása adott platformon 23 / 32

OpenGL függvénykönyvtár Első program #i n c l u d e <GL/ g l u t. h> // a s z í n t é r r a j z o l á s a v o i d RenderScene ( v o i d ) { // Az a k t u á l i s t ö r l ő s z í n n e l v a l ó a b l a k t ö r l é s g l C l e a r (GL_COLOR_BUFFER_BIT) ; // F l u s h r a j z o l ó p a r a n c s g l F l u s h ( ) ; } // A r e n d e r e l é s i á l l a p o t o k b e á l l í t á s a v o i d SetupRC ( v o i d ) { //A s z í n p u f f e r t ö r l ő s z í n é n e k a b e á l l í t á s a g l C l e a r C o l o r ( 0. 0 f, 0. 0 f, 1. 0 f, 1. 0 f ) ; } 24 / 32

OpenGL függvénykönyvtár Első program // A program b e l é p é s i p o n t j a i n t main ( i n t argc, char argv [ ] ) { g l u t I n i t (&argc, argv ) ; g l u t I n i t D i s p l a y M o d e (GLUT_SINGLE GLUT_RGBA) ; glutcreatewindow ( " Egyszeru " ) ; g l u t D i s p l a y F u n c ( RenderScene ) ; SetupRC ( ) ; glutmainloop ( ) ; return 0 ; } 25 / 32

OpenGL függvénykönyvtár Első program - main függvény g l u t I n i t (&argc, argv ) ; Továbbítja a parancssori paramétereket Inicializálja a GLUT függvénykönyvtárat g l u t I n i t D i s p l a y M o d e (GLUT_SINGLE GLUT_RGBA) ; Egyszeresen pufferelt ablak RGBA színmód 26 / 32

OpenGL függvénykönyvtár Első program - main függvény glutcreatewindow ( " Egyszeru " ) ; Ablak létrehozása Címsorában az "Egyszeru" felirat g l u t D i s p l a y F u n c ( RenderScene ) ; RenderScene callback függvény regisztrálása Ablak újrarajzolása Ablak első megjelenítésekor Ablak előtérbe helyezésekor OpenGL renderelési függvények hívása 27 / 32

OpenGL függvénykönyvtár Első program - main függvény SetupRC ( ) ; Renderelése előtti inicializálás OpenGL állapotok beállítása glutmainloop ( ) ; GLUT eseménykezelő elindítása Vezérlés átadása a GLUT-nak Fő ablak bezárásig nem tér vissza Üzenetek feldolgozása 28 / 32

OpenGL függvénykönyvtár Első program - SetupRC függvény g l C l e a r C o l o r ( 0. 0 f, 0. 0 f, 1. 0 f, 1. 0 f ) ; Ablak törlésére használt szín megadása A színpuffer inicializálására használt szín beállítása void g l C l e a r C o l o r ( GLclampf red, GLclampf green, GLclampf blue, GLclampf a l p h a ) ; GLclampf: 0 és 1 közé leképezett float A szín vörös, zöld és kék összetevők keverékeként való megadása alpha: keveredés és speciális hatások 29 / 32

OpenGL függvénykönyvtár Első program - RenderScene függvény g l C l e a r (GL_COLOR_BUFFER_BIT) ; A színpuffer törlése Pufferek törlése g l F l u s h ( ) ; OpenGL parancssor ürítése Nem vár további utasításokra Beérkezett utasítások feldolgozásának folytatása 30 / 32

Összefoglalás Grafikus csővezeték Műveletek meghatározott sorrendje Adatok áramlása egyik fázisból a másikba Meghatározott típusú be- és kimenő adatok SIMD Programozható grafikus csővezeték Rögzített műveleti sorrendű grafikus csővezeték kiegészítése Programozható vertex és fragmens processzor 31 / 32

Összefoglalás OpenGL függvénykönyvtár 3D-s grafikus függvénykönyvtár Színtér leírása függvények meghívásával Rögzített műveleti sorrendű grafikus csővezeték GLUT Első program 32 / 32