Como Andrew señala, el acceso uso de este dispositivo es lógicamente una etapa separada del fragment shader, por lo que la lectura del uso de este dispositivo en el fragment shader es imposible. La razón de esto (para responder la pregunta de Andrew) es una combinación de rendimiento y los requisitos de pedido de la canalización de gráficos. La forma en que se define la canalización de renderizado, las operaciones de mezcla de framebuffer DEBEN ocurrir en el mismo orden que los triángulos/primitivos que entraron al principio de la canalización. Los sombreadores de fragmentos, por otro lado, pueden suceder en cualquier orden. Por lo tanto, al hacer que sean etapas separadas, la GPU puede ejecutar sombreadores de fragmentos lo más rápido que pueda, a medida que sus entradas estén disponibles, sin tener que sincronizar entre ellos. Siempre que mantenga suficiente espacio de bufffer para aferrarse a las salidas de los sombreadores de fragmentos, de modo que puedan acumularse y permitir que las mezclas de framebuffer y escrituras ocurran en orden, todo está bien, ya que los resultados de cualquier sombreador de fragmentos dado son no visible hasta después de la etapa de fusión.
Si hay una forma de que el sombreador de fragmentos lea el framebuffer, se requerirá algún tipo de sincronización para garantizar que esas lecturas suceden en orden, lo que ralentiza considerablemente las cosas.