11 #ifndef __IMG_GammaTable__
12 #define __IMG_GammaTable__
33 result[3] = myLinear01[src[3]];
36 result[2] = lut[src[2]];
39 result[1] = lut[src[1]];
42 result[0] = lut[src[0]];
52 toFloat(result, src, nchan, myRGBtoLinear1);
57 toFloat(result, src, nchan, myRec709toLinear1);
62 toFloat(result, src, nchan, myGamma22toLinear1);
68 float myRGBtoLinear1[256];
69 float myRec709toLinear1[256];
70 float myGamma22toLinear1[256];
71 float myLinear01[256];
74 namespace IMG_GammaTable
96 void linearToFloat(
float *
result,
const T *
src,
int nchan)
98 for (
int i = 0; i < nchan; ++i)
99 result[i] = toFloat(src[i]);
103 void sRGBToFloat(
float *
dst,
const T *src,
int nchan)
108 dst[3] = toFloat(src[3]);
111 dst[2] = UT::srgbToLinear(toFloat(src[2]));
114 dst[1] = UT::srgbToLinear(toFloat(src[1]));
117 dst[0] = UT::srgbToLinear(toFloat(src[0]));
122 void rec709ToFloat(
float *dst,
const T *src,
int nchan)
127 dst[3] = toFloat(src[3]);
130 dst[2] = UT::rec709ToLinear(toFloat(src[2]));
133 dst[1] = UT::rec709ToLinear(toFloat(src[1]));
136 dst[0] = UT::rec709ToLinear(toFloat(src[0]));
141 void gamma22ToFloat(
float *dst,
const T *src,
int nchan)
146 dst[3] = toFloat(src[3]);
149 dst[2] = UT::gamma22ToLinear(toFloat(src[2]));
152 dst[1] = UT::gamma22ToLinear(toFloat(src[1]));
155 dst[0] = UT::gamma22ToLinear(toFloat(src[0]));
184 linearToFloat(result, src, n);
187 sRGBToFloat(result, src, n);
190 gamma22ToFloat(result, src, n);
193 rec709ToFloat(result, src, n);
208 linearToFloat(result, src, n);
227 linearToFloat(result, src, n);
230 sRGBToFloat(result, src, n);
233 gamma22ToFloat(result, src, n);
236 rec709ToFloat(result, src, n);
252 linearToFloat(result, src, n);
static const IMG_GammaTableDetail & get()
float toFloat< fpreal16 >(fpreal16 d)
SYS_FORCE_INLINE void gamma22ToFloat< uint8 >(float *dst, const uint8 *src, int nchan)
float toFloat< uint8 >(uint8 d)
float linear01(uint8 v) const
static constexpr int AutoStride
**But if you need a result
SYS_FORCE_INLINE void toFloat(float *result, const uint8 *src, int nchan, const float *lut) const
GA_API const UT_StringHolder scale
void convert< uint8 >(float *result, const uint8 *src, int n, IMG_ColorSpace cs)
SYS_FORCE_INLINE void rec709ToFloat(float *result, const uint8 *src, int nchan) const
float toFloat< fpreal64 >(fpreal64 d)
SYS_FORCE_INLINE void rec709ToFloat< uint8 >(float *dst, const uint8 *src, int nchan)
IMATH_NAMESPACE::V2f IMATH_NAMESPACE::Box2i std::string this attribute is obsolete as of OpenEXR v3 float
SYS_FORCE_INLINE void gamma22ToFloat(float *result, const uint8 *src, int nchan) const
const stride_t AutoStride
SYS_FORCE_INLINE void sRGBToFloat(float *result, const uint8 *src, int nchan) const
float toFloat< fpreal32 >(fpreal32 d)
ImageBuf OIIO_API max(Image_or_Const A, Image_or_Const B, ROI roi={}, int nthreads=0)
SYS_FORCE_INLINE void sRGBToFloat< uint8 >(float *dst, const uint8 *src, int nchan)
IMG_ColorSpace
Modes for how to translate colors in images for texture lookups.
void builtinConvert< uint8 >(float *result, const uint8 *src, int n, IMG_ColorSpace cs)