Войти
ПрограммированиеФорумГрафика

Пару вопросов по lightmaps (3 стр)

Страницы: 1 2 3 4 5 Следующая »
#30
20:20, 16 июня 2018

Ура, я решил баг с этими черными полосами. Сделал как вы посоветовали и стал еще использовать чуть больше лайтмап (256х256).
Такой размер лайтов хоть нормальный? И еще, можете подсказать, пожалуйста, каким образом можно наложить лайтмап на динамический объект.

Скриншот работы:

+ Показать


#31
21:15, 16 июня 2018

zombihello
> каким образом можно наложить лайтмап на динамический объект.
Если лайтмэп в 3D текстуре, то он ложится и на динамические объекты, вот отбрасывать тень сами динамические объекты таким образом не могут.

#32
21:26, 16 июня 2018

Mikle
> вот отбрасывать тень сами динамические объекты таким образом не могут
Ну, то что динамика таким образом тень не будет отбрасывать, то ясно и с этим можно смириться (думаю Shadow Maps здесь может выручить).

> Если лайтмэп в 3D текстуре
А можно подробнее как лайтмэп в 3D текстуру запихнуть, сам алгоритм, ибо я что-то не могу представить это.
На данный момент у меня карта освещения хранится в 2D текстуре (для каждого полигона)

#33
(Правка: 22:03) 22:02, 16 июня 2018

zombihello
Я ещё на первой странице этой темы давал ссылку на рабочий пример.
Смысл - полностью "погрузить" уровень в 3D текстуру, тогда текстурные координаты для лайтмэпа рассчитывать не надо, не надо делать атлас, одна текстура для всей карты. Выборка из 3D текстуры берётся по обычным координатам.
Рассчитывается она так же, как и для 2D, только рассчитываем освещённость не для поверхностей, а для всего объёма.

#34
1:40, 17 июня 2018

Я понял, спасибо за объяснение, буду пытаться как-то в своем компиляторе лайтмапов это сделать.
А точнее, сделать просчет нужного размера 3D текстуры, ее просчет и сохранение в файл
(как я понимаю это "блин" из 2D текстур и чтобы сохранить объемную текстуру
надо сохранить каждый такой слой? Исправьте, если ошибаюсь, ибо с 3D текстурами ни разу не работал,
а в интернете инфы как кот наплакал).

По поводу определения размера. Я правильно понял, что размер 3D текстуры = размер карты и
исходя из этого вычислить размер можно найдя минимальный и максимальный x, y, z на уровне?
(т.е abs(Xmin) + abs(Xmax) = SizeX и так по всем координатам, я правильно думаю?)

#35
8:57, 17 июня 2018

zombihello
> Я правильно понял, что размер 3D текстуры = размер карты и
> исходя из этого вычислить размер можно найдя минимальный и максимальный x, y, z
> на уровне?
Да, только с учётом масштаба и смещения к нулю, ведь текстурная координата должна попасть в диапазон 0..1 вне зависимости от размера текстуры в пикселях.
3D текстурные координаты получаешь в вертексном шейдере:

tu = (x-MinX)*scale
zombihello
> чтобы сохранить объемную текстуру
> надо сохранить каждый такой слой?
Этот вариант годится. Можно просто бинарно сохранить в файл объём, но при сохранении послойно можно воспользоваться сжатыми форматами. В той демке карта рассчитывается при старте, поэтому она долго стартует. Сейчас я делаю из слоёв атлас и сохраняю в один PNG файл весь объём.
#36
11:17, 17 июня 2018

zombihello
> А можно подробнее как лайтмэп в 3D текстуру запихнуть
На практике необязательно именно в 3д текстуру. Можно хранить как разрезженное облако точек. За пределами уровня свет просчитывать не надо, к примеру.

#37
11:38, 17 июня 2018

g-cont
> Можно хранить как разрезженное облако точек.
А выборку как делать?

#38
(Правка: 13:24) 13:23, 17 июня 2018

g-cont
> Можно хранить как разрезженное облако точек
Чем-то напоминает Irradiance Volume или он и есть? Но как по мне с 3д текстурами мороки меньше.
Кстати, а в каких играх подобный подход применялся (лайтмапы в 3д текстурах), чисто интересно.

#39
14:23, 17 июня 2018

Mikle
да так же как, в Quake3 - на CPU. Представить в виде регулярной сетки и находить ближайшее значение в пространстве. Хотя наверное в наше время имеет смысл хранить в такой сетке не значения освещённости, а маленькие такие однопиксельные кубемапы.

#40
15:29, 17 июня 2018

g-cont
Если сетка регулярная, то как раз и на GPU нет проблем. Я думал, ты предлагаешь вдали от объектом плотность понижать.
zombihello
> а в каких играх подобный подход применялся (лайтмапы в 3д текстурах), чисто интересно.
До сих пор думал, что это мой велосипед, хотя идея лежит на поверхности.

#41
16:01, 17 июня 2018

У Хумуса демка точно была.

#42
17:34, 17 июня 2018

Mikle
Я правильно понимаю, что 3д лайтмап лучше всего строить на GPU, ибо на CPU будет безумно долго. Как вы делаете у себя?

#43
17:39, 17 июня 2018

У меня в демке строится на CPU, причём в 1 поток на Visual Basic, где-то 5-10 секунд. Правда качество устраивает не очень, например, углы сильно затемняются.
На GPU, естественно, это можно сделать значительно быстрее, даже подняв качество.

#44
18:27, 17 июня 2018

zombihello
Стандартные лайтпробы Юнити, не?

Страницы: 1 2 3 4 5 Следующая »
ПрограммированиеФорумГрафика