Depth-based blur (комментарии)
Это сообщение сгенерировано автоматически.
Sergio666
Есть пару вопросов по шейдеру:
для чего вообще переменная fMultiplier? Особенно непонятна последняя
строчка в цикле - fMultiplier += fScale * (fPrevDiff + fNextDiff); И почему
цвет в финале делится на значение этой переменной.. Это что-ли
типа такой мудрёный расчёт среднего значения цвета?
И ещё - если радиус фильтра 4 - то весовые коэффициенты вроде
должны быть 1/16, 2/16, 3/16, 4/16, 3/16, 2/16, 1/16, а в коде начальная
-3 -2 -1 0 1 2 3
точка имеет вес 5..
Поясни плз - может я чего не понимаю...
Ок. Объясняю.
Если радиус фильтра 4, то это значит, что мы движемся влево и впрао на 4 точки. Т.е получается такая последовательность весов:
1 2 3 4 5 4 3 2 1
Крайние точки - единица, значит средняя получается 5 :))
>для чего вообще переменная fMultiplier?
вот как раз для размытия по Гауссу
>Это что-ли типа такой мудрёный расчёт среднего значения цвета?
Да, типа того.
>fMultiplier += fScale * (fPrevDiff + fNextDiff);
fScale — это вес текущей точки.
fPrevDiff, fNextDiff - это коэффициенты, с учетом глубины фрагмента
Вроде бы так :)
Sergio666
OK, ясно..
Только судя по циклу будет не по 4 шага влево и вправо, а по 3, т.к. в условии выполнения цикла стоит знак "<", а должен по идее стоять "<=", иначе текселей с весом 1 не будет, только 5 (начальный) и 4, 3, 2 :)
DEN 3D
> Только судя по циклу будет не по 4 шага влево и вправо, а по 3, т.к. в условии
> выполнения цикла стоит знак "<", а должен по идее стоять "<=", иначе текселей с
> весом 1 не будет, только 5 (начальный) и 4, 3, 2 :)
Спасибо. Пофиксю. Я как-то на это не обратил внимания :)))
Sergio666
Бывает :)
1) что запиасано в depth_texture; - gl_FragCoord.z ??
2) texel_clipplane.zw - что за расстояния такие до плоскостей? - near far ? то что в перспективе было установлено
в момент генерации depth_texture ??
3) texture2D можно по идее переделать в рект.. тогда бужет не 1.0 / texture_size - а w / texsize
4) что еще почтиать про это и где посмотреть?
Тема в архиве.