Základy programování shaderů v OpenGL Část 2 - přenos dat
|
|
- Romana Šimková
- před 7 lety
- Počet zobrazení:
Transkript
1 Základy programování shaderů v OpenGL Část 2 - přenos dat Petr Felkel, Jaroslav Sloup Katedra počítačové grafiky a interakce, ČVUT FEL místnost KN:E-413 (Karlovo náměstí, budova E) felkel@fel.cvut.cz Poslední změna:
2 Obsah přednášky Minule Tok dat v OpenGL se shadery Překlad a sestavení programu Struktura programu typu shader Dnes Předávání dat a parametrů do programu typu shader Grafická primitiva Příklady zdrojových kódů pro shadery
3 Předávání parametrů shaderům ATRIBUTY vrcholů (vstupy VS) UNIFORM (společné proměnné) Vertex Data Vertex Shader Primitive Assembly and Rasterization Fragment Shader Blending Pixel Data Texture Store OpenGL verze 3.1
4 Pro každý vrchol s atributy se spustí VS Vertex Shader Vertex Data Vertex Shader T&L Cache Primitive Assembly Vertex Shader 4
5 Atributy vrcholu a proměnné uniform UNIFORM (společné proměnné) ATRIBUTY vrcholu 0 1 n vertex shader 0 1 n fragment shader GPU attriblocation (index vstupu VS) uniformlocation (index společné proměnné uniform) 5
6 Index atributu = číslo vstupu VS (opak.) V kódu VS layout (location = 0) in vec3 VertexPosition; VS OpenGL V OpenGL před gllinkprogram() in vec3 VertexPosition; glbindattriblocation(programhandle, 0, VertexPosition ); Po slinkování po gllinkprogram() in vec3 VertexPosition; vplocation = glgetattriblocation(programhandle, VertexPosition ); 6
7 Data v hlavní paměti versus data na GPU Bottleneck!!! [ 7
8 Postup před vykreslením jednoho snímku Inicializace a příprava dat (1x) Nastaví se stav OpenGL Připraví se balíky dat přenos do GPU (buffery) Připraví se informace o obsahu bufferů a jejich propojení na vstupy vertex shaderů (vertex arrays) Vykreslování (např. 60x za sekundu) viz dále Smazání obrazovky Propojení vstupů VS (bind vertex array) Spustí se vykreslení (draw) 8
9 Příprava dat k vykreslování 1x 1. Aplikace připraví atributy pro všechny vrcholy (pozice vrcholů, normály, ) 2. Vytvoří buffer objekty (VBO, EBO, ) a předá jim data (ovladač je obvykle překopíruje do videopaměti viz dále) 3. Zjistí indexy vstupních proměnných VS (glgetattriblocation) 4. Popíše, jak jsou v bufferu atributy uloženy a propojí je se vstupy VS vertex array (VAO) 9
10 Příklad scény 10
11 Data Baked in the code: static const GLfloat g_vertex_buffer_desk[] = { -1.0f,-1.0f,-1.0f, // triangle 1 : begin -1.0f,-1.0f, 1.0f, -1.0f, 1.0f, 1.0f, // triangle 1 : end 1.0f, 1.0f,-1.0f, // triangle 2 : begin -1.0f,-1.0f,-1.0f, -1.0f, 1.0f,-1.0f, // triangle 2 : end... } or Loaded from a file 11
12 Buffery Atributy vrcholů a indexy VBOs + EBO Propojení atributů s vertex shaderem 0 1 n in vec3 VertexPosition; in vec3 VertexNormal; vertex shader VAOs 12
13 Vertex Buffery VBO1 VBO2... VBOn GL_ARRAY_BUFFER GL_ELEMENT_ARRAY_BUFFER EBO indices Propojení atributů s vertex shaderem 0 1 n in vec3 VertexPosition; in vec3 VertexNormal; vertex shader VAOs 13
14 Attrib locations VBO1 VBO2... VBOn EBO indices Propojení atributů s vertex shaderem 0 1 n in vec3 VertexPosition; in vec3 VertexNormal; vertex shader VAOs 14
15 Vertex Array Objects VBO1 VBO2 VBOn... EBO indices VAO Attrib 1 positions x,y,z Buffer ID target offset stride size type index Attrib 2 normals nx,ny,nz Buffer ID target offset stride size type index 0 1 n in vec3 VertexPosition; in vec3 VertexNormal; vertex shader... Bind VertexAttribPointer indices (0 or 1x) Buffer ID element_array Bind 15
16 Objekty v OpenGL OpenGL využívá princip objektů Všechny objekty mají celočíselné jméno (ID, handle, ) Pomocí něj aktivujeme příslušný objekt či jej použijeme pro připojení k jinému objektu. Z hlediska aplikace je struktura objektu neznámá Jméno slouží k předávání objektu funkcemi API buffer jako pojmenovaný blok bytů v paměti vertex array jako kolekce bufferů a stavu OpenGL spojených se vstupem vrcholů s atributy do Vertex Shaderu (jak jsou v bufferech uloženy souřadnice a atributy a jak je propojit na vstupy VS) textura shader a program 16
17 Práce s objekty v OpenGL Při vytváření objektu 1. glgenxxx vytvoření jmen objektů --> vždy typ GLuint 2. glbindxxx (target,) object_name 3. Copy data - např. glteximage2d, glbufferdata,,, 4. + nastavení stavu OpenGL Při použití glbindxxx (target,) object_name Pokud objekt nepotřebujeme gldelete 17
18 Předávání dat mezi GPU a CPU v OpenGL Probíhá prostřednictvím těchto objektů Buffer Objekty (pro vrcholy nazýváme VBO, EBO, ) Vertex Array Objekty (pro vrcholy nazýváme VAO) VBO je principiálně jen jednorozměrné pole dat / bajtů - data jsou svázána s vrcholy, - souřadnice, normály, texturovací souřadnice, VAO obsahuje jeden čí více VBOs a dává interpretační strukturu datům v nich uložených, (co který bajt znamená). Může obsahovat buffer s indexy vrcholů (EBO). 19
19 Další obsah přednášky Buffer objekty (VBO, EBO, ) Vertex array objekty (VAO) Použití a nastavení pro zobrazení dat 20
20 (Vertex) Buffer objekty Slouží k přístupu do paměti spravované OpenGL obvykle na GPU (CPU = klient, GPU = server) Je to blok bajtů bez dalších informací o jejich struktuře Typický postup vytvoření: float buffer_data [] = {-0.8f, -0.8f, 0.0f, 0.8f, -0.8f, 0.0f}; GLuint buffer_name; // často jen buffer // slajd glgenbuffers(1, &buffer_name ); // 1 glbindbuffer(target, buffer_name ); // 2 glbufferdata(target, sizeof(buffer_data), buffer_data, GL_STATIC_DRAW); // 3 glbindbuffer(target, 0); target je způsob interpretace bufferu, např. GL_ARRAY_BUFFER, ale další jsou GL_ELEMENT_ARRAY_BUFFER pro indexy, [Groff] GL_PIXEL_PACK_BUFFER, or GL_PIXEL_UNPACK_BUFFER pro pixely 21
21 Pomocná funkce na vytvoření bufferů Pro vytváření objektů bufferů se může hodit tato funkce, která vrací jméno vytvořeného bufferu static GLuint make_buffer( GLenum target, // typ bufferu GLsizei buffer_size const void *buffer_data,// void pointer ) { GLuint buffer; glgenbuffers(1, &buffer); // 1 glbindbuffer(target, buffer); // 2a glbufferdata(target, buffer_size,// 3 buffer_data, GL_STATIC_DRAW); } glbindbuffer(target, 0); // 2b return buffer; // vrací jméno bufferu - ID [Groff] 22
22 Buffer Objekty 1. generování jmen void Vrací glgenbuffers( n nepoužitých GLsize jmen n, bufferů GLuint * buffers); // 1 Vygeneruje n jmen bufferů, jméno je číslo typu Gluint Uloží je do pole buffers glgenbuffers(1,&buffer); // 1 Vytvoří jedno jméno bufferu void gldeletebuffers( GLsize n, const GLuint * buffers); Uvolní n jmen bufferů v poli buffers a smaže je Přesněji pokud někdo buffer používá, jen ho označí jako smazaný. Smaže se až s posledním odkazem 23
23 Buffer Objekty 2. propojení jména s cílem void glbindbuffer(enum target, GLuint buffer); // 2 Propojí jméno objektu buffer s OpenGL cílem target target ARRAY_BUFFER ELEMENT_ARRAY_BUFFER target se používá i jako parametr příkazů OpenGL Propojení ovlivňuje i další příkazy, které target jako parametr nemají, ale využívají jím nastaveného stavu (např. gldrawarrays pracuje s navázanými vrcholy, glvertexattribpointer nastavuje připojený buffer ve VAO) Volá se podruhé při vykreslování před použitím bufferu Propojení se zruší parametrem 0 glbindbuffer(target,0); Účel Atributy vrcholů (Vertex array) Indexy do pole vrcholů // 2b 24
24 Buffer Objekty 3. předání dat void glbufferdata(enum target, sizeiptr size, const void * data, enum usage); // 3 Okopíruje data z klientské paměti do paměti buffer objektu usage rada, kam data dát STATIC_... DYNAMIC_... STREAM_ _DRAW _READ _COPY Účel Data nehodláme měnit (rigidní objekty) Data budeme měnit často Data budeme měnit pravidelně (animace) CPU -> GPU GPU -> CPU GPU GPU Pro vertex a element arrays tedy typicky GL_STATIC_DRAW glbufferdata(target, buffer_size, buffer_data, GL_STATIC_DRAW); // 3 25
25 Vertex Array Object (VAO) Sdružuje kompletní informace o atributech vrcholů potřebné pro předávání dat vertex shaderům Připojené buffery se souřadnicemi a dalšími atributy Informace o struktuře dat v bufferech (jak jsou data v bufferech poskládána) Navázání na vstupy vertex shaderů (location) V nových verzích OpenGL je nutno VAO explicitně definovat (gen, bind, ) a před vykreslením se provede jen propojení (bind) Poznámka: v OpenGL ES a WebGL VAO není (extenze) ve starší verzi OpenGL existoval implicitní VAO s číslem 0 propojení se vstupy (glbindbuffer a glvertexattribpointer) se dělalo v metodě draw() [Groff] 26
26 Vertex Array Object (VAO) - vytvoření GLuint vertex_array; glgenvertexarrays( 1, &vertex_array ); // 4 glbindvertexarray( vertex_array ); // 5a // buffery s atributy vrcholů vytvořeny dříve Bind, BufferData glbindbuffer( GL_ARRAY_BUFFER, positionbuffer ); glenablevertexattribarray( pos_location ); // 6 glvertexattribpointer( pos_location, 2,GL_FLOAT, GL_FALSE,0,0);// 7 glbindbuffer( GL_ARRAY_BUFFER, colorbuffer ); glenablevertexattribarray(color_location); // 6 glvertexattribpointer(color_location,3,gl_float,gl_false,0,0); // 7 // pouze jeden buffer s indexy vrcholů! glbindbuffer( GL_ELEMENT_ARRAY_BUFFER, elementbuffernamehouse2 ); glbindvertexarray( 0 ); // 5b detach 27
27 Vertex Array Object 4. generování jmen void Vrací glgenvertexarrays( n nepoužitých jmen GLsize bufferů n, GLuint * arrays); // 4 Vytvoří n jmen polí v poli arrays void gldeletevertexarrays (GLsize n, const GLuint *arrays ); Uvolní n jmen polí v polí arrays a jejich obsah smaže 28
28 Vertex Array Objects 5. připojení void glbindvertexarray (GLuint array); // 5 Připojí pole se jménem array Při prvním volání se objekt pole vytvoří Volá se podruhé při vykreslování před použitím v poli definovaných bufferů a v nich uložených atributů vrcholů (nemá parametr target existuje jediný typ vertex array) Připojení se zruší parametrem 0 glbindvertexarray(0); // 5b 29
29 6. Povolení pole atributů s daným indexem (location) void glenablevertexattribarray(gluint index); // 6 Povolí atribut (location) s indexem index Každý vrchol dostane na vstup vertex shaderu jiná data odpovídající jeho umístění v bufferu void gldisablevertexattribarray(gluint index); Zakáže atribut (location) s indexem index Všechny vrcholy dostávají konstantní vstupní hodnotu Implicitně (0.0, 0.0, 0.0, 1.0) Nebo příkazem glvertexattrib*(gluint index, TYPE value); 30
30 6. Povolení pole atributů s daným indexem glenablevertexattribarray(location) [Craitou] 31
31 7. Popis pole atributů vrcholů (co je ve vertex bufferu pro location uloženo a kde) void glvertexattribpointer(gluint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid * pointer); // 7 index atributu ve vertex shaderu (location atributové proměnné) size -počet složek atributu (1, 2, 3 nebo 4) type - datový typ složek (GL_BYTE, GL_FLOAT, ) normalized převádí čísla na interval 0.0f...1.0f stride - offset mezi atributy v bufferu pointer - offset první hodnoty v rámci bufferu přetypovaný na (void *) pro data od začátku bufferu (void*)0 32
32 Vrcholy za sebou a na přeskáčku indices Vertices are separated attributes may be different Vertices are shared attributes must be the same [ 33
33 Shared vs Separate normals [ 34
34 [ [ 35
35 Postup vykreslení jednoho snímku Příprava (1x) Nastaví se stav OpenGL Připraví se balíky dat přenos do GPU (buffery) Připraví se informace o obsahu bufferů a jejich propojení na vstupy vertex shaderů (vertex arrays) Vykreslování (např. 60x za sekundu) Smazání obrazovky Propojení vstupů VS (bind vertex array) Nastavení uniform proměnných (materiál, transformace, ) Spustí se vykreslení (draw) 36
36 Dva způsoby vykreslování geometrických primitiv Data o vrcholech jsou uložena v buffer objektech, tj. v polích v adresovém prostoru serveru (obvykle v paměti GPU viz glbufferdata) Jedním příkazem lze vybrat část z nich a vykreslit je (např. jednu stěnu krychle) gldrawarrays() vykreslí n po sobě jdoucích vrcholů gldrawelements() vykreslí n po vrcholů na přeskáčku, podle pole indexů vrcholů Před vykreslováním je nutno informovat OpenGL o tom, jak jsou data v polích poskládána, jak jsou propojena se vstupy vertex shaderů a v jakém pořadí se budou vrcholy uložené v datech vykreslovat - to je uloženo ve Vertex Array glbindvertexarray( ) => připojit Vertex Array 37
37 Vykreslení n po sobě jdoucích vrcholů void gldrawarrays(glenum mode, GLint first, GLsizei count); Vykreslí count po sobě jdoucích vrcholů ze všech povolených polí Začne na vrcholu s indexem first Poslední vykreslený má index first+count-1 mode udává typ primitiva GL_POINTS, GL_LINE_STRIP, GL_LINE_LOOP, GL_LINES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, first GL_TRIANGLES count mode = GL_TRIANGLES 38
38 Použití vertex arrays glbindvertexarray( vertex_array );// 5) gldrawarrays( GL_LINES, 3, 6 ); // od indexu 3 // 6) 6 vrcholů glbindvertexarray( 0 ); // 5) first count [ 1,0, 2,0, 3,0, 0,2, 1,0, 1,0, 2,2, 2,2, 0,2,.] mode = GL_LINES 39
39 Vykreslení n po vrcholů napřeskáčku void gldrawelements(glenum mode, GLsizei count, GLenum type, void *indices); Vykreslí count vrcholů ze všech připojených polí ARRAY_BUFFER, jejichž indexy jsou uloženy v připojeném poli indexů ELEMENT_ARRAY_BUFFER na offsetu indices (dříve to byl opravdu odkaz na pole indexů v klientské paměti, proto se offset přetypovává na odkaz (void*) offset) type udává datový typ indexů a může nabývat hodnot GL_UNSIGNED_BYTE, GL_UNSIGNED_SHORT, or GL_UNSIGNED_INT mode udává typ primitiva GL_POINTS, GL_LINES, mode = GL_TRIANGLES 40
40 ELEMENT_ARRAY_BUFFER target Bounded once per VAO stores the order of data in VBOs Bounded only, does not store the type of indices gldrawelements must provide type and offset (*indices) VAO ARRAY_BUFFER target Buffer ID array_boffset stride size type index... Bind VertexAttribPointer indices (0 or 1x) ELEMENT_ARRAY_BUFFER target Buffer ID element_array Bind 41
41 Souřadnicový systém v OpenGL - základy Pravotočivá souřadná soustava y axis x axis z axis Souřadnicový systém zobrazované plochy: (0,h) (w,h) Levý dolní roh obrazovky (0,0) (w,0) 42
42 Souřadnice vrcholů Souřadnice vrcholů Typicky se s nimi pracuje v polích vrcholů Předávají se přes ANSI C pole do tzv. vertex buffer objektů Počet složek souřadnic 2 2D souřadnice (x, y), implicitně z = 0 a w = 1 3 3D souřadnice (x, y, z), implicitně w = 1 4 homogenní souřadnice (x, y, z, w) reprezentují 3D souřadnice podle vztahu (x/w, y/w, z/w) je to vhodnější pro transformace, detaily později. Vnitřní reprezentace vrcholů v homogenních souřadnicích (x, y, z, w). specifikace (x, y, z) reprezentace (x, y, z, 1) (x, y) reprezentace (x, y, 0, 1) 43
43 Grafická primitiva v OpenGL GL_POINTS GL_LINES GL_LINE_STRIP GL_LINE_LOOP V5 V4 V0 V2 V4 V4 V3 V2 V2 V0 V1 GL_TRIANGLES V3 V1 V3 GL_TRIANGLE_STRIP V5 V0 GL_TRIANGLE_FAN V1 PLUS (pro geometry shader a teselace): GL_LINES_ADJACENCY GL_TRIANGLES_ADJACENCY GL_TRIANGLE_STRIP_ADJACENCY GL_PATCH_VERTICES 44
44 Body GL_POINTS Vrcholy jsou specifikovány v poli, vrcholů je libovolný počet Lze specifikovat velikost bodu v počtu pixelů Nezáleží tedy na vzdálenosti bodu ke kameře, velikost bodu bude vždy stejná. v0 v2 v5 v1 v4 v3 45
45 Velikost bodu void glpointsize(glfloat size); nastaví šířku zobrazovaných bodů v pixelech, šířka musí být větší než 0, implicitní hodnota je 1.0 Je-li však nastaveno glenable(gl_program_point_size), příkaz se ignoruje a velikost každého bodu nastavuje vertex shader v proměnné gl_pointsize Dříve možnost zapnout aliasing glenable(gl_point_smooth) Nyní všechny body jako čtverce s texturou point sprite antialiasing disabled antialiasing enabled 46
46 Samostatné úsečky GL_LINES Sekvence samostatných úseček Úsečka je mezi v0 a v1, mezi v2 a v3, mezi v4 a v5 atd. Je-li počet vrcholů n lichý, poslední vrchol je ignorován. v0 v2 v5 v1 v4 v3 n is 6 (even) 47
47 Lomená čára GL_LINE_STRIP Úsečka z v0 do v1, potom z v1 do v2, atd., konečně pak z vn-2 to vn-1 Celkem n-1 line úseček, pokud n=1, nekresli nic Nejsou stanovena žádná omezení na hodnoty vrcholů, úsečky se mohou protínat a body opakovat v0 v2 v5 v1 v4 v3 48
48 Uzavřená posloupnost úseček GL_LINE_LOOP Ozavřená lomená čára tj., jako GL_LINE_STRIP, plus poslední úsečka z vn-1 do v0 uzavírá smyčku v0 v2 v5 v1 v4 v3 49
49 Trojúhelník GL_TRIANGLES zobrazí sekvenci trojúhelníků pomocí vrcholů v0, v1, v2, pak trojúhelník v3, v4, v5, atd. Orientace je dána pořadím vrcholů, ne např. normálou. Pokud n není násobkem tří, je poslední vrchol či oba poslední dva vrcholy ignorovány v2 v3 v5 v4 v0 v1 50
50 TRIANGLE STRIP GL_TRIANGLE_STRIP Zobrazí sekvenci trojúhelníků o vrcholech trojúhelník v0, v1, v2, pak trojúhelník v2, v1, v3 (pozor na pořadí), pak v2, v3, v4, atd. Uspořádání vrcholů zajistí správnou orientaci každého trojúhelníku, takže je správně vykreslena k pozorovateli přivrácená část povrchů objektů n musí být větší nebo rovno třem Dochází k úspoře počtu vrcholů kolik vrcholů je potřeba na jeden trojúhelník, pokud n by bylo velké číslo? v0 v2 v4 v1 v3 v5 51
51 TRIANGLE FAN GL_TRIANGLE_FAN Podobné jako je GL_TRIANGLE_STRIP, ale pořadí vrcholů pro první trojúhelník je v0, v1, v2, pak trojúhelník v0, v2, v3, pak trojúhelník v0, v3, v4, atd. v4 v3 v2 v0 v1 52
52 PATCH Jediné vstupní primitivum pro teselační shadery N-tice vrcholů nebo řídících bodů nějaké plošky GPU pak generuje jemnější reprezentaci např. podle vzdálenosti plošky od pozorovatele (LOD) Viz 2 virchor.sourceforge.net 53
53 Příklady různého uložení hodnot ve VBO 1. Jeden atribut v jednom VBO 2. Dva atributy v jednom VBO za sebou 3. Dva atributy v jednom VBO prokládaně 4. Dva atributy, každý v jiném VBO 54
54 1. Příklad Jeden atribut v jednom VBO příprava dat static const Glfloat g_vertex_buffer_data[] = { -1.0f, -1.0f, 1.0f, -1.0f, -1.0f, 1.0f, 1.0f, 1.0f }; static const GLushort g_element_buffer_data[] = { 0,1,2,3 }; vertex_buffer = make_buffer( //souřadnice vrcholů GL_ARRAY_BUFFER, sizeof(g_vertex_buffer_data), g_vertex_buffer_data ); element_buffer = make_buffer( // indexy vrcholů GL_ELEMENT_ARRAY_BUFFER, sizeof(g_element_buffer_data), g_element_buffer_data ); [Groff] 55
55 1. Příklad rozvinutý make_buffer vertex_buffer = make_buffer( GL_ARRAY_BUFFER, sizeof(g_vertex_buffer_data), g_vertex_buffer_data ); Provede tedy tyto akce (bez pomocné proměnné): glgenbuffers(1, &vertex_buffer ); // 1 glbindbuffer(gl_array_buffer, vertex_buffer ); // 2a glbufferdata(gl_array_buffer, // 3 sizeof(g_vertex_buffer_data), g_vertex_buffer_data, GL_STATIC_DRAW ); glbindbuffer(gl_array_buffer, 0); // 2b 56
56 1. Příklad navázání před vykreslením pos_location = glgetattriblocation(program, "position"); glgenvertexarrays( 1, &vertex_array ); ); // 4 glbindvertexarray( vertex_array ); ); // 5 glbindbuffer(gl_array_buffer, vertex_buffer); // 2 glenablevertexattribarray(pos_location); // 6 glvertexattribpointer( // 7 pos_location, /* VS attribute index */ 2, /* size */ GL_FLOAT, /* type */ GL_FALSE, /* normalized */ sizeof(glfloat)*2, /* stride */ (void*)0 ); /* array buffer offset */ glbindbuffer(gl_element_array_buffer, element_buffer); glbindvertexarray( 0 );//4b [Groff] 57
57 1. Příklad - vykreslení glbindvertexarray( vertex_array ); [Groff] gldrawelements( GL_TRIANGLE_STRIP, /* mode */ 4, /* count */ GL_UNSIGNED_SHORT, /* type */ (void*)0 /* element array buffer offset */ ); glbindvertexarray(0); 58
58 1. Příklad tok geometrických dat na GPU Buffer Object with vertex coordinates Primitive assembly + index 0 index 1 index 2 index 3 in vec4 position; in vec4 position; in vec4 position; Přenos dat z buffer object do vertex shader Přenos dat z vertex shader do jednotky rasterizace 59
59 2. Příklad přidání druhého atributu v jednom VBO static const Glfloat g_vertex_buffer_data[] = { -1.0f, -1.0f, 0.0f, 1.0f, 1.0f, -1.0f, 0.0f, 1.0f, -1.0f, 1.0f, 0.0f, 1.0f, vrcholy 1.0f, 1.0f 0.0f, 1.0f, 0.0f, 0.5f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, barvy 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, }; Doplníme proměnnou ve vertex shaderu A její navázání attributes.position = glgetattriblocation(program, "position"); // VS input attributes.color = glgetattriblocation(program, color"); // VS input [Groff] 60
60 2. Příklad - navázání dvou atributů za sebou glbindbuffer(gl_array_buffer, vertex_buffer); glvertexattribpointer( attributes.position, /* attribute */ 4, /* size - # components */ GL_FLOAT, /* type */ GL_FALSE, /* normalized */ sizeof(glfloat)*4, /* stride */ (void*)0 /* array buffer offset */ ); glvertexattribpointer( attributes.color, /* attribute */ 4, /* size */ GL_FLOAT, /* type */ Přeskočit 4 vrcholy GL_FALSE, /* normalized */ sizeof(glfloat)*4, /* stride */ (void*) sizeof(glfloat)*4*4 /* array buffer offset */ ); [Groff] 61
61 2. Předání dat vrcholu do vertex shaderu Buffer Object with vertex coordinates and color Vertex Shaders offset 0f index 0 index 1 vertexposition vertexcolor in vec4 position; in vec4 color; gl_position index 2 offset 16f index 3 index 0 vertexposition vertexcolor in vec4 position; in vec4 color; gl_position index 1 stride 4f index 2 index 3 vertexposition vertexcolor in vec4 position; in vec4 color; gl_position location 62
62 3. Př. Dva atributy v jednom VBO prokládaně (interleaved) static const Glfloat g_vertex_buffer_data[] = { -1.0f, -1.0f, 0.0f, 1.0f, 0.0f, 0.5f, 0.0f, 1.0f, 1.0f, -1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, -1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, }; vrcholy barvy Prokládání je většinou ta nejrychlejší varianta Doplníme proměnnou ve vertex shaderu to je stejné A její navázání attributes.position = glgetattriblocation(program, "position"); // VS input attributes.color = glgetattriblocation(program, "color"); // VS input 63
63 3. Příklad - použití i druhého atributu glbindbuffer(gl_array_buffer, vertex_buffer); glvertexattribpointer( attributes.position, /* attribute */ 4, /* size */ GL_FLOAT, /* type */ GL_FALSE, /* normalized */ sizeof(glfloat)*8, /* stride */ (void*)0 /* array buffer offset */ ); glvertexattribpointer( attributes.color, /* attribute */ 4, /* size */ GL_FLOAT, /* type */ GL_FALSE, /* normalized */ sizeof(glfloat)*8, /* stride */ (void*) sizeof(glfloat)*4 /* array buffer offset */ ); [Groff] 64
64 4. Příklad dva atributy ve dvou VBO Příklad části programu v C++ // 1. create and bind vertex array object // variable to hold our handle to the vertex array object GLuint vaohandle; // create and bind to a vertex array object (stores the relationship between the buffers and the input attributes) glgenvertexarrays( 1, &vaohandle ); glbindvertexarray(vaohandle); // 2. set the data as arrays float positiondata[] = { -0.8f, -0.8f, 0.0f, 0.8f, -0.8f, 0.0f, 0.0f, 0.8f, 0.0f }; float colordata[] = { 1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f }; // coordinates of triangle vertices // colors of triangle vertices 65
65 4. Příklad dva atributy ve dvou VBO Příklad části programu v C++ // 3. Create and bind the buffer objects, populate them with data GLuint vbohandles[2]; glgenbuffers(2, vbohandles); GLuint positionbufferhandle = vbohandles[0]; // 0. buffer name GLuint colorbufferhandle = vbohandles[1]; // 1. buffer name // Populate the position buffer glbindbuffer(gl_array_buffer, positionbufferhandle); glbufferdata(gl_array_buffer, 9*sizeof(float), positiondata, GL_STATIC_DRAW); // Populate the color buffer glbindbuffer(gl_array_buffer, colorbufferhandle); glbufferdata(gl_array_buffer, 9*sizeof(float), colordata, GL_STATIC_DRAW); 66
66 4. Příklad dva atributy ve dvou VBO Příklad části programu v C++ // 4. Make connection between data on a CPU and GPU // obtain location of each attribute of given name in the shader GLint posloc = glgetattriblocation(programhandle, VertexPosition ); GLint colorloc = glgetattriblocation(programhandle, VertexColor ); // enable the vertex attribute arrays glenablevertexattribarray(posloc); // vertex position glenablevertexattribarray(colorloc); // vertex color // map attribute with index posloc to the position buffer glbindbuffer(gl_array_buffer, positionbufferhandle); glvertexattribpointer(posloc, 3, GL_FLOAT, GL_FALSE, 0, (GLubyte *)NULL); // map attribute with index colorloc to the color buffer glbindbuffer(gl_array_buffer, colorbufferhandle); glvertexattribpointer(colorloc, 3, GL_FLOAT, GL_FALSE, 0, (GLubyte *)NULL); // unbind this VAO glbindvertexarray(vaohandle); 67
67 4. Příklad dva atributy ve dvou VBO Příklad části programu v C++ // 5. Use the data in the application to render them // in the render function, bind to the vertex array object and call gldrawarrays to initiate rendering glbindvertexarray(vaohandle); gldrawarrays(gl_triangles, 0, 3 ); glbindvertexarray(0); 68
68 4. Příklad dva atributy ve dvou VBO Vertex Shaders Vertex Buffer with vertex coordinates index 0 index 1 index 2 vertexposition vertexcolor in vec4 position; in vec4 color; gl_position Vertex Buffer with vertex colors index 3 index 0 index 1 index 2 index 3 vertexposition vertexcolor vertexposition vertexcolor in vec4 position; in vec4 color; in vec4 position; in vec4 color; gl_position gl_position location 69
69 Zajímavé odkazy David Wolff: OpenGL 4.0 Shading Language Cookbook. Packt Publishing, 2011, ISBN Richard S. Wright, Nicholas Haemel, Graham Sellers, Benjamin Lipchak: OpenGL SuperBible: Comprehensive Tutorial and Reference. 5th ed., Addison-Wesley Professional, 2010, ISBN Ed Angel, Dave Shreiner: An Introduction to Modern OpenGL Programming, SIGGRAPH 2011 tutorial, OpenGL.pptx Joe Groff. An intro to modern OpenGL. Updated July 14, Vertex Array Object na OpenGL Wiki: Vertex Specification na OpenGL Wiki: Sergiu Craitoiu: Tutorial: Modern OpenGL, OpenGL From Zero To Hero, 71
Základy programování shaderů v OpenGL Část 2 - přenos dat
Základy programování shaderů v OpenGL Část 2 - přenos dat Petr Felkel, Jaroslav Sloup Katedra počítačové grafiky a interakce, ČVUT FEL místnost KN:E-413 (Karlovo náměstí, budova E) E-mail: felkel@fel.cvut.cz
Připravil: David Procházka. Vertex Buffer Objects
30. září 2013, Brno Připravil: David Procházka Vertex Buffer Objects Počítačová grafika 2 Obsah přednášky Strana 2 / 22 Obsah přednášky 1 Obsah přednášky 2 Vertex Buffer Objects 3 Příklady 4 Shrnutí Obsah
Fakulta informačních technologíı. IZG cvičení 6. - Zobrazování 3D scény a základy OpenGL 1 / 38
IZG cvičení 6. - Zobrazování 3D scény a základy OpenGL Tomáš Milet Ústav počítačové grafiky a multimédíı Fakulta informačních technologíı Vysoké učení technické Brno IZG cvičení 6. - Zobrazování 3D scény
Připravil: David Procházka. Vykreslování grafických primitiv
24. září 2013, Brno Připravil: David Procházka Vykreslování grafických primitiv Počítačová grafika 2 Vykreslování grafických primitiv Strana 2 / 38 Obsah přednášky 1 Vykreslování grafických primitiv 2
NPGR019. Geometry & tessellation shaders. MFF UK Praha. Vykreslování v OpenGL Tessellation shaders Geometry shaders Literatura
Hardware pro počítačovou grafiku NPGR019 Geometry & tessellation shaders Jan Horáček http://cgg.mff.cuni.cz/ MFF UK Praha 2012 Jan Horáček Geometry & Tesselation 1 / 42 Obsah Propojení Vykreslování Instancované
Fakulta informačních technologíı. Rendering Seminář 1. 1 / 28
Rendering Seminář 1. Tomáš Milet, Tomáš Starka Ústav počítačové grafiky a multimédíı Fakulta informačních technologíı Vysoké učení technické Brno Rendering Seminář 1. 1 / 28 OpenGL OpenGL je architektura
Základy OpenGL Josef Pelikán CGG MFF UK Praha. OpenGL / 34
Základy OpenGL 2003-2016 Josef Pelikán CGG MFF UK Praha pepca@cgg.mff.cuni.cz http://cgg.mff.cuni.cz/~pepca/ 1 / 34 Pokroky v hardware 3D akcelerace běžná i v konzumním sektoru hry, multimedia, i mobilní
Připravil: David Procházka. Shadery
5. října 2015, Brno Připravil: David Procházka Shadery Počítačová grafika 2 Obsah přednášky Strana 2 / 29 Obsah přednášky 1 Obsah přednášky 2 Shadery 3 Shrnutí Obsah přednášky Strana 3 / 29 Obsah přednášky
Základy programování shaderů v OpenGL část 1 program
Základy programování shaderů v OpenGL část 1 program Petr Felkel, Jaroslav Sloup Katedra počítačové grafiky a interakce, ČVUT FEL místnost KN:E-413 (Karlovo náměstí, budova E) E-mail: felkel@fel.cvut.cz
Android OpenGL. Práce s texturami
Android OpenGL Práce s texturami Textura Obrázek, který jsme schopní nanášet na 3D objekty S použitím shaderů mnohem víc než to Může obsahovat jiné vlastnosti povrchu, než jen barvu (reliéf, lesklost,
TAM. Prezentace přednášek. Ústav počítačové grafiky a multimédií
TAM Prezentace přednášek Ústav počítačové grafiky a multimédií Grafika na mobilních zařízeních OpenGL ES 2.0 Motto If Edison had a needle to find in a haystack, he would proceed at once with the diligence
27. listopadu 2013, Brno Připravil: David Procházka
27. listopadu 2013, Brno Připravil: David Procházka Texturování Počítačová grafika 2 Obsah přednášky Strana 2 / 37 Obsah přednášky 1 Obsah přednášky 2 Texturování 3 Multum In Parvo 4 Modulace textury ve
Transformace (v OpenGL) příklady a knihovna GLM
Transforace (v OpenGL) příklady a knihovna GLM Petr Felkel, Jaroslav Sloup Katedra počítačové grafiky a interakce, ČVUT FEL ístnost KN:E-413 (Karlovo náěstí, budova E) E-ail: felkel@fel.cvut.cz Poslední
Programování grafiky ÚVOD
Programování grafiky ÚVOD Petr Felkel Katedra počítačové grafiky a interakce, ČVUT FEL místnost KN:E-413 (Karlovo náměstí, budova E) E-mail: felkel@fel.cvut.cz S použitím materiálů Bohuslava Hudce, Jaroslava
Textury. Petr Felkel, Jaroslav Sloup a Vlastimil Havran
Textury Petr Felkel, Jaroslav Sloup a Vlastimil Havran Katedra počítačové grafiky a interakce, ČVUT FEL místnost KN:E-413 na Karlově náměstí E-mail: felkel@fel.cvut.cz Poslední změna: 25.3.2015 Textury
Android OpenGL. Pokročilé shadery
Android OpenGL Pokročilé shadery Struktura programu Reálná aplikace zpravidla obsahuje více než jeden shader Kód pro inicializaci shaderu je dobré mít ve třídě (méně opisování stejného kódu) Shadery není
Programování grafiky ÚVOD
Programování grafiky ÚVOD Petr Felkel Katedra počítačové grafiky a interakce, ČVUT FEL místnost KN:E-413 (Karlovo náměstí, budova E) E-mail: felkel@fel.cvut.cz S použitím materiálů Bohuslava Hudce, Jaroslava
Hierarchický model. 1995-2013 Josef Pelikán CGG MFF UK Praha. pepca@cgg.mff.cuni.cz http://cgg.mff.cuni.cz/~pepca/ 1 / 16
Hierarchický model 1995-2013 Josef Pelikán CGG MFF UK Praha pepca@cgg.mff.cuni.cz http://cgg.mff.cuni.cz/~pepca/ 1 / 16 Hierarchie v 3D modelování kompozice zdola-nahoru složitější objekty se sestavují
Připravil: David Procházka. Základy OpenGL
24. září 2013, Brno Připravil: David Procházka Základy OpenGL Počítačová grafika 2 Grafické knihovny Strana 2 / 25 Obsah přednášky 1 Grafické knihovny 2 Vykreslování rastrového obrazu 3 OpenGL aplikace
Reprezentace 3D scény
Reprezentace 3D scény 1995-2016 Josef Pelikán CGG MFF UK Praha pepca@cgg.mff.cuni.cz http://cgg.mff.cuni.cz/~pepca/ 1 / 36 Metody reprezentace 3D scén objemové reprezentace přímé informace o vnitřních
Třída DrawingTool. Obrázek 1: Prázdné okno připravené pro kreslení
Třída DrawingTool strana 1 1. Základ Třída DrawingTool Třída DrawingTool je určena k jednoduchému kreslení pomocí několika základních příkazů do grafického okna zadaných rozměrů (nastavení v konstruktoru),
Počítačová grafika 2 (POGR2)
Počítačová grafika 2 (POGR2) Pavel Strachota FJFI ČVUT v Praze 19. února 2015 Kontakt Ing. Pavel Strachota, Ph.D. Katedra matematiky Trojanova 13, místnost 033a E-mail: pavel.strachota@fjfi.cvut.cz WWW:
Programování shaderů GLSL
Programování shaderů GLSL Příklad vertex shader Tutor1-Flat Změna geometrie ve VS Nastavení z podle hodnoty získané z aplikace uniform App: loc=gl.glgetuniformlocation(sp,"ftime0_x"); gl.gluniform1f(loc,time);
Úvod do programovacích jazyků (Java)
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích
Reflections, refractions, interreflections
:: gs Reflections, refractions, interreflections Odrazy a lomy světla Grafické systémy David Sedláček 2004 :: fyzika Zákon odrazu Lom světla Snellův zákon Fresnelova rovnice poměr prošlého a odraženého
XNA Game Studio 3.1. Tomáš Herceg Microsoft Most Valuable Professional Microsoft Student Partner http://www.vbnet.cz
XNA Game Studio 3.1 Tomáš Herceg Microsoft Most Valuable Professional Microsoft Student Partner http://www.vbnet.cz Agenda Úvod, motivace Struktura XNA Content pipeline Součásti XNA Paleta funkcí Herní
14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.
Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání
Datové typy v Javě. Tomáš Pitner, upravil Marek Šabo
Datové typy v Javě Tomáš Pitner, upravil Marek Šabo Úvod k datovým typům v Javě Existují dvě základní kategorie datových typů: primitivní a objektové Primitivní v proměnné je uložena přímo hodnota např.
PB161 Programování v jazyce C++ Přednáška 4
PB161 Programování v jazyce C++ Přednáška 4 Přetěžování funkcí Konstruktory a destruktory Nikola Beneš 9. října 2017 PB161 přednáška 4: přetěžování funkcí, konstruktory, destruktory 9. října 2017 1 / 20
Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo
Statické proměnné a metody Tomáš Pitner, upravil Marek Šabo Úvod Se statickou metodou jsme se setkali už u úplně prvního programu - Hello, world! public class Demo { public static void main(string[] args)
Co je grafický akcelerátor
Co je grafický akcelerátor jednotka v osobním počítači či herní konzoli přebírá funkce hlavního procesoru pro grafické operace graphics renderer odlehčuje hlavnímu procesoru paralelní zpracování vybaven
ak. rok 2013/2014 Michal Španěl, spanel@fit.vutbr.cz 24.2.2014
Zadání projektu Texturování Základy počítačové grafiky (IZG) ak. rok 2013/2014 Michal Španěl, spanel@fit.vutbr.cz 24.2.2014 1 První seznámení Cílem projektu je pochopení praktických souvislostí témat přednášek
Zobrazování a osvětlování
Zobrazování a osvětlování Petr Felkel Katedra počítačové grafiky a interakce, ČVUT FEL místnost KN:E-413 na Karlově náměstí E-mail: felkel@fel.cvut.cz S použitím materiálů Bohuslava Hudce, Jaroslava Sloupa
Připravil: David Procházka. Projekce
15. října 2013, Brno Připravil: David Procházka Projekce Počítačová grafika 2 Projekce Strana 2 / 38 Obsah přednášky 1 Projekce 2 Ortografická projekce 3 Perspektivní projekce 4 Nastavení pohledové matice
2 Grafický výstup s využitím knihovny
2 Grafický výstup s využitím knihovny Studijní cíl Tento blok je věnován základním principům při vytváření grafického výstupu pomocí standardních metod, které poskytuje grafické rozhraní. V textu budou
Jana Dannhoferová Ústav informatiky, PEF MZLU
Počítačová grafika 1. Definice oblasti souvisí: a) s definováním množiny všech bodů, které náleží do hranice a zároveň do jejího vnitřku b) s popisem její hranice c) s definováním množiny všech bodů, které
Zdroj: http://www.root.cz/clanky/pravda-a-myty-o-gifu/
Zdroj: http://www.root.cz/clanky/pravda-a-myty-o-gifu/ Bitmapový formát (rastrový obrázek) Většina z používaných grafických formátů (JPEG, PNG, TGA, BMP) obsahuje popis rastrového obrázku jako celku ukládají
V této příloze je podrobně popsána struktura XML dokumentu s mapou (viz kapitolu 5.3), příklad tohoto XML dokumentu je na přiloženém CD v souboru
Příloha 1: Struktura XML dokumentu V této příloze je podrobně popsána struktura XML dokumentu s mapou (viz kapitolu 5.3), příklad tohoto XML dokumentu je na přiloženém CD v souboru /mapa/map.xml. Obsah
Pokročilé programování v jazyce C pro chemiky (C3220) 3D grafika v knihovně Qt
Pokročilé programování v jazyce C pro chemiky (C3220) 3D grafika v knihovně Qt Rozhraní pro 3D grafiku Běžné grafické knihovny zpravidla podporují pouze 2D grafický výstup Pro 3D grafický výstup jsou využívány
PostGIS Topology. Topologická správa vektorových dat v geodatabázi PostGIS. Martin Landa
Přednáška 5 Topologická správa vektorových dat v geodatabázi PostGIS 155UZPD Úvod do zpracování prostorových dat, zimní semestr 2018-2019 Martin Landa martin.landa@fsv.cvut.cz Fakulta stavební ČVUT v Praze
Rastrová reprezentace
Rastrová reprezentace Zaměřuje se na lokalitu jako na celek Používá se pro reprezentaci jevů, které plošně pokrývají celou oblast, případně se i spojitě mění. Používá se i pro rasterizované vektorové vrstvy,
Databázové systémy Cvičení 5.2
Databázové systémy Cvičení 5.2 SQL jako jazyk pro definici dat Detaily zápisu integritních omezení tabulek Integritní omezení tabulek kromě integritních omezení sloupců lze zadat integritní omezení jako
FPC - Převodník pro čínské čtečky F17 a F18 - podrobný popis služeb a příkazů -
FPC - Převodník pro čínské čtečky F17 a F18 - podrobný popis služeb a příkazů - verze 1.0, 16.5.2011 Jiří Libra, jiri.libra@gmail.com Příkazy služby FPCManagement Formát dat služby FPCManagement v protokolu
Programování v C++ 3, 3. cvičení
Programování v C++ 3, 3. cvičení úvod do objektově orientovaného programování 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Dokončení spojového
Textury v real-time grafice. 2004-2005 Josef Pelikán, MFF UK Praha http://cgg.ms.mff.cuni.cz/~pepca/ Josef.Pelikan@mff.cuni.cz
Textury v real-time grafice 2004-2005 Josef Pelikán, MFF UK Praha http://cgg.ms.mff.cuni.cz/~pepca/ Josef.Pelikan@mff.cuni.cz Textury vylepšují vzhled povrchu těles modifikace barvy ( bitmapa ) dojem hrbolatého
8 Třídy, objekty, metody, předávání argumentů metod
8 Třídy, objekty, metody, předávání argumentů metod Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost třídám a objektům, instančním
SOFTWARE NA ZPRACOVÁNÍ MRAČEN BODŮ Z LASEROVÉHO SKENOVÁNÍ. Martin Štroner, Bronislav Koska 1
SOFTWARE NA ZPRACOVÁNÍ MRAČEN BODŮ Z LASEROVÉHO SKENOVÁNÍ SOFTWARE FOR PROCESSING OF POINT CLOUDS FROM LASER SCANNING Martin Štroner, Bronislav Koska 1 Abstract At the department of special geodesy is
Převod prostorových dat katastru nemovitostí do formátu shapefile
GIS Ostrava 2009 25. - 28. 1. 2009, Ostrava Převod prostorových dat katastru nemovitostí do formátu shapefile Karel Janečka1, Petr Souček2 1Katedra matematiky, Fakulta aplikovaných věd, ZČU v Plzni, Univerzitní
Téma: Arkanoid. X36SOJ Strojově orientované jazyky Semestrální práce. Vypracoval: Marek Handl Datum: červen 2006
Vypracoval: Marek Handl Datum: červen 2006 X36SOJ Strojově orientované jazyky Semestrální práce Téma: Arkanoid Úvod Program je verzí klasické hry Arkanoid. Na herní ploše jsou rozloženy kostičky, které
Struktura programu v době běhu
Struktura programu v době běhu Miroslav Beneš Dušan Kolář Struktura programu v době běhu Vztah mezi zdrojovým programem a činností přeloženého programu reprezentace dat správa paměti aktivace podprogramů
Zobrazování terénu. Abstrakt. 1. Úvod. 2. Vykreslování terénu
Zobrazování terénu Jan Vaněk, Bruno Ježek Universita Obrany, Fakulta vojenského zdravotnictví, Katedra všeobecně vzdělávacích oborů e-mail: vanek@pmfhk.cz; jezek@pmfhk.cz Abstrakt Vizualizace terénu je
Základy programování (IZP)
Základy programování (IZP) Šesté počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz 6. týden
Problém identity instancí asociačních tříd
Problém identity instancí asociačních tříd Autor RNDr. Ilja Kraval Ve školeních a také následně po jejich ukončení se stále častěji objevují dotazy, které se týkají tzv. identity instancí asociační třídy.
GENEROVÁNÍ KÓDU 9. SHRNUTÍ - PŘÍKLAD POSTUPU PŘEKLADU VSTUPNÍHO PROGRAMU (ZA POUŽITÍ DOSUD ZNÁMÝCH TECHNIK)
GENEROVÁNÍ KÓDU 9. SHRNUTÍ - PŘÍKLAD POSTUPU PŘEKLADU VSTUPNÍHO PROGRAMU (ZA POUŽITÍ DOSUD ZNÁMÝCH TECHNIK) 2011 Jan Janoušek MI-GEN Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Úvod
První kroky s METEL IEC IDE
První kroky s poskytuje programování v IEC 61131-3 jazycích, podporuje jak grafickou tak textovou podobu. Umožňuje vytvářet, upravovat a ladit IEC 61131-3 (ST, LD, IL, FBD) programy pro řídicí jednotky
Návod k použití softwaru Solar Viewer 3D
Návod k použití softwaru Solar Viewer 3D Software byl vyvinut v rámci grantového projektu Technologie a systém určující fyzikální a prostorové charakteristiky pro ochranu a tvorbu životního prostředí a
3D akcelerátory historie a architektura
3D akcelerátory historie a architektura 2003-2010 Josef Pelikán, MFF UK Praha http://cgg.mff.cuni.cz/~pepca/ pepca@cgg.mff.cuni.cz NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca
IUJCE 07/08 Přednáška č. 6
Správa paměti Motivace a úvod v C (skoro vždy) ručně statické proměnné o datový typ, počet znám v době překladu o zabírají paměť po celou dobu běhu programu problém velikosti definovaných proměnných jak
Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky. haptického pera
Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky Bakalářská práce Ohmatávání a modifikace geometrických modelů pomocí haptického pera Plzeň, 2013 Barbora
Úloha 1. Text úlohy. Vyberte jednu z nabízených možností: NEPRAVDA. PRAVDA Úloha 2. Text úlohy
Úloha 1 Úloha 2 Otázka se týká předchozího kódu. Určete pravdivost následujícího tvrzení: "Pro každý bod vytvoří úsečku mezi ním a středem panelu." Úloha 3 Otázka se týká předchozího kódu. Určete pravdivost
Programování v C++ 2, 4. cvičení
Programování v C++ 2, 4. cvičení statické atributy a metody, konstruktory 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Přístupová práva
Masivně paralelní zpracování obrazu v prostředí systému VisionLab. 25. 9. 2013 Liberec Roman Cagaš, rc@mii.cz
Masivně paralelní zpracování obrazu v prostředí systému VisionLab 25. 9. 2013 Liberec Roman Cagaš, rc@mii.cz Moravské přístroje a.s. - oblasti vývoje a výroby Prostředí pro vývoj aplikací Software pro
Úvod Typy promítání Matematický popis promítání Implementace promítání Literatura. Promítání. Pavel Strachota. FJFI ČVUT v Praze
Promítání Pavel Strachota FJFI ČVUT v Praze 30. března 2011 Obsah 1 Úvod 2 Typy promítání 3 Matematický popis promítání 4 Implementace promítání Obsah 1 Úvod 2 Typy promítání 3 Matematický popis promítání
Základy programování (IZP)
Základy programování (IZP) Jedenácté počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Gabriela Nečasová, inecasova@fit.vutbr.cz
Práce s binárními soubory. Základy programování 2 Tomáš Kühr
Práce s binárními soubory Základy programování 2 Tomáš Kühr Binární soubory Mohou mít libovolnou strukturu Data jsou uložena ve stejné podobě jako v paměti za běhu programu Výhody: Pro uložení je potřeba
Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií
1 Fakulta elektrotechniky a informatiky Katedra softwarových technologií 12. října 2009 Organizace výuky Přednášky Teoretické základy dle normy jazyka C Cvičení Praktické úlohy odpřednášené látky Prostřední
Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných
Tematický celek 03 3.1 Proměnné Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace. 3.1.1 Deklarace proměnných Dim jméno_proměnné [As typ] - deklarace uvnitř procedury platí pouze pro
Úvodem... 9 Kapitola 1 Karetních
Úvodem... 9 Základní znalosti o programovacích jazycích...10 Jazyk C# a platforma.net...10 Visual C# 2010 Express...11 Instalace platformy.net 4.0 a Visual C# 2010 Express...11 Zdrojový kód aplikací...12
Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole
Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole Příkaz switch Příkaz switch provede příslušnou skupinu příkazů na základě hodnoty proměnné (celočíselné
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV POČÍTAČOVÉ GRAFIKY A MULTIMÉDIÍ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER GRAPHICS AND
GIS1-7. cvičení. listopad 2008. ČVUT v Praze, Fakulta stavební, katedra mapování a kartografie. Obsah. Založení nového souboru s vektorovými daty
ČVUT v Praze, Fakulta stavební, katedra mapování a kartografie listopad 2008 Obsah prezentace 1 2 3 4 5 6 Měli bychom umět pracovat s rastrovými daty rozumět problematice vektorových dat u obou typů dat
umenugr JEDNOTKA PRO VYTVÁŘENÍ UŽIVATELSKÝCH GRAFICKÝCH MENU Příručka uživatele a programátora
umenugr JEDNOTKA PRO VYTVÁŘENÍ UŽIVATELSKÝCH GRAFICKÝCH MENU Příručka uživatele a programátora SofCon spol. s r.o. Střešovická 49 162 00 Praha 6 tel/fax: +420 220 180 454 E-mail: sofcon@sofcon.cz www:
MyIO - webový komunikátor
MyIO - webový komunikátor Technická příručka verze dokumentu 1.0 FW verze modulu 1.4-1 - Obsah 1 MyIO modul... 3 2 Lokální webové rozhraní... 3 2.1 Start, první přihlášení... 3 2.2 Home úvodní strana MyIO...
Hardware pro počítačovou grafiku NPGR019
Hardware pro počítačovou grafiku NPGR019 Matematika pro real-time grafiku Josef Pelikán Jan Horáček http://cgg.mff.cuni.cz/ MFF UK Praha 2012 Obsah 1 Homogenní souřadnice, maticové transformace Převod
Michal Krátký. Tvorba informačních systémů, 2008/2009. Katedra informatiky VŠB Technická univerzita Ostrava. Tvorba informačních systémů
Tvorba informačních systémů 1/18 Tvorba informačních systémů Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2008/2009 Tvorba informačních systémů 2/18 Úvod
PB161 Programování v jazyce C++ Přednáška 9
PB161 Programování v jazyce C++ Přednáška 9 Právo friend Přetěžování operátorů Nikola Beneš 16. listopadu 2015 PB161 přednáška 9: friend, přetěžování operátorů 16. listopadu 2015 1 / 30 Reklama PB173 Tematicky
programování formulářů Windows
C# a WinForms programování formulářů Windows M i c r o s o f t. N E T D e v e l o p m e n t S e r i e s Chris Sells Microsoft.NET Development Series Windows Forms Programming in C# Authorized translation
Osnova. GIOP a IIOP IDL IOR POA. IDL Klient Server. 2 Historie. 3 Princip a základní pojmy. 4 Implementace. 5 Aplikace CORBA
Common Object Request Broker Architecture FJFI ČVUT 9. 12. 2010 Osnova 1 2 3 4 5 Standard umožňující propojení aplikací psaných v různých jazycích a běžících na různých strojích a architekturách. Definuje
Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky
Vyučovací hodina 1vyučovací hodina: Opakování z minulé hodiny Nová látka Procvičení nové látky Shrnutí 5 min 20 min 15 min 5 min 2vyučovací hodiny: Opakování z minulé hodiny Nová látka Procvičení nové
Geekovo Minimum. Počítačové Grafiky. Nadpis 1 Nadpis 2 Nadpis 3. Božetěchova 2, Brno
Geekovo Minimum Nadpis 1 Nadpis 2 Nadpis 3 Počítačové Grafiky Jméno Adam Příjmení Herout Vysoké Vysoké učení technické učení technické v Brně, v Fakulta Brně, Fakulta informačních informačních technologií
Základy 3D modelování a animace v CGI systémech Cinema 4D C4D
EVROPSKÝ SOCIÁLNÍ FOND Základy 3D modelování a animace v CGI systémech Cinema 4D C4D PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI Mgr. David Frýbert 2013 CGI systémy Computer - generated imagery - aplikace
Základy programování (IZP)
Základy programování (IZP) Deváté počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz 27.11.2017,
Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal
Databázové systémy - SQL * definice dat * aktualizace * pohledy Tomáš Skopal Osnova přednášky definice dat definice (schémat) tabulek a integritních omezení CREATE TABLE změna definice schématu ALTER TABLE
Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář
Vazba (binding) Tabulka symbolů Miroslav Beneš Dušan Kolář vazba = spojení mezi entitou a vlastností okamžik vazby (binding time) při návrhu jazyka při implementaci jazyka během překladu/spojování/zavádění
Manuál k aplikaci FieldGIS v.2.27
Manuál k aplikaci FieldGIS v.2.27 Petr Pala Copyright 2008 CENIA, laboratoř GIS 1. Úvod 1. Systémové požadavky 2. Části základního okna aplikace 1. Menu 1.1. File 1.2. Tools 1.3. Hlavní lišta 2. Editor
Elektronické publikování - prezentace. 23. dubna 2009 VŠB - TUO. Beamer - grafické zpracování prezentace. Rostislav Šuta, sut017.
Beamer - Elektronické publikování - VŠB - TUO 23. dubna 2009 Obsah 1 2 3 4 5 6 Obsah 1 2 3 4 5 6 schémata barvy písma změna fontu vnitřní schémata vnější schémata Obsah Prezentace bez navigace e stromovou
Vektorové grafické formáty
Vektorové grafické formáty Semestrální práce na předmět KAPR Fakulta stavební ČVUT 28.5.2009 Vypracovali: Petr Vejvoda, Ivan Pleskač Obsah Co je to vektorová grafika Typy vektorových formátů Souborový
Obsah. Základy práce s rastry. GIS1-5. cvičení. ČVUT v Praze, Fakulta stavební, katedra mapování a kartografie
ČVUT v Praze, Fakulta stavební, katedra mapování a kartografie říjen 2010 Obsah prezentace 1 2 3 4 Měli bychom umět ovládat prostorové analýzy překryvné (overlay) a bĺızkostní (buffer) funkce umět kombinovat
Úvod do Matlabu. Praha & EU: Investujeme do vaší budoucnosti. 1 / 24 Úvod do Matlabu
Vytěžování dat, cvičení 1: Úvod do Matlabu Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Fakulta elektrotechnická, ČVUT 1 / 24 Úvod do Matlabu Proč proboha Matlab? Matlab je SW pro
Rasterizace je proces při kterém se vektorově definovaná grafika konvertuje na. x 2 x 1
Kapitola 4 Rasterizace objektů Rasterizace je proces při kterém se vektorově definovaná grafika konvertuje na rastrově definované obrazy. Při zobrazení reálného modelu ve světových souřadnicích na výstupní
8. Zpracování dotazu. J. Zendulka: Databázové systémy 8 Zpracování dotazu 1
8. Zpracování dotazu 8.1. Podstata optimalizace zpracování dotazu... 2 8.2. Postup optimalizace zpracování dotazu... 3 8.2.1. Implementace spojení... 5 8.2.2. Využití statistik databáze k odhadu ceny dotazu...11
Generování vnitřní reprezentace programu
Generování vnitřní reprezentace programu Miroslav Beneš Dušan Kolář Možnosti překladu Interpretace Okamžité provádění programu Překlad do instrukcí procesoru Závislost na konkrétním typu procesoru Překlad
Přednáška. Vstup/Výstup. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012
Přednáška Vstup/Výstup. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012 Příprava studijního programu Informatika je podporována projektem financovaným z Evropského
Úvod do programování - Java. Cvičení č.4
Úvod do programování - Java Cvičení č.4 1 Sekvence (posloupnost) Sekvence je tvořena posloupností jednoho nebo více příkazů, které se provádějí v pevně daném pořadí. Příkaz se začne provádět až po ukončení
Hardware pro počítačovou grafiku NPGR019
Hardware pro počítačovou grafiku NPGR019 3D akcelerátory - historie a architektura Josef Pelikán Jan Horáček http://cgg.mff.cuni.cz/ MFF UK Praha 2012 Pokroky v hardware 3D akcelerace běžná i v konzumním
Bitové operátory a bitová pole. Úvod do programování 2 Tomáš Kühr
Bitové operátory a bitová pole Úvod do programování 2 Tomáš Kühr Bitové operátory Provádějí danou operaci s jednotlivými bity svých operandů Operandy bitových operátorů mohou být pouze celočíselné Vyhodnocení
IAJCE Přednáška č. 8. double tprumer = (t1 + t2 + t3 + t4 + t5 + t6 + t7) / 7; Console.Write("\nPrumerna teplota je {0}", tprumer);
Pole (array) Motivace Častá úloha práce s větším množstvím dat stejného typu o Př.: průměrná teplota za týden a odchylka od průměru v jednotlivých dnech Console.Write("Zadej T pro.den: "); double t = Double.Parse(Console.ReadLine());
MySQL sežere vaše data
MySQL sežere vaše data David Karban @davidkarban AWS Certified http://davidkarban.cz/ It s not a bug, it s a feature syndrome Pravděpodobně znáte indexy. Urychlují dotazy. Mohou být řazené, vzestupně i
Struktura scény. Petr Felkel Katedra počítačové grafiky a interakce, ČVUT FEL místnost KN:E-413 (Karlovo náměstí, budova E)
Struktura scény Petr Felkel Katedra počítačové grafiky a interakce, ČVUT FEL místnost KN:E-413 (Karlovo náměstí, budova E) E-mail: felkel@fel.cvut.cz S použitím materiálů Bohuslava Hudce, Jaroslava Sloupa
Úvod do GIS. Prostorová data I. část. Pouze podkladová prezentace k přednáškám, nejedná se o studijní materiál pro samostatné studium.
Úvod do GIS Prostorová data I. část Pouze podkladová prezentace k přednáškám, nejedná se o studijní materiál pro samostatné studium. Karel Jedlička Prostorová data Analogová prostorová data Digitální prostorová