Пятничное мое: рендеринг облаков на мобильных.

Как и обещал в предыдущем посту https://pikabu.ru/story/_5527137 , рассказываю как я вот такое рендерю на мобильных:

Пятничное мое: рендеринг облаков на мобильных. Unity, Asset store, Облака, Рендер, Гифка, Видео, Длиннопост

Отрисовывать облака в реальном времени -- сложная задача даже для компьютеров.


Обычно для этого применяется рейтрейсинг -- процесс, когда из каждого пикселя экрана выпускается луч и симулируется его передвижение в пространстве. Это требует большого количества математических операций для каждого пикселя, требуя огромной вычислительной мощности.


Очевидно, что если хочется рисовать облака на мобильных -- придется читерить.


Подготовительная стадия


Формируются карта глубины мира, карта глубины и нормали облаков.


A -- канал прозрачности. Чем темнее -- тем прозрачнее.

RGB -- цветовой канал

Глубина мира:

Пятничное мое: рендеринг облаков на мобильных. Unity, Asset store, Облака, Рендер, Гифка, Видео, Длиннопост

Глубина облаков:

Пятничное мое: рендеринг облаков на мобильных. Unity, Asset store, Облака, Рендер, Гифка, Видео, Длиннопост

Нормали облаков:

Пятничное мое: рендеринг облаков на мобильных. Unity, Asset store, Облака, Рендер, Гифка, Видео, Длиннопост

Стадия преобразования карт:

Карта нормалей размывается. Это делается в два прохода.

По горизонтали:

Пятничное мое: рендеринг облаков на мобильных. Unity, Asset store, Облака, Рендер, Гифка, Видео, Длиннопост

По вертикали:

Пятничное мое: рендеринг облаков на мобильных. Unity, Asset store, Облака, Рендер, Гифка, Видео, Длиннопост

Как видите, получается размытый, немного облачный контур.


Аналогично размывается карта глубины облаков (тоже в два прохода):

Пятничное мое: рендеринг облаков на мобильных. Unity, Asset store, Облака, Рендер, Гифка, Видео, Длиннопост

Теперь к карте глубины облаков применяется шум:

Пятничное мое: рендеринг облаков на мобильных. Unity, Asset store, Облака, Рендер, Гифка, Видео, Длиннопост

Фаза освещения

Тут все происходит в 1 шейдерной программе, т.е. в 1 шаг. Но для удобства восприятия я разобью на несколько шагов.


Диффузное(матовое) освещение.

Из направления источника света и нормали облаков, получаем базовое освещение.

Пятничное мое: рендеринг облаков на мобильных. Unity, Asset store, Облака, Рендер, Гифка, Видео, Длиннопост

Просвечивание.

Около краев облаков (там где высокая прозрачность) добавляем просвечивание если солнце спряталось за облаком.

Пятничное мое: рендеринг облаков на мобильных. Unity, Asset store, Облака, Рендер, Гифка, Видео, Длиннопост

Шум нормалей (на самом деле это происходит ПЕРЕД диффузным освещением, но иначе ничего не будет понятно)

Пятничное мое: рендеринг облаков на мобильных. Unity, Asset store, Облака, Рендер, Гифка, Видео, Длиннопост

Шум displacement (отображаем на экране не текущий пиксель, а случайный из небольшого радиуса вокруг)

Пятничное мое: рендеринг облаков на мобильных. Unity, Asset store, Облака, Рендер, Гифка, Видео, Длиннопост

Совмещаем с остальным миром


Зная глубину облака, глубину мира, и прозрачность облака, мы можем наложить облако поверх остального мира.

Пятничное мое: рендеринг облаков на мобильных. Unity, Asset store, Облака, Рендер, Гифка, Видео, Длиннопост

Конечный результат:

P.S. Так как это не технический ресурс, я не стал углубляться в тонкости реализации. Более подробную статью я опубликую на хабре:


https://habrahabr.ru/users/marsermd/posts/

Unity

213 постов2.6K подписчика

Добавить пост

Правила сообщества

• Запрещается постить вопросы, мемы и прочую ерунду - для этого есть форумы и другие специализированные ресурсы.


• Распространение и обсуждение пиратского ПО, кейгенов, ключей и прочих пиратских файлов запрещено.


• Соблюдайте сетевой этикет. Оскорбительное поведение и мат (в том числе сокращенный или завуалированный) караются баном.


• Запрещается разводить полемики на тему "какой движок круче". Здесь мы обсуждаем только Unity.


• Запрещается использовать контент с оскорбительным содержанием, а так же любой другой, который может задеть или оскорбить чувства участников.

2
Автор поста оценил этот комментарий

Таки облака всё же меши?

раскрыть ветку
Автор поста оценил этот комментарий

Интересно как они будут смотреться в играх от 1/3 лица. Пишите мне сюда: https://vk.com/homerender, можем пост в нашей группе по юнити разместить.

Автор поста оценил этот комментарий

Пробовалось проверить облака на реальной мобильной игре? Ну или хотя бы сцену на 50-80к вертексов + 30-50 draw calls? Интересно какое будет падение в производительности на мобилках. А к требованиям есть какие-либо ограничения, будит ли сие дело работать на том же Opengl es 2.0 к примеру?


А что будет, если камера вплотную подойдет к облаку или вовсе войдет внутрь?


Сори за тонну вопросов :)

раскрыть ветку
DELETED
Автор поста оценил этот комментарий

Ваш ассет можно приобрести в сторе? Было бы здорово использовать его для тумана!

раскрыть ветку
Автор поста оценил этот комментарий

Схоронил