HLFX.Ru Forum Страницы (22): [1] 2 3 4 5 » ... Последняя »
Показать все 319 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Технические вопросы (https://hlfx.ru/forum/forumdisplay.php?forumid=20)
-- Освещение в Source Engine (https://hlfx.ru/forum/showthread.php?threadid=5746)


Отправлено FiEctro 11-10-2021 в 17:27:

Такой вопрос, насколько разумно запекать что нибудь в вертекс колор? Например если есть какой нибудь мультяшный персонаж с жутко размытой текстурой, может лучше будет как раз запечь её в вертекс колор? Ну или освещение на карте, чтобы лайтмапу не таскать, уж какой нить индирект вполне можно в вертексколор запечь, а всё остальное сделать динамикой? Насколько оно прожорливо, и целесообразно? В теории вроде всё ровно, а вот на практике даже не знаю.


Отправлено ncuxonaT 11-10-2021 в 22:04:

Если это уместно, и устраивает, как оно интерполируется, то почему бы нет.

В лоуполи демке с елками я запекал диффузный цвет и индирект в вертекс колор, выглядело нормально.


Отправлено Дядя Миша 12-10-2021 в 05:50:

В вертекс-колор запекать нет особого смысла, потому что это несовместимо с инстансами. Т.е. по uv-координате лайтмапы, мы этот цвет сохраняем в страницу атласа, а потом достаём его оттуда при помощи VTF. Но VTF на старых карточках наверное даже медленее чем полноценная лайтмапа, то есть получается, что по скорости выигрыша никакого. Плюс в том, что мы получим бесшовное освещение без усилий.
В NT я планирую сделать автоматический анализатор, который сам будет определять, какое именно освещение для данного меша лучше выбрать - повертексное или попиксельное. Основная идея заключается в рендеринге треугольников в тестовую текстуру (на CPU) с заданным лайтмапой разрешением. Затем мы считаем сколько у нас получилось люкселей, а сколько вертексов. И на основе этой информации принимаем решение о типе освещения. Такого помоему нигде нет.

Добавлено 12-10-2021 в 08:50:

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FiEctro 14-10-2021 в 21:00:

Понял, спасибо. Ещё такой вопрос, как работает шейдер SSBUMP сорсовский? Понятно что там в каждом канале ракурс теней со смещением в 120 градусов. Но как это подгрузить в 3д? Пробовал по аналогии с нормалями и картой тангенсов, выходит фигня, у нормалей другие углы, откуда они берут или вычисляют эти 120 градусные смещения?


Отправлено ncuxonaT 14-10-2021 в 21:14:

//hl2 basis
vec3 dirx = (vec3 ( 0.816497 , 0.0 , 0.57735 ));
vec3 diry = (vec3 ( -0.408248 , 0.707107 , 0.57735 ));
vec3 dirz = (vec3 ( -0.408248 , -0.707107 , 0.57735 ));


Отправлено Дядя Миша 15-10-2021 в 06:12:

Эти константы - косинусы соответствующих углов.

Их можно перевести обратно в градусы, через arccos или на инженерном калькуляторе выбрать галочку Inv и нажать cos.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FiEctro 15-10-2021 в 06:55:

Цитата:
ncuxonaT писал:
//hl2 basis
vec3 dirx = (vec3 ( 0.816497 , 0.0 , 0.57735 ));
vec3 diry = (vec3 ( -0.408248 , 0.707107 , 0.57735 ));
vec3 dirz = (vec3 ( -0.408248 , -0.707107 , 0.57735 ));


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

Цитата:
Дядя Миша писал:
Эти константы - косинусы соответствующих углов.

Их можно перевести обратно в градусы, через arccos или на инженерном калькуляторе выбрать галочку Inv и нажать cos.


Спасибо попробую.


Отправлено Дядя Миша 15-10-2021 в 08:01:

А что такое тангенсная лайтмапа? Трёхкомпонентная?

Добавлено 15-10-2021 в 10:59:

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

Добавлено 15-10-2021 в 11:01:

У меня была мысль сделать что-то типа Enlighten, тоже трансферы сохранить в отдельный файл и получилось бы очень приятное реалтайм-радиосити.
Но остановил как раз тот факт, что размер этих трансферов дико большой.
Может потом еще вернусь к этой теме.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FiEctro 15-10-2021 в 10:11:

Цитата:
Дядя Миша писал:
А что такое тангенсная лайтмапа? Трёхкомпонентная?




Вот эта вот фигня в сорсе CRNM.
http://www.decew.net/OSS/References...Explanation.pdf

У меня вот такие карты генерируются энлайтеном (directional map). Я их использую чтобы бамп с лайтмапой корректно работал, и всё вроде хорошо. Но вот СС бамп нивкакую с этим работать не хочет.

https://b.radikal.ru/b25/2110/ad/8b0610da8e20.png

Собственно выходит такая дичь:
https://b.radikal.ru/b01/2110/cf/572c17e7e0b1.png

В некоторых случаях работает даже более менее правильно:
https://cdn.discordapp.com/attachments/390627238493814808/898343925788598302/2021-10-15_01.57.42.png
но только под определенными углами

Цитата:
Дядя Миша писал:
Вообще я навсидку проглядел все эти техники, гауссовы лайтмапы и прочие - очень много места оно занимает, а если карта большая, то вообще ппц.
Лайтмапа под два гигабайта не вариант.


А не надо делать их большого разрешения. Таких как в сорсе достаточно. А тени красивые можно и шадоумапой сделать.


Отправлено ncuxonaT 15-10-2021 в 13:34:

FiEctro в сорсе лайтмапа раскладывается по базису, который я написал выше, в касательном пространстве. Сорсовский ССБамп запекает тени и ламберта по тому же базису, чтобы можно было использовать с сорсовскими лайтмапами и вычислять освещение просто как
vec3 diffuseLighting = normal.x * lightmapColor1 + normal.y * lightmapColor2 + normal.z * lightmapColor3;

Лайтмапа, которую ты показываешь, не похожа на сорсовскую, она похожа на делюксмапу, причем в мировом пространстве.

Но ССБамп можно перевести в подобие обычной нормалмапы с тенями и предумноженным АО.
Из первого получить второе
https://i.imgur.com/QC3DzfM.png https://i.imgur.com/LLBbbTD.png


Отправлено Дядя Миша 15-10-2021 в 13:45:

Цитата:
ncuxonaT писал:
она похожа на делюксмапу, причем в мировом пространстве.

Это и есть делюксмапа в мировом пространстве.

Добавлено 15-10-2021 в 16:45:

А в сорсе некокой делюксмапы нет, там трёхкомпонентная RGB-лайтмапа, уже в лайтмаппере предумноженная на базис. В UE аналогично, но лайтмапа монохромная. А в Unity делюксмапа.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FiEctro 15-10-2021 в 14:02:

Цитата:
ncuxonaT писал:
FiEctro в сорсе лайтмапа раскладывается по базису, который я написал выше, в касательном пространстве. Сорсовский ССБамп запекает тени и ламберта по тому же базису, чтобы можно было использовать с сорсовскими лайтмапами и вычислять освещение просто


Да я тоже заметил в ПДФ, когда выкладывал сюда скриншоты.

Цитата:
ncuxonaT писал:
Лайтмапа, которую ты показываешь, не похожа на сорсовскую, она похожа на делюксмапу, причем в мировом пространстве.


Как можно запечь правильно эту карту например в блендере? Какие условия нужно соблюсти. У меня так в голове и не укладывается как расположить 3 вектора со смещением в 120 градусов чтобы они показывали это смещение во всём объёме? И опять же они не будут совпадать с двухмерными векторами ssbump карты нормалей.


Цитата:
ncuxonaT писал:
Но ССБамп можно перевести в подобие обычной нормалмапы с тенями и предумноженным АО.
Из первого получить второе
https://i.imgur.com/QC3DzfM.png https://i.imgur.com/LLBbbTD.png


Я так понимаю теряется один из каналов с направлением теней? И как кстати ты сконвертил?
Наверное и придётся так делать, но всё же хотелось разобраться как работает эта технология. В инете нет практически никакой информации на эту тему.

Добавлено 15-10-2021 в 17:02:

Цитата:
Дядя Миша писал:
там трёхкомпонентная RGB-лайтмапа, уже в лайтмаппере предумноженная на базис.


Как она выглядит, и чем отличается от делюксмапы?


Отправлено ncuxonaT 15-10-2021 в 14:19:

Цитата:
FiEctro писал:
Как можно запечь правильно эту карту например в блендере? Какие условия нужно соблюсти. У меня так в голове и не укладывается как расположить 3 вектора со смещением в 120 градусов чтобы они показывали это смещение во всём объёме? И опять же они не будут совпадать с двухмерными векторами ssbump карты нормалей.

Если прям хочешь сорсовские лайтмапы, можно запечь освещение 3 раза, подключая в качестве нормалмапы по очереди эти три текстуры:

https://i.imgur.com/6iRu3Pl.png

Цитата:
FiEctro писал:
Я так понимаю теряется один из каналов с направлением теней? И как кстати ты сконвертил?
Наверное и придётся так делать, но всё же хотелось разобраться как работает эта технология. В инете нет практически никакой информации на эту тему.

Ничего не теряется, тени вписываются в нормалмапу. Получается что-то типа bent normal map.
vec3 norm = dirx * ssbump.x + diry * ssbump.y + dirz * ssbump.z;

Цитата:
FiEctro писал:
Как она выглядит, и чем отличается от делюксмапы?

Вот так выглядит, например.
https://i.imgur.com/uAiRhSi.jpg https://i.imgur.com/T1sJlTU.jpg https://i.imgur.com/dIshufT.jpg


Отправлено FiEctro 15-10-2021 в 14:43:

Цитата:
ncuxonaT писал:
Если прям хочешь сорсовские лайтмапы, можно запечь освещение 3 раза, подключая в качестве нормалмапы по очереди эти три текстуры:



Ничего не теряется, тени вписываются в нормалмапу. Получается что-то типа bent normal map.
vec3 norm = dirx * ssbump.x + diry * ssbump.y + dirz * ssbump.z;



Ого! Такого я ещё не встречал, спасибище огромное. Важная инфа. А как запечь это дело в юнитивскую делюксмапу? Просто сделать всё освещение чернобелым и распихать по каналам? Не очень понимаю, зачем они 3 раза цвет хранят, какой в этом сокральный смысл?


Отправлено ncuxonaT 15-10-2021 в 14:57:

Цитата:
FiEctro писал:
Ого! Такого я ещё не встречал, спибище огромное. Важная инфа. А как запечь это дело в юнитивскую делюксмапу?

Не имею представления, не имел дело с юнити.
Я бы рекомендовал оставить юнитевские лайтмапы, и конвертить ссбамп в нормалмапу (причем не в рилтайме, а заранее), тогда оно будет и с динамическим освещением работать. Только еще есть нюанс, что ссбамп не годится для спекуляра, и нужно тащить еще и обычные нормалмапы.

Добавлено 15-10-2021 в 17:57:

Цитата:
FiEctro писал:
Не очень понимаю, зачем они 3 раза цвет хранят, какой в этом сокральный смысл?

С разных сторон может падать свет разных цветов.
https://i.imgur.com/sw5X70t.jpg https://i.imgur.com/nXEr8jU.jpg


Временная зона GMT. Текущее время 16:02. Страницы (22): [1] 2 3 4 5 » ... Последняя »
Показать все 319 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024