4.Про лайтпробы и нерегулярную сетку
Можно иметь особый вид геометрии - лайтмеш (крайне низкодетализированный лод геометрии)
Сама геометрия 'привязана' к этому лайтмешу (имеются 2е uv, либо ручками, либо проецированием). Собственно работа артиста и заключается в подготовке лайтмеша.
Рендериш эту геометрию - имеешь сразу world-space координаты, в качестве позиции (куда рендерить) выставляешь uv в своем атласе.
Сумбурно описал, кому интересно - тут описано + вроде как в Infamous: Second Son также сделано для статики.
+ в том, что очень удобно работать - расставлять объекты по карте, релайтинг быстро делать и т.д., рассчитывать индексы проб в нерегулярной сетке можно заранее для каждого текселя / вершины лайт меша.
+ очень быстро пересчитывать какой то конкретный кусок (просто отрендерил нужные объекты туда), можно очень быстро время суток менять
+ заранее можно амбиент цвет готовый посчитать и сохранить в текстуру (в пиксельном шейдере собственно просемплировать лайтмапу осталось)
+ можно лоды делать по расстоянию, меньше отводить текстурного пространства, подгружать
Для динамики - по инстансам считать
Ох. Освещение это вообще перманентная головная боль, с момента появления трёхмерных рендереров.
Лайтмапы, как я убедился, даже и не стоит пытаться накладывать на меши сложной формы, это или очень затратно по времени рассчётов, либо попросту того не стоит. Для себя решил проблему через множественные лайтпробы для освещения каждой модели. На практике вполне достаточно 8 штук на модель. Конечно чётко наложенную тень мы таким образом не получим, но если у нас лайтмаппер с симуляцией переотражения\фотон маппингом, там тени достаточно размытые и не критично. А от солнца можно динамический источник с GI.
3D Grid, я как-то рази интереса посчитал объем такой текстуры, у меня вышло около полутора гигабайт на довольно скромный по размерам уровень. И самое противное - куча неиспользованного пространства. У Хумуса была демка с 3Д текстурой в абстрактной комнатке - оч. красиво смотрится, но не юзабельно.
>>Нерегулярно расставленные точки, в которых записан свет, образуют тетраэдры, внутри которых мы их интерполируем. Где-то интерполируют на центр каждого
>>объекта на цпу (юнити), где-то аж повертексно на гпу, например в Infamous: Second Son
Ну я повертексно интерполирую на GPU - довольно неплохо выглядит. Впрочем здесь самое главное на мой взгляд - это то, как устроены лайтпробы.
Это может быть и прямой лукап в лайтмапу по заданным координатам, использование того же 3Д грида (но очень разреженного), или кубемапы или сферические гармоники, регулярная или нерегулярная сетка. Насколько я понял, ни один из этих способов не лучше другого, т.к. при статическом освещении освещение движущихся объектов довольно нетривиальная задача, в плане получения приемлимых результатов.
g-cont
да вполне вроде сетками пользуются в разных играх
я вот тоже демку сделал с ними - пакуется в 10 раз вообще
+ можно разные лоды держать, т.е. не обязательно в памяти ее целиком иметь
+ не обязательно 3д сетку иметь (можно 1 слой, ну ок - 1-3 слоя, слегка приподнятых над ландшафтом)
для городов можно отдельную сетку иметь... если про OpenWorld
_Wizard_
сетка по большому счёту - та же 3д текстура, только очень разреженная. Ну и её можно проиндексировать, для уменьшения места.
Плохо то, что на одну модель\меш обычно приходятся значения с одной ячейки сетки. Т.е. освещение получается крайне размытым.
g-cont
>Т.е. освещение получается крайне размытым.
одно в принципе и надо
мягкое все получается
Belfegnar
>In high quality visualization models are often tessellated into very small triangles
>Therefore, we observe that vertex baking is sufficient for the majority of scene triangles, and sometimes even superior in quality
>All triangles that require texture are extracted, segmented, and unwrapped to a texture atlas.
>Since these chunks are much smaller than the original mesh, and typically form simple strips
мне кажется, это не про игры)
-----
а вообще идея здравая
Тема в архиве.