Создание карты нормалей (желательно) без OptiFine в моде.

Версия Minecraft
1.12+
Недавно столкнулся с необходимостью использования нормальной карты для создания "объемной" текстуры без использования моделей для блока. Блок участвует в генерации, его будет много. Так что нужно это как-то оптимизировать, еще и так, чтобы оно нормально работало. Знает кто-нибудь какую-нибудь статью (можно и на забугорных формах), или попросту как это сделать? Можно давать информацию на примере любых материалов, главное - результативность на указанной версии. Спасибо!

ВСЕ СООБЩЕНИЯ ПО ТИПУ "А ЗАЧЕМ ТЕБЕ" ИЛИ "ЭТО СЛОЖНО, ЗАБЕЙ" СРАЗУ ИДУТ В СТОРОНУ [ИНФОРМАЦИЯ УДАЛЕНА] И ИГНОРИРУЮТСЯ С ПОМЕТКОЙ "СПАМ"!
 

CumingSoon

Местный стендапер
1,634
12
269
Это сложно, забей.
Но... Сделать нормал маппинг не так уж сложно. Куда сложнее сделать под него освещение. Майнкрафт использует интересный подход, но он не годится для вычисления освещения. Что можно сделать? В принципе, выпуклости дальше 10-15 блоков можно не отображать. Тогда нужно в радиусе 10-15 блоков достать источники света (в Майне все точечные), взять солнце как направленный источник и... Всё, затолкнуть в шейдер и посчитать. Конечно, если их будет много(если брать много), то придется придумывать что-нибудь насчёт отложенного освещения, но это сам. Дальше 10-15 можно просто рисовать модельку. Конечно, эти 10-15 блоков цифра условная, тут нужно самому подбирать.
Надеюсь, помог. Да ничем я не помог, итак понятно
 
2,505
81
397
100% рабочее решение на 1.12 это оптифайн. Просто возьми какой-нибудь ресурспак с нормалями и при необходимости упрости шейдер. Это самый легкий путь. Других паблик решений для майна я не видел. Поэтому вероятность того, что будет работать, зависит от твоего скилла в огл.

Если уж и припиливать нормаль маппинг, то припиливать его как минимум для всех блоков. Из-за того, что блоки рендерятся кусками 16х16х16. Да и если бы было поштучно, переключение шейдера только ради твоего блока недопустимо.

Если в двух словах, то тебе нужно: создать атлас нормалей (аналогичный диффузному атласу); написать шейдер рендера блоков; перед рендером блоков включить шейдер; забиндить диффузный атлас, лайтмапу и твой атлас нормалей в разные юниты; передать эти юниты в шейдер через юниформы; выполнить ванильный рендер блоков; выключить шейдер. Естественно, без хуков тут не обойтись.
С освещением все на порядок сложнее. Но оно, вроде, тебе и не нужно.
 
100% рабочее решение на 1.12 это оптифайн. Просто возьми какой-нибудь ресурспак с нормалями и при необходимости упрости шейдер. Это самый легкий путь. Других паблик решений для майна я не видел. Поэтому вероятность того, что будет работать, зависит от твоего скилла в огл.

Если уж и припиливать нормаль маппинг, то припиливать его как минимум для всех блоков. Из-за того, что блоки рендерятся кусками 16х16х16. Да и если бы было поштучно, переключение шейдера только ради твоего блока недопустимо.

Если в двух словах, то тебе нужно: создать атлас нормалей (аналогичный диффузному атласу); написать шейдер рендера блоков; перед рендером блоков включить шейдер; забиндить диффузный атлас, лайтмапу и твой атлас нормалей в разные юниты; передать эти юниты в шейдер через юниформы; выполнить ванильный рендер блоков; выключить шейдер. Естественно, без хуков тут не обойтись.
С освещением все на порядок сложнее. Но оно, вроде, тебе и не нужно.
За эту инфу спасибо. Знать бы еще, как это кодом сделать. Есть инфа про наличие гайдов/уроков/чего-то подобного, где можно посмотреть, как и с чем есть?
 
2,505
81
397
Кстати что-то вылетело из головы. Майн же при рендере блоков оставляет нормали нулевыми, т.е. вообще их не устанавливает. Хотя это так в 1.7.10. Насчет 1.12 хз, но скорее всего тоже самое. Поэтому придется припилить генерацию нормали "на лету" при добавлении вершины в тесселятор. Еще нужно сгенерировать tangent (а binormal можно уже внутри вершинного шейдера). В 1.12 тесселятор почти полностью изменен и поддерживает кастомный формат вершин, поэтому там должно быть проще.

А подробнее? Освещение там откуда будешь брать? Стандартные 2 направленных источника?
Имхо, форвард освещение вообще бред для майна. Но скилл для отложенного нужен еще выше.
Но если, все-таки, хочется форвард, то можно перед отрисовкой установить в шейдер позицию солнца и N ближайших точек света, входящих в фруструм камеры.
 
2,505
81
397
Есть инфа про наличие гайдов/уроков/чего-то подобного
Я не видел никаких гайдов/уроков/etc именно для майна. Тут нужно смотреть гайды по чистому ogl и glsl шейдерам. Вот неплохой гайд. Еще можешь посмотреть видосики от ThinMatrix
 
Полное цитирование предыдущего сообщения запрещено
Я не видел никаких гайдов/уроков/etc именно для майна. Тут нужно смотреть гайды по чистому ogl и glsl шейдерам. Вот неплохой гайд. Еще можешь посмотреть видосики от ThinMatrix
Благодарствия. Посмотрим на досуге.
 

CumingSoon

Местный стендапер
1,634
12
269
входящих в фруструм камеры.
Грубая аппроксимация. Свет позади твоей спины не влияет что ли?
Имхо, форвард освещение вообще бред для майна.
А как иначе считать освещение для нормал маппинга? Ведь этот бампинг и есть игра света.
 
Последнее редактирование:
Сверху