 Kvantált kép fényesség értékei: G [ 0, Gmax ]  G fényességű pontok száma: P(G)

Slides:



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

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...
GPU Szirmay-Kalos László.
OpenGL Szirmay-Kalos László In theory, there is no difference
3D képszintézis fizikai alapmodellje
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.
Bevezetés a tárgyakhoz Tárgyak  Objects are the containers for values of a specified type  Objects are either signals, variables or constants  Once.
FelültöltésVHDL Felültöltés (Overloading) n Áttekintés n Példák.
Szécsi László. June 2010 DirectX SDK Visual Studio 2010.
 Lineáris egyenlet  algebrai egyenlet  konstansok és első fokú ismeretlenek  pl.: egyenes egyenlete  Lineáris egyenletrendszer  lineáris egyenletek.
 Bővítmény rendszer  Az OpenGL bővítményeihez hasonló  A specifikiáció természetes fejlődése ▪ Gyártó specifikus bővítmény ▪ Általános bővítmények.
 Gauss szűrő uniform sampler2D colorMap; const float kernel[9] = float[9]( 1.0, 2.0, 1.0, 2.0, 4.0, 2.0, 1.0, 2.0, 1.0); out vec4 outColor; void main(){
GPGPU labor I. OpenGL, Cg.
 Fény fotonok szimulációja  Nem változtatja meg a frekvenciát ütközéskor  Homogén és inhomogén közegben.
 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.
Socket programozás Példák
TRANZIENS ADATTÁROLÁS State objektum Egy alkalmazásszintű gyűjtemény (Dictionary), mely Tombstone esetén megőrzi tartalmát a memóriában kulcs/érték párokként.
STÍLUSOK Tulajdonságok és értékek. Színek megadási módjai H1 {color: #CCF150} H1 {color: rgb(204,241,80)} H1 {color: rgb(80%,95%,30%)} H1 {color: red}
Oracle multimédia Kiss Attila Információs Rendszerek Tanszék
A megértés körei Binzberger Viktor Budapest Műszaki és Gazdaságtudományi Egyetem Filozófia és Tudománytörténet Tanszék.
PHP IV. Dátumok, képek. Dátumok print time(); // től eltelt mp-ek $date = getdate(); // tömböt ad vissza $date = getdate($t); $date = date($format);
Fejlett grafikai algoritmusok Megvilágítási modellek
Számítógépes grafika 3. gyakorlat.
Eye-RIS rendszer programozása D46 laborgyakorlat.
Budapest University of Technology and Economics Fault-tolerant Systems Research Group Nyílt Fejlesztőrendszerek SWT haladó komponensek.
XHTML – a tanultak összefoglalása
Vizuális programozás Rajzolás Windows Forms alkalmazásokban GDI+
Könyvtár, csomag és alprogramokVHDL Könyvtár, csomag és alprogram n Library és use n Package n Alprogramok –Procedure –Function –Resolution function Egy.
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.
Motor II. Env map Spotlight Szécsi László. Letöltés /code/E/code/EggCoreSecondBase.zip Kibontani (vagy előző labor folyt.):
Fraktálok és csempézések
Vízfelület Szécsi László. Nyílt víz a nyílt óceánon a felületi cseppecskék körmozgást végeznek trochoid hullámforma hullámhossz hullámmagasság amplitúdó.
Transzformációk, textúrák, árnyalás Szécsi László.
DirectX9 empty project Szécsi László. Project létrehozása Microsoft DirectX SDK (August 2008) telepítése Start Menu \ Microsoft DirectX SDK (August 2008)\
Motor V. Ütközés detektálás és válasz Szécsi László.
Rendering pipeline Ogre3D
Textúrák Grafikus játékok fejlesztése Szécsi László g07-texture.
Kamera, 3D, transzformációk Szécsi László. Math.zip kibontása az Egg projectkönyvtárba – float2, foat3, float4 típusok, HLSL-ben megszokott műveletekkel.
Többmenetes renderelés Grafikus játékok fejlesztése Szécsi László g11-multipass.
Grafikus játékok fejlesztése Szécsi László t09-texture
Geometry instancing Szécsi László. copy-paste-rename gg009-Gui folder vcxproj, filters átnevezés solution/add existing project rename project working.
User interface Szécsi László. Egg projectben DXUTgui.cpp – CDXUTDialogResourceManager::CDXUTDialogReso urceManager() m_SpriteBufferBytes11 = 0; ezt kihagyták,
Rekurzív algoritmusok
 MipMap  glTexImage2D(GL_TEXTURE_2D, level, GL_RGBA32F,...);  glFramebufferTexture2D(GL_FRAMEBUFFER,..., TexID, mipLevel);
 Map  Reduce  Scan  Histogram  Compact const size_t dataSize = 1024; cl_kernel mapKernel = cl.createKernel(clProgram, "map"); float* hData = new.
GPGPU labor X. Monte Carlo módszerek. Kezdeti teendők Tantárgy honlapja, Monte Carlo módszerek A labor kiindulási alapjának letöltése (lab10_base.zip),
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),
GPGPU labor IX. Lineáris egyenletrendszerek megoldása.
GPGPU Labor 15.. Párhuzamos primitívek Map Reduce Scan Histogram Compact.
GPGPU labor II. GPU mint vektor processzor. Kezdeti teendők Tantárgy honlapja, Bevezetés – Alap könyvtárak letöltése Tantárgy honlapja, GPU mint vektor.
Számítógépes grafika DirectX 5. gyakorlat. Emlékeztető Háromdimenziós alapok befejezése Textúrázás.
 OpenCL platform  Számító eszközök  OpenCL kontextusok  Parancs sorok  Szinkronizáció  Memória objektumok  OpenCL programok  OpenCL függvények.
ELTE-IK, Számítógépes grafika 2./haladó 2. gyakorlat Klár Gergely.
Időbeli redundancia. - Idő -> mozgás Intra-Frames: codiertes Einzelbild Inter-Frames: Differenzbild I-képek: Intra frame coded - csak képkockán belül.
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ó.
Grafikus hardver/szoftver alapok Szirmay-Kalos László.
Lighting III.
A grafikus hardware programozása
Vizualizáció és képszintézis
Vizualizáció és képszintézis
Szécsi László 3D Grafikus Rendszerek 14. előadás
GPGPU – CUDA 2..
Systems Hardware Business challenge
Final exam review starts …
Composite maps (first order, see Table) show regional cerebellar activation during the four reading tasks. Composite maps (first order, see Table) show.
Volume 24, Issue 17, Pages (September 2014)
Dalit Shental-Bechor, Turkan Haliloglu, Nir Ben-Tal 
Előadás másolata:

 Kvantált kép fényesség értékei: G [ 0, Gmax ]  G fényességű pontok száma: P(G)

 Kevés árnyalat  Túlexponált

 Hisztogram generálás a GPU-n Vertex shader Fragmens shader Blending

 Fragmensek kompozitálása  glBlendEquation(equation) ▪ GL_FUNC_ADD ▪ GL_FUNC_SUBTRACT ▪ GL_FUNC_REVERSE_SUBTRACT ▪ GL_MIN ▪ GL_MAX

 glBlendFunc(src, dst)  GL_ZERO, GL_ONE  GL_SRC_COLOR, GL_DST_COLOR  GL_SRC_ALPHA, GL_DST_ALPHA  GL_CONSTANT_COLOR, GL_CONSTANT_ALPHA  GL_ONE_MINUS_...

 Grid  Számítás glEnable(GL_BLEND); glBlendFunc(GL_ONE, GL_ONE); histogramBuffer->setRenderTarget(); histogramShader->enable(); histogramShader->bindUniformTexture(„inputBuffer”, texture->getTextureHandle(0), 0); grid->render(histogramShader); histogramShader->disable(); histogramBuffer->disableRenderTarget(); glDisable(GL_BLEND); GLfloat* vertices = new GLfloat[3 * width * height]; for(int y = 0; y < height; ++y){ for(int x = 0; x < width; ++x){ vertices[3 * (x + y * width) ] = x / width; vertices[3 * (x + y * width) + 1] = y / height; vertices[3 * (x + y * width) + 2] = 0.0f; }

 Vertex shader  Fragmens shader uniform sampler2D inputBuffer; in vec4 position; void main(void){ vec2 resolution = textureSize(inputBuffer, 0); float luminance = texture(inputBuffer, position.xy + (0.5 / resolution)).x; gl_Position = vec4( 2.0 * (luminance - 0.5), 0.0, 0.0, 1.0); } out vec4 outColor; void main(void){ outColor = vec4(1.0); }

 Vertex shader II. uniform sampler2D inputBuffer; uniform float hLevels; in vec4 position; void main(void){ vec2 resolution = textureSize(inputBuffer, 0); float luminance = texture(inputBuffer, position.xy + (0.5 / resolution)).x; gl_Position = vec4( 2.0 * (luminance * (1.0 – 1.0 / hLevels) / hLevels - 0.5), 0.0, 0.0, 1.0); }

 Forrás kiválasztása  Buffer kiválasztása ▪ GL_DRAW_FRAMEBUFFER ▪ GL_READ_FRAMEBUFFER ▪ GL_FRAMEBUFFER  Komponens kiválasztása ▪ GL_COLOR_ATTACHMENTx ▪ GL_DEPTH_COMPONENT ▪ GL_DEPTH_STENCIL ▪ GL_STENCIL_INDEX glReadBuffer(source); glBindBuffer(target, buffer);

 Buffer másolása  Format ▪ GL_RED, GL_GREEN, GL_BLUE, GL_ALPHA ▪ GL_RGB, GL_RGBA ▪ GL_LUMINANCE, GL_LUMINANCE_ALPHA  Type ▪ GL_BYTE, GL_SHORT, GL_INT, GL_FLOAT ▪ GL_UNSIGNED_INT_8_8_8_8 ▪... glReadPixels(x, y, width, height, format, type, *data);

float histogram[255] = {0.0f}; glBindFramebuffer(GL_FRAMEBUFFER, histogramBuffer->getHandle()); glReadBuffer(GL_COLOR_ATTACHMENT0); glReadPixels(0, 0, 255, 1, GL_RED, GL_FLOAT, histogram); glBindFramebuffer(GL_FRAMEBUFFER, 0); Framebuffer

 Normálás

uniform sampler2D inputMap; uniform float G1; uniform float G2; uniform float Gmax; in vec2 fTexCoord; out vec4 outColor; void main(void){ float luminance = texture(inputMap, fTexCoord); outColor = vec4( Gmax / (G2 – G1) * (luminance – G1)); }

 Kvantálás uniform sampler2D inputMap; uniform int levels; in vec2 fTexCoord; out vec4 outColor; void main(void){ float c = texture(inputMap, fTexCoord); float threshold = 1.0 / levels; while(c > threshold){ threshold += 1.0 / levels; } outColor = vec4(threshold); }

 Summed area table  Mip-map alternatíva  Minden elemben egy összeg van  Gyorsan számítható  időben generálható YTYT YBYB XLXL XRXR

 SAT generálás DCBAEC+DB+CA+BAD+EA+B+C+DA+B+CA+BAB+C+D+EA+B+C+DA+B+CA+BAA+B+C+D+E

 SAT generálás tA = input image n = logr(width) m = logr(height) // horizontal phase for(i=0; i<n; i=i+1) tB[x,y] = tA[x,y] + tA[x+1*ri, y] + tA[x+2*ri, y] +... tA[x+r*ri, y] swap(tA, tB)

 SAT generálás  OpenGL float offset = 1.0f / (float)histogramLevels; int inputBuffer = 0; for(int i=0; i<8; ++i){ sat[(inputBuffer + 1) % 2]->setRenderTarget(0); satShader->enable(); satShader->bindUniformTexture(„inputMap”, sat[inputBuffer]->getColorBuffer(0), 0); satShader->bindUniformFloat(„offset”, -offset); fullscreenQuad->render(satShader); sat[(inputBuffer + 1) % 2]->disableRenderTarget(); inputBuffer = (inputBuffer + 1) % 2; offset *= 2.0f; }

 SAT generálás  Fragmens shader uniform sampler2D inputMap; uniform float offset; in vec2 fTexCoord; out vec4 outColor; void main(void){ float current = texture(inputMap, fTexCoord).x; float sampleOff = fTexCoord.x + offset; float addValue = 0.0; if(sampleOff >= 0.0){ addValue = texture(inputMap, vec2(sampleOff, 0.0)).x; } outColor = vec4(current + addValue); }

 Kiegyenlítő leképzés uniform sampler2D inputMap; uniform sampler2D histogram; uniform float level; in vec2 fTexCoord; out vec4 outColor; void main(void){ float current = texture(inputMap, fTexCoord).x; float accum = texture(histogram, vec2(current, 0.0)).x; float bin = floor(accum / level); outColor = vec4(bin); }

 Dinamika tartományok  Leképzés HDR-ről LDR-re  Luminancia: Y  Átlagos luminancia: Y ’

 A leképzés lépései  Luminancia leképzés tA = eredeti kép tL = luminancia(tA) l átlag = átlagol(tL) tB = transform(tA, l átlag ) float luminance(vec4 color){ return vec4(color.r * , color.g * , color.b * , 1.0); }

 Átlag képzés  Sat  Textúra piramis

 Átlag képzés uniform sampler2D inputBuffer; in vec2 fTexCoord; out vec4 outColor; void main(void){ vec2 offset = 1.0 / textureSize(inputBuffer, 0); float sum = 0.0; for(int y = -1; y <= 1; ++y){ for(int x = -1; x <= 1; ++x){ sum += texture(inputBuffer, fTexCoord + vec2(x, y) * offset); } outColor = vec4(sum / 9.0); }

 Átlagos luminancia uniform sampler2D inputBuffer; uniform float Yavg; uniform float alpha; in vec2 fTexCoord; out vec4 outColor; void main(void){ float Y = texture(inputBuffer, fTexCoord); outColor = vec4(alpha * Y / Yavg); }

 Végső transzformáció uniform sampler2D inputBuffer; uniform float W; in vec2 fTexCoord; out vec4 outColor; void main(void){ vec4 Yr = texture(inputBuffer, fTexCoord); outColor = vec4(Yr * (1 + Yr / (W * W)) / (1.0 + Yr)); }