Такой вопрос, насколько разумно запекать что нибудь в вертекс колор? Например если есть какой нибудь мультяшный персонаж с жутко размытой текстурой, может лучше будет как раз запечь её в вертекс колор? Ну или освещение на карте, чтобы лайтмапу не таскать, уж какой нить индирект вполне можно в вертексколор запечь, а всё остальное сделать динамикой? Насколько оно прожорливо, и целесообразно? В теории вроде всё ровно, а вот на практике даже не знаю.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
В вертекс-колор запекать нет особого смысла, потому что это несовместимо с инстансами. Т.е. по uv-координате лайтмапы, мы этот цвет сохраняем в страницу атласа, а потом достаём его оттуда при помощи VTF. Но VTF на старых карточках наверное даже медленее чем полноценная лайтмапа, то есть получается, что по скорости выигрыша никакого. Плюс в том, что мы получим бесшовное освещение без усилий.
В NT я планирую сделать автоматический анализатор, который сам будет определять, какое именно освещение для данного меша лучше выбрать - повертексное или попиксельное. Основная идея заключается в рендеринге треугольников в тестовую текстуру (на CPU) с заданным лайтмапой разрешением. Затем мы считаем сколько у нас получилось люкселей, а сколько вертексов. И на основе этой информации принимаем решение о типе освещения. Такого помоему нигде нет.
Добавлено 12-10-2021 в 08:50:
Строго говоря, переделать лайтмапное освещение в повертексное можно прямо из шейдера, читая лайтмапу в вертексном. А вот наоборот уже хрена.
Понял, спасибо. Ещё такой вопрос, как работает шейдер SSBUMP сорсовский? Понятно что там в каждом канале ракурс теней со смещением в 120 градусов. Но как это подгрузить в 3д? Пробовал по аналогии с нормалями и картой тангенсов, выходит фигня, у нормалей другие углы, откуда они берут или вычисляют эти 120 градусные смещения?
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
На отдельном полигоне оно выглядит вроде как правильно, но вот с тангенсной лайтмапой что то все углы покарёжило, в некоторых местах вообще инвертнуло освещение, как оно там работает? Нужно ли перемножать тангенсную лайтмапу на эти вектора?
Цитата:
Дядя Миша писал: Эти константы - косинусы соответствующих углов.
Их можно перевести обратно в градусы, через arccos или на инженерном калькуляторе выбрать галочку Inv и нажать cos.
Спасибо попробую.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
А что такое тангенсная лайтмапа? Трёхкомпонентная?
Добавлено 15-10-2021 в 10:59:
Вообще я навсидку проглядел все эти техники, гауссовы лайтмапы и прочие - очень много места оно занимает, а если карта большая, то вообще ппц.
Лайтмапа под два гигабайта не вариант.
Добавлено 15-10-2021 в 11:01:
У меня была мысль сделать что-то типа Enlighten, тоже трансферы сохранить в отдельный файл и получилось бы очень приятное реалтайм-радиосити.
Но остановил как раз тот факт, что размер этих трансферов дико большой.
Может потом еще вернусь к этой теме.
У меня вот такие карты генерируются энлайтеном (directional map). Я их использую чтобы бамп с лайтмапой корректно работал, и всё вроде хорошо. Но вот СС бамп нивкакую с этим работать не хочет.
Собственно выходит такая дичь:
В некоторых случаях работает даже более менее правильно:
но только под определенными углами
Цитата:
Дядя Миша писал: Вообще я навсидку проглядел все эти техники, гауссовы лайтмапы и прочие - очень много места оно занимает, а если карта большая, то вообще ппц.
Лайтмапа под два гигабайта не вариант.
А не надо делать их большого разрешения. Таких как в сорсе достаточно. А тени красивые можно и шадоумапой сделать.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
FiEctro в сорсе лайтмапа раскладывается по базису, который я написал выше, в касательном пространстве. Сорсовский ССБамп запекает тени и ламберта по тому же базису, чтобы можно было использовать с сорсовскими лайтмапами и вычислять освещение просто как
vec3 diffuseLighting = normal.x * lightmapColor1 + normal.y * lightmapColor2 + normal.z * lightmapColor3;
Лайтмапа, которую ты показываешь, не похожа на сорсовскую, она похожа на делюксмапу, причем в мировом пространстве.
Но ССБамп можно перевести в подобие обычной нормалмапы с тенями и предумноженным АО.
Из первого получить второе
ncuxonaT писал: она похожа на делюксмапу, причем в мировом пространстве.
Это и есть делюксмапа в мировом пространстве.
Добавлено 15-10-2021 в 16:45:
А в сорсе некокой делюксмапы нет, там трёхкомпонентная RGB-лайтмапа, уже в лайтмаппере предумноженная на базис. В UE аналогично, но лайтмапа монохромная. А в Unity делюксмапа.
ncuxonaT писал: FiEctro в сорсе лайтмапа раскладывается по базису, который я написал выше, в касательном пространстве. Сорсовский ССБамп запекает тени и ламберта по тому же базису, чтобы можно было использовать с сорсовскими лайтмапами и вычислять освещение просто
Да я тоже заметил в ПДФ, когда выкладывал сюда скриншоты.
Цитата:
ncuxonaT писал: Лайтмапа, которую ты показываешь, не похожа на сорсовскую, она похожа на делюксмапу, причем в мировом пространстве.
Как можно запечь правильно эту карту например в блендере? Какие условия нужно соблюсти. У меня так в голове и не укладывается как расположить 3 вектора со смещением в 120 градусов чтобы они показывали это смещение во всём объёме? И опять же они не будут совпадать с двухмерными векторами ssbump карты нормалей.
Цитата:
ncuxonaT писал: Но ССБамп можно перевести в подобие обычной нормалмапы с тенями и предумноженным АО.
Из первого получить второе
Я так понимаю теряется один из каналов с направлением теней? И как кстати ты сконвертил?
Наверное и придётся так делать, но всё же хотелось разобраться как работает эта технология. В инете нет практически никакой информации на эту тему.
Добавлено 15-10-2021 в 17:02:
Цитата:
Дядя Миша писал: там трёхкомпонентная RGB-лайтмапа, уже в лайтмаппере предумноженная на базис.
Как она выглядит, и чем отличается от делюксмапы?
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
FiEctro писал: Как можно запечь правильно эту карту например в блендере? Какие условия нужно соблюсти. У меня так в голове и не укладывается как расположить 3 вектора со смещением в 120 градусов чтобы они показывали это смещение во всём объёме? И опять же они не будут совпадать с двухмерными векторами ssbump карты нормалей.
Если прям хочешь сорсовские лайтмапы, можно запечь освещение 3 раза, подключая в качестве нормалмапы по очереди эти три текстуры:
Цитата:
FiEctro писал: Я так понимаю теряется один из каналов с направлением теней? И как кстати ты сконвертил?
Наверное и придётся так делать, но всё же хотелось разобраться как работает эта технология. В инете нет практически никакой информации на эту тему.
Ничего не теряется, тени вписываются в нормалмапу. Получается что-то типа bent normal map.
vec3 norm = dirx * ssbump.x + diry * ssbump.y + dirz * ssbump.z;
Цитата:
FiEctro писал: Как она выглядит, и чем отличается от делюксмапы?
ncuxonaT писал: Если прям хочешь сорсовские лайтмапы, можно запечь освещение 3 раза, подключая в качестве нормалмапы по очереди эти три текстуры:
Ничего не теряется, тени вписываются в нормалмапу. Получается что-то типа bent normal map.
vec3 norm = dirx * ssbump.x + diry * ssbump.y + dirz * ssbump.z;
Ого! Такого я ещё не встречал, спасибище огромное. Важная инфа. А как запечь это дело в юнитивскую делюксмапу? Просто сделать всё освещение чернобелым и распихать по каналам? Не очень понимаю, зачем они 3 раза цвет хранят, какой в этом сокральный смысл?
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
FiEctro писал: Ого! Такого я ещё не встречал, спибище огромное. Важная инфа. А как запечь это дело в юнитивскую делюксмапу?
Не имею представления, не имел дело с юнити.
Я бы рекомендовал оставить юнитевские лайтмапы, и конвертить ссбамп в нормалмапу (причем не в рилтайме, а заранее), тогда оно будет и с динамическим освещением работать. Только еще есть нюанс, что ссбамп не годится для спекуляра, и нужно тащить еще и обычные нормалмапы.
Добавлено 15-10-2021 в 17:57:
Цитата:
FiEctro писал: Не очень понимаю, зачем они 3 раза цвет хранят, какой в этом сокральный смысл?