Очень круто! Респект и уважение.
А есть ли проблемы с перформансом, особенно когда туман весь экрн занимает.?
Тригонометрические функции заменяли на ряды для лучшего перформанса?
И не возникает ли ограничений по операциям в шейдере на мобайле?

Производительность не зависит от покрытия экрана туманом/облаками (Кстати, я этого не упомянул, но все операции до момента наложения облаков на остальной мир происходят в пониженном разрешении).


Тригонометрических функций на самом деле нет:


sin(t) нет необходимости вычислять в каждом пикселе, т.к. он одинаковый => вычисляем на CPU.
cos(a) где a — угол между n и light вычисляется как dot(n, light) если n и light единичной длины.


А вообще такие функции в шейдерах и так оптимизируются через таблицы + ряды.


В ограничения по количеству операций не упираюсь, шейдеры довольно маленькие (каждая операция преобразования — 1 шейдер).

Похоже на дым, а не облака и туман. Уж слишком плотно, темно и динамично.
В таких вещах это уже вопрос настройки. А так важен сам принцип.

Верно, плотность, динамичность и цвета настраиваются.
Я просто так вижу облака:)

Можно иллюстрацию изнутри облака? С точки зрения, тэкскэть, самолётика.
Спасибо!

Как корректно рендерить изнутри я пока не придумал:)

Белая простыня?
/offtop/ А как вы проверяете производительность игр/приложений на реальных устройствах? Как снимаете значение fps и т.п. вещей? /offtop/

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


FPS считается просто: берём время между началом кадров n и n+1. Для удобства можно строить график с указанием медианы и 95 перцентиля за последние k кадров.
Но есть одно маленькое "но": на Андроиде включен оркестратор, который, по сути, навязывает частоту обновления не более 60 кадров в секунду.
Так что если хочется посчитать производительность конкретного эффекта — у вас большие проблемы.


Я решаю эту проблему так: даю нагрузку в размере 16 МС(1 кадр при частоте 60 ФПС) и замеряют разницу между частотой кадров со включенным плагином и с выключенным.


Но на IOS такое не прокатывает — у них насильно включена вертикальная синхронизация, так что если ты не уложился в 16.6 мм, fps сразу падает до 30:)

Можно плавно регулировать нагрузку и ловить порог падения со включенным плагином и без

да, неплохая идея.

Преимущество этих облаков в том, что они одинаково хорошо выглядят с любого ракурса, а вы в демо показываете только один ракурс. С одним ракурсом и билборды справятся — вы же сами об этом писали. Можно сделать облако более размытым (можно в еще более низком разрешении), более прозрачным (чтобы центр тоже был на ~80% прозрачнее) и показать его с разных ракурсов? Было бы нагляднее и, как по мне, реалистичнее.

Да, показать с разных ракурсов стоит, вы абсолютно правы:)
Сделать облако более размытым безусловно можно.


Центр не может быть прозрачным, если это происходит не засчёт fallofff, т.к. наложение двух облаков друг на друга не сделать корректным. Считайте, что тут мы делаем только кучевые облака или стелящийся туман.


Кучевые облака.jpg

P.S. обожаю ваши статьи)

Да, действительно, реальные облака вообще не особо пушистые, скорее с подповерхностным рассеиванием. Прям захотелось сделать так же, только не для мобилки, а десктопа. Довольно таки высокополигональное + какой-нибудь SSS или даже SSSSS)

P.S. обожаю ваши статьи)

Давно не писал. Спасибо, это мотивирует.

Если захочется сколлаборироваться/побрейнштормить/.., я в вашем распоряжении:)

До чего же круто выглядит.
Спасибо за подробное описание, надо попробовать самому такую штуку сделать (мне просто не хочется 25$ платить).

Да, для русского пользователя дороговато:)
Но это дешевле чем большая часть подобных ассетов, а разработка подобной штуки без соответствующего опыта — не меньше 80 часов займет даже зная что надо делать (очень сложно отлаживать; много платформо-зависимых штук).
Так что купить дешевле. Но если это для саморазвития — флаг вам в руки:)
P.S. Подпишитесь на меня, скоро расскажу как крутой шум генерировать.

Только полноправные пользователи могут оставлять комментарии.
Войдите, пожалуйста.