Image-based Lighting
Напишете image-based environment лампа и модифицирайте (ако е нужно) path tracing алгоритъма, така че да работи image-based осветление.
HDR проби може да намерите тук. Използвайте hdr2exr, за да ги трансформирате до spherical (latitude-longitude) environment maps, или, за превръщане в Cube maps (при първия вариант ще трябва да си реализирате Spherical Environment, но пък после семплирането ще е малко по-лесно; във втория - ще можете да ползвате директно сегашния CubemapEnvironment, но семплирането ще е (малко) по-сложно).
Съществуват разнообразие от различни графични формати, в които можете да пазите вашите HDR картинки:
.hdr: поддържа се от доста програми, можете да го четете с тази библиотека.
.exr: поддържа се нативно от hexray.
Environment лампата може да работи както в GI режим, така и в обикновен. При всички положения, лампата трябва да се координира по някакъв начин с Environment класа (най-просто можете да предположите, че ако е зададена Environment лампа, то Environment също ще го има зададен). В имплементацията на лампата връщайте на шейдърите някакъв голям брой семпли (за добро осветление ще ви трябват 80-200). Самите семпли генерирайте като случайни, равномерно разпределени точки по сфера с достатъчно голям радиус, че да обхваща цялата сцена.
За примерна сцена, виж тук.
Едно много важно подобрение на метода е да не генерирате съвсем случайни точки по сферата, а да ползва принципа "importance sampling" - да се падат по-нагъсто точки в "ярките" части от обкръжението. Тук имате широк избор от начини за определяне на това кои са тези ярки части. Можете да използвате анализ на самата картинка, а може и (като предварителна фаза) да разхвърляте 30000 (или повече) съвсем случайни семпли, да сметнете яркостите им, и да ги запазите в структура, която ви позволява в последствие да "теглите" случаен от тези 30000 семпли, като по-ярките имат по-голяма вероятност да се паднат (пропорционална на яркостта им). Не забравяйте да нормирате монте-карло метода по въпросните вероятности.
Добре реализиран importance sampling се оценя с 5 или повече допълнителни точки.
Comments
Относно HDRshop
На сайта им (респективно линка, който е в условието) има само платени лицензи, академичните излиза, че също са платени. Програмата я няма и по торентите. Какво мога да ползвам като алтернатива на HDRshop?
http://maltekueppers.de/wp/wp-content/uploads/2009/02/opensource-communi...
hdr2exr
Програмката hdr2exr можете да ползвате, аз с тая цел я бях написал. От командния ред пусни hdr2exr -h за да видиш как се работи с нея. Ще ъпдейтна и инфото към задачата, благодаря за забележката.
Вече е малко късно, но може и
Вече е малко късно, но може и на някого да му е от помощ.
Билдването на hdr2exr не е лесна работа в текущото последно състояние на trinity, а му отделих няколко часа. В крайна сметка има доста лесно решение.
Свалете си цялото репо от гитхъба и се върнете на камит 8f3b3be "git checkout 8f3b3be". След това вече можете да компилирате и линкнете спокойно.
Общо всички команди в един терминал са:
git clone https://github.com/anrieff/trinity.git
cd trinity/tools/hdr2exr
git checkout 8f3b3be
make all
Поздрави и успех