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?

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

Поздрави и успех