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

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

Страницы: 1 2 3 4 5
#60
10:19, 21 июня 2018

Mikle
> Не понял в чём проблема
Дело просто в том, что направленный свет не имеет позиции на карте, а только направление и из-за этого я не знаю как правильно для него строить Shadow Map, ибо если брать направление в качестве позиции и рендерить в Шедоу мапу с этой точки, то тень не будет распространяться на весь уровень, а только на часть которая попала в видимость при рендере. Ну, и из-за этого у меня заминка, не знаю как правильно здесь поступить. Я думаю, что надо при каждом смещении камеры (во время проходов пикселей 3д лайтмапы) обновлять Shadow Maps. А как правильнее поступать с тенями от такого источника?


#61
10:56, 21 июня 2018

zombihello
Для направленного света всё проще. Камера ставится напротив центра карты со стороны источника света на любом расстоянии, больше полуразмера карты, выбирается не перспективная, а ортогональная проекция, zNear и zFar - это соответственно проекция расстояния на луч зрения до ближайшей и до дальней точек карты.
И я раньше забыл одно маленькое уточнение. Выполняя п.2, рендерим также и сами источники света, можно билбордами либо сферами, материал со 100%-ным амбиентом. От размера билбордов/сфер зависит мягкость первичных теней, если первичные тени окажутся слишком контрастными по сравнению со вторичными, материал источников света можно притемнить. Источники направленного света рендерятся как скайбокс, привязанными к камере.

#62
13:18, 21 июня 2018

Помоему направленный свет - это частный случай спотлайтов, а от солнца - параллельный.

#63
13:35, 21 июня 2018

g-cont
В DirectX для параллельного используется название DIRECTIONAL, то есть направленный.

#64
16:14, 21 июня 2018

Mikle
А. ну ясно.

#65
23:04, 21 июня 2018

zombihello
А ведь без Shadow maps можно обойтись - просто рендерить источники света любой формы и в любом количестве белым материалом, получим в 3D карте освещение только от источников света, без переотражений, но мягкое. Но потом пройти вторым проходом, уже используя полученную в первый проход карту освещения, получим уже 3D карту с переотражением.
Интересная мысль, как время появится, попробую реализовать.

#66
6:28, 22 июня 2018

Mikle
> просто рендерить источники света любой формы и в любом количестве белым
> материалом, получим в 3D карте освещение только от источников света, без
> переотражений, но мягкое. Но потом пройти вторым проходом, уже используя
> полученную в первый проход карту освещения, получим уже 3D карту с
> переотражением.
Не совсем понял как это. Это будет тот же лайтмап или нет? И чем такой проход рендера отличается от рендера карты глубины? Глубина, даже плавающей точкой, занимает по 4 байта на значение, ну, пусть в double типе - 8 байт. Но цвет, это ж как минимум три числа, то есть от 12 байт и выше. Не хватает мне деталей, чтобы понять смысл...

#67
12:06, 22 июня 2018

PA3UJIb
> И чем такой проход рендера отличается от рендера карты глубины?
В том и соль, что мы обходимся без карт глубины. Это куча проблем - предварительная подготовка карт, тяжёлый пиксельный шейдер при их использовании, необходимость работать с массивом источников света, либо многопроходный рендер. А для чего всё это? Чтобы потом, проходя по пикселям 3D текстуры, рассчитывать освещённость с шести сторон, получая вторичное отражение.
А теперь представь, первый проход расчёта 3D текстуры без карт глубины - и мы получаем то же самое, что дают карты глубины, первичную освещённость, причём сразу мягкую. Второй проход уже даст рассеянный свет, и сам проход будет проще, без флоат текстур, массивов, тестов глубины.

#68
22:48, 5 июля 2018

Наконец-то выпало время, сделал генерацию 3D LightMap без использования ShadowMap, как я писал в п.65, вот результат (демка): https://yadi.sk/d/EwfwdhNd3YpULu
Тут один проход с белым небом и чёрными стенами, второй с использованием для стен полученной в первом проходе 3D LightMap. У меня на GTX 770 первый проход рендерится 80 минут, второй 85.

#69
0:16, 6 июля 2018

Mikle
> просто рендерить источники света любой формы и в любом количестве белым
> материалом
хех я такой лайтмаппер делал когда-то, на дх9 ещё

+ Показать

У него есть один большой минус - многие источники света охрененно маленькие, даже банальное солнце и лампочки. Даже рендеря 256х256 из каждой точки есть большой шанс, что кусок лайта, а то и он весь целиком не растеризуется. Это даёт жуткий шум в лайтмапе, и с какой-то дистанции они просто перестают светить (даже если должны). Можно извращаться, включать MSAA, я ещё пробовал лайты растеризовывать как огромные спрайты с мипмапами, но это всё костыли. Усреднённое значение ярркости в точке будет очень неточным для всех мелких лайтов.
#70
8:12, 6 июля 2018

Mr F
> я такой лайтмаппер делал когда-то, на дх9 ещё
У меня тоже на dx9 сделано. И он несколько другой. У меня свет не цветной, зато направленный.
Mr F
> У него есть один большой минус - многие источники света охрененно маленькие,
> даже банальное солнце и лампочки. Даже рендеря 256х256 из каждой точки есть
> большой шанс, что кусок лайта, а то и он весь целиком не растеризуется. Это
> даёт жуткий шум в лайтмапе, и с какой-то дистанции они просто перестают светить
> (даже если должны). Можно извращаться, включать MSAA, я ещё пробовал лайты
> растеризовывать как огромные спрайты с мипмапами, но это всё костыли.
> Усреднённое значение ярркости в точке будет очень неточным для всех мелких
> лайтов.
Не поверишь, у меня сделано всего лишь 32*32, шума никакого. Правда источник света пока огромный - всё небо. Мысль про спрайт (билборд) я ещё в п.61 написал, позже тоже попробую.

#71
10:13, 6 июля 2018

Mikle
Небо шуметь не будет, оно огромное да, растер не промахнётся. Билборды могут помочь лампочкам, но могут и забаговать оклюжен лайта, проходя боками сквозь окружающие предметы. Но попробуй.

#72
20:01, 28 июля 2018

Сделал два прохода, оптимизировал, создал новую тему:
https://gamedev.ru/code/forum/?id=237679

#73
22:55, 2 авг. 2018

Mikle
Здравствуйте, мне нужен ваш совет в одном вопросе, очень сильно надеюсь на вашу помощь.
В общем, я не стал делать объемные лайтмапы и сделал 2D карту освещения с Radiosity  (взял алгоритм с этой статьи).

Собственно вот результат работы))

+ Показать

Ну, ладно, к самому вопросу теперь. Вы писали в посте #65 вот это

Mikle
> А ведь без Shadow maps можно обойтись - просто рендерить источники света любой
> формы и в любом количестве белым материалом
Сейчас у меня так и делается, вот только не знаю как быть с параметрами света.
Например, если хочу сделать в маленькой комнатке свет радиусом 100, то сфера получается
больше чем само помещение и этот свет выходит за стены (см. скриншот внизу поста), что не должно такого быть. Не знаю как при таком алгоритме
регулировать свойства света и его распространение по уровню (особенно на первом проходе, чтобы первичку запечь).

А вот по какому принципу я запекаю лайты:
На первом проходе из источников света только сфера от лампочки.
Я смотрю из каждого патча и рисую для него сцену со сферами света (просто сфера без шейдера освещения),
потом беру среднее значение с текстурки куда велся рендер и заношу в лайтмапу этого полигона, и так со всеми полигонами сцены.
В конце я получаю первичное освещение, а последующие проходы его переотражают.

Так правильно делать или это бред? Если да, то как лучше подготавливать первичное освещения для Radiosity.
А если нет, то как регулировать распространение света с таким подходом (волнует первичный свет).

А вот скриншот того про что я говорил выше. Здесь эта сфера находится в той коробке, но так
как она радиусом больше чем сама эта комната, то освещается внешняя часть уровня, а внутри
все темно, ибо патчи на момент построения первичного освещения свет от сферы не получили
из-за того, что мешали стены.

+ Показать
#74
18:38, 5 авг. 2018

zombihello
> если хочу сделать в маленькой комнатке свет радиусом 100, то сфера получается
> больше чем само помещение и этот свет выходит за стены
Так радиус сферы рисуемого источника света, и радиус его действия - это совершенно разные вещи.

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

Тема в архиве.