Эффект свечения пикселей в игре за четыре шага
Разрешение экрана у меня в игре 320х180. При таком низком разрешении видно каждый пиксель, и я решил сделать красивое ретро-свечение.
Свечение делается программно, но не шейдером, а C# скриптом во время загрузки. Мне показалось, что проще сгенерировать текстуры один раз, а не обсчитывать эффект каждый кадр. После нескольких итераций оптимизации добился того, что эффект свечения для нескольких тысяч спрайтов считается около шести секунд.
Алгоритм эффекта очень прост и состоит из четырех пунктов. Первые два - это неоновое свечение пикселей. Вокруг каждого пикселя делаются два свечения, каждый со своим радиусом R и значением непрозрачности A.
Берем цвет пикселя и подсвечиваем соседние таким же цветом, но с заданной непрозрачностью A. По мере удаления, свечение (непрозрачность) уменьшаем линейно, пока не дойдем до нуля на расстоянии R.
Шаг третий - скругление. Во время экспериментов оказалось, что если немного скруглить окончания непрерывных отрезков пикселей, то получается красиво. Если у пикселя в горизонтальном ряду нет соседа с какой-нибудь стороны (лево/право) - скругляем эту сторону.
Заключительный шаг: полоски. Разделив ряды пикселей полупрозрачными полосками, удается добиться дополнительного ретро-ощущения.
Осталось только подобрать параметры эффекта, чтобы смотрелось хорошо. Вот, например, картинка с исходными пикселями и с постобработкой.
Тут я установил параметры, которые дают, на мой субъективный взгляд, лучшую картинку на средних и больших мониторах. А вот на телефонах - темновато. Для телефонов надо подбирать свои параметры.
Аутентичность свечения пикселей на CRT мониторах — не основная задача. Главное, чтобы смотрелось прикольно и было не больно глазам во время игры. Сейчас картинка мне нравится процентов на 80. Буду еще допиливать.
Заходите на страничку игры в Стиме, чтобы добавить в желаемое и погонять демку, если вам понравился стиль.

Лига Разработчиков Видеоигр
8.9K постов23.2K подписчика
Правила сообщества
ОБЩИЕ ПРАВИЛА:
- Уважайте чужой труд и используйте конструктивную критику
- Не занимайтесь саморекламой, пишите качественные и интересные посты
- Никакой политики
СТОИТ ПУБЛИКОВАТЬ:
- Посты о Вашей игре с историей её разработки и описанием полученного опыта
- Обучающие материалы, туториалы
- Интервью с опытными разработчиками
- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе
НЕ СТОИТ ПУБЛИКОВАТЬ:
- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры
- Посты, единственная цель которых - набор команды для разработки игры
- Посты, не относящиеся к тематике сообщества
Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.
ЗАПРЕЩЕНО:
- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции
- Выдавать чужой труд за свой
Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.
О РАЗМЕЩЕНИИ ССЫЛОК:
Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:
- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества
- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз
- Cсылка размещается в формате: "Страница игры в Steam: URL"