ReadonlynameHuman-readable identifier used in graph node labels and error messages.
Staticcreateradius — world-space sampling radius.
bias — thickness bias; samples farther than radius*(1 + bias*10)
from the surface don't lower the horizon (avoids haunting
from background geometry).
strength — exponent applied to visibility (higher -> more contrast).
Insert the pass into graph for one frame. Implementations call
graph.addPass(name, type, b => { ... }) exactly once and use the
supplied PassBuilder to declare reads, writes, transient
resources, and the execute callback.
Graph being built this frame.
Pass-specific dependency record (handles, scene data, etc.).
Pass-specific output record (typically a set of handles downstream passes will consume).
Release every long-lived GPU resource owned by the pass (pipelines, persistent uniform buffers, samplers, BGLs). Called by the factory or application during teardown. Default implementation is a no-op.
Ground Truth Ambient Occlusion (Jiménez et al., GDC 2016).
Slice-based horizon integration with projected-normal correction. For each slice through the view direction:
nrelative to the view direction.[n - π/2, n + π/2].(sin(h_pos − n) − sin(h_neg − n)) / 2, weighted by the projected normal length.The result is averaged across slices and raised to the
strengthexponent to control contrast. Output goes through the same separable bilateral / box-blur pipelines as SSAO so consumers see an interchangeable AO factor.Compared to classic hemisphere SSAO: smoother falloff, no light-bleed haloing at silhouettes, and a more physically meaningful AO term — at the cost of more arithmetic per pixel (the analytical integral, projected normal math, atan2 per slice).