Всем доброго времени суток, Deathman на связи и сегодня я представляю первый пост из серии постов касательно контента, имеющегося в моде Nocturning studio Project X для S.T.A.L.K.E.R: Shadow of Chernobyl, а также поделюсь другими новостями, касательно этого проекта. В следующих постах я разберу подходы к оформлению звукового и погодного окружения для разных игровых уровней, покажу геймплей проекта на данном этапе разработки, а также многое другое.
Для не знакомых с темой NS Project X людей я объясню что это - NSPX это мод, улучшающий оригинальную игру S.T.A.L.K.E.R: Shadow of Chernobyl в аспектах визуального стиля, графических технологий, звука, ганплея и атмосферы. Целью является не только вывести визуальную составляющую игры на уровень чистого неба, но и превзойти его, что и было сделано.
Предлагаю сравнить оригинальный визуал тени Чернобыля с визуалом NSPX. Абсолютно все ассеты за исключением около десятка текстур от зова Припяти исключительно оригинальные
В этом посте я не буду демонстрировать эффекты, которые и так должны быть в любом моде на тень Чернобыля и которые в них уже очень давно есть, вроде мягкой воды и частиц, или совсем простых эффектах, вроде цветовых аббераций, виньетирования или размытия по краям экрана. Я расскажу про действительно стоящие внимания вещи.
Начну с прокачанных игровых материалов (Проще говоря текстур).
С порога я продемонстрирую то, как сильно отличаются поверхности с одними и теми же наборами текстур и моделями при оригинальном подходе и моем.
Оригинальный подход vs подход мой
И это были только основные поверхности, террейны претерпели изменения ничем не хуже
Такой внешний вид поверхностей формируется из целого ряда крупных компонентов, которые заключаются в использовании данных о высоте пикселя в целях умной модификации нормали точки, правильном смешивании основной и детальной карт нормалей, но помимо этого важную роль играет технология под названием Parallax occlusion mapping.
Оригинальная игра имеет в своем распоряжении только Parallax mapping, а для террейнов только Normal mapping, поэтому покажу разницу между Parallax и Parallax occlusion mapping на примере террейна
Следующим большим фактором в отображении поверностей стало применение в моде карт предрасчитанного рассеянного освещения
Я рассчитал карты рассеянного освещения при помощи блендера для большинства поверхностей в игре. Некоторые могут выглядеть не слишком корректно, но в любом случае это далеко не финальный вариант.
Другой стороной красивого отображения поверхностей моделей является их правильное освещение.
Для этого проекта я решил использовать самую мощную известную мне модель отражательной способности для диффузного отражения - модель по Орену и Наяру, а также модель Блинна-Фонга с эффектом Френеля для расчета блеска. Результат можете увидеть сами. На этих наборах скриншотов по порядку представлены компоненты - предрасчитанное рассеянное освещение, результат расчета отражательной способности для диффузного отражения по Орену и Наяру, блеск и финальный отрендереный кадр, который вы и увидете в игре.
Карта рассеянного освещения
Диффузный компонент освещения, рассчитанный по модели Ореня и Наяра
Блеск
Финальный обработанный результат
В заключение с темой рельефа в этом посте я хочу сказать что для достижения такого результата мне пришлось переписать много старого кода, при помощи чего к слову получилось реализовать много не видимого обычному игроку функционала, как например удобный и понятный код, возможность подключать bump\bump# текстуры в обход редактора просто подкидывая их к основной текстуре материала, и многое другое и мне этот результат очень нравится, но не смотря на это я намерен работать над улучшением его и дальше.
Перед следующим важным компонентом визуала NSPX я считаю важным сообщить о том, что с недавних пор я работаю над проектом не в одиночку, а вместе с человеком под ником Mihan323. А значит что проект уже сейчас развивается намного продуктивнее чем раньше, а также его ждут очень крутые технологии, о которых я расскажу в будущих постах.
Первым что сделал Mihan323 это переработал такой компонент визуала как Ambient occlusion
Для начала я продемонстрирую что визуально дает этот эффект, на примере сцены со сложной геометрией
Первый скриншот - эффект выключен, второй скриншот - эффект включен
Как можно заметить - Ambient occlusion это эффект, являющийся приближенным вариантом рассеянного освещения, расчитываемый быстрее и проще.
Под снос пошли старые реализации и теперь в проекте появились новые, более визуально совершенные и производительные: SSAO, SSAO+ и HBAO+
На следующих скришотах я прикладываю демонстрацию каждого из них:
SSAO
SSAO+
HBAO+
Отличительной особенностью SSAO и HBAO+ является быстрый алгоритм расчета, с красивым результатом и полностью сглаживаемым без следа шумом.
Из спорных данных rs_stats на GTX260 для HBAO+ время расчета составляет 0.05мс, что является действительно хорошим показателем
От материалов и освещения я бы хотел немного отойти к тому, что я уже пару раз уже показывал на этом форуме (DOF, Fog, Цветокоррекция, AMD CAS, Mblur, FXAA ATOC, NVidia Hashed Alpha) и в группе в ВК, но что я все равно хотел бы показать еще раз
Первое это новую систему расчета глубины резкости.
Глубина резкости теперь расчитывается не дним проходом, а четырьмя. Два раза по два прохода разделенного фильтра. Суть такого фильтра заключается в том что мы размываем картинку усредняя не все пиксели вокруг нужного нам пикселя сразу, в один проход, а делая сначала усреднение всех пикселей по горизонтали вокруг нужного нам, а затем уже размытый кадр по горизонтали мы размываем также, но вертикально, что позволяет нам добиться красивого результата не затрачивая на него много времени. Дополнительно я считаю важным указать то что теперь эффект учитывает и небо в том числе, чего не делал к примеру в чистом небе и зове Припяти.
Второе это квадратичный экспоненциальный туман
Линейный туман, используемый оригинальной игрой был заменен мной на лучший туман из известных мне в этой категории - квадратичный экспоненциальный. Мало того что он намного более красивый и реалистичный, так он еще и управляется лишь одним параметром, что достаточно удобно. Дополнительно я реализовал возможность влияния его на небо, как и в действительности это происходит при достаточно плотном тумане.
Главной проблемой при переработке тумана в игре было то, что некоторые объекты, которые мы имеем в игре, отрисовываются на следующем этапе после этапа расчета тумана, что я достаточно просто исправил и получил следующий визуал
Еще одним пунктом я бы хотел отметить появление в игре очень удобной цветокоррекции.
Забавным фактом является то, что для каждого уровня цветокоррекция своя и для некоторых уровней я использовал схожую гамму с таковой в сериале Чернобыль от HBO
Первый скриншот - эффект выключен, второй скриншот - эффект включен
Еще одной немаловажной технологией, которая появилась в проекте, является NVidia Hashed Alpha.
Суть ее заключается в минимизации "потери" пикселей частично прозрачных объектов в кадре
Также я добавил технологию, под названием AMD Contrast adaptive sharpening. Суть ее заключается в "расшакаливании" кадра, то есть увеличении его четкости, увидеть это предлаю своими глазами. (Старый пост с эффектом)
Первый скриншот - эффект отключен, второй скриншот - эффект включен
Ближе к концу списка эффектов, которые я бы хотел продемонстрировать в данном посте я бы хотел полностью сосредоточиться на том, что удалось сделать Mihan323 в начале работы над первым рендером.
Первое что ему удалось сделать это перевести рендер с шейдеров, написанных для видеокарт, поддерживающих максимально только DirectX8.1 на полноценную шейдерную модель DirectX9.0c
Затем ему удалось сделать очень крутую вещь - поддержку MSAA и CSAA силами DirectX9.0c. Это очень важная и очень крутая фича, которая еще не была реализована в других модах, насколько мне известно, как и других эффекты из следующего списка.
Предлагаю оценить производительность и внешний вид MSAA, CSAA и SSAA сглаживаний на GTX260
MSAA 4X
CSAA 4X
SSAA 4X
Также я предлагаю лоб в лоб сравнить MSAA (1 скриншот) и CSAA (2 скриншот) с 8 семплами
Следующей реально крутой фичей, которую реализовать Mihan323 для первого рендера является NVidia ATOC
NVidia ATOC это хардварное сглаживание частично прозрачных объектов, таких как листва, при помощи MSAA или CSAA на усмотрение пользователя
На результат я предлагаю посмотреть самостоятельно
Следующая просто разрывная возможность, которую реализовал Mihan323 - возможность чтения буфера глубины сцены, что дает возможность реализовывать глубинозависимые эффекты теперь и на первом рендере!
Вот пример с глубиной резкости на все том же первом рендере
То что сделал Mihan323 открывает двери к реализации и других крутых эффектов, посты о которых будут в будущем, а пока я хотел бы показать последний эффект - мягкие переходы детальных текстур на террейнах
В заключение я бы хотел немного высказаться.
Я переношу сроки релиза проекта, потому что за это время много что произошло как со мной, так и с проектом, но в любом случае я его выпущу, и не смотря на то что я снова сижу на GTX260, а не RX580, и даже не смотря на 52 балла по шкале Бека и бесчисленные срачи на форуме я в любом случае работаю над ним, для того чтобы заставить тень Чернобыля выглядеть и ощущаться так, как я хочу этого.
То в каком виде выйдет проект зависит также и от того, сколько человек будет работать над проектом, я и Mihan323 или же еще кто-то. От этого зависит насколько далеко я смогу пойти в фантазиях при исполнении этих фантазий в жизнь.
Из планов в проекте уже скоро будет реализован PBR, возможно PCSS, а также многие другие эффекты. Из планов на далекое будущее глобальная работа над оружием, для которой помимо кода нужен и человек, который смог бы работать над анимациями этого самого оружия.
Если вы хотели бы принять участие в работе над проектом и помочь улучшать игру совместными силами, делая NSPX не только красиво выглядящим и звучащим, а также и конкурентноспособным в других сферах, то пишите мне в ВК - https://vk.com/ns_deathman или здесь.
Если вы хотите следить за разработкой проекта то предлагаю вам:
Ссылка на сервер в дискорде - https://discord.gg/ZAx3KTBc
Ссылка на группу Nocturning studio в ВК - https://vk.com/nocturning_games
До новых встреч