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

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

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

Térbeli adatstruktúrák

Grafikus csővezeték 2 / 77

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

Ütközés-detektálás 1 / 116

Számítógépes grafika

Grafikus csővezeték 1 / 44

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

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

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

Róth Gergő.

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

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

Klár Gergely 2010/2011. tavaszi félév

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

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

Tartalmi összefoglaló

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

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

Grafikus csővezeték (Általános áttekintés) Grafikus csővezeték (Általános áttekintés)

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

Objektumok reprezentációja. Általános áttekintés

Valasek Gábor

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

GPU Lab. 11. fejezet. Vizualizáció. Lectures on Modern Scientific Programming Wigner RCP November D. Berényi M. F.

FEJLETT GRAFIKAI ALGORITMUSOK

JUH ASZ IMRE OpenGL mobidi AK k onyvt ar

(Solid modeling, Geometric modeling) Testmodell: egy létező vagy elképzelt objektum digitális reprezentációja.

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

OpenGL Compute Shader-ek. Valasek Gábor

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

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

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

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

D3D, DXUT primer. Grafikus játékok fejlesztése Szécsi László t01-system

Véletlen szám generálás Labirintus felépítése 1x1-es felbontástól a teljes méretig

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

Róth Gergő.

A számítógépes grafika

Nincs szinkronizáció és kommunikáció Csővezeték alkalmazása Párhuzamosítás

A számítógépes grafika inkrementális képszintézis algoritmusának hardver realizációja Teljesítménykövetelmények:

Programfejlesztés az OpenGL segítségével (1. rész) A 3D programozás alapjai

Területi primitívek: Zárt görbék által határolt területek (pl. kör, ellipszis, poligon) b) Minden belső pont kirajzolásával (kitöltött)

Róth Gergő.

Grafika programozása

4. gyakorlat: interpolációs és approximációs görbék implementációja

Mesh from file, OrthoCamera, PerspectiveCamera. Szécsi László 3D Grafikus Rendszerek 3. labor

Geometria brute force tárolása

Geometriai modellezés. Szécsi László

A bemutatott példa a Phong modell egy egyszerűsített változatát alkalmazza a Blinn-Phong-féle megközelítést

C programozási nyelv Pointerek, tömbök, pointer aritmetika

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

A szürke háttérrel jelölt fejezet/alfejezet szövege a CD-mellékleten található. A CD-melléklet használata. 1. Elméleti áttekintés 1

Diplomamunka. Miskolci Egyetem. GPGPU technológia kriptográfiai alkalmazása. Készítette: Csikó Richárd VIJFZK mérnök informatikus

Tartalom. Geometria közvetlen tárolása. Geometria tárolása - brute force. Valasek Gábor valasek@inf.elte.hu. Hermite interpoláció. Subdivision görbék

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

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

Termék modell. Definíció:

Valasek Gábor

OPENCV TELEPÍTÉSE SZÁMÍTÓGÉPES LÁTÁS ÉS KÉPFELDOLGOZÁS. Tanács Attila Képfeldolgozás és Számítógépes Grafika Tanszék Szegedi Tudományegyetem

Klár Gergely 2010/2011. tavaszi félév

3D koordináta-rendszerek

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

21. évfolyam 5. szám. Fizika InfoRmatika Kémia Alapok. Kiadó. Levélcím Cluj, C. P. 1/140

Szegedi Tudományegyetem Informatikai Tanszékcsoport tanév

Valósidejű térbeli megjelenítés, másként Fehér Krisztián

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

OpenCL - The open standard for parallel programming of heterogeneous systems

Mobilplatformok Merre tart a világ? Kis Gergely MattaKis Consulting

Tartalomjegyzék. Köszönetnyilvánítás... xv. Előszó... xvii. 1. Bevezető D-történelem Matematikai alapok... 7

GRAFIKA PROGRAMOZÁSA. Bemutatkozás és követelmények. Dr. Mileff Péter

HARDVERESEN GYORSÍTOTT 3D/2D RENDERELÉS

C vagy C++? Programozási Nyelvek és Fordítóprogramok Tanszék. Pataki Norbert. Programozási Nyelvek I.

Maga a tématerület így nagyon nagy. A fények pontos fizikai szimulációja kimondottan számításigényes

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

SZAKDOLGOZAT. Rákos Dániel

Szimulációs technikák

OSZTOTT 2D RASZTERIZÁCIÓS MODELL TÖBBMAGOS PROCESSZOROK SZÁMÁRA

Algoritmusok raszteres grafikához

Területi primitívek: Zárt görbék által határolt területek (pl. kör, ellipszis, poligon)

Területi primitívek: Zárt görbék által határolt területek (pl. kör, ellipszis, poligon)

A TANTÁRGY ADATLAPJA

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

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

= Y y 0. = Z z 0. u 1. = Z z 1 z 2 z 1. = Y y 1 y 2 y 1

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

Programozás I gyakorlat

OpenOffice.org irodai programcsomag

Szakdolgozat. Dandár Gábor

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

A lineáris programozás alapfeladata Standard alak Az LP feladat megoldása Az LP megoldása: a szimplex algoritmus 2018/

F2. OpenGL grafika. Vertex szintű művelet Raszteriz. Pixelművelet. Textúra. F2.1. ábra A megjelenítési cső

Videókártya - CUDA kompatibilitás: CUDA weboldal: Példaterületek:

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)

ACR122U-A9. NFC USB intelligens kártyaolvasó. Műszaki Specifikáció V3.04 verzió

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

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 Grafika mintafeladatok

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Átírás:

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

Direct3D, DirectX o Csak Microsoft platformon OpenGL o Silicon Graphics: IRIS GL (zárt kód) o OpenGL (1992) o Nyílt szabvány; konzorciumi kezelésben (ma: Khronos Group) o C nyelvű függvénykönyvtár asztali PC-kre o Alapfokon ismertnek tételezzük fel a továbbiakban! Unity 3D o Multiplatform környezet o Magasabb szintű modellezés (OpenGL ES-re épül a kivitelezése)

OpenGL ES (Embedded Systems) o Nyílt szabvány; 2000-es évek eleje o OpenGL redukált változata beágyazott rendszerekre o EGL: közös interfész réteg o Sok platform támogatja Android, ios, Java ME, Symbian, QNX, PlayStation, Blackberry, webos, WebGL (3D grafika böngészőkben) is erre épül! o Nincs GLUT és GLU segédkönyvtár! Néhány hasznos függvény azért átkerült Specifikáció o The Standard for Embedded Accelerated 3D Graphics

OpenGL ES 1.0 o OpenGL 1.3 verzió alapján (ezt tanítjuk BSc-n) o Embedded profilok Common lite profile: csak fixpontos adattípus (nincs lebegőpontos) Ha nincs lebegőpontos CPU támogatás (beágyazott környezetben előfordul) Common profile: fixpontos és lebegőpontos adattípus is van o Főbb különbségek az asztali változathoz képest Nincs közvetlen modellezési lehetőség glbegin() glend() helyett tömbökkel kell dolgozni Fixpontos számábrázolás megjelenése Nem érhetők el az alábbi funkciók GL_QUAD és GL_POLYGON primitívek; csak háromszögek használhatók fel! texgen; line stipple; poligon stipple; polygon_mode Bitmap műveletek; előtér és összegző pufferek Megjelenítési listák és feedback mód Hátlapok anyagjellemzői; felhasználói vágó síkok;

OpenGL ES 1.1 o OpenGL 1.5 verzió alapján o Újdonságok Multitexture támogatás; mipmap generálás VBO (vertex buffer object) Állapotlekérések; felhasználói vágósíkok OpenGL ES 2.0 (2007. március) o OpenGL 2.0 verzió alapján o Programozható műveletsor megjelenése Vertex és fragment shader-ek Nincs alapértelmezett transzformáció sorozat és megvilágítás típusok! Nagyobb programozói szabadság több munka! Úgy oldjuk meg, ahogy akarjuk/tudjuk o Nincs visszafelé kompatibilitás az 1.1 verzióval!

OpenGL ES 3.0 (2012. augusztus) o Teljes kompatibilitás az OpenGL 4.3 verzióval o Visszamenőlegesen kompatibilis az OpenGL ES 2.0 verzióval o Újdonságok Új textúra formátumok, tömörítés Hatékonyabb megjelenítés Új GLSL ES shader programozási nyelv OpenGL ES 3.1 (2014. március) o Indirekt rajzoló parancsok, shader frissítések o Visszamenőlegesen kompatibilis az OpenGL ES 3.0 és 2.0 verziókkal OpenGL ES 3.2 (2015. augusztus) o Geometria és tesszelláló shader-ek, lebegőpontos render,

Kép forrása: Khronos Group

Kép forrása: Khronos Group

Vertex shader o o Csúcspontokra vonatkozó transzformációk Geometriai transzformációk alkalmazása Megvilágítási egyenletek kiértékelése Speciális új adattípusok attribute: pontonkénti adatok (pl. vertextömbök) tárolása uniform: a vertex shader által használt konstans érték sampler: textúrákat reprezentációhoz. varying: shader interpolált kimenete fragmes shader felé Fragmens shader o Poligonok belső pontjaira vonatkozó transzformációk Textúrázás Fényhatások A shaderek ESSL/GLSL nyelven íródnak o Embedded System / OpenGL Shading Language Alacsony szintű, C-szerű szintaktika

C programozási nyelven bemutatva o Desktop OpenGL szintaxis glbegin() glend() hiányzik! o gldrawarrays() vagy gldrawelements() függvényekkel o glenableclientstate() és gldisableclientstate() függvények Tömb típusok glvertexpointer(): csúcspontok koordinátái glnormalpointer(): csúcspontokhoz tartozó normálvektorok glcolorpointer(): csúcspontokhoz tartozó színek (RGB) glindexpointer(): csúcspontokhoz tartozó színek (színindex) gltexcoordpointer(): csúcspontokhoz tartozó textúra koordináták gledgeflagpointer(): élkirajzolás szabályozása Példa o http://www.songho.ca/opengl/gl_vertexarray.html

Csúcspontok koordinátái o glvertexpointer(glint size, GLenum type, GLsizei stride, const GLvoid* pointer) size: csúcspont koordináták száma 2: 2D; 3: 3D type: GL_FLOAT, GL_SHORT, GL_INT vagy GL_DOUBLE stride: csúcspont adatok közötti távolság a tömbben (bájtban) pointer: tömb kezdőcíme a memóriában Normálvektor adatok o glnormalpointer(glenum type, GLsizei stride, const GLvoid* pointer) type: GL_FLOAT, GL_SHORT, GL_INT vagy GL_DOUBLE stride: normálvektor adatok közötti távolság a tömbben (bájtban) pointer: tömb kezdőcíme a memóriában

Kirajzolás #1 o gldrawarrays(glenum mode, GLint first,glsizei count); Hátrány mode: GL_TRIANGLE, first: tömb első feldolgozandó indexe count: hány csúcspontot kell modellezni o Az ismétlődő csúcsokat egyenként meg kell adni

Példa (kocka lapjainak modellezése) GLfloat vertices[] = {...}; // 36 of vertex coords... // activate and specify pointer to vertex array glenableclientstate(gl_vertex_array); glvertexpointer(3, GL_FLOAT, 0, vertices); // draw a cube gldrawarrays(gl_triangles, 0, 36); // deactivate vertex arrays after drawing gldisableclientstate(gl_vertex_array);

Kirajzolás #2 o gldrawelements(glenum mode, GLsizei count, Glenum type, const GLvoid * indices); mode: GL_TRIANGLE, count: csúcspontok száma type: az csúcspontok indextömbjének típusa (pl. GL_UNSIGNED_BYTE) indices: csúcspont indextömb memóriacíme

Példa (kocka lapjainak modellezése) GLfloat vertices[] = {...}; GLubyte indices[] = {0,1,2, 2,3,0,... 0,3,4, 4,5,0, 0,5,6, 6,1,0, 1,6,7, 7,2,1, 7,4,3, 3,2,7, 4,7,6, 6,5,4}; // 8 of vertex coords // 36 of indices // activate and specify pointer to vertex array glenableclientstate(gl_vertex_array); glvertexpointer(3, GL_FLOAT, 0, vertices); // draw a cube gldrawelements(gl_triangles, 36, GL_UNSIGNED_BYTE, indices); // deactivate vertex arrays after drawing gldisableclientstate(gl_vertex_array);

Modellezzünk kockát tömbökkel! o gldrawelements() függvényt használjuk o Háromszögekből építsük fel A GPU háromszögekkel dolgozik, a sokszögek úgyis felbontásra kerülnek OpenGL 3.1 felett csak háromszögekkel lehet dolgozni, megszűnt a GL_QUADS, GL_QUAD_STRIP és a GL_POLYGON Rendeljünk szín információt a csúcspontokhoz! o Külön szín tömb használatával o A felső (Y koordináta szerint) pontok vörösek, az alsók zöldek legyenek A csúcspont és szín információt közös tömbben adjuk meg! o Figyeljünk a stride és pointer paraméterek helyes megadására! Adjunk normálvektort a kocka csúcspontjaihoz! o Ezt már nem ússzuk meg 8 csúcsponttal, kell mind a 24