Warum ragt eine Texturkoordinate von 1,0 über den Rand der Textur hinaus?

Ich mache eine Farbsuche mit einer Textur, um einen Effekt auf ein Bild anzuwenden. Meine Suche ist eine Verlaufskarte, die die Luminanz des Fragments der ersten Textur verwendet und diese dann auf einer zweiten Textur nachschlägt. Die zweite Textur ist 256x256 mit horizontalen Verläufen und mehreren unterschiedlichen Verläufen von oben nach unten. Also 32 Querstreifen à 8 Pixel hoch. Mein Blick auf das x ist die Luminanz, auf das y ist es ein Farbverlauf und ich ziele auf die Mitte des Streifens, um ein Überkreuzen zu vermeiden.

Mein Fragment Shader sieht so aus:

 lowp vec4 source = texture2D(u_textureSampler, v_fragmentTexCoord0);
 float luminance = 1.0 - dot(source.rgb, W);
 lowp vec2 texPos;
 texPos.x = clamp(luminance, 0.0, 1.0);
 // the y value selects which gradient to use by supplying a T value
 // this would be more efficient in the vertex shader
 texPos.y = clamp(u_value4, 0.0, 1.0);

 lowp vec4 newColor1 = texture2D(u_textureSampler2, texPos);

Es funktioniert gut, aber ich bekam Verzerrungen in den weißesten Teilen der Weißen und im schwärzesten Teil der Schwarzen. Im Grunde sah es so aus, als hätte es newColor von einer ganz anderen Stelle auf texture2 geholt, oder vielleicht bekam es nur nichts für diese Fragmente. Ich habe die Klemmen in den Shader eingefügt, um zu verhindern, dass er aus der Lookup-Textur herauskommt, aber das hat nicht geholfen. Benutze ich die Klemme nicht richtig?

Schließlich dachte ich, dass es etwas mit meiner Quelltextur oder der Art des Ladens zu tun haben könnte. Am Ende habe ich Folgendes hinzugefügt:

    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);

Warum also?

Es ist ein wenig ärgerlich, die Texturen klemmen zu müssen, da dies bedeutet, dass ich eine Ausnahme in meinen Code schreiben muss, wenn ich Nachschlagetabellen lade.

Wenn meine textPos.x und .y auf 0-1 geklemmt sind, wie zieht es ein Sample über den Rand hinaus?

Auch .. muss ich den obigen Clamp-Aufruf verwenden, um die Textur zu erstellen, oder kann ich ihn aufrufen, wenn ich dabei bin, die Textur zu verwenden?