1#version 120 2const int KernelSize = 16; 3uniform float KernelValue1f[KernelSize]; 4 5 6float add_two(float a, float b) 7{ 8 if (a > b) 9 return a - b; 10 else 11 return a + b; 12} 13 14vec4 myfunc(vec4 x, vec4 mult, vec4 c) 15{ 16 if (x.x >= 0.5) { 17 return mult * c; 18 } else { 19 return mult + c; 20 } 21} 22 23vec4 func2(vec4 x) 24{ 25 int i; 26 vec4 color = vec4(0); 27 for (i = 0; i < KernelSize; ++i) { 28 vec4 tmp = vec4(1./KernelSize); 29 color += myfunc(x, tmp, gl_Color); 30 } 31 return x * color; 32} 33 34vec4 func(vec4 x) 35{ 36 int i; 37 vec4 tmp = gl_Color; 38 vec4 sum = x; 39 40 for (i = 0; i < KernelSize; ++i) { 41 sum = vec4( add_two(sum.x, KernelValue1f[i]) ); 42 } 43 sum = func2(sum); 44 return sum; 45} 46 47void main(void) 48{ 49 vec4 sum = vec4(0.0); 50 51 sum = func(sum); 52 gl_Position = gl_Vertex; 53 gl_FrontColor = sum; 54} 55