Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
1
Vizualizáció és képszintézis
A grafikus hardver programozása Szécsi László
2
GPU pipeline input vertex bufferek index buffer rajzolási állapot
egyes pipeline-elemek működési beállításai programozható elemek shader programjai erőforrások – globális memóriában adatok globális (uniform) változók textúrák adatbufferek csak olvasható
3
GPU pipeline output kép render target mélységbuffer (+stencil)
frame buffer textúra mélységbuffer (+stencil)
4
GPU pipeline tesszellátor nélkül
IA VS IA RS FS OM textúrák TS
5
Rajzolási állapot IA IA RS OM attribute binding primitive topology
rasterizer state viewport depth-stencil state blend state
6
Lépések I vertexek összeállítása Vertex Shader
model trafó árnyalás view és proj trafó primitívek összeállítása vertexek összeválogatása vertex bufferbeli sorrend alapján index bufferbeli indexek alapján
7
Lépések II raszterizálás Fragment shader z-teszt blending
hátsólap-eldobás vágás homogén osztás viewport trafó Fragment shader pixelszín meghatározása z-teszt blending
8
Vertexek összeállítása
Vertex buffer rekordok tömbje IA pos normal tex pos normal tex pos normal tex vertex
9
Vertex shader bejövő adat kimenő adat
uniform: model, view, proj mátrixok, fények, ... minden vertexre más: vertex és instance elemek [pozíció, normál, szín, texcoord] kimenő adat pozíció homogén normalizált képernyő koordinátákban árnyalás eredménye [szín] bármi más [normál, texcoord] VS
10
Primitívek összeállítása
non-indexed vertex bufferben egymás után következők triangle list triangle strip 1 2 3 4 5 6 1 2 3 4 5 2 5 2 4 1 3 4 6 1 5 3 WebGL.RenderingContext.TRIANGLES WebGL.RenderingContext.TRIANGLE_STRIP
11
Raszterizáló egység: lapeldobás
körüljárási irány (képernyőn) alapján eldobhatunk lapokat ha a modellünkben (index bufferben) konzisztens a háromszögek körüljárási iránya, ezzel eldobhatjuk a test hátsó lapjait a belsejét úgysem látjuk, ha poliéder
12
Raszterizáló egység: vágás
ami kilógna a képernyőről, vágjuk le hsz vágás szakasz vágásra visszavezethető szakasz vágás = pont vágás + metszéspont számítás normalizált képernyőkoordinátákban [-1, -1, 0] [1, 1, 1] téglatestre vágunk [Descartes] Átfordulási probléma a homogén osztás előtt kell vágni
13
ablak a virtuális világra
Átfordulási probléma itt kellene látszania, nem a két vetületi pont között ide vetül ide vetül 1 ablak a virtuális világra
14
ablak a virtuális világra
Átfordulási probléma első vágósík, mögöttünk levő dolgok eldobása itt kellene látszania nem a két vetületi pont között ide vetül metszéspont ablak a virtuális világra
15
Raszterizáció homogén osztás viewport trafó: pixel koordináták
lineáris interpoláció vertex output adatok (kivéve pozíció) interpolálása minden kitöltendő pixelhez pixel shader indítása minden pixelszín meghatározásához RS
16
Pixel shader bejövő adat kimenő adat
PS bejövő adat vertex shader kimenő adatai lineárisan interpolálva pixel koordináták kimenő adat pixel szín [RGBA] mélység, ha felül akarjuk írni a háromszög csúcsainak z-jéből interpolált eredetit ha nem, akkor a z-teszt előrehozható a pixel shader elé
17
Kimeneti műveletek bufferek műveletek
célterület: frame buffer vagy textúra mélység-stencil buffer műveletek mélység teszt stencil teszt keverés [alfa blending] OM
18
Z-teszt a 3D takarási probléma megoldására 2. 1. 3. 1 0.1325 0.628
0.3325
19
Keverés [alpha blending]
A célterületen már meglevő érték [dest] és az újonnan számított szín [src] kombinálása mindkettőhöz megadható egy súly (0, 1, srcalpha, dstalpha, 1-alpha ...) megadható a függvény (add, subtract, min, max ...) átlátszóság: hátulról előre rajzolás + blending src * srcalpha + dst * (1- srcalpha)
20
WebGL weboldalon fut nem kell plugin, nem kell install mindenhol megy
21
WebGL OpenGL ES 2.0 for JavaScript JavaScript???
22
WebGL Does not include Vertex shader Fragment shader Geometry shader
Vertex buffer Texture Framebuffer Render state Does not include Geometry shader Tessellation shader Vertex Array Object Multiple render target Floating-point texture Compressed texture FS depth write 3D texture
23
WebGL Nincsnek GPGPU képességek sem de lesz WebCL nemsokára
Atomics Texture load store de lesz WebCL nemsokára WebGL 2 már van Firefox-ban
24
WebGL ha az OpenGL megvan, a WebGL ugyanaz na de JavaScript??? Dart!
25
WebGL Similar to desktop OpenGL: // ... gl.bindBuffer(/* ... */);
gl.vertexAttribPointer(/* ... */); gl.useProgram(/* ... */); gl.drawArrays(/* ... */);
26
Dart Google webprogramozási nyelve
csak a Chrome-ban (Dartium) van Dart virtuális gép de JavaScript-re fordítható, és akkor bárhol megy Van Dart Editor nem árt mellé egy Sublime Text vagy valami
27
Dart típusok minden Object dinamikusan típusos
igen, azt int, double, bool is dinamikusan típusos lehetnek dynamic objektumok: var a = 1; a = 'Bob‘; de lehet statikus típust adni a változóknak, és ezt a fordító ellenőrzi
28
Dart visibility nincs: public, private, protected helyette:
_változó csak library-n belül látszik
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.