// Copyright 2020 Google LLC Texture2D textureSSAO : register(t0); SamplerState samplerSSAO : register(s0); float4 main([[vk::location(0)]] float2 inUV : TEXCOORD0) : SV_TARGET { const int blurRange = 2; int n = 0; int2 texDim; textureSSAO.GetDimensions(texDim.x, texDim.y); float2 texelSize = 1.0 / (float2)texDim; float result = 0.0; for (int x = -blurRange; x <= blurRange; x++) { for (int y = -blurRange; y <= blurRange; y++) { float2 offset = float2(float(x), float(y)) * texelSize; result += textureSSAO.Sample(samplerSSAO, inUV + offset).r; n++; } } return result / (float(n)); }