12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- __kernel void lamino_ramp_create_filter(
- __global float * flt,
- const unsigned int width,
- const unsigned int fwidth,
- const unsigned int height,
- const float theta,
- const float tau)
- {
- const int idx = get_global_id(0);
- const int idy = get_global_id(1);
- const int index = idy * width + idx;
- const float scale = (float)width/(float)height;
- flt[index] = 0;
- if( idy > 0 ) return;
- const float sin2 = -sin(theta) / 2.;
- const float const_pi_tau= M_PI_F * M_PI_F * tau;
- const uint quatw = fwidth / 2;
- if(idx == 0)
- {
- flt[idx] =scale* -sin2 / ( 4 * tau);
- return;
- }
- if( (idx <= quatw) && ( (idx%2) != 0))
- {
- flt[idx] = scale*sin2/((float)idx*(float)idx*const_pi_tau);
- return;
- }
- int x = width - idx;
- if( (idx >= (width - quatw)) && ( (x%2) != 0))
- {
- flt[idx] = scale*sin2/((float)x*(float)x*const_pi_tau);
- return;
- }
- }
|