Dreaman Dreaman

Rummy_Games,

Работа на высоте. Шикарная картинка!

Dreaman Dreaman

NEARGA,

Выглядит классно! :)

Rummy_Games Rummy_Games

Доброго субботнего вечера! Сегодня мы хотим поделиться наработками нашего дизайнера уровней в рамках #saturdayscreenshot.

...
Jusper Jusper

Подвезли немного арта в окно кастомизации:

...
Jusper Jusper

NEARGA,

Блин, какой он клевый и склизкий)

win20082007 win20082007

Приветствую друзья! На этой неделе я снял первый геймплей на техническом уровне моей игры, в финальной версии этого уровня не будет.

...
NEARGA NEARGA

Пятница у пета из VoidTrain прошла явно так себе :(

RedHelium RedHelium

Jusper, Планируется в стим, но под издательством кого-нибудь. На счёт портирования на мобильные платформы пока не планировал

Jusper Jusper

RedHelium,

Игра планируется на стим? Если на телефон, то пост-эффекты будут лагать как сволочь)

RedHelium RedHelium

Jusper, Также немного переработан персонаж, некоторые объекты окружения. Помимо этого планируется ещё добавление различных интерактивных предметов и дополнительная работа над дизайном уровня! Также есть дополнительные пост...

Jusper Jusper

Я большую разницу в работе со светом.
Не понимаю, наверное это еще постэффекты.

alexprey alexprey

А вот и результаты первого забега.

...
Dreaman Dreaman

TheDarkestRed,

Красивый и атмосферный получился :)

RedHelium RedHelium

alexprey, Спасибо, рад стараться :)

TheDarkestRed TheDarkestRed

Концепт арт лесной локации The Darkest Red 🎮 🌲 🌘

...
id66243826 id66243826

Первый трейлер игры, больше похоже на нарезку но все же =) Так же было выпущено обновление, и теперь есть возможность покупать персонажей.
Решил немного разнообразить механики, добавлены двери и ключи,...

...
alexprey alexprey

RedHelium, стиль необычайно хорош)

RedHelium RedHelium

Вновь взялся за свой проект под названием "Stalkmech". Понемногу начал перерабатывать уровни, а также интерфейс.
Моя группа ВК: https://vk.com/redheliumgames

Jusper Jusper

Закрепили с GenElCon успех боем на островной карте.

  • Против нас были: Турция и Россия (на сложности Невозможный)
  • Время ненападения: Отсутствует
  • ...
ruggaraxe ruggaraxe

alexprey, будем ждать фидбэк! Я надеюсь вы заметите множество улучшений! 😎

Логотип проекта Unity

Делаем шейдер для речной воды в Unity

Делаем шейдер для речной воды в Unity

Привет! В этой статье я расскажу о том, как сделал шейдер речной воды для нашей игры. Предполагается, что читатель уже знаком с базовыми понятиями компьютерной графики, такими как карты нормалей и высот, имеет некоторое представление о работе шейдеров, и интересуется примерами реализации некоторых эффектов. Нашу игру мы делаем на Unity, и шейдер написан на HLSL, но статья описывает общий подход и практически не содержит специфики, характерной для этих инструментов. Я надеюсь, что она может быть полезна любому, кто интересуется практической компьютерной графикой для игр.

Так результат работы шейдера выглядит в игре

Сначала нам нужно определить форму волн. Берем normal map волн и поворачиваем в каждой точке в направлении, определяемом картой течений, которая задается тоже как normal map. В результате получим полную карту нормалей для всей поверхности реки:

Делаем шейдер для речной воды в Unity — Unity — DevTribe: инди-игры, разработка, сообщество (Unity, статьи, шейдер)

Добавляем движение: смещаем волны по X в зависимости от текущего времени:

Делаем шейдер для речной воды в Unity — Unity — DevTribe: инди-игры, разработка, сообщество (Unity, статьи, шейдер)

К постоянным волнам от течения реки добавляем динамические волны от объектов в игре, взаимодействующих с водой (таких как лодки и их весла, плещущиеся рыбы и прочее). Для этого во время игры на серой текстуре каждый фрейм рисуем карту высот: осветляем там, где волны выше общего уровня, и затемняем там, где ниже. Затем в шейдере считаем нормали этой карты высот и складываем их с нормалями из предыдущего пункта:

Делаем шейдер для речной воды в Unity — Unity — DevTribe: инди-игры, разработка, сообщество (Unity, статьи, шейдер)

Используем итоговую карту нормалей для получения отражения неба в воде: для каждого пикселя воды мы рисуем пиксель с текстуры неба, смещенный в зависимости от положения относительно центра экрана плюс нормали:

Делаем шейдер для речной воды в Unity — Unity — DevTribe: инди-игры, разработка, сообщество (Unity, статьи, шейдер)

Вода искажает то, что находится за ней, в зависимости от толщины слоя. Используем GrabPass, чтобы получить текстуру с фоновым изображением, и сместим итоговое изображение в зависимости от карты глубины, задаваемой еще одной текстурой на входе шейдера:

Делаем шейдер для речной воды в Unity — Unity — DevTribe: инди-игры, разработка, сообщество (Unity, статьи, шейдер)

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

Делаем шейдер для речной воды в Unity — Unity — DevTribe: инди-игры, разработка, сообщество (Unity, статьи, шейдер)

Теперь мы складываем все эти эффекты вместе в определенной пропорции (зависящей от глубины и произвольно заданных параметров), и также добавляем собственный цвет воды:

Делаем шейдер для речной воды в Unity — Unity — DevTribe: инди-игры, разработка, сообщество (Unity, статьи, шейдер)

Бонус: разберем параметры шейдера

Делаем шейдер для речной воды в Unity — Unity — DevTribe: инди-игры, разработка, сообщество (Unity, статьи, шейдер)
  • Stream Matrix: Карта нормалей, определяющая направление течения.
  • Depth Map: Карта глубины реки.
  • Water Texture: Текстура, определяющая собственный цвет реки.
  • Waves Normal Map: Карта нормалей волн.
  • Waves Overlay: Карта высот динамических волн (в игровой сцене это RenderTexture).
  • Skysphere Texture: Текстура неба.
  • Segments: Количество сегментов, на которые разбивается область, в каждом сегменте текстура волн поворачивается независимо.
  • Blend Threshold: Определяет гладкость смешивания соседних сегментов.
  • Speed: Скорость течения.
  • Waves Reflection Scale: Насколько сильно волны искажают отражение неба.
  • Camera Reflection Scale: Масштаб неба относительно изображения на экране.
  • Depth Scale: Насколько сильно глубина влияет на искажение дна.
  • Waves Height Scale: Насколько сильно волны влияют на искажение дна.
  • Min Share of Bottom: Насколько хорошо дно видно на максимальной глубине, этот параметр вместе с глубиной в конкретной точке влияет на долю дна в окончательном результате.
  • Sky/Water: Взаимные доли отражения неба и собственного цвета воды в окончательном результате.

Вступайте в наше сообщество, следите за новостями и делитесь нашими статьями с друзьями!

Смотрите также:


Комментарии



Очень любопытно!
Вот только меня интересует такой вопрос: а как вы складываете карту нормалей с картой высот? нормали это все таки вектор направления, а не высота. Было бы любопытно взглянуть на идею преобразования нормали в высоту.

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

Справка