En mi fragmento shader puedo cargar una textura, y luego hacer esto:¿Cómo obtener información de píxeles dentro de un sombreador de fragmentos?
uniform sampler2D tex;
void main(void) {
vec4 color = texture2D(tex, gl_TexCoord[0].st);
gl_FragColor = color;
}
que establece el píxel actual con el valor del color de la textura. Puedo modificar estos, etc. y funciona bien.
Pero algunas preguntas. ¿Cómo le digo a "qué" píxel soy? Por ejemplo, supongamos que quiero establecer el píxel 100,100 (x, y) en rojo. Todo lo demás a negro. ¿Cómo hago un:
"if currentSelf.Position() == (100,100); then color = red; else color = black?"
?
Sé cómo configurar los colores, pero ¿cómo obtengo "mi" ubicación?
En segundo lugar, ¿cómo obtengo los valores de un píxel vecino?
yo probamos este:
vec4 nextColor = texture2D(tex, gl_TexCoord[1].st);
Pero no está claro qué se está volviendo? si soy pixel 100,100; ¿cómo obtengo los valores de 101,100 o 100,101?
me adelantó; todo lo que tenía que decir que difiere, incluso ligeramente, de este fue el enlace http://www.opengl.org/sdk/docs/manglsl/xhtml/gl_FragCoord.xml que entra un poco más en detalle sobre 'gl_FragCoord' y la recomendación de un procesamiento intermedio para texturar si realmente quiere calcular fragmentos de salida basados en la combinación de múltiples píxeles vecinos en lo que de otro modo sería el buffer de salida. – Tommy
Básicamente lo que quiero hacer es si el pixel x, y tiene vecinos con rojo en ellos, para aumentar el rojo en x, y. ¿Hay algún tutorial que explique cómo hacer esto? – user697111
@ user697111: Desea implementar un filtro de "dilatación" que trabaje en el canal rojo de una textura. Google esas palabras clave y debe encontrar mucho. – datenwolf