Early-Z
GPU выполняет тест глубины до пиксельного шейдера, а не после, поэтому закрытые фрагменты отбрасываются, так и не запустив свой дорогой шейдер.
В классическом конвейере тест глубины идёт последним, после того как фрагментный шейдер уже вычислил цвет, — то есть за шейдер приходится платить, даже если фрагмент оказался за чем-то другим. Early-Z переносит тест перед шейдером везде, где оборудование может гарантировать тот же результат. GPU получили эту возможность примерно в 2001–2002 годах.
Подвох в том, что шейдер не должен записывать собственную глубину, использовать discard или альфа-тест: иначе глубина заранее неизвестна, и оборудование возвращается к позднему тесту. Поэтому движки сначала делают z-prepass, заполняя буфер глубины, чтобы early-Z отбросил как можно больше перерисовки в цветовом проходе.