Перейти к содержанию

GTAO для аномалии

Авторизация  
AgainstAllAutority

3 376 просмотров

Небольшое сравнение:

spacer.png

без какого-либо затенения

 

spacer.png

И с новой моделью GTAO (ground truth ambient occlusion)

  • Лайк 2
  • Мастер! 1
  • Хабар 1
  • Спасибо 1
Авторизация  


18 Комментариев


Рекомендуемые комментарии

Ну как же есть разница это что типа затенения посмотрите на темные и светлые поверхности. Особенно в здании заметно.

  • Лайк 1

Поделиться этим комментарием


Ссылка на комментарий

Спасибо за приятные отзывы - они очень помогают в мотивации решать задачи (например уже сегодня получилось заметно уменьшить гало)
Если не видно разницы - советую нажать на картинку, на превью и правда может быть не столь очевидно - это все-таки не реворк освещения, а что-то вроде заплатки.


Дополнено 3 минуты спустя
57 минут назад, Commandor сказал:

Неплохо. Текстуры лучше смотрятся, края более чёткими кажутся.

к сожалению в будущем пассе на оптимизацию эффект на текстурах будет немного потерян, хотя код уже сейчас очень бодро работает на моей 1060 (100-110 фпс, т.е порядка 8-9мс на кадр, при моем рассчетном лимите в 13мс ~ 75 фпс в 1080р на 1060)

Изменено пользователем AgainstAllAutority

Поделиться этим комментарием


Ссылка на комментарий

Очень приятная наработка и разница видна невооруженным взглядом.

@AgainstAllAutority,

есть материал свободном доступе или стоит ждать в Аномали?

 

Поделиться этим комментарием


Ссылка на комментарий

@ed_rez в свободном доступе есть "исходный мета-код"
тут оригинальная статья с кодом

ну и само собой в аналье это появится (просто нужна правка движка, т.е в виде мода это не отправить, только если вместе с измененным exe) я наработки скидываю

Поделиться этим комментарием


Ссылка на комментарий

@AgainstAllAutority,

если не затруднит, поделись ссылкой на исходники. С правкой движка понятно. Мне интересно движковые и шейдерные решения в виде, как ты пишешь, "мета-кода".

Поделиться этим комментарием


Ссылка на комментарий

Такое чувство, будто либо что-то сделали с погодой, либо просто поставили статику. Даже в ЗП, внутри зданий не было так светло.

Поделиться этим комментарием


Ссылка на комментарий
9 минут назад, AziatkaVictor сказал:

Такое чувство, будто либо что-то сделали с погодой, либо просто поставили статику. Даже в ЗП, внутри зданий не было так светло.

это ж не ванильный движок, а аномалия, кучу раз переделанная до меня другими людьми. К сожалению не могу отвечать за эти моменты. Другого движка для экспериментов у меня нет)


Дополнено 1 минуту спустя
16 минут назад, ed_rez сказал:

@AgainstAllAutority,

если не затруднит, поделись ссылкой на исходники. С правкой движка понятно. Мне интересно движковые и шейдерные решения в виде, как ты пишешь, "мета-кода".

@ed_rezссылка -> "тут оригинальная статья"

движковые: по сути только дополнительные RT перед стадией combine_1, как ориентир можно использовать фазы для HBAO/HDAO от GSC.
генерируем сам эффект в 1 пассе, потом 2 пасса блюра. Единственное - блюр должен отсекать семплы, которые больше некого "допуска". Допуск зависит от глубины цели.
В теории еще много фишек которые можно применить, я пока их не реализовал сам.

Изменено пользователем AgainstAllAutority
  • Мастер! 1
  • Жму руку 1

Поделиться этим комментарием


Ссылка на комментарий
1 час назад, AgainstAllAutority сказал:

К сожалению не могу отвечать за эти моменты. Другого движка для экспериментов у меня нет)

Ну как сказать. Есть куча правленых движков ЗП с исходниками. А так прикольно.

Поделиться этим комментарием


Ссылка на комментарий

Давно в Reshade это есть. Зачем изобретать велосипед не понимаю :classic_dry:

Поделиться этим комментарием


Ссылка на комментарий

@kay решейд - не имеет представления, что именно происходит в игре. Это только пост-фильтр с доступом к буфферу глубины. Из-за этого его возможности сильно ограничены. Мое решение лучше, быстрее и интегрируется с освещением, которое генерирует сам движок, а не просто рисуется сверху после.

собственно с решейда я вначале и начинал, но он не мог предоставить нужный мне результат

Изменено пользователем AgainstAllAutority

Поделиться этим комментарием


Ссылка на комментарий

Ну хоть кто-то додумался, что пора бы обновить затенение. Тогда и я поделюсь неким скромным результатом.

GTAO (V = N) + Multibounce :

ss_admin_10-23-21_04-09-44_(l01_escape).thumb.jpg.1a5dd0feeed7d2e0325dfc4312d76e9f.jpg

ss_admin_10-22-21_23-32-26_(l08_yantar).thumb.jpg.a075e23262f5ca59b3d04275779378d8.jpg

Реузльтаты все равно ещё не очень, да и вместо вектора взгляда использую вектор нормали пока-что.

  • Мастер! 1

Поделиться этим комментарием


Ссылка на комментарий

@fiercefreak результат очень даже, но видно - что не везде срабатывает

какую эвристику для проверки "толщины" используешь? дельта расстояний или что-то более умное? я просто как в статье описано не смог реализовать и ограничился использованием дельты между целью и кандидатом для оклюзии.
Bent Normals?
Bounce с использованием "матрицы перехода цвета" ? просто похоже будто просто "диффуз текстура" проглядывает через АО (ну дает цвета)

у меня тоже не все идеально

spacer.png

а вот так миксуется с буффером света
spacer.png

Изменено пользователем AgainstAllAutority

Поделиться этим комментарием


Ссылка на комментарий

@AgainstAllAutority ну на деле я не программист, поэтому использую уже готовый шейдер с гитхаба, но уже сам реализовал GTSO по докам активижона и свои некоторые исправления в GTAO

насчет эвристики, тут дело не в толщине, а в методе 'отсечения'. в прошлом методе там использовалась линейная функция 'отсечения', после проводилась проверка с предыдущим значением.

я вот таким образом реализовал 'отсечение':
h.x = (h.x > H.x) ? H.x : lerp(H.x, h.x, step(Heuristic, -dPds.z));
h.y = (h.y > H.y) ? H.y : lerp(H.y, h.y, step(Heuristic, -dPdt.z));

насчет бэнт нормалей, я тут уже с другого источника (не помню какого) взял вот такую реализацию:
 float Hangle = 0.5f * (h.x + h.y);
 bentNormal += viewDir * cos(Hangle) - tangent * sin(Hangle);

и уже после цикла:
bentNormal = normalize(normalize(bentNormal) - viewDir * 0.5f);
но если V = N, то смысла от этих бэнт нормалей нет

насчет Multibounce - тут использую аппроксимацию за счет коэффициентов кубического полинома, который написан в презентации активижона на стр 78

p.s. я бы покидал парочку скринов, но размер не позволяет, а сжимать и мусорить не очень хочется

Изменено пользователем fiercefreak
  • Мастер! 1

Поделиться этим комментарием


Ссылка на комментарий

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти