Skip to content

diegoinacio/cube-lut-factory.js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cube LUT factory

Useful function to deal with Cube LUT files.

Install

$ npm install cube-lut-factory

Usage

const cubeLUT = require("cube-lut-factory");

Parse

// Parse Cube LUT content
const cubeLUT = require("cube-lut-factory");

let fs = require("fs");
let lutContent = fs.readFileSync("test/1DLUT.cube");
let lutObject = cubeLUT.parse(lutContent);

console.log(lutObject);
{
  title: "1D Identity Cube LUT",
  type: "1D",
  size: 4,
  domainMin: [0, 0, 0],
  domainMin: [1, 1, 1],
  dataPoints: [
    [0.0000, 0.0000, 0.0000],
    [0.3333, 0.3333, 0.3333],
    [0.6667, 0.6667, 0.6667],
    [1.0000, 1.0000, 1.0000],
  ]
}

Generate

  • header: Includes a header on the beginning of the file. (optional)
  • title: Defines the title. (mandatory)
  • type: Defines the type (1D or 3D). (mandatory)
  • size: Defines the size. (mandatory)
  • domainMin and domainMax: Vector of 3 values, containing the minimum and maximum of the domain, respectively.
  • R, G and B: Defines the function of each channel. If the type is 1D, it must be in function of the single variable t (R(t), G(t), B(t)). If the type is 3D, it must be in function of the three variable r, g and b (R(r, g, b), G(r, g, b), B(r, g, b)).
// Generate Cube LUT content
const cubeLUT = require("cube-lut-factory");

let lutObject = {
  title: "Test",
  type: "3D",
  size: 4,
  domainMin: [0, 0, 0],
  domainMax: [1, 1, 1],
  R: "(r^2 + g*b)/2",
  G: "(g^3 + r*2*b)/3",
  B: "(b^4 + r + b)/3",
};

let lutContent = cubeLUT.generate(lutObject);

console.log(lutContent);
# Cube LUT file generated with cube-lut-factory
# https://github.com/diegoinacio/cube-lut-factory.js
TITLE "Test"

# Cube LUT size
LUT_3D_SIZE 4

# Cube LUT domain
DOMAIN_MIN 0 0 0
DOMAIN_MAX 1 1 1

# Cube LUT data points
0 0 0
0.05555555555555555 0 0.1111111111111111
0.2222222222222222 0 0.2222222222222222
0.5 0 0.3333333333333333
0 0.012345679012345677 0
0.05555555555555555 0.012345679012345677 0.1111111111111111
0.2222222222222222 0.012345679012345677 0.2222222222222222
0.5 0.012345679012345677 0.3333333333333333
0 0.09876543209876541 0
0.05555555555555555 0.09876543209876541 0.1111111111111111
0.2222222222222222 0.09876543209876541 0.2222222222222222
0.5 0.09876543209876541 0.3333333333333333
0 0.3333333333333333 0
0.05555555555555555 0.3333333333333333 0.1111111111111111
0.2222222222222222 0.3333333333333333 0.2222222222222222
0.5 0.3333333333333333 0.3333333333333333
0 0 0.11522633744855966
0.05555555555555555 0.07407407407407407 0.22633744855967075
0.2222222222222222 0.14814814814814814 0.33744855967078186
0.5 0.2222222222222222 0.448559670781893
0.05555555555555555 0.012345679012345677 0.11522633744855966
0.1111111111111111 0.08641975308641975 0.22633744855967075
0.2777777777777778 0.16049382716049382 0.33744855967078186
0.5555555555555556 0.23456790123456786 0.448559670781893
0.1111111111111111 0.09876543209876541 0.11522633744855966
0.16666666666666666 0.17283950617283947 0.22633744855967075
0.3333333333333333 0.24691358024691357 0.33744855967078186
0.6111111111111112 0.3209876543209876 0.448559670781893
0.16666666666666666 0.3333333333333333 0.11522633744855966
0.2222222222222222 0.40740740740740744 0.22633744855967075
0.38888888888888884 0.48148148148148145 0.33744855967078186
0.6666666666666666 0.5555555555555555 0.448559670781893
0 0 0.28806584362139914
0.05555555555555555 0.14814814814814814 0.3991769547325103
0.2222222222222222 0.2962962962962963 0.5102880658436214
0.5 0.4444444444444444 0.6213991769547325
0.1111111111111111 0.012345679012345677 0.28806584362139914
0.16666666666666666 0.16049382716049382 0.3991769547325103
0.3333333333333333 0.30864197530864196 0.5102880658436214
0.6111111111111112 0.4567901234567901 0.6213991769547325
0.2222222222222222 0.09876543209876541 0.28806584362139914
0.2777777777777778 0.24691358024691357 0.3991769547325103
0.4444444444444444 0.3950617283950617 0.5102880658436214
0.7222222222222222 0.5432098765432098 0.6213991769547325
0.3333333333333333 0.3333333333333333 0.28806584362139914
0.38888888888888884 0.48148148148148145 0.3991769547325103
0.5555555555555556 0.6296296296296297 0.5102880658436214
0.8333333333333333 0.7777777777777777 0.6213991769547325
0 0 0.6666666666666666
0.05555555555555555 0.2222222222222222 0.7777777777777777
0.2222222222222222 0.4444444444444444 0.8888888888888888
0.5 0.6666666666666666 1
0.16666666666666666 0.012345679012345677 0.6666666666666666
0.2222222222222222 0.23456790123456786 0.7777777777777777
0.38888888888888884 0.4567901234567901 0.8888888888888888
0.6666666666666666 0.6790123456790124 1
0.3333333333333333 0.09876543209876541 0.6666666666666666
0.38888888888888884 0.3209876543209876 0.7777777777777777
0.5555555555555556 0.5432098765432098 0.8888888888888888
0.8333333333333333 0.7654320987654321 1
0.5 0.3333333333333333 0.6666666666666666
0.5555555555555556 0.5555555555555555 0.7777777777777777
0.7222222222222222 0.7777777777777777 0.8888888888888888
1 1 1