TI3 Parser (v0.16)
Information
I hereby present my
TI3 Parser toolset. This collection of programs is intended to provide a somewhat easier front-end for
color management using ArgyllCMS¹, yCMS and madVR, as well as a small collection of command line tools. The motivation for creating this was due to the steps involved in locating, opening and extracting the information from a .ti3 file, then properly formatting them so madVR or yCMS accept them was a bit too daunting to explain well in my madVR CMS guide. This program initially started out as a script to simply format the values properly, but I decided to refactor it and enlarge the scope to include a largely automatized 3dLUT generation process. This also makes it easy to generate multiple .3dLUTs for different environments and choose a certain one easily using madVR (instead of having to copy/paste over the new primaries + re-generate it every time).
All logic is also abstracted into a managed .dll so that those who wish to use it in other projects can do so, and there is a collection of (somewhat) useful command line tools included.
1. At the moment, ArgyllCMS is still not automatized - you will have to calibrate+profile manually using dispcalGUI
Features:
This program will:
- Read and parse a .ti3/.cal file as generated by ArgyllCMS
- Present the gamut/grayscale measurements in madVR-friendly form
- Provide a yCMS generation script
- Create a madVR-compatible .3dlut file
- Modify an existing .3dlut by swapping channels, inverting it or applying calibration data from an ArgyllCMS .cal file
- Create new .3dluts
- Allow inspection and modification of .3dluts (to check for errors etc)
- Automatically update yCMS
- Scale/adapt the output bit depth or value range of .3dluts
- Merge multiple .3dluts into a single one
- Inspect, Reset, Load or Save the device adapter's CLUT tables
- Allow application of 3dlut files to images manually
- Create .3dluts from linking ICC profiles together
- Perform, gamma correction, gamut mapping, chromatic saturation (eg. to increase the gamut range while preserving colors) and chromatic adaptation
- Join together .3dluts using a composite algorithm (eg. to fix the black levels)
- Work with both .3dlut and .3dl2 files
- Be fully accessible from the command line console
Usage guide:
I intend for this section to be obsolete by version 1.0, but for now, a quick guide towards calibrating your monitor / profiling it properly can be found
here or
here.
If you just want the GUI (shown in the screenshot), after extracting, run
TI3Parser\bin\LinkICCGUI.exe.
A list of current command line utilities:
- applycal: Applies an ArgyllCMS .cal/.ti3 or a CLUT file to a .3dlut, thus calibrating it for a specific display device
- changedepth: Changes the output bit depth of a .3dlut or adjusts the levels (PC or TV) - note that this transformation is lossy
- dispclut: Allows inspection, changing, resetting, saving or loading of a display adapter's CLUT tables (globally or per-monitor)
- gen3dlut: Generates a new, linear or grayscale .3dlut
- genscript: Generates a yCMS script from .ti3 source value, using the same base as madVR
- imagecal: Apply a .cal file or .3dlut to a bitmap image manually, useful for proofing
- inspect3dlut: Inspects a .3dlut and prints information about the meta-tags or creation script
- join3dlut: Composites together two .3dluts, switching between the two based on luminance.
- linkicc: Links two ICC profiles together and generates a .3dlut from the result
- lutscript: Generates a 3dlut from a provided .3ls file or .3ls2 file
- make3dlut: Generates a .3dlut from a .ti3 file, using yCMS (can also apply calibration data)
- merge3dlut: Merges multiple .3dluts together into a single file
- parseti3: Opens a .ti3 file and presents the primaries / grayscale information in madVR-friendly form. Also allows copying to clipboard
- swapchan: Allows swapping or inverting channels of a .3dlut
- tag3dlut: Modifies a 3dlut's attached parameters to change the declared levels or primaries (this does not modify the 3dlut itself, unlike changedepth)
- updateycms: Updates this toolset's copy of yCMS
- version: Prints the overall packaging version number
Help for each program can be obtained by running
<program name> --help.
To-do (planned features list):
- Find a better name for the project, since soon it won't be limited to just parsing TI3 files
- Integration and updating of the binaries provided by ArgyllCMS
- Automation for ArgyllCMS, similar in nature to dispcalGUI but tailored for video playback
- Self-update system (will likely need a decent web host for this first)
- If possible, interface with madVR and set the .3dlut files automatically (perhaps per display device)
Download and license information
All code is currently in public domain but I withhold the rights to change this license at any time (license changes will not apply retroactively).
All executables can be found in the
TI3Parser\bin folder. The program requires the .NET library version 4.0 or above to run.
Feedback
Please post any bugs, issues, suggestions or other sorts of feedback in this thread. If you want to submit source code patches you can do that too.
I'm also not quite satisfied with the current interface. What would you prefer - the current, a tab-based layout or a bunch of buttons like it was before? I'm also probably going to make the interface much larger, add more regions for everything, allow loading multiple files and generally expand the program into a larger, fullscreen management studio instead of a simple tool.
I'm also taking suggestions for a better name, since it is no longer a simple TI3 Parser
Changelog
Moved to second post due to length issues