Úloha r10: Image-based lighting

Úkolem je naimplementovat a otestovat výpočet osvětlení z mapy prostředí (environment map) na ploše s libovolnou BRDF. Mapa prostředí je zadána HDR obrázkem načteným ze souboru.

Váš algoritmus by měl být zaměnitelný za modul RayTracing, tj. musí implementovat interface ImageFunction za podmínky, že jednotlivé primární paprsky (vzorky v daném pixelu) bude generovat externí sampler, např. JitteringSynthesizer.
Doporučuji zachovat a využít kompletní mechanismus primárních paprsků vrhaných do jednoduché CSG scény, kterou si popíšete ve formátu .jgl. Jednotlivá tělesa budou mít nastavené různé parametry spekulárního exponentu, podle toho je poznáte. Žádnou rekurzi (jako v ray-tracingu) nebudete potřebovat, implementujete pouze jediný odraz světla (ten známý integrál z přednášky, ve kterém se integruje součin BRDF, cos(theta) a přicházející radiance)..

Použitá metoda: výpočet lokálního osvětlovacího integrálu metodou Monte Carlo s kombinací dvou vzorkovacích strategií: podle BRDF a podle intenzity mapy prostředí. Ke kombinaci bude použita strategie vícenásobného vzorkování podle důležitosti (Multiple Importance Sampling - MIS).

Postup práce: nejdříve naimplementujte výpočet osvětlení vzorkováním BRDF, poté výpočet vzorkováním mapy prostředí. V tuto chvíli se musíte ujistit, že obě metody konvergují k identickým výsledkům. Pak zkombinujete obě vzorkovací strategie pomocí MIS a opět se ujistěte, že všechny tři metody (BRDF, mapa prostředí a kombinace) konvergují k identickým výsledkům.

3D scéna: použijte mapy prostředí z www.debevec.org/Probes, budete si je pravděpodobně pro pohodlnější vzorkování muset převést do jiného formátu - např. "latitude-longitude". Zkonstruujte si testovací scénu s několika objekty, které budou mít stejnou geometrii a postupně se zvyšující exponent Phongova modelu (zleva: čistě difúzní BRDF, Phong s exponentem 2, 10, 100, a 1000).

Porovnání výsledků: porovnejte výsledky všech třech vzorkovacích strategií (BRDF, mapa prostředí a kombinace) pro alespoň tři různé mapy prostředí. Připravte stručnou zprávu s výsledky testů.

Výsledky: je třeba poslat všechny zdrojové soubory, které vzniknou nebo které upravíte. Pozor! Kód musí být komentovaný - bez komentářů je kód nepřijatelný (tj. jako by úloha nebyla odevzdána). Dále odevzdáte zapojení, která se vám osvědčila, včetně datových souborů (popis scény). Pak také zprávu se stručným popisem implementace a s výsledky testování algoritmu. Zpráva je, stejně jako komentovaný kód, nedílnou součástí práce, tj. úloha bez zprávy jako by nebyla.

TERMÍN: do 27. 2. 2011

TRIVIÁLNÍ MODUL: class cz.cuni.jagrlib.piece.RayTracing

INTERFACE: ImageFunction

ZAPOJENÍ: sRayTracingJitter.xml, sRayTracingBest.xml, ...

3D SCÉNA: musíte si ji napsat sami, jako dobrý výchozí soubor poslouží data/phongTest.jgl.

MAPY PROSTŘEDÍ: stáhněte si je např. na www.debevec.org/Probes.


[Cvičení NPGR010]  [Projekt JaGrLib]  [Přednášky a semináře]  [Odkazy na demonstrace]

Valid XHTML 1.1 Copyright (C) 2010 J.Pelikán, last change: $Date: 2010-11-29 13:01:16 +0100 (Mon, 29 Nov 2010) $
Send comments/requests to pepca.at.cgg.mff.cuni.cz