diff options
Diffstat (limited to 'apps/openmb/resources/shaders/ssao_blur.frag')
| -rw-r--r-- | apps/openmb/resources/shaders/ssao_blur.frag | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/apps/openmb/resources/shaders/ssao_blur.frag b/apps/openmb/resources/shaders/ssao_blur.frag new file mode 100644 index 0000000..e093eff --- /dev/null +++ b/apps/openmb/resources/shaders/ssao_blur.frag @@ -0,0 +1,45 @@ +#version 330 core +in vec2 vUV; +out float FragColor; + +uniform sampler2D ssaoInput; +uniform vec2 texelSize; +uniform int horizontal; + + +const float w0 = 0.2270270270; +const float w1 = 0.1945945946; +const float w2 = 0.1216216216; +const float w3 = 0.0540540541; +const float w4 = 0.0162162162; + +void main() +{ + float result = 0.0; + if (horizontal == 1) + { + result += texture(ssaoInput, vUV).r * w0; + result += texture(ssaoInput, vUV + vec2(texelSize.x, 0.0)).r * w1; + result += texture(ssaoInput, vUV - vec2(texelSize.x, 0.0)).r * w1; + result += texture(ssaoInput, vUV + vec2(2.0 * texelSize.x, 0.0)).r * w2; + result += texture(ssaoInput, vUV - vec2(2.0 * texelSize.x, 0.0)).r * w2; + result += texture(ssaoInput, vUV + vec2(3.0 * texelSize.x, 0.0)).r * w3; + result += texture(ssaoInput, vUV - vec2(3.0 * texelSize.x, 0.0)).r * w3; + result += texture(ssaoInput, vUV + vec2(4.0 * texelSize.x, 0.0)).r * w4; + result += texture(ssaoInput, vUV - vec2(4.0 * texelSize.x, 0.0)).r * w4; + } + else + { + result += texture(ssaoInput, vUV).r * w0; + result += texture(ssaoInput, vUV + vec2(0.0, texelSize.y)).r * w1; + result += texture(ssaoInput, vUV - vec2(0.0, texelSize.y)).r * w1; + result += texture(ssaoInput, vUV + vec2(0.0, 2.0 * texelSize.y)).r * w2; + result += texture(ssaoInput, vUV - vec2(0.0, 2.0 * texelSize.y)).r * w2; + result += texture(ssaoInput, vUV + vec2(0.0, 3.0 * texelSize.y)).r * w3; + result += texture(ssaoInput, vUV - vec2(0.0, 3.0 * texelSize.y)).r * w3; + result += texture(ssaoInput, vUV + vec2(0.0, 4.0 * texelSize.y)).r * w4; + result += texture(ssaoInput, vUV - vec2(0.0, 4.0 * texelSize.y)).r * w4; + } + + FragColor = result; +} |