Writing custom LUTs for FrameCycler is kindergarten easy!

loocas | miscellaneous,software,technical | Wednesday, January 13th, 2010

FrameCycler custom sRGB LUT

That’s right! I needed to convert a fairly complex, proprietary, LUT for preview purposes to one of the IRIDAS’ formats. I chose .ilut, since it’s a really simple, yet, extremely powerful format!

Let’s take a look at the syntax first. On the online documentation IRIDAS site, you’ll see all the different LUT formats FrameCycler supports, as well as the syntax for those files. The .ilut format is pretty flexible. It supports either an XML (ASCII) syntax, or an inrerpretable script format. For my complex LUT I used the XML format. The LUT wouldn’t be of much use to you as it’s used on a specific machine with a specific graphics card, specifically calibrated display and generally a different color workflow than the rest of the machines at the studio. But, to demonstrate the usefulness of this LUT file format, I’ll show you my sRGB LUT I created a while ago using the interpretable script syntax for previewing linear images (OpenEXR for example).

But first, let’s take a look at the math behind the sRGB gamma curve. Basically, the sRGB standard specifies that whenever the input value is less or equal to 0.00304, the output value will equal to the input value multiplied by 12.92. In all other cases, the output value will utilise a slightly more complex formula, a 1.055 times the input value on the power of 0.416 (it’s a periodical float value, thus it’s being expressed as a fraction 1.0/2.4) subtracting the value of 0.055. Quite simple.

Here’s the expression in IRIDAS’ .ilut compatible format:

<IRIDAScript>

//sRGB LUT script

out = 0;

if (in <= 0.00304)
{
	out = in*12.92;
}
else
	out = (1.055 * pow(in, (1.0/2.4)) - 0.055);

red = out;
green = out;
blue = out;

</IRIDAScript>

As the documentation suggests, all the user variables should be pre-defined prior to being used. The out variable is my own variable that holds the output. The in variable is, I assume, a built in variable that holds the input value. The formula is simlpe, as explained above. Here’s the same formula written in Python, for those who struggle with the .ilut syntax (even though I consider it trivial):

output = 0.
input = .5 # in reality this will go through the whole interval of <0.0, 1.0>

def sRGB(input):
	if input <= .00304:
		output = input * 12.92
	else:
		output = 1.055 * pow(input, (1.0/2.4)) - 0.055

	return output

output = sRGB(input)

All you need is simply to save the .ilut script above to a file with the .ilut extension, save it in the LUTs folder within the FrameCycler folder, restart FrameCycler and you're done. You can then choose the LUT from the Calibration drop down list (lower right corner) to use the LUT on your Linear sequences. This will then calculate the pixel values (I think on a GPU, not sure though) for each frame and display the image in a correct sRGB format on your standard monitor.

As a side note, the huge benefit of using the script syntax as opposed to the XML format is that the values are being dynamically calculated, so, you're not constrained by the LUT precision.

2 Comments »

  1. thanks for the tutorial…

    Comment by wen — October 27, 2010 @ 20:15

  2. thanks!

    Comment by qwer — April 1, 2011 @ 10:06

RSS feed for comments on this post. TrackBack URI

Leave a comment

Powered by WordPress | Theme by Roy Tanck