This page is created automatically. Click here to view this shader on Shadertoy.

Sometimes you need to calculate the weights of a Gaussian blur kernel yourself. For example if you want to calculate weights for a kernel where the center of the Gaussian curve is not exactly in the "center of the kernel" but has a sub-pixel offset. These "shifted" Gaussian kernels can be used if you want to blur-and-upscale an image in a single pass, e.g. if you are adding a low-res raytraced reflection buffer to your high-res rasterized scene. It is also needed for the fake ambient occlusion (AO) term as used in this shader.

The Gaussian weights for a blur kernel can be calculated, either by numerical integration, or by directly calculating the value of the Gauss error funtion, as shown below.

In this shader I calculate a fake ambient occlusion (AO) term for each sample point. The AO-term is based on the weighted average of fake AO-terms for all cells in a 7x7 grid around the sample point, corresponding with a 7x7 Gaussian kernel with the sample point as its center. The AO-term for a single cell in this weighted average is simply given by the difference in height of the cell and that of the sample point.

## Source code

You can find (the full source of) Gaussian Weights and Fake AO on Shadertoy.