Добавлен , опубликован
В данный момент по крупицам копится контент для крупного обновления, которое не стыдно было бы показать на главную, но сегодня произошел небольшой прорыв, о котором я просто не могу не рассказать.
Возможно кто-то помнит, как мне пришлось отказаться от переноса финальной покраски поверхностей в постобработку из-за того, что терялись данные при передаче в экранный фильтр. Признаюсь честно, оказалось что виной тому мои кривые руки - я пытался передавать через два 8-битных канала текстуры координаты в системе координат всего текстурного атласа и, естественно, терялась точность, в результате чего все замыливалось.
Решение оказалось простым до боли в зубах - делать только половину пересчета перед отправкой в экранный фильтр, а вторую половину пересчитывать уже в самом экранном фильтре. А именно - на уровне шейдера для геометрии теперь вычисляются координаты небходимого пикселя в текстурном атласе, но только в системе координат отдельной текстуры в атласе, а не всего атласа сразу, как это было раньше. Учитывая что используются текстуры размером всего 128*128 пикселей, двух 8-битных каналов хватает не только на координаты - туда влазит еще два флага дополнительных данных.
Экранный фильтр же, в свою очередь, добавляет к полученным координатам смещение по атласу, которое вычисляется на основе id текстуры, для передачи которого используется третий 8-битный канал. И остается еще четвертый 8-битный канал, который можно будет заполнить дополнительной информацией.
осторожно - вырвиглаз
вот такое изображение получает экранный фильтр для покраски текстурами
В результате, экранный фильтр получает на входе id текстур в атласе вместо цвета пикселей, что позволит в перспективе создавать основанные на этом визуальные эффекты. Ниже можно посмотреть на первые эффекты, реализованные с помощью фильтра:
Подсветка контуров это, естественно, далеко не предел возможностей экранного фильтра, особенно если использовать несколько проходов рендера, да и подсветку контура можно использовать разную для разных биомов или времени суток, но об этом в другой раз.
upd:
Добавил экспериментальный эффект разделения переднего и заднего слоя карты путем выделения контура.
`
ОЖИДАНИЕ РЕКЛАМЫ...
2 комментария удалено
0
29
9 лет назад
0
prog, тебе бы не границы подсвечивать, а придумать бы что-нибудь с землей, а то рябит в глазах от одинаковости.
0
24
9 лет назад
Отредактирован prog
0
alexprey, это тоже будет.
  • в реальных условиях генератор мира будет выдавать более интересный результат, чем сплошная стена.
  • в планах реализовать минимальное смешивание текстур чтобы переход от одной текстуры к другой выглядел более плавно.
  • теоретически можно прикрутить вариации, если первых двух пунктов не хватит для приличной картинки.
Но на самом деле именно выделение контуров было взято в качестве примера по двум причинам:
  • сейчас практически не реализовано разделение заднего и переднего слоев и один из способов это сделать заключается именно в выделении контура каким-либо способом.
  • выделение контура реализовать очень просто, а над всем остальным нужно уже подумать.
upd:
Небольшой эксперимент с фильтром на тему разделения слоев карты.
0
2
9 лет назад
0
Пока не совсем понятно, ждем-с апов ^_^
0
6
9 лет назад
0
"пробный фильтр - затемнение земли на границе с небом" лучше всех выглядело... непонятно, почему выбрал другой вариант.
0
24
9 лет назад
0
Inflexible, выглядит он и правда интересно, но не дает нужного мне результата - визуального выделения поверхностей. Это сейчас в фоне просто синий цвет, а в перспективе там скорее всего будет картинка в параллаксе и очень неприятно будет когда игроки будут путаться где земля, а где фоновая картинка.
Кроме того все эти эффекты вовсе не потеряны - их в любой момент можно будет задействовать где-нибудь еще, не говоря уже о том, что это очень ранняя промежуточная версия постобработки, а не окончательный вариант.
0
6
9 лет назад
0
prog:
Ага. Что ж, ясно)
Посмотрим тогда, что дальше будет.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.