Добавлен , опубликован

23.05.2014

  • выспался и разобрался почему не сработала передача информации о смещении в экранный фильтр
  • в свете новых данных возобновлена работа над экранным фильтром
  • задействована реализованная ранее возможность иметь двухслойную поверхность

Заметки

Поскольку сцена рендерится в изображение формата RGBA8 (в большинстве случаев), то и точность передачи данных от шейдера к экранному фильтру ограничена 8 битами на канал. Я же пытался передать абсолютное смещение в пределах атласа произвольного размера, отсюда и потеря точности со всеми последствиями, которые можно было наблюдать в прошлом отчете.

Новая версия экранного фильтра потребует более сложного процесса рендеринга - отдельными проходами рендерятся два изображения экрана, на одном поверхность представлена в привычном нам виде с наложенными текстурами, а во втором - в виде единственного канала, в который записан id материала. После чего первое используется как источник цвета, а второе для определения границ однородных областей и последующего наложения эффектов.
Чтобы избежать дополнительного прохода рендера, а это довольно дорогой процесс, можно использовать альфа-канал и буфер глубины для передачи дополнительных данных - на этом этапе ни то ни другое не используется. Писать отчеты это очень полезное занятие - на ум приходит множество хороших идей.

Практически с самых первых версий была реализована двухслойная поверхность, хранящая два набора пикселей. По умолчанию видимым считается пиксель первого слоя и только если в первом слое нет пикселя, видимым становится пиксель со второго слоя.
Однако до сегодня никакой разницы в визуальном отображении пикселей с разных слоев не было. Сегодня же было добавлено небольшое затемнение для пикселей заднего слоя и внесены правки в генератор мира, позволяющие это продемонстрировать.

Скриншоты

Перед вами сырая версия двухслойной поверхности. Затемненная часть представляет собой поверхность, содержащую только задний слой. Скорее всего, проверка проходимости будет вестись только по переднему слою, так что другими словами на скриншоте представлены бездонные ямы.

Перед вами попытка добавить антиалиасинг между передним и задним слоями карты. Реализовано в полуручном режиме т.к. принадлежащие границе пиксели определяются на уровне генератора карты. В дальнейшем функция наложения антиалиасинга, скорее всего, будет переложена на экранный фильтр или по крайней мере доработана в текущем виде до более приемлемых результатов.
`
ОЖИДАНИЕ РЕКЛАМЫ...