GLSL: gl_FragCoord questions

Je suis expérimenter avec GLSL pour OpenGL ES 2.0. J'ai un quad et une texture que je suis rendu. Je peux réussir à faire de cette façon:

//VERTEX SHADER
attribute highp vec4 vertex;
attribute mediump vec2 coord0;

uniform mediump mat4 worldViewProjection;

varying mediump vec2 tc0;

void main()
{
    //Transforming The Vertex
    gl_Position = worldViewProjection * vertex;

    //Passing The Texture Coordinate Of Texture Unit 0 To The Fragment Shader
    tc0 = vec2(coord0);
}

//FRAGMENT SHADER
varying mediump vec2 tc0;

uniform sampler2D my_color_texture;

void main()
{
    gl_FragColor = texture2D(my_color_texture, tc0);
}

So far So good. Cependant, j'aimerais faire quelques pixels en fonction de filtrage, par exemple, la Médiane. Donc, je voudrais travailler dans les coordonnées des pixels plutôt que dans normalisé (tc0) et ensuite de les convertir à nouveau le résultat normalisé coords. Donc, je voudrais utiliser gl_FragCoord au lieu d'une uv d'attribut (tc0). Mais je ne sais pas comment revenir à normalisées coords parce que je ne connais pas la gamme de gl_FragCoords. Une idée de comment je pourrais l'obtenir? J'ai de loin, à l'aide d'une valeur fixe pour la "normalisation", bien qu'il ne fonctionne pas parfaitement comme il est à l'origine de l'étirement et de carrelage (mais au moins c'est de montrer quelque chose):

//FRAGMENT SHADER
varying mediump vec2 tc0;

uniform sampler2D my_color_texture;

void main()
{
    gl_FragColor = texture2D(my_color_texture, vec2(gl_FragCoord) / vec2(256, 256));
}

Donc, le simple fait de la question est, que dois-je utiliser à la place de vec2(256, 256) afin que je puisse obtenir le même résultat que si j'ai été en utilisant les coordonnées uv.

Merci!

OriginalL'auteur Albus Dumbledore | 2011-02-28