Дядя Миша писал: Петля всё равно будет 60 герц, это не регулируется.
Кстати, забыл добавить. Почему бы просто не сделать настройку для пользователей, как в ксаше имеется sv_fps. Пусть каждый ставит скорость обновления столько, сколько хочется, в своей игре.
Не помню, писал ли я об этом здесь или в ТГ, но в рамках подготовки SDK я принял решение подключить минимальный набор того, без чего не обходится ни один современный движок, а именно:
- бамп
- спекуляр
- параллакс
- динамические тени
- пбр
Поскольку у меня мощная система описания материалов, то это не потребует вмешательства в движок и может быть реализовано прямо на уровне скриптов - достаточно блокнота для редактирования материалов и шейдеров. Разумеется в собственном редакторе будут более наглядные инструменты. Собственно, у меня оставалась пара незавершённых моментов - рассчитать Tangent-Space и сохранить делюкс-мапы. Когда я это сделал, на внедрение бампа потребовалось менее одного часа.
Это классический бамп по формуле
C++ Source Code:
max( dot( delux, normal ), 0.0 )
Как видите нижняя часть арки сильно затеняется, что в данном случае некорректно.
А это бамп с оффсетом по формуле
C++ Source Code:
max( dot( delux, normal ) * 0.5 + 0.5, 0.0 )
Т.е. именно по ней идёт затенение освещения в лайтмаппере. Это так называемый параметр softangle. Для Quake, где не было отражённого света он позволял получить более мягкое освещение, в противном случае это бы всё выглядело как третий Doom. Как видите, бамп стал менее ярко выраженным, но зато яркость арки подтянулась к изначальному порогу, заданному яркостью самой лайтмапы. Это собственно, основная проблема статичного бампа, чтобы его применение не затемнило картинку сверх меры. В данном случае это условие соблюдено. Да рельеф стал менее заметным, но по правде говоря чистый бамп никогда не давал вау-эффекта. Ему для этого как минимум требовался спекуляр.
Добавлено 04-10-2023 в 11:32:
Поскольку народ по прежнему не понимает с какой именно системой материалов он имеет дело, я поясню. То что я внедряю - это всего лишь один из примеров того как можно организовать рендеринг. Ни в коем случае не часть движка и не дефолтный пайплайн. Просто сэмпл.
Это будет захардкоженный шейдер, или можно будет подключать к материалу свои шейдеры? Можно будет ли наследоваться от твоих шейдеров?
Поддержка ssbump будет? И как дела обстоят с бампом на моделях?
Цитата:
Дядя Миша писал: - пбр
Кстати серые карты pbr можно расфасовать по RGBA каналам, так для сведений. Могу тебе покидать текстурок для теста.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
FiEctro писал: Это будет захардкоженный шейдер, или можно будет подключать к материалу свои шейдеры?
Не просто можно, а нужно! Своих шейдеров в движке нет, только пользовательские. Какой шейдер сделаешь - так и будет. Движок не предлагает вообще ничего. Иными словами, если пользователь не создал материалов и шейдеров, движок ничего не нарисует.
Цитата:
FiEctro писал: Можно будет ли наследоваться от твоих шейдеров?
Моих шейдеров там нет
Цитата:
FiEctro писал: Поддержка ssbump будет?
Когда я внедрю в лайтмаппер Radiosity Normal Mapping то будет.
Цитата:
FiEctro писал: И как дела обстоят с бампом на моделях?
Так же как и на статическом уровне. Единственная проблема - у меня нету карт нормалей для этих моделек из ремастера. Не на чем тестировать.
Цитата:
FiEctro писал: Кстати серые карты pbr можно расфасовать по RGBA каналам, так для сведений. Могу тебе покидать текстурок для теста.
Я уже взял полный пак текстур из Q1Bers. Там же возьму из код из шейдеров. Просто для теста. Т.к. я сейчас тестирую касательное пространство в первую очередь. И надо решить проблемы с зеркальным наложением текстур. Вот это вот дерьмо:
Добавлено 04-10-2023 в 12:52:
FiEctro к тебе кстати вопрос. Насколько я понял в Unity есть четыре режима запекания лайтмап:
Single - ну тут понятно, просто яркость и цвет лайтмапы, как в халфе или кваке.
DualLightmaps - вот это вот я не понял что оно делает. Там какие-то взвешенные значения что ли. Требует твоего комментария.
DirectionalLightmapping - старая-добрая делюкс мапа
Radiosity Normal Mapping - как в Сорсе.
Дядя Миша писал: Single - ну тут понятно, просто яркость и цвет лайтмапы, как в халфе или кваке.
Ага, просто смешивает статичную лайтмапу с материалом.
Цитата:
Дядя Миша писал: DualLightmaps - вот это вот я не понял что оно делает. Там какие-то взвешенные значения что ли. Требует твоего комментария.
Это как Лоды только для теней. Т.е. вблизи у тебя все тени шадоумапы, а с расстоянием у тебя для теней рисуется отдельная лайтмапа поверх. Прикольная штука.
Вообще конечно ты можешь легко на Юнити написать свою логику лайтмап, ведь они не прибиты гвоздями к движку, это всеголишь шейдер. А вот с лайтпробами дела обстоят абсолютно иначе.
Цитата:
Дядя Миша писал: Не просто можно, а нужно! Своих шейдеров в движке нет, только пользовательские. Какой шейдер сделаешь - так и будет. Движок не предлагает вообще ничего. Иными словами, если пользователь не создал материалов и шейдеров, движок ничего не нарисует.
В Юнити у шейдеров такой прикол, что ты можешь наследоваться от какого то другого шейдера, чтобы не писать всё заново. Это особенно видно если ты откроешь шейдеры URP и HDRP рендера.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Aynekko писал: А зря, было бы неплохо иметь стартовый пак графония, от которого можно отталкиваться и изменять. Хотя бы на уровне п2.
Так я его приложу в качестве SDK. Я имею в виду что там нет ни одного шейдера, который нельзя было бы полностью переписать, поскольку его бы требовал движок для нормальной работы. Вот такого нет.
Добавлено 04-10-2023 в 18:38:
Ну чтож, баг с касательным удалось побороть, заюзав NvMeshMender для его генерации и передав в вертекс все три компоненты.
Иными словами - сохранять только нормаль, тангенту и знак бинормали - хреновая идея. Может быть для персонажей это и работает, но для уровней - точно нет.
Дядя Миша писал: Ну чтож, баг с касательным удалось побороть, заюзав NvMeshMender для его генерации и передав в вертекс все три компоненты.
Иными словами - сохранять только нормаль, тангенту и знак бинормали - хреновая идея. Может быть для персонажей это и работает, но для уровней - точно нет.
Дядя Миша писал: Я уже взял полный пак текстур из Q1Bers.
Там разве PBR?
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!