in unity/Assets/PostProcessingV2/Runtime/Effects/ColorGrading.cs [489:539]
Texture2D GetCurveTexture(bool hdr)
{
if (m_GradingCurves == null)
{
var format = GetCurveFormat();
m_GradingCurves = new Texture2D(Spline.k_Precision, 2, format, false, true)
{
name = "Internal Curves Texture",
hideFlags = HideFlags.DontSave,
anisoLevel = 0,
wrapMode = TextureWrapMode.Clamp,
filterMode = FilterMode.Bilinear
};
}
var hueVsHueCurve = settings.hueVsHueCurve.value;
var hueVsSatCurve = settings.hueVsSatCurve.value;
var satVsSatCurve = settings.satVsSatCurve.value;
var lumVsSatCurve = settings.lumVsSatCurve.value;
var masterCurve = settings.masterCurve.value;
var redCurve = settings.redCurve.value;
var greenCurve = settings.greenCurve.value;
var blueCurve = settings.blueCurve.value;
var pixels = m_Pixels;
for (int i = 0; i < Spline.k_Precision; i++)
{
// Secondary/VS curves
float x = hueVsHueCurve.cachedData[i];
float y = hueVsSatCurve.cachedData[i];
float z = satVsSatCurve.cachedData[i];
float w = lumVsSatCurve.cachedData[i];
pixels[i] = new Color(x, y, z, w);
// YRGB
if (!hdr)
{
float m = masterCurve.cachedData[i];
float r = redCurve.cachedData[i];
float g = greenCurve.cachedData[i];
float b = blueCurve.cachedData[i];
pixels[i + Spline.k_Precision] = new Color(r, g, b, m);
}
}
m_GradingCurves.SetPixels(pixels);
m_GradingCurves.Apply(false, false);
return m_GradingCurves;
}