Как стать автором
Обновить

Комментарии 32

Техническая сторона вопроса интересна, за статью спасибо, плюсанул.

А вот всё нижесказанное ИМХО, конечно, но…

Сама идея использовать жуткие фильтры и эффекты вроде этого — ужасна-ужасна-ужасна-Ужасна-УЖАСНА. На реальном ЭЛТ-мониторе середины 90х картинка так не выглядела, это точно.

Обожаю старые игру, люблю двухмерную графику, но подобные фильтры, особенно неотключаемые — лучший способ отпугнуть игрока. Блин, у меня зрения и так не идеальное, я не хочу его ещё сильнее портить.

Пожалуйста, не калечьте графику. Не учите людей плохому. Эти картинки справа страшны во всех примерах. Не надо в играх такими убогими фильтрами ухудшать графику. Пожалуйста. Отличный же писксельарт на картинке. Пожалуйста. Не делайте так в реальных продутках. Если у вас пиксельарт — используйте его, не надо дубовых сглаживаний, мыльной картинки и издевательств над глазами игрока. Не надо фильтров. Не надо блумов. Не надо мыла. Как игрок прошу…
Солидарен с предыдущим оратором. Все картинки справа выглядят ужасно.
Обратите внимание на абзац в начале статьи. Я же специально сказал — надо юзать к месту. Например, если вы хотите сымитировать такой эффект в каких-то заставках и т.п. Заставлять юзера играть в таком на постоянку — не тру, согласен.
Просто, возможно, стоило бы показать применение шейдеров на красивом эффекте. Ну скажем рисование шлейфа за изображением и/или пульсация (см. Принц Персии — Пески Времени, момент отматывания времени назад).
Мне больше напомнило экран моего GBA/GBA:SP. Вот один в один.
Иногда подобные фильтры поверх пиксельной графики дают свой позитивный эффект на атмосферу. Пример - Lone survivor, где обычная пиксельная графика смотрелась бы хуже. Но злоупотреблять, конечно, не стоит.
Спорно и на любителя. Я в Silent Hill 2 дальше всегда вырубал эффект «шума экрана». Не знаю лично ни одного человека, кто бы его оставлял. Может на телевизоре он и смотрится хорошо, но на мониторе — дико на любителя.

А вот например эффект «потертой плёнки»+«не жесткий фильтр-сепия» из того же Nosferatu (игры) смотрится изумительно. Но опять же, отключается.
Полностью поддерживаю.
Так а что, кто-то спорит?
А я в детстве играл в сегу и денди на ЭЛТ телевизоре, поэтому для меня исходные картинки слева выглядят страшнее.
Я даже на PS3 какое-то время играл на ЭЛТ, не говоря уж про денди и сегу, но с вами позволю себе не согласиться.
Давно делаю игры, очень люблю это. Но часто вижу такое вот «не калечьте графику»… Ну блин, вот это мое творение, можна сказать произведение моей фантазии, стрим моего мира. Это как пойти к Ван Гогу, и сказать «Ну че ты краску переводишь, давай рисуй реалистично, а не эту размазню. Можешь ведь!» Я не говорю что игры над которыми я работаю в одной линейке с его произведениями, но чувствую я о них не меньше.
Тут должна бить какая-то такая картинка: i.imgur.com/3Y4eCy1.png
Тогда Вам также должен быть отвратителен «Глубина резкости» эффект, применяющийся сейчас в каждой AAA класса игре.

Это один из критериев — почему я не люблю Black Desert.
В статье слово шейдер используется 48 раз, теперь мне кажется что оно как-то не так звучит.

А по сабжу: соглашусь с оратором выше, что на ЭЛТ мониторах так не выглядела картинка, и мне гораздо более нравится левый вариант.
Заводим текстуру, например такую

Настраиваем текстурные координаты так, чтобы она репителась столько раз, сколько разрешение «ЭЛТ-монитора» и просто умножаем выборку из нее, на выборку из текстуры кадра (возможно с неким коэффициентом).
3 прохода вместо 1?
1 проход рендерим в текстуру кадр слева (на картинке из поста), второй проход этот и все
Да, согласен, так изящнее и быстрее. И никаких if'ов
В Unity есть одна не очевидная вещь, которой можно проверять производительность шейдеров. Откройте собранный шейдер и найдите вот такие строки:

Program «vp» {
// Vertex combos: 1
// opengl — ALU: 8 to 8
// d3d9 — ALU: 8 to 8

и

Program «fp» {
// Fragment combos: 1
// opengl — ALU: 7 to 7, TEX: 3 to 3
// d3d9 — ALU: 6 to 6, TEX: 3 to 3

Здесь отображается количество циклов ALU, затраченное на обработку каждой вершины и пикселя соответственно. Таким образом можно сравнить разницу между вашим методом и методом, предложенным в комментах. Это скорее к вашей разработке, чем к статье, поскольку каждая операция сложения, умножения, функция cg, особенно в фрагментных шейдерах, делает ваш шейдер тяжелее.
спасибо большое, не знал!
Bloom — зло. С ним надо быть крайне осторожным.
Простите но этот фильтр создает иллюзию не ЭЛТ дисплея а дешевого STN экранчика. Я помню у меня был Sony Ericsson T630, так вот там примерно такая же картинка была.
Вот, спасибо, я наконец-то вспомнил, где я видел последнюю правую картинку! На своем К500, и было это уже почти десять лет назад.
Многие картинки нравятся. Но подобные эффекты должны быть отключаемыми.
Можете ли для наглядности выложить финальные тексты шейдера и скрипта?
Присоединяюсь.
Все хорошо объяснили, но готовое и на блюдечке было бы ещё лучше.
ЭЛТ характерна искажниями и иным расположением субпикселей относительно ЖК.

Для эффекта ЭЛТ я бы сделал немного иное. Выгнул бы бикубиком изображение, чтобы ближе к углам изображение было скругленным и попытался бы эмитировать RGB триаду. На ЭЛТ пиксели стояли триадами.

RBRBRBRB
_G_G_G_G_
RBRBRBRB
_G_G_G_G_

Соотвественно такой алгоритм, как здесь, делает скорее старые сименсовые мобильники, нежели ЭЛТ.
image
Релизация мимикрирует под трубки Trinitron — это апертурная решетка, против теневой маски, которую вы описываете
В таком случае долой горизонтальное затенение каждые 3 пикселя.
ох, вот бы еще добавить небольшой эффект линзы рыбий глаз! =)
Аплодирую стоя.
Рад быть 300м, кто добавил в избранное.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории