Я реализовал шейдер фрагментов размытия по Гауссу в GLSL. Я понимаю основные концепции, лежащие в основе всего этого: свертка, разделение x и y с использованием линейности, несколько проходов для увеличения радиуса ...
Однако у меня все еще есть несколько вопросов:
Какая связь между сигмой и радиусом?
Я читал, что сигма эквивалентна радиусу, я не понимаю, как сигма выражается в пикселях. Или «радиус» - это просто название сигмы, не связанной с пикселями?
Как выбрать сигму?
Учитывая, что я использую несколько проходов для увеличения сигмы, как мне выбрать хорошую сигму, чтобы получить желаемую сигму на любом данном проходе? Если полученная сигма равна квадратному корню из суммы квадратов сигмы, а сигма эквивалентна радиусу, каков простой способ получить любой желаемый радиус?
Какой размер подходит для ядра и как он соотносится с сигмой?
Я видел, как в большинстве реализаций используется ядро 5x5. Вероятно, это хороший выбор для быстрой реализации с приличным качеством, но есть ли еще одна причина выбрать другой размер ядра? Как сигма соотносится с размером ядра? Должен ли я найти лучшую сигму, чтобы коэффициенты вне моего ядра были незначительны и просто нормализовались?