Я пытаюсь добиться размытия gaussian, используя пост-обработку. У меня два прохода визуализации; Первый проход отображает сцену, а второй - для эффекта.HLSL: Gaussian Blur Effect
Это мой пиксельный шейдер код:
const float offset[] = {
0.0, 1.0, 2.0, 3.0, 4.0
};
const float weight[] = {
0.2270270270, 0.1945945946, 0.1216216216,
0.0540540541, 0.0162162162
};
ppColour = SceneTexture.Sample(PointSample, ppIn.UV) * weight[0];
float3 FragmentColor = float3(0.0f, 0.0f, 0.0f);
for (int i = 1; i < 5; i++) {
// Horizontal-pass
FragmentColor +=
SceneTexture.Sample(PointSample, ppIn.UV + float2(0.0f, offset[i]))*weight[i] +
SceneTexture.Sample(PointSample, ppIn.UV - float2(0.0f, offset[i]))*weight[i];
// Vertical-pass
FragmentColor +=
SceneTexture.Sample(PointSample, ppIn.UV + float2(offset[i], 0.0f))*weight[i] +
SceneTexture.Sample(PointSample, ppIn.UV - float2(offset[i], 0.0f))*weight[i];
}
ppColour += FragmentColor;
return (ppColour,1.0);
Я получаю строку-й вид, как показано:
Что я делаю неправильно?
вы имеете в виду I нужен третий проход? –
Как я понимаю, автор предоставленной статьи показывает некоторые подходы к оптимизации производительности. Но это не классическое гауссовское размытие, просто аналогичный результат после нескольких проходов. –