Que es una limitación del hardware. El sombreador de fragmentos es parte de la canalización programable, pero la mezcla de color final con los búferes de destino no es programable en hardware ampliamente disponible / de productos básicos en este momento (es configurable a través de estados de mezcla, pero no puede escribir arbitrariamente código que reemplaza las operaciones de mezcla integradas de GPU).
La razón por la cual el hardware no está construido para esto probablemente tenga que ver con el hecho de que las GPU son masivamente paralelas; procesan muchos fragmentos a la vez. Algunos de esos fragmentos finalmente pueden interactuar entre sí dentro de los búferes de destino, pero debido a la naturaleza asincrónica del procesamiento de fragmentos, no es posible saber cómo hasta que el fragmento haya sido procesado y se haya emitido el color final ... lo que ganó No siempre sucede de manera determinista.
El hecho de que el píxel A esté detrás del píxel B en el cuadro final no significa que el píxel A siempre completará el procesamiento de fragmentos y se escribirá en el destino antes que B, especialmente en múltiples cuadros de renderizado. Por lo tanto, el valor leído del búfer de destino durante el procesamiento del píxel B no siempre será el píxel A, a veces serán los valores claros.
Por lo tanto, sospecho que rechazar las lecturas del búfer de destino directo durante la etapa de fragmentos tiene mucho más que ver con evitar que el programador del sombreador se dispare en el pie al obtener resultados potencialmente no deterministas de esa lectura que de cualquier limitación técnica real para hacer que la etapa de mezcla sea completa. programable. Al mantener las operaciones de lectura estrictamente controladas (la prueba de profundidad, por ejemplo), la GPU garantiza que las operaciones realizadas con el valor de lectura tengan algún tipo de sentido.
Dicho esto, también puede estar sucediendo algo de costo / beneficio. Hacer que ese aspecto de la canalización de GPU sea programable complicaría un poco el diseño del chip, y la necesidad / demanda de lecturas del búfer de destino ha sido relativamente baja en comparación con otras características.