Qué contiene gl_FragCoord?

En GLSL, en concreto en la etapa de procesamiento de fragmentos, gl_FragCoord es una variable de entrada que contiene los valores de las coordenadas relativas de ventana (x, y, z, 1/w) del fragmento en cuestión. En esta publicación se explica detalladamente cuál es su contenido y cómo se calculan las coordenadas de un píxel en coordenadas normalizadas de dispositivo (NDC).
Continuar leyendo

Reconstrucción de la posición de un pixel

En algunas ocasiones podemos necesitar conocer la posición de un pixel en espacio de cámara desde un fragment program. Esto normalmente es necesario en operaciones de postproceso, donde típicamente (después de pintar toda la escena en un FBO (frame buffer object) en un primer paso), en un segundo paso se envía a pintar un quad que cubre todo el area de la pantalla, texturado con la información de la escena (normales, profundidad, material, etc) y ejecutando un fragment program específico (que se encarga de los cálculos de postproceso).

Entonces, durante este postproceso, cada fragmento de este quad se corresponde con una pequeña porción de superficie en la escena pintada anteriormente, aunque en este momento sólo conocemos su posición dentro del quad pintado.

La pregunta es: ¿Cuál era su posición dentro de la escena original en espacio de cámara?
Continuar leyendo