public readonly record struct ColorGradingA whole grade: one global range and three weighted by luminance.
Remarks
Unreal's decomposition, and it replaces four of Unity's separate effects — Lift/Gamma/Gain, Shadows/Midtones/Highlights, Channel Mixer and Colour Curves are all ways of authoring a colour transform, and adopting four overlapping models because one engine ships four is how a grading stack becomes unexplainable. See docs/plan/30.
The three ranges are a partition. Their weights sum to one at every luminance, so setting all three to the same values gives the same picture as setting Global to them. That property is what makes the decomposition usable rather than four controls fighting over the same pixels.
⚠ What this cannot express is the one real loss against Unity: hue-versus-hue and hue-versus-saturation curves are not a CDL, and no combination of these five operations is one. That is what a grading LUT is for.
It lives beside the volume settings rather than beside the tonemap that consumes it, and it moved when the look profile landed: PostProcessSettings carries a whole grade as one opinion, and the settings type is upstream of the effect set — the same direction IPostProcessTarget already sends the knowledge. Nothing about the grade itself changed, including its ColorGrading document name.
Fields and properties (7)
public ColorGradingRange GlobalApplied everywhere, before the three ranges.
public ColorGradingRange ShadowsApplied where the image is dark.
public ColorGradingRange MidtonesApplied in between.
public ColorGradingRange HighlightsApplied where the image is bright.
public float ShadowsMaxWhere the shadow range stops contributing, in exposure-normalised luminance.
public float HighlightsMinWhere the highlight range starts contributing.
public static ColorGrading NeutralA grade that changes nothing, and the base to write one from.
Methods (1)
public static ColorGrading Lerp(in ColorGrading from, in ColorGrading to, float amount)The grade part-way between two, range by range.
Used by (11)
- BlendedGradingVixen.Rendering
- PostEffectTestsVixen.Rendering.PostFx.Tests
- PostProcessOverlayVixen.Rendering
- PostProcessSettingsVixen.Rendering
- PostProcessVolumeTestsVixen.Rendering.Tests
- TonemapAssetVixen.Rendering.PostFx
- TonemapRendererVixen.Rendering.PostFx
- TypeRegistrationVixen.Rendering.PostFx
- Vixen_Rendering_ColorGradingSerializerVixen.Rendering
- Vixen_Rendering_Ecs_PostProcessSettingsSerializerVixen.Rendering
- Vixen_Rendering_PostFx_TonemapAssetSerializerVixen.Rendering.PostFx