From web:
What is a 3D LUT?
Firstly: LUT = Look Up Table.
For video, LUTs come in two varieties:
1D – 1 Dimensional (common)
3D – 3 Dimensional (less so)
In 1D and value like brightness, or red level, etc. with range 0 to 255, in feed into table that remaps these values to a new 0-255 range. This is the curves control in your NLE, or image editing tool. RGB curve are simply three 1D LUTs. In 1D LUT data from red channel can’t be used to control any other channel.
3D LUT has three inputs to the table rather than just one. Red, green and blue value go into a table that looks like a cube. At each table entry are three output values. So any RGB combination can produce any other RGB value. This is means 3D LUTs can do color based “secondaries”, you can make a blue sky red with impacting skin tones, or remove the saturation from all colors but one. These a very powerful.
The one issue with a 3D LUT is the size of the table. 8-bit RGB table is a 256x256x256 with three bytes per entry, with is 50MBytes. And CineForm RGB is 12-bit accurate, which requires 288′G’Bytes — so 3D LUTs are interpolated form a lower number of entries to approximate the color changes of such a large “color space”. A color cube of around 16x16x16 entries are surprisingly good and are used in monitors for calibration and in on-set look previews. Cubes of 64x64x64 are the LUT resolutions often used for film finishing, this the large of LUT the CineForm decoder supports. Most of the LUTs we include (in the LUT Pack1) are of this resolution *. We using 32-bit float entries as the output values, so a 64x64x64 cube is 3MB — big enough for finishing quality, small enough to be loaded in real-time.
* note: Using a lower resolution LUT, does not impact the quality of the video it is being applied, the resolution of the LUT only impacts the accuracy of the larger full color cube it is modeling. I’ve seen a 8x8x8 bleach bypass, look as good as 64x64x64 equivalent, so 64^3 LUTs are often overkill.