Grafikus hardver/szoftver alapok Szirmay-Kalos László.

Slides:



Advertisements
Hasonló előadás
2D grafikus rendszerek Szirmay-Kalos László. 2D grafikus editor: GUI, use-case, dinamikus modell L L L R LD LU MouseLDown első pont MouseLDown második...
Advertisements

GPU Szirmay-Kalos László.
2D grafikus rendszerek Szirmay-Kalos László.
OpenGL Szirmay-Kalos László In theory, there is no difference
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.
Számítógépes grafika OpenGL 1. gyakorlat.
Fejlett grafikai algoritmusok Megvilágítási modellek
Rendering pipeline Ogre3D
2D grafikus rendszerek Szirmay-Kalos László.
OpenGL 4 shaderek, GLSL Valasek Gábor
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.
Képek, képfeldolgozás Szirmay-Kalos László.
Grafikus szoftver Szirmay-Kalos László. Interaktív programok felépítése input csővezeték output csővezeték.
Térinformatika a Soproni Vízmű Rt. - nél Bódis Gábor Varga Ákos Sopron és Környéke Víz- és Csatornamű Rt.
Perifériák Készítette: Friss István Dávid. A perifériák csoportosítása Bemeneti (Input) eszközök Kimeneti (Output) eszközök Be-és kimeneti (I/O) eszközök.
AZ ISKOLA–EGÉSZSÉG KÖZPONT – FORMA ÉS TARTALOM A TÁMOP KIEMELT PROJEKT KÖZNEVELÉSI ALPROJEKTJÉNEK CÉLJAI, A MEGVALÓSÍTÁS MÓDSZEREI ÉS A SZAKMAI.
Microsoft Windows XP Operációs rendszer. Egyéb operációs rendszerek MAC OS OS/2 UNIX LINUX.
2. A szoftverek csoportosítása: a. Rendszerszoftverek: A számítógép zavartalan mûködését biztosítják: BIOS (alapvetõ bemeneti/kimeneti rendszer): olyan.
Forrás: Reiter István C_Sharp programozás lépésről lépésre (frissített tartalommal )
Nem csak szövegszerkeszt ő virtuózoknak Az Open Office.org 2.0 béta verzió Bándliné Utasi Mária Writer.
Microsoft Photo Story. Mi is ez?  A Microsoft Photo Story egy alkalmazás, amelyet a Microsoft, a világ egyik legnagyobb szoftvergyártó cége készített.
avagy a háromszög technika
Szécsi László 3D Grafikus Rendszerek 15. előadás
06. GYAKORLAT LCD kijelző.
OLVASÓSZOLGÁLATI TEREK
Operációs rendszerek.
Lighting III.
Általános célú számítások a GPU-n
Scilab programozás alapjai
A grafikus hardware programozása
OpenGL 2. gyakorlat Valasek Gábor
I-071.
Szécsi László 3D Grafikus Rendszerek 4. labor
A KINOVEA mozgáselemző rendszer használata
Vizualizáció és képszintézis
LabVIEW bevezetéstől a feszültség-áram karakterisztikáig Vida Andrea
Vizualizáció és képszintézis
Szécsi László 3D Grafikus Rendszerek 14. előadás
OpenGL IV.
Szécsi László 3D Grafikus Rendszerek 1. labor
Tömör testmodellek globális kapcsolatai
Vizualizáció és képszintézis
Lovagi Játékok projekt
GPGPU – CUDA 2..
OpenGL III.
Unity.
Kamera, 3D, transzformációk Szécsi László
Adatszerkezetek.
OpenGL II.
? A modell illesztése a kísérleti adatokhoz
A honlapod a holnapod? ,illetve Data is the new Oil?
SOFTWARE SZOFTVER.
OpenGL kiterjesztések (extensions)
Ptolemaiosztól Newton-ig
OpenGL V.
3. A robot képernyőmenüje
Kimeneti egységek Nyomtatók.
Informatikai gyakorlatok 11. évfolyam
Elektronikai Áramkörök Tervezése és Megvalósítása
B M Java Programozás 4. Gy: Java GUI IT A N Tipper, MVC kalkulátor
B M Java Programozás 9. Gy: Java alapok IT A N Adatkezelő 5.rész
Neumann elvek és a Neumann elvű számítógép felépítése
Természetismereti kirándulásra való felkészüléshez javaslat
Mesh from file, OrthoCamera, PerspectiveCamera
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Bevezetés Tematika Számonkérés Irodalom
Rendszerfejlesztés gyak
OpenBoard Kezelő Tananyag közzététele a KRÉTA rendszerben.
Előadás másolata:

Grafikus hardver/szoftver alapok Szirmay-Kalos László

Kép frissités rasztertár Pixel op Raszteri- záció Vágás View transzf Modell transzf. Eszköz- képtér Virtuális világ Kimeneti csővezeték Bemeneti csővezeték kamera vektorizáció Viewport transzf Funkcionális modell Proj. transzf Inv. Viewport transzf Inv. Proj. transzf Inv. View transzf Inv. Modell transzf. Fejre állítva!

rajzolás Rasztertár Operációs és ablakozó rendszer (Windows) MouseLD() MouseLU() MouseMov() PutPixel() Alkalmazás freeglut Alkalmazás (CPU) Rajzolás (GPU) Grafikus könyvtár: OpenGL Szoftver architektúra gl…3dv( ) glut…( )

Operációs és ablakozó rendszer (Windows) freeglut main DisplayFunc KeyboadFunc IdleFunc OpenGL grafikus hardver applikáció Ablak létrehozás callback regisztráció callback-ek SpecialFunc Reshape MouseFunc MotionFunc KeyboadUpFunc Esemény kezelés

VAO Pixel szín OpenGL 3 x y z=0 h=1 rasztertár Normalizált képernyő -1,-1 1,1 Pixel árnyaló (fragment shader) Model mátrix Projection mátrix View mátrix MVP képernyő Pixel cím Vágás, Homogén osztás Viewport transzform Raszterizáció Vágás, Homogén osztás Viewport transzform Raszterizáció gl_Position reg1 reg2 reg3 reg4 … gl_FragCoord reg1 reg2 reg3 reg4 … Vágás, homdiv Viewport tr. Rasztiráczó Csúcspont árnyaló (vertex shader) reg1, reg2, reg3 …: AttribArray VBO Vertex Buffer Object glViewport(left,bottom,width,height) Pixel szín + vertex attribútumok

Csúcspont adatfolyamok VBO 0 x1, y1 R1, G1, B1 x2, y2 R2, G2, B2 x3, y3 R3, G3, B3 VB0 0 x1, y1 x2, y2 x3, y3 VBO 1 R1, G1, B1 R2, G2, B2 R3, G3, B3 VAO AttribArray 0AttribArray 1 Vertex shader in var1 VAO in var2 glVertexAttribPointer interleaved AttribArray … Vertex shader Input registers glBindAttribLocation

Az első OpenGL programom #include int main(int argc, char * argv[]) { glutInit(&argc, argv); // init glut glutInitContextVersion(3, 0); glutInitWindowSize(600, 600); glutInitWindowPosition(100, 100); glutInitDisplayMode(GLUT_RGBA|GLUT_DOUBLE); glutCreateWindow(“Hi Graphics"); glewExperimental = true; // magic glewInit(); // init glew glViewport(0, 0, 600, 600); onInitialization(); glutDisplayFunc(onDisplay); //event handler glutMainLoop(); return 1; } (-1,-1) (1,1) (100,100) 600

vbo onInitialization() unsigned int shaderProgram; unsigned int vao; // virtual world on the GPU void onInitialization() { glGenVertexArrays(1, &vao); glBindVertexArray(vao); // make it active unsigned int vbo;// vertex buffer object glGenBuffers(1, &vbo); // Generate 1 buffer glBindBuffer(GL_ARRAY_BUFFER, vbo); // Geometry with 24 bytes (6 floats or 3 x 2 coordinates) static float vertices[] = {-0.8,-0.8, -0.6,1.0, 0.8,-0.2}; glBufferData(GL_ARRAY_BUFFER, // Copy to GPU target sizeof(vertices), // # bytes vertices, // address GL_STATIC_DRAW);// we do not change later glEnableVertexAttribArray(0); // AttribArray 0 glVertexAttribPointer(0, // vbo -> AttribArray 0 2, GL_FLOAT, GL_FALSE, // two floats/attrib, not fixed-point 0, NULL); // stride, offset: tightly packed vbo 24 bytes vao AttribArray 0 vbo 3 vertices 2 floats/vertex

static const GLchar * vertexSource = R"( … )“; static const GLchar * fragmentSource = R"( … )“; unsigned int vertexShader = glCreateShader(GL_VERTEX_SHADER); glShaderSource(vertexShader, 1, &vertexSource, NULL); glCompileShader(vertexShader); unsigned int fragmentShader=glCreateShader(GL_FRAGMENT_SHADER); glShaderSource(fragmentShader, 1, &fragmentSource, NULL); glCompileShader(fragmentShader); shaderProgram = glCreateProgram(); glAttachShader(shaderProgram, vertexShader); glAttachShader(shaderProgram, fragmentShader); glBindAttribLocation(shaderProgram, 0, "vp"); glBindFragDataLocation(shaderProgram, 0, "outColor"); glLinkProgram(shaderProgram); glUseProgram(shaderProgram); } Folyt. #version 130 precision highp float; uniform mat4 MVP; in vec2 vp; void main() { gl_Position = vec4(vp.x,vp.y,0,1) * MVP; } #version 130 precision highp float; uniform vec3 color; out vec4 outColor; void main() { outColor = vec4(color,1); } rasztertár Fragment Shader outColor vp Vertex shader gl_Position Vágás, Homogén osztás Viewport transzform Raszterizáció gl_Position reg1 reg2 reg3 reg4 … gl_FragCoord reg1 reg2 reg3 reg4 … Vágás, homdiv Viewport tr. Rasztiráczó AttribArray 0

void onDisplay( ) { glClearColor(0, 0, 0, 0); // background color glClear(GL_COLOR_BUFFER_BIT); // clear frame buffer // Set vertexColor to (0, 1, 0) = green int location = glGetUniformLocation(shaderProgram, “color"); glUniform3f(location, 0.0f, 1.0f, 0.0f); // 3 floats float MVPtransf[4][4] = { 1, 0, 0, 0, // MVP matrix, 0, 1, 0, 0, // row-major! 0, 0, 1, 0, 0, 0, 0, 1 }; location = glGetUniformLocation(shaderProgram, "MVP"); glUniformMatrix4fv(location, 1, GL_TRUE, &MVPtransf[0][0]); glBindVertexArray(vao); // Draw call glDrawArrays(GL_TRIANGLES, 0 /*startIdx*/, 3 /*# Elements*/); glutSwapBuffers( ); // exchange buffers for double buffering } #version 130 precision highp float; uniform mat4 MVP; in vec2 vp; void main() { gl_Position = vec4(vp.x,vp.y,0,1) * MVP; } #version 130 precision highp float; uniform vec3 color; out vec4 outColor; void main() { outColor = vec4(color,1); }

OpenGL primitívek GL_POINTS GL_LINES GL_LINE_STRIP GL_LINE_LOOP GL_POLYGON GL_TRIANGLE_STRIP GL_TRIANGLES GL_TRIANGLE_FAN GL_QUADS GL_QUAD_STRIP glDrawArrays( primitive, startIdx, numOfElements);

1. házi Twinkle, twinkle little star A 2D virtuális világ három, legalább 7-ágú forgó és pulzáló csillagot tartalmaz, amelyek színe különböző. A legfényesebb csillag az egérklikkek által kijelölt zárt -0.8-as tenziójú Catmull-Rom spline-t követi, amely- nek csomóértékei a gomblenyomáskori idők. A leg- utolsó és legelső kontrolpont között 0.5 sec telik el, majd a csillag periódikusan újra bejárja a görbét. A görbe mindenhol folytonosan deriválható, a legelső pontban is. A másik két csillagot a legfényesebb csil- lag a Newton féle gravitációs erővel vonzza, azaz mozgatja. A gravitációs konstanst úgy kell meg- választani, hogy a mozgás élvezhető legyen. SPACE lenyomására a virtuális kameránkat a fényes csillag- hoz kapcsolhatjuk, egyébként a kamera statikus. Bónusz: Doppler effektus

Házi keret könyvtárakkal