Использую алгоритм SSAO (Screen-Space Ambient Occlusion) описанный на данном сайте. Суть его заключается как я понял в распределение освещения точек конкретного объекта. Возьмем например голову героя, по идее алгоритм должен оттенять глаза, поскольку есть надбровные дуги, выделять скулы и пр. Но у меня получается только контур головы. Может я просто не понял суть алгоритма, хотя если использовать буффер глубины и радиус сферы для конкретной точки побольше, то мы должны получать что то вроде затенения. Помогите разобраться, а то ....
SSAO (Screen-Space Ambient Occlusion) не работает
Сообщений 1 страница 6 из 6
Поделиться22008-10-07 08:54:20
Дело в том, что для учета затенения берутся только те фрагменты, глубина которых не очень сильно отличается от глубины рассматриваемого фрагмента и для учета степени затенения также используется функция от разницы глубин.
Поэтому, скорее всего, в Вашем случае нужно просто подобрать величину максимальной учитываемой глубины и все заработает.
Поделиться32008-10-07 09:15:40
Попробовал и модифицировал простейший код из примера следующим образом
if ( zSample - z > 1500.1 ) //если разница в глубине большая то пропускаем
continue;
float dz = max ( zSample - z, 0.0 ) * 0.05; //определяем коэффициент затенения
att += 1.0 / ( 1.0 + dz*dz ); //величина затенения
}
att = clamp ( (att / 8.0 + attBias) * attScale, 0.0, 1.0 );
gl_FragColor = vec4 ( att );
Тоесть как видите порог по глубине значителен, но результат опять тот же, пробовал изменять коэфициент затенения, нов результате контур просто проподал или ничего не изменяться ( увеличивается контрастность но опять же на границе объекта)
Поделиться42008-10-07 20:18:20
Я бы предложил использовать другой вариант расчта затенения - дающий ноль к концах отрезка и максимум посередение.
и мне кажется, что 1500 слишком много для dz
Поделиться52008-10-08 10:45:01
Я бы предложил использовать другой вариант расчта затенения - дающий ноль к концах отрезка и максимум посередение
Какой отрезок имеете ввиду я не понял. Может кто выложит пример для RenderMonkey там есть моделька NinjaHead.3ds хотелось бы увидеть что может алгоритм для данного случая, у меня по крайней мере получается тока контур как и с зайцем. Недавно скачал пример шейдера одного автора описывающего спецэффекты в игре Crysis кажется. Так при рендере тоже только контур танка, а как же затенение корпуса под стволом пушки, да в самой модели много переходных мест, где должны появиться темные участки. Возникает подозрение: или в примере неправильно что то реализовано, или алгоритм на большее и не способен, хотя по идее он должен отрабатывать такие моменты.
Поделиться62008-11-25 00:22:26
Если кого интересует SSAO рекомендую рисерч товарища Vortex'а тако игрушки как Crysis
http://users.livejournal.com/__vortex__/3201.html