3D akcelerátory historie a architektura

Podobné dokumenty
Základy OpenGL Josef Pelikán CGG MFF UK Praha. OpenGL / 34

Hardware pro počítačovou grafiku NPGR019

Co je grafický akcelerátor

Geekovo Minimum. Počítačové Grafiky. Nadpis 1 Nadpis 2 Nadpis 3. Božetěchova 2, Brno

Grafické karty. Autor: Kulhánek Zdeněk

3D počítačová grafika na PC Josef Pelikán, MFF UK Praha

Fakulta informačních technologíı. IZG cvičení 6. - Zobrazování 3D scény a základy OpenGL 1 / 38

Hierarchický model Josef Pelikán CGG MFF UK Praha. 1 / 16

Textury v real-time grafice Josef Pelikán, MFF UK Praha Josef.Pelikan@mff.cuni.cz

Základní techniky zobrazování Josef Pelikán, MFF UK Praha

PŘEDSTAVENÍ GRAFICKÉHO PROCESORU NVIDIA G200

GRAFICKÉ ADAPTÉRY. Pracovní režimy grafické karty

Masivně paralelní zpracování obrazu v prostředí systému VisionLab Liberec Roman Cagaš, rc@mii.cz

HW počítače co se nalézá uvnitř počítačové skříně

Nvidia CUDA Paralelní programování na GPU

Připravil: David Procházka. Základy OpenGL

Připravil: David Procházka. Vertex Buffer Objects

3D ANIMACE POSTAVY V POČÍTAČOVÉ GRAFICE ANIMATION OF 3D CHARACTER IN COMPUTER GRAPHICS

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

Pokročilé osvětlovací techniky Josef Pelikán, MFF UK Praha

Univerzita Karlova v Praze Matematicko-fyzikální fakulta DIPLOMOVÁ PRÁCE. Daniel Fromek. Výpočet geometrie na GPU

Architektura grafických ip pro Xbox 360 a PS3

Reprezentace 3D modelu

Základy 3D modelování a animace v CGI systémech Cinema 4D C4D

Karel Johanovský Michal Bílek SPŠ-JIA GRAFICKÉ KARTY

Programovatelné shadery a jazyk Cg. Petr Kmoch

Programování GPU ( shaders ) Josef Pelikán, MFF UK Praha

Výpočet vržených stínů

ak. rok 2013/2014 Michal Španěl,

Rád bych poděkoval Ing. Davidu Ambrožovi za jeho cenné rady a připomínky a za ochotu po celou dobu vedení mé diplomové práce.

Vizualizační 3D grafický engine. Bc. Jan Štalmach

Hardware pro počítačovou grafiku NPGR019

Počítačová grafika 2 (POGR2)

PB001: Úvod do informačních technologíı

Programování shaderů GLSL

Pokročilá architektura počítačů

Vytváříme dobré aplikace vykreslovače grafiky v programovém prostředí Control Web

Reprezentace 3D scény

Úvod do GPGPU J. Sloup, I. Šimeček

Připravil: David Procházka. Vykreslování grafických primitiv

UNIVERZITA PARDUBICE. Fakulta elektrotechniky a informatiky. Geneze grafických karet jako základní součásti PC Drahoslav Stejskal

Surfels: Surface Elements as Rendering Primitives

Pokročilé techniky Josef Pelikán, MFF UK Praha

ARCHITEKTURA AMD PUMA

Fakulta informačních technologíı. Rendering Seminář 1. 1 / 28

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

GRAFICKÉ KARTY. Pracovní režimy grafické karty. Základní blokové schéma grafické karty

Návrhy elektromagnetických zení

SEZNAM A VYSVĚTLENÍ VYBRANÝCH POJMŮ TÝKAJÍCÍCH SE PARAMETRŮ ZOBRAZOVACÍCH JEDNOTEK ELEKTRONICKÝCH SYSTÉMŮ

Ing. Jan Buriánek. Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Jan Buriánek, 2010

Hardware. Z čeho se skládá počítač

3D počítačová grafika na PC

Programování GPU ( shaders )

Pokročilé programování v jazyce C pro chemiky (C3220) 3D grafika v knihovně Qt

Profilová část maturitní zkoušky 2017/2018

Bakalářská práce. Téma: Rešerše moderních grafických karet Literature retrieval of modern graphic cards. Zadání

Počítače a grafika. Ing. Radek Poliščuk, Ph.D. Přednáška 3. z předmětu

Informatika Počítačová grafika Mgr. Jan Jílek (v.11/12) Počítačová grafika

Přednášky o výpočetní technice. Hardware teoreticky. Adam Dominec 2010

Základy programování shaderů v OpenGL Část 2 - přenos dat

GPU A CUDA HISTORIE GPU CO JE GPGPU? NVIDIA CUDA

AGP - Accelerated Graphics Port

Grafická karta nebo také videoadaptér je součást počítače, která se stará o grafický výstup na monitor, TV obrazovku či jinou zobrazovací jednotku.

OBRAZU FAKULTA INFORMAČNÍCH TECHNOLOGIÍ BRNO UNIVERSITY OF TECHNOLOGY FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER GRAPHICS AND MULTIMEDIA

Satori. Uživatelský manuál

Profilová část maturitní zkoušky 2014/2015

Nvidia CUDA Paralelní programování na GPU

Pokročilé architektury počítačů

Zobrazovací a zvuková soustava počítače

B4B35OSY: Operační systémy

Profilová část maturitní zkoušky 2013/2014

HDR obraz (High Dynamic Range)

Tutoriál programování grafických procesorů

Grafické karty s podporou DirectX 11 Quynh Trang Dao Dao007

Procesory nvidia Tegra

Programování grafiky ÚVOD

Zobrazovací jednotky a monitory

Zobrazování terénu. Abstrakt. 1. Úvod. 2. Vykreslování terénu

XNA Game Studio 3.1. Tomáš Herceg Microsoft Most Valuable Professional Microsoft Student Partner

Úvod do modelování v programu COMSOL Multiphysics verze 4

Přednáška. Vstup/Výstup. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Představení a srovnání grafických procesorů ATI RV770 a NVIDIA G(T)200

Počítačová grafika letem světem

GPGPU Aplikace GPGPU. Obecné výpočty na grafických procesorech. Jan Vacata

Bakalářská práce Editor vizuálních vlastností objektů pro real-time grafiku

Stavba operačního systému

Počítačová grafika 1 (POGR 1)

Mapový server Marushka. Technický profil

Počítačová grafika Grafické karty a monitory (metodické materiály) dr. Josef Šedivý Centrum talentů UHK, 2010

Metamorfóza obrázků Josef Pelikán CGG MFF UK Praha

Profilová část maturitní zkoušky 2015/2016

Transformace (v OpenGL) příklady a knihovna GLM

Matematika pro real-time grafiku

Desktopový GIS a Grafický editor. Technický profil

27. listopadu 2013, Brno Připravil: David Procházka

Programování grafiky ÚVOD

Architektura počítače

GPGPU- provádění vědeckých výpočtů prostřednictvím grafických karet osobních počítačů

NPGR019. Geometry & tessellation shaders. MFF UK Praha. Vykreslování v OpenGL Tessellation shaders Geometry shaders Literatura

Paralelní výpočty ve finančnictví

Transkript:

3D akcelerátory historie a architektura 2003-2010 Josef Pelikán, MFF UK Praha http://cgg.mff.cuni.cz/~pepca/ pepca@cgg.mff.cuni.cz NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 1

Pokroky v hardware 3D akcelerace běžná i v konzumním sektoru zaměření na hry, multimedia vzhled kvalita prezentace velmi důmyslné techniky texturování kombinace mnoha textur, modularita zpracování vysoký výkon nejmodernější čipové technologie pro výrobu GPU (65 nm), masivní paralelismus velmi rychlé paměti (dvoucestný přístup, GDDR3,..) výjimečné sběrnice mezi GPU a CPU AGP, PCI-E NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 2

Pokroky v software dvě hlavní knihovny pro 3D grafiku OpenGL (SGI, open standard) a Direct3D (Microsoft) přístup je podobný, API je velmi ovlivněno hardwarem nastavení parametrů a úsporný přenos dat do GPU maximální sdílení společných datových polí programování grafického řetězce! revoluce v programování 3D grafiky vertex-shader : zpracování vrcholů sítě geometry shader : generování elementů.. fragment-shader ( pixel-shader ): zpracování jednotlivých pixelů před vykreslením NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 3

Vývojové nástroje příjemné pro programátory i umělce vyšší jazyky pro programování GPU Cg (NVIDIA), HLSL (DirectX), GLSL (OpenGL) Cg a HLSL jsou téměř shodné kompozice grafických efektů kompaktní popis celého efektu (GPU programy, odkazy na data) v jednom souboru DirectX.FX formát, NVIDIA CgFX formát nástroje: Effect Browser (Microsoft), FX Composer (NVIDIA), RenderMonkey (ATI) NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 4

Historie I: Silicon Graphics první masově rozšířené grafické pracovní stanice hardwarově akcelerovaný grafický subsystém SW nástroje a aplikační programy, grafika = SGI vybrané stanice (http://sgistuff.g-lenerz.de/machines/) 1983: Iris 1000 grafický terminál k VAXu (Motorola 68k @ 8MHz, Geometry Engine,..) 1984: Iris 2000 (grafická stanice, Clark GE), Iris 3000 1986: Professional Iris 4D (první s MIPS procesory) 1988: Power series, GTX, Personal Iris 4D NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 5

Historie II: Silicon Graphics, SGI další stanice a grafické systémy: 1991: Iris Indigo (asi nejpopulárnější stanice SGI) 1992: Iris Crimson 1992: Indigo R4000 (64bit), RealityEngine 1993: Iris Indy (levná stanice, i bez HW grafiky) 1993: Onyx (server s RE2) 1993: Iris Indigo 2 (Extreme graphics) 1996: O2 (levná stanice), InfiniteReality engine 1997: Octane (2 procesory) 2000: Octane2 (Vpro gr.) 2002: Fuel, 2003: Ezro NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 6

Historie III: Komoditní produkty první grafický akcelerátor do domácího počítače 1996: 3Dfx Voodoo 1 doplňuje klasickou grafickou kartu ( pass-through ) API Glide první karty od NVIDIA 1997: NVIDIA Riva 128 1998: NVIDIA Riva TNT ( TwiNTexel ) první HW T&L ( transform & lighting ) 1999: NVIDIA GeForce 256 NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 7

Historie IV: Komoditní produkty rok 2000 NVIDIA GeForce2 ATI Radeon rok 2001: programování GPU DirectX 8.0 (vertex shaders, fragment shaders, 1.0, 1.1) NVIDIA GeForce3, GeForce3 Titanium DirectX 8.1 (PS 1.2, 1.3, 1.4) ATI Radeon 8500 rok 2002: rozšířené programování DirectX 9.0 VS, PS 2.0 NVIDIA GeForce4 Titanium ATI Radeon 9000, 9700 [Pro] NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 8

Historie V: Komoditní produkty rok 2003 DirectX 9.0 kompatibilní karty jsou už levné (VS, PS 2.0) NVIDIA GeForce FX 5200-5800 ATI Radeon 9800 rok 2004: rozšířené programování DirectX 9.0c (VS, PS 3.0) NVIDIA GeForce 6800, 6200, 6600 ATI Radeon X800 Rok 2005: PCI-Express sběrnice spřažení dvou GPU NVIDIA: SLI, ATI: CrossFire NVIDIA GeForce 7800 ATI Radeon X550, X850 NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 9

Historie VI: Komoditní produkty Rok 2006: OpenGL 2.0 DirectX 10 (Windows Vista).. geometry shaders NVIDIA GeForce 7600, 7900 ATI Radeon X1800, X1900 Rok 2007: CUDA (NVIDIA) programování GPU v C NVIDIA GeForce 8600, 8800 ATI Radeon R600 (HD 2400, 3850) další výrobci Matrox, Intel, 3DLabs, S3, PowerVR (Kyro), SiS NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 10

Řetězec zpracování 3D grafiky I Aplikace Geometrie Rasterizace Aplikace reprezentace 3D dat (virtuální uložení na disku i v paměti), parametrizace, šablony,.. chování objektů: fyzikální simulace, umělá inteligence interakce mezi objekty: kolize, deformace,.. NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 11

Řetězec zpracování 3D grafiky II Aplikace Geometrie Rasterizace Geometrie ( HW T&L ) modelové transformace (pomáhají aplikační vrstvě) projekční transformace (perspektiva), ořezávání výpočet osvětlení (příp. jen příprava jistých vektorů..) dlouhý řetězec (pipeline), řetězců může být více NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 12

Řetězec zpracování 3D grafiky III Aplikace Geometrie Rasterizace Rasterizace (vykreslení) převod objektů scény do fragmentů a jejich zpracování do jednotlivých pixelů výpočet viditelnosti ( depth-buffer ), mapování textur a jejich kombinace, interpolace barev, průhlednost, mlha vysoký paralelismus (nezávislé zpracování) NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 13

Programovatelný grafický řetězec Data vrcholu Pevný řetězec T & L Topologie sítě Vertex-shader Ořezání a okénková transformace Geometrie HW T&L ( Hardware Transform & Lighting ) IrisGL: dříve, display list od NVIDIA GeForce 256 (1999) Kombinace textur Mlha Pixel-shader Alfa-test, stencil-test, Z-test Rasterizace Rasterizace se na čipu dělá již dlouho stanice Silicon Graphics API: IrisGL apod. multi-texturování: až druhá polovina 90. let NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 14

Schéma OpenGL (FFP) OpenGL Fixed Functionality Pipeline: Geom. Per-Vertex Operations Vertices Primitive Assembly Clip Project Viewport Cull Geom. Rasterize Fragment Processing Fragments Per-Fragment Operations App Memory Pixel Unpack Pixel Transfer Pixels Textures Texture Memory Frame Buffer Operations Pixels Pixel Pack Pixel Groups Read Control Frame Buffer NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 15

OpenGL: geometrická primitiva typy geometrických primitiv: bod, úsečka, lomená čára, smyčka polygon, trojúhelník, proužek trojúhelníků, vějíř trojúhelníků, čtyřúhelník, proužek čtyřúhelníků zpracování jednotlivých vrcholů glvertex, glcolor, glnormal, gltexcoord,... neefektivní (mnoho volání gl* funkcí) pole vrcholů gldrawarrays, glmultidrawarrays, gldrawelements,... glcolorpointer, glvertexpointer,... nebo prokládání NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 16

Geometrická primitiva I GL_POINTS GL_LINES GL_LINE_STRIP GL_LINE_LOOP V 0 V 1 V 0 V 1 V 0 V 1 V 0 V 1 V 2 V 2 V 2 V 2 V 3 V 3 V 3 V 3 V 4 V 4 V 4 V 4 V 5 V 5 V 5 V 5 NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 17

Geometrická primitiva II GL_TRIANGLES GL_TRIANGLE_STRIP GL_TRIANGLE_FAN V 0 V 1 V 0 V 1 V 6 V 5 V 4 V 2 V3 V 2 V3 V 0 V3 V 4 V 5 V 2 V 5 V 4 V 1 NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 18

Geometrická primitiva III GL_QUADS V 0 V 3 GL_QUAD_STRIP V 1 V 0 GL_POLYGON V 6 V 5 V 4 V 1 V 2 V 3 V 2 V 3 V 4 V 7 V 5 V 4 V 0 V 2 V 6 V 6 V 1 V 5 V 7 NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 19

OpenGL makra (Display Lists) DISPLAY_LIST_MODE místo IMMEDIATE_MODE uložení posloupnosti GL příkazů do paměti: glnewlist, glendlist seznam ( list ) může být uložen na serveru (graf. HW) idea: seznam = makro přehrávání seznamu glcalllist, glcalllists může být mnohem efektivnější (optimalizace posloupnosti příkazů na straně grafického serveru) NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 20

Geometrická data na serveru až od OpenGL 1.5 buffer na straně grafického serveru obsahující geometrická data založení bufferu: glbindbuffer zadání dat z pole: glbufferdata, glbuffersubdata mapování do paměti aplikace: glmapbuffer, glunmap.. práce s klientskou pamětí nebo s bufferem glcolorpointer, glnormalpointer, glvertexpointer,... NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 21

Zpracování vrcholu transformace vrcholů modelovacími a projekčními maticemi glmatrixmode glloadidentity, glloadmatrix, glmultmatrix glrotate, glscale, gltranslate,... osvětlovací atributy gllight, gllightmodel, glmaterial NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 22

Sestavení a zpracování primitiv sestavení (Assembly) určení, kolik vrcholů primitivum potřebuje shromáždění balíčku dat a odeslání dál zpracování primitiv ořezávání ( clipping ) projekce do zorného objemu ( frustum ) dělení w projekce a ořezání do 2D okénka ( viewport ) odstranění odvrácených stěn ( culling ) jednostranná vs. oboustranná primitiva NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 23

Rasterizace, fragmenty rasterizace = vykreslení vektorových primitiv rozklad geometrických objektů na fragmenty geometrické objekty: body, úsečky, trojúhelníky, bitmapy fragment rastrový element, který potenciálně přispívá k barvě nějakého pixelu velikost: stejná nebo menší než u pixelu (anti-aliasing) balíček dat procházející rasterizační jednotkou GPU: vstup/výstup: x, y, z (pouze hloubku lze měnit!) texturovací souřadnice t 0 až t n lesklá a difusní barva, koeficient mlhy, uživatelská data,... výstupní barva RGB a neprůhlednost α (frame-buffer op.) NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 24

Interpolace ve fragmentech atributy fragmentů se automaticky interpolují z hodnot ve vrcholech: hloubka (z nebo w) texturové souřadnice barvy (lesklá a difusní složka) uživatelské atributy,... rychlé HW interpolátory perspektivně korektní interpolace jen [ x, y ] se mění lineárně ostatní veličiny vyžadují jedno dělení na každý fragment NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 25

Zpracování fragmentů texturovací operace maximálně optimalizované operace výběr barvy z texturovací paměti interpolace texelů: mip-mapping, anisotropic filtering,... kombinace několika textur (výběr z mnoha operací) zvláštní efekty (bump-mapping, environment mapping) výpočet mlhy podle hloubky z kombinace primární a sekundární barvy (diff., spec.) NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 26

Upotřebení fragmentů ( per-fragm. op. ) lokalizace fragmentu do kterého pixelu patří? test uživatelského ořezání (glscissor) test odmítnutí podle průhlednosti (glalphafunc) test šablony ( stencil test, glstencilop) * write test hloubky ( depth test, gldepthfunc) * kompozice barvy (podle případné průhlednosti) * dithering (příp. konverze barvy pro frame-buffer) logická operace (gllogicop) * NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 27

Globální operace s frame-bufferem frame-buffer se skládá z několika bufferů front, back, left, right,... (double-buffering, stereo) nastavení aktuálního kreslicího bufferu (gldrawbuffer) inicializace bufferů (glclear) glclearcolor, glcleardepth, glclearstencil, glclearaccum řízení přenosu dat do grafického serveru glflush: vyprázdní buffery glfinish: dokončí celou kresbu v daném kontextu NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 28

Rastrové obrázky v OpenGL Geom. Per-Vertex Operations Vertices Primitive Assembly Clip Project Viewport Cull Geom. Rasterize Fragment Processing Fragments Per-Fragment Operations App Memory Pixel Unpack Pixel Transfer Pixels Textures Texture Memory Frame Buffer Operations Pixels Pixel Pack Pixel Groups Read Control Frame Buffer NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 29

Přenos rastrových obrázků aplikační paměť frame-buffer přes fázi rasterizace (převod na fragmenty) gldrawpixels, glbitmap aplikační paměť texturová paměť jen přes unpacking a pixel transfer glteximage, gltexsubimage přenos uvnitř OpenGL glcopypixels: uvnitř frame-bufferu glcopyteximage, glcopytexsubimage: cílem je textura frame-buffer aplikační paměť glreadpixels: bývala to velmi pomalá operace ( AGP) NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 30

Konverze a rastrové operace pixel unpacking převod z formátu aplikace do OpenGL ( coherent stream of pixels, group of pixels ) { RGB[α] depth stencil } [][] zdrojový formát, délka rozkladové řádky, offsety,... nastavení: glpixelstore pixel packing opačný převod pixel transfer změna měřítka, jasu, tabulkové operace (LuT) nastavení: glpixeltransfer, glpixelmap možnosti rozšíření: konvoluce, jiné filtry, histogramy,... NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 31

Schéma OpenGL (Programmable Pip.) Texture Memory Geom. Vertex Processor Vertices Primitive Assembly Clip Project Viewport Cull Geom. Rasterize Fragment Processor Per-Fragment Operations App Memory Pixel Unpack Pixel Transfer Pixels Textures Fragments Frame Buffer Operations Pixels Pixel Pack Pixel Groups Read Control Frame Buffer NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 32

Vrcholový procesor nahrazuje modul zpracování vrcholů: transformace vrcholů transformace a normalizace normálových vektorů výpočet/transformace texturovacích souřadnic výpočet osvětlovacích vektorů nastavení materiálových konstant do vrcholů nemůže ovlivnit: počet vrcholů! (nelze přidat ani ubrat vrchol * ) typ / topologii geometrických primitiv částečné řešení: degenerace primitivu NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 33

Fragmentový procesor nahrazuje modul zpracování fragmentů: aritmetické operace s interpolovanými hodnotami čtení dat z textur aplikace textur výpočet mlhy závěrečná syntéza barvy fragmentu možnost modifikace hloubky fragmentu nemůže ovlivnit: počet fragmentů! (nelze přidat ani ubrat fragment * ) polohu fragmentu na obrazovce [x,y] NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 34

Programování procesorů v GPU Vertex shader kód zavedený ve vektorovém procesoru Fragment shader kód zavedený ve fragmentovém procesoru aplikační programátor může tyto kódy měnit! HW nezávislé * programovací jazyky mikrokód pro GPU se kompiluje až v době běhu aplikace (omezení různé profily/verze) low-level instrukce (jazyk se podobá assembleru) nebo vyšší jazyky Cg, HLSL, GLSL (podobné, UCA ) NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 35

Schéma Direct3D verze 10 Virtualized memory (GPU/system memory) Vertex Buffer Index Buffer Texture Texture Stream output Texture Stencil Depth Render Target Input Assembler Vertex Shader Geometry Shader Rasterizer Interpolator Pixel Shader Output Merger Input commands Vertices Primitives Fragments NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 36

Direct3D 10 základ grafický systém integrovaný do Windows Vista GPU je potřeba pro zobrazování Windows grafiky (Aero) GPU je sdíleným prostředkem v OS snadnější restart grafiky (výpadek HW/driveru) sdílená grafická paměť transparentně mezi GPU a CPU memory (v režii OS) GPU jen programovatelný řetězec! tři programovatelné bloky (shaders: VS, GS, PS) tři bloky zůstávají pevné (Input assembler, Rasterizer, Output merger) NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 37

Direct3D 10 nové koncepty Geometry shader (GS) pracuje s celými grafickými primitivy (trojúhelníky,..) může rušit ( cut ) a přidávat ( emit ) celá primitiva data se mohou posílat zpátky do IA (přes SO) Stream output (SO) posílání dat zpátky do IA duplikace dat (do IA a současně do dalšího zpracování) Input assembler (IA) umí instancing i zpracování dat ze SO každý primitiv obdrží své ID, vrchol má VertexID NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 38

Literatura Tomas Akenine-Möller, Eric Haines: Real-time rendering, 2 nd edition, A K Peters, 2002, ISBN: 1568811829 OpenGL ARB: OpenGL Programming Guide, 4 th edition, Addison-Wesley, 2004, ISBN: 0321173481 Randima Fernando, Mark J. Kilgard: The Cg Tutorial, Addison-Wesley, 2003, ISBN: 0321194969 Jack Hoxley: An Overview of Microsoft's Direct3D 10 API, 13.12.2005, www.gamedev.net NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 39