#ifndef SHARP_COORD
#define SHARP_COORD

// wrap texture coordinate when sampling

#pragma parameter ia_SHARPEN "Sharpen" 0.0 0.0 1.0 0.05

const vec2 offset = vec2(0.5, 0.5);

// based on "Improved texture interpolation" by Iñigo Quílez
// Original description: http://www.iquilezles.org/www/articles/texture/texture.htm
vec2 sharp(vec2 in_coord, vec4 tex_size){
	vec2 p = in_coord.xy;
	p = p * tex_size.xy + offset;
	vec2 i = floor(p);
	vec2 f = p - i;
	f = f * f * f * (f * (f * 6.0 - vec2(15.0, 15.0)) + vec2(10.0, 10.0));
	p = i + f;
	p = (p - offset) * tex_size.zw;
	p = mix(in_coord, p, ia_SHARPEN);
	return p;
}

#endif