Bent normals only
Since “Bent Normals and Cones in Screen-space”, it’s common to store the average unoccluded direction for light evaluation or pre-convoluted cubemap lookups. This creates colored shadows and cubemap lookups around edges, but did not help us to improve the overall image quality significantly, which might correlate with the fact that we use a comparably low amount of pointlights in the scene who could benefit from bent normals.
Subtracted Cubemap occlusion
We extended the technique by introducing a second cubemap lookup, which should subtract the occluded influence. We approximate the angle with
Alpha = PI * (num_occluded_samples) / (num_samples)
The final diffuse component is therefore calculated as:
Ibl_spec = specular_lookup(PI, WS_normal) – specular_lookup(Alpha, average_occluded_WS_direction)
This leads to a great improvement compared by a single bent cube lookup or even simple “darkening” ambient occlusion. Notice that occluders, which do not occlude areas that emit light do not have a darkening impact on the fragment. This leads to a great soft shadow-like shape in the surrounding of the pillar in the first picture, because almost no light comes from the left side of the image.