HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
OpenColorTypes.h
Go to the documentation of this file.
1 // SPDX-License-Identifier: BSD-3-Clause
2 // Copyright Contributors to the OpenColorIO Project.
3 
4 
5 #ifndef INCLUDED_OCIO_OPENCOLORTYPES_H
6 #define INCLUDED_OCIO_OPENCOLORTYPES_H
7 
8 #include "OpenColorABI.h"
9 
10 #ifndef OCIO_NAMESPACE
11 #error This header cannot be used directly. Use <OpenColorIO/OpenColorIO.h> instead.
12 #endif
13 
14 #include <array>
15 #include <limits>
16 #include <string>
17 #include <functional>
18 
19 
20 /*!rst::
21 C++ Types
22 =========
23 */
24 
25 namespace OCIO_NAMESPACE
26 {
27 // Predeclare all class ptr definitions
28 
29 // Core
30 
32 typedef OCIO_SHARED_PTR<const Config> ConstConfigRcPtr;
33 typedef OCIO_SHARED_PTR<Config> ConfigRcPtr;
34 
36 typedef OCIO_SHARED_PTR<const FileRules> ConstFileRulesRcPtr;
37 typedef OCIO_SHARED_PTR<FileRules> FileRulesRcPtr;
38 
40 typedef OCIO_SHARED_PTR<const ViewingRules> ConstViewingRulesRcPtr;
41 typedef OCIO_SHARED_PTR<ViewingRules> ViewingRulesRcPtr;
42 
44 typedef OCIO_SHARED_PTR<const ColorSpace> ConstColorSpaceRcPtr;
45 typedef OCIO_SHARED_PTR<ColorSpace> ColorSpaceRcPtr;
46 
48 typedef OCIO_SHARED_PTR<const ColorSpaceSet> ConstColorSpaceSetRcPtr;
49 typedef OCIO_SHARED_PTR<ColorSpaceSet> ColorSpaceSetRcPtr;
50 
52 typedef OCIO_SHARED_PTR<const Look> ConstLookRcPtr;
53 typedef OCIO_SHARED_PTR<Look> LookRcPtr;
54 
56 typedef OCIO_SHARED_PTR<const NamedTransform> ConstNamedTransformRcPtr;
57 typedef OCIO_SHARED_PTR<NamedTransform> NamedTransformRcPtr;
58 
60 typedef OCIO_SHARED_PTR<const ViewTransform> ConstViewTransformRcPtr;
61 typedef OCIO_SHARED_PTR<ViewTransform> ViewTransformRcPtr;
62 
64 typedef OCIO_SHARED_PTR<const Context> ConstContextRcPtr;
65 typedef OCIO_SHARED_PTR<Context> ContextRcPtr;
66 
68 typedef OCIO_SHARED_PTR<const Processor> ConstProcessorRcPtr;
69 typedef OCIO_SHARED_PTR<Processor> ProcessorRcPtr;
70 
72 typedef OCIO_SHARED_PTR<const CPUProcessor> ConstCPUProcessorRcPtr;
73 typedef OCIO_SHARED_PTR<CPUProcessor> CPUProcessorRcPtr;
74 
76 typedef OCIO_SHARED_PTR<const GPUProcessor> ConstGPUProcessorRcPtr;
77 typedef OCIO_SHARED_PTR<GPUProcessor> GPUProcessorRcPtr;
78 
80 typedef OCIO_SHARED_PTR<const ProcessorMetadata> ConstProcessorMetadataRcPtr;
81 typedef OCIO_SHARED_PTR<ProcessorMetadata> ProcessorMetadataRcPtr;
82 
84 typedef OCIO_SHARED_PTR<const Baker> ConstBakerRcPtr;
85 typedef OCIO_SHARED_PTR<Baker> BakerRcPtr;
86 
88 typedef OCIO_SHARED_PTR<ImageDesc> ImageDescRcPtr;
89 typedef OCIO_SHARED_PTR<const ImageDesc> ConstImageDescRcPtr;
90 
92 
94 typedef OCIO_SHARED_PTR<GpuShaderCreator> GpuShaderCreatorRcPtr;
95 typedef OCIO_SHARED_PTR<const GpuShaderCreator> ConstGpuShaderCreatorRcPtr;
96 
98 typedef OCIO_SHARED_PTR<GpuShaderDesc> GpuShaderDescRcPtr;
99 typedef OCIO_SHARED_PTR<const GpuShaderDesc> ConstGpuShaderDescRcPtr;
100 
102 typedef OCIO_SHARED_PTR<BuiltinTransformRegistry> BuiltinTransformRegistryRcPtr;
103 typedef OCIO_SHARED_PTR<const BuiltinTransformRegistry> ConstBuiltinTransformRegistryRcPtr;
104 
106 typedef OCIO_SHARED_PTR<SystemMonitors> SystemMonitorsRcPtr;
107 typedef OCIO_SHARED_PTR<const SystemMonitors> ConstSystemMonitorsRcPtr;
108 
110 typedef OCIO_SHARED_PTR<const GradingBSplineCurve> ConstGradingBSplineCurveRcPtr;
111 typedef OCIO_SHARED_PTR<GradingBSplineCurve> GradingBSplineCurveRcPtr;
112 
114 typedef OCIO_SHARED_PTR<const GradingRGBCurve> ConstGradingRGBCurveRcPtr;
115 typedef OCIO_SHARED_PTR<GradingRGBCurve> GradingRGBCurveRcPtr;
116 
118 typedef OCIO_SHARED_PTR<const GradingHueCurve> ConstGradingHueCurveRcPtr;
119 typedef OCIO_SHARED_PTR<GradingHueCurve> GradingHueCurveRcPtr;
120 
122 typedef OCIO_SHARED_PTR<const ConfigIOProxy> ConstConfigIOProxyRcPtr;
123 typedef OCIO_SHARED_PTR<ConfigIOProxy> ConfigIOProxyRcPtr;
124 
125 typedef std::array<float, 3> Float3;
126 
127 
128 // Transforms
129 
131 typedef OCIO_SHARED_PTR<const Transform> ConstTransformRcPtr;
132 typedef OCIO_SHARED_PTR<Transform> TransformRcPtr;
133 
135 typedef OCIO_SHARED_PTR<const AllocationTransform> ConstAllocationTransformRcPtr;
136 typedef OCIO_SHARED_PTR<AllocationTransform> AllocationTransformRcPtr;
137 
139 typedef OCIO_SHARED_PTR<const BuiltinTransform> ConstBuiltinTransformRcPtr;
140 typedef OCIO_SHARED_PTR<BuiltinTransform> BuiltinTransformRcPtr;
141 
143 typedef OCIO_SHARED_PTR<const CDLTransform> ConstCDLTransformRcPtr;
144 typedef OCIO_SHARED_PTR<CDLTransform> CDLTransformRcPtr;
145 
147 typedef OCIO_SHARED_PTR<const ColorSpaceTransform> ConstColorSpaceTransformRcPtr;
148 typedef OCIO_SHARED_PTR<ColorSpaceTransform> ColorSpaceTransformRcPtr;
149 
151 typedef OCIO_SHARED_PTR<const DisplayViewTransform> ConstDisplayViewTransformRcPtr;
152 typedef OCIO_SHARED_PTR<DisplayViewTransform> DisplayViewTransformRcPtr;
153 
155 typedef OCIO_SHARED_PTR<const DynamicProperty> ConstDynamicPropertyRcPtr;
156 typedef OCIO_SHARED_PTR<DynamicProperty> DynamicPropertyRcPtr;
157 
159 typedef OCIO_SHARED_PTR<const DynamicPropertyDouble> ConstDynamicPropertyDoubleRcPtr;
160 typedef OCIO_SHARED_PTR<DynamicPropertyDouble> DynamicPropertyDoubleRcPtr;
161 
163 typedef OCIO_SHARED_PTR<const DynamicPropertyGradingPrimary> ConstDynamicPropertyGradingPrimaryRcPtr;
164 typedef OCIO_SHARED_PTR<DynamicPropertyGradingPrimary> DynamicPropertyGradingPrimaryRcPtr;
165 
167 typedef OCIO_SHARED_PTR<const DynamicPropertyGradingRGBCurve> ConstDynamicPropertyGradingRGBCurveRcPtr;
168 typedef OCIO_SHARED_PTR<DynamicPropertyGradingRGBCurve> DynamicPropertyGradingRGBCurveRcPtr;
169 
171 typedef OCIO_SHARED_PTR<const DynamicPropertyGradingHueCurve> ConstDynamicPropertyGradingHueCurveRcPtr;
172 typedef OCIO_SHARED_PTR<DynamicPropertyGradingHueCurve> DynamicPropertyGradingHueCurveRcPtr;
173 
175 typedef OCIO_SHARED_PTR<const DynamicPropertyGradingTone> ConstDynamicPropertyGradingToneRcPtr;
176 typedef OCIO_SHARED_PTR<DynamicPropertyGradingTone> DynamicPropertyGradingToneRcPtr;
177 
179 typedef OCIO_SHARED_PTR<const ExponentTransform> ConstExponentTransformRcPtr;
180 typedef OCIO_SHARED_PTR<ExponentTransform> ExponentTransformRcPtr;
181 
183 typedef OCIO_SHARED_PTR<const ExponentWithLinearTransform> ConstExponentWithLinearTransformRcPtr;
184 typedef OCIO_SHARED_PTR<ExponentWithLinearTransform> ExponentWithLinearTransformRcPtr;
185 
187 typedef OCIO_SHARED_PTR<const ExposureContrastTransform> ConstExposureContrastTransformRcPtr;
188 typedef OCIO_SHARED_PTR<ExposureContrastTransform> ExposureContrastTransformRcPtr;
189 
191 typedef OCIO_SHARED_PTR<const FileTransform> ConstFileTransformRcPtr;
192 typedef OCIO_SHARED_PTR<FileTransform> FileTransformRcPtr;
193 
195 typedef OCIO_SHARED_PTR<const FixedFunctionTransform> ConstFixedFunctionTransformRcPtr;
196 typedef OCIO_SHARED_PTR<FixedFunctionTransform> FixedFunctionTransformRcPtr;
197 
199 typedef OCIO_SHARED_PTR<const GradingPrimaryTransform> ConstGradingPrimaryTransformRcPtr;
200 typedef OCIO_SHARED_PTR<GradingPrimaryTransform> GradingPrimaryTransformRcPtr;
201 
203 typedef OCIO_SHARED_PTR<const GradingHueCurveTransform> ConstGradingHueCurveTransformRcPtr;
204 typedef OCIO_SHARED_PTR<GradingHueCurveTransform> GradingHueCurveTransformRcPtr;
205 
207 typedef OCIO_SHARED_PTR<const GradingRGBCurveTransform> ConstGradingRGBCurveTransformRcPtr;
208 typedef OCIO_SHARED_PTR<GradingRGBCurveTransform> GradingRGBCurveTransformRcPtr;
209 
211 typedef OCIO_SHARED_PTR<const GradingToneTransform> ConstGradingToneTransformRcPtr;
212 typedef OCIO_SHARED_PTR<GradingToneTransform> GradingToneTransformRcPtr;
213 
215 typedef OCIO_SHARED_PTR<const GroupTransform> ConstGroupTransformRcPtr;
216 typedef OCIO_SHARED_PTR<GroupTransform> GroupTransformRcPtr;
217 
219 typedef OCIO_SHARED_PTR<const LogAffineTransform> ConstLogAffineTransformRcPtr;
220 typedef OCIO_SHARED_PTR<LogAffineTransform> LogAffineTransformRcPtr;
221 
223 typedef OCIO_SHARED_PTR<const LogCameraTransform> ConstLogCameraTransformRcPtr;
224 typedef OCIO_SHARED_PTR<LogCameraTransform> LogCameraTransformRcPtr;
225 
227 typedef OCIO_SHARED_PTR<const LookTransform> ConstLookTransformRcPtr;
228 typedef OCIO_SHARED_PTR<LookTransform> LookTransformRcPtr;
229 
231 typedef OCIO_SHARED_PTR<const LogTransform> ConstLogTransformRcPtr;
232 typedef OCIO_SHARED_PTR<LogTransform> LogTransformRcPtr;
233 
235 typedef OCIO_SHARED_PTR<const Lut1DTransform> ConstLut1DTransformRcPtr;
236 typedef OCIO_SHARED_PTR<Lut1DTransform> Lut1DTransformRcPtr;
237 
239 typedef OCIO_SHARED_PTR<const Lut3DTransform> ConstLut3DTransformRcPtr;
240 typedef OCIO_SHARED_PTR<Lut3DTransform> Lut3DTransformRcPtr;
241 
243 typedef OCIO_SHARED_PTR<const MatrixTransform> ConstMatrixTransformRcPtr;
244 typedef OCIO_SHARED_PTR<MatrixTransform> MatrixTransformRcPtr;
245 
247 typedef OCIO_SHARED_PTR<const RangeTransform> ConstRangeTransformRcPtr;
248 typedef OCIO_SHARED_PTR<RangeTransform> RangeTransformRcPtr;
249 
250 
251 // Application Helpers
252 
254 typedef OCIO_SHARED_PTR<ColorSpaceMenuHelper> ColorSpaceMenuHelperRcPtr;
255 typedef OCIO_SHARED_PTR<const ColorSpaceMenuHelper> ConstColorSpaceMenuHelperRcPtr;
256 
258 typedef OCIO_SHARED_PTR<ColorSpaceMenuParameters> ColorSpaceMenuParametersRcPtr;
259 typedef OCIO_SHARED_PTR<const ColorSpaceMenuParameters> ConstColorSpaceMenuParametersRcPtr;
260 
262 typedef OCIO_SHARED_PTR<MixingColorSpaceManager> MixingColorSpaceManagerRcPtr;
263 typedef OCIO_SHARED_PTR<const MixingColorSpaceManager> ConstMixingColorSpaceManagerRcPtr;
264 
266 typedef OCIO_SHARED_PTR<LegacyViewingPipeline> LegacyViewingPipelineRcPtr;
267 typedef OCIO_SHARED_PTR<const LegacyViewingPipeline> ConstLegacyViewingPipelineRcPtr;
268 
270 typedef OCIO_SHARED_PTR<ConfigMergingParameters> ConfigMergingParametersRcPtr;
271 typedef OCIO_SHARED_PTR<const ConfigMergingParameters> ConstConfigMergingParametersRcPtr;
272 
274 typedef OCIO_SHARED_PTR<ConfigMerger> ConfigMergerRcPtr;
275 typedef OCIO_SHARED_PTR<const ConfigMerger> ConstConfigMergerRcPtr;
276 
277 template <class T, class U>
278 inline OCIO_SHARED_PTR<T> DynamicPtrCast(OCIO_SHARED_PTR<U> const & ptr)
279 {
280  return OCIO_DYNAMIC_POINTER_CAST<T,U>(ptr);
281 }
282 
283 /// Define the logging function signature.
284 using LoggingFunction = std::function<void(const char*)>;
285 
286 // Enums
287 
289 {
295 
297 };
298 
299 /// Define Compute Hash function signature.
300 using ComputeHashFunction = std::function<std::string(const std::string &)>;
301 
302 /**
303  * OCIO does not mandate the image state of the main reference space and it is not
304  * required to be scene-referred. This enum is used in connection with the display color space
305  * and view transform features which do assume that the main reference space is scene-referred
306  * and the display reference space is display-referred. If a config used a non-scene-referred
307  * reference space, presumably it would not use either display color spaces or view transforms,
308  * so this enum becomes irrelevant.
309  */
311 {
312  REFERENCE_SPACE_SCENE = 0, ///< the main scene reference space
313  REFERENCE_SPACE_DISPLAY ///< the reference space for display color spaces
314 };
315 
317 {
321 };
322 
324 {
328 };
329 
331 {
335 };
336 
338 {
341 };
342 
344 {
347 };
348 
350 {
353 };
354 
356 {
359 };
360 
362 {
386 };
387 
388 /**
389  * Specify the interpolation type to use
390  * If the specified interpolation type is not supported in the requested
391  * context (for example, using tetrahedral interpolationon 1D LUTs)
392  * an exception will be thrown.
393  *
394  * INTERP_DEFAULT will choose the default interpolation type for the requested
395  * context:
396  *
397  * 1D LUT INTERP_DEFAULT: LINEAR
398  * 3D LUT INTERP_DEFAULT: LINEAR
399  *
400  * INTERP_BEST will choose the best interpolation type for the requested
401  * context:
402  *
403  * 1D LUT INTERP_BEST: LINEAR
404  * 3D LUT INTERP_BEST: TETRAHEDRAL
405  *
406  * Note: INTERP_BEST and INTERP_DEFAULT are subject to change in minor
407  * releases, so if you care about locking off on a specific interpolation
408  * type, we'd recommend directly specifying it.
409  */
411 {
413  INTERP_NEAREST = 1, ///< nearest neighbor
414  INTERP_LINEAR = 2, ///< linear interpolation (trilinear for Lut3D)
415  INTERP_TETRAHEDRAL = 3, ///< tetrahedral interpolation (Lut3D only)
416  INTERP_CUBIC = 4, ///< cubic interpolation (not supported)
417 
418  INTERP_DEFAULT = 254, ///< the default interpolation type
419  INTERP_BEST = 255 ///< the 'best' suitable interpolation type
420 };
421 
422 /**
423  * Used in a configuration file to indicate the bit-depth of a color space,
424  * and by the \ref Processor to specify the input and output bit-depths of
425  * images to process.
426  * Note that \ref Processor only supports: UINT8, UINT10, UINT12, UINT16, F16 and F32.
427  */
429 {
436  BIT_DEPTH_UINT32, ///< Here for historical reason but that's not supported.
439 };
440 
441 /// Used by :cpp:class`Lut1DTransform` to control optional hue restoration algorithm.
443 {
444  HUE_NONE = 0, ///< No adjustment.
445  HUE_DW3, ///< Algorithm used in ACES Output Transforms through v0.7.
446  HUE_WYPN ///< Weighted Yellow Power Norm -- NOT IMPLEMENTED YET
447 };
448 
449 /// Used by \ref PackedImageDesc to indicate the channel ordering of the image to process.
451 {
457 };
458 
463 };
464 
465 /// Used when there is a choice of hardware shader language.
467 {
468  GPU_LANGUAGE_CG = 0, ///< Nvidia Cg shader
469  GPU_LANGUAGE_GLSL_1_2, ///< OpenGL Shading Language
470  GPU_LANGUAGE_GLSL_1_3, ///< OpenGL Shading Language
471  GPU_LANGUAGE_GLSL_4_0, ///< OpenGL Shading Language
472  GPU_LANGUAGE_GLSL_VK_4_6, ///< OpenGL Shading Language for Vulkan
473  GPU_LANGUAGE_HLSL_SM_5_0, ///< DirectX High Level Shading Language
474  LANGUAGE_OSL_1, ///< Open Shading Language
475  GPU_LANGUAGE_GLSL_ES_1_0, ///< OpenGL ES Shading Language
476  GPU_LANGUAGE_GLSL_ES_3_0, ///< OpenGL ES Shading Language
477  GPU_LANGUAGE_MSL_2_0, ///< Metal Shading Language
478 
479  // Deprecated enum(s)
481 };
482 
483 /// Controls which environment variables are loaded into a Context object.
485 {
487  ENV_ENVIRONMENT_LOAD_PREDEFINED, ///< Only load vars in the config's environment section
488  ENV_ENVIRONMENT_LOAD_ALL ///< Load all env. vars (note: may reduce performance)
489 };
490 
491 /// A RangeTransform may be set to clamp the values, or not.
493 {
496 };
497 
498 /// Enumeration of the :cpp:class:`FixedFunctionTransform` transform algorithms.
500 {
501  FIXED_FUNCTION_ACES_RED_MOD_03 = 0, ///< Red modifier (ACES 0.3/0.7)
502  FIXED_FUNCTION_ACES_RED_MOD_10, ///< Red modifier (ACES 1.0)
503  FIXED_FUNCTION_ACES_GLOW_03, ///< Glow function (ACES 0.3/0.7)
504  FIXED_FUNCTION_ACES_GLOW_10, ///< Glow function (ACES 1.0)
505  FIXED_FUNCTION_ACES_DARK_TO_DIM_10, ///< Dark to dim surround correction (ACES 1.0)
506  FIXED_FUNCTION_REC2100_SURROUND, ///< Rec.2100 surround correction (takes one double for the gamma param)
507  FIXED_FUNCTION_RGB_TO_HSV, ///< Classic RGB to HSV function
508  FIXED_FUNCTION_XYZ_TO_xyY, ///< CIE XYZ to 1931 xy chromaticity coordinates
509  FIXED_FUNCTION_XYZ_TO_uvY, ///< CIE XYZ to 1976 u'v' chromaticity coordinates
510  FIXED_FUNCTION_XYZ_TO_LUV, ///< CIE XYZ to 1976 CIELUV colour space (D65 white)
511  FIXED_FUNCTION_ACES_GAMUTMAP_02, ///< ACES 0.2 Gamut clamping algorithm -- NOT IMPLEMENTED YET
512  FIXED_FUNCTION_ACES_GAMUTMAP_07, ///< ACES 0.7 Gamut clamping algorithm -- NOT IMPLEMENTED YET
513  FIXED_FUNCTION_ACES_GAMUT_COMP_13, ///< ACES 1.3 Parametric Gamut Compression (expects ACEScg values)
514  FIXED_FUNCTION_LIN_TO_PQ, ///< SMPTE ST-2084 OETF, scaled with 100 nits at 1.0 (neg vals mirrored)
515  FIXED_FUNCTION_LIN_TO_GAMMA_LOG, ///< Parametrized gamma and log segments with mirroring
516  FIXED_FUNCTION_LIN_TO_DOUBLE_LOG, ///< Two parameterized LogAffineTransforms with a middle linear segment
517  FIXED_FUNCTION_ACES_OUTPUT_TRANSFORM_20, ///< ACES 2.0 Display Rendering -- EXPERIMENTAL
518  FIXED_FUNCTION_ACES_RGB_TO_JMH_20, ///< ACES 2.0 RGB to JMh -- EXPERIMENTAL
519  FIXED_FUNCTION_ACES_TONESCALE_COMPRESS_20, ///< ACES 2.0 Tonescale and chroma compression -- EXPERIMENTAL
520  FIXED_FUNCTION_ACES_GAMUT_COMPRESS_20, ///< ACES 2.0 Gamut compression -- EXPERIMENTAL
521  FIXED_FUNCTION_RGB_TO_HSY_LIN, ///< RGB to HSY (Hue, Saturation, Luminance) for linear spaces
522  FIXED_FUNCTION_RGB_TO_HSY_LOG, ///< RGB to HSY (Hue, Saturation, Luma) for log spaces
523  FIXED_FUNCTION_RGB_TO_HSY_VID, ///< RGB to HSY (Hue, Saturation, Luma) for video spaces
524 };
525 
526 /// Enumeration of the :cpp:class:`ExposureContrastTransform` transform algorithms.
528 {
529  EXPOSURE_CONTRAST_LINEAR = 0, ///< E/C to be applied to a linear space image
530  EXPOSURE_CONTRAST_VIDEO, ///< E/C to be applied to a video space image
531  EXPOSURE_CONTRAST_LOGARITHMIC ///< E/C to be applied to a log space image
532 };
533 
534 /**
535  * Enumeration of the :cpp:class:`CDLTransform` transform algorithms.
536  *
537  * \note
538  * The default for reading .cc/.ccc/.cdl files, config file YAML, and CDLTransform is no-clamp,
539  * since that is what is primarily desired in VFX. However, the CLF format default is ASC.
540  */
542 {
543  CDL_ASC = 0, ///< ASC CDL specification v1.2
544  CDL_NO_CLAMP, ///< CDL that does not clamp
546 };
547 
548 /**
549  * Negative values handling style for \ref ExponentTransform and
550  * \ref ExponentWithLinearTransform transform algorithms.
551  */
553 {
554  NEGATIVE_CLAMP = 0, ///< Clamp negative values
555  NEGATIVE_MIRROR, ///< Positive curve is rotated 180 degrees around the origin to handle negatives.
556  NEGATIVE_PASS_THRU, ///< Negative values are passed through unchanged.
557  NEGATIVE_LINEAR ///< Linearly extrapolate the curve for negative values.
558 };
559 
560 /// Styles for grading transforms.
562 {
563  GRADING_LOG = 0, ///< Algorithms for Logarithmic color spaces.
564  GRADING_LIN, ///< Algorithms for Scene Linear color spaces.
565  GRADING_VIDEO ///< Algorithms for Video color spaces.
566 };
567 
568 /// Types for dynamic properties.
570 {
571  DYNAMIC_PROPERTY_EXPOSURE = 0, ///< Image exposure value (double floating point value)
572  DYNAMIC_PROPERTY_CONTRAST, ///< Image contrast value (double floating point value)
573  DYNAMIC_PROPERTY_GAMMA, ///< Image gamma value (double floating point value)
574  DYNAMIC_PROPERTY_GRADING_PRIMARY, ///< Used by GradingPrimaryTransform
575  DYNAMIC_PROPERTY_GRADING_RGBCURVE, ///< Used by GradingRGBCurveTransform
576  DYNAMIC_PROPERTY_GRADING_TONE, ///< Used by GradingToneTransform
577  DYNAMIC_PROPERTY_GRADING_HUECURVE ///< Used by GradingHueCurveTransform
578 };
579 
580 /// Types for GradingRGBCurve.
582 {
583  RGB_RED = 0,
588 };
589 
590 /// Types for GradingHueCurve.
592 {
593  HUE_HUE = 0, //!< Map input hue to output hue (where a diagonal line is the identity).
594  HUE_SAT, //!< Adjust saturation as a function of hue (a value of 1.0 is the identity).
595  HUE_LUM, //!< Adjust luma as a function of hue (a value of 1.0 is the identity).
596  LUM_SAT, //!< Adjust saturation as a function of luma (a value of 1.0 is the identity).
597  SAT_SAT, //!< Adjust saturation as a function of saturation (a diagonal is the identity).
598  LUM_LUM, //!< Adjust luma as a function of luma, maintaining hue & sat (diagonal is identity).
599  SAT_LUM, //!< Adjust luma as a function of saturation (a value of 1.0 is the identity).
600  HUE_FX, //!< Map input hue to delta output hue (a value of 0.0 is the identity).
602 };
603 
604 /// Types for GradingHueCurve.
606 {
607  HSY_TRANSFORM_NONE = 0, //!< No RGB to HSY conversion (use an outboard conversion).
608  HSY_TRANSFORM_1 //!< Default RGB to Hue, Saturation, Luma conversion.
609 };
610 
611 /// Types for GradingBSplineCurve.
613 {
614  B_SPLINE = 0, //!< Monotonic quadratic B-spline used for the RGBM curves.
615  DIAGONAL_B_SPLINE, //!< Monotonic quadratic B-spline for the sat-sat and lum-lum curves.
616  HUE_HUE_B_SPLINE, //!< Monotonic and periodic B-spline used for the hue-hue curve.
617  PERIODIC_1_B_SPLINE, //!< Periodic, horizontal (at 1) B-spline for hue-sat and hue-lum curves.
618  PERIODIC_0_B_SPLINE, //!< Periodic, horizontal (at 0) B-spline used for the hue-fx curve.
619  HORIZONTAL1_B_SPLINE, //!< Horizontal (at 1) B-spline used for the lum-sat and sat-lum curves.
620 };
621 
622 /// Types for uniform data.
624 {
627  UNIFORM_FLOAT3, ///< Array of 3 floats.
628  UNIFORM_VECTOR_FLOAT, ///< Vector of floats (size is set by uniform).
629  UNIFORM_VECTOR_INT, ///< Vector of int pairs (size is set by uniform).
631 };
632 
633 /// Provides control over how the ops in a Processor are combined in order to improve performance.
634 enum OptimizationFlags : unsigned long
635 {
636  // Below are listed all the optimization types.
637 
638  /// Do not optimize.
639  OPTIMIZATION_NONE = 0x00000000,
640 
641  /// Replace identity ops (other than gamma).
642  OPTIMIZATION_IDENTITY = 0x00000001,
643  /// Replace identity gamma ops.
645 
646  /// Replace a pair of ops where one is the inverse of the other.
655 
656  /// Compose a pair of ops into a single op.
663 
664  /**
665  * For integer and half bit-depths only, replace separable ops (i.e. no channel crosstalk
666  * ops) by a single 1D LUT of input bit-depth domain.
667  */
669 
670  /**
671  * Implement inverse Lut1D and Lut3D evaluations using a a forward LUT (faster but less
672  * accurate). Note that GPU evals always do FAST.
673  */
675 
676  // For CPU processor, in SSE mode, use a faster approximation for log, exp, and pow.
678 
679  // Break down certain ops into simpler components where possible. For example, convert a CDL
680  // to a matrix when possible.
682 
683  /**
684  * Turn off dynamic control of any ops that offer adjustment of parameter values after
685  * finalization (e.g. ExposureContrast).
686  */
688 
689  /// Apply all possible optimizations.
690  OPTIMIZATION_ALL = 0xFFFFFFFF,
691 
692  // The following groupings of flags are provided as a convenient way to select an overall
693  // optimization level.
694 
710 
716 
718 
719  /// For quite lossy optimizations.
721 
723 };
724 
725 //!cpp:type:: Enum to control the behavior of the internal caches e.g. the processor cache in
726 // :cpp:class:`Config` and :cpp:class:`Processor` instances. When debugging problems, it be useful
727 // to disable all the internal caches for example.
728 //
729 // The PROCESSOR_CACHE_SHARE_DYN_PROPERTIES flag allows the reuse of existing processor instances
730 // even if it contains some dynamic properties i.e. it speeds up the processor retrieval. That's the
731 // default behavior to avoid the processor creation hit. However, the caller app must then always
732 // set the dynamic property values prior to any color processing call (in CPU and GPU modes) as the
733 // same processor instance can now be used between several viewports for example.
734 enum ProcessorCacheFlags : unsigned int
735 {
737  PROCESSOR_CACHE_ENABLED = 0x01, // Enable the cache.
738  PROCESSOR_CACHE_SHARE_DYN_PROPERTIES = 0x02, // i.e. When the cache is enabled processor instances
739  // are shared even if they contain some dynamic
740  // properties.
741 
743 };
744 
745 // Conversion
746 
747 extern OCIOEXPORT const char * BoolToString(bool val);
748 extern OCIOEXPORT bool BoolFromString(const char * s);
749 
751 extern OCIOEXPORT LoggingLevel LoggingLevelFromString(const char * s);
752 
754 /// Will throw if string is not recognized.
756 
759  TransformDirection d2);
760 
761 extern OCIOEXPORT const char * BitDepthToString(BitDepth bitDepth);
762 extern OCIOEXPORT BitDepth BitDepthFromString(const char * s);
763 extern OCIOEXPORT bool BitDepthIsFloat(BitDepth bitDepth);
764 extern OCIOEXPORT int BitDepthToInt(BitDepth bitDepth);
765 
766 extern OCIOEXPORT const char * AllocationToString(Allocation allocation);
767 extern OCIOEXPORT Allocation AllocationFromString(const char * s);
768 
769 extern OCIOEXPORT const char * InterpolationToString(Interpolation interp);
771 
772 extern OCIOEXPORT const char * GpuLanguageToString(GpuLanguage language);
773 extern OCIOEXPORT GpuLanguage GpuLanguageFromString(const char * s);
774 
777 
778 extern OCIOEXPORT const char * CDLStyleToString(CDLStyle style);
779 extern OCIOEXPORT CDLStyle CDLStyleFromString(const char * style);
780 
781 extern OCIOEXPORT const char * RangeStyleToString(RangeStyle style);
782 extern OCIOEXPORT RangeStyle RangeStyleFromString(const char * style);
783 
784 extern OCIOEXPORT const char * FixedFunctionStyleToString(FixedFunctionStyle style);
786 
787 extern OCIOEXPORT const char * GradingStyleToString(GradingStyle style);
788 extern OCIOEXPORT GradingStyle GradingStyleFromString(const char * s);
789 
792 
793 extern OCIOEXPORT const char * NegativeStyleToString(NegativeStyle style);
794 extern OCIOEXPORT NegativeStyle NegativeStyleFromString(const char * style);
795 
796 /** Env. variables.
797  *
798  * These environmental variables are used by the OpenColorIO library.
799  * For variables that allow specifying more than one token, they should be separated by commas.
800  */
801 
802 // These variables are defined in src/OpenColorIO/Config.cpp.
803 
804 
805 /// The envvar 'OCIO' provides a path to the config file used by \ref Config::CreateFromEnv
806 extern OCIOEXPORT const char * OCIO_CONFIG_ENVVAR;
807 
808 /**
809  * The envvar 'OCIO_ACTIVE_DISPLAYS' provides a list of displays overriding the 'active_displays'
810  * list from the config file.
811  */
812 extern OCIOEXPORT const char * OCIO_ACTIVE_DISPLAYS_ENVVAR;
813 
814 /**
815  * The envvar 'OCIO_ACTIVE_VIEWS' provides a list of views overriding the 'active_views'
816  * list from the config file.
817  */
818 extern OCIOEXPORT const char * OCIO_ACTIVE_VIEWS_ENVVAR;
819 
820 /**
821  * The envvar 'OCIO_INACTIVE_COLORSPACES' provides a list of inactive color spaces
822  * overriding the 'inactive_color_spaces' list from the config file.
823  */
824 extern OCIOEXPORT const char * OCIO_INACTIVE_COLORSPACES_ENVVAR;
825 
826 /**
827  * The envvar 'OCIO_OPTIMIZATION_FLAGS' provides a way to force a given optimization level.
828  * Remove the variable or set the value to empty to not use it. Set the value of the variable
829  * to the desired optimization level as either an integer or hexadecimal value.
830  * Ex: OCIO_OPTIMIZATION_FLAGS="144457667" or "0x89c3fc3" for OPTIMIZATION_LOSSLESS.
831  */
832 extern OCIOEXPORT const char * OCIO_OPTIMIZATION_FLAGS_ENVVAR;
833 
834 /**
835  * The envvar 'OCIO_USER_CATEGORIES' allows the end-user to filter color spaces shown by
836  * applications. Only color spaces that include at least one of the supplied categories will be
837  * shown in application menus. Note that applications may also impose their own category filtering
838  * in addition to the user-supplied categories. For example, an application may filter by
839  * 'working-space' for a menu to select a working space while the user may also filter by
840  * '3d-basic' to only show spaces intended for 3d artists who should see the basic set of color
841  * spaces. The categories will be ignored if they would result in no color spaces being found.
842  */
843 extern OCIOEXPORT const char * OCIO_USER_CATEGORIES_ENVVAR;
844 
845 // TODO: Move to .rst
846 /*!rst::
847 Roles
848 *****
849 
850 ColorSpace Roles are used so that plugins, in addition to this API can have
851 abstract ways of asking for common colorspaces, without referring to them
852 by hardcoded names.
853 
854 Internal::
855  Extracting color space from file path - (ROLE_DEFAULT)
856  Interchange color spaces between configs - (ROLE_EXCHANGE_SCENE, ROLE_EXCHANGE_DISPLAY)
857 
858 App Helpers::
859  LegacyViewingPipeline - (ROLE_SCENE_LINEAR (LinearCC for exposure))
860  (ROLE_COLOR_TIMING (ColorTimingCC))
861  MixingColorSpaceManager - (ROLE_COLOR_PICKING)
862 
863 External Plugins (currently known)::
864 
865  Colorpicker UIs - (ROLE_COLOR_PICKING)
866  Compositor LogConvert - (ROLE_SCENE_LINEAR, ROLE_COMPOSITING_LOG)
867 
868 */
869 
870 /// "default"
871 extern OCIOEXPORT const char * ROLE_DEFAULT;
872 /// "reference"
873 extern OCIOEXPORT const char * ROLE_REFERENCE;
874 /// "data"
875 extern OCIOEXPORT const char * ROLE_DATA;
876 /// "color_picking"
877 extern OCIOEXPORT const char * ROLE_COLOR_PICKING;
878 /// "scene_linear"
879 extern OCIOEXPORT const char * ROLE_SCENE_LINEAR;
880 /// "compositing_log"
881 extern OCIOEXPORT const char * ROLE_COMPOSITING_LOG;
882 /// "color_timing"
883 extern OCIOEXPORT const char * ROLE_COLOR_TIMING;
884 /**
885  * This role defines the transform for painting textures. In some
886  * workflows this is just a inverse display gamma with some limits
887  */
888 extern OCIOEXPORT const char * ROLE_TEXTURE_PAINT;
889 /**
890  * This role defines the transform for matte painting. In some workflows
891  * this is a 1D HDR to LDR allocation. It is normally combined with
892  * another display transform in the host app for preview.
893  */
894 extern OCIOEXPORT const char * ROLE_MATTE_PAINT;
895 
896 /**
897  * The rendering role may be used to identify a specific color space to be used by CGI renderers.
898  * This is typically a scene-linear space but the primaries also matter since they influence the
899  * resulting color, especially in areas of indirect illumination.
900  */
901 extern OCIOEXPORT const char * ROLE_RENDERING;
902 /**
903  * The aces_interchange role is used to specify which color space in the config implements the
904  * standard ACES2065-1 color space (SMPTE ST2065-1). This may be used when converting
905  * scene-referred colors from one config to another.
906  */
907 extern OCIOEXPORT const char * ROLE_INTERCHANGE_SCENE;
908 /**
909  * The cie_xyz_d65_interchange role is used to specify which color space in the config implements
910  * CIE XYZ colorimetry with the neutral axis at D65. This may be used when converting
911  * display-referred colors from one config to another.
912  */
913 extern OCIOEXPORT const char * ROLE_INTERCHANGE_DISPLAY;
914 
915 /*!rst::
916 Shared View
917 ***********
918 
919 */
920 
921 /**
922  * A shared view using this for the color space name will use a display color space that
923  * has the same name as the display the shared view is used by.
924  */
925 extern OCIOEXPORT const char * OCIO_VIEW_USE_DISPLAY_NAME;
926 
927 // TODO: Move to .rst
928 /*!rst::
929 FormatMetadata
930 **************
931 
932 These constants describe various types of rich metadata. They are used with FormatMetadata
933 objects as the "name" part of a (name, value) pair. All of these types of metadata are
934 supported in the CLF/CTF file formats whereas other formats support some or none of them.
935 
936 Although the string constants used here match those used in the CLF/CTF formats, the concepts
937 are generic, so the goal is for other file formats to reuse the same constants within a
938 FormatMetadata object (even if the syntax used in a given format is somewhat different).
939 
940 */
941 
942 /**
943  * A description string -- used as the "Description" element in CLF/CTF and CDL, and to
944  * hold comments for other LUT formats when baking.
945  */
946 extern OCIOEXPORT const char * METADATA_DESCRIPTION;
947 
948 /**
949  * A block of informative metadata such as the "Info" element in CLF/CTF.
950  * Usually contains child elements.
951  */
952 extern OCIOEXPORT const char * METADATA_INFO;
953 
954 /**
955  * A string describing the expected input color space -- used as the "InputDescriptor"
956  * element in CLF/CTF and the "InputDescription" in CDL.
957  */
958 extern OCIOEXPORT const char * METADATA_INPUT_DESCRIPTOR;
959 
960 /**
961  * A string describing the output color space -- used as the "OutputDescriptor" element
962  * in CLF/CTF and the "OutputDescription" in CDL.
963  */
964 extern OCIOEXPORT const char * METADATA_OUTPUT_DESCRIPTOR;
965 
966 /**
967  * A name string -- used as a "name" attribute in CLF/CTF elements. Use on a GroupTransform
968  * to get/set the name for the CLF/CTF ProcessList. Use on an individual Transform
969  * (i.e. MatrixTransform, etc.) to get/set the name of the corresponding process node.
970  */
971 extern OCIOEXPORT const char * METADATA_NAME;
972 
973 /**
974  * An ID string -- used as an "id" attribute in CLF/CTF elements. Use on a GroupTransform
975  * to get/set the id for the CLF/CTF ProcessList. Use on an individual Transform
976  * (i.e. MatrixTransform, etc.) to get/set the id of the corresponding process node.
977  */
978 extern OCIOEXPORT const char * METADATA_ID;
979 
980 /*!rst::
981 Caches
982 ******
983 
984 */
985 
986 //!rst::
987 // .. c:var:: const char * OCIO_DISABLE_ALL_CACHES
988 //
989 // Disable all caches, including for FileTransforms and Optimized/CPU/GPU Processors. (Provided only
990 // to facilitate developer investigations.)
991 extern OCIOEXPORT const char * OCIO_DISABLE_ALL_CACHES;
992 
993 //!rst::
994 // .. c:var:: const char * OCIO_DISABLE_PROCESSOR_CACHES
995 //
996 // Disable only the Optimized, CPU, and GPU Processor caches. (Provided only to facilitate developer
997 // investigations.)
998 extern OCIOEXPORT const char * OCIO_DISABLE_PROCESSOR_CACHES;
999 
1000 //!rst::
1001 // .. c:var:: const char * OCIO_DISABLE_CACHE_FALLBACK
1002 //
1003 // By default the processor caches check for identical color transformations when cache keys do
1004 // not match. That fallback introduces a major performance hit in some cases so there is an env.
1005 // variable to disable the fallback.
1006 extern OCIOEXPORT const char * OCIO_DISABLE_CACHE_FALLBACK;
1007 
1008 
1009 // Archive config feature
1010 // Default filename (with extension) of an config.
1011 extern OCIOEXPORT const char * OCIO_CONFIG_DEFAULT_NAME;
1012 extern OCIOEXPORT const char * OCIO_CONFIG_DEFAULT_FILE_EXT;
1013 extern OCIOEXPORT const char * OCIO_CONFIG_ARCHIVE_FILE_EXT;
1014 
1015 // Built-in config feature
1016 // URI Prefix
1017 extern OCIOEXPORT const char * OCIO_BUILTIN_URI_PREFIX;
1018 
1019 } // namespace OCIO_NAMESPACE
1020 
1021 #endif
OCIO_SHARED_PTR< const ExponentWithLinearTransform > ConstExponentWithLinearTransformRcPtr
OCIO_SHARED_PTR< const LegacyViewingPipeline > ConstLegacyViewingPipelineRcPtr
OCIOEXPORT const char * OCIO_ACTIVE_VIEWS_ENVVAR
Algorithm used in ACES Output Transforms through v0.7.
ASC CDL specification v1.2.
OCIO_SHARED_PTR< DisplayViewTransform > DisplayViewTransformRcPtr
EnvironmentMode
Controls which environment variables are loaded into a Context object.
OCIOEXPORT const char * ROLE_SCENE_LINEAR
"scene_linear"
Represents exponent transform: pow( clamp(color), value ).
RGB to HSY (Hue, Saturation, Luminance) for linear spaces.
OCIO_SHARED_PTR< const GpuShaderCreator > ConstGpuShaderCreatorRcPtr
OCIO_SHARED_PTR< const ViewTransform > ConstViewTransformRcPtr
OCIOEXPORT const char * ROLE_COLOR_TIMING
"color_timing"
Linearly extrapolate the curve for negative values.
OCIOEXPORT const char * OCIO_VIEW_USE_DISPLAY_NAME
OCIO_SHARED_PTR< const LogAffineTransform > ConstLogAffineTransformRcPtr
OCIOEXPORT const char * InterpolationToString(Interpolation interp)
Image gamma value (double floating point value)
OCIOEXPORT EnvironmentMode EnvironmentModeFromString(const char *s)
Default RGB to Hue, Saturation, Luma conversion.
This class holds the GPU-related information needed to build a shader program from a specific process...
Definition: OpenColorIO.h:3723
cubic interpolation (not supported)
OCIO_SHARED_PTR< LookTransform > LookTransformRcPtr
OpenGL Shading Language for Vulkan.
OCIOEXPORT const char * RangeStyleToString(RangeStyle style)
OCIO_SHARED_PTR< ViewingRules > ViewingRulesRcPtr
HueCurveType
Types for GradingHueCurve.
OCIOEXPORT const char * ROLE_INTERCHANGE_DISPLAY
OCIO_SHARED_PTR< GpuShaderCreator > GpuShaderCreatorRcPtr
Classic RGB to HSV function.
OCIOEXPORT const char * ROLE_MATTE_PAINT
std::array< float, 3 > Float3
Image contrast value (double floating point value)
RangeStyle
A RangeTransform may be set to clamp the values, or not.
OCIO_SHARED_PTR< const ConfigMergingParameters > ConstConfigMergingParametersRcPtr
ACES 2.0 Gamut compression – EXPERIMENTAL.
OCIOEXPORT const char * GradingStyleToString(GradingStyle style)
ChannelOrdering
Used by PackedImageDesc to indicate the channel ordering of the image to process. ...
This is a light-weight wrapper around an image, that provides a context for pixel access...
Definition: OpenColorIO.h:3100
OCIO_SHARED_PTR< const LogCameraTransform > ConstLogCameraTransformRcPtr
Algorithms for Scene Linear color spaces.
OCIO_SHARED_PTR< Processor > ProcessorRcPtr
OCIO_SHARED_PTR< const ColorSpaceMenuHelper > ConstColorSpaceMenuHelperRcPtr
Represents a 1D-LUT transform.
OCIO_SHARED_PTR< ExponentTransform > ExponentTransformRcPtr
OCIOEXPORT const char * METADATA_DESCRIPTION
OpenGL ES Shading Language.
ACES 2.0 Display Rendering – EXPERIMENTAL.
ACES 1.3 Parametric Gamut Compression (expects ACEScg values)
OCIO_SHARED_PTR< DynamicPropertyGradingTone > DynamicPropertyGradingToneRcPtr
OCIOEXPORT Allocation AllocationFromString(const char *s)
OCIO_SHARED_PTR< ColorSpaceMenuParameters > ColorSpaceMenuParametersRcPtr
OCIO_SHARED_PTR< GradingHueCurve > GradingHueCurveRcPtr
OptimizationFlags
Provides control over how the ops in a Processor are combined in order to improve performance...
Interface used to access dynamic property double value.
OCIO_SHARED_PTR< const GpuShaderDesc > ConstGpuShaderDescRcPtr
OCIO_SHARED_PTR< AllocationTransform > AllocationTransformRcPtr
OCIO_SHARED_PTR< const Transform > ConstTransformRcPtr
GLint level
Definition: glcorearb.h:108
OCIO_SHARED_PTR< const ExponentTransform > ConstExponentTransformRcPtr
OCIO_SHARED_PTR< GPUProcessor > GPUProcessorRcPtr
OCIO_SHARED_PTR< FileRules > FileRulesRcPtr
Replace identity ops (other than gamma).
GLdouble s
Definition: glad.h:3009
Parametrized gamma and log segments with mirroring.
An exception class to throw for errors detected at runtime.
Definition: OpenColorIO.h:79
OCIO_SHARED_PTR< const BuiltinTransformRegistry > ConstBuiltinTransformRegistryRcPtr
OCIOEXPORT const char * OCIO_CONFIG_ARCHIVE_FILE_EXT
OCIO_SHARED_PTR< ConfigIOProxy > ConfigIOProxyRcPtr
OCIO_SHARED_PTR< const DynamicPropertyGradingPrimary > ConstDynamicPropertyGradingPrimaryRcPtr
OCIO_SHARED_PTR< Lut1DTransform > Lut1DTransformRcPtr
OCIOEXPORT const char * NegativeStyleToString(NegativeStyle style)
#define OCIO_NAMESPACE
Definition: OpenColorABI.h:8
OCIO_SHARED_PTR< const ExposureContrastTransform > ConstExposureContrastTransformRcPtr
HSYTransformStyle
Types for GradingHueCurve.
OCIO_SHARED_PTR< LogCameraTransform > LogCameraTransformRcPtr
Positive curve is rotated 180 degrees around the origin to handle negatives.
DynamicPropertyType
Types for dynamic properties.
No RGB to HSY conversion (use an outboard conversion).
Open Shading Language.
Adjust saturation as a function of saturation (a diagonal is the identity).
Interface used to access dynamic property GradingTone value.
CIE XYZ to 1976 CIELUV colour space (D65 white)
OCIO_SHARED_PTR< const Lut3DTransform > ConstLut3DTransformRcPtr
OCIO_SHARED_PTR< const CDLTransform > ConstCDLTransformRcPtr
ACES 2.0 Tonescale and chroma compression – EXPERIMENTAL.
OCIO_SHARED_PTR< const DynamicPropertyGradingHueCurve > ConstDynamicPropertyGradingHueCurveRcPtr
OCIO_SHARED_PTR< const ConfigMerger > ConstConfigMergerRcPtr
OCIOEXPORT const char * METADATA_INFO
CIE XYZ to 1931 xy chromaticity coordinates.
Clamp negative values.
OCIOEXPORT const char * METADATA_ID
OCIO_SHARED_PTR< FixedFunctionTransform > FixedFunctionTransformRcPtr
Horizontal (at 1) B-spline used for the lum-sat and sat-lum curves.
OCIO_SHARED_PTR< LegacyViewingPipeline > LegacyViewingPipelineRcPtr
the 'best' suitable interpolation type
OCIO_SHARED_PTR< const NamedTransform > ConstNamedTransformRcPtr
OCIOEXPORT BitDepth BitDepthFromString(const char *s)
OCIO_SHARED_PTR< const MixingColorSpaceManager > ConstMixingColorSpaceManagerRcPtr
OCIO_SHARED_PTR< DynamicPropertyGradingRGBCurve > DynamicPropertyGradingRGBCurveRcPtr
OCIO_SHARED_PTR< ExponentWithLinearTransform > ExponentWithLinearTransformRcPtr
OCIOEXPORT const char * LoggingLevelToString(LoggingLevel level)
the reference space for display color spaces
RGB to HSY (Hue, Saturation, Luma) for video spaces.
OCIOEXPORT const char * CDLStyleToString(CDLStyle style)
OCIOEXPORT const char * OCIO_BUILTIN_URI_PREFIX
GpuLanguage
Used when there is a choice of hardware shader language.
ProcessorCacheFlags
cpp:type:: Enum to control the behavior of the internal caches e.g. the processor cache in ...
OCIO_SHARED_PTR< const ColorSpaceMenuParameters > ConstColorSpaceMenuParametersRcPtr
OCIO_SHARED_PTR< const LogTransform > ConstLogTransformRcPtr
OCIO_SHARED_PTR< Look > LookRcPtr
OCIO_SHARED_PTR< const RangeTransform > ConstRangeTransformRcPtr
OCIOEXPORT bool BoolFromString(const char *s)
OCIOEXPORT const char * METADATA_INPUT_DESCRIPTOR
OCIO_SHARED_PTR< const ProcessorMetadata > ConstProcessorMetadataRcPtr
OCIO_SHARED_PTR< const GroupTransform > ConstGroupTransformRcPtr
OCIOEXPORT LoggingLevel LoggingLevelFromString(const char *s)
Replace a pair of ops where one is the inverse of the other.
OCIO_SHARED_PTR< ColorSpaceTransform > ColorSpaceTransformRcPtr
OCIO_SHARED_PTR< const FileTransform > ConstFileTransformRcPtr
OCIOEXPORT const char * AllocationToString(Allocation allocation)
OCIO_SHARED_PTR< const Context > ConstContextRcPtr
Vector of floats (size is set by uniform).
OCIO_SHARED_PTR< ProcessorMetadata > ProcessorMetadataRcPtr
OCIO_SHARED_PTR< const CPUProcessor > ConstCPUProcessorRcPtr
Interface used to access dynamic property ConstGradingRGBCurveRcPtr value.
Algorithms for Logarithmic color spaces.
OCIO_SHARED_PTR< DynamicPropertyDouble > DynamicPropertyDoubleRcPtr
OCIO_SHARED_PTR< Lut3DTransform > Lut3DTransformRcPtr
ACES 0.7 Gamut clamping algorithm – NOT IMPLEMENTED YET.
OCIOEXPORT const char * EnvironmentModeToString(EnvironmentMode mode)
OCIO_SHARED_PTR< const DynamicPropertyGradingRGBCurve > ConstDynamicPropertyGradingRGBCurveRcPtr
OCIO_SHARED_PTR< ExposureContrastTransform > ExposureContrastTransformRcPtr
OCIOEXPORT const char * OCIO_CONFIG_DEFAULT_FILE_EXT
OCIO_SHARED_PTR< const Baker > ConstBakerRcPtr
Used by GradingHueCurveTransform.
OCIOEXPORT const char * GpuLanguageToString(GpuLanguage language)
E/C to be applied to a linear space image.
OCIOEXPORT TransformDirection TransformDirectionFromString(const char *s)
Will throw if string is not recognized.
OCIO_SHARED_PTR< Baker > BakerRcPtr
OCIO_SHARED_PTR< LogTransform > LogTransformRcPtr
Image exposure value (double floating point value)
OCIO_SHARED_PTR< MixingColorSpaceManager > MixingColorSpaceManagerRcPtr
OCIOEXPORT GradingStyle GradingStyleFromString(const char *s)
A config defines all the color spaces to be available at runtime.
Definition: OpenColorIO.h:285
OCIOEXPORT const char * METADATA_NAME
OCIOEXPORT TransformDirection CombineTransformDirections(TransformDirection d1, TransformDirection d2)
Periodic, horizontal (at 0) B-spline used for the hue-fx curve.
OCIOEXPORT const char * ROLE_DATA
"data"
BSplineType
Types for GradingBSplineCurve.
Used by GradingRGBCurveTransform.
For quite lossy optimizations.
OCIOEXPORT const char * ROLE_TEXTURE_PAINT
OCIOEXPORT const char * OCIO_INACTIVE_COLORSPACES_ENVVAR
linear interpolation (trilinear for Lut3D)
Vector of int pairs (size is set by uniform).
OCIOEXPORT const char * ExposureContrastStyleToString(ExposureContrastStyle style)
std::function< void(const char *)> LoggingFunction
Define the logging function signature.
OCIOEXPORT GpuLanguage GpuLanguageFromString(const char *s)
OCIO_SHARED_PTR< CPUProcessor > CPUProcessorRcPtr
the default interpolation type
#define OCIOEXPORT
Definition: OpenColorABI.h:67
OCIO_SHARED_PTR< const LookTransform > ConstLookTransformRcPtr
OCIO_SHARED_PTR< const ColorSpaceTransform > ConstColorSpaceTransformRcPtr
OCIO_SHARED_PTR< GradingPrimaryTransform > GradingPrimaryTransformRcPtr
Here for historical reason but that's not supported.
RGB to HSY (Hue, Saturation, Luma) for log spaces.
OCIO_SHARED_PTR< GradingBSplineCurve > GradingBSplineCurveRcPtr
OCIO_SHARED_PTR< const Processor > ConstProcessorRcPtr
OCIOEXPORT const char * ROLE_INTERCHANGE_SCENE
Adjust saturation as a function of luma (a value of 1.0 is the identity).
OCIO_SHARED_PTR< DynamicPropertyGradingHueCurve > DynamicPropertyGradingHueCurveRcPtr
OCIO_SHARED_PTR< const ColorSpaceSet > ConstColorSpaceSetRcPtr
OCIO_SHARED_PTR< const FileRules > ConstFileRulesRcPtr
OCIO_SHARED_PTR< const ImageDesc > ConstImageDescRcPtr
OCIOEXPORT const char * OCIO_CONFIG_ENVVAR
The envvar 'OCIO' provides a path to the config file used by Config::CreateFromEnv.
Map input hue to output hue (where a diagonal line is the identity).
OCIOEXPORT const char * OCIO_DISABLE_ALL_CACHES
rst::
OCIO_SHARED_PTR< GradingRGBCurve > GradingRGBCurveRcPtr
An implementation of the ASC Color Decision List (CDL), based on the ASC v1.2 specification.
Base class for all the transform classes.
OCIO_SHARED_PTR< MatrixTransform > MatrixTransformRcPtr
Monotonic and periodic B-spline used for the hue-hue curve.
UniformDataType
Types for uniform data.
OCIOEXPORT const char * FixedFunctionStyleToString(FixedFunctionStyle style)
OCIO_SHARED_PTR< Transform > TransformRcPtr
Weighted Yellow Power Norm – NOT IMPLEMENTED YET.
Adjust saturation as a function of hue (a value of 1.0 is the identity).
GLenum mode
Definition: glcorearb.h:99
GradingStyle
Styles for grading transforms.
OCIO_SHARED_PTR< const DisplayViewTransform > ConstDisplayViewTransformRcPtr
OCIOEXPORT NegativeStyle NegativeStyleFromString(const char *style)
std::function< std::string(const std::string &)> ComputeHashFunction
Define Compute Hash function signature.
Adjust luma as a function of hue (a value of 1.0 is the identity).
OCIO_SHARED_PTR< const Lut1DTransform > ConstLut1DTransformRcPtr
OCIOEXPORT const char * OCIO_OPTIMIZATION_FLAGS_ENVVAR
OCIO_SHARED_PTR< const SystemMonitors > ConstSystemMonitorsRcPtr
OCIOEXPORT const char * OCIO_CONFIG_DEFAULT_NAME
OCIO_SHARED_PTR< ColorSpaceSet > ColorSpaceSetRcPtr
OCIO_SHARED_PTR< SystemMonitors > SystemMonitorsRcPtr
Monotonic quadratic B-spline for the sat-sat and lum-lum curves.
CDL that does not clamp.
OCIO_SHARED_PTR< ColorSpaceMenuHelper > ColorSpaceMenuHelperRcPtr
OCIO_SHARED_PTR< const Config > ConstConfigRcPtr
Compose a pair of ops into a single op.
OCIO_SHARED_PTR< const ConfigIOProxy > ConstConfigIOProxyRcPtr
OCIO_SHARED_PTR< RangeTransform > RangeTransformRcPtr
OCIO_SHARED_PTR< GradingToneTransform > GradingToneTransformRcPtr
OCIO_SHARED_PTR< NamedTransform > NamedTransformRcPtr
Load all env. vars (note: may reduce performance)
OCIO_SHARED_PTR< const MatrixTransform > ConstMatrixTransformRcPtr
OCIOEXPORT FixedFunctionStyle FixedFunctionStyleFromString(const char *style)
OCIO_SHARED_PTR< const Look > ConstLookRcPtr
OCIO_SHARED_PTR< const BuiltinTransform > ConstBuiltinTransformRcPtr
the main scene reference space
E/C to be applied to a video space image.
OCIO_SHARED_PTR< DynamicPropertyGradingPrimary > DynamicPropertyGradingPrimaryRcPtr
OCIO_SHARED_PTR< const GradingRGBCurveTransform > ConstGradingRGBCurveTransformRcPtr
OCIO_SHARED_PTR< const AllocationTransform > ConstAllocationTransformRcPtr
SMPTE ST-2084 OETF, scaled with 100 nits at 1.0 (neg vals mirrored)
DirectX High Level Shading Language.
OCIOEXPORT const char * OCIO_ACTIVE_DISPLAYS_ENVVAR
Interface used to access dynamic property GradingPrimary value.
OCIOEXPORT const char * BoolToString(bool val)
OCIO_SHARED_PTR< Config > ConfigRcPtr
OCIOEXPORT const char * OCIO_DISABLE_CACHE_FALLBACK
rst::
Map input hue to delta output hue (a value of 0.0 is the identity).
OCIO_SHARED_PTR< const FixedFunctionTransform > ConstFixedFunctionTransformRcPtr
E/C to be applied to a log space image.
Rec.2100 surround correction (takes one double for the gamma param)
OCIO_SHARED_PTR< BuiltinTransform > BuiltinTransformRcPtr
OCIO_SHARED_PTR< Context > ContextRcPtr
OCIO_SHARED_PTR< FileTransform > FileTransformRcPtr
OCIO_SHARED_PTR< BuiltinTransformRegistry > BuiltinTransformRegistryRcPtr
OCIO_SHARED_PTR< const GradingPrimaryTransform > ConstGradingPrimaryTransformRcPtr
OCIOEXPORT Interpolation InterpolationFromString(const char *s)
Periodic, horizontal (at 1) B-spline for hue-sat and hue-lum curves.
OCIO_SHARED_PTR< const GradingHueCurve > ConstGradingHueCurveRcPtr
auto ptr(T p) -> const void *
Definition: format.h:4331
GLuint GLfloat * val
Definition: glcorearb.h:1608
OCIO_SHARED_PTR< ImageDesc > ImageDescRcPtr
OCIOEXPORT RangeStyle RangeStyleFromString(const char *style)
OCIO_SHARED_PTR< const DynamicProperty > ConstDynamicPropertyRcPtr
OCIOEXPORT const char * ROLE_REFERENCE
"reference"
Apply all possible optimizations.
Lut1DHueAdjust
Used by :cpp:classLut1DTransform to control optional hue restoration algorithm.
OCIOEXPORT ExposureContrastStyle ExposureContrastStyleFromString(const char *style)
OCIOEXPORT const char * OCIO_USER_CATEGORIES_ENVVAR
Adjust luma as a function of luma, maintaining hue & sat (diagonal is identity).
OCIO_SHARED_PTR< const GradingBSplineCurve > ConstGradingBSplineCurveRcPtr
OCIOEXPORT CDLStyle CDLStyleFromString(const char *style)
OCIO_SHARED_PTR< LogAffineTransform > LogAffineTransformRcPtr
OCIOEXPORT const char * ROLE_COLOR_PICKING
"color_picking"
OCIOEXPORT int BitDepthToInt(BitDepth bitDepth)
OCIO_SHARED_PTR< ConfigMerger > ConfigMergerRcPtr
OCIO_SHARED_PTR< GpuShaderDesc > GpuShaderDescRcPtr
FixedFunctionStyle
Enumeration of the :cpp:class:FixedFunctionTransform transform algorithms.
OCIO_SHARED_PTR< GroupTransform > GroupTransformRcPtr
OCIOEXPORT const char * METADATA_OUTPUT_DESCRIPTOR
Represents a 3D-LUT transform.
ACES 2.0 RGB to JMh – EXPERIMENTAL.
ACES 0.2 Gamut clamping algorithm – NOT IMPLEMENTED YET.
OCIO_SHARED_PTR< const GradingHueCurveTransform > ConstGradingHueCurveTransformRcPtr
OCIOEXPORT const char * ROLE_RENDERING
OCIO_SHARED_PTR< const DynamicPropertyGradingTone > ConstDynamicPropertyGradingToneRcPtr
OCIOEXPORT const char * TransformDirectionToString(TransformDirection dir)
OCIOEXPORT TransformDirection GetInverseTransformDirection(TransformDirection dir)
Only load vars in the config's environment section.
Adjust luma as a function of saturation (a value of 1.0 is the identity).
OCIO_SHARED_PTR< CDLTransform > CDLTransformRcPtr
OCIO_SHARED_PTR< const GradingToneTransform > ConstGradingToneTransformRcPtr
OCIOEXPORT bool BitDepthIsFloat(BitDepth bitDepth)
OCIO_SHARED_PTR< const ViewingRules > ConstViewingRulesRcPtr
OCIO_SHARED_PTR< GradingRGBCurveTransform > GradingRGBCurveTransformRcPtr
A BSpline curve defined with GradingControlPoint.
OCIO_SHARED_PTR< ColorSpace > ColorSpaceRcPtr
OCIOEXPORT const char * ROLE_COMPOSITING_LOG
"compositing_log"
OCIOEXPORT const char * ROLE_DEFAULT
"default"
OCIO_SHARED_PTR< const GradingRGBCurve > ConstGradingRGBCurveRcPtr
Two parameterized LogAffineTransforms with a middle linear segment.
OpenGL ES Shading Language.
OCIO_SHARED_PTR< GradingHueCurveTransform > GradingHueCurveTransformRcPtr
Interface used to access dynamic property ConstGradingHueCurveRcPtr value.
This class contains meta information about the process that generated this processor. The results of these functions do not impact the pixel processing.
Definition: OpenColorIO.h:2924
OCIO_SHARED_PTR< ConfigMergingParameters > ConfigMergingParametersRcPtr
OCIO_SHARED_PTR< const DynamicPropertyDouble > ConstDynamicPropertyDoubleRcPtr
tetrahedral interpolation (Lut3D only)
OCIO_SHARED_PTR< const ColorSpace > ConstColorSpaceRcPtr
CIE XYZ to 1976 u'v' chromaticity coordinates.
Negative values are passed through unchanged.
RGBCurveType
Types for GradingRGBCurve.
Dark to dim surround correction (ACES 1.0)
OCIO_SHARED_PTR< T > DynamicPtrCast(OCIO_SHARED_PTR< U > const &ptr)
OCIO_SHARED_PTR< const GPUProcessor > ConstGPUProcessorRcPtr
OCIOEXPORT const char * BitDepthToString(BitDepth bitDepth)
OCIOEXPORT const char * OCIO_DISABLE_PROCESSOR_CACHES
rst::
Monotonic quadratic B-spline used for the RGBM curves.
The File Rules are a set of filepath to color space mappings that are evaluated from first to last...
Definition: OpenColorIO.h:1726
OCIO_SHARED_PTR< ViewTransform > ViewTransformRcPtr
Algorithms for Video color spaces.
ExposureContrastStyle
Enumeration of the :cpp:class:ExposureContrastTransform transform algorithms.
OCIO_SHARED_PTR< DynamicProperty > DynamicPropertyRcPtr