LUT Formats

From IRIDAS Online Documentation
Jump to: navigation, search

Contents

Overview

IRIDAS 2011 applications support the following LUT formats:

  • ARRI CMS LUT (3D)
  • BlackMagic HDLink LUT (1D)
  • BlackMagic HDLink Pro LUT (3D)
  • Kodak KDM LUT (not encrypted) (3D)
  • Rising Sun Research Cinespace LUT (3D)
  • Truelight Hardware LUT (3D)
  • Lustre LUTs (3D)

To add a LUT for use with your IRIDAS application, place it in the LUT subfolder in the installation folder of your IRIDAS application.

Learn about your product installation folder here.

IRIDAS .cube

#comments start with '#'
#title is currently ignored, but it's not an error to enter one
TITLE "title"

#LUT_1D_SIZE M or
#LUT_3D_SIZE M
#where M is the size of the texture
#a 3D texture has the size M x M x M
#e.g. LUT_3D_SIZE 16 creates a 16 x 16 x 16 3D texture
LUT_3D_SIZE 2 

#Default input value range (domain) is 0.0 (black) to 1.0 (white)
#Specify other min/max values to map the cube to any custom input
#range you wish to use, for example if you're working with HDR data
DOMAIN_MIN 0.0 0.0 0.0
DOMAIN_MAX 1.0 1.0 1.0

#for 1D textures, the data is simply a list of floating point values,
#three per line, in RGB order
#for 3D textures, the data is also RGB, and ordered in such a way
#that the red coordinate changes fastest, then the green coordinate,
#and finally, the blue coordinate changes slowest:
0.0 0.0 0.0
1.0 0.0 0.0
0.0 1.0 0.0
1.0 1.0 0.0
0.0 0.0 1.0
1.0 0.0 1.0
0.0 1.0 1.0
1.0 1.0 1.0

#Note that the LUT data is not limited to any particular range
#and can contain values under 0.0 and over 1.0
#The processing application might however still clip the
#output values to the 0.0 - 1.0 range, depending on the internal
#precision of that application's pipeline
#IRIDAS applications generally use a floating point pipeline
#with little or no clipping

IRIDAS .ilut

This is an IRIDAS LUT format, with the extension .ilut. It is either in XML format (ASCII) or in the form of an interpretable script.

XML-based Cineon ILUT

The XML-based format looks as follows:

<?xml version="1.0" ?>

<Log10Bit>
 <BypassLUT>"false"</BypassLUT>
 <GammaLogR>"1.7"</GammaLogR>
 <GammaDisplayR>"2.2"</GammaDisplayR>
 <ReferenceBlackR>"95"</ReferenceBlackR>
 <ReferenceWhiteR>"685" </ReferenceWhiteR>
 <SoftClipR>"0"</SoftClipR>
 <GammaLogG>"1.8"</GammaLogG>
 <GammaDisplayG>"2.1"</GammaDisplayG>
 <ReferenceBlackG>"92"</ReferenceBlackG>
 <ReferenceWhiteG>"780"</ReferenceWhiteG>
 <SoftClipG>"0"</SoftClipG>
 <GammaLogB>"1.3"</GammaLogB>
 <GammaDisplayB>"2.1"</GammaDisplayB>
 <ReferenceBlackB>"99"</ReferenceBlackB>
 <ReferenceWhiteB>"633"</ReferenceWhiteB>
 <SoftClipB> "0" </SoftClipB>
</Log10Bit>

If values are missing, they are set to the values of the previous channels. I.e. if Red, Green and Blue values are the same, it is sufficient to supply a LUT file as follows.

<?xml version="1.0" ?>

<Log10Bit>
 <BypassLUT> "false" </BypassLUT>
 <GammaLogR> "1.7" </GammaLogR>
 <GammaDisplayR> "2.2" </GammaDisplayR>
 <ReferenceBlackR>"95" </ReferenceBlackR>
 <ReferenceWhiteR>"685" </ReferenceWhiteR>
 <SoftClipR> "0" </SoftClipR>
</Log10Bit>

Script based ILUT

For more information on the script format, please see ILUT Script Syntax

The script-based format looks as follows:

<IRIDAScript>

 refblack = 95;  //0..1023
 refwhite = 685; //0..1023
 softclip = 0; //0..100
 gammalog = 1;
 gammalin = 1;
 quantization = 0.002 / 0.6;

 gain       = 255 / (1 - pow(pow(10, (refblack - refwhite) * quantization), gammalog / gammalin));
 offset     = gain - 255; softclip = max(0, softclip);
 breakpoint = refwhite - softclip;

 in = in * 1023; //temporary result (same for all channels)
 out = 0; //all variables must be initialized 

 if (in <= breakpoint)
 { 
    out = (pow(pow(10.0, (in - refwhite) * quantization),
             gammalog / gammalin) * gain - offset) / 255;

 }
 else if (softclip > 0)
 { 
    kneeoffset = pow(pow(10, (breakpoint - refwhite) * quantization),
                     gammalog / gammalin) * gain - offset;

    kneegain = (255 - kneeoffset) / pow(5 * softclip, softclip / 100);

    out = (pow(in - breakpoint, softclip / 100) * kneegain + kneeoffset) / 255;
 }
 else
  out = 1; 

 //store results 
 red = out;
 green = out;
 blue = out;

</IRIDAScript>

Table-based LUT Format #1

The file is in plain ASCII format and looks like this


#
# LUT to convert 10-bit log to 8-bit linear.
# Version 3.0 
# RGB Reference White: 685 685 685 
# RGB Reference Black: 95 95 95 
# RGB Softclip: 0 0 0 
# RGB Film Gamma: 0.600000 0.600000 0.600000 
# RGB Gamma Correction: 1.000000 1.000000 1.000000 
# RGB HighLight: 255 255 255 
# RGB Shadow: 0 0 0 
# LUT: 3 1024 0 0 
# Following by 3 x 1024 values for the 3 channels.
# If values are missing, the last value is repeated.


Spline-based LUT Format

This is a file format being used in conjunction with Apple's Shake compositing system.

log2lin = Lookup( In,
                  JSplineV(x,1,0@0,0.0286@0.1013,0.0397@.... 
                  JSplineV(x,1,0@0,0.0286@0.1013,0.0397@.... 
                  JSplineV(x,1,0@0,0.0286@0.1013,0.0397@... 
                  JSplineV(x,1,0@0,1@1));

Views
Personal tools
Navigation
Toolbox