====== 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.