Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
lut3d.h File Reference
#include <stdint.h>
#include <stdlib.h>
+ Include dependency graph for lut3d.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Typedefs

typedef enum dt_lut3d_interpolation_t dt_lut3d_interpolation_t
 

Enumerations

enum  dt_lut3d_interpolation_t {
  DT_LUT3D_INTERP_TETRAHEDRAL = 0 ,
  DT_LUT3D_INTERP_TRILINEAR = 1 ,
  DT_LUT3D_INTERP_PYRAMID = 2
}
 

Functions

void dt_lut3d_apply (const float *in, float *out, size_t pixel_nb, const float *clut, uint16_t level, float normalization, dt_lut3d_interpolation_t interpolation)
 Apply one interpolation model over a packed RGB CLUT.
 
void dt_lut3d_tetrahedral_interp (const float *in, float *out, size_t pixel_nb, const float *clut, uint16_t level, float normalization)
 
void dt_lut3d_trilinear_interp (const float *in, float *out, size_t pixel_nb, const float *clut, uint16_t level, float normalization)
 
void dt_lut3d_pyramid_interp (const float *in, float *out, size_t pixel_nb, const float *clut, uint16_t level, float normalization)
 

Typedef Documentation

◆ dt_lut3d_interpolation_t

Enumeration Type Documentation

◆ dt_lut3d_interpolation_t

Enumerator
DT_LUT3D_INTERP_TETRAHEDRAL 
DT_LUT3D_INTERP_TRILINEAR 
DT_LUT3D_INTERP_PYRAMID 

Function Documentation

◆ dt_lut3d_apply()

void dt_lut3d_apply ( const float *  in,
float *  out,
size_t  pixel_nb,
const float *  clut,
uint16_t  level,
float  normalization,
dt_lut3d_interpolation_t  interpolation 
)

Apply one interpolation model over a packed RGB CLUT.

The interpolation always happens in the normalized [0, 1] lattice domain. normalization lets callers map scene-referred RGB into that domain before lookup and restore the white level afterwards without rescaling the whole buffer in separate passes.

All modules using a dense RGB CLUT should go through this shared runtime so file-backed LUTs and procedurally-generated LUTs only differ by how they author the lattice values, not by how they traverse the cells.

References DT_LUT3D_INTERP_PYRAMID, DT_LUT3D_INTERP_TETRAHEDRAL, DT_LUT3D_INTERP_TRILINEAR, dt_lut3d_pyramid_interp(), dt_lut3d_tetrahedral_interp(), dt_lut3d_trilinear_interp(), and out.

Referenced by dt_colorrings_apply_rgb_lut(), and process().

◆ dt_lut3d_pyramid_interp()

void dt_lut3d_pyramid_interp ( const float *  in,
float *  out,
size_t  pixel_nb,
const float *  clut,
uint16_t  level,
float  normalization 
)

◆ dt_lut3d_tetrahedral_interp()

void dt_lut3d_tetrahedral_interp ( const float *  in,
float *  out,
size_t  pixel_nb,
const float *  clut,
uint16_t  level,
float  normalization 
)

◆ dt_lut3d_trilinear_interp()

void dt_lut3d_trilinear_interp ( const float *  in,
float *  out,
size_t  pixel_nb,
const float *  clut,
uint16_t  level,
float  normalization 
)