а я смешиваю в зависимости от яркости сцены. чтобы ссао не смотрелась некстати под прямыми лучами света.
sceneTexel *= mix( ssaoTerm, 1.0f, (sceneTexel.x+sceneTexel.y+sceneTexel.z)*0.5) );
Вроде бы разобрался.
Действительно SSAO*Color вполне достаточно. Было замечено, что в шейдере прописано несколько констант. Получив управление ими извне, удалось настроить картинку.
От серости избавился с помощью Bias. Нормали пока еще не использую, это следующий шаг, да и в местах где есть свет планирую избавляться от SSAO.
intptr
> Вроде бы разобрался.
выложи плиз сцену
coordBox
> (sceneTexel.x+sceneTexel.y+sceneTexel.z)*0.5
Это что за формула такая? :)
Сцену брал сдесь же http://www.gamedev.ru/files/?id=65748
intptr
пасиб
Blew_zc
> Это что за формула такая? :)
А вотакая!
mix ты там потерял,
оно интерполирует точку ssao и единичку, с весом равым засвеченой чорнобелости освещённо-затенённой точки из сцены.
ну и умножает цвет на ЭТО...
тут тебе не хухры-мухры
вобщем при простом усреднении *0.33333f АО всёравно пробирался туда где ему делать нефиг. а так норм.
coordBox
Дык, это не черно-белость, а непойми что. Чернобелость считается через скалярное произведение :)
Blew_zc
кто как хочет, тот так и дро делает
разницы никакой
coordBox
Отмазался :)
Наиболее правильным вариантом учета SSAO будет такой:
1) рендер в буфер глубины и расчет SSAO
2) рендер финального изображения с учетом SSAO как
color = ambient * ssao + diffuse * diffuseLight + specular * specularLight;
То есть по сути получается два прохода отрисовки.
Откуда можно выковырнуть шейдер?
Если шейдер из Crysis то вот:
http://www.opengpu.org/forum.php?mod=viewthread&tid=772
или с помощью RAR распаковать файлы самой игры.
Поигрался со смешиванием, пробывал цепляться за спекуляр, коэфиценты шершавости, лучше всего смотрится на такой формуле:
scene *= mix( ssaoTerm, 1.0f, (scene.r+scene.g+scene.b)*0.333f );
вот что получилось:
после смешивания по этой формуле:
coordBox
можешь выложить нижнюю сцену плиз
Тема в архиве.