132001f49Smrg#version 120 232001f49Smrgconst int KernelSize = 16; 332001f49Smrguniform float KernelValue1f[KernelSize]; 432001f49Smrg 532001f49Smrg 632001f49Smrgfloat add_two(float a, float b) 732001f49Smrg{ 832001f49Smrg if (a > b) 932001f49Smrg return a - b; 1032001f49Smrg else 1132001f49Smrg return a + b; 1232001f49Smrg} 1332001f49Smrg 1432001f49Smrgvec4 myfunc(vec4 x, vec4 mult, vec4 c) 1532001f49Smrg{ 1632001f49Smrg if (x.x >= 0.5) { 1732001f49Smrg return mult * c; 1832001f49Smrg } else { 1932001f49Smrg return mult + c; 2032001f49Smrg } 2132001f49Smrg} 2232001f49Smrg 2332001f49Smrgvec4 func2(vec4 x) 2432001f49Smrg{ 2532001f49Smrg int i; 2632001f49Smrg vec4 color = vec4(0); 2732001f49Smrg for (i = 0; i < KernelSize; ++i) { 2832001f49Smrg vec4 tmp = vec4(1./KernelSize); 2932001f49Smrg color += myfunc(x, tmp, gl_Color); 3032001f49Smrg } 3132001f49Smrg return x * color; 3232001f49Smrg} 3332001f49Smrg 3432001f49Smrgvec4 func(vec4 x) 3532001f49Smrg{ 3632001f49Smrg int i; 3732001f49Smrg vec4 tmp = gl_Color; 3832001f49Smrg vec4 sum = x; 3932001f49Smrg 4032001f49Smrg for (i = 0; i < KernelSize; ++i) { 4132001f49Smrg sum = vec4( add_two(sum.x, KernelValue1f[i]) ); 4232001f49Smrg } 4332001f49Smrg sum = func2(sum); 4432001f49Smrg return sum; 4532001f49Smrg} 4632001f49Smrg 4732001f49Smrgvoid main(void) 4832001f49Smrg{ 4932001f49Smrg vec4 sum = vec4(0.0); 5032001f49Smrg 5132001f49Smrg sum = func(sum); 5232001f49Smrg gl_Position = gl_Vertex; 5332001f49Smrg gl_FrontColor = sum; 5432001f49Smrg} 55