Direct3D pipeline. Grafikus játékok fejlesztése Szécsi László t03-pipeline

Hasonló dokumentumok
HLSL programozás. Grafikus játékok fejlesztése Szécsi László t06-hlsl

HLSL programozás. Szécsi László

D3D, DXUT primer. Grafikus játékok fejlesztése Szécsi László t01-system

Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter

Plakátok, részecskerendszerek. Szécsi László

Transzformációk. Grafikus játékok fejlesztése Szécsi László t05-transform

Grafikus csővezeték és az OpenGL függvénykönyvtár

Textúrák. Szécsi László

Transzformációk. Szécsi László

2D képszintézis. Szirmay-Kalos László

Geometriai modellezés. Szécsi László

Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter

2. Generáció ( ) 3. Generáció (2001) NVIDIA TNT2, ATI Rage, 3dfx Voodoo3. Klár Gergely

Grafikus csővezeték 1 / 44

SZE, Doktori Iskola. Számítógépes grafikai algoritmusok. Összeállította: Dr. Gáspár Csaba. Felületmegjelenítés

Direct3D interface. Grafikus játékok fejlesztése Szécsi László t04-pipecontrol

1. Bevezetés 1. Köszönetnyilvánítás A számítógépes játékfejlesztésről 3

Valasek Gábor

Klár Gergely 2010/2011. tavaszi félév

Tartalom. Hajder Levente 2016/2017. I. félév

Láthatósági kérdések

Grafikus csővezeték 2 / 77

Hajder Levente 2016/2017.

Bevezetés a CGI-be. 1. Történelem

A számítógépes grafika inkrementális képszintézis algoritmusának hardver realizációja Teljesítménykövetelmények:

Tartalom. Tartalom. Hajder Levente 2018/2019. I. félév

Tartalom. Tartalom. Hajder Levente Szakasz raszterizálása. 2017/2018. II. félév. Poligon raszterizáció.

Haladó Grafika EA. Inkrementális képszintézis GPU-n

Számítógépes Graka - 4. Gyak

GPU Lab. 14. fejezet. OpenCL textúra használat. Grafikus Processzorok Tudományos Célú Programozása. Berényi Dániel Nagy-Egri Máté Ferenc

Árnyalás, env mapping. Szécsi László 3D Grafikus Rendszerek 3. labor

Fraktálok és káosz. Szirmay-Kalos László

OpenGL Compute Shader-ek. Valasek Gábor

GPGPU. Architektúra esettanulmány

Modellezési transzformáció: [r lokális,1] T M = [r világ,1] Nézeti transzformáció: [r világ,1] T v = [r képernyo,1]

Máté: Számítógépes grafika alapjai

Klár Gergely 2010/2011. tavaszi félév

Területi primitívek: Zárt görbék által határolt területek (pl. kör, ellipszis, poligon) b) Minden belső pont kirajzolásával (kitöltött)

Véletlen szám generálás Labirintus felépítése 1x1-es felbontástól a teljes méretig

Párhuzamos és Grid rendszerek

c) Poligon árnyalási módok (Wireframe, Wiremesh, Hidden Line, Filled Hidden Line, Constant, Smooth, Phong).

Termék modell. Definíció:

Tanács Attila. Képfeldolgozás és Számítógépes Grafika Tanszék Szegedi Tudományegyetem

Általános áttekintés. Általános áttekintés

GPGPU alapok. GPGPU alapok Grafikus kártyák evolúciója GPU programozás sajátosságai

Klár Gergely

DIPLOMAMUNKA. Rákos Dániel

Területi primitívek: Zárt görbék által határolt területek (pl. kör, ellipszis, poligon)

Területi primitívek: Zárt görbék által határolt területek (pl. kör, ellipszis, poligon)

Számítógépes Grafika mintafeladatok

(Solid modeling, Geometric modeling) Testmodell: egy létező vagy elképzelt objektum digitális reprezentációja.

PÉLDATÁR BEGYAKORLÓ FELADAT TÉRBELI FELADAT MEGOLDÁSA VÉGESELEM- MÓDSZERREL

Feladatok. Tervek alapján látvány terv készítése. Irodai munka Test modellezés. Létező objektum számítógépes modelljének elkészítése

Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter

2. GYAKORLAT THONET-ASZTAL

Mérnöki létesítmények geodéziája Mérnöki létesítmények valósághű modellezése, modellezési technikák, leíró nyelvek

HARDVERESEN GYORSÍTOTT 3D/2D RENDERELÉS

GPGPU. GPU-k felépítése. Valasek Gábor

x = cos αx sin αy y = sin αx + cos αy 2. Mi a X/Y/Z tengely körüli forgatás transzformációs mátrixa 3D-ben?

2. Gyakorlat Khoros Cantata

Mesh generálás. IványiPéter

Farkas Gyula Szakkollégium Bit- és számtologatók. DirectX9 1. Szín, fény, textúra 2. Stencil buffer használata (tükörkép, hamis árnyék)

Google Summer of Code OpenCL image support for the r600g driver

Látható felszín algoritmusok

Merev testek mechanikája. Szécsi László

Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 22./0. 3D grafika programozása OpenGL támogatással Transzformációk

SHADOW MAPPING MODERN GPU-KON

SolidWorks Adott alkatrész 2D-s

Realisztikus színtér 1 / 59

3D - geometriai modellezés, alakzatrekonstrukció, nyomtatás

Számítógépes grafika

A bemutatott példa a Phong modell egy egyszerűsített változatát alkalmazza a Blinn-Phong-féle megközelítést

SDL_Universe SDL, C++, 3D szoftver renderelő

Operációs rendszerek. UNIX fájlrendszer

2014 UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Első lépések. File/New. A mentés helyét érdemes módosítani! Pl. Dokumentumok. Fájlnév: pl. Proba

Geometria brute force tárolása

Diplomamunka. Miskolci Egyetem. GPGPU technológia kriptográfiai alkalmazása. Készítette: Csikó Richárd VIJFZK mérnök informatikus

Mesh from file, OrthoCamera, PerspectiveCamera. Szécsi László 3D Grafikus Rendszerek 3. labor

Virtuális Valóság. Működése és használata

Renderelés megjelenésmódok, fények, anyagjellemzők

A 3D megjelenítés elmélete

Mechatronika segédlet 10. gyakorlat

Máté: Számítógépes grafika alapjai

Szegedi Tudományegyetem Informatikai Tanszékcsoport tanév

Bevezetés a programozásba. 9. Előadás: Rekordok




AxisVM rácsos tartó GEOMETRIA

FEJLETT GRAFIKAI ALGORITMUSOK

BME MOGI Gépészeti informatika 15.

ARM Cortex magú mikrovezérlők

Grafikus csővezeték (Általános áttekintés) Grafikus csővezeték (Általános áttekintés)

i1400 Image Processing Guide A-61623_zh-tw

1.4 fejezet. RGB színrendszerek

3D - geometriai modellezés, alakzatrekonstrukció, nyomtatás

Készítette: Oláh István mestertanár

GPU Lab. 15. fejezet. Nehezen párhuzamosítható szimulációk. Grafikus Processzorok Tudományos Célú Programozása. Berényi Dániel Nagy-Egri Máté Ferenc

Számítógépek felépítése

Átírás:

Direct3D pipeline Grafikus játékok fejlesztése Szécsi László 2013.02.12. t03-pipeline

RESOURCES PIPELINE STAGES RENDER STATES Vertex buffer Instance buffer Constant buffers and textures Index buffer Constant buffers and textures Output buffer Constant buffers and textures Render target Render textures target textures Depth-stencil texture Input Assembler I. input streaming vertex data, instance data Vertex Shader processed vertex data Input Assembler II. primitive setup primitive data Geometry Shader primitive strip data Rasterizer face culling depth bias adjustment clipping homogenous division viewport transformation output filtering fragments with interpolated data Fragment Shader fragment color and depth Output merger stencil test depth test blending Input layout Shader program Uniform parameters Primitive type Shader program Uniform parameters Cull mode Depth bias Viewport Fill mode Filtering Shader program Uniform parameters Depth-stencil state Blending state

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ó

GPU pipeline output kép render target frame buffer textúra mélységbuffer (+stencil) adatbuffer stream out target read/write (GpGpu-hoz) unordered access view

GPU pipeline tesszellátor nélkül IA VS IA GS RS PS OM +mindenki olvashatja a uniform változókat, textúrákat, buffereket SO

GPU pipeline tesszellátorral IA VS IA HS Tess DS GS RS PS OM tessfactor +mindenki olvashatja a uniform változókat, textúrákat, buffereket SO

Rajzolási állapot IA input layout IA primitive topology Tess RS rasterizer state OM viewport depthstencil state SO blend state

Lépések I vertexek összeállítása Vertex Shader model trafó hol van a vertex világkoordinátában árnyalás view és proj trafó hova esik a vertex a képernyőn primitívek összeállítása vertexek összeválogatása vertex bufferbeli sorrend alapján index bufferbeli indexek alapján

Lépések II tesszelláció patch primitívekből ami vezérlőpontokkal (vertexekkel) adott lineáris primitívek előállítása vonal, háromszög Geometry Shader primitívek módosítása: kb fix számú és kevés kimeneti primitív primitívek szűrése (kidobni is lehet) vertex bufferbe írás (stream out)

Lépések III raszterizálás hátsólap-eldobás vágás homogén osztás viewport trafó Pixel shader pixel szín meghatározása z-teszt blending

Vertexek összeállítása Vertex buffer rekordok tömbje pos normal tex pos normal tex pos normal tex vertex Instance buffer hasonló tömb Minden instance rekorddal el kell küldeni minden vertex rekordot a vertex shadernek IA

Vertex shader bejövő 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

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 3 5

Indexelt primitívek Index buffer egészek tömbje Indexed primitive index bufferben egymás utáni következő indexekhez tartozó vertexek list, strip előny kényelmes nem kell strip hogy gyors legyen IA

Primitívtopológiák I

Primitívtopológiák II

Primitívtopológiák III

Primitívtopológiák IIII Tesszellátorhoz 1-control-point patch list 32-control-point patch list Olyan mint a triangle list, csak nem 3 elemű Domain shaderben úgy értelmezzük őket ahogy akarjuk

Tesszellátor Vertexek a vezérlőpontok Hull shader vezérlőpontok módosítása tesszellációs faktorok számítása Tesszellátor legyárt egy háromszöghálót Domain shader a háromszögháló vertexeinek feltöltése adatokkal pl. pozíció számítása a vezérlőpontok súlyozásával HS tessfactor Tess DS

Geometry shader Primitívek vertextömbjét kapja elemszám topológiafüggő ha adjacenciát tartalmaz, akkor azokat is megkapja de a tesszellátor ilyen topológiát nem tud előállítani, ha van tesszellátor akkor adjacencia nincs Primitívfolyamba írhat max. elemszámot meg kell adni lassú ha ez a szám nagy GS SO

Folyamkimenet (Stream Out) Geometry shader kimenete egy vertex bufferbe irányítva Pipeline többi része nem is kell hogy működjön VB később menetre köthető Pl. részecskerendszer-szimuláció részecskék a vertexek GS számítja az új pozíciójukat ping-pong a két VB között

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

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

Háromszög-vágás szakasz vágás szakasz vágás

Átfordulási probléma itt kellene látszania, nem a két vetületi pont között ide vetül 1 ide vetül ablak a virtuális világra

Átfordulási probléma első vágósík, mögöttünk levő dolgok eldobása ide vetül itt kellene látszania, nem a két vetületi pont között metszéspont ablak a virtuális világra

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

Pixel shader 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é PS

Kimeneti műveletek bufferek célterület (render target) frame buffer textúra mélység-stencil buffer textúra műveletek mélység teszt stencil teszt keverés [alfa blending] OM

Z-teszt a 3D takarási probléma megoldására 2. 1. 3. 628 1325 3325 1325 628

Stencil teszt a stencil buffer a z-buffer pár használatlan bitje beállítódik valamire, ha a pixelbe rajzoltunk valamit később feltételként szabhatjuk a pixel felülírására a stencil buffer értéket pl. kirajzoljuk a tükör téglalapját, utána a tükörben látható objektumokat csak a tükör pixeleire rajzoljuk

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)