contrast-curve.cl.h 2.64 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
static const char* contrast_curve_cl_source =
"/* This file is an image processing operation for GEGL                        \n"
" *                                                                            \n"
" * GEGL is free software; you can redistribute it and/or                      \n"
" * modify it under the terms of the GNU Lesser General Public                 \n"
" * License as published by the Free Software Foundation; either               \n"
" * version 3 of the License, or (at your option) any later version.           \n"
" *                                                                            \n"
" * GEGL is distributed in the hope that it will be useful,                    \n"
" * but WITHOUT ANY WARRANTY; without even the implied warranty of             \n"
" * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU          \n"
" * Lesser General Public License for more details.                            \n"
" *                                                                            \n"
" * You should have received a copy of the GNU Lesser General Public           \n"
" * License along with GEGL; if not, see <http://www.gnu.org/licenses/>.       \n"
" *                                                                            \n"
" * Copyright 2013 Carlos Zubieta <czubieta.dev@gmail.com>                     \n"
" */                                                                           \n"
"                                                                              \n"
"__kernel void cl_contrast_curve(__global const float2 *in,                    \n"
"                                __global       float2 *out,                   \n"
"                                __global       float  *curve,                 \n"
"                                               int     num_sampling_points)   \n"
"{                                                                             \n"
"  int gid     = get_global_id(0);                                             \n"
"  float2 in_v = in[gid];                                                      \n"
"                                                                              \n"
28 29
"  int idx = (int) fmin(num_sampling_points - 1.0f,                            \n"
"                       fmax(0.0f,                                             \n"
30
"                            in_v.x * num_sampling_points));                   \n"
31
"                                                                              \n"
32
"  out[gid] = (float2) (curve[idx], in_v.y);                                   \n"
33 34
"}                                                                             \n"
;