UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
UE::Color::ACES Namespace Reference

Classes

class  FGamutCuspTable
 
class  FReachMTable
 
class  FTextureLookupBase
 
class  FUpperHullGammaTable
 
struct  JMhParams
 
struct  Table1D
 
struct  Table3D
 
struct  ToneScaleParams
 

Functions

float PanlrcForward (float Value, float F_L)
 
float PanlrcInverse (float Value, float F_L)
 
bool AnyBelowZero (const FVector3f &RGB)
 
bool OutsideHull (const FVector3f &RGB)
 
float Y_to_J (float Y, const JMhParams &Params)
 
float WrapTo360 (float Hue)
 
int32 HuePositionInUniformTable (float Hue, int32 TableSize)
 
int32 ClampToTableBounds (int32 Entry, int32 TableSize)
 
float Smin (float a, float b, float s)
 
FVector3f JMh_to_RGB (const FVector3f &JMh, const JMhParams &Params)
 
JMhParams InitJMhParams (const FColorSpace &InColorSpace)
 
ToneScaleParams InitToneScaleParams (float PeakLuminance)
 
Table1D MakeReachMTable (float PeakLuminance)
 
FVector3f HSV_to_RGB (const FVector3f &HSV)
 
FVector3f RGB_to_JMh (const FVector3f &RGB, const JMhParams &Params)
 
Table3D MakeGamutTable (const FColorSpace &InLimitingColorSpace, float PeakLuminance)
 
FVector2f CuspToTable (float h, const Table3D &Gt)
 
float GetFocusGain (float J, float CuspJ, float LimitJMax)
 
float SolveJIntersect (float J, float M, float FocusJ, float MaxJ, float SlopeGain)
 
FVector3f FindGamutBoundaryIntersection (const FVector3f &JMh_s, const FVector2f &JM_cusp_in, float J_focus, float J_max, float SlopeGain, float gamma_top, float gamma_bottom)
 
bool EvaluateGammaFit (const FVector2f &JMcusp, const FVector3f TestJMh[3], float TopGamma, float PeakLuminance, float LimitJMax, float Mid_J, float FocusDist, float LowerHullGamma, const JMhParams &LimitJMhParams)
 
Table1D MakeUpperHullGamma (const Table3D &GamutCuspTable, float PeakLuminance, float LimitJMax, float Mid_J, float FocusDist, float LowerHullGamma, const JMhParams &LimitJMhParams)
 
void GetTransformResources (FRDGBuilder &GraphBuilder, float InPeakLuminance, FRHIShaderResourceView *&OutReachMTable, FRHIShaderResourceView *&OutGamutCuspTable, FRHIShaderResourceView *&OutUpperHullGammaTable)
 

Variables

constexpr int32 TABLE_SIZE = 360
 
constexpr int32 TABLE_ADDITION_ENTRIES = 2
 
constexpr int32 TABLE_TotalSize = TABLE_SIZE + TABLE_ADDITION_ENTRIES
 
constexpr int32 GAMUT_TABLE_BASE_INDEX = 1
 
constexpr float ReferenceLuminance = 100.f
 
constexpr float L_A = 100.f
 
constexpr float Y_b = 20.f
 
constexpr float AcResp = 1.f
 
constexpr float Ra = 2.f * AcResp
 
constexpr float Ba = 0.05f + (2.f - Ra)
 
constexpr float Surround [3] = { 0.9f, 0.59f, 0.9f }
 
constexpr float SmoothCusps = 0.12f
 
constexpr float SmoothM = 0.27f
 
constexpr float CuspMidBlend = 1.3f
 
constexpr float FocusGainBlend = 0.3f
 
constexpr float FocusAdjustGain = 0.55f
 
constexpr float FocusDistance = 1.35f
 
constexpr float FocusDistanceScaling = 1.75f
 
constexpr float CompressionThreshold = 0.75f
 
constexpr float GammaMinimum = 0.0f
 
constexpr float GammaMaximum = 5.0f
 
constexpr float GammaSearchStep = 0.4f
 
constexpr float GammaAccuracy = 1e-5f
 

Function Documentation

◆ AnyBelowZero()

bool UE::Color::ACES::AnyBelowZero ( const FVector3f RGB)
inline

◆ ClampToTableBounds()

int32 UE::Color::ACES::ClampToTableBounds ( int32  Entry,
int32  TableSize 
)

◆ CuspToTable()

FVector2f UE::Color::ACES::CuspToTable ( float  h,
const Table3D Gt 
)

◆ EvaluateGammaFit()

bool UE::Color::ACES::EvaluateGammaFit ( const FVector2f JMcusp,
const FVector3f  TestJMh[3],
float  TopGamma,
float  PeakLuminance,
float  LimitJMax,
float  Mid_J,
float  FocusDist,
float  LowerHullGamma,
const JMhParams LimitJMhParams 
)

◆ FindGamutBoundaryIntersection()

FVector3f UE::Color::ACES::FindGamutBoundaryIntersection ( const FVector3f JMh_s,
const FVector2f JM_cusp_in,
float  J_focus,
float  J_max,
float  SlopeGain,
float  gamma_top,
float  gamma_bottom 
)

◆ GetFocusGain()

float UE::Color::ACES::GetFocusGain ( float  J,
float  CuspJ,
float  LimitJMax 
)

◆ GetTransformResources()

void UE::Color::ACES::GetTransformResources ( FRDGBuilder GraphBuilder,
float  InPeakLuminance,
FRHIShaderResourceView *&  OutReachMTable,
FRHIShaderResourceView *&  OutGamutCuspTable,
FRHIShaderResourceView *&  OutUpperHullGammaTable 
)

◆ HSV_to_RGB()

FVector3f UE::Color::ACES::HSV_to_RGB ( const FVector3f HSV)

◆ HuePositionInUniformTable()

int32 UE::Color::ACES::HuePositionInUniformTable ( float  Hue,
int32  TableSize 
)

◆ InitJMhParams()

JMhParams UE::Color::ACES::InitJMhParams ( const FColorSpace InColorSpace)

◆ InitToneScaleParams()

ToneScaleParams UE::Color::ACES::InitToneScaleParams ( float  PeakLuminance)

◆ JMh_to_RGB()

FVector3f UE::Color::ACES::JMh_to_RGB ( const FVector3f JMh,
const JMhParams Params 
)

◆ MakeGamutTable()

Table3D UE::Color::ACES::MakeGamutTable ( const FColorSpace InLimitingColorSpace,
float  PeakLuminance 
)

◆ MakeReachMTable()

Table1D UE::Color::ACES::MakeReachMTable ( float  PeakLuminance)

◆ MakeUpperHullGamma()

Table1D UE::Color::ACES::MakeUpperHullGamma ( const Table3D GamutCuspTable,
float  PeakLuminance,
float  LimitJMax,
float  Mid_J,
float  FocusDist,
float  LowerHullGamma,
const JMhParams LimitJMhParams 
)

◆ OutsideHull()

bool UE::Color::ACES::OutsideHull ( const FVector3f RGB)

◆ PanlrcForward()

float UE::Color::ACES::PanlrcForward ( float  Value,
float  F_L 
)

◆ PanlrcInverse()

float UE::Color::ACES::PanlrcInverse ( float  Value,
float  F_L 
)

◆ RGB_to_JMh()

FVector3f UE::Color::ACES::RGB_to_JMh ( const FVector3f RGB,
const JMhParams Params 
)

◆ Smin()

float UE::Color::ACES::Smin ( float  a,
float  b,
float  s 
)

◆ SolveJIntersect()

float UE::Color::ACES::SolveJIntersect ( float  J,
float  M,
float  FocusJ,
float  MaxJ,
float  SlopeGain 
)

◆ WrapTo360()

float UE::Color::ACES::WrapTo360 ( float  Hue)

◆ Y_to_J()

float UE::Color::ACES::Y_to_J ( float  Y,
const JMhParams Params 
)

Variable Documentation

◆ AcResp

constexpr float UE::Color::ACES::AcResp = 1.f
constexpr

◆ Ba

constexpr float UE::Color::ACES::Ba = 0.05f + (2.f - Ra)
constexpr

◆ CompressionThreshold

constexpr float UE::Color::ACES::CompressionThreshold = 0.75f
constexpr

◆ CuspMidBlend

constexpr float UE::Color::ACES::CuspMidBlend = 1.3f
constexpr

◆ FocusAdjustGain

constexpr float UE::Color::ACES::FocusAdjustGain = 0.55f
constexpr

◆ FocusDistance

constexpr float UE::Color::ACES::FocusDistance = 1.35f
constexpr

◆ FocusDistanceScaling

constexpr float UE::Color::ACES::FocusDistanceScaling = 1.75f
constexpr

◆ FocusGainBlend

constexpr float UE::Color::ACES::FocusGainBlend = 0.3f
constexpr

◆ GammaAccuracy

constexpr float UE::Color::ACES::GammaAccuracy = 1e-5f
constexpr

◆ GammaMaximum

constexpr float UE::Color::ACES::GammaMaximum = 5.0f
constexpr

◆ GammaMinimum

constexpr float UE::Color::ACES::GammaMinimum = 0.0f
constexpr

◆ GammaSearchStep

constexpr float UE::Color::ACES::GammaSearchStep = 0.4f
constexpr

◆ GAMUT_TABLE_BASE_INDEX

constexpr int32 UE::Color::ACES::GAMUT_TABLE_BASE_INDEX = 1
constexpr

◆ L_A

constexpr float UE::Color::ACES::L_A = 100.f
constexpr

◆ Ra

constexpr float UE::Color::ACES::Ra = 2.f * AcResp
constexpr

◆ ReferenceLuminance

constexpr float UE::Color::ACES::ReferenceLuminance = 100.f
constexpr

◆ SmoothCusps

constexpr float UE::Color::ACES::SmoothCusps = 0.12f
constexpr

◆ SmoothM

constexpr float UE::Color::ACES::SmoothM = 0.27f
constexpr

◆ Surround

constexpr float UE::Color::ACES::Surround[3] = { 0.9f, 0.59f, 0.9f }
constexpr

◆ TABLE_ADDITION_ENTRIES

constexpr int32 UE::Color::ACES::TABLE_ADDITION_ENTRIES = 2
constexpr

◆ TABLE_SIZE

constexpr int32 UE::Color::ACES::TABLE_SIZE = 360
constexpr

Source code adapted from OpenColorIO/src/OpenColorIO/ops/fixedfunction/ACES2 (v2.4.1)

Copyright Contributors to the OpenColorIO Project.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

◆ TABLE_TotalSize

constexpr int32 UE::Color::ACES::TABLE_TotalSize = TABLE_SIZE + TABLE_ADDITION_ENTRIES
constexpr

◆ Y_b

constexpr float UE::Color::ACES::Y_b = 20.f
constexpr