Vizualizáció és képszintézis

Slides:



Advertisements
Hasonló előadás
 Árnyalási egyenlet  Saját emisszió  Adott irányú visszaverődés.
Advertisements

Globális illumináció (GI)
GPU Szirmay-Kalos László.
Sugárkövetés: ray-casting, ray-tracing
Térfogatvizualizáció Szirmay-Kalos László. Térfogati modellek v(x,y,z) hőmérséklet sűrűség légnyomás potenciál anyagfeszültség... v(x,y,z) tárolás: 3D.
Sugárkövetés: ray-casting, ray-tracing Szirmay-Kalos László.
3D képszintézis fizikai alapmodellje
Grafikus játékok fejlesztése Szécsi László g11-physics
 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.
GPGPU labor V. GPU ray tracing. Kezdeti teendők Tantárgy honlapja, GPU ray tracing A labor kiindulási alapjának letöltése (lab5_base.zip), kitömörítés.
A virtuális technológia alapjai Dr. Horváth László Budapesti Műszaki Főiskola Neumann János Informatikai Kar, Intelligens Mérnöki Rendszerek.
Fejlett grafikai algoritmusok Megvilágítási modellek
Objektum orientált programozás a gyakorlatban
Térfogatvizualizáció Szirmay-Kalos László. Térfogati modellek v(x,y,z) hőmérséklet sűrűség légnyomás potenciál anyagfeszültség... v(x,y,z) tárolás: 3D.
Sugárkövetés: ray-casting, ray-tracing
Térfogatvizualizáció
Fraktálok és csempézések
Motor I. Scene graph XML Rendering Szécsi László.
Environment mapping Szécsi László. Új osztály: Lab3EnvMap copy&paste: Lab2Trafo.h -> Lab3EnvMap.h copy&paste: Lab2Trafo.cpp -> Lab3EnvMap.cpp copy&paste:
Sugárkövetés: ray-casting, ray-tracing
Térfogatvizualizáció
3D képszintézis fizikai alapmodellje Szirmay-Kalos László Science is either physics or stamp collecting. Rutherford.
Rendering pipeline Ogre3D
Grafikus játékok fejlesztése Szécsi László t09-texture
GPGPU labor III. Iteratív algoritmusok. Kezdeti teendők Tantárgy honlapja, Iteratív algoritmusok A labor kiindulási alapjának letöltése (lab3base.zip),
4.6. A Fénysugár-követés módszere (ray-tracing) Mi látható a képernyőn, egy-egy képpontban ? (4.4.LÁTHATÓSÁG) A képponton át a szembe jutó fénysugár melyik.
Sugárkövetés: ray-casting, ray-tracing Szirmay-Kalos László.
OpenGL 4 shaderek, GLSL Valasek Gábor
Programozás III KOLLEKCIÓK.
Fejlett grafikai algoritmusok Megvilágítás SZTE, 2010.
Számítógépes grafika, PPKE-ITK, Benedek Csaba, 2010 Színek és megvilágítás 5. előadás.
Vizualizáció és képszintézis Sugárkövetés (Dart + GLSL) Szécsi László.
Számítógépes grafika OpenGL 5. gyakorlat.
4.6. A Fénysugár-követés módszere (ray-tracing) Mi látható a képernyőn, egy-egy képpontjában ? És az ott milyen színű ? (4.7. Árnyalás)
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ó.
Számítógépes grafika DirectX 7. gyakorlat. Emlékeztető Múlt órán mesheket és transzformációkat használtunk Most primitívkirajzoláshoz nézünk meg egy hasznos.
Vizualizáció és képszintézis Térfogati textúrák kezelése (Dart + GLSL) Szécsi László.
Vizualizáció és képszintézis
Grafikus hardver/szoftver alapok Szirmay-Kalos László.
Platformer játék Pálya generálás. Új projekt Csináljunk új 2D projektet Neve legyen Platformer Kép asseteket töltsük le, és importáljuk a projektbe Majd.
Szécsi László 3D Grafikus Rendszerek 17. előadás
Global Illumination.
Vizualizáció és képszintézis
A grafikus hardware programozása
OpenGL 2. gyakorlat Valasek Gábor
Szécsi László 3D Grafikus Rendszerek 4. labor
6. A 3D grafika alapjai 6.1. A 3D szerelőszalag fölépítése
Vizualizáció és képszintézis
Szécsi László 3D Grafikus Rendszerek 10. előadás
OpenGL IV.
Szécsi László 3D Grafikus Rendszerek 1. labor
Vizualizáció és képszintézis
6. A 3D grafika alapjai 6.1. A 3D szerelőszalag fölépítése
Vizualizáció és képszintézis
Post Processing effektek
Multiplayer böngészőben
Alapok Model betöltés Anyagjellemzők Fényforrások Shaderek
Kamera, 3D, transzformációk Szécsi László
OpenGL II.
Material+ kioptimalizált uniformok
JavaScript a böngészőben
Szécsi László 3D Grafikus Rendszerek 11. előadás
OpenGL V.
Sugármetszés implicit szintfelülettel
Ghost Hunter Game logic/HUD.
Direct3D DirectCompute
Environment mapping Szécsi László
Mesh from file, OrthoCamera, PerspectiveCamera
Függvénysablonok használata
Előadás másolata:

Vizualizáció és képszintézis WebGL path tracing Szécsi László

Indulás ray tracer rekurzió már van tükröződés van

Új színtér 5 fal (3 duplasík kvadratikus felület) anyag: diffúz színes valami bent, a padlón gömb, vagy gyűrű legyen ez is diffúz egyelőre plafon hiányzik itt fog bejönni a fény fényforrás az égbolt/környezet

Vertex shader jó legyen textúra mutatáshoz is attribute vec3 vertexPosition; attribute vec2 vertexTexCoord; varying vec3 rayDir; varying vec2 tex; uniform mat4 rayDirMatrix; void main(void) { rayDir = (vec4(vertexPosition, 1) * rayDirMatrix).xyz; tex = vertexTexCoord; gl_Position = vec4(vertexPosition, 1); }

“Show texture” fragment shader precision highp float; varying vec2 tex; uniform sampler2D texture; void main(void) { gl_FragColor = texture2D(texture, tex); }

Index.html, Scene-be új shader használata this.fsShow = new Shader(gl, gl.FRAGMENT_SHADER, "show_fs.essl"); this.showProgram = new Program(gl, this.vsQuad, this.fsShow);

Render-to-texture erőforrások this.frameBuffers = [gl.createFramebuffer(), gl.createFramebuffer()]; this.rtts = [gl.createTexture(), gl.createTexture()]; for(var i=0; i<2; i++) { gl.bindTexture(gl.TEXTURE_2D, this.rtts[i]); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGB, canvas.width, canvas.height, 0, gl.RGB, gl.UNSIGNED_BYTE, null); gl.bindFramebuffer(gl.FRAMEBUFFER, this.frameBuffers[i]); gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.rtts[i], 0); gl.bindFramebuffer(gl.FRAMEBUFFER, null); }

Render-to-texture gl.bindFramebuffer(gl.FRAMEBUFFER, this.frameBuffers[0]); this.program.commit(); this.quadGeometry.draw(); gl.bindFramebuffer(gl.FRAMEBUFFER, null); this.showProgram.showTexture.set(this.rtts[0]); this.showProgram.commit();

Várt eredmény: minden a régi

Átlagolás, ping pong gl.bindFramebuffer(gl.FRAMEBUFFER, this.frameBuffers[0]); this.program.prevImage.set(this.rtts[1]); this.program.commit(); this.quadGeometry.draw(); gl.bindFramebuffer(gl.FRAMEBUFFER, null); this.showProgram.showTexture.set(this.rtts[0]); this.showProgram.commit(); this.rtts.reverse(); this.frameBuffers.reverse();

Átlagolás, ping pong gl_FragColor = outColor * 0.1 + texture2D(prevImage, tex) * 0.9;

Várt eredmény: temporal blur

Profibb átlagolás lehet a súlyozás nem fix hanem egyre csökkenő uniformban átadható az eddigi frameek száma hogy mindig az eddigi összes frame átlagát kapjuk ha mozdul a kamera, kezdjük újra

Ray tracing → path tracing Ha nincs találat Égboltfény visszaadása

Hamis random float random(vec3 scale, float seed) { return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed); }

Koszinuszos mintavétel vec3 sampleCosine(float seed, vec3 normal) { float u = random(vec3(12.9898, 78.233, 151.7182), seed); float v = random(vec3(63.7264, 10.873, 623.6736), seed); float r = sqrt(u); float angle = 6.283185307179586 * v; // compute basis from normal vec3 sdir, tdir; if (abs(normal.x)<.5) { sdir = normalize(cross(normal, vec3(1,0,0))); } else { sdir = normalize(cross(normal, vec3(0,1,0))); } tdir = cross(normal, sdir); return r*cos(angle)*sdir + r*sin(angle)*tdir + sqrt(1.-u)*normal;