Creative-Coding-with-DCTL / S-Curve Contrast.dctl
S-Curve Contrast.dctl
Raw
__DEVICE__ float apply_contrast(float in, float contrast, float pivot)

{
    
float out;


if (in <= pivot) {
    
out = _powf((in / pivot), contrast) * pivot;


}

else {
    
in = 1 - in;
pivot = 1 - pivot;

out = _powf((in / pivot), contrast) * pivot;

out = 1 - out;


}

return out;




}


DEFINE_UI_PARAMS(contrast, Contrast, DCTLUI_SLIDER_FLOAT, 1.0, 0.0, 2.0, 0.1)
DEFINE_UI_PARAMS(pivot, Pivot, DCTLUI_SLIDER_FLOAT, .435, 0.0, 1.0, 0.1)


__DEVICE__ float3 transform(int p_Width, int p_Height, int p_X, int p_Y, float p_R, float p_G, float p_B)
{
    
    float3 in = {p_R, p_G, p_B};
    float3 out;

    out.x = apply_contrast(in.x, contrast, pivot);
    out.y = apply_contrast(in.y, contrast, pivot);
    out.z = apply_contrast(in.z, contrast, pivot);

    return out;
}