__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; } }