¿Por qué una coordenada de textura de 1.0 va más allá del borde de la textura?

Estoy haciendo una búsqueda de color utilizando una textura para aplicar un efecto a una imagen. Mi búsqueda es un mapa de gradiente que utiliza la luminancia del fragmento de la primera textura, y luego la veo en una segunda textura. La segunda textura es de 256x256 con gradientes que van horizontalmente y varios gradientes diferentes de arriba a abajo. Así que 32 rayas horizontales cada 8 píxeles de altura. Mi búsqueda en la x es la luminancia, en la y es un degradado y apunto al centro de la banda para evitar el cruce.

Mi fragmento de sombreador se ve así:

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

Funciona bien, pero estaba distorsionando las partes más blancas de las blancas y la parte más negra de las negras. Básicamente, parecía que tomó NewColor de un lugar completamente diferente en texture2, o posiblemente no estaba obteniendo nada por esos fragmentos. Agregué las pinzas en el sombreador para evitar que salga del borde de la textura de búsqueda, pero eso no ayudó. ¿No estoy usando la pinza correctamente?

Finalmente, consideré que podría tener algo que ver con la textura de origen o la forma en que se carga. Terminé arreglandolo agregando:

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

¿Entonces por qué?

Es un poco molesto tener que sujetar las texturas porque significa que tengo que escribir una excepción en mi código cuando estoy cargando tablas de búsqueda ...

Si mis textPos.x y .y se fijan a 0-1 ... ¿cómo está tirando una muestra más allá del borde?

Además ... ¿tengo que usar la pinza de arriba para crear la textura o puedo llamarlo cuando estoy a punto de usar la textura?

Respuestas a la pregunta(1)

Su respuesta a la pregunta