ISF - Color - Gamma Correction


/*{
	"CREDIT": "zoidberg",
	"ISFVSN": "2",
	"CATEGORIES": [
		"Color Adjustment"
	],
	"INPUTS": [
		{
			"NAME": "inputImage",
			"TYPE": "image"
		},
		{
			"NAME": "gamma",
			"TYPE": "float",
			"MIN": 0,
			"MAX": 1,
			"DEFAULT": 0.5
		}
	]
}*/



void main() {
	//	the input gamma range is 0.0-1.0 (normalized).  the actual gamma range i want to use is 0.0 - 5.0.
	//	however, actual gamma 0.0-1.0 is just as interesting as actual gamma 1.0-5.0, so we scale the normalized input to match...
	float		realGamma = (gamma<=0.5) ? (gamma * 2.0) : (((gamma-0.5) * 2.0 * 4.0) + 1.0);
	vec4		tmpColorA = IMG_THIS_PIXEL(inputImage);
	vec4		tmpColorB;
	tmpColorB.rgb = pow(tmpColorA.rgb, vec3(1.0/realGamma));
	tmpColorB.a = tmpColorA.a;
	gl_FragColor = tmpColorB;
}