Razz Razz

IDALGAME, блин, а круто смотрится

Jusper, да я как то всё в процессе бесконечного перепиливания. Следуя отзывам перепилил в "червя", потом ещё гифок накидаю

doctormanhattan doctormanhattan

Всем привет!
Сегодня мы хотели бы рассказать об одном из важных элементов игрового дизайна нашей игры Exoplanet: First Contact. В играх такого типа порой бывает трудно понять, где найти вещи, необходимые для успешного прохождения...

...
Jusper Jusper

Razz,

Новая экранизация слова "обрыгло"

win20082007 win20082007

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

...
TheDarkestRed TheDarkestRed

Обновлённые меню и интерфейс 🎮 👨‍🎨 🀄 👨‍💻
https://vk.com/the_darkestred

Jusper Jusper

Ой модельки красивые. Прямо слов нет. Стильно.
Очень здорово смотрятся.

Dreaman Dreaman

alexprey,

Согласен! И стреляет она круто. Враги классно разлетаютcя :)

Dreaman Dreaman

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

GoloGames GoloGames

Jusper, вот тут описание всех ребят со ссылочками https://vk.com/gologamesgroup?w=wall-88091546_17669

Jusper Jusper

GoloGames,

Да это ж я так. Прикольно послушать всех было.

GoloGames GoloGames

Jusper, интервью записывались за месяц с лишним до Нового Года

Jusper Jusper

А у Сани новый год еще на видео.

Dreaman Dreaman

В последнее время я делал различные доработки новой локации. В частности, я более тщательно поработал со светом и цветом. В итоге, космическая станция стала выглядеть, на мой взгляд, немного интереснее...

...
Razz Razz

Думаю пора заканчивать с параллаксом (надеюсь видео встроится правильно):

TheDarkestRed TheDarkestRed

Обновлённый щит 🎮 🤺 🐺 👨‍💻

#screenshotsaturday #last_stare_interactive #thedarkestred

win20082007 win20082007

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

...
Логотип проекта 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: Взаимные доли отражения неба и собственного цвета воды в окончательном результате.

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

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


Комментарии



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

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

Справка