OpenGL IV.

Slides:



Advertisements
Hasonló előadás
ROMBUSZ TÉGLALAP NÉGYZET.
Advertisements

OpenGL 2. gyakorlat Hapák József
A feladatokat az április 21-i Repeta-matek adásában fogjuk megoldani
Kötelező alapkérdések
A hatágú csillag (12 oldalú poligon) kerülete K1= (4/3)K0= 4,
GPU Szirmay-Kalos László.
Geometriai modellezés
Geometriai modellezés
3D képszintézis fizikai alapmodellje
Bevezetés.  A számítógépes grafika inkrementális képszintézis algoritmusának hardver realizációja  Teljesítménykövetelmények:  Animáció: néhány nsec.
GPGPU labor I. OpenGL, Cg.
 Nincs szinkronizáció és kommunikáció  Csővezeték alkalmazása  Párhuzamosítás Proc 2Proc 1 Csővezeték Proc 1 Proc 21 Proc 22 Párhuzamosság.
5. előadás (2005. március 22.) Függvények definíciója, deklarációja, hívása Enumerációs adattípus 1.
A hasonlóság alkalmazása
Párhuzamos egyenesek szerkesztése
Műszaki ábrázolás alapjai
C# tagfüggvények.
Mérnöki objektumok leírása és elemzése virtuális terekben c. tantárgy Budapesti Műszaki Főiskola Neumann János Informatikai Kar Intelligens Mérnöki Rendszerek.
Dr. Horváth László – PLM – CCM – 2. előadás: Határfelület-ábrázolás és Euler -i topológia A CAD/CAM modellezés alapjai Dr. Horváth László Budapesti.
A CAD/CAM modellezés alapjai
Elemei, tulajdonságaik és felosztásuk
Négyszögek fogalma.
Matematika III. előadások MINB083, MILB083
Nominális adat Módusz vagy sűrűsödési középpont Jele: Mo
Számítógépes grafika 3. gyakorlat.
2008/2009 tavasz Klár Gergely  Gyakorlatok időpontjai: ◦ Szerda 10:05–11:35 ◦ Csütörtök 10:00+ε –11:30+ε  Gyakvez: ◦ Klár Gergely ◦
Bevezetés az alakmodellezésbe I. Budapesti Műszaki Főiskola Neumann János Informatikai Főiskolai Kar A Műszaki Tervezés Rendszerei 2000/2001 tanév, I.
Szögek és háromszögek.
Háromszög nevezetes vonalai, körei
16. Modul Egybevágóságok.
Telefonos feladat A-ból B-n keresztül C-be utaztunk egyenletes sebességgel. Indulás után 10 perccel megtettük az AB távolság harmadát. B után 24 km-rel.
Gazdaságstatisztika 11. előadás.
AAO Csink László november.
Analitikus geometria gyorstalpaló
Rendering pipeline Ogre3D
Rekurzív algoritmusok
3. Vetületi ábrázolások számítási eljárásai
OpenGL 4 shaderek, GLSL Valasek Gábor
Java programozási nyelv Filekezelés
Java programozási nyelv Metódusok
A háromszög középvonala
2.2. Az egyenes és a sík egyenlete
Valószínűségszámítás II.
Síkidomok, testek hasonlósága
A 2. géptermi beszámoló VBA anyagának összefoglalása
Számítógépes Grafika OpenGL 4 shaderek, GLSL. OpenGL 4 A következő programozható fázisok vannak a 4.x-es OpenGL-ben: Vertex shader Tesselation control.
Félcsoport (semigroup) = ({s},{ *: s s  s [infix]}. semigroup is a type specification = sorts: s oprs: *: s s  s [infix] eqns: m 1, m 2, m 3  s (m 1.
Képek, képfeldolgozás Szirmay-Kalos László.
Függvények, mutatók Csernoch Mária. Függvények függvény definíciója az értelmezési tartomány tetszőleges eleméhez hozzárendel egy értéket –függvény helyettesítési.
GeoGebra Dinamikus matematika mindenkinek
GeoGebra Dinamikus matematika mindenkinek
V 1.0 OE-NIK, Programozás I. Gyakorlás egydimenziós tömbökkel Többdimenziós tömbök Gyakorló feladatok.
Grafikus hardver/szoftver alapok Szirmay-Kalos László.
Bevezetés.  Miért …  … egyszálúan programozunk?  … probléma ez?  Hogyan …  … változik ez?  … tudjuk kihasználni?  Megéri-e párhuzamosítani?
ELTE IK tavaszi félév Valasek Gábor
Készítette: Horváth Zoltán
A grafikus hardware programozása
OpenGL 2. gyakorlat Valasek Gábor
Vizualizáció és képszintézis
Vizualizáció és képszintézis
Görbék, felületek.
Vizualizáció és képszintézis
Geometria 9. évfolyam Ismétlés.
OpenGL III.
Alapok Model betöltés Anyagjellemzők Fényforrások Shaderek
OpenGL II.
OpenGL V.
Bevezetés Tematika Számonkérés Irodalom
ELEMI GEOMETRIAI ISMERETEK
Függvénysablonok használata
Előadás másolata:

OpenGL IV

Tesszelátor

Tesszelátor Mire jó? A geometria adaptív felosztására A geometria tömörítésére Displacement eljárások támogatására Level of detail Sziluett simítás Stb…

Tesszelátor Három shader lépcső Új geometriai primitív Tesselation Control Shader Tesselation Primitive Generator Tesselation Evaluation Shader Új geometriai primitív GL_PATCHES Teljesen a felhasználóra van bízva az értelmezés glPatchParameteri(GL_PATCH_VERTICES, vertNum);

Tesselation Control Shader A patch vertexein dolgozik A koordinátákból felület reprezentáció layout( vertices = n ) out; Felbontási paraméterek gl_TessLevelInner[2] gl_TessLevelOuter[4 ] Kimenő vertexenként hívódik

Tesselation Control Shader Bemeneti paraméterek Felhasználó által definiált Beépített in vec2 texCoord[]; // A patch definíciónak megfelelő elemszám. in int gl_PatchVerticesIn; // A patch-hoz tartozó vertexek száma. in int gl_PrimitiveID; // A patch sorszáma. in int gl_InvocationID; // A vertex patch-en belüli sorszáma. in gl_PerVertex { vec4 gl_Position; float gl_PointSize; float gl_ClipDistance[]; } gl_in[gl_MaxPatchVertices];

Tesselation Control Shader Kimeneti paraméterek Felhasználó által definiált Beépített Szinkronizáció out vec2 texCoord[]; // A patch definíciónak megfelelő elemszám. patch out vec4 data; // Teljes patch-re vonatkozó adatok. patch out float gl_TessLevelOuter[4]; // Külső felbontási paraméter. patch out float gl_TessLevelInner[2]; // Belső felbontási paraméter. out gl_PerVertex { vec4 gl_Position; float gl_PointSize; float gl_ClipDistance[]; } gl_out[]; barrier(); // A TCS hívások között szinkronizál.

Tesselation Primitive Generator Fix funkciójú lépcső A TCS-ből érkező vertexekből generál háromszögeket négyszögeket szakaszokat Kimenete u,v,w baricentrikus koordináták

Tesselation Evaluation Shader A felosztott geometriát állítja elő Bemenetei A TCS kimenete A TPG által előállított baricentrikus koordináták A felosztás értelmezése Csak a primitív típus kötelező Kimenete Egy vertexhez tartozó tulajdonságok layout(primitív típus, felosztás típus, irányítás, pont generálás) in;

Tesselation Evaluation Shader Primitív típus isolines a patch párhuzamos szakaszok csoportja a kimenet szakaszok csoportja triangles a patch egy háromszög a kimenet háromszögek csoportja quads a patch egy négyszög

Tesselation Evaluation Shader Felosztás típus equal_spacing a vertexek között azonos távolság fractional_even_spacing páratlan számú szegmens kettő kivételével fix hosszú szegmensek a maradék a két szélső darabra kerül egyenlően fractional_odd_spacing páros számú szegmens a többi azonos az előző esettel

Tesselation Evaluation Shader Bejárás cw: az óra járásának megfelelő ccw: az óra járásával ellentétes csak az absztrakt patch vertexeinek sorrendjét adja meg a kimenet ettől független Pont generálás point_mode: a kimenet pont primitív legyen

Tesselation Evaluation Shader Bemeneti paraméterek Felhasználó által definiált Beépített TCS paraméterek in vec2 texCoord[]; // A patch definíciónak megfelelő elemszám. patch in vec4 data; // A teljes patch-re közös adat. in vec3 gl_TessCoord; // Absztrakt koordináták a TPG-ből. in int gl_PatchVerticesIn; // A patch-hoz tartozó vertexek száma. in int gl_PrimitiveID; // A patch sorszáma. in gl_PerVertex { vec4 gl_Position; float gl_PointSize; float gl_ClipDistance[]; } gl_in[gl_MaxPatchVertices]; patch in float gl_TessLevelOuter[4]; // Külső felbontási paraméter. patch in float gl_TessLevelInner[2]; // Belső felbontási paraméter.

Tesselation Evaluation Shader Kimeneti paraméterek Felhasználó által definiált Beépített out vec2 texCoord; // A vertexhez tartozó adat. out gl_PerVertex { vec4 gl_Position; float gl_PointSize; float gl_ClipDistance[]; } gl_out[];

TES Topológia Háromszög (u,v,w) = (0, 1, 0) OL0 OL2 IL0

TES Topológia Négyszög (u,v) = (0, 1) (u,v) = (1, 1) OL3 IL0 OL0 IL1

TES Topológia Szakaszok (u,v) = (0, 1) (u,v) = (1, 1) OL0

Példa: Háromszög felosztás

Példa: Háromszög felosztás

Példa: Háromszög felosztás Tesselation Control Shader #version 430 layout(vertices = 3) out; in vec3 tPosition[]; out vec3 tcPosition[]; uniform int tessLevelInner; uniform int tessLevelOuter; void main(){ tcPosition[gl_InvocationID] = tPosition[gl_InvocationID]; if(gl_InvocationID == 0){ gl_TessLevelInner[0] = tessLevelInner; gl_TessLevelOuter[0] = tessLevelOuter; gl_TessLevelOuter[1] = tessLevelOuter; gl_TessLevelOuter[2] = tessLevelOuter; }

Példa: Háromszög felosztás Tesselation Evaluation Shader #version 430 layout(triangles, equal_spacing, cw) in; uniform mat4 MV; in vec3 tcPosition[]; out vec3 tePosition; void main() { vec3 p0 = gl_TessCoord.x * tcPosition[0]; vec3 p1 = gl_TessCoord.y * tcPosition[1]; vec3 p2 = gl_TessCoord.z * tcPosition[2]; tePosition = p0 + p1 + p2; gl_Position = MV * vec4(tePosition, 1); }

Feladat Szabályos rács generálása Távolság alapján felosztás (LoD) Magasságmező megjelenítés