- merge v0.01 --> Añadido fileselector - Añadidas fuentes de Gem y Pure Data - pix2jpg incluído en Gem. Archivos de construcción de Gem modificados. - Añadido fichero ompiling.txt con instrucciones de compilación
90 lines
3.2 KiB
GLSL
90 lines
3.2 KiB
GLSL
// Cyrille Henry 2007
|
|
|
|
#extension GL_ARB_texture_rectangle : enable
|
|
uniform sampler2DRect texture;
|
|
|
|
void main (void)
|
|
{
|
|
vec2 coordinate = (gl_TextureMatrix[0] * gl_TexCoord[0]).st-vec2(0.5,0.5);
|
|
|
|
vec2 coord = floor(coordinate)+vec2(0.5,0.5);
|
|
vec2 interpol = fract(coordinate);
|
|
vec2 interpol2 = interpol * interpol;
|
|
vec2 interpol3 = interpol2 * interpol;
|
|
|
|
vec4 C00 = texture2DRect(texture, coord + vec2(-1,-1) );
|
|
vec4 C10 = texture2DRect(texture, coord + vec2( 0,-1) );
|
|
vec4 C20 = texture2DRect(texture, coord + vec2( 1,-1) );
|
|
vec4 C30 = texture2DRect(texture, coord + vec2( 2,-1) );
|
|
vec4 C01 = texture2DRect(texture, coord + vec2(-1, 0) );
|
|
vec4 C11 = texture2DRect(texture, coord );
|
|
vec4 C21 = texture2DRect(texture, coord + vec2( 1, 0) );
|
|
vec4 C31 = texture2DRect(texture, coord + vec2( 2, 0) );
|
|
vec4 C02 = texture2DRect(texture, coord + vec2(-1, 1) );
|
|
vec4 C12 = texture2DRect(texture, coord + vec2( 0, 1) );
|
|
vec4 C22 = texture2DRect(texture, coord + vec2( 1, 1) );
|
|
vec4 C32 = texture2DRect(texture, coord + vec2( 2, 1) );
|
|
vec4 C03 = texture2DRect(texture, coord + vec2(-1, 2) );
|
|
vec4 C13 = texture2DRect(texture, coord + vec2( 0, 2) );
|
|
vec4 C23 = texture2DRect(texture, coord + vec2( 1, 2) );
|
|
vec4 C33 = texture2DRect(texture, coord + vec2( 2, 2) );
|
|
|
|
vec4 w0 = C11;
|
|
vec4 w1 = C21;
|
|
vec4 w2 = C12;
|
|
vec4 w3 = C22;
|
|
// x derivative
|
|
vec4 x0 = (C21 - C01) / 2.;
|
|
vec4 x1 = (C31 - C11) / 2.;
|
|
vec4 x2 = (C22 - C02) / 2.;
|
|
vec4 x3 = (C32 - C12) / 2.;
|
|
// y derivative
|
|
vec4 y0 = (C12 - C10) / 2.;
|
|
vec4 y1 = (C22 - C20) / 2.;
|
|
vec4 y2 = (C13 - C11) / 2.;
|
|
vec4 y3 = (C23 - C21) / 2.;
|
|
// xy derivative
|
|
vec4 z0 = (C22 - C00) / 2.;
|
|
vec4 z1 = (C32 - C10) / 2.;
|
|
vec4 z2 = (C23 - C01) / 2.;
|
|
vec4 z3 = (C33 - C11) / 2.;
|
|
|
|
|
|
|
|
vec4 a00 = w0;
|
|
vec4 a01 = y0;
|
|
vec4 a02 = -3.*w0 + 3.*w2 -2.*y0 - y2;
|
|
vec4 a03 = 2.*w0 - 2.*w2 + y0 + y2;
|
|
vec4 a10 = x0;
|
|
vec4 a11 = z0;
|
|
vec4 a12 = -3.*x0 + 3.*x2 - 2.*z0 - z2;
|
|
vec4 a13 = 2.*x0 - 2.*x2 + z0 + z2;
|
|
vec4 a20 = -3.*w0 + 3.*w1 - 2.*x0 - x1;
|
|
vec4 a21 = -3.*y0 + 3.*y1 - 2.*z0 - z1;
|
|
vec4 a22 = 9.*w0 - 9.*w1 - 9.*w2 + 9.*w3 + 6.*x0 + 3.*x1 + -6.*x2 - 3.*x3 + 6.*y0 - 6.*y1 + 3.*y2 - 3.*y3 + 4.*z0 + 2.*z1 + 2.*z2 + z3;
|
|
vec4 a23 = -6.*w0 + 6.*w1 + 6.*w2 - 6.*w3 -4.*x0 - 2.*x1 + 4.*x2 + 2.*x3 -3.*y0 + 3.*y1 - 3.*y2 + 3.*y3 + -2.*z0 - z1 - 2.*z2 - z3;
|
|
vec4 a30 = 2.*w0 - 2.*w1 + x0 + x1;
|
|
vec4 a31 = 2.*y0 - 2.*y1 + z0 + z1;
|
|
vec4 a32 = -6.*w0 + 6.*w1 + 6.*w2 -6.*w3 -3.*x0 - 3.*x1 + 3.*x2 + 3.*x3 -4.*y0 + 4.*y1 - 2.*y2 + 2.*y3 + -2.*z0 - 2.*z1 - z2 - z3;
|
|
vec4 a33 = 4.*w0 - 4.*w1 - 4.*w2 + 4.*w3 + 2.*x0 + 2.*x1 + -2.*x2 - 2.*x3 + 2.*y0 - 2.*y1 + 2.*y2 - 2.*y3 + z0 + z1 + z2 + z3;
|
|
|
|
|
|
vec4 color = a00;
|
|
color += a01 * interpol.y;
|
|
color += a02 * interpol2.y;
|
|
color += a03 * interpol3.y;
|
|
color += a10 * interpol.x;
|
|
color += a11 * interpol.x * interpol.y;
|
|
color += a12 * interpol.x * interpol2.y;
|
|
color += a13 * interpol.x * interpol3.y;
|
|
color += a20 * interpol2.x;
|
|
color += a21 * interpol2.x * interpol.y;
|
|
color += a22 * interpol2.x * interpol2.y;
|
|
color += a23 * interpol2.x * interpol3.y;
|
|
color += a30 * interpol3.x;
|
|
color += a31 * interpol3.x * interpol.y;
|
|
color += a32 * interpol3.x * interpol2.y;
|
|
color += a33 * interpol3.x * interpol3.y;
|
|
|
|
gl_FragColor = color;
|
|
}
|