From fbd33b6f3211150cdb14da4afc37f99668a44a14 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Sat, 14 Mar 2015 20:38:11 +0000 Subject: Gem osx/i386 built '' for osx/i386 --- Gem/examples/10.glsl/bicubic_interpolation.frag | 90 +++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 Gem/examples/10.glsl/bicubic_interpolation.frag (limited to 'Gem/examples/10.glsl/bicubic_interpolation.frag') diff --git a/Gem/examples/10.glsl/bicubic_interpolation.frag b/Gem/examples/10.glsl/bicubic_interpolation.frag new file mode 100644 index 0000000..9482bc6 --- /dev/null +++ b/Gem/examples/10.glsl/bicubic_interpolation.frag @@ -0,0 +1,90 @@ +// 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; +} -- cgit v1.2.1