Проблемы с шейдером Oceano и в целом
Вот такое пятно у меня:
Я предполагаю, что это то, как должен выглядеть мир ночью, т.к оно делает всё тёмным
Играю на 1.14.4 видео AMD Radeon RX 560
Магия шейдеров 20: Идеи для шейдера дождя и брызг
Как сделать такой дождь? Идея реализации без системы частиц.
Прежде всего разберемся подойдут ли нам стандартные частицы из движка? Некоторые движки позволяют делать такие частицы, которые проверяют коллизии, и, например, вы сможете получить дождь, который не будет капать сквозь крышу. Как это реализовано? Будет ли это работать быстро? Нужно проверять.
Я же знаю рендерское решение, опишу его: нам нужен, большой вершинный буфер, в котором мы будем хранить наш вершинный "суп" с растянутыми квадами, которые и будут каплями дождя. Можно сгенерировать их одной толщины и длины, и в случайном порядке подвигать по высоте, и чтобы получить дождь останется только сдвигать их вниз.
Но как учесть крыши и другие горизонтальные поверхности?
Капли не должны пролетать сквозь поверхности, и чтобы этого добиться —можно сделать аналог shadowmap, получить глубину сверху и в шейдере проверять «а есть ли что-то над каплей?» и если есть – делаем по-аналогии с тем как, например, работает mesh-flipbook —не рисуем каплю вообще (про mesh flip-book я рассказывал в докладе Магия шейдеров, ссылка с таймкодом)
Поправьте меня, если я что-то упускаю, но этот подход легко применяется и для шейдера материала брызг,— рисуем брызги прямо на поверхности. Для них можем использовать и частицы - у нас есть обычный emitter частиц для брызг и мы в шейдере для материала этих брызг сэмплируем эту "глубину сверху" и сдвигаем капли вниз.
Регулируем количество частиц брызг, регулируем количество капель и получаем: ливень или небольшой дождь.
Преломление света
Ну и преломление света сквозь капельки, реализуется стандартно: в нашем пайплайне у нас будет предыдущий кадр с mip-уровнями, рассчитанными так же как для Bloom (очень популярный эффект про который множество статей) его то мы и будем сэмплировать в шейдере материала капель.
p.s. Ребята, да, я вижу ваши жалобы, что ничего непонятно без кода. Но я не пришел сюда учить. Я пришел показать идею, которую можно сделать. Для тех, кто разбирается в шейдерах хотя бы немного, мне кажется,— легко представить как подобное реализовать. Если никто не реализует — может быть я смогу сделать доклад для какой-то из конференций в этом году и расскажу про этот эффект подробнее, но видео-уроки делать я точно не буду.
Всем гектаров в имениях и легкости в движениях!
Смотрите остальные посты про магию шейдеров по тегам ниже.
Магия шейдеров 19: ASCII Art Шейдер а-ля Watch dogs от Мэтта Старка
Я возвращаюсь к Магии шейдеров и сегодня хочу, как обычно, не вдаваясь в детали, рассказать как бы я сделал шейдер для такого post-эффекта.
Но, давайте, сначала вспомним: что это за ASCII-арт такой. Как сообщает нам Википедия: ASCII-графика — это форма изобразительного искусства, использующая символы ASCII на моноширинном экране компьютерного терминала или принтера для представления изображений.
🤔 А причем здесь хакеры и Watch dogs? ASCII-арт, помимо демосцены, частенько встречался в .nfo файлах с crack и keygen архивами. В этих nfo-файлах создатели crack'ов и keygen'ов указывали всякую информацию о своей команде, рисовали теги команды или просто какой-то симпатичный арт. Часто можно было увидеть там символьные черепа, монстров и другую симпатичную жуть, которой, наверняка вдохновлялись Ubisoft для создания логотипа группировки DeadSec.
Так как бы я сделал?
Сделаем fullscreen post-эффект: 1) Вычисляем Luminance 2) Сжимаем картинку до размеров нашей ASCII-картинки в символах. Сколько символов мы хотим чтобы у нас было на экране? 3) Делаем 1D LUT-текстуру с, отсортированными по количеству белого, символами 4) В последнем пассе используем картинку из шага 2 и LUT-текстуру из шага 3 чтобы отрисовать символы в экранную текстуру.
Простор для применения
- Можно блендиться между исходной текстурой и полученной в результате такого пост-эффекта, чтобы сделать какой-то красивый fade-эффект.
- Можно затенять пиксели символов, я предполагаю будет гораздо более объемная картинка
- Можно сделать цветной и добавить какую-то палитру
- Можно делать ближние символы более яркими, а дальние - тусклыми.
Как всегда любые вопросы в ЛС или в предложку можно задавать вконтакте, и мы, наконец, завели канал в телеграме: https://t.me/coremission
Всем гектаров в имениях и легкости в движениях!
Смотрите остальные посты про магию шейдеров по тегам ниже.
Магия шейдеров 18: Видеозапись моего доклада про эффекты
Привет, ребята! Наконец на канале DevGAMM стала доступна видеозапись моего доклада про Магию Шейдеров! Еще раз огромное спасибо всем, кто пришел :)
В чем суть? Вы жаловались в комментариях, что я просто выкладываю гифки и ничегошеньки не объясняю про устройство эффектов в этих гифках. И я решил — возьму три эффекты из того, что я уже выкладывал в Магию шейдеров на Pikabu и разберу их подробнее, воспроизведу в Unity.
Я взял три эффекта: Портал/водоворот, parallax-based эффекты: красивые карточки для ККИ и лёд и молнию.
Немного слов про видео: Сам очень не люблю когда докладчики экают и запинаются, но тут уж так вышло — волновался. В 1.25х скорости смотреть приятнее, особенно в начале, когда я пытался справиться с волнением 😊
p.s. Вот тут ссылка на слайды и код: https://coremission.net/gamedev/kormishin-devgamm-minsk-2019...
Всем гектаров в имениях и легкости в движениях!
Смотрите остальные посты про магию шейдеров по тегам ниже.
Магия шейдеров 17: Используем цвет вершин
Градиент в Vertex color можно использовать вместе с Displacement'ом в вершинном шейдере для вот таких эффектов.
Что конкретно происходит в этом примере: мы делаем pivot с помощью этого цвета, чтобы нижнюю часть спайков Displacement не затрагивал.
В конце ноября я был на DevGAMM в Минске и выступал с докладом Магия шейдеров: Популярные эффекты из видеоигр. Мы воспроизвели 3 эффекта из этой рубрики (имею в виду: Магия шейдеров) на пикабу в Unity!
Я сам очень стеснительный и было очень приятно, когда люди подходили и знакомились!
Кто-то из пикабушников был? Я был первый раз и мне очень понравилось! Indie Power!
Как всегда любые вопросы в ЛС или в предложку можно задавать вконтакте: https://vk.com/coremission
Всем гектаров в имениях и легкости в движениях!
Смотрите остальные посты про магию шейдеров по тегам ниже.
Godot 3.1.1: Баг в языке шейдеров Годо. Переменные в параметрах цикла убивают шейдер
Если использовать параметр uniform или переменную в цикле внутри шейдера, то в сборке для браузера такой шейдер не работает. При этом он работает на лаптопах и мобильных платформах.
Версия Godot 3.1.1.stable.official
Так работает:
...Так не работает в chrome, firefox:
for (int n = 0; n < 3; n++) {...}
...
int max_iter = 3;
for (int n = 0; n < max_iter; n++) {...}
...
Godot 3: Бесшовное наложение шейдерной текстуры на игровое поле
Показан способ как в Godot Engine получить пиксели экрана позади текстуры внутри фрагментного шейдера. Ссылки на доки по миграции шейдеров в Godot и на способы получения доступа к пикселям экрана из шейдера в описании к видео на ютуб.
Оригинал шейдера огненного шара здесь - https://www.shadertoy.com/view/lsf3RH