Комментарии 20
А есть ли проблемы с перформансом, особенно когда туман весь экрн занимает.?
Тригонометрические функции заменяли на ряды для лучшего перформанса?
И не возникает ли ограничений по операциям в шейдере на мобайле?
Производительность не зависит от покрытия экрана туманом/облаками (Кстати, я этого не упомянул, но все операции до момента наложения облаков на остальной мир происходят в пониженном разрешении).
Тригонометрических функций на самом деле нет:
sin(t) нет необходимости вычислять в каждом пикселе, т.к. он одинаковый => вычисляем на CPU.
cos(a) где a — угол между n и light вычисляется как dot(n, light) если n и light единичной длины.
А вообще такие функции в шейдерах и так оптимизируются через таблицы + ряды.
В ограничения по количеству операций не упираюсь, шейдеры довольно маленькие (каждая операция преобразования — 1 шейдер).
Спасибо!
Как корректно замерять производительность видеовычислений — это вообще ужасная тема, достойная отдельной статьи. Я даже не уверен что готов такую сейчас написать:)
FPS считается просто: берём время между началом кадров n и n+1. Для удобства можно строить график с указанием медианы и 95 перцентиля за последние k кадров.
Но есть одно маленькое "но": на Андроиде включен оркестратор, который, по сути, навязывает частоту обновления не более 60 кадров в секунду.
Так что если хочется посчитать производительность конкретного эффекта — у вас большие проблемы.
Я решаю эту проблему так: даю нагрузку в размере 16 МС(1 кадр при частоте 60 ФПС) и замеряют разницу между частотой кадров со включенным плагином и с выключенным.
Но на IOS такое не прокатывает — у них насильно включена вертикальная синхронизация, так что если ты не уложился в 16.6 мм, fps сразу падает до 30:)
Да, показать с разных ракурсов стоит, вы абсолютно правы:)
Сделать облако более размытым безусловно можно.
Центр не может быть прозрачным, если это происходит не засчёт fallofff, т.к. наложение двух облаков друг на друга не сделать корректным. Считайте, что тут мы делаем только кучевые облака или стелящийся туман.

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