float3 ACESFilm(float3 x)
{
float a = 2.51f;
float b = 0.03f;
float c = 2.43f;
float d = 0.59f;
float e = 0.14f;
return saturate((x*(a*x+b))/(x*(c*x+d)+e));
}
の近似. 定義域を[0 2]に狭める.
//domain x: [0 2]
float3 ACESFilmApprox(float3 x)
{
return -0.053173 + x*(2.170622 + x*(-2.132296 + x*(0.996822 + x*-0.176583)));
}