36 const float4 clamped_x =
clamp(coords.even, 0.0f - border_size, width - 1 + border_size);
37 const float4 clamped_y =
clamp(coords.odd, 0.0f - border_size, height - 1 + border_size);
38 return (float8)(clamped_x.s0, clamped_y.s0, clamped_x.s1, clamped_y.s1, clamped_x.s2, clamped_y.s2, clamped_x.s3, clamped_y.s3);
49 inline const float8
clamp_to_border(float8 coords,
const float width,
const float height)
70 return (float2)(get_global_id(0) * 4, get_global_id(1));
84 return (float8)( coord.s0, coord.s1, coord.s0 + 1, coord.s1, coord.s0, coord.s1 + 1, coord.s0 + 1, coord.s1 + 1);
100 const float8 fc = floor(coords);
101 const float16 c1 = (float16)(
104 const float16 c2 = (float16)(
109 const float16
t = (float16)(
119 const float8 a = coords - fc;
120 const float8
b = ((float8)(1.f)) - a;
121 const float4 fr = (float4)(
122 ((t.s0 * b.s0 * b.s1) + (t.s1 * a.s0 * b.s1) + (t.s2 * b.s0 * a.s1) + (t.s3 * a.s0 * a.s1)),
123 ((t.s4 * b.s2 * b.s3) + (t.s5 * a.s2 * b.s3) + (t.s6 * b.s2 * a.s3) + (t.s7 * a.s2 * a.s3)),
124 ((t.s8 * b.s4 * b.s5) + (t.s9 * a.s4 * b.s5) + (t.sa * b.s4 * a.s5) + (t.sb * a.s4 * a.s5)),
125 ((t.sc * b.s6 * b.s7) + (t.sd * a.s6 * b.s7) + (t.se * b.s6 * a.s7) + (t.sf * a.s6 * a.s7)));
__global uchar * offset(const Image *img, int x, int y)
Get the pointer position of a Image.
const float8 clamp_to_border(float8 coords, const float width, const float height)
Clamps the given coordinates to the borders.
const DATA_TYPE4 bilinear_interpolate_with_border(const Image *in, const float8 coords, const float width, const float height, const float border_size)
Computes the bilinear interpolation for each set of coordinates in the vector coords and returns the ...
DataType clamp(const DataType &n, const DataType &lower=std::numeric_limits< RangeType >::lowest(), const DataType &upper=std::numeric_limits< RangeType >::max())
Performs clamping among a lower and upper value.
const float8 get_neighbour_coords(const float2 coord)
Given a texel coordinates this function will return the following array of coordinates: [ P...
Structure to hold Image information.
const DATA_TYPE4 read_texels4(const Image *in, const int8 coords)
Reads four texels from the input image.
const float8 clamp_to_border_with_size(float8 coords, const float width, const float height, const float border_size)
Clamps the given coordinates to the borders according to the border size.
const float2 get_current_coords()
Returns the current thread coordinates.
const DATA_TYPE4 bilinear_interpolate(const Image *in, const float8 coords, const float width, const float height)
Computes the bilinear interpolation for each set of coordinates in the vector coords and returns the ...
#define VEC_DATA_TYPE(type, size)