25.5. Late Per-Fragment Tests

After programmable fragment processing, per-fragment operations are
performed before blending and color output to the framebuffer.

A fragment is produced by rasterization with framebuffer coordinates of
$(x_f,y_f)$
and depth
$z$
, as described in
Rasterization. The fragment is then modified by programmable
fragment processing, which adds associated data as described in
Shaders. The fragment is then further modified, and possibly
discarded by the late per-fragment operations described in this chapter.
Finally, if the fragment was not discarded, it is used to update the
framebuffer at the fragment’s framebuffer coordinates for any samples that
remain covered.

editing-note

There used to be a sentence of form "These operations are diagrammed in
figure fig-fragops, in the order in which they are
performed" following "described in this chapter." above, but the referred
figure doesn’t yet exist.

The depth bounds test, stencil test, and depth test are performed for each
pixel sample, rather than just once for each fragment. Stencil and depth
operations are performed for a pixel sample only if that sample’s fragment
coverage bit is a value of 1 when the fragment executes the corresponding
stage of the graphics pipeline. If the corresponding coverage bit is 0, no
operations are performed for that sample. Failure of the depth bounds,
stencil, or depth test results in termination of the processing of that
sample by means of disabling coverage for that sample, rather than
discarding of the fragment. If, at any point, a fragment’s coverage becomes
zero for all samples, then the fragment is discarded. All operations are
performed on the depth and stencil values stored in the depth/stencil
attachment of the framebuffer. The contents of the color attachments are not
modified at this point.