Vývoj počítačové grafiky Informatika je věda poměrně mladá. A samotné slovo popisující tento obor částečně vysvětluje i svůj význam. Informatika je věda zabývající informacemi a jejich zpracováním. A proto se nevyhnutelně i do sféry působnosti dostalo i snaha zpracovávat vizuální informace, či informace vizualizovat. Zrodil se tak podobor nazývaný počítačová grafika. Tento obor dnes zahrnuje mnoho oblastí např. 3D grafika, digitální kresba, video, animace, digitální fotografie… Pokud se chceme zabývat počítačovou grafikou je třeba definovat alespoň základní rozdělení, které se v dnešní době používá. Asi nejzákladnější rozdělení je na tzv. 2D grafiku a 3D grafiku.
2D grafika 2D grafika se zabývá grafickou informací popsanou v rovině. Způsob popisu se však může lišit. Používají se dva nejznámější způsoby : rastrový a vektorový.
Rastrová grafika je založena na matici informací, které popisují barvu každého bodu. Nejčastěji se používá popis pomocí RGB systému – tedy každý bod je popsán třemi barevnými složkami (červenou, zelenou a modrou) ze kterých je možné "namíchat" libovolnou barvu. Tato reprezentace je v dnešní době nejrozšířenější vzhledem k rastrovým zobrazovacím zařízením ačkoliv má několik omezení. První je ztráta detailů – čím více detailů je potřeba zachytit tím je třeba větší počet bodů matice a s tím také vzrůstá velikost výsledných dat. Druhé je nesnadnost úpravy vzhledem k vektorové grafice. Nejčastější příklad je v dnešní době digitální fotografie i když je nutné podotknout že i 3D i vektorová
grafika je ve finále prezentována uživateli systému jako rastrová. To je však dáno použitou zobrazovací technologií – rastrovým displejem.
Vektorová grafika neukládá informace o jednotlivých bodech, ale informace o přímkách, křivkách a polygonech, jejich barvě a tloušťce. Jedná se v podstatě o geometrická data. Tento způsob má svoje výhody – např. změna koncového bodu je jednoduchá úprava, která neovlivní ostatní obrazová data. Udělat totožnou úpravu na rastrovém obrázku je netriviální. Úprava zcela určitě povede ke ztrátě jiných obrazových dat a poskytne o dost horší výsledek. I tato technologie má svoje nevýhody. Například nemožnost efektivně reprezentovat složitá, či spíše negeometrická data. Příkladem budiž opět digitální fotografie. Dnes se často kombinuje rastrová a vektorová grafika v souborových formátech jako PDF či SWF
3D grafika
3D grafika vychází z vektorové 2D grafiky, ale podstatným rozdílem je, že geometrická data se neukládají pouze v rovině, ale v prostorové (třídimenzionální) soustavě souřadnic. Základním geometrickým útvarem jsou polygony – plošky, ze kterých jsou tvořeny všechny objekty. Zajímavým faktem je, že vektorová reprezentace 3D scény se používá pouze pro editaci. Pro finální reprezentaci se po tzv. renderingu vytváří rastrový obraz. Důvod je v tom, že krom geometrických dat se nastavují pro skupiny polygonů různé další vlastnosti např. typ povrchu, barva, odrazivost a je tedy nutné pro celou scénu vykreslit (renderovat - vypočítat chování světla, stínů, odlesků). Zobrazovací zařízení Abychom mohli správně pochopit vývoj počítačové grafiky, je nutné předem zmínit i vývoj zobrazovacích zařízení. Ta jsou ve své podstatě brzdou, ale i nejdůležitějším zařízením pro tento obor. V době minulé byl např. problém barevná reprezentace dat, dnes je to např.
trojrozměrný displej, který (až na několik experimentů, co se k této vizi přibližují) "omezuje" grafiky, ačkoliv data ve trojrozměrné podobě již několik let existují. Počátky zobrazovacích zařízení se vztahují již k roku 1897. Tento rok vymyslel německý fyzik Karl Ferdinand Brown katodovou trubici, která se ve své podstatě používá dodnes. Na tento vynález navázali další vědci. V roce 1925 vytváří skotský vynálezce John Logie Baird první elektro-mechanický "televizor". O dva roky později si Philo Taylor Farnsworth nechává patentovat také první elektronický televizní systém (tedy včetně kamery). CRT displeje se tak začínají šířit světem. Princip je jednoduchý - svazek elektronů rozsvěcuje svojí intenzitou luminofory a ty po nějaký čas září. Televize a dnešní monitory (rastrové displeje) používají pohyb svazku elektronů po řádcích (je tedy obnovován v pravidelných intervalech celý obraz). Jako první displeje se používaly hlavně osciloskopy, později vektorové displeje. Princip spočíval v přímém vykreslování průběhu funkce či úseček přímo elektronovým svazkem (drátový obraz) na rozdíl od překreslování po řádcích celého obrazu. Největší rozmach těchto displejů byl v mezi roky 1960-1970. V osmdesátých letech je nahradila již vyspělejší technologie rastrových displejů. Počátky dnes hojně používaných LCD sahají až do roku 1968, kdy společnost RCA (George Heilmeier) vytvořila první LCD displej. Počátky výzkumu "tekutých krystalů" však sahají téměř do doby vynálezu katodové trubice. Zabýval se jimi již v roce 1904 Otto Lehmann. Přesto však cesta k funkčnímu zobrazovacímu zařízení byla o dost složitější. Momentální vývoj směřuje k vývoji a vylepšení 3D displeje. Tabulka vývoje (shrnutí) :
1884 : Paul Gottlieb Nipkow - Nipkowův kotouč – zařízení pro rozklad obrazu. Dříve – každý bod snímán vlastním fotočlánkem. Vynález – jeden fotočlánek na všechny body. Jednalo se o rotující kotouč s různě umístěnými otvory.
1897 : Karl Ferdinand Brown - Katodová trubice
1904 : Otto Lehmann - Práce "Liquid Crystals"
1925 : John Logie Baird - První elektro-mechanický televizor. Využívá Nipkowova kotouče.
1928 : Philo Taylor Farnsworth - První elektronický televizní systém (kamera)
1960 : George Gray a jeho tým - Objev cyanobiphenylu (tekutý krystal vhodný pro vývoj LCD)
1968 : RCA - George Heilmeier - První LCD založené na principu DSM (Dynamic Scattering Mode)
1971 : ILIXCO (později LXD, Incorporated) - První LCD na principu TN (Twisted nematic - používá se ve vylepšené podobě dodnes)
Historie počítačové grafiky Ačkoliv by se mohlo zdát podivné, tak historie počítačové grafiky začíná mnohem dříve než byly počítače uvedeny v provoz. Jedná se o vynálezce (převážně matematiky) bez jejichž objevů by grafika nemohla existovat.
300-250 př. n.l : Euklidus formuluje základy geometrie.
1377 – 1446 : Filippo Brunelleschi se intenzivně zabývá perspektivou.
1596-1650 : René Descartes pracuje v oboru analytické geometrie a zabývá se systémem popisu objektů v prostoru.
1700 (přibližně) : Gottfried Wilhelm Leibniz a Issac Newton vynalezli systém pro popis dynamických systémů
1814 – 1897 : James Joseph Sylvester vymyslel maticový zápis. Bez něho by byly transformace ve 3D značně komplikované.
1943 : J. Presper Mauchly a John William Mauchly staví ENIAC.
1950 : Ben Lapovsky vytváří první elektronické obrázky. Pomocí osciloskopu zaznamenává výchylky paprsku elektronů na film.
1960 : William Fetter zavádí pojem "počítačová grafika" pro popsání nového způsobu designu.
1961 : Vzniká první počítačově animovaný film (Two-Gyro Gravity-Gradient Attitude Control System, vytvořil Edward Zajak, Bell Labs)
1961 : Steve Russell vytváří první počítačovou hru. Jedná se o Spacewar a hra je koncipovaná pro tehdy běžné vektorové displeje.
1963 : Ivan Sutherland definuje grafický komunikační systém pro komunikaci člověk-počítač. Vymyslel např. pop-up menu. Vymyslel algoritmus "přetahování" (dragging). Začíná vyvíjet letecký simulátor, který používá rastrovou grafiku presentovanou v reálném čase.
1964 : William Fetter Vytváří první model lidské postavy. Jednalo se o součást studie kokpitu letadla pro firmu Boeing.
1965 : Jack Bresenham vymýšlí způsob vykreslování čar (Bresenhamuv algoritmus) do rastrového pole.
1968 : Vynalezen tzv. Ray-tracing. Dodnes používaný způsob jakým se počítá nasvícení ve 3D scéně.
1969 : Bell Labs - První Framebuffer (3-bity na pixel). Tedy paměť kde se ukládá rastrový obraz před odesláním na zobrazovací jednotku.
1970 (přibližně) : Gouraud a Phong objevují na univerzitě v Utahu tzv. Gourardovo stínování (Gourard shading, rendering). Tedy metody přechodu barev dnes používané na 3D modelech. Pan Phong navíc představuje model na výpočet odlesků a přepalů.
1974 : Edwin Catmuff vymýšlí mapování textur a tzv. z-buffer.
1976 : James Blinn - environment mapping a bump mapping (simulace nerovnosti povrchu).
1977 : Stewe Wozniak představuje Apple II – barevný grafický počítač.
1980 (přibližně) : Dominantní jsou již rastrové displeje. Vektorové displeje se přestávají používat.
1982 : Tom Brighman představuje tzv. Morphing. Jedná se o metodu počítání přechodu z jednoho rastrového obrázku do druhého (např tvář se plynule změní na jinou)
1982 : John Walkner a Dan Drake představují známý konstrukční program AutoCAD.
1984 : Firma Wavefron tech. představuje první 3D grafický software - Polhemus.
1985 : Grafické studio Pixar představuje svoje první animace.
1987 : Firma IBM vyvíjí VGA (Video Graphics Array) – způsob jakým jsou připojeny monitory ještě dnes.
1989 : VESA (Video Electronics Standards Association) definuje normy pro zobrazení – tzv. VGA a SVGA.
1989 : První verze vektorového Corel Draw. (Vyvíjená od roku 1987)
1990 : Adobe Photoshop 1.0 určený pro systém Mac OS.
1991 : První verze programu Cinema 4D (uvedená pod jménem FastRay pro počítače Amiga)
1992 : Sillicon Graphics – vzniká první specifikace OpenGL.
Grafické karty Grafická karta se stará o přenos dat, která mají být zobrazena na monitoru. Tato data přejímá od procesoru a převádí je na analogový signál, který je následně promítnut na stínítku monitoru nebo na jiném zobrazovacím zařízení. Připojuje se zvlášť jako přídavná karta na sběrnici systémové desky a stará se o veškeré operace spojené s výstupem na obrazovku.
V současné době udávají směr vývoje grafických karet pro počítače v podstatě jen tyto firmy nVidia, AMD, Intel na poli integrovaných grafických karet, S3 Graphics a Maxtor na poli grafických karet pro profesionální grafiku. Co se týče výkonosti, tak na špičce stoji dvě firmy a to sice nVidia a AMD.
Rendering je tvorba reálného obrazu na základě počítačového modelu, nejčastěji 3D. Rendering obsahuje v závislosti na softwaru mnoho parametrů a nastavení, kterými lze ovlivnit konečný vzhled scény.
Jde o odvětví počítačové grafiky. Zabývá se tvorbou obrazů, napodobující reálný svět. Je to zvláštní způsob vizualizace dat. Data jsou parametry popisující reálný nebo imaginární svět s jeho objekty a jejich vlastnostmi. Úkolem syntézy obrazu je z tohoto počítačového modelu obraz, který je pokud možno nerozeznatelný od fotografie definovaného objektu v reálném světě.
Syntéza obrazu je odvětví, které významně ovlivňuje tvorbu počítačových her, programů pro tvorbu grafiky a animaci a programů CAD/CAM. Realistické počítačové obrazy nacházejí uplatnění při tvorbě filmových efektů, architektuře, vojenství, při simulaci fyzikálních jevů nebo projektech pracující s virtuální realitou.
Ray-tracing Jedná se o vysoce výpočetně náročnou metodu počítačové vizualizace, pomocí které lze dosáhnout velmi realistického zobrazení modelu. Spočívá v postupném stopování paprsků odrážených modelem směrem k uživateli. Umožňuje zobrazení jevů, pomocí jiných technik vůbec, či jen stěží dosažitelných, jako jsou např. odrazy a odlesky objektů, lom světla v objektech, atd.
Na začátku máme:
Popis 3D scény skládající se z 1. objektů (pozice, tvar, barva a další vlastnosti materiálu) 2. světelných zdrojů (pozice, barva) 3. (případně: barva pozadí scény, vlastnosti prostředí)
Pozici pozorovatele
Sledujeme paprsky, které se šíří od světelných zdrojů do scény. Některé paprsky zasáhnou objekty, kde se podle jejich vlastností lomí, odrážejí a rozptylují. Obraz scény tvoří paprsky dopadlé na projekční plochu. Tato metoda zahrnuje efekty vznikající vzájemnou interakcí objektů ve scéně (tj. například odrazy ostatních těles na povrchu lesklého objektu a lom světla při průchodu průhledným tělesem). Dokáže určit stíny vržené různými tělesy (tyto stíny jsou však ostře ohraničeny). Protože je nereálné sledovat všechny paprsky ze zdrojů světla, postupujeme v praxi naopak. Paprsek je sledován zpětně, tzn. ve směru od pozorovatele. Projekční paprsky vysíláme přes pixely obrazu scény. Hledáme, co je vidět v daném pixelu, jakou světelnou energii paprsek přináší. Typy paprsků:
Primární paprsek - vyslaný od pozorovatele scény.
Sekundární paprsek - vzniká odrazem nebo lomem paprsku.
Stínový paprsek - vyslaný z místa dopadu paprsku na objekt ke zdrojům světla pro zjištění , leží-li ve stínu. Není-li objekt ve stínu, je pro něj vyhodnocen osvětlovací model. Zanedbává se jejich lom.
Diagram ilustruje algoritmus ray tracingu pro renderování obrázku. Při sledování paprsků musíme vlastně hledat jejich průsečíky s objekty scény. Naivní algoritmus testuje navzájem každý paprsek s každým objektem scény (a se všemi polygony v každém objektu), což vede ke značně časově náročnému výpočtu. Každý průsečík paprsku s objektem generuje další dva paprsky + stínový paprsek. V každém takovém průsečíku je zapotřebí provést ty samé výpočty, je tedy vhodné využít pro implementaci ray-tracingu rekurzi. Pro ukončení rekurze je možné použít následující kritéria: 1. paprsek narazí na difúzní povrch 2. je dosažena předem stanovená maximální hloubka rekurze 3. energie paprsku klesne pod určitý práh Nevýhody ray-tracingu
ostré stíny
bodové zdroje světla
zrcadla (lesklé plochy) sice odrážejí okolí, ale neodrážejí světlo do okolí, nejsou sekundárními zdroji světla
při změně ve scéně (místo pozorovatele, nové světlo, nový objekt, odebrání něčeho, ...) se musí vyhodnotit celá scéna
není adaptivní, zobrazení probíhá se stejným vzorkováním, nezávisle na situaci ve scéně (velké monotónní plochy)
Urychlování ray-tracingu Prostý ray-tracing je velmi náročný na čas, urychlovací metody ho mohou urychlit o jeden až dva řády. Nejčastější urychlovací metody:
Urychlení výpočtu průsečíků a. speciální funkce na výpočet průsečíků s každým typem objektu (pre testy potenciálních průsečíků před vlastními výpočty s tělesem) b. snížení počtu výpočtů průsečíků - obálky, hierarchie obálek - dělení scény (BSP, Octal-tree) - paměť překážek - koherence paprsků (válcové nebo kuželové obálky paprsků)
Snížení počtu paprsků a. adaptivní antialiasing (zředěné vysílání paprsků, interpolace při malé změně) b. řízení hloubky rekurze (útlum intenzity paprsků při odrazech a lomech -> stupeň rekurze při útlumu pod daný limit)
Svazky paprsků (svazek paprsků se vysílá jako jeden - kvalita)
Distribuce výpočtů na dvě části (procesů, procesorů)
Budoucnost Ray tracing - slepá ulička nebo budoucnost grafiky? Ray tracing je v poslední době často skloňován v souvislosti s budoucností počítačové grafiky,ale metoda sama není žádnou novinkou. Samotný ray tracing je založen na principu velmi podobném tomu, jak vnímáme obraz světa lidským okem. Tato metoda byla doposud nasazována pouze tam, kde bylo možné na výsledný render čekat delší dobu, což je především doména filmových efektů nebo statických obrázků. Pro počítačovou grafiku je nutné, aby vše probíhalo v reálném čase. V předešlých letech nebylo vůbec možné uvažovat nad tím, že by jakýkoli domácí počítač byl schopen podobnou úlohu zvládnout. Poslední demonstrace Intelu na mnoho jádrových systémech s procesory Xeon hovoří za vše, ale ani v konkurenčním táboru nikdo nespí, a tak můžeme vidět ray tracing i v podání Nvidia a jejích profesionálních systémech Quadro.
Ray tracing můžeme brát jako výrazně zjednodušený (a obrácený) model reálného fungování zobrazování v reálném světě. Pokud omezíme počet počítaných paprsků a počet dalších reflexí a refrakcí, vznikne nám ve své podstatě výše jmenovaná metoda renderování.
Ray-tracing a počítačové hry Nvidia je společností, která jistě představuje lídra v odvětví počítačové grafiky. Podle společnosti tato technologie nemá ve světě her co dělat, protože je jednak velmi náročná a jednak je vývoj her na nové platformě plýtváním peněz. Představitelé Nvidie pro různá periodika z oblasti informační technologií vydávají poměrně zkreslená data ohledně vhodnosti ray tracingu pro hry. Společnost AMD zatím věnuje veškeré úsilí svému novému dítku Cinema 2.0, které má být dveřmi do světa her s fotorealistickou grafikou. AMD nedělá kolem Cinema 2.0 nebo potenciálu nových čipů RV770 tak velký humbuk jako Nvidia, ale o to více jsou její projekty zajímavé. Hlavy herních studií odhadují, že bude trvat cirka 5 až 7 let, než počítačové hry dosáhnou na hranici reálnosti CG (Computer Graphics) filmů. Společnost Intel vidí naopak v ray tracingu velký potenciál a propaguje tento způsob jako nástupce současné rasterizace. Demonstrace Intelu jsou v naprosté většině založeny na reálných herních enginech pod OpenGL. Začalo to hrou Quake III a v současné době to končí ve hře Enemy Territory: Quake Wars, která je schopná běžet na 4 procesorech quad-core Xeon rychlostí 20 FPS. Intel přistupuje k ray tracingu zcela jiným způsobem než Nvidia. Vše akceleruje na svých x86 architekturách, které přes nižší papírový výkon, než v případě GPU, jsou pro tyto účely lepší. Ray tracing rozdělil hlavní výrobce na dva tábory, jeden (Nvidia) hlásá, že tato metoda renderování není vhodná pro nasazení v herním průmyslu a druhý naopak prohlašuje, že ray tracing je budoucností. Intel se snaží proniknout do herního
průmyslu a nejen do něj svými projekty jako je Larrabee nebo prototypy 80-jádrových procesorů (Polaris).
Ray tracing jako takový není všelékem a dokonalým způsobem k vykreslování budoucích her, ale přes odpor některých (i světových) osobností světa informačních technologií je jasné, že přichází velmi zajímavá dekáda v oblasti počítačové grafiky. Příchod ray tracingu na komerční pole her lze očekávat v horizontu několika let a velmi bude záležet také na dostupnosti hardware s dostačujícím výkonem. Dle ohlášených produktů, ať už ze stáje Intelu nebo AMD, to vypadá, že se ale nemusíme strachovat.