Пытаюсь разобраться с PBR применительно к IBL. Подготовил в офлайне кубомапы с размытием и теперь пытаюсь собрать все это в кучу. Получается так, что в варианте с IBL нам не нужно считать CookTorrance (GGX). А достаточно сделать выборку отражение по мипам кубомапы в зависимости от roughness, сделать выборку по irradiance map по нормали и потом результаты смешать по Френелю? Этого достаточно, или я что-то путаю? Скорее всего путаю, поэтому просьба наставить на путь истинный.
Sergio
> Получается так, что в варианте с IBL нам не нужно считать CookTorrance (GGX).
Разве GI не учитывается в IBL ?
Sergio
Привет если нужно могу поделится шейдером(портировался с Мармосета) - и кодом что и как.
http://snag.gy/kFLqC.jpg
http://snag.gy/j6BGR.jpg
http://snag.gy/RTZCS.jpg
ReeV
Так поделись со всеми :)
ReeV
Да, поделись со всеми.
innuendo
Это, по-хорошему, должно считаться в офлайне при подготовке кубомапы. Я правильно понимаю?
Sergio
> Это, по-хорошему, должно считаться в офлайне при подготовке кубомапы.
А как же тогда динамические лайты ?
окей щяс все опишу :)
- Offline
1. Создаем PMREM(Prefiltered Mipmaped Radiance Environment map)
a) Качаем hdr-map http://gl.ict.usc.edu/Data/HighResProbes/probes/pisa.hdr (тут еще есть http://gl.ict.usc.edu/Data/HighResProbes)
b) Качаем HDR Shop (https://www.dropbox.com/s/r9sa61wihdhx45v/HDRShop.exe?dl=0)
c) Открывем HDR Shop
- открываем .hdr - потом Image -> Panorama -> Panoramic Transform
- настройки Source : Longitude, Dest : Cube Env(Vertical Cross), Конвертим
- Save as .. *.HDR -> pisa_cross.hdr
d) Качаем ModifiedCubeMapGen-1_66 - https://seblagarde.wordpress.com/2012/06/10/amd-cubemapgen-for-ph… ed-rendering/
- Load Cube Cross (наш pisa_cross.hdr)
- Нажимаем Filter Cubemap(что бы добиться лучшего IBL - c настройками фильтрации стоит поиграться)
- Ставим check на Save MipChain и сохраняем Save CubeMap(.dds) - pisa_cross.dds
2. Генерим Sh-Coeff
a) Грузим в движек наш PMREM(pisa_cross.dds)
b) Генерим sh-коеффеценты http://pastebin.com/3cjE3stn
- Runtime
1. Используем модель AKS-74U с PBR-тектурами (http://quixel.se/usermanual/quixelsuite/doku.php?id=ddo_samples)
2. Коффеценты для шейдера - http://pastebin.com/C72FJR39
3. Юзаем шейдер для рендера - http://pastebin.com/HSnHZ9vE
Any Questions?
Что должно выйти:
http://snag.gy/kFLqC.jpg
http://snag.gy/j6BGR.jpg
http://snag.gy/RTZCS.jpg
ReeV
Спасибо,забираю
ReeV
не очень понял, зачем ты кубмапу импортанс семплишь 32 выборками в шейдере? результат этого семплинга должен быть запечён в мипы кубмапы все равно.
Mr F
Мармосет делает средню выборку из 32 семпла по PhongRands
ReeV
но зах? мипмапов норм хватает ведь
Mr F
http://http.developer.nvidia.com/GPUGems3/gpugems3_ch20.html
P.S: скидывайте результаты
ReeV
> http://http.developer.nvidia.com/GPUGems3/gpugems3_ch20.html
и щито? импортанс семплить на гпу и я имею (https://github.com/playcanvas/engine/pull/143), только зах это в рантайм шейдерах материалов делать?
идея же в том чтобы просчитать в мипы отражение с разным рафнесом, юзая свой брдф, а потом линейно интерполировать меж ними - дешёво и вкусно.
может в мармосете мипы хреновые автогенеренные, и поэтому они семплят в рантайме - я хз.
Тема в архиве.