Как отмечает Эндрю, доступ к кадровому буферу логически является отдельным этапом от фрагментного шейдера, поэтому чтение кадрового буфера в фрагментном шейдере невозможно. Причиной этого (чтобы ответить на вопрос Эндрю) является сочетание производительности и требований к оформлению графического конвейера. При определении конвейера рендеринга операции смешивания кадрового буфера ДОЛЖНЫ выполняться в том же порядке, что и треугольники / примитивы, которые вошли в начало конвейера. Фрагментные шейдеры, с другой стороны, могут происходить в любом порядке. Таким образом, имея отдельные этапы, графический процессор может запускать фрагментные шейдеры настолько быстро, насколько это возможно, когда их входные данные становятся доступными, без необходимости синхронизации между ними. Пока он поддерживает достаточно места в буфере для хранения на выходах фрагментных шейдеров, так что они могут накапливаться и позволять смешивать и записывать кадровый буфер по порядку, все хорошо, так как результаты любого данного фрагментного шейдера не виден до окончания стадии смешивания.
Если бы у фрагментного шейдера был способ прочитать буфер кадров, ему потребовалась бы какая-то синхронизация, чтобы гарантировать, что эти чтения выполняются по порядку, что значительно замедляет процесс.