Sandbox friendly Objective-C wrapper for the LUTCalc Javascript web app.
Web App for generating 1D and 3D Lookup Tables (LUTs) for video cameras that shoot log gammas, principally the Sony CineAlta line.
LUTCalc generates 1D and 3D .cube format LUTs suitable for use in DaVinci Resolve, Adobe Speedgrade and as user 3D LUTs in Sony's log-recording video cameras. These include the PMW-F5, PMW-F55 and PXW-FS7.
For Mac OSX users, the sister LUTCalc For Mac project provides a native app version using a sandbox-friendly Objective-C Webkit wrapper around the LUTCalc Javascript.
Instructions are included, just open 'index.html' in a web browser with Javascript enabled.
Safari may cause difficulties in automatically saving LUTs - it does not support file saving via Javascript. LUTs should open up in a new tab where they can be saved with 'Save As'.
If using Internet Explorer it should be a recent version (10+).
Firefox, Chrome and recent IE should all work fine.
The sources of information used are white papers and standards documents, analysis and comparison of test images and LUT calculations using known reference LUTs.
Sony S-Log3 - Technical Summary for S-Gamut3.Cine/S-Log3 and S-Gamut3/S-Log3
Sony S-Gamut3 / S-Gamut3.cine - Sony Excel spreadsheet of various gamut matrices
Sony S-Log - S-Log: A new LUT for digital production mastering and interchange applications
Sony Look Profile LUTs - Sony Community Website
Arri LogC / Wide Gamut - ALEXA Log C Curve - Usage in VFX
Canon C-Log - Canon-Log Cine Optoelectronic Transfer Function
Canon LUTs and Gamut Information - Canon C500 Support Site
Canon C300 Input Device Transform (IDT) - Canon C300 Support Site - under 'Software'. You have to specify 'Mountain Lion' on a Mac or 'Windows XP' on a PC for it to be displayed. C500 and C100 have the same IDTs for CP Lock, though the C500 also offers 'Cinema Gamut' (see above link).
Panasonic Varicam V-Log and V-Gamut - V-Log/V-Gamut Reference Manual
Cineon - Understanding Cineon
Rec709 - ITU BT.709-5
sRGB - Wikipedia entry
- index.html - HTML5 base of LUTCalc. Launch to start.
- lutcalc.js - main Javascript file. Initialises all the UI and calculation objects and sets up the event handlers.
- lutcamerabox.js - builds the UI object where camera and ISO are chosen.
- lutgammabox.js - builds the UI object for transfer curve (gamma) and colour space (gamut) selection.
- luttweaksbox.js - builds the UI object for customising the transfer (gamma) curves and colour spaces / gamuts.
- lutlutbox.js - builds the UI object containing options concerning the LUT format.
- lutgeneratebox.js - builds the 'Generate' button that triggers the LUT generation, plus the generation logic itself.
- lutinfobox.js - builds the UI object which shows instructions, the changelog, plots of the input and output gammas against stop and IRE and data values for correct exposure with the chosen output gamma.
- lutgamma.js - contains all the data and equations for calculating the transfer curves, plus input and output functions to various ranges / scales.
- lutgamut.js - contains the data for matrix-based colour spaces, plus the calculations for those, LUT-based spaces and compound combinations of the two.
- lutgamut.lc709.js - a pure colour space transform LUT from S-Gamut3.cine to the LC709 look profile colour. Effectively a LUT of a LUT.
- lutgamut.lc709a.js - a pure colour space transform LUT from S-Gamut3.cine to the LC709a look profile colour. Effectively a LUT of a LUT.
- lutgamut.cine709.js - a pure colour space transform LUT from S-Gamut3.cine to the Cine+709 look profile colour. Effectively a LUT of a LUT.
- lutgamut.cpoutdaylight.js - pure colour space transform LUTs from S-Gamut3.cine to the colour space of CP Lock on a daylight or mixed lighting balance. Derived from 3D Newton-Raphson on Canon's published daylight IDT matrices.
- lutgamut.cpouttungsten.js - pure colour space transform LUTs from S-Gamut3.cine to the colour space of CP Lock on a tungsten or warmer balance. Derived from 3D Newton-Raphson on Canon's published tungsten IDT matrices.
- luts.js - LUT handling object. Will calculate interpolated values from LUTs using cubic and tricubic interpolation. Also includes code for breaking a 3D LUT into gamma and gamut component LUTs and changing the input gamma / gamut (as used by the LUTAnalyst tool).
- lutfile.js - file handling object.
- lutinputs.js - simple object into which the other objects can place their form input objects, to allow interaction without globals.
- style.css - stylesheet controlling the look of the app. All dimensions (greater than 1 pixel) are em values.
- LUTCalc.icns - icon file containing a logo in a format suitable for Mac OSX Apps in XCode.
- README.md - this file.
- LICENSE - GPL2 License document.
- FileSaver.js - Cross-browser Javascript file saving.
- Blob.js - Cross-browser Javascript Blob implementation.
- The function 'createRadioElement' is used to dynamically create radio buttons. This came from a tip by Prestaul on stackoverflow
All other code is by me, Ben Turley.