Показать сообщение отдельно
Старый 16.09.2014, 18:13   #398
Samodelkin
Мастер
 
Регистрация: 12.01.2009
Сообщений: 983
Написано 390 полезных сообщений
(для 634 пользователей)
Ответ: [TrueHorror] - разработка

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

Поэтому я добавил G-Buffer.
Пока использую обычные regular normals в world space, которые помещаются в A2R10G10B10, на самом деле для SSAO этого достаточно, но мне понравился способ упаковки best fit normals и думаю затем его сделать и использовать A8R8G8B8, где альфа уже будет свободна для чего-нибудь другого, тем более что в составе полноценного рендера нормали пригодятся для тех же бликов и отражений, где точность более критична.
Еще, как выше указал Mr_F_, надо попробовать посчитать во view space и сравнить оба варианта.
Для глубины сейчас используется R32F.

На скрине видно ещё не сглаженный SSAO. Сейчас я переписал ранее написанные в RenderMonkey шейдеры в эффект и собрал приложение на котором можно будет это тестить.

Нажмите на изображение для увеличения
Название: ssao_scr3.png
Просмотров: 944
Размер:	1.94 Мб
ID:	20902

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

Кстати, на скрине можно видеть 527 FPS, для 1080p вроде неплохо. Последующее сглаживание снизит этот показатель, но остаётся возможность оптимизации самого SSAO шейдера и G-Buffer'а, которые надеюсь смогут компенсировать потери на сглаживании.


Ну и ещё стоит упомянуть что от кодов Борескова тут практически ничего не осталось, если бы у меня не было некоторого опыта в шейдерах (а статья рассчитана на новичков), шейдер по статье невозможно было бы повторить.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
mr.DIMAS (16.09.2014)