====== Realistické zobrazování ======
===== Metoda sledování paprsku =====
[[wp>Ray tracing (graphics)]]
Dobře zobrazuje:
* Globální stíny
* Průhlednost
* Odrazivé povrchy
Ovšem chybí měkké stíny, prasátka, nerozkládá paprsek na spektrální složky apod.
==== Princip ====
{{ http://upload.wikimedia.org/wikipedia/commons/thumb/8/83/Ray_trace_diagram.svg/300px-Ray_trace_diagram.svg.png}}
* Simulace reálného šíření světla
* Paprsky fotonů šířící se ze světla do kamery (výpočetně enormně náročné)
* V reálu prováděno **zpětné** sledování paprsku pro omezení počtu počítaných paprsků
* Vysílání paprsků (**primární paprsky**) z kamery každým pixelem vypočítávaného obrazu do scény
* Při dopadnu na objekt (výpočet průsečíku) vyhodnoceny vlivy zdrojů světla (Phong apod.)
* Vyhodnocení světelné energie (RGB)
* Je možné vrhnout z bodu paprsky (**stínové paprsky**) ke všem zdrojům (omezeno na bodové zdroje) a zjistit, zda-li jsou jím zastíněné, nebo ne. Podle toho se buď připočte příspěvek zdroje, nebo ne.
* Při dopadu na lesklé / průhledné povrchy se vyšlou odrazové, popřípadě lámané **sekundární paprsky**, počítají se rekurzivně
* //Vrhání paprsků -- Raycasting// je základní metoda //bez sekundárních paprsků//
* Nezvládá: stíny, odrazy, lomy apod.
==== Urychlení výpočtů ====
* Rychlejší výpočet průsečíku
* Obaly objektů
* Méně výpočtů – hierarchie ohraničujících objemů. Např. strom rovnoběžnostěnů, kde pokud neprotne rodiče, nemusíme pokračovat.
* Rozdělení prostoru
* Méně paprsků
* Adaptivní podvzorkování (adaptive sub-sampling) sníží počet vrhaných primárních paprsků (opakem je super-sampling)
* Zobecněné paprsky – válec, kužel
* Snadná paralelizace
* Primární paprsek se vyhodnocuje nezávisle na ostatních.
===== Radiozita =====
[[wp>Radiosity (computer graphics)]]
Je postavena na jiném principu než rodina metod založených na sledování paprsku. Myšlenka radiozity spočívá v aplikaci **zákona zachování energie** na uzavřené systémy složené z povrchů, jež světlo pohlcují, odrážejí a eventuelně vyzařují.
Za předpokladu dostatečně malých elementů scény a dokonalé matnosti povrchů, radiozita počítá //fyzikálně správné osvětlení// (oproti ostatním metodám).
==== Rovnice radiozity ====
Udává plošné ohodnocení povrchových elementů ve scéně z hlediska přímého i nepřímého osvětlení daného elementu. Výsledkem výpočtu tedy není snímek. Při snímkování stačí už jen vyhodnotit viditelnost.
//Bᵢ// = //Eᵢ// + //ρᵢ// · ∑//BjFij//
* //Bᵢ// – záření (radiosity) z povrchu //i//
* //Eᵢ// – vyzařování (emissivity) z povrchu //i//
* //ρᵢ// – odraznost (reflectivity) povrchu //i//
* Fij – form factor povrchu //j// oproti povrchu //j//
=== Form factor ===
* Schopnost výměny světelné energie dvou plošek ve scéně
* Bezrozměrná veličina
* Záleží na úhlech sevřených mezi nimi
==== Výpočet ====
* Množství dopadající světelné energie je možné vyjádřit pomocí form faktorů a intenzit světla vyzařovaných všemi ostatními ploškami ve scéně.
* //n// lineárních rovnic o //n// neznámých, řešením jsou intenzity vyzařování z jednotlivých plošek.
* Většinou matice silně diagonální (hodně plošek mají form faktor nulový, nevidí na sebe).
* Jedná se o difúzní povrchy vyzařování je konstantní do všech směrů – nemusí se při zobrazení snímků znova počítat.
==== Postup osvětlování a zobrazování pomocí radiozity ====
* Získat form-factory
* Přiřadit povrchům vlastní vyzařování
* Řešit rovnici
* Zobrazit vhodnou zobrazovací metodou (sledování paprsku, rasterizace)
==== Nevýhoda ====
* Pouze difúzní povrchy
* Není odraz, průhlednost
==== Optimalizace ====
* Postupné iterační řešení rovnic
* Na začátku se uvažuje pouze zdroje světla
* Iteračně se světlo šíří, tvoří virtuální zdroje
* Konverguje ke stejnému řešení, jako analytické
* Světelné mapy
* Pomoc texturou
* Předpočítané osvětlení pro statickou scénu
* Pomocí multitexturingu
* Možnost kombinovat s Phongovým modelem osvětlení
===== Distribuované sledování paprsku =====
[[wp>Distributed ray tracing]]
* Jednoduchá modifikace Raytracingu: paprsek nahrazen distribuční funkcí paprsků
* Metoda je přísně deterministická (primární i sekundární paprsky jsou přesně určeny) generuje ideální odraz.
* Každý paprsek je určen distribuční funkcí (pravděpodobnost, že paprsek bude vržen daným směrem).
* Výpočet pomocí Monte Carlo (distribuce vzorkována náhodně zvolenými pokusy, výsledek je vážený průměr všech pokusů).
* Metoda je základem pro techniky //sledování částic// a //sledování cest//
***Supersampling**
* Vhodná metoda k potlačení aliasu
* Pixel je počítán více než z jednoho vrženého paprsku
==== Paprsky z kamery (Eye rays) ====
* **Motion blur**
* Rychle se pohybující objekty jsou rozmazány
* Distribuční funkce může mít časovou složku
* Paprsky vrhány v čase a pak sečteny (víc paprsků každým pixelem)
* **Depth of field**
* Hloubka ostrosti
* Simulace objektivu
* Paprsky nejsou vrhány z jednoho bodu ale procházejí čočkou s různou pravděpodobností
==== Stínové paprsky (Shadow rays) ====
* **Měkké stíny**
* Pravděpodobnost, že bude paprsek vržen do různých míst zdroje
* Tedy už ne bodové zdroje
==== Odražené paprsky (Reflection rays) ====
* **Matně odrazivé povrchy**
* Simulace matnosti na mikroskopické úrovni
* Více odrazných paprsků
* Distribuční funkce
==== Zalomené paprsky (Refraction rays) ====
* **Matné průhledné povrchy**
* Podobně jako odražené sekundární paprsky i zalomené sekundární paprsky nejsou v metodě distribuovaného sledování paprsku vrhány přesně podle zákonů optiky (které jsou uplatnitelné pouze pro ideálně lesklé povrchy), ale distribuční funkce určí variaci normály v daném bodě, která vyjadřuje matnost daného průhledného povrchu.