GLSL: gl_FragCoord Fragen

Ich bin das Experimentieren mit GLSL für OpenGL ES 2.0. Ich habe einen quad und eine textur, die ich bin-rendering. Ich kann erfolgreich zu tun es auf diese Weise:

//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 weit So gut. Allerdings würde ich gerne ein paar pixel-basierte Filterung, z.B. Median. Also, ich möchte arbeiten in pixel-Koordinaten, anstatt in normalisierter (tc0) und dann konvertieren Sie das Ergebnis wieder normalisiert coords. Daher würde ich gerne gl_FragCoord anstelle eines uv-Attribut (tc0). Aber ich weiß nicht, wie man wieder zu normalisierten Koordinaten, denn ich weiß nicht, die Palette der gl_FragCoords. Irgendeine Idee, wie ich diesen bekommen könnte? Ich habe, so weit mit einem festen Wert für die "Normalisierung", allerdings funktioniert es nicht perfekt, wie es ist, verursacht Dehnung und Fliesen (aber mindestens ist, etwas zu zeigen):

//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));
}

Also, die einfache Frage, was sollte ich an der Stelle von vec2(256, 256) so, ich könnte das gleiche Ergebnis erhalten, als wenn ich über den uv-coords.

Dank!

Schreibe einen Kommentar