DIPLOMOVÁ PRÁCE. BRDF dílna

Rozměr: px
Začít zobrazení ze stránky:

Download "DIPLOMOVÁ PRÁCE. BRDF dílna"

Transkript

1 Univerzita Karlova v Praze Matematicko-fyzikální fakulta DIPLOMOVÁ PRÁCE Jiří Matějka BRDF dílna Kabinet software a výuky informatiky Vedoucí diplomové práce: RNDr. Josef Pelikán, KSVI Studijní program: Informatika Studijní obor: Softwarové systémy Praha 2011

2 Děkuji vedoucímu práce RNDr. Josefu Pelikánovi za rady a náměty, kterými mi velmi v přípravě práce pomohl. Dále děkuji Ing. Jaroslavu Křivánkovi, Ph.D. za cenné rady a RNDr. Janu Horáčkovi za zapůjčení počítače pro ladění programu.

3 Prohlašuji, že jsem tuto diplomovou práci vypracoval samostatně a výhradně s použitím citovaných pramenů, literatury a dalších odborných zdrojů. Beru na vědomí, že se na moji práci vztahují práva a povinnosti vyplývající ze zákona č. 121/2000 Sb., autorského zákona v platném znění, zejména skutečnost, že Univerzita Karlova v Praze má právo na uzavření licenční smlouvy o užití této práce jako školního díla podle 60 odst. 1 autorského zákona. V Praze dne 13.dubna 2012 Jiří Matějka

4 Název práce: BRDF dílna Autor: Jiří Matějka Katedra (ústav): KSI Vedoucí diplomové práce: RNDr. Josef Pelikán, KSVI vedoucího: Abstrakt: Cílem práce je navrhnout aplikaci pro interaktivní experimenty s funkcemi BRDF. Uživatel může zadat libovolnou funkci BRDF analytickým vzorcem, včetně definice parametrů. Program poté použije tuto BRDF pro zobrazení jednoduché scény. Parametry funkce jsou přitom uživatelsky měnitelné, s okamžitým dopadem na vzhled scény. Aplikace využívá programovatelné GPU pro dosažení velké rychlosti výpočtu. Klíčová slova: BRDF, multiple importance sampling, resampled importance sampling, interactive relighting, OpenCL. Title: BRDF workshop Author: Jiří Matějka Department: KSI Supervisor: RNDr. Josef Pelikán, KSVI Supervisor s address: Josef.Pelikan@mff.cuni.cz Abstract: This thesis develops an application for interactive experiments with BRDF functions. Arbitrary BRDF function may be specified with an analytic formula, including arbitrary number of parameters. A simple scene is displayed, using specified BRDF. The parameters can be modified which has an immediate impact to the scene s appearance. The application can utilize a programmable GPU for high speed of rendering. Keywords: BRDF, multiple importance sampling, resampled importance sampling, interactive relighting, OpenCL.

5 Obsah Seznam symbolů a zkratek... 6 Úvod Fotorealistická grafika Světlo Radiometrické veličiny BRDF Rovnice odrazu, osvětlovací rovnice Přehled vybraných BRDF modelů Zobrazování 3D scény Monte Carlo integrace Kvazi-Monte Carlo integrace Formulace problému a řešení Požadavky Formulace problému Řešení Existující přístupy Implementace Použité technologie Technologie OpenCL Případy užití aplikace z hlediska implementace Renderovací proces Programování pro GPU Multithreading Výsledky Rendering různých BRDF Výkonnost aplikace Diskuze Závěr Souhrn Splnění cílů Zkušenosti Další rozšíření programu Literatura Příloha A - Uživatelská dokumentace Obsah CD Instalační příručka Uživatelská dokumentace Příloha B Syntaxe vzorce BRDF... 59

6 Seznam symbolů a zkratek Symbol/zkratka ω Φ n θ ϕ R(a,b) Vysvětlení Jednotkový vektor v tečném souřadném systému objektu, kde uvažujeme dopadající nebo odražený paprsek. Tento vektor směřuje vždy ven od tělesa. Zářivý tok Normála Sférická souřadnice příslušného vektoru po převedení do sférických souřadnic Sférická souřadnice příslušného vektoru po převedení do sférických souřadnic Uniformní spojité rozdělení pravděpodobnosti na intervalu (a,b) Množina všech směrů v horní hemisféře nad povrchem tělesa 6

7 Úvod Jedním z cílů prostorové počítačové grafiky je fotorealisticky simulovat zobrazení 3D scény. Pro splnění tohoto úkolu je zapotřebí realistické osvětlení a přesná definice materiálu povrchu. Pro velmi realistické osvětlení počítačové scény se často používá fotografie s vysokým dynamickým rozsahem, která zachycuje světlo přicházející ze všech směrů. Pro přesný popis odrazu světla na povrchu se používá formalismus funkce odrazivosti. Bylo vyvinuto mnoho takovýchto funkcí, které se liší spektrem materiálů, které dokáží přesvědčivě napodobit. Vytvořili jsme program pro zobrazení objektu s libovolnou uživatelsky definovanou funkcí odrazivosti, zadanou analytickým vzorcem. Osvětlení zajišťuje fotografie s vysokým dynamickým rozsahem. Je možné definovat parametry funkce odrazivosti (jako například kovovost), které je možné interaktivně měnit, a upravovat tak vzhled objektu. Náš program umožňuje pohodlně vybrat vhodnou funkci odrazivosti a vhodně nastavit parametry pro požadovaný vzhled objektu. To je užitečné při navrhování grafické scény, pro experimentování s funkcemi odrazivosti, nebo např. i pro tvorbu nových funkcí odrazivosti. V kapitole 1 nastíníme matematické základy fotorealistické grafiky, uvedeme důležité fyzikální veličiny, exaktně definujeme funkci odrazivosti a použití metody Monte Carlo v počítačové grafice. Kapitola 2 formuluje jednotlivé problémy pro dosažení vytčeného cíle a principy jejich řešení. V kapitole 3 popíšeme technické detaily tohoto řešení a také další praktické detaily implementace programu. V kapitole 4 uvedeme praktické výsledky, shrneme rychlost zobrazování a kvalitu výpočtu. 7

8 1 Fotorealistická grafika V této kapitole popíšeme některé teoretické principy dnešní fotorealistické grafiky. Budeme se věnovat pouze tématům, která se týkají zaměření práce. Jedním z cílů počítačové grafiky je fotorealisticky zobrazovat známé optické jevy. Pod pojmem fotorealistický obrázek se rozumí počítačem vygenerovaný obrázek, který je pro člověka téměř nerozeznatelný od obrázku zachyceného např. fotoaparátem. Pro tyto účely jsou dnešní grafické algoritmy založeny na fyzikálních principech šíření světla, a proto při modelování přenosu světla pracují s fyzikálními radiometrickými veličinami. Pro popsání těchto algoritmů musíme nejdříve definovat některé z těchto veličin. 1.1 Světlo Viditelné světlo elektromagnetické záření s vlnovou délkou nm. Vlnovou délku světla vnímá lidské oko jako barvu. Světlo z přírodních zdrojů, jako je např. Slunce, přichází jako soubor mnoha vlnových délek, a proto se jeví jako bílé. Na počítači se barva většinou zjednodušeně modeluje pomocí modelu RGB, kde každá ze tří složek barvy (červená, zelená, modrá) odpovídá množství světla příslušné vlnové délky. Pro popis šíření světla ve scéně se v počítačové grafice většinou využívá geometrická optika. Ta popisuje šíření světla v prostředí, jehož rozměry jsou velké ve srovnání s vlnovou délkou světla. Jinými slovy, ignoruje se vlnová podstata světla a šíření světla se modeluje jako paprsky. V této práci se omezujeme na geometrickou optiku. Světlo se šíří ze světelných zdrojů do prostředí. Při dopadu na objekt se některé vlnové délky pohltí, a některé se odrazí zpět do prostředí. To určuje, jak se daný materiál jeví. Pro zjednodušení uvádíme radiometrické veličiny nezávislé na vlnové délce, uvažujeme vliv záření v celém rozsahu vlnové délky Osvětlovací model Osvětlovací model (reflection model) je obecný pojem pro model osvětlení objektů zdroji světla. Sám o sobě neříká, jestli tento model je fyzikálně založený, nebo empirický (bez záruk na shodu s fyzikální realitou). Lokální osvětlovací model je takový osvětlovací model, který se zabývá osvětlením místa povrchu bez ohledu na okolní objekty. Globální osvětlovací model je naopak model, který pohlíží na scénu jako na celek, dokáže tedy na rozdíl od lokálního modelu vypočítat např. nepřímé osvětlení, což je odražené světlo od okolních objektů, které nejsou světelnými zdroji. 8

9 1.2 Radiometrické veličiny Základní radiometrickou veličinou je zářivý tok (radiant flux). Je to světelná energie procházející oblastí prostoru (nebo dopadající na plochu) za jednotkový čas. Značí se Φ a jeho jednotkou je W (J.s -1 ). Světlo vyzařované světelnými zdroji se někdy uvádí jako zářivý tok, a v tomto případě se nazývá výkon světelného zdroje (power). Iradiance (ozáření, angl. irradiance) je zářivý tok dopadající na jednotkovou plochu, je definována jako plochu (nebo vyzářená z plochy) ze všech směrů. Jednotka je W.m -2. Je to přijímaná energie dopadající na Prostorový úhel (solid angle) je analogií rovinného úhlu rozšířenou do třech dimenzí. Je definován jako plocha na jednotkové sféře, na kterou se promítne objekt, jehož prostorový úhel chceme změřit. Značí se Ω a jeho jednotkou je steradián (sr). Kulová plocha s libovolným poloměrem má plný prostorový úhel, 4π sr. Zásadní radiometrickou veličinou z pohledu počítačové grafiky je radiance. Je definována jako přijímaný či vyzářený zářivý tok na jednotkovém prostorovém úhlu a jednotce plochy kolmo promítnuté na směr tohoto úhlu, tedy Její jednotkou je W.m -2.sr -1. Vyjadřuje množství světla přijímaného nebo vyzářeného ze směru daného vektorem ω za jednotku času a procházející průmětem diferenciální plošky kolmo promítnuté plošky. Obr. 1: Průmět diferenciální plošky na směr přicházejícího paprsku. Zdroj: (Pharr, a další, 2010) Mezi iradiancí a radiancí platí následující vztah: Podle této rovnice je celková iradiance, která přichází do bodu p, integrál přicházejících radiancí přes všechny směry Ω. 1.3 BRDF BRDF (Bidirectional reflectance distribution function, dvousměrová distribuční funkce odrazu) je skalární funkce, která charakterizuje odrazivost povrchu v jeho bodě. Pro 9

10 bod p na povrchu tělesa určuje distribuci odraženého světla na základě příchozího světla. Situace je znázorněna na Obr. 2. Světlo přichází ze směru, normála diferenciální plošky je N, směr odchozího světla pro který zjišťujeme BRDF je. Definice: Obr. 2: Situace v místě vyhodnocení BRDF. Zdroj: (Pelikán, 2010) (1) Hodnotou BRDF je poměr odražené radiance L r a přijaté radiance L i. Přítomnost kosinu plyne z lambertova kosinového zákona, který říká, že množství světla dopadajícího na povrch je tím menší, čím větší je úhel dopadu (počítaný od normály povrchu). Pokud světlo dopadá kolmo na plochu, je přijatý světelný tok největší. BRDF podle naší definice je skalární funkce, nebere ohled na vlnovou délku světla. Ve skutečnosti je závislá na vlnové délce. Tímto zjednodušením se vzdáváme možnosti renderovat efekty jako je disperze světla. Zaměnitelný pojem s pojmem BRDF funkce je BRDF model, a obecnější termín je osvětlovací model (nemusí být definován pomocí formalismu BRDF) Vlastnosti BRDF BRDF v praktických implementacích rozdělujeme na empirické, fyzikálně věrohodné (physically plausible) a fyzikálně založené (physically based). Empirické BRDF nereflektují fyzikální realitu odrazu světla, protože neodpovídají uvedeným vlastnostem BRDF. Fyzikálně věrohodné jsou také empiricky odvozené funkce, které však splňují uvedené vlastnosti. Fyzikálně založené BRDF jsou funkce odvozené z fyzikálních zákonů (např. Fresnelovy vzorce), často však velmi výpočetně náročné. Fyzikálně věrohodné BRDF bývají výpočetně jednodušší při zachování podobného průběhu funkce. Fyzikálně věrohodné, nebo také fyzikálně korektní BRDF musí mít podle (Žára, a další, 2004) následující vlastnosti: Helmholtzův princip reciprocity. Hodnota BRDF zůstane stejná, pokud zaměníme směr dopadu a směr odrazu. Funkce BRDF nemá nikdy zápornou hodnotu. Zákon zachování energie říká, že energie se nemůže vytvořit ani zaniknout, pouze se může měnit z jednoho druhu na jiný. Pro BRDF musí platit 10

11 což jinými slovy znamená, že plocha nemůže odrazit více, než je celková přijatá energie. V kapitole 1.5 uvedeme několik příkladů fyzikálně věrohodných BRDF. 1.4 Rovnice odrazu, osvětlovací rovnice (2) Rovnice odrazu (reflection equation) je základní rovnicí přenosu světla. Popisuje distribuci příchozího světla v bodě povrchu do odchozího světla. Její tvar je podle (Pharr, a další, 2010) následující: (3) Pro zjištění odchozí radiance od bodu p ve směru ω o se zintegruje příchozí radiance ze všech příchozích na směrů na hemisféře a vynásobí se hodnotou funkce BRDF pro tyto dva směry, spolu se započtením kosinového útlumu dopadajícího paprsku podle lambertova zákona. Tato rovnice předpokládá, že žádný z objektů ve scéně není světelným zdrojem, světelný zdroj se musí definovat odděleně. V obecnější podobě musíme započítat radianci L e, kterou objekt v bodě p vyzařuje. Další zobecnění spočívá v integrování směrů přes celou kulovou plochu. To nám dovolí zahrnout do scény průhledné objekty a počítat lom světla v bodě p. V případě lomu se funkce která udává, kolik světla se zalomí jmenuje BTDF (bidirectional transmittance distribution function) a značí se f t. Obecný pojem, který zahrnuje jak BRDF i BTDF je BSDF (bidirectional scattering distribution function), která se značí jednoduše f. Zobecněná rovnice bude mít tvar a nazývá se osvětlovací rovnice (rendering equation, illumination integral). Podle toho, jestli vstupující radiance L i je pouze přímé osvětlení od světelných zdrojů nebo i osvětlení od objektů, které nejsou zdroji světla, vyjadřuje tato rovnice lokální, resp. globální osvětlovací model. V této práci se budeme zabývat výpočtem integrálu rovnice odrazu, a to pouze v lokálním osvětlovacím modelu. Vynecháme tak efekty globálního osvětlování, ale ušetříme na výpočetní složitosti. 11

12 1.5 Přehled vybraných BRDF modelů Zde uvedeme několik příkladů analytických funkcí BRDF. Pro další příklady BRDF odkazujeme na vyčerpávající přehled analytických BRDF v diplomové práci (Krahulík, 2005) Používané reprezentace BRDF BRDF bývá nejčastěji reprezentována dvěma způsoby. Nejpoužívanější je analytická funkce, která je často empirická. Tyto funkce jsou většinou navrženy tak, aby splňovaly fyzikální vlastnosti BRDF. Takováto BRDF může být použita k modelování mnoha různých materiálů. Kromě parametrů z definice BRDF (rovnice (1)) potom funkce obsahuje navíc typicky malý počet parametrů, které ovlivňují vzhled materiálu. Příkladem může být kovovost. Existuje mnoho různých modelů BRDF, které se hodí pro modelování různých materiálů. Tento přístup je paměťově málo náročný, pro definici konkrétního materiálu stačí uložit hodnoty parametrů použité BRDF. V této práci se zabýváme uživatelským zadáním analytické BRDF a jejím zobrazením. Další používaný způsob reprezentace je tabulka naměřených hodnot (measured BRDF). Hodnoty jsou měřeny vzorkováním z reálných materiálů v laboratoři. Použitím této metody lze dosáhnout velmi realistického vzhledu objektů. Tento přístup je však dosti paměťově náročný, protože pro věrné zachycení BRDF je potřeba použít velké množství vzorků. Existuje několik veřejně přístupných databází s naměřenými daty. Jako příklad uveďme databázi CURET (Dana, a další, 1999), která obsahuje měření 60 různých materiálů. Pro zjednodušení použití naměřených BRDF se používá BRDF fitting. Po naměření je daná BRDF aproximována do vybraného analytického BRDF modelu. To znamená, že jsou nalezeny takové parametry vybrané analytické BRDF, které nejlépe odpovídají naměřeným datům. Např. pro databázi (Dana, a další, 1999) byl použit model Oren-Nayar. Popis měření BRDF a aproximace je popsán v (Dana, a další, 1999) Druhy BRDF podle odrazu světla Různé materiály odrážejí světlo různým způsobem. Podle toho, jaká je distribuce odraženého světla, můžeme definovat tři základní druhy odrazu difuzní, zrcadlový a zpětný. Difuzní (matný) povrch odráží příchozí světlo rovnoměrně do všech směrů (např. křída), lesklý naopak odráží většinu světla podle zákona odrazu (např. leštěné kovy). Třetí skupinou jsou zpětné odrazy (retro-reflection), které odrážejí většinou světla zpět do směru, odkud přišlo. Analytické BRDF často obsahují jak difuzní, tak lesklou složku, jejichž příspěvek může být nastaven pomocí parametrů. Na Obr. 3 jsou zobrazeny druhy odrazu. Anizotropie povrchu. Anizotropie znamená, že povrch materiálu odráží světlo různě v závislosti na tom, jak je směr příchozího světla natočen podle normály v daném místě (např. některé kovy, jako třeba broušený hliník). Izotropní povrch tuto vlastnost nemá. Pokud uvažujeme anizotropii, do definice BRDF přibude další parametr natočení povrchu kolem normály. 12

13 Obr. 3: Druhy BRDF podle typu odrazu. Tučnou čarou je označen směr přicházejícího světla. a) difuzní odraz, b) lesklý odraz, c) zrcadlový odraz, d) zpětný odraz. Zdroj: (Pharr, a další, 2010) Značení V praxi se barva RGB příchozího světla (která vyjadřuje distribuci vlnových délek v příchozím světle) vynásobí po složkách s hodnotou BRDF. Dostaneme tím RGB barva, která vyjadřuje distribuci vlnových délek v odraženém světle. Ve vzorcích vynecháme pro stručnost dolní index u f r, protože uvažujeme pouze funkce BRDF a také parametr p, protože uvažujeme jeden určitý bod na povrchu. Výpočet BRDF probíhá v lokálním (tečném) souřadném systému bodu. Tento souřadný systém má za jednu osu normálu povrchu, a další dvě osy (na Obr. 4 zobrazené jako vektory x a y) leží v rovině povrchu. Jedná se o tzv. tangentu a bitangentu (často nazývanou také binormála). Tento souřadný systém je výhodný pro vyhodnocení BRDF, protože není závislý na pozici daného bodu ve světovém souřadném systému. 13

14 Obr. 4: Souřadný systém v místě vyhodnocení BRDF. i je směr přicházejícího světla, o je směr ke kameře, h je tzv. half-vektor, definovaný jako (i+o)/ Lambertův model Tento model je nejjednodušší osvětlovací model. Popisuje dokonale difúzní odraz, příchozí světlo je odraženo rovnoměrně do všech směrů. Dělení π je zde proto, aby platil zákon zachování energie z odstavce (4) Phongův model Phongův model byl dlouhou dobu asi nejrozšířenější empirický osvětlovací model. Byl totiž zahrnut do standardu grafické knihovny OpenGL a implementován hardwarově ve většině grafických karet. Tato funkčnost byla označena jako zastaralá ve verzi OpenGL 3.0 (viz specifikaci (Segal, a další, 2008)) a odstraněna ve verzi 3.1. Zde uvedeme fyzikálně věrnou variantu, uvedenou v (Lafortune, a další, 1994): α je úhel mezi normálou povrchu a ω i. Parametry modelu jsou: k d koeficient difuzní složky, s hodnotami 0-1. k s koeficient zrcadlové složky s hodnotami 0-1. Aby pro model platil zákon zachování energie, musí navíc platit. n lesklost. Čím větší má hodnotu, tím více se povrch blíží zrcadlu Dokonale lesklý odraz Dokonale lesklé těleso odráží veškeré příchozí světlo ze směru do směru ω r, který je s ním symetrický podle normály. Vektor odraženého světla se spočítá jako. Pokud funkce BRDF odráží veškeré příchozí světlo jedním směrem, může být definována jako Diracův impuls (Pharr, a další, 2010). Diracův impuls (δ) je funkce nulová v celém definičním oboru R s výjimkou nuly, kde nabývá nekonečné hodnoty. Impuls je tedy nekonečně úzký. Má tzv. filtrační vlastnost. (5) BRDF funkci dokonalého zrcadlového odrazu formálně definujeme takto: (6) 14

15 kde operace odečítání v čitateli funguje po složkách vektoru. Kosinus ve jmenovateli je proto, že zrcadlový odlesk neklesá se zvětšujícím se úhlem dopadu. Pro jiné odchozí vektory než je vektor odrazu funkce vrací nulu Fresnelovy vzorce Člen F r v rovnici dokonalého odrazu je Fresnelův vzorec. Ten určuje fyzikálně reálné množství odraženého a lomeného světla při odrazu a lomu. Vzorce se liší pro dielektrika a pro vodiče. Pro tyto případy se dále liší podle polarizace světla. V této práci se polarizací světla nezabýváme, a uvedeme proto aproximace vzorců z (Pharr, a další, 2010) pro nepolarizované světlo. Označme po řadě θ i, θ r, θ t úhel dopadu, odrazu a lomu. Fresnelův vzorec odrazu pro dielektrikum je podle (Pharr, a další, 2010) takovýto: kde η t je index lomu tělesa a η i je index lomu vnějšího prostředí. Vzorec pro vodič je kde vystupuje index lomu (vodiče nelomí světlo, ale index lomu je pro ně definován). k je absorpční koeficient. Oba tyto parametry jsou závislé na daném chemickém prvku a vlnové délce dopadajícího světla Torrance-Sparrow model (Torrance, a další, 1967) vyvinuli model vhodný pro kovové povrchy založený na mikroploškách. Povrch tělesa modeluje jako žlábky ve tvaru písmene V, které jsou ze zrcadlových mikroplošek (Obr. 5). Tvar BRDF je podle (Pharr, a další, 2010) následující: (7) kde ω h je tzv. half-vector, definován jako příchozím a odchozím vektorem.. Je to průměrný vektor mezi 15

16 Obr. 5: Zastínění mikroplošek a situace v místě vyhodnocení modelu Torrance-Sparrow Protože jsou mikroplošky dokonale zrcadlové, pouze ty, pro které je ω h rovný lokální normále mikroplošky, budou přispívat k osvětlení bodu. Faktor D je hustota pravděpodobnosti určující kolik plošek je orientováno daným směrem: kde σ je parametr modelu udávající lesklost tělesa, pro matná tělesa má malou hodnotu. Funkce G je geometrické zastínění (geometrical attenuation). Některé plošky si vzájemně stíní, tato funkce udává hodnotu (mezi 0 a 1) kolik z přicházejícího světla zůstalo nezastíněno. Má tento tvar: Faktor F je Fresnelův vzorec odrazu, popsaný v odst Oren-Nayar model Oren-Nayar je další mikroploškový model uvedený v(oren, a další, 1994), který oproti Torrance-Sparrow modelu modeluje mikroplošky jako dokonale difuzní (lambertovské). Jeho definice je podle (Pharr, a další, 2010) následující: Model má dva parametry: což je difuzní odrazivost a σ udává míru hrubosti povrchu, 0 znamená zcela hladký povrch. Model je vhodný pro modelování drsných matných povrchů. Obr. 6: a) Fotografie keramické vázy, b) Lambertův model vázy, c) Oren-Nayarův model vázy. Model Oren-Nayar modeluje vázu lépe, na okrajích se světlost příliš nemění, na rozdíl od Lambertova modelu. Zdroj:(Ore) 16

17 1.5.9 Wardův anizotropní model Ve Wardově článku (Ward, 1992) byl popsán jednoduchý anizotropní fyzikálně věrohodný osvětlovací model. Je určen pro snadnou aproximaci BRDF funkce z reálných materiálů naměřené pomocí gonioreflektometru. Skládá se z jednoduché difuzní složky a složitější zrcadlové. Modeluje povrch také pomocí mikroplošek, ale pro efektivnější vyhodnocení nepoužívá geometrický faktor G jako u modelu Torrance- Sparrow. BRDF je Parametry: k d koeficient difuzního odrazu k s koeficient zrcadlového odrazu a x standardní odchylka sklonu mikroplošky ve směru tangenty povrchu a y standardní odchylka sklonu mikroplošky ve směru bitangenty povrchu Míru anizotropie určuje rozdíl mezi a x a a y. Ward provedl fitting několika anizotropních materiálů na svůj BRDF model, pro příklad uveďme jemně broušený hliník, který má parametry Vícevrstvé materiály a BSSRDF Uvedli jsme několik příkladů klasických BRDF modelů, které jsou používané již delší dobu. Uvedeme ještě příklad poměrně nového modelu z roku Pro zobrazování materiálů tvořených z několika vrstev byly vyvinuty vícevrstvé osvětlovací modely. Zcela korektní rendering těchto materiálů vyžaduje zahrnout do výpočtu šíření světla pod povrchem tělesa tak, že část světla přicházející do jednoho bodu povrchu se může vyzářit v jiném bodě povrchu. Tento jev se nazývá subsurface scattering a pro jeho využití je potřeba zavést rozšíření formalismu BRDF, funkci BSSRDF (bidirectional subsurface scattering reflectance distribution function), jejíž parametry jsou kromě vstupního a výstupního směru také bod tělesa, kde světlo vchází a bod tělesa, kde světlo vychází. Lze tak renderovat materiály jako mléko, vosk apod. Simulace šíření světla pod povrchem je velmi výpočetně náročná a proto byly hledány postupy, jak zjednodušit rendering vícevrstvých materiálů a zůstat u funkce BRDF. Jedním z přístupů je koncept uveřejněný v článku (Weidlich, a další, 2007), který si popíšeme Model vícevrstvého materiálu (Weidlich, Wilkie) Tento model umožňuje simulaci materiálu složeného z libovolného počtu vrstev. Každá vrstva může mít libovolnou mikroploškovou BRDF. Horní vrstvy jsou částečně průhledné, až na poslední vrstvu, která je neprůhledná, světlo se od ní pouze odráží (viz Obr. 7). To není velké omezení, protože existují modely pro matné i lesklé povrchy, např. výše uvedené Oren-Nayar resp. Torrance-Sparrow. Dále se předpokládá, že světlo vstupující na povrch v nějakém bodě vystoupí v témže bodě (přesněji v téže mikroplošce). To znamená, že jako funkci odrazivosti lze použít BRDF. 17

18 Obr. 7: Dvouvrstvý materiál složený z mikroplošek. Vlevo: model šíření světla. Vpravo: Objekt s definovaným dvouvrstvým materiálem simulující metalickou automobilovou barvu. Zdroj: (Weidlich, a další, 2007) Vyhodnocení modelu probíhá rekurzivně. Uvedeme zde tvar BRDF pro dvě vrstvy: kde a je absorpční koeficient tvaru a kde d je tloušťka vrstvy, konstanta pro materiál (závislá na vlnové délce), která udává schopnost vrstvy absorbovat procházející světlo. 1.6 Zobrazování 3D scény Pokud chceme vypočítat obrázek, který reprezentuje 3D scénu, musíme pro každý pixel obrázku spočítat příchozí radianci. Existuje mnoho metod globálního osvětlování, velká skupina používaných metod je založena na sledování paprsku. Základní princip si stručně popíšeme. Do scény umístíme virtuální průmětnu, která reprezentuje kameru (Obr. 8). Z průmětny posíláme paprsky do scény, a pokud se střetnou s objektem, odhadneme v tom bodě integrál osvětlovací rovnice. To je provedeno tak, že se z tohoto bodu vybere jeden směr (v případě metody path tracing), ze kterého se zjišťuje příchozí osvětlení pošle se tím směrem paprsek do scény a jeho příspěvek osvětlení se započítá pomocí osvětlovací rovnice. Tato úloha má tedy rekurzivní charakter. Sekvence několika na sebe navazujících paprsků se označuje jako cesta (path). Zajímají nás pouze cesty, které končí ve světelném zdroji, protože pouze takové nesou radianci a přispívají tak k osvětlení. 18

19 Obr. 8: Situace u metod sledování paprsku. Zdroj:(Krahulík, 2005) Základní otázka je, jak dobře odhadnout integrál osvětlovací rovnice. Složitost integrálu je veliká. Tento integrál je ve své podstatě rekurzivní, protože radiance přijatá v nějakém bodě musí být nejdříve z nějakého bodu vyzářena. Pokud to není světelný zdroj (nepřímé osvětlení), tak je potřeba nejdříve spočítat odchozí iradianci v tomto bodě, a tak dále. Spočítat integrál obecně analyticky je podle (Žára, a další, 2004) nemožné, až na triviální případy. V praxi se proto integrál odhaduje numericky. 1.7 Monte Carlo integrace Monte Carlo integrace je pravděpodobnostní metoda odhadu určitého integrálu s libovolnou dimenzí. Pracuje tak, že vyhodnocuje vzorky v oboru (mezích) integrálu. Předpokládejme jednorozměrný integrál, jehož meze jsou a a b: Jedním ze způsobů, jak odhadnout integrál, je výraz (8) Generujeme N náhodných vzorků z uniformního rozdělení z oboru integrálu a pro každý z nich vyhodnocujeme integrand. V (Pharr, a další, 2010) je uveden jednoduchý důkaz, že střední hodnota tohoto odhadu je rovna hodnotě integrálu. Jelikož je X náhodná veličina, je i odhad náhodná veličina. I když má střední hodnotu rovnou odhadovanému integrálu, výsledek se může hodně lišit, kvůli velkému rozptylu. Rychlost konvergence je O( ), což znamená, že pokud zečtyřnásobíme počet vzorků, kvalita odhadu se zvětší jen dvakrát (rozptyl se zmenší dvakrát). Snahou je zrychlit konvergenci, na což existuje mnoho metod. Jednou ze základních metod zlepšení odhadu je použít výraz typu (9) 19

20 kde p(x) je libovolná hustota pravděpodobnosti se kterou generujeme náhodné vzorky (ale musí být nenulová tam kde f(x) je nenulová). Pokud je f(x) podobná p(x), přesněji řečeno, pokud je hustota pravděpodobnosti funkce f(x) podobná funkci p(x), pak dochází k podstatnému poklesu rozptylu. Proto je vhodné vzorkovat v oblastech, ve kterých má integrand velkou hodnotu, a tak se hodně podílí na výsledku. Tato metoda se nazývá vzorkování podle důležitosti (importance sampling). V oblastech s nízkou hodnotou integrandu se generuje méně vzorků (v porovnání v uniformním vzorkováním). Dokonce i v případě, že integrujeme součin a generujeme vzorky podle hustoty pravděpodobnosti podobné jen jednomu z činitelů, dochází ke zlepšení výsledku. Připomeňme rovnici odrazu která je součinem tří členů. V praxi se používá importance sampling jak podle příchozího osvětlení L i, tak podle BRDF f r a také podle kosinu. Tyto metody nyní popíšeme. Pro efektivní využití importance samplingu musíme hustotu pravděpodobnosti dobře zvolit, tak, aby byla alespoň trochu úměrná integrandu. Pokud by měla zcela jiný tvar, dojde podle (Pharr, a další, 2010) naopak ke zhoršení výsledku metoda může dávat horší výsledek než uniformní vzorkování. Nyní uvedeme některé používané metody vzorkování při vyhodnocování rovnice odrazu Cosine weighted sampling Toto vzorkování vybírá směry na hemisféře tak, aby jich více leželo v horní části. Vzhledem ke členu cosθ v rovnici odrazu totiž takové vzorky budou přispívat do celkového výsledku více než vzorky s velkým úhlem dopadu (při předpokladu že z obou oblastí přichází stejná radiance). Podle (Dutré, 2003) je hustota pravděpodobnosti a ze dvou uniformně rozdělených čísel ξ 1 a ξ 2 z R(0, 1) určí souřadnice vzorku jako BRDF importance sampling Z Obr. 3 c) je patrné, proč je vzorkování BRDF podle důležitosti tak užitečné v případě že bychom BRDF z obrázku vzorkovali uniformně přes všechny směry hemisféry, jen velmi málo vzorků (pokud vůbec nějaké) se trefí do zrcadlového laloku. Obecně je tato metoda zásadní pro lesklé BRDF, pro difuzní odraz tak klíčová není. Na vstupu tato metoda dostane vzorky vygenerované z uniformního rozdělení, a tyto vzorky přetransformuje do rozdělení, které je úměrné dané BRDF. Tato transformace je různá pro každou BRDF, a proto autoři často kromě definice samotné BRDF definují také vzorkování pro importance sampling. 20

21 Uvedeme příklad pro Phongův model podle (Křivánek, 2010). Tato procedura vzorkuje ze součinu BRDF a kosinu. 1. Vygeneruj ξ 0 z uniformního rozdělení R(0, k s +k d ) 2. Pokud ξ 0 < kd, vzorkuj z difuzní složky (cosine weighted) a. Vygeneruj ξ 1 a ξ 2 z R(0, 1) b. Sférické souřadnice vzorku jsou θ 3. Jinak vzorkuj z lesklé složky a. Vygeneruj ξ 1 a ξ 2 z R(0, 1) b. Sférické souřadnice vzorku jsou θ. Vzorkování z difuzní složky je totožné jako vzorkování v odstavci 20. Vzorkování pro lesklou složku však funguje jinak. Vzorek se vybírá z kosinového laloku (cosine lobe). Osa tohoto laloku splývá s normálou. Šířka (a výška) laloku je určena číslem n, což je parametr Phongova modelu udávající lesklost. Čím lesklejší je materiál, tím více bude lalok užší. Pro použití vzorku je třeba jej transformovat tak, aby osa laloku splývala s vektorem zrcadlově odraženého světla vzhledem k vektoru přicházejícího světla. Aby vzorkování odpovídalo hodnotám BRDF funkce, větší počet vzorků je generován na horní straně laloku, protože tam je BRDF funkce největší, a hodně tedy přispívá k výsledku integrálu. Obr. 9: Kosinový lalok. Zdroj: (Pharr, a další, 2010) Light importance sampling Vzorkování podle důležitosti ze světla (light importance sampling) vybírá více vzorků ze směrů, ze kterých přichází více světla. Je užitečná například v případě, že je světelný zdroj malý (Obr. 10). Světelným zdrojem může být obecně jakékoli těleso ve scéně, my se omezíme na popis vzorkování z nekonečně vzdáleného světelného zdroje. Lze ho reprezentovat jako nekonečně velkou krychli nebo kouli, což bude náš případ. Pro realistické osvětlování scény se používá tzv. mapa prostředí (environment map). Je to určitý druh panoramatické fotografie, která zachycuje přicházející radianci ze všech směrů. Existuje několik používaných mapování z kulové plochy na 2D obrázek, my jsme vybrali často používané latitude-longitude mapping (někdy označované jako equirectangular), které používá jeden obdélníkový obrázek a zachovává rovnoběžné poledníky a rovnoběžky. 21

22 Obr. 10: Vzorkování podle důležitosti. Vlevo vzorkování podle BRDF, vpravo vzorkování podle světla. Destičky se liší lesklostí (lesklá je ta nevzdálenější). Na přední destičce levého obrázku je vidět, jak vzorkování podle BRDF selhává u růžového světla, protože zdroj je příliš malý. BRDF je spíše difuzní, a vzorky jsou spíše uniformní, a netrefí se do světla příliš často. Zdroj:(Veach, 1997) Vzorkování podle důležitosti z mapy prostředí Předpokládejme, že obrázek o rozměrech w, h máme reprezentován funkcí g(i,j), která vrací radianci z obrázku v bodě (i,j). Pro potřeby vzorkování definujeme diskrétní po částech konstantní funkci f(u,v) definovanou v jednotkovém čtverci (u,v) [0,1] 2 jako. Konstantní hodnotu má v částech, které odpovídají velikosti pixelu. Protože mapování latitude-longitude nezachovává plochu (u pólů dochází k velkému zkreslení, protože v obrázku jsou roztaženy na celou šířku), je nutné obrázek přeškálovat vynásobením sin(uπ), což zajistí zmenšení příchozí radiance na pólech. K tomu, abychom mohli vzorkovat z mapy prostředí, potřebujeme hustotu pravděpodobnosti. Pro tu potřebujeme funkci f zintegrovat, což vzhledem k tomu, že je po částech konstantní, se provede takto: Dvojdimenzionální hustota pravděpodobnosti bude Dále definujeme marginální hustotu pravděpodobnosti Tato funkce je jednorozměrné rozdělení, které je reprezentováno h hodnotami a je to tudíž po částech konstantní funkce. Podmíněná pravděpodobnost po vybrání hodnoty v bude (10) 22

23 což je opět po částech konstantní spojitá funkce. Samotné vzorkování z marginálního a podmíněného rozdělení probíhá pomocí inverzní funkce. Spočítají se distribuční funkce P a P jako Potom pro ξ 1 z rozdělení R(0,1) je vzorek ξ 1 ) vybrán s rozdělením p. Tím jsme vybrali řádek. Potom následuje ξ 2 z rozdělení R(0,1), a vzorek ξ 2 ), který je vybrán s rozdělením p(u v). Tím jsme vybrali i sloupec a máme tak vybrán jeden pixel z mapy prostředí. Jeho hustota pravděpodobnosti však nebude přímo p(u,v,), protože to je hustota definovaná na jednotkovém čtverci, my ale potřebujeme vzorkovat s hustotou odpovídající sféře. Proto hustotu p(u,v,) transformujeme podle (Pharr, et al., 2010) na Multiple importance sampling Popsali jsme používané metody pro vzorkování podle důležitosti, nyní zbývá popsat, jak tyto metody spojit při Monte Carlo integraci. V dizertaci (Veach, 1997) bylo popsáno, jak spojit vzorkování podle důležitosti BRDF a světelného zdroje. Dokonce bylo obecně popsáno, jak spojit libovolný počet vzorkovacích technik. Pro vícenásobné vzorkování podle důležitosti se použije následující estimátor. Předpokládáme, že máme n vzorkovacích technik, pro každou z nich vybíráme n i vzorků, a pro každou z nich známe hustotu pravděpodobnosti p i. (11) Každá vzorkovací technika má přiřazenou váhu w, která se může měnit podle aktuálního vzorku. Tyto funkce mohou být vybrány libovolně, ale musí splňovat tyto podmínky: Vhodná volba váhových funkcí je tzv. vyvážená heuristika (balance heuristic). Je definována jako Přednosti vícenásobného vzorkování podle důležitosti jsou zřetelné na Obr

24 Obr. 11: Multiple importance sampling. Vlevo vzorkování podle BRDF, uprostřed vzorkování podle světelného zdroje, vlevo multiple importance sampling. 1.8 Kvazi-Monte Carlo integrace Kvazi-Monte Carlo je deterministická metoda odhadu integrálu velmi podobná Monte Carlo integraci. Místo náhodných čísel pracuje s deterministickými vzorky s nízkou diskrepancí (low discrepancy sequences). Diskrepance je měřítko pro určení toho, jak dobře (rovnoměrně) jsou nějaké vzorky rozmístěny. Pro ilustraci uvedeme Obr. 12. Pseudonáhodné vzorky z tohoto srovnání nevycházejí příliš dobře. Formální definice diskrepance je uvedena např. v (Pharr, a další, 2010), zde uvedeme jen ideu. Předpokládáme n-dimenzionální vzorky v doméně [0,1] n. Tato krychle se rozdělí na disjunktní oblasti (typicky malé krychličky) a pokud v každé z nich je přibližně stejně vzorků, řekneme, že dané vzorky mají nízkou diskrepanci. Obr. 12: Srovnání pseudonáhodného vzorkování (vlevo) a vzorkování s nízkou diskrepancí (vpravo), na kterém je vidět, že vzorky jsou mnohem rovnoměrněji rozmístěny. Zdroj:(Wong, a další, 1997) Haltonova sekvence Jednou ze sekvencí s nízkou diskrepancí je Haltonova sekvence (Halton sequence). Její výhodnou je to, že je hierarchická, což podle (Wong, a další, 1997) znamená, že její prvky nejsou závislé na celkovém počtu potřebných vzorků. Z této sekvence lze tedy vybírat, aniž bychom předem věděli kolik vzorků budeme potřebovat. 24

25 Podle (Wong, et al., 1997) lze každé nezáporné celé číslo k vyjádřit pomocí prvočísla p jako r členů kde Dále definujme Nechť d je dimenze prostoru, ze kterého chceme vzorky vygenerovat. Potom pro d prvočísel má Haltonova sekvence tvar d-tice Kvazi Monte Carlo estimátor Pro základní podobu estimátoru předpokládejme, že integrujeme funkci na doméně [0,1] n. Estimátor má tvar aritmetického průměru: kde x i jsou body z deterministické sekvence, a pro sekvence s malou diskrepancí dává podle (Szirmay-Kalos, 2000) malou chybu, protože vzorky jsou rovnoměrně rozmístěny. Importance sampling existuje i pro kvazi Monte Carlo metodu, ale protože nepracujeme s rozdělením pravděpodobnosti, musíme estimátor definovat jinak. Předpokládejme integrovanou funkci f, nyní již s n dimenzionální V, a bijekci, která zobrazuje doménu V do domény V. Potom provedeme transformaci souřadnic v integrálu: kde J je Jacobiho determinant inverzního zobrazení T -1 (které musí existovat, protože jde o bijekci): (12) Kvazi Monte Carlo estimátor má tvar (13) pro libovolnou bijekci T. Opět jako v případě stochastického importance samplingu dochází ke zlepšení odhadu tehdy, pokud T je úměrná funkci f. Podrobnější popis je uveden například v (Szirmay-Kalos, 2000), odkud jsme čerpali. Importance sampling tedy funguje nezávisle na tom, jestli používáme stochastickou nebo deterministickou integrační metodu. 25

26 2 Formulace problému a řešení Našim cílem je naimplementovat grafickou aplikaci umožňující textové zadání analytické BRDF s možností interaktivně měnit parametry dané BRDF a sledovat změny v zobrazení tělesa s touto BRDF. V této části popíšeme požadavky kladené na aplikaci a výsledná řešení těchto požadavků. Uvedeme zde hlavní principy řešení a vynecháme technické detaily, které uvedeme v kapitole Implementace. 2.1 Požadavky Hlavním požadavkem na aplikaci je možnost textového zadání vzorce analytické BRDF. To mimo jiné znamená, že program nebude dopředu znát použitou BRDF funkci. Vzorec může obsahovat libovolné množství parametrů. Aplikace by měla zvládnout zobrazovat široké spektrum běžných BRDF. Aplikace bude zobrazovat scénu s jedním objektem s aplikovanou zadanou BRDF a HDR mapou osvětlení. Po zadání BRDF bude uživatel moci upravovat parametry. Při změně parametru se zobrazení scény upraví s rychlostí, která se bude blížit realtimovému zpracování. Dva hlavní požadavky jsou tedy rychlost při zachování dostatečné kvality obrazu, obecnost zadání BRDF a možnost interaktivně měnit parametry BRDF Omezení Pro zachování vysoké rychlosti vykreslování jsme přijali některá omezení. Budeme vyhodnocovat pouze přímé osvětlení, tj. pouze osvětlení ze světelného zdroje. To znamená, že nebudeme vykreslovat vícenásobné odlesky ani nepřímé difuzní osvětlení. V naší scéně bude pouze jeden homogenní objekt (tj. bude mít všude stejnou BRDF), který není světelným zdrojem. Ve scéně bude jeden světelný zdroj, tvořený nekonečně vzdálenou kulovou plochou, ve které je scéna uzavřena. Z důvody rychlosti nebudeme uvažovat zastínění světelného zdroje jinou částí téhož objektu. 2.2 Formulace problému Zadání, které bylo nutno vyřešit, je rendering za daných podmínek předem neznámá BRDF a mapa osvětlení (obě si bude uživatel moci při práci s programem libovolně změnit). Tato úloha znamená v každém bodě tělesa, které má být vidět na výsledném obrázku, vyhodnotit osvětlovací rovnici: (3) Jedná se o dvourozměrný integrál přes směry příchozího světla na hemisféře, který je součinem tří členů. Pro efektivní vyhodnocení integrálu jsme zvolili metodu Monte 26

27 Carlo s multiple importance samplingem, jak bude podrobněji popsáno níže. Jak jsme uvedli v kapitole o Monte Carlo integraci (1.7), dobrých výsledků dosáhneme, pokud vzorky vybírané do Monte Carlo estimátoru jsou co nejvíce úměrné integrandu, nebo některému činitelů integrandu (v případě integrandu ve tvaru součinu, což je náš případ). V praxi se používá vybírat vzorky podle hustoty pravděpodobnosti odpovídající každému z činitelů příchozí světlo, BRDF funkce a kosinus. Příspěvky osvětlení každé vzorkovací metody lze sečíst pomocí multiple importance samplingu. Tato technika vede k velmi kvalitním výsledkům. Nyní zrekapitulujeme techniky vzorkování v kontextu našich omezujících podmínek. Vzorkovat podle kosinového rozložení na hemisféře je snadné, techniku jsme uvedli v kapitole Více vzorků bude soustředěno v horní části hemisféry. Tento činitel je v naší rovnici neměnný. Příchozím světlem ( ) do osvětlení naší scény přispívá jediný světelný zdroj, který obklopuje celou scénu. Je představován statickým HDR obrázkem. Pro něj lze snadno spočítat rozdělení pravděpodobnosti jasu jednotlivých pixelů a vzorkovat z něj přesně podle tohoto rozdělení, jak je popsáno v kapitole Tento výpočet lze provést jen jednou po vybrání mapy osvětlení uživatelem, a protože je obrázek statický, nebude se během dalšího renderingu měnit. Vzorkovat podle hustoty pravděpodobnosti neznámé BRDF funkce je složitější a pro náš klíčový problém. Průběhy různých BRDF funkcí mohou být velmi odlišné podle typu materiálu, jak je vidět na Obr. 3. Použití špatné techniky vzorkování může dát horší výsledek než uniformní vzorkování, které je ale pro více lesklé BRDF velmi neefektivní technika. Kdybychom znali hustotu pravděpodobnosti BRDF funkce, můžeme vzorkovat metodou vzorkování inverzní distribuční funkce, ale hustotu neznáme (museli ji bychom i umět zintegrovat a invertovat). Určit hustotu pravděpodobnosti je výpočetně obtížný problém, musíme k tomu znát integrál funkce: V integrálu osvětlovací rovnice už ale BRDF figuruje, a dostáváme se tedy k řešení problému kruhem jak efektivně spočítat integrál neznámé funkce. Tento přístup nám tedy nepomůže a musíme hledat metodu, které nám dovolí vypočítat integrál osvětlovací rovnice bez znalosti hustoty BRDF funkce. Funkci BRDF můžeme pouze vyhodnocovat. Metoda rejection sampling umožňuje vzorkovat z neznámé funkce tak, že se najde hustota, ze které umíme vzorkovat, a která je až na multiplikativní konstantu větší než neznámá funkce a funkci co nejlépe aproximuje. Museli bychom však najít funkci, která dobře aproximuje neznámou BRDF. Nevýhoda rejection samplingu je také možnost neomezeného času výpočtu. Zcela vynechat vzorkování z BRDF podle důležitosti nebude dobře fungovat v případech, kdy funkce BRDF dosahuje velkých hodnot v malé části definičního oboru 27

28 (hemisféry). Uvažujme BRDF funkci velmi lesklého materiálu. V takovém případě se vzorky ze světla trefí do lesklého laloku orientovaného ve směru odrazu jen výjimečně a všechny ostatní vzorky BRDF vynuluje, protože mimo zrcadlový lalok je tato BRDF nulová (příspěvek osvětlení daného pixelu z nich bude nulový). Odhad integrálu bude velmi špatný. 2.3 Řešení V této kapitole uvedeme, jakým způsobem jsme řešili problémy našeho zadání, zformulované výše. Uvedeme zde řešení spíše z teoretického hlediska, implementační detaily uvedeme kapitole 3. Použili jsme zjednodušené šíření světla ve scéně, kdy cesty od kamery do světelného zdroje mají délku nejvýše dvě. Cestu délky jedna, tj. primární paprsek nezasáhne těleso, a cestu délky dvě, tj. primární paprsek těleso zasáhne. V tom případě vyšleme do scény několik sekundárních paprsků. Protože náš světelný zdroj obklopuje celou scénu a přijali jsme zjednodušení, kde nepředpokládáme že sekundární paprsek může do narazit do tělesa, máme jistotu, že sekundární paprsek vždy do světelného zdroje narazí. Omezili jsme se na analytické BRDF zadané vzorcem, nepodporujeme naměřené BRDF (measured BRDF). Naproti tomu uživatel může zadat libovolně komplexní vzorec v procedurálním jazyce, velmi podobnému jazyku C, s libovolným počtem parametrů. Vzorec dostane k dispozici vektor vstupního a výstupního paprsku v tečném souřadném systému daného bodu povrchu, což zjednodušuje výpočet. Zvolili jsme Monte Carlo jako metodu pro výpočet integrálu osvětlovací rovnice. Pro vzorkování z neznámé BRDF a urychlení konvergence výpočtu jsme použili metodu resampled importance sampling, kterou popíšeme níže. Vzorkujeme vícenásobně podle důležitosti ze světelného zdroje a z několika pevných kosinových laloků Pozorování Analytické BRDF funkce jsou téměř vždy parametrické, aby pokryly více druhů materiálů. Parametr typicky velmi ovlivňuje tvar funkce. Příkladem může být lesklost z Phongova modelu, nastavení lesklosti na malou a velkou hodnotu dává zcela jiný model odrazu světla a těleso potom vypadá odlišně. Každý parametr také ovlivňuje tvar funkce jinak. V kontextu této práce, kdy dovolujeme libovolnou změnu parametrů, musíme jednu BRDF s dvěma odlišnými nastaveními parametrů považovat za dvě různé BRDF. Nezjišťujeme, jestli se BRDF změnila jen málo při malé změně parametru Resampled importance sampling V článku (Talbot, a další, 2005) je uvedena metoda pro potlačení variance při výpočtu integrálu metodou Monte Carlo. Jedná se o úpravu metody Importance resampling, která se podle autorů článku běžně používá ve statistice. Tato nová metoda byla pojmenována Resampled importance sampling (RIS). Tato metoda má pro nás významnou výhodu, sice že umožňuje vzorkovat z rozdělení pravděpodobnosti 28

29 podle funkce, pro kterou neznáme hustotu pravděpodobnosti (jinými slovy, z rozdělení pravděpodobnosti, které není normalizované). Metoda pracuje na principu filtrování vzorků vybraných z nějakého jiného normalizovaného rozdělení vážením proti požadované funkci. Mějme funkci f, jejíž integrál chceme vypočítat. Mějme funkci g, u které neznáme pravděpodobnostní rozdělení, ale dokážeme ji vyhodnotit a víme, že je jedním z činitelů funkce f. Mějme také hustotu pravděpodobnosti p, ze které dokážeme efektivně vzorkovat. Chceme získat N vzorků, které použijeme pro odhad integrálu. Pro získání i-tého vzorku Y i provedeme: 1. Vygeneruj M návrhových vzorků z rozdělení p, označme je. 2. Urči váhu j-tého vzorku jako. 3. Vyber výsledný vzorek Y i ze vzorků s pravděpodobností úměrnou. K tomuto je možné použít inverzi kumulativní distribuční funkce. 4. Spočítej průměrnou váhu vzorku. Estimátor integrálu je dán vztahem (14) Efektivita metody záleží na tom, jak je rozdělení p podobné rozdělení cílové funkce g (které neznáme). Čím jsou rozdělení podobnější, tím lepší dostaneme výsledky. Volbou M můžeme výrazně škálovat kvalitu výsledku výměnou za rychlost metody. Můžeme tak při větší hodnotě M vzorkovat z rozdělení funkce g i tehdy, není-li funkce p příliš úměrná funkci g. V případě, že M=1, tato metoda degraduje na importance sampling z rozdělení p, protože každý návrhový vzorek je použit jako výsledný vzorek. Odhad této metody je nestranný, pouze pokud g a p je větší než nula tam, kde f je větší než nula, a dále pokud M a N je větší než nula Multiple importance sampling s metodou RIS Uvedená metoda umožňuje vzorkovat z jediného rozdělení. V práci (Talbot, 2005) je uvedeno rozšíření pro použití multiple importance sampling (MIS). Návrhové vzorky mohou být vzorkovány z několika rozdělení, a potom zkombinovány běžnou heuristikou známou z klasického MIS, např. balanced heuristikou. Uvedeme zde variantu, která vyžaduje, aby návrhové vzorky ze všech použitých rozdělení byly ve stejné doméně. Metoda dále vyžaduje, stejně jako klasický MIS, aby bylo pro vzorek vybraný z jednoho rozdělení možno zjistit pravděpodobnost vybrání tohoto vzorku u ostatních použitých rozdělení. V našem kontextu můžeme tuto metodu použít, jak je uvedeno níže. Mějme množinu rozdělení, ze kterých můžeme efektivně vzorkovat. Uvedeme změnu oproti algoritmu uvedenému výše. Pro zjednodušení značení vypustíme index i. 1. Vygeneruj celkem návrhových vzorků tak, že m k vzorků vygeneruj z rozdělení p k. 2. Vzorku X j vybraného z rozdělení p k přiřaď váhu 29

30 První člen váhy je balanced heuristika z klasického MIS. Je možno použít jakoukoli jinou heuristiku. Rozdělení celkového počtu M vzorků na počty vzorků pro každou vzorkovací techniku je libovolné Využití metody RIS Nyní uvedeme, jak jsme metodu RIS použili pro výpočet integrálu osvětlovací rovnice. Použili jsme verzi metody s multiple importance samplingem (s balanced heuristikou), konkrétně variantu MIS s návrhovými vzorky ze stejné domény, touto doménou jsou třírozměrné vektory směrů na hemisféře vyjádřené v lokálním (tangentovém) souřadném systému v místě povrchu, kde osvětlení počítáme. Vzorkování z kosinových laloků dává vzorky přirozeně v této doméně, při vzorkování ze světla je souřadnice mapy přepočítána do vektoru. Pro generování návrhových vzorků jsme zvolili těchto pět druhů vzorkování: Vzorkování ze světla. Toto vzorkování je efektivní pro difuzní BRDF funkce, a pro světelně nehomogenní světelné zdroje, např. environment mapa s přímým sluncem. Kosinový lalok ve směru zrcadlově odraženého paprsku s koeficientem lesklosti 30. Toto vzorkování je určené pro středně lesklé BRDF funkce. Kosinový lalok ve směru zrcadlově odraženého paprsku s koeficientem lesklosti Toto vzorkování je určené pro výrazně, zrcadlově lesklé BRDF funkce. BRDF je pro nás předem neznámá, nevíme tedy dopředu, která ze vzorkovacích technik zafunguje. Proto jsme zvolili více technik podle hlavních typů BRDF. Nepoužili jsme kosinově vážené vzorkování hemisféry, protože se ukázalo, že je to velice neefektivní vzorkovací technika. Chceme spočítat integrál osvětlovací rovnice, proto za funkci f jsme zvolili osvětlovací rovnici. Za funkci g jsme nejprve zvolili součin, protože hustotu rozdělení BRDF neznáme, ale chceme alespoň přibližně podle jejího rozdělení vzorkovat. V původním článku je uvedeno, že pro efektivní využití metody RIS volba funkce g řídí tím, jaké členy součinu se co nejefektivněji vyhodnocují. Metoda RIS by měla vynahradit plné vyhodnocování součinu tím, že lze vypustit náročný člen (v klasických aplikacích např. viditelnost, což v našem kontextu neuvažujeme). Podle článku lze dosáhnout zrychlení, pokud za čas ušetřený vyhodnocováním viditelnosti stihneme spočítat podstatně více vzorků. V našem kontextu je vyhodnocování osvětlení nejnáročnější člen, protože mapa osvětlení je použita jako globální paměť v OpenCL, která ma vysokou latenci (podrobněji viz kap. 3.2). Ukázalo se však, že lepších výsledků dosáhneme, pokud do funkce g zahrneme i příchozí osvětlení. Časová úspora (v našem případě asi 30-40% času výpočtu) nenahradí zvýšenou kvalitu výpočtu. Pro ilustraci uvádíme Obr. 13. Tato volba funkce g 30

31 je speciálním případem, který v podstatě již nepatří do metody RIS. Jde o běžné vícenásobné vzorkování podle důležitosti. V tom případě se stírá rozdíl mezi parametry N a M, protože všechny návrhové vzorky se použijí. Obr. 13: Volba funkce g v metodě RIS. Vlevo celý součin osvětlovací rovnice, vpravo bez přímého osvětlení. Vyrenderováno za přibližně stejnou dobu. Vlevo 30 vzorků, vpravo 45 vzorků na pixel Adaptivní úprava vah vzorkovacích metod Při použití vícenásobného vzorkování máme volnost v tom, jak nastavit počty vzorků pro každou ze vzorkovacích technik. Na základě testování jsme nastavili iniciální poměrné váhy těchto technik následovně: Vzorkování ze světla 0,5 Kosinový lalok 30 0,3 Kosinový lalok ,2 Poměrná váha udává, kolik vzorků z celkového přiděleného počtu se bude vzorkovat touto technikou. Jak je uvedeno v kapitole Implementace, aplikace provádí iterativní výpočet obrázku. Tyto váhy aplikace v průběhu výpočtu obrazu adaptivně upravuje. V každém průchodu je vzorkován stejný počet vzorků. Pro každou techniku se její příspěvek osvětlení (tj. celý součin osvětlovací rovnice) sčítá v jednom průchodu. Poté se váhy technik upraví úměrně celkovému příspěvku dané metody vzhledem k ostatním metodám. Váhy počítáme pro každý pixel zvlášť. Adaptivní úprava vah přinesla jednak znatelné urychlení konvergence, a také zvýšení světlosti obrázku. Pokud vzorkujeme s pevnými váhami, např. u lesklého modelu vzorkujeme zbytečně mnoho vzorků ze světla, což přináší velmi malý příspěvek osvětlení. Protože se v odhadu integrálu celkový příspěvek dělí počtem vzorků, klesá takto světlost objektu (odhad integrálu tak není korektní). U adaptivních vah vzorkujeme především z metod, které přinášejí příspěvek. Nevýhoda adaptivní úpravy vah je v tom, že pokud se v jednom pixelu vypočítá váha v některé z prvních iterací tak, že upřednostní techniku, která souhrnně příliš příspěvku nepřináší, ostatní techniky dostanou velmi malou váhu a už ji nemohou získat zpět. 31

32 2.3.6 Principiální omezení Uvažujme funkci BRDF s Diracovým impulsem (definovaným v kap ) tvaru Toto je BRDF, která všechno příchozí světlo odráží ve směru normály. Vyhovuje fyzikálním vlastnostem BRDF, kromě principu reciprocity, což není pro tento příklad důležité. Vyhodnotit integrál s touto BRDF jakoukoli numerickou technikou není možné bez toho aniž bychom věděli, že je použita tato BRDF, protože pravděpodobnost, že nějaká vzorkovací technika (např. uniformní vzorkování) vybere právě vektor normály (nebo jiný konstantní vektor), je nulová. V renderovacích programech, které dopředu znají použitou BRDF a její hustotu pravděpodobnosti, je možné používat funkce s Diracovým impulsem. Lze je implementovat tak, že BRDF funkce kromě hodnoty BRDF vrátí i směr dopadu, pro který je nenulová. Pro naši aplikaci, kdy BRDF dopředu neznáme, tedy existuje třída BRDF funkcí, které nemůžeme zobrazit. Nenajdeme směr, ve kterém by funkce BRDF distribuovala světlo, a těleso se bude jevit jako černé Konvergence anizotropních BRDF Použité vzorkování (tj. vzorkování ze světla a vzorkování ze dvou kosinových laloků) funguje poměrně dobře na širokou škálu BRDF funkcí. Uvedeme zde příklad BRDF, kdy konvergence výpočtu bude pomalejší, z důvodu tvaru BRDF. Na Obr. 14 je zobrazena šedě Wardova BRDF parametrů (ax=0,1, ay=0,3) (mírně anizotropní) a modře kosinový lalok, podle kterého se vzorkuje. Lalok BRDF je zploštělý ve směru osy x, což je projev anizotropie. Určitou část laloku vzorkování vynechává. Čím více bude lalok anizotropní, obecně čím více bude BRDF odlišná od laloků modelu Phong, tím hůře budeme vzorkovat krajní místa tohoto laloku. Pokud nepomůže vzorkování BRDF, může pomoci vzorkování ze světla, takže výpočet obrázku konverguje, ale pomaleji. Je to způsobeno tím, že naše vzorkování nevybírá dostatečně přesně vzorky, které odpovídají distribuci této BRDF za daných parametrů. Obr. 14: Wardova BRDF a vzorkovací kosinový lalok (n=30). Červeně normála povrchu, žlutě vektor příchozího světla, modře vektor odraženého paprsku. 32

33 2.4 Existující přístupy V této sekci představíme některé metody a programy, které se zaměřením podobají naší práci Metody globálního osvětlování V článku (Ben-Artzi, a další, 2008) byl vyvinut systém pro úpravu parametrů BRDF v reálném čase. Je zobrazena komplexní scéna, je zahrnuto nepřímé osvětlení. Jsou podporovány jak analytické BRDF, tak naměřené BRDF. Scéna je však statická, s nutností dlouhého předpočítání, které trvá několik hodin. Nelze zadat libovolnou BRDF, program musí znát použitou BRDF a lze v čase měnit pouze jeden parametr. Existuje několik dalších řešení, které podporují dynamickou editaci libovolné BRDF, která ale musí být dopředu známá. Jmenujme (Wang, a další, 2009) nebo (Sun, a další, 2005). Precomputed Radiance Transfer (PRT) je metoda umožňující zobrazovat efekty globálního osvětlování v reálném čase pomocí předpočítání přenosu světla ve scéně. Jedním ze základních článků této metody je (Sloan, a další, 2002). Principem této metody je využití sférických harmonik, což je to množina sférických funkcí, které tvoří ortonormální bázi prostoru sférických funkcí. Libovolná sférická funkce tak jde aproximovat pomocí váženého součtu několika sférických harmonik. Aproximace funkce je posloupnost těchto vah (koeficientů). Sférické harmoniky mají jednu zajímavou vlastnost, sice že součin koeficientů aproximací dvou funkcí je roven aproximaci funkce, která vznikne jejich součinem. Toto se využívá při výpočtu osvětlení, protože rovnici osvětlení (3) lze alternativně zformulovat jako součin pouze dvou činitelů. Problém výpočtu osvětlení lze tedy redukovat na součin koeficientů, pokud funkce které jsou činiteli v rovnici osvětlení (příchozí světlo, BRDF) zprojektujeme do sférických harmonik. To přináší velké urychlení výpočtu. V poslední době se tato metoda dále vylepšuje a používá se také v moderních počítačových hrách. Pro potřeby her stačí často pro konkrétní objekt vybrat pevně určitý BRDF model a nastavit jeho parametry dopředu. Při použití metody PRT lze tedy BRDF funkci zprojektovat offline. Pro potřeby naší práce je metoda PRT nevhodná, protože neznáme dopředu BRDF model a také dovolujeme měnit parametry dynamicky. V článku (Montes, a další, 2008) je popsána metoda pro vzorkování podle důležitosti z libovolné BRDF. Pro pevný směr dopadajícího paprsku se postupně prozkoumává obor hodnot funkce a vytváří se datová struktura quadtree pro potřeby vzorkování. Toto vzorkování je potom přesně úměrné BRDF funkci (v oblastech s velkými hodnotami vybírá hodně vzorků). Nevýhoda této metody pro naše potřeby je, že se obecně vzato musí vytvořit jeden quadtree pro každý vstupní směr (v praxi by se vytvořil quadtree pro několik směrů a pak se by se interpolovalo). A další pro zásadní nevýhoda je, že tato struktura by se musela při změně parametru přepočítat. Vytvoření jednoho quadtree trvá několik vteřin (podle složitosti BRDF i několik desítek vteřin). 33

34 2.4.2 Existující aplikace V článku (Forés, a další, 2009) je představena aplikace pro práci s BRDF. Její funkce jsou zobrazování tvaru funkce BRDF, fitting naměřené BRDF funkce na analytický model a zobrazení objektu s danou BRDF. Je možno navrhnout BRDF funkci pomocí několika naškálovaných laloků již existujících modelů (např. Phongův lalok, lalok modelu Lafortune). Není možno zadat BRDF funkci analytickým vzorcem. V článku (Colbert, a další, 2006) je prezentována aplikace pro uživatelské vytváření modelů BRDF. Tato aplikace je cílena do umělecké sféry, obsahuje plugin do aplikace Autodesk Maya. Uživatel může vytvořit model BRDF pomocí nástrojů, kterými nakreslí pozici odlesků. Program je založen na upraveném vícelalokovém Wardově modelu. Opět zde možno zadat BRDF funkci pomocí analytického vzorce. Společnost NVidia nabízí nástroj FX Composer (NVidia Corporation). Je určen k navrhování shaderů zobrazujících materiály pro použití např. ve hrách. Shader v tomto kontextu je kód běžící na grafické kartě, který ovlivňuje vzhled renderovaných objektů. Umožňuje vývoj tzv. efektů v několika programovacích jazycích (jako je Cg nebo HLSL). Efekt určuje materiál objektu včetně textury a BRDF modelu. Textury a další parametry (např. skalární hodnota) jsou měnitelné po zkompilování shaderu s okamžitým zobrazením výsledného materiálu v okně náhledu. Zobrazení je poměrně jednoduché, lze zvolit pouze bodové zdroje světla. Nejedná se o fyzikálně založený rendering. RenderMan společnosti Pixar je známý offline renderer používaný např. pro rendering animovaných filmů ve vysoké kvalitě. Obsahuje jazyk RenderMan Shading Language (RSL) pro vývoj shaderů, který je strukturou podobný jazyku C. Shader je v kontextu programu RenderMan komponenta, která určuje vzhled objektu, světla atd. ve scéně. RenderMan obsahuje shadery několika typů, zde zmíníme tzv. surface shader, který určuje barvu povrchu tělesa. RenderMan obsahuje aplikaci Slim, která kromě samotného vývoje shaderu v programovacím jazyku umožňuje tvorbu shaderu graficky, kombinováním základních jednotek spojovaných uživatelem interaktivně do řetězce úprav, které počítají barvu povrchu (jako je funkce součet barev, šumová funkce, funkce BRDF, textura). Je možné rychle si zobrazit výstup shaderu na jednoduchém objektu, a je možno přitom měnit parametry těchto jednotek (např. parametry BRDF). Rendering v plné kvalitě za použití globálního osvětlování však trvá typicky mnohem déle. 34

35 3 Implementace V této kapitole popíšeme implementaci aplikace použité technologie, architekturu a podle našeho názoru zajímavé oblasti návrhu aplikace. 3.1 Použité technologie V této části uvedeme a zdůvodníme výběr použitých technologií. Jedním z kritérií byla platformová nezávislost. Použili jsme programovací jazyk C++, který se v grafických aplikacích včetně her hodně používá z důvodu rychlosti, plnou kontrolou nad správou paměti a velkému množství knihoven. Z těchto důvodů jsme ho zvolili i my. Pro vývoj naší aplikace bylo potřeba zvolit knihovnu pro vytvoření GUI. Zvolili jsme Qt, framework od firmy Nokia (Nokia Corporation). Je to komplexní multiplatformní framework nabízející téměř vše, co je potřeba pro vývoj desktopové aplikace, kromě GUI obsahuje podporu mimo jiné pro síťovou komunikaci, multithreading, databáze, zvuk a video. Je duálně licencovaný, pod licencí LGPL a pod komerční licencí nazývanou Qt Commercial. Rendering jsme řešili kombinací OpenGL, Cg a OpenCL. OpenGL je známé multiplatformní grafické API pro kreslení na GPU. Použili jsme ho při vykreslení tělesa pro test viditelnosti. Dále jsme použili Cg, což je jazyk od firmy NVidia pro vývoj shaderů pro rozhraní OpenGL nebo DirectX. Použili jsme ho pro některé jednoduché operace s buffery mimo samotný výpočet osvětlení. Dále jsme vybírali jazyk, ve kterém implementujeme samotný výpočet osvětlení. Požadavkem byl jazyk, který může běžet na GPU a integruje se s OpenGL. Vybrali jsme OpenCL, protože je to obecný standard, neomezující se na GPU - program pro OpenCL lze spustit na CPU, a má širší možnosti pro ladění než např. GLSL. Technologii OpenCL podrobněji popíšeme níže. 3.2 Technologie OpenCL OpenCL je standard pro paralelní programování heterogenních systémů, dnes zvláště grafických karet (GPGPU, general purpose programming on GPU). OpenCL verze 1.0 bylo standardizováno v roce 2009 (Khronos Group, 2009). Pomocí OpenCL lze programovat pro grafické karty a CPU beze změny zdrojového kódu. Jeden program lze spustit na více zařízeních současně (např. na dvou grafických kartách a na CPU). OpenCL aplikace je běžná aplikace běžící na hostitelském stroji (host). Tato aplikace může využívat jedno nebo více OpenCL zařízení (OpenCL device), což je např. GPU. Zařízení se skládá z výpočetních jednotek (compute units), které se skládají z výpočetních elementů (processing element). 35

36 36 Obr. 15: Platformový model OpenCL. Zdroj (Khronos Group, 2009) Program v terminologii OpenCL se nazývá kernel. Ten je paralelně vykonáván na daném OpenCL zařízení. Jedno vykonávané vlákno se nazývá work-item. Kolik bude těchto vláken si určí volající aplikace při spuštění kernelu tím, že rozčlení vlákna do indexového prostoru o jedné až třech dimenzích (nazývané NDRange). Každé vlákno dostane v tomto prostoru jednoznačné ID. Work-item jsou organizovány do skupin, work-groups. Každá skupina dostane přidělenu část indexového prostoru. Programovacím jazykem OpenCL je upravený standard C99, nazývaný OpenCL C. Specifikace OpenCL (Khronos Group, 2009) definuje omezení jazyka (např. nelze používat rekurzi), tak jeho rozšíření (např. vektorové typy jako n-tice skalárních typů, např. float3, int8). NVidia a AMD podporují OpenCL ve svých současných grafických kartách, a to přímo v standardních ovladačích. Existuje několik implementací pro CPU, např. implementace od firmy Intel (Intel Corporation) pro své procesory, s níž je možné použít debugger s krokováním kódu, který se integruje do Visual Studia. Je také možné použít ladicí tisky pomocí funkce printf. V implementaci OpenCL od firmy AMD (AMD) je možné funkci printf dokonce použít jak na CPU, tak na GPU. Kernel je ve zdrojovém kódu představován funkcí označenou prefixem kernel. Může mít libovolný počet parametrů, které musí aplikace nastavit před spuštěním kernelu, a pokud se jedná o paměťové objekty, musí je nahrát na použité zařízení, aby je kernel mohl využívat (s výjimkou objektů sdílených s OpenGL). Paměťové objekty v OpenCL se rozdělují na Image a Buffer. Image je datový typ pro ukládání obrázků, podobný textuře (na GPU ho lze namapovat na existující texturu). Nelze k němu přistupovat přímo, OpenCL nabízí funkce pro čtení a pro zápis. Jeden objekt typu Image lze buď z kernelu číst, nebo do něj zapisovat, ale ne obojí. Objekt Buffer je přímo přístupná oblast dat, klasické pole prvků libovolného datového typu použitelné pro zápis i pro čtení. OpenCL zařízení může sdílet s OpenGL textury, renderbuffery a buffery (např. vertex buffery), což je volitelné rozšíření, které dané zařízení může nebo nemusí implementovat. Grafické karty podporující OpenCL typicky toto rozšíření podporují, což využíváme v naší aplikaci. Např. textura vyrenderovaná s OpenGL může být čtena v kernelu, a obráceně výstup kernelu může směřovat do textury. Omezí se tak zbytečné kopírování dat, všechna data zůstávají na GPU. Když chce hostitelská aplikace spustit kernel, musí nejdříve otevřít OpenCL kontext, podobně jako u OpenGL. Dále musí vytvořit tzv. command queue. Je to fronta, do které

37 se vkládají všechny operace, které má OpenCL vykonat. Patří sem kopírování dat na zařízení a zpět (např. clenqueuereadbuffer, clenqueuewritebuffer), synchronizační příkazy a především běh kernelu (clenqueuendrangekernel). OpenCL používá čtyři typy paměti, ke které může běžící kernel přistupovat (viz Obr. 16). Je to jednak globální paměť, typicky největší paměť přístupná pro čtení i zápis. Konstantní paměť je přístupná pouze pro čtení. Lokální paměť je R/W paměť sdílená mezi work-items v jedné work-group. A privátní paměť je pracovní paměť pro každou work-item, která není vidět z ostatních work-items. Obr. 16: Paměťový model OpenCL. Zdroj (Wang, 2009) Na GPU je globální paměť velmi pomalá, proto mezi doporučované praktiky patří kešování často používaných dat v lokální paměti, která je velice rychlá. Na CPU (např. u implementace Intel) lokální paměť nepřináší podle našich měření žádný výkonnostní přínos. Obecně výkonnostní optimalizace OpenCL se mohou značně lišit u CPU a u GPU. K architektuře GPU se vrátíme v kapitole Případy užití aplikace z hlediska implementace Vstupními daty aplikace jsou zadání BRDF funkce, hodnoty jejích parametrů, model objektu a HDR mapa osvětlení. Výstupem je bitmapa s renderingem daného objektu s danou BRDF, s daným nastavením parametrů, za daného osvětlení. Projdeme nyní kroky, kterými uživatel změní vstup aplikace HDR mapa osvětlení Obrázek pro mapu osvětlení musí být ve formátu latitude-longitude. Aplikace ho načte, vypočítá pro něj marginální a podmíněnou hustotu pravděpodobnosti podle postupu uvedeného v odstavci Potom samotnou bitmapu resp. obě hustoty pravděpodobnosti aplikace nahraje na grafickou kartu jako OpenCL Image, resp. Buffer. 37

38 Jiná možnost pro osvětlení scény (environment map) by byla zvolit formát cube-map, což je formát tvořený šesti čtvercovými obrázky, které tvoří stěny krychle, do které je scéna uzavřena. GPU mají pro tento formát přímou podporu (jako nový druh textury definovaný v případě OpenGL jako rozšíření ARB_texture_cube_map), je možné v shaderu (GLSL nebo Cg) funkcí přímo vzorkovat z cube mapy podle 3D vektoru. Tento formát jsme nepoužili z následujících důvodů. Používáme OpenCL, které nemá podporu pro jednoduché vzorkování z celé cube mapy. Pro použití cube-mapy jsme pozorovali švy v zobrazení okolí hranic stěn krychle (nepoužívá se totiž filtrování textury z více stěn, což se projevuje u hranic krychle). A především by to znamenalo vytvořit marginální a podmíněné rozložení pravděpodobnosti pro každý obrázek stěny zvlášť. Mapování latitude-longitude je pro naše účely ideální. Pro realistické osvětlení scény používáme obrázek HDR (high dynamic range, s vysokým dynamickým rozsahem). Intenzita pixelů je v něm zadána ve floatech. Tak je možné zachytit skutečné množství světla, které přichází z daného místa v obrázku a je možné obrázek použít jako světelný zdroj obklopující scénu. To se nazývá image based lighting (IBL). Pro implementaci je potřeba v celém procesu renderingu počítat s hodnotami osvětlení ve floatech. Při renderingu na GPU se toho dosahuje floatovými texturami. V OpenGL je to typ textury RGBA16F. Všechny textury a renderbuffery, které jsme v aplikaci použili, jsou právě typu RGBA16F, což je čtveřice 16ti bitových floatů Polygonální model Podporován je formát OBJ. Aplikace vyžaduje, aby v souboru byly definovány normály a texturovací souřadnice pro každý vrchol. Texturovací souřadnice (stejně jako normála) jsou potřebné pro výpočet tečného prostoru. Polygony s větším počtem vrcholů než tři jsou triangulovány (předpokládáme, že jsou rovinné). Aplikace spočítá tečný prostor algoritmem uvedeným v (Lengyel, 2001) Definice a zpracování BRDF funkce Jazyk BRDF funkce je částečně omezený a částečně rozšířený jazyk OpenCL C. Podrobná dokumentace je v příloze B. Samotná BRDF funkce je funkce s názvem brdf, která dostává vstupní parametry vektor (typu float3) dopadajícího paprsku in, a vektor odchozího paprsku out. Tyto vektory jsou vyjádřené v lokálním souřadném systému bodu, ve kterém uvažujeme dopad paprsku, tj. normála v tomto bodě je vždy vektor (0,0,1). Umožňuje to jednoduché zadání BRDF funkce. Návratovým typem funkce je také float3, určující RGB barvu odchozího světla. Kromě těchto pevných parametrů si může uživatel definovat libovolné další parametry, tzv. uživatelské parametry. Po zpracování programem jsou nabídnuty v uživatelském rozhraní ve formě posuvníku, je možné je měnit a měnit tak obraz. Pro každý parametr se v definici funkce zvolí rozmezí hodnot kterých může nabývat (oddělené tildou) a výchozí hodnota. Příklad hlavičky funkce Wardova osvětlovacího modelu se čtyřmi uživatelskými parametry: float3 brdf(float3 in, float3 out, float kd [0.f~1.f, 0.5f], float ks [0.f~1.f, 0.5f], float ax [0.f~2.f, 0.1f], float ay [0.f~2.f, 0.1f]) 38

39 Když uživatel zvolí textový soubor s definicí BRDF, soubor nejprve prochází syntaktickou analýzou. Pro vytvoření parseru jsme využili nástroj Coco/R (Mössenböck, a další). Je to generátor scanneru a parseru pro libovolnou LL(k) gramatiku. Jako cílový jazyk (jazyk vygenerovaného parseru) jsou podporovány mimo jiné jazyky C#, C++, Java. Použili jsme existující gramatiku jazyka C pro tento generátor, s některými úpravami. Pokud syntaktická analýza proběhne úspěšně, kód je podroben drobným úpravám a poté předán překladači OpenCL. Mezi úpravy patří především v odstranění mezí uživatelských parametrů, aby byl kód validní ve smyslu jazyka OpenCL C. Kód BRDF je tedy spolu s kódem kernelu předán ke kompilaci. Pro každou BRDF je zdrojový kód kernelu OpenCL jiný, a po každé změně BRDF je tedy nutné kernel překompilovat. Proto jsme pro implementaci programu potřebovali technologii, která umožňuje kompilaci za běhu. Tento přístup má tu výhodu, že překladač OpenCL může na kódu BRDF provést stejné optimalizace, jaké provádí na normální kód kernelu. Pokud uživatel napíše chybu, kterou naše aplikace neodhalí (sémantickou chybu, např. volání neexistující funkce), OpenCL překladač to oznámí aplikaci a chyba je zobrazena uživateli stejně jako syntaktická chyba. Aby pro kernel byla změna BRDF transparentní, uživatelské parametry jsou předávány v makru preprocesoru. Kernel vždy volá funkci s názvem brdf, zdrojový kód kernelu se tedy nemění, aplikace při kompilaci kernelu pouze dodá aktuální hodnoty makra. Příklad zdrojového kódu, který je vygenerován aplikací a předán překladači OpenCL pro Wardův osvětlovací model: #include "Header.cl" #define BRDF_CUSTOM_FORMAL_PARAMETERS,float kd,float ks,float ax,float ay #define BRDF_CUSTOM_ACTUAL_PARAMETERS,kd,ks,ax,ay #include "Kernel.cl" #include "Common.include" float3 brdf(float3 in, float3 out BRDF_CUSTOM_FORMAL_PARAMETERS) { float3 half = in+out; float firstfactor = (ks * dot(half, half)) / (M_PI * ax * ay * pow(costheta(half),4)); float factor2 = half.x / ax; float factor3 = half.y / ay; float exponent = -(factor2*factor2 + factor3*factor3)/(half.z*half.z); float specular = firstfactor * exp(exponent); float diffuse = kd*m_1_pi_f; } return (float3)(specular + diffuse); Na druhém řádku jsou definovány formální uživatelské parametry, tj. část hlavičky funkce, na třetím řádku jsou definovány parametry pro volání funkce. V souboru Kernel.cl je dopředná deklarace funkce brdf: float3 brdf(float3 in, float3 out BRDF_CUSTOM_FORMAL_PARAMETERS); Samotné volání funkce probíhá pomocí druhého makra: brdf(in, out BRDF_CUSTOM_ACTUAL_PARAMETERS); 39

40 V definici kernelu je makro BRDF_CUSTOM_FORMAL_PARAMETERS uvedeno na konci, tím přidává do kernelu variabilní počet parametrů, závislý na použité BRDF. Aplikace potom při volání kernelu naplní tyto parametry hodnotami uživatelských parametrů, jak je zvolil uživatel v GUI. 3.4 Renderovací proces Nyní projdeme proces renderování obrázku. Renderovací proces je naznačen na Obr

41 Obr. 17: Proces renderování (UML diagram aktivit) Vykreslování začne ve chvíli, když uživatel nějak změní stav scény. Do OpenGL pipeline se pošle geometrie objektu, spolu s normálou, tangentou a bitangentou vyjádřené v objektových souřadnicích. OpenGL provede rasterizaci a Z-test (test viditelnosti). Tento proces odpovídá vrhání primárního paprsku do scény (kap. 1.6). Pomocí GPU je tento proces velice rychlý, ale představuje vrhání pouze jednoho paprsku na pixel, což znamená, že okraje objektů nebudou vyhlazené. Řešením by bylo použít antialiasing (v terminologii OpenGL se jmenuje multisampling), což je na GPU řešeno tak, že se scéna vyrenderuje ve vyšším rozlišení a pak se převzorkuje na původní rozlišení. Antialiasing jsme v aplikaci neimplementovali. Vertex shader (v jazyce Cg) tyto vektory převede do souřadnic kamery, čímž vznikne TBN matice, což je transformace mezi kamerovým souřadným systémem a lokálním (tangentovým) souřadným systémem v bodě daného vrcholu. Fragment shader tyto vektory ortogonalizuje Gram-Schmidtovým algoritmem, protože při interpolaci rasterizátorem se může porušit ortogonalita. Také spočítá vektor ke kameře v lokálním souřadném systému, tento vektor se později používá ve volání BRDF jako out parametr. Výstupem fragment shaderu tedy není barva, ale čtveřice vektorů (tangenta, bitangenta, normála, vektor ke kameře). Tyto vektory jsou zapsány do renderbufferů, které jsou pro tento účel vytvořeny a připojeny k framebufferu, do kterého se kreslí. Tento krok, stejně jako několik následujících kroků se tedy kreslí mimo obrazovku, což se nazývá off-screen rendering. Renderbuffery jsou sdílené s OpenCL. Když OpenGL dokončí rendering (zajistíme to voláním funkce glfinish), necháme OpenCL převzít renderbuffery a výstupní texturu od OpenGL, pomocí volání clenqueueacquireglobjects. Po skončení kreslení do výstupní textury tyto objekty přenecháme OpenGL pomocí funkce clenqueuereleaseglobjects. Data tedy zůstávají na GPU, což je optimální z hlediska výkonu. Nyní se dostáváme k části výpočtu v OpenCL kernelu. Při spuštění kernelu se zvolí počet vláken (work-items), které se mají spouštět. Zvolili jsme počet vláken stejný, jako je počet pixelů obrazu, každé vlákno má na starosti výpočet osvětlení v jednom pixelu. Při výpočtu v jednom pixelu se podle toho, zda v renderbufferech jsou nějaké hodnoty, rozhodne, zda se bude kreslit pozadí, nebo proběhne výpočet osvětlení (je zde vidět objekt). Algoritmus výpočtu je uveden v kap Iterativní vykreslování Aplikace podporuje iterativní vykreslování (vykreslování v několika průchodech). Implementovali jsme ho z toho důvodu, že rychlost výpočtu se na různých grafických kartách velice liší (viz kapitola 4). Namísto toho, abychom renderovali jeden obrázek s pevným počtem vzorků poměrně dlouhou dobu (např. několik vteřin na starší GPU), vyrenderujeme každou iteraci obrázek s částečným počtem vzorků a ten hned zobrazíme, přičemž dále renderujeme obrázek s dalšími vzorky. Aplikace je tak 41

42 interaktivní i ve výpočetně náročných situacích, změna parametrů je zaznamenána rychle. Celkový počet průchodů je nastavitelný uživatelem. Každý průchod je akumulován do textury váženým průměrem tak, aby za každým průchodem byl v této textuře průměr za všechny proběhnuté průchody. Textura z OpenCL dostane v průchodu i (číslovaném od nuly) váhu w=1/(1+i), a akumulační textura s obrázkem i-1 průchodů dostane váhu 1-w. V nultém kroku tedy textura z OpenCL dostává plnou váhu. Tento algoritmus je implementován v shaderu. Protože však nelze v shaderu z jedné textury číst a také do ní zapisovat, implementovali jsme tzv. texture ping-ponging, viz Obr. 18. Jsou vytvořeny dvě akumulační textury, které se střídají pro zápis a pro čtení v každém průchodu. Obr. 18: Texture ping-ponging s vyznačením zápisu do a čtení z textury Poté nás čeká poslední krok vykreslování, a to je tone mapping. Jde o proces převedení HDR obrázku do obrázku s nízkým dynamickým rozsahem (LDR), pro zobrazení na monitoru, který má omezený dynamický rozsah. Problém, který tato metoda řeší, je potenciálně veliký kontrast v obrazu, který současné zobrazovací zařízení nedokážou zobrazit. Pro omezení rozsahu hodnotu se používá tzv. tone mapping filter, což je funkce, která pro potenciálně neomezenou hodnotu intenzity vrátí omezenou hodnotu (např. v intervalu 0 až 1). Rozdělují se na globální, které se pro každý pixel obrázku chovají stejně, a na lokální, které berou v úvahu okolí pixelu). My jsme zvolili jednoduchý globální S-curve filter s nastavením expozice uživatelem, ve tvaru kde exposure je expozice nastavitelná uživatelem jako kladné číslo, I je vstupní intenzita pixelu. Pro další informace se odkazujeme na publikaci (Reinhard, a další, 2005). 42

43 Nakonec LDR obrázek zobrazíme vykreslením akumulační textury na celoobrazovkový quad (čtyřúhelník). Ukázalo se, že počet vzorků pro jeden průchod by měl být minimálně 15, aby se našel co největší příspěvek osvětlení, záleží však na složitosti BRDF. V případě novějších grafických karet to může být ještě daleko více při zachování interaktivního zobrazování, jak je uvedeno v kapitole Inicializace náhodného generátoru Generátor náhodných čísel, použitý v kernelu, je potřeba správně inicializovat (tzv. seed). Jednotlivé work-items jsou z kódu rozlišitelné pouze svými indexy. Je nutné, aby každá work-item měla různou posloupnost náhodných čísel, jinak v obrazu vznikají silné artefakty (protože každé vlákno vzorkuje podobně). Proto jsme indexy každé work-item zahešovali hašovací funkcí hash Roberta Jenkinse (Jenkins, a další) pro 32- bitový integer a výsledným číslem inicializujeme náhodný generátor: hash(i)*hash(hash(j)), kde i a j jsou x-ový a y-ový index dané work-item v indexovém prostoru (v našem případě souřadnice v obrazu). Při iterativním vykreslování je navíc potřeba, aby jedno vlákno mělo jinou posloupnost náhodných čísel i v každém průchodu. Jinak by se vícenásobnými průchody kvalita obrazu nijak nezlepšila, protože výsledkem každého průchodu by byl vždy stejný odhad integrálu (kvůli zcela stejné posloupnosti náhodných čísel bychom vzorkovali vždy stejně). Náhodný generátor proto inicializujeme hodnotou hash(hash(hash(refinementpass+1))*i)*hash(hash(j)), kde refinementpass je číslo průběhu, počítané od nuly. 3.5 Programování pro GPU V této práci jsme se zaměřili na použití na GPU, proto zde uvádíme některé detaily o architektuře GPU, mapování platformy OpenCL na GPU a některé optimalizace. Dnešní grafické karty mají architekturu odlišnou od procesorů, je orientována na maximální paralelismus. Pokud lze daná úloha velmi dobře paralelizovat, je vhodná pro provádění na GPU. GPU typu Fermi může podle (Wang, 2009) provádět až 1536 vláken současně. Teoretický výkon karty GeForce GTX580 je 1,5 TFLOPS. Stručně popíšeme architekturu karty typu Fermi od firmy NVidia. 43

44 GPU obsahuje 16 multiprocesorů (SMP). Jeden multiprocesor je z pohledu OpenCL výpočetní jednotka (compute unit). Obsahuje 32 tzv. CUDA Cores skalárních procesorů, jak je vidět na Obr. 19. Skalární procesor odpovídá processing elementu z OpenCL. Skupina vláken prováděných v jednom SMP se nazývá warp. Tato skupina musí provádět stejný kód, a musí dokonce provádět stejnou instrukci. Tato architektura se jmenuje SIMT (single instruction multiple thread). V případě že kód obsahuje divergentní podmínku (kód se větví různě v různých vláknech jednoho warpu), je podmínka serializována, takže všechny vlákna provádějí všechny větve podmínky. Různé SMP však mohou vykonávat různý kód. Jednou z výkonnostních optimalizací je programovat kód s co nejmenším počtem divergentních cest (sem patří např. i cyklus s různým počtem opakování). Globální paměť karty může mít sice velkou kapacitu, ale má vysokou latenci (podle (Wang, 2009) je to taktů multiprocesoru). Proto další ze zásadních optimalizací kernelu je minimalizovat využití globální paměti ve prospěch lokální paměti, která je velice rychlá. Doporučuje se často používaná data kešovat v lokální paměti. Lokální paměť má kapacitu 16kB nebo 48kB (volitelně, dohromady 64kB po lokální paměť a cache), je sdílená mezi vlákny jednoho warpu. Je přístupná pouze pro kernel v OpenCL nebo pro kernel napsaný v CUDA (proprietární technologie firmy NVidia pro GPGPU podobná OpenCL). Není přístupná z shaderu (GLSL). Každý skalární procesor má privátní paměť o velikosti 16kB Optimalizace Výkonnostní optimalizace, kterou jsme provedli, bylo zkopírování marginálního rozdělení pravděpodobnosti do lokální paměti. Pro HDR environment mapu šířky 1000 pixelů zabírá toto pole 1000*sizeof(float) B = 4 kb. OpenCL specifikace předepisuje, že každé OpenCL kompatibilní zařízení musí mít alespoň 16kB lokální paměti. OpenCL pro přímé kopírování z globální paměti do lokální nabízí funkci async_work_group_copy. Touto úpravou jsme zaznamenali asi 30% zrychlení na GPU, zrychlení na CPU implementaci nebylo žádné Nepreemptivní plánování GPU Obr. 19: Architektura multiprocesoru na GPU typu Fermi. Zdroj (Wang, 2009) Úloha běžící na GPU je prováděn nepreemptivně (non-preemptive scheduling). To znamená, že nemůže být přerušena zvenčí, přeplánována a později znovu spuštěna, jako je tomu u preemptivních operačních systémů. 44

45 Toto chování může přinášet problémy v případě, že kernel je vykonáván příliš dlouho (několik jednotek vteřin). Pokud je GPU, na kterém kernel běží, jediné zobrazovací zařízení v systému, během výpočtu GPU neaktualizuje obrazovku, což se projevuje jako zdánlivé zatuhnutí systému, což je z uživatelského hlediska velmi matoucí. V operačním systému Windows Vista je také zabudována ochrana proti situacím, kdy ovladač grafické karty přestane pracovat. Nazývá se Timeout detection and recovery (Microsoft Corporation). Pokud systém zjistí, že GPU nedokončí aktuální úlohu do daného timeoutu, restartuje grafickou kartu a smaže její paměť. Tato doba je defaultně nastavena na 2 vteřiny, ačkoli se dá změnit v registru. Museli jsme proto zajistit, aby kernel neběžel příliš dlouho. Oblast obrazovky jsme rozdělili na dlaždice, a kernel spouštíme v cyklu postupně pro každou z dlaždic. Po doběhnutí kernelu pro jednu dlaždici stačí GPU obnovit obraz, takže nijak neomezujeme práci uživatele. 3.6 Multithreading Aplikace používá dvě vlákna. Hlavní vlákno slouží pro obsluhu GUI. Posílá požadavky na rendering druhému vláknu, když uživatel provede změnu ve scéně. Druhé vlákno slouží pro renderování a všechny operace s ním spojené načítání modelu, načítání HDR mapy, parsování a kompilace BRDF. Požadavky na operace se hromadí ve frontě, pokud je vlákno zaneprázdněné renderováním. Je tak zajištěno, že v průběhu renderování se nezmění stav objektů použitých při renderování. Synchronizace vláken probíhá přes semafor (QtSemaphore). Pokud nemá renderovací vlákno žádný požadavek, čeká pasivně na semaforu. Pokud hlavní vlákno obdrží požadavek (např. překreslení okna, když bylo zakryté jiným oknem), vloží příslušný požadavek (je reprezentován objektem typu RenderRequest) do fronty a inkrementuje semafor. Renderovací vlákno je probuzeno a zpracuje všechny události ve frontě, potom vyrenderuje scénu. Renderování (běh OpenCL kernelu) je synchronní (čekáme na dokončení pomocí clfinish), stejně jako nahrávání paměťových objektů OpenCL do GPU. Během renderingu není GUI vlákno blokováno, takže je aplikace pro uživatele interaktivní. 45

46 4 Výsledky V této kapitole uvedeme výsledky, kterých jsme dosáhli, a to z pohledu kvality obrazu a z pohledu rychlosti. Ukážeme různé BRDF a to, jak je naše aplikace dokáže zobrazit. Uvedeme také, jak rychle aplikace vykresluje na různých grafických kartách. 4.1 Rendering různých BRDF Torrance-Sparrow, exponent 300. Ward, ax=0.1, ay=0.3 46

47 Oren-Nayar Dvouvrstvý model Weidlich, Wilkie 47

48 4.2 Výkonnost aplikace Rozměr renderovaného obrázku byl 623x586 pixelů. Pro měření byla použita mapa osvětlení Halstatt.hdr s rozměry 1024x512 pixelů. Měřili jsme na objektu konvice (Teapot.obj) a koule (Sphere.obj). Provedli jsme dvě měření, pro 100 vzorků na pixel a 400 vzorků na pixel. Časy jsou uvedeny v milisekundách. Pro porovnatelnost měření byla vypnuta funkce iterativního vykreslování, aplikace vykreslí pouze jeden frame. Použité GPU a CPU jsou v Tab. 1. Měřili jsme na mobilním procesoru Intel Core i5 v implementaci OpenCL pro CPU (Intel OpenCL SDK 1.5), a pro zajímavost jsme výkon změřili na stejném procesoru v implementaci AMD (AMD APP SDK 2.5). Poté jsme měřili na různých kartách od firmy NVidia. V Tab. 1 uvádíme také použitou velikost work-group, a také dobu, za jakou aplikace vyrenderuje zrcadlový odlesk (triviální implementace bez vzorkování). Při kompilaci kernelu byla použita optimalizace -cl-fast-relaxed-math. Zahrnuli jsme různorodé BRDF modely. Od nejjednoduššího Lambertova modelu, přes složitější Torrance-Sparrow a Wardova modelu k poměrně náročnému dvouvrstvému modelu (uvedli jsme v kap ), kde jako spodní i vrchní vrstva byl použit model Torrance-Sparrow. Intel Core i5-580m 1 NVidia GeForce GTX 580 NVidia GeForce GTX 480 květen 2010 NVidia GeForce 9400GT červenec 2008 AMD Radeon 6530D Rok uvedení na trh 3 leden 2010 listopad 2010 Verze OpenCL Teoretická výkonnost 3 [GFLOPS] Zrcadlový odlesk [ms] Work-group 32x32 16x16 16x16 8x8 16x16 Tab. 1 1 Mobilní procesor 2 Integrovaná grafická karta 3 Zdroj: 4 Nejedná se o algoritmus globálního osvětlování. Byl proveden jediný vzorek. 5 Nebylo měřeno 48

49 Obr. 20: Detail obrázku renderovaného se 100 vzorky na pixel (vlevo) a se 400 vzorky na pixel (vpravo). Jedná se o Wardovu BRDF a mapu Halstatt.hdr. 100 vzorků na pixel, Teapot.obj, [ms] Core i5, Intel OpenCL SDK Core i5, AMD APP SDK GTX 580 GTX GT Radeon 6530D Lambert Oren-Nayar Phong Torrance-Sparrow Layered Ward vzorků na pixel, Teapot.obj, [ms] Core i5, Intel OpenCL SDK Core i5, AMD APP SDK GTX 580 GTX GT Radeon 6530D Lambert Oren-Nayar Phong Torrance-Sparrow Layered Ward vzorků na pixel, Sphere.obj, [ms] Core i5, Intel OpenCL SDK Core i5, AMD APP SDK GTX 580 GTX GT Radeon 6530D Lambert Oren-Nayar Phong Torrance-Sparrow Layered Ward

50 400 vzorků na pixel, Sphere.obj, [ms] Core i5, Intel OpenCL SDK Core i5, AMD APP SDK GTX 580 GTX GT Radeon 6530D Lambert Oren-Nayar Phong Torrance-Sparrow Layered Ward Diskuze Z měření je na první pohled patrný propastný rozdíl mezi CPU a moderními GPU. Karta GTX 580, která má nejlepší výsledky, je oproti Intel implementaci pro CPU nejméně 33 krát rychlejší. Je zajímavé, že tento poměr se zvyšuje s větším množstvím práce, u posledního měření je průměr 47. Karty typu Fermi velmi dobře škálují s velikostí výpočtu. Karta GTX 480, která je také typu Fermi, dává velmi podobné výsledky jako GTX 580. Na druhé straně integrovaná karta Radeon 6530D dává horší výsledky než implementace pro CPU. Můžeme provést porovnání dvou implementací na CPU, kde implementace firmy Intel spuštěná na procesoru od téže firmy dává lepší výsledky v průměru o 17%. Během výpočtu tato implementace vytíží procesor takřka na maximum, více než 95%. Implementace od AMD vytíží procesor asi jen z 80%. Naše úloha je vhodný kandidát pro paralelizaci. U karty GTX580 dosahujeme pro obvyklé BRDF modely u 100 vzorků na pixel hodnot 63 ms, což odpovídá 15 FPS. Připomínáme, že byla vypnuta funkce iterativního vykreslování. S touto funkcí by aplikace byla zcela interaktivní, protože se v každém průchodu počítá pouze několik málo desítek vzorků. Jak jsme zjistili, výkon na grafické kartě podstatně ovlivňuje velikost skupiny vláken (work-group) vzorků na pixel, Sphere.obj, [ms] GTX 580, workgroup 16x16 GTX 580, workgroup 8x8 Lambert Oren-Nayar Phong Torrance-Sparrow Layered Ward Výpočet je více než dvakrát pomalejší, použije-li se menší velikost work-group. Při nastavení velikosti workgroup na 32x32 OpenCL při pokusu o spuštění kernelu vrátilo chybu CL_OUT_OF_RESOURCES, přitom ale tuto hodnotu GTX 580 podporuje podle

51 toho, co vrátí z funkce clgetdeviceinfo. Na GPU se doporučuje velikost workgroup vždy nastavit. V opačném případě ji implementace OpenCL nastaví implicitně, a to může velice snížit výkon. Je vhodné vybrat největší velikost, jakou daná karta podporuje. 51

52 5 Závěr Vytvořili jsme funkční aplikaci pro editaci a zobrazování libovolné BRDF funkce zadané vzorcem, s interaktivním vstupem uživatele. 5.1 Souhrn V první části práce jsme vyložili teoretické základy metody fotorealistického zobrazování. Ve druhé kapitole jsme vytyčili problém, popsali požadavky na aplikace a podali souhrn existujících metod a aplikací. V další kapitole jsme probrali použité technologie, architekturu aplikace a zajímavé návrhové postupy. V kapitole Výsledky jsme podali grafické a výkonnostní zdůvodnění funkčnosti naší aplikace. 5.2 Splnění cílů Podařilo se nám vytvořit aplikaci podle požadavků, které jsme si definovali ve druhé kapitole. Model BRDF je zcela obecně definovaný uživatelem v procedurálním jazyce podobném jazyku C podporujícím cykly a podmínky. Uživatel si může definovat libovolný počet parametrů modelu, které jsou měnitelné v reálném čase, s okamžitým zobrazením výsledku ve scéně. Naše metoda funguje dobře ve většině případů. U některých modelů BRDF, jejichž tvar je dosti komplikovaný, konvergence trvá déle, ale ve všech testovaných případech dostaneme po určité době podle našeho názoru rozumný výsledek. Na moderní grafické kartě naše aplikace renderuje rychle, u jednoduchých a středně složitých BRDF modelů dosahujeme plynulého zobrazení při výpočtu 100 vzorků. Díky iterativnímu zobrazení je plynulé zobrazení dosažena i na starších grafických kartách. Tato práce navazuje na moji bakalářskou práci (Matějka, 2008), oproti které je to výrazný posun vpřed, především v tom, že nyní je podporován plošný zdroj světla (byť pro větší výkon je to environment mapa), procedurální programovací jazyk a obecný polygonální model. 5.3 Zkušenosti OpenCL je stále poměrně mladá platforma, a je to znát v chybách, které se nachází v implementacích. Jednak jsem se setkal s chybou v implementaci OpenCL od firmy Intel, která podporuje sdílení kontextu s OpenGL. Při použití tohoto rozšíření však došlo k chybě OpenGL, špatný enumerant při kopírování textury na grafickou kartu. Dále jsem se setkal s chybou implementace funkce normalize() a exp() na GPU, jejichž použití způsobovalo artefakty v obraze. Stalo se tak na GeForce GT9400GT s více než rok starými ovladači. 52

53 5.4 Další rozšíření programu Program by se dal vylepšit v mnoha směrech. Zajímavá funkce by byla zastínění objektu (test viditelnosti), nebo dokonce nepřímé osvětlení. Pro rychlejší vzorkování ze světla by bylo vhodné použít jiné existující metody, některé z nich dokážou vzorkovat pouze z polokoule nad objektem. Program aktuálně vzorkuje podle důležitosti z celé mapy, což v mnoha případech skončí zamítnutím vzorku, protože se nachází v dolní hemisféře. Taky by bylo zajímavé přidat podporu naměřených BRDF, které dávají velmi realistické výsledky. V implementaci OpenCL části je určitě prostor na zrychlení, dala by se asi více využít lokální paměť. Z uživatelského hlediska by bylo zajímavé zobrazit distribuci BRDF funkce při editaci v editoru, jako interaktivní obrázek laloku s možností změny parametrů. 53

54 Literatura AMD AMD APP SDK [Online]. - Ben-Artzi Aner [a další] A precomputed polynomial representation for interactive BRDF editing with global illumination [Časopis] // ACM Trans. Graph.. - New York, NY, USA : ACM, May Sv stránky 13:1--13:13. - ISSN: DOI: Colbert Mark, Pattanaik Sumanta a Křivánek Jaroslav BRDF-Shop: creating physically correct bidirectional reflectance distribution functions [Časopis] // Computer Graphics and Applications, IEEE. - jan.-feb : Sv stránky ISSN: DOI: /MCG Dana K.J. [a další] Columbia-Utrecht Reflectance and Texture database [Online] Dana K.J. [a další] Reflectance and Texture of Real World Surfaces [Časopis] // ACM Transactions on Graphics (TOG). - Jan : Sv stránky Dutré Philip Global Illumination Compendium [Kniha] Forés Adrià [a další] BRDFLab: A general system for designing BRDFs [Konference]. - [místo neznámé] : Eurographics, Intel Corporation Intel OpenCL SDK [Online]. - Jenkins a Robert Hash Functions and Block Ciphers [Online]. - Khronos Group [Online] // The OpenCL Specification Krahulík Martin Reprezentace BRDF v počítačové grafice [Kniha]. - Praha : [autor neznámý], Křivánek Jaroslav Image-based Lighting on Surfaces with Arbitrary BRDF [Kniha] Křivánek Jaroslav Materiály k přednášce počítačová grafika 3 [Online] // Monte Carlo metody pg3/slides/krivanek-08-npgr mc3.pdf. Lafortune Eric P. a Willems Yves D. Using the Modified Phong Reflectance Model for Physically Based Rendering [Zpráva] : Tech. rep

55 Lengyel Eric Computing Tangent Space Basis Vectors for an Arbitrary Mesh [Online]. - Terathon Software 3D Graphics Library, Matějka Jiří Osvětlovací dílna Matusik Wojciech [a další] A Data-Driven Reflectance Model [Časopis] // ACM Transactions on Graphics. - July : Sv stránky Microsoft Corporation Timeout Detection and Recovery of GPUs [Online]. - Mitsubishi Corporation MERL BRDF Database [Online] // MERL BRDF Database. - Mitsubishi Electric Research Laboratories, Montes Rosana [a další] Generic BRDF Sampling - A Sampling Method for Global Illumination [Konference] stránky Mössenböck Hanspeter, Löberbauer Markus a Wöß Albrecht The Compiler Generator Coco/R [Online]. - Nokia Corporation Qt - A cross-platform application and UI framework [Online] // Qt. - NVidia Corporation [Online] // FX Composer. - Oren Michael a Nayar Shree K. Generalization of Lambert's reflectance model [Konference]. - New York, NY, USA : ACM, stránky ISBN: DOI: Oren-Nayar reflectance model [Online] // Wikipedia. - Pelikán Josef [Online] // Prezentace k přednášce Fotorealistická syntéza obrazu Pharr Matt a Humphreys Greg Physically Based Rendering [Kniha]. - [místo neznámé] : Morgan Kaufmann, vydání. Reinhard Erik [a další] High Dynamic Range Imaging: Acquisition, Display, and Image-Based Lighting [Kniha]. - San Francisco, CA, USA : Morgan Kaufmann Publishers Inc., Segal Mark a Akeley Kurt The OpenGL Graphics System: A Specification (Version 3) [Online] Září Sloan Peter-Pike, Kautz Jan a Snyder John Precomputed radiance transfer for real-time rendering in dynamic, low-frequency lighting environments [Časopis] // ACM Trans. Graph.. - New York, NY, USA : ACM, #jul# : Sv stránky ISSN: DOI: /

56 Sun Xin [a další] Interactive relighting with dynamic BRDFs [Konference] stránky Szirmay-Kalos László Monte-Carlo Methods In Global Illumination [Kniha] Talbot Justin F. Importance resampling for global illumination [Zpráva] : Master's thesis / Brigham Young University Talbot Justin F., Cline David a Egbert Parris K. Importance resampling for global illumination [Konference] Torrance K. a Sparrow E. Theory for Off-Specular Reflection from Rough Surfaces [Kniha] Veach Eric Robust Monte Carlo Methods for Light Transport Simulation [Kniha] Walter Bruce Notes on the Ward BRDF [Časopis] // Program of Computer Graphics Cornell University Technical report PCG [místo neznámé] : Citeseer, PCG Wang Jiaping [a další] All-frequency rendering of dynamic, spatially-varying reflectance [Časopis] // ACM Trans. Graph.. - New York, NY, USA : ACM, December Sv stránky 133:1--133:10. - ISSN: DOI: Wang Peng OpenCL Optimization [Online]. - NVidia Corporation, Ward Gregory J. Measuring and modeling anisotropic reflection [Časopis] // SIGGRAPH Comput. Graph.. - New York, NY, USA : ACM, July Sv stránky ISSN: DOI: Weidlich Andrea a Wilkie Alexander Arbitrarily Layered Micro-Facet Surfaces [Konference]. - [místo neznámé] : ACM, stránky ISBN: Wong Tien-Tsin, Luk Wai-Shing a Heng Pheng-Ann Sampling with Hammersley and Halton Points [Kniha] Žára Jiří [a další] Moderní počítačová grafika [Kniha]. - Brno : Computer Press,

57 Příloha A - Uživatelská dokumentace 5.5 Obsah CD release.zip archiv s distribucí programu sources.zip archiv se zdrojovými kódy thesis.pdf text práce 5.6 Instalační příručka Aplikaci není potřeba instalovat, stačí rozbalit ZIP archiv s distribucí programu. Rozbalená složka musí být v cestě bez mezer, to je omezení některých OpenCL překladačů. Program musí mít práva zápisu do této složky a jejích podložek. Spustitelný soubor aplikace je BRDFEditor.exe Požadavky na systém Je vyžadována nainstalovaná OpenCL implementace, ať už ve formě CPU implementace nebo jako součást ovladačů grafických karet. Pokud není v systému žádná OpenCL implementace, program to nahlásí a skončí. Důrazně doporučujeme nainstalovat nejnovější ovladače grafické karty / nejnovější verzi CPU implementace. Zvláště u starších grafických karet jsme se setkali s chybami v implementaci OpenCL u starších ovladačů. 5.7 Uživatelská dokumentace Hlavní okno programu je na Obr. 21. Na panelu nástrojů je možné zvolit expozici obrazu, model a mapu osvětlení. V levém podokně se vybírá funkce BRDF. Po vybrání BRDF funkce se načte seznam materiálů specifických pro tuto funkci. Materiál obsahuje nastavení všech parametrů funkce. Materiály je možno mazat, kopírovat tlačítkem Save as new, a ukládat z aktuálního nastavení parametrů pod polem Materials. Parametry jsou definované ve funkci BRDF, včetně povoleného rozmezí hodnot. Hodnotu parametru nastavíme pohybem posuvníku nebo zadáním textové hodnoty a potvrzením tlačítkem Set. Tlačítko Edit u pole pro výběr BRDF funkce otevírá editor BRDF funkce. Syntaxe jazyka je popsána v příloze B. Upravenou funkci zvalidujeme tlačítkem Validate. Při nalezené chybě program podá hlášení do textového pole Messages. Když chceme 57

58 úpravy ukončit, a chceme, aby program aplikoval tuto BRDF na objekt ve scéně, stiskneme tlačítko Apply. Obr. 21: Uživatelské rozhraní programu Obr. 22: Editor funkce BRDF Průvodce zdrojáky, jak zbuildit aplikaci. 58

Odraz světla, BRDF. Petr Kadleček

Odraz světla, BRDF. Petr Kadleček Odraz světla, BRDF Petr Kadleček 17. října 2011 Úvod V minulé přednášce jsme si představili matematický model scény včetně geometrie, materiálů, zdroje světla, kamery, atd. Ukázali jsme si, že při formulaci

Více

Fyzikálně založené modely osvětlení

Fyzikálně založené modely osvětlení Fyzikálně založené modely osvětlení 1996-2015 Josef Pelikán, CGG MFF UK Praha http://cgg.mff.cuni.cz/~pepca/ pepca@cgg.mff.cuni.cz Physical 2015 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 1 / 31 Historie

Více

Zobrazování a osvětlování

Zobrazování a osvětlování Zobrazování a osvětlování Petr Felkel Katedra počítačové grafiky a interakce, ČVUT FEL místnost KN:E-413 na Karlově náměstí E-mail: felkel@fel.cvut.cz S použitím materiálů Bohuslava Hudce, Jaroslava Sloupa

Více

VYUŽITÍ PRAVDĚPODOBNOSTNÍ METODY MONTE CARLO V SOUDNÍM INŽENÝRSTVÍ

VYUŽITÍ PRAVDĚPODOBNOSTNÍ METODY MONTE CARLO V SOUDNÍM INŽENÝRSTVÍ VYUŽITÍ PRAVDĚPODOBNOSTNÍ METODY MONTE CARLO V SOUDNÍM INŽENÝRSTVÍ Michal Kořenář 1 Abstrakt Rozvoj výpočetní techniky v poslední době umožnil také rozvoj výpočetních metod, které nejsou založeny na bázi

Více

Fotonové mapy. Leonid Buneev

Fotonové mapy. Leonid Buneev Fotonové mapy Leonid Buneev 21. 01. 2012 Popis algoritmu Photon mapping algoritmus, který, stejně jako path tracing a bidirectional path tracing, vyřeší zobrazovací rovnice, ale podstatně jiným způsobem.

Více

Počítačová grafika III Multiple Importance Sampling. Jaroslav Křivánek, MFF UK

Počítačová grafika III Multiple Importance Sampling. Jaroslav Křivánek, MFF UK Počítačová grafika III Multiple Importance Sampling Jaroslav Křivánek, MFF UK Jaroslav.Krivanek@mff.cuni.cz MIS 300 + 300 samples EM IS 600 samples BRDF IS 600 samples Sampling strategies Diffuse only

Více

Počítačová grafika III Multiple Importance Sampling. Jaroslav Křivánek, MFF UK

Počítačová grafika III Multiple Importance Sampling. Jaroslav Křivánek, MFF UK Počítačová grafika III Multiple Importance Sampling Jaroslav Křivánek, MFF UK Jaroslav.Krivanek@mff.cuni.cz MIS 300 + 300 samples EM IS 600 samples BRDF IS 600 samples Sampling strategies Diffuse only

Více

Radiometrie, radiační metody

Radiometrie, radiační metody Radiometrie, radiační metody 1996-2018 Josef Pelikán CGG MFF UK Praha pepca@cgg.mff.cuni.cz http://cgg.mff.cuni.cz/~pepca/ Radiometry 2018 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 1 / 34 Globální výpočet

Více

Precomputed radiance transfer

Precomputed radiance transfer Precomputed radiance transfer Martin Bulant 11. dubna 2011 Reprezentace funkce na sféře Reálnou funkci na sféře G(x) aproximujeme pomocí lineární kombinace lineárně nezávislých bázových funkcí B i (x):

Více

Distribuované sledování paprsku

Distribuované sledování paprsku Distribuované sledování paprsku 1996-2015 Josef Pelikán, CGG MFF UK Praha http://cgg.mff.cuni.cz/~pepca/ pepca@cgg.mff.cuni.cz DistribRT 2015 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 1 / 24 Distribuované

Více

7. Rozdělení pravděpodobnosti ve statistice

7. Rozdělení pravděpodobnosti ve statistice 7. Rozdělení pravděpodobnosti ve statistice Statistika nuda je, má však cenné údaje, neklesejte na mysli, ona nám to vyčíslí Jednou z úloh statistiky je odhad (výpočet) hodnot statistického znaku x i,

Více

Počítačová grafika III Úvod

Počítačová grafika III Úvod Počítačová grafika III Úvod Jaroslav Křivánek, MFF UK Jaroslav.Krivanek@mff.cuni.cz Syntéza obrazu (Rendering) Vytvoř obrázek z matematického popisu scény. Popis scény Geometrie Kde je jaký objekt ve scéně

Více

ANALYTICKÁ GEOMETRIE V ROVINĚ

ANALYTICKÁ GEOMETRIE V ROVINĚ ANALYTICKÁ GEOMETRIE V ROVINĚ Analytická geometrie vyšetřuje geometrické objekty (body, přímky, kuželosečky apod.) analytickými metodami. Podle prostoru, ve kterém pracujeme, můžeme analytickou geometrii

Více

Počítačová grafika Radiozita

Počítačová grafika Radiozita Počítačová grafika Radiozita V. Chalupecký chalupec@kmlinux.fjfi.cvut.cz Obsah 1 Literatura 1 2 Úvod 5 3 Radiometrie a fotometrie 6 3.1 Prostorový úhel.......................... 6 3.2 Zářivý tok.............................

Více

Rekurzivní sledování paprsku

Rekurzivní sledování paprsku Rekurzivní sledování paprsku 1996-2016 Josef Pelikán CGG MFF UK Praha pepca@cgg.mff.cuni.cz http://cgg.mff.cuni.cz/~pepca/ 1 / 21 Model dírkové kamery 2 / 21 Zpětné sledování paprsku L D A B C 3 / 21 Skládání

Více

Photon-Mapping Josef Pelikán CGG MFF UK Praha.

Photon-Mapping Josef Pelikán CGG MFF UK Praha. Photon-Mapping 2009-2016 Josef Pelikán CGG MFF UK Praha pepca@cgg.mff.cuni.cz http://cgg.mff.cuni.cz/~pepca/ Photon-mapping 2016 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 1 / 25 Základy Photon-mappingu

Více

I. D i s k r é t n í r o z d ě l e n í

I. D i s k r é t n í r o z d ě l e n í 6. T y p y r o z d ě l e n í Poznámka: V odst. 5.5-5.10 jsme uvedli příklady náhodných veličin a jejich distribučních funkcí. Poznali jsme, že se od sebe liší svým typem. V příkladech 5.5, 5.6 a 5.8 jsme

Více

Počítačová grafika III Radiometrie. Jaroslav Křivánek, MFF UK

Počítačová grafika III Radiometrie. Jaroslav Křivánek, MFF UK Počítačová grafika III Radiometrie Jaroslav Křivánek, MFF UK Jaroslav.Krivanek@mff.cuni.cz Směr, prostorový úhel, integrování na jednotkové kouli Směr ve 3D Směr = jednotkový vektor ve 3D Kartézské souřadnice

Více

p(x) = P (X = x), x R,

p(x) = P (X = x), x R, 6. T y p y r o z d ě l e n í Poznámka: V odst. 5.5-5.10 jsme uvedli příklady náhodných veličin a jejich distribučních funkcí. Poznali jsme, že se od sebe liší svým typem. V příkladech 5.5, 5.6 a 5.8 jsme

Více

1 Linearní prostory nad komplexními čísly

1 Linearní prostory nad komplexními čísly 1 Linearní prostory nad komplexními čísly V této přednášce budeme hledat kořeny polynomů, které se dále budou moci vyskytovat jako složky vektorů nebo matic Vzhledem k tomu, že kořeny polynomu (i reálného)

Více

Světlo je elektromagnetické vlnění, které má ve vakuu vlnové délky od 390 nm do 770 nm.

Světlo je elektromagnetické vlnění, které má ve vakuu vlnové délky od 390 nm do 770 nm. 1. Podstata světla Světlo je elektromagnetické vlnění, které má ve vakuu vlnové délky od 390 nm do 770 nm. Vznik elektromagnetických vln (záření): 1. při pohybu elektricky nabitých částic s nenulovým zrychlením

Více

ANALYTICKÁ GEOMETRIE LINEÁRNÍCH ÚTVARŮ V ROVINĚ

ANALYTICKÁ GEOMETRIE LINEÁRNÍCH ÚTVARŮ V ROVINĚ ANALYTICKÁ GEOMETRIE LINEÁRNÍCH ÚTVARŮ V ROVINĚ Parametrické vyjádření přímky v rovině Máme přímku p v rovině určenou body A, B. Sestrojíme vektor u = B A. Pro bod B tím pádem platí: B = A + u. Je zřejmé,

Více

Úvod do zpracování signálů

Úvod do zpracování signálů 1 / 25 Úvod do zpracování signálů Karel Horák Rozvrh přednášky: 1. Spojitý a diskrétní signál. 2. Spektrum signálu. 3. Vzorkovací věta. 4. Konvoluce signálů. 5. Korelace signálů. 2 / 25 Úvod do zpracování

Více

Kombinatorická minimalizace

Kombinatorická minimalizace Kombinatorická minimalizace Cílem je nalézt globální minimum ve velké diskrétní množině, kde může být mnoho lokálních minim. Úloha obchodního cestujícího Cílem je najít nejkratší cestu, která spojuje všechny

Více

Počítačová grafika III Úvod

Počítačová grafika III Úvod Počítačová grafika III Úvod Jaroslav Křivánek, MFF UK Jaroslav.Krivanek@mff.cuni.cz Syntéza obrazu (Rendering) Vytvoř obrázek z matematického popisu scény. Popis scény Geometrie Kde je jaký objekt ve scéně

Více

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru:

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru: 3 Maticový počet 3.1 Zavedení pojmu matice Maticí typu (m, n, kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru: a 11 a 12... a 1k... a 1n a 21 a 22...

Více

Vektorové podprostory, lineární nezávislost, báze, dimenze a souřadnice

Vektorové podprostory, lineární nezávislost, báze, dimenze a souřadnice Vektorové podprostory, lineární nezávislost, báze, dimenze a souřadnice Vektorové podprostory K množina reálných nebo komplexních čísel, U vektorový prostor nad K. Lineární kombinace vektorů u 1, u 2,...,u

Více

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace Vektory a matice Aplikovaná matematika I Dana Říhová Mendelu Brno Obsah 1 Vektory Základní pojmy a operace Lineární závislost a nezávislost vektorů 2 Matice Základní pojmy, druhy matic Operace s maticemi

Více

Matematika (CŽV Kadaň) aneb Úvod do lineární algebry Matice a soustavy rovnic

Matematika (CŽV Kadaň) aneb Úvod do lineární algebry Matice a soustavy rovnic Přednáška třetí (a pravděpodobně i čtvrtá) aneb Úvod do lineární algebry Matice a soustavy rovnic Lineární rovnice o 2 neznámých Lineární rovnice o 2 neznámých Lineární rovnice o dvou neznámých x, y je

Více

Téma 2: Pravděpodobnostní vyjádření náhodných veličin

Téma 2: Pravděpodobnostní vyjádření náhodných veličin 0.05 0.0 0.05 0.0 0.005 Nominální napětí v pásnici Std Mean 40 60 80 00 0 40 60 Std Téma : Pravděpodobnostní vyjádření náhodných veličin Přednáška z předmětu: Spolehlivost a bezpečnost staveb 4. ročník

Více

Fyzikální korespondenční seminář MFF UK

Fyzikální korespondenční seminář MFF UK Úloha I.S... náhodná 10 bodů; průměr 7,04; řešilo 45 studentů a) Zkuste vlastními slovy popsat, co je to náhodná veličina a jaké má vlastnosti (postačí vlastními slovy objasnit následující pojmy: náhodná

Více

MATICE. a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij]

MATICE. a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij] MATICE Matice typu m/n nad tělesem T je soubor m n prvků z tělesa T uspořádaných do m řádků a n sloupců: a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij] a m1 a m2 a mn Prvek a i,j je prvek matice A na místě

Více

Bayesovské metody. Mnohorozměrná analýza dat

Bayesovské metody. Mnohorozměrná analýza dat Mnohorozměrná analýza dat Podmíněná pravděpodobnost Definice: Uvažujme náhodné jevy A a B takové, že P(B) > 0. Podmíněnou pravěpodobností jevu A za podmínky, že nastal jev B, nazýváme podíl P(A B) P(A

Více

VZOROVÝ TEST PRO 3. ROČNÍK (3. A, 5. C)

VZOROVÝ TEST PRO 3. ROČNÍK (3. A, 5. C) VZOROVÝ TEST PRO 3. ROČNÍK (3. A, 5. C) max. 3 body 1 Zjistěte, zda vektor u je lineární kombinací vektorů a, b, je-li u = ( 8; 4; 3), a = ( 1; 2; 3), b = (2; 0; 1). Pokud ano, zapište tuto lineární kombinaci.

Více

Osvětlování a stínování

Osvětlování a stínování Osvětlování a stínování Pavel Strachota FJFI ČVUT v Praze 21. dubna 2010 Obsah 1 Vlastnosti osvětlovacích modelů 2 Světelné zdroje a stíny 3 Phongův osvětlovací model 4 Stínování 5 Mlha Obsah 1 Vlastnosti

Více

Afinita je stručný název pro afinní transformaci prostoru, tj.vzájemně jednoznačné afinní zobrazení bodového prostoru A n na sebe.

Afinita je stručný název pro afinní transformaci prostoru, tj.vzájemně jednoznačné afinní zobrazení bodového prostoru A n na sebe. 4 Afinita Afinita je stručný název pro afinní transformaci prostoru, tj.vzájemně jednoznačné afinní zobrazení bodového prostoru A n na sebe. Poznámka. Vzájemně jednoznačným zobrazením rozumíme zobrazení,

Více

1. Náhodný vektor (X, Y ) má diskrétní rozdělení s pravděpodobnostní funkcí p, kde. p(x, y) = a(x + y + 1), x, y {0, 1, 2}.

1. Náhodný vektor (X, Y ) má diskrétní rozdělení s pravděpodobnostní funkcí p, kde. p(x, y) = a(x + y + 1), x, y {0, 1, 2}. VIII. Náhodný vektor. Náhodný vektor (X, Y má diskrétní rozdělení s pravděpodobnostní funkcí p, kde p(x, y a(x + y +, x, y {,, }. a Určete číslo a a napište tabulku pravděpodobnostní funkce p. Řešení:

Více

Aplikovaná numerická matematika

Aplikovaná numerická matematika Aplikovaná numerická matematika 6. Metoda nejmenších čtverců doc. Ing. Róbert Lórencz, CSc. České vysoké učení technické v Praze Fakulta informačních technologií Katedra počítačových systémů Příprava studijních

Více

Náhodný vektor. Náhodný vektor. Hustota náhodného vektoru. Hustota náhodného vektoru. Náhodný vektor je dvojice náhodných veličin (X, Y ) T = ( X

Náhodný vektor. Náhodný vektor. Hustota náhodného vektoru. Hustota náhodného vektoru. Náhodný vektor je dvojice náhodných veličin (X, Y ) T = ( X Náhodný vektor Náhodný vektor zatím jsme sledovali jednu náhodnou veličinu, její rozdělení a charakteristiky často potřebujeme vyšetřovat vzájemný vztah několika náhodných veličin musíme sledovat jejich

Více

0.1 Úvod do lineární algebry

0.1 Úvod do lineární algebry Matematika KMI/PMATE 1 01 Úvod do lineární algebry 011 Lineární rovnice o 2 neznámých Definice 011 Lineární rovnice o dvou neznámých x, y je rovnice, která může být vyjádřena ve tvaru ax + by = c, kde

Více

VEKTORY. Obrázek 1: Jediný vektor. Souřadnice vektoru jsou jeho průměty do souřadných os x a y u dvojrozměrného vektoru, AB = B A

VEKTORY. Obrázek 1: Jediný vektor. Souřadnice vektoru jsou jeho průměty do souřadných os x a y u dvojrozměrného vektoru, AB = B A VEKTORY Vektorem se rozumí množina všech orientovaných úseček, které mají stejnou velikost, směr a orientaci, což vidíme na obr. 1. Jedna konkrétní orientovaná úsečka se nazývá umístění vektoru na obr.

Více

Počítačová grafika III Radiometrie. Jaroslav Křivánek, MFF UK

Počítačová grafika III Radiometrie. Jaroslav Křivánek, MFF UK Počítačová grafika III Radiometrie Jaroslav Křivánek, MFF UK Jaroslav.Krivanek@mff.cuni.cz Směr, prostorový úhel, integrování na jednotkové kouli Směr ve 3D Směr = jednotkový vektor ve 3D Kartézské souřadnice

Více

9. T r a n s f o r m a c e n á h o d n é v e l i č i n y

9. T r a n s f o r m a c e n á h o d n é v e l i č i n y 9. T r a n s f o r m a c e n á h o d n é v e l i č i n y Při popisu procesů zpracováváme vstupní údaj, hodnotu x tak, že výstupní hodnota y závisí nějakým způsobem na vstupní, je její funkcí y = f(x).

Více

Jiří Neubauer. Katedra ekonometrie, FVL, UO Brno kancelář 69a, tel

Jiří Neubauer. Katedra ekonometrie, FVL, UO Brno kancelář 69a, tel Katedra ekonometrie, FVL, UO Brno kancelář 69a, tel. 973 442029 email:jiri.neubauer@unob.cz Výsledky některých náhodných pokusů jsou přímo vyjádřeny číselně (např. při hodu kostkou padne 6). Náhodnou veličinou

Více

Lingebraické kapitolky - Analytická geometrie

Lingebraické kapitolky - Analytická geometrie Lingebraické kapitolky - Analytická geometrie Jaroslav Horáček KAM MFF UK 2013 Co je to vektor? Šipička na tabuli? Ehm? Množina orientovaných úseček majících stejný směr. Prvek vektorového prostoru. V

Více

Náhodné (statistické) chyby přímých měření

Náhodné (statistické) chyby přímých měření Náhodné (statistické) chyby přímých měření Hodnoty náhodných chyb se nedají stanovit předem, ale na základě počtu pravděpodobnosti lze zjistit, která z možných naměřených hodnot je více a která je méně

Více

Elektromagnetické pole je generováno elektrickými náboji a jejich pohybem. Je-li zdroj charakterizován nábojovou hustotou ( r r

Elektromagnetické pole je generováno elektrickými náboji a jejich pohybem. Je-li zdroj charakterizován nábojovou hustotou ( r r Záření Hertzova dipólu, kulové vlny, Rovnice elektromagnetického pole jsou vektorové diferenciální rovnice a podle symetrie bývá vhodné je řešit v křivočarých souřadnicích. Základní diferenciální operátory

Více

Chyby měření 210DPSM

Chyby měření 210DPSM Chyby měření 210DPSM Jan Zatloukal Stručný přehled Zdroje a druhy chyb Systematické chyby měření Náhodné chyby měření Spojité a diskrétní náhodné veličiny Normální rozdělení a jeho vlastnosti Odhad parametrů

Více

PŘÍMKA A JEJÍ VYJÁDŘENÍ V ANALYTICKÉ GEOMETRII

PŘÍMKA A JEJÍ VYJÁDŘENÍ V ANALYTICKÉ GEOMETRII PŘÍMKA A JEJÍ VYJÁDŘENÍ V ANALYTICKÉ GEOMETRII V úvodu analytické geometrie jsme vysvětlili, že její hlavní snahou je popsat geometrické útvary (body, vektory, přímky, kružnice,...) pomocí čísel nebo proměnných.

Více

B) výchovné a vzdělávací strategie jsou totožné se strategiemi vyučovacího předmětu Matematika.

B) výchovné a vzdělávací strategie jsou totožné se strategiemi vyučovacího předmětu Matematika. 4.8.3. Cvičení z matematiky Předmět Cvičení z matematiky je vyučován v sextě a v septimě jako volitelný předmět. Vzdělávací obsah vyučovacího předmětu Cvičení z matematiky vychází ze vzdělávací oblasti

Více

X39RSO/A4M39RSO. Integrace a syntéza obrazu pomocí metody Monte Carlo. Vlastimil Havran, ČVUT v Praze

X39RSO/A4M39RSO. Integrace a syntéza obrazu pomocí metody Monte Carlo. Vlastimil Havran, ČVUT v Praze X39RSO/A4M39RSO Integrace a syntéza obrazu pomocí metody Monte Carlo Vlastimil Havran, ČVUT v Praze havran@fel.cvut.cz Osnova Historie Výpočet integrálu metodou Monte Carlo Aplikace v syntéze obrazu Antialiasing

Více

7. Funkce jedné reálné proměnné, základní pojmy

7. Funkce jedné reálné proměnné, základní pojmy , základní pojmy POJEM FUNKCE JEDNÉ PROMĚNNÉ Reálná funkce f jedné reálné proměnné je funkce (zobrazení) f: X Y, kde X, Y R. Jde o zvláštní případ obecného pojmu funkce definovaného v přednášce. Poznámka:

Více

K OZA SE PASE NA POLOVINĚ ZAHRADY Zadání úlohy

K OZA SE PASE NA POLOVINĚ ZAHRADY Zadání úlohy Koza se pase na polovině zahrady, Jaroslav eichl, 011 K OZA E PAE NA POLOVINĚ ZAHADY Zadání úlohy Zahrada kruhového tvaru má poloměr r = 10 m. Do zahrady umístíme kozu, kterou přivážeme provazem ke kolíku

Více

Náhodný vektor a jeho charakteristiky

Náhodný vektor a jeho charakteristiky Náhodný vektor a jeho číselné charakteristiky 1 Náhodný vektor a jeho charakteristiky V následující kapitole budeme věnovat pozornost pouze dvourozměřnému náhodnému vektoru, i když uvedené pojmy a jejich

Více

Dobývání znalostí. Doc. RNDr. Iveta Mrázová, CSc. Katedra teoretické informatiky Matematicko-fyzikální fakulta Univerzity Karlovy v Praze

Dobývání znalostí. Doc. RNDr. Iveta Mrázová, CSc. Katedra teoretické informatiky Matematicko-fyzikální fakulta Univerzity Karlovy v Praze Dobývání znalostí Doc. RNDr. Iveta Mrázová, CSc. Katedra teoretické informatiky Matematicko-fyzikální fakulta Univerzity Karlovy v Praze Dobývání znalostí Pravděpodobnost a učení Doc. RNDr. Iveta Mrázová,

Více

0.1 Úvod do lineární algebry

0.1 Úvod do lineární algebry Matematika KMI/PMATE 1 01 Úvod do lineární algebry 011 Vektory Definice 011 Vektorem aritmetického prostorur n budeme rozumět uspořádanou n-tici reálných čísel x 1, x 2,, x n Definice 012 Definice sčítání

Více

Náhodná veličina a její charakteristiky. Před provedením pokusu jeho výsledek a tedy ani sledovanou hodnotu neznáte. Proto je proměnná, která

Náhodná veličina a její charakteristiky. Před provedením pokusu jeho výsledek a tedy ani sledovanou hodnotu neznáte. Proto je proměnná, která Náhodná veličina a její charakteristiky Náhodná veličina a její charakteristiky Představte si, že provádíte náhodný pokus, jehož výsledek jste schopni ohodnotit nějakým číslem. Před provedením pokusu jeho

Více

Lineární algebra : Metrická geometrie

Lineární algebra : Metrická geometrie Lineární algebra : Metrická geometrie (16. přednáška) František Štampach, Karel Klouda LS 2013/2014 vytvořeno: 6. května 2014, 10:42 1 2 Úvod Zatím jsme se lineární geometrii věnovali v kapitole o lineárních

Více

PŘEDNÁŠKA 6 INTEGRACE POMOCÍ SUBSTITUCE

PŘEDNÁŠKA 6 INTEGRACE POMOCÍ SUBSTITUCE PŘEDNÁŠKA 6 INTEGRACE POMOCÍ SUBSTITUCE Příklad Představme si, že máme vypočítat integrál I = f(, y) d dy, M kde M = {(, y) R 2 1 < 2 + y 2 < 4}. y M je mezikruží mezi kružnicemi o poloměru 1 a 2 a se

Více

9. T r a n s f o r m a c e n á h o d n é v e l i č i n y

9. T r a n s f o r m a c e n á h o d n é v e l i č i n y 9. T r a n s f o r m a c e n á h o d n é v e l i č i n Při popisu procesů zpracováváme vstupní údaj, hodnotu x tak, že výstupní hodnota závisí nějakým způsobem na vstupní, je její funkcí = f(x). Pokud

Více

8.3). S ohledem na jednoduchost a názornost je výhodné seznámit se s touto Základní pojmy a vztahy. Definice

8.3). S ohledem na jednoduchost a názornost je výhodné seznámit se s touto Základní pojmy a vztahy. Definice 9. Lineární diferenciální rovnice 2. řádu Cíle Diferenciální rovnice, v nichž hledaná funkce vystupuje ve druhé či vyšší derivaci, nazýváme diferenciálními rovnicemi druhého a vyššího řádu. Analogicky

Více

Parametrické rovnice křivky

Parametrické rovnice křivky Křivkový integrál Robert Mařík jaro 2014 Tento text je tištěnou verzí prezentací dostupných z http://user.mendelu.cz/marik/am. Křivkový integrál Jedná se o rozšíření Riemannova integrálu, kdy množinou

Více

Zavádění inovativních metod a výukových materiálů do přírodovědných předmětů na Gymnáziu v Krnově 07_10_Zobrazování optickými soustavami 1

Zavádění inovativních metod a výukových materiálů do přírodovědných předmětů na Gymnáziu v Krnově 07_10_Zobrazování optickými soustavami 1 Zavádění inovativních metod a výukových materiálů do přírodovědných předmětů na Gymnáziu v Krnově 07_10_Zobrazování optickými soustavami 1 Ing. Jakub Ulmann Zobrazování optickými soustavami 1. Optické

Více

8 Střední hodnota a rozptyl

8 Střední hodnota a rozptyl Břetislav Fajmon, UMAT FEKT, VUT Brno Této přednášce odpovídá kapitola 10 ze skript [1]. Také je k dispozici sbírka úloh [2], kde si můžete procvičit příklady z kapitol 2, 3 a 4. K samostatnému procvičení

Více

Interpolace, ortogonální polynomy, Gaussova kvadratura

Interpolace, ortogonální polynomy, Gaussova kvadratura Interpolace, ortogonální polynomy, Gaussova kvadratura Petr Tichý 20. listopadu 2013 1 Úloha Lagrangeovy interpolace Dán omezený uzavřený interval [a, b] a v něm n + 1 různých bodů x 0, x 1,..., x n. Nechť

Více

11 Zobrazování objektů 3D grafiky

11 Zobrazování objektů 3D grafiky 11 Zobrazování objektů 3D grafiky Studijní cíl Tento blok je věnován základním algoritmům zobrazení 3D grafiky. Postupně budou probrány základní metody projekce kolmé promítání, rovnoběžné promítání a

Více

10. Soustavy lineárních rovnic, determinanty, Cramerovo pravidlo

10. Soustavy lineárních rovnic, determinanty, Cramerovo pravidlo 0. Soustavy lineárních rovnic, determinanty, Cramerovo pravidlo (PEF PaA) Petr Gurka aktualizováno 9. prosince 202 Obsah Základní pojmy. Motivace.................................2 Aritmetický vektorový

Více

Diferenciální rovnice 3

Diferenciální rovnice 3 Diferenciální rovnice 3 Lineární diferenciální rovnice n-tého řádu Lineární diferenciální rovnice (dále jen LDR) n-tého řádu je rovnice tvaru + + + + = kde = je hledaná funkce, pravá strana a koeficienty

Více

V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti

V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti Kapitola 5 Vektorové prostory V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti operací sčítání a násobení

Více

3. ÚVOD DO ANALYTICKÉ GEOMETRIE 3.1. ANALYTICKÁ GEOMETRIE PŘÍMKY

3. ÚVOD DO ANALYTICKÉ GEOMETRIE 3.1. ANALYTICKÁ GEOMETRIE PŘÍMKY 3. ÚVOD DO ANALYTICKÉ GEOMETRIE 3.1. ANALYTICKÁ GEOMETRIE PŘÍMKY V této kapitole se dozvíte: jak popsat bod v rovině a v prostoru; vzorec na výpočet vzdálenosti dvou bodů; základní tvary rovnice přímky

Více

Numerická matematika 1

Numerická matematika 1 Numerická matematika 1 Obsah 1 Řešení nelineárních rovnic 3 1.1 Metoda půlení intervalu....................... 3 1.2 Metoda jednoduché iterace..................... 4 1.3 Newtonova metoda..........................

Více

a) [0,4 b] r < R, b) [0,4 b] r R c) [0,2 b] Zakreslete obě závislosti do jednoho grafu a vyznačte na osách důležité hodnoty.

a) [0,4 b] r < R, b) [0,4 b] r R c) [0,2 b] Zakreslete obě závislosti do jednoho grafu a vyznačte na osách důležité hodnoty. Příklady: 24. Gaussův zákon elektrostatiky 1. Na obrázku je řez dlouhou tenkostěnnou kovovou trubkou o poloměru R, která nese na povrchu náboj s plošnou hustotou σ. Vyjádřete velikost intenzity E jako

Více

Projekt: Inovace oboru Mechatronik pro Zlínský kraj Registrační číslo: CZ.1.07/1.1.08/

Projekt: Inovace oboru Mechatronik pro Zlínský kraj Registrační číslo: CZ.1.07/1.1.08/ Projekt: Inovace oboru Mechatronik pro Zlínský kraj Registrační číslo: CZ.1.07/1.1.08/03.0009 Zrcadla Zobrazení zrcadlem Zrcadla jistě všichni znáte z každodenního života ráno se do něj v koupelně díváte,

Více

6 Skalární součin. u v = (u 1 v 1 ) 2 +(u 2 v 2 ) 2 +(u 3 v 3 ) 2

6 Skalární součin. u v = (u 1 v 1 ) 2 +(u 2 v 2 ) 2 +(u 3 v 3 ) 2 6 Skalární součin Skalární součin 1 je operace, která dvěma vektorům (je to tedy binární operace) přiřazuje skalár (v našem případě jde o reálné číslo, obecně se jedná o prvek nějakého tělesa T ). Dovoluje

Více

Otázku, kterými body prochází větev implicitní funkce řeší následující věta.

Otázku, kterými body prochází větev implicitní funkce řeší následující věta. 1 Implicitní funkce Implicitní funkce nejsou funkce ve smyslu definice, že funkce bodu z definičního oboru D přiřadí právě jednu hodnotu z oboru hodnot H. Přesnější termín je funkce zadaná implicitně.

Více

Světlo jako elektromagnetické záření

Světlo jako elektromagnetické záření Světlo jako elektromagnetické záření Základní pojmy: Homogenní prostředí prostředí, jehož dané vlastnosti jsou ve všech místech v prostředí stejné. Izotropní prostředí prostředí, jehož dané vlastnosti

Více

STANOVENÍ SPOLEHLIVOSTI GEOTECHNICKÝCH KONSTRUKCÍ. J. Pruška, T. Parák

STANOVENÍ SPOLEHLIVOSTI GEOTECHNICKÝCH KONSTRUKCÍ. J. Pruška, T. Parák STANOVENÍ SPOLEHLIVOSTI GEOTECHNICKÝCH KONSTRUKCÍ J. Pruška, T. Parák OBSAH: 1. Co je to spolehlivost, pravděpodobnost poruchy, riziko. 2. Deterministický a pravděpodobnostní přístup k řešení problémů.

Více

Náhodné chyby přímých měření

Náhodné chyby přímých měření Náhodné chyby přímých měření Hodnoty náhodných chyb se nedají stanovit předem, ale na základě počtu pravděpodobnosti lze zjistit, která z možných naměřených hodnot je více a která je méně pravděpodobná.

Více

příkladů do cvičení. V textu se objeví i pár detailů, které jsem nestihl (na které jsem zapomněl) a(b u) = (ab) u, u + ( u) = 0 = ( u) + u.

příkladů do cvičení. V textu se objeví i pár detailů, které jsem nestihl (na které jsem zapomněl) a(b u) = (ab) u, u + ( u) = 0 = ( u) + u. Několik řešených příkladů do Matematiky Vektory V tomto textu je spočteno několik ukázkových příkladů které vám snad pomohou při řešení příkladů do cvičení. V textu se objeví i pár detailů které jsem nestihl

Více

Téma 2: Pravděpodobnostní vyjádření náhodných veličin

Téma 2: Pravděpodobnostní vyjádření náhodných veličin 0.025 0.02 0.015 0.01 0.005 Nominální napětí v pásnici Std Mean 140 160 180 200 220 240 260 Std Téma 2: Pravděpodobnostní vyjádření náhodných veličin Přednáška z předmětu: Pravděpodobnostní posuzování

Více

Matematika 1 MA1. 1 Analytická geometrie v prostoru - základní pojmy. 4 Vzdálenosti. 12. přednáška ( ) Matematika 1 1 / 32

Matematika 1 MA1. 1 Analytická geometrie v prostoru - základní pojmy. 4 Vzdálenosti. 12. přednáška ( ) Matematika 1 1 / 32 Matematika 1 12. přednáška MA1 1 Analytická geometrie v prostoru - základní pojmy 2 Skalární, vektorový a smíšený součin, projekce vektoru 3 Přímky a roviny 4 Vzdálenosti 5 Příčky mimoběžek 6 Zkouška;

Více

10. cvičení z PST. 5. prosince T = (n 1) S2 X. (n 1) s2 x σ 2 q χ 2 (n 1) (1 α 2 ). q χ 2 (n 1) 2. 2 x. (n 1) s. x = 1 6. x i = 457.

10. cvičení z PST. 5. prosince T = (n 1) S2 X. (n 1) s2 x σ 2 q χ 2 (n 1) (1 α 2 ). q χ 2 (n 1) 2. 2 x. (n 1) s. x = 1 6. x i = 457. 0 cvičení z PST 5 prosince 208 0 (intervalový odhad pro rozptyl) Soubor (70, 84, 89, 70, 74, 70) je náhodným výběrem z normálního rozdělení N(µ, σ 2 ) Určete oboustranný symetrický 95% interval spolehlivosti

Více

1 Tyto materiály byly vytvořeny za pomoci grantu FRVŠ číslo 1145/2004.

1 Tyto materiály byly vytvořeny za pomoci grantu FRVŠ číslo 1145/2004. Prostá regresní a korelační analýza 1 1 Tyto materiály byly vytvořeny za pomoci grantu FRVŠ číslo 1145/2004. Problematika závislosti V podstatě lze rozlišovat mezi závislostí nepodstatnou, čili náhodnou

Více

Odhady - Sdružené rozdělení pravděpodobnosti

Odhady - Sdružené rozdělení pravděpodobnosti Odhady - Sdružené rozdělení pravděpodobnosti 4. listopadu 203 Kdybych chtěl znát maximum informací o náhodné veličině, musel bych znát všechny hodnoty, které mohou padnout, a jejich pravděpodobnosti. Tedy

Více

Teorie informace a kódování (KMI/TIK) Reed-Mullerovy kódy

Teorie informace a kódování (KMI/TIK) Reed-Mullerovy kódy Teorie informace a kódování (KMI/TIK) Reed-Mullerovy kódy Lukáš Havrlant Univerzita Palackého 10. ledna 2014 Primární zdroj Jiří Adámek: Foundations of Coding. Strany 137 160. Na webu ke stažení, heslo:

Více

2D transformací. červen Odvození transformačního klíče vybraných 2D transformací Metody vyrovnání... 2

2D transformací. červen Odvození transformačního klíče vybraných 2D transformací Metody vyrovnání... 2 Výpočet transformačních koeficinetů vybraných 2D transformací Jan Ježek červen 2008 Obsah Odvození transformačního klíče vybraných 2D transformací 2 Meto vyrovnání 2 2 Obecné vyjádření lineárních 2D transformací

Více

Počítačová grafika III (NPGR010) 3. přednáška: Odraz světla, BRDF

Počítačová grafika III (NPGR010) 3. přednáška: Odraz světla, BRDF Počítačová grafika III (NPGR010) 3. přednáška: Odraz světla, BRDF Kristina Bártová 4. října, 01 V této kapitole se budeme zabývat tím, co se stane, když světlo dopadne na povrch. odrazivých vlastností

Více

Rasterizace je proces při kterém se vektorově definovaná grafika konvertuje na. x 2 x 1

Rasterizace je proces při kterém se vektorově definovaná grafika konvertuje na. x 2 x 1 Kapitola 4 Rasterizace objektů Rasterizace je proces při kterém se vektorově definovaná grafika konvertuje na rastrově definované obrazy. Při zobrazení reálného modelu ve světových souřadnicích na výstupní

Více

7. OSVĚTLENÍ. Cíl Po prostudování této kapitoly budete znát. Výklad. 7. Osvětlení

7. OSVĚTLENÍ. Cíl Po prostudování této kapitoly budete znát. Výklad. 7. Osvětlení 7. OSVĚTENÍ Cíl Po prostudování této kapitoly budete znát základní pojmy při práci se světlem charakteristické fyzikální vlastnosti světla důležité pro práci se světlem v počítačové grafice základní operace

Více

Náhodný vektor. Náhodný vektor. Hustota náhodného vektoru. Hustota náhodného vektoru. Náhodný vektor je dvojice náhodných veličin (X, Y ) T = ( X

Náhodný vektor. Náhodný vektor. Hustota náhodného vektoru. Hustota náhodného vektoru. Náhodný vektor je dvojice náhodných veličin (X, Y ) T = ( X Náhodný vektor Náhodný vektor zatím jsme sledovali jednu náhodnou veličinu, její rozdělení a charakteristik často potřebujeme všetřovat vzájemný vztah několika náhodných veličin musíme sledovat jejich

Více

2. Numerické výpočty. 1. Numerická derivace funkce

2. Numerické výpočty. 1. Numerická derivace funkce 2. Numerické výpočty Excel je poměrně pohodlný nástroj na provádění různých numerických výpočtů. V příkladu si ukážeme možnosti výpočtu a zobrazení diferenciálních charakteristik analytické funkce, přičemž

Více

Dnešní látka: Literatura: Kapitoly 3 a 4 ze skript Karel Rektorys: Matematika 43, ČVUT, Praha, Text přednášky na webové stránce přednášejícího.

Dnešní látka: Literatura: Kapitoly 3 a 4 ze skript Karel Rektorys: Matematika 43, ČVUT, Praha, Text přednášky na webové stránce přednášejícího. Předmět: MA4 Dnešní látka: Od okrajových úloh v 1D k o. ú. ve 2D Laplaceův diferenciální operátor Variačně formulované okrajové úlohy pro parciální diferenciální rovnice a metody jejich přibližného řešení

Více

1 Projekce a projektory

1 Projekce a projektory Cvičení 3 - zadání a řešení úloh Základy numerické matematiky - NMNM20 Verze z 5. října 208 Projekce a projektory Opakování ortogonální projekce Definice (Ortogonální projekce). Uvažujme V vektorový prostor

Více

Počítačová grafika III Světlo, Radiometrie. Jaroslav Křivánek, MFF UK

Počítačová grafika III Světlo, Radiometrie. Jaroslav Křivánek, MFF UK Počítačová grafika III Světlo, Radiometrie Jaroslav Křivánek, MFF UK Jaroslav.Krivanek@mff.cuni.cz Syntéza obrazu (Rendering) Vytvoř obrázek z matematického popisu scény. 2 Fotorealistická syntéza obrazu

Více

Normální (Gaussovo) rozdělení

Normální (Gaussovo) rozdělení Normální (Gaussovo) rozdělení Normální (Gaussovo) rozdělení popisuje vlastnosti náhodné spojité veličiny, která vzniká složením různých náhodných vlivů, které jsou navzájem nezávislé, kterých je velký

Více

Pravděpodobnost a statistika

Pravděpodobnost a statistika Pravděpodobnost a statistika 1 Náhodné pokusy a náhodné jevy Činnostem, jejichž výsledek není jednoznačně určen podmínkami, za kterých probíhají, a které jsou (alespoň teoreticky) neomezeně opakovatelné,

Více

Definice 13.1 Kvadratická forma v n proměnných s koeficienty z tělesa T je výraz tvaru. Kvadratická forma v n proměnných je tak polynom n proměnných s

Definice 13.1 Kvadratická forma v n proměnných s koeficienty z tělesa T je výraz tvaru. Kvadratická forma v n proměnných je tak polynom n proměnných s Kapitola 13 Kvadratické formy Definice 13.1 Kvadratická forma v n proměnných s koeficienty z tělesa T je výraz tvaru f(x 1,..., x n ) = a ij x i x j, kde koeficienty a ij T. j=i Kvadratická forma v n proměnných

Více

11. cvičení z Matematické analýzy 2

11. cvičení z Matematické analýzy 2 11. cvičení z Matematické analýzy 11. - 15. prosince 17 11.1 (trojný integrál - Fubiniho věta) Vypočtěte (i) xyz dv, kde je ohraničeno plochami y x, x y, z xy a z. (ii) y dv, kde je ohraničeno shora rovinou

Více

Modelování blízkého pole soustavy dipólů

Modelování blízkého pole soustavy dipólů 1 Úvod Modelování blízkého pole soustavy dipólů J. Puskely, Z. Nováček Ústav radioelektroniky, Fakulta elektrotechniky a komunikačních technologií, VUT v Brně Purkyňova 118, 612 00 Brno Abstrakt Tento

Více

řešeny numericky 6 Obyčejné diferenciální rovnice řešeny numericky

řešeny numericky 6 Obyčejné diferenciální rovnice řešeny numericky řešeny numericky řešeny numericky Břetislav Fajmon, UMAT FEKT, VUT Brno Na minulé přednášce jsme viděli některé klasické metody a přístupy pro řešení diferenciálních rovnic: stručně řečeno, rovnice obsahující

Více