Vixen
02b45cc4
csharp
public struct PostProcessOverlay

Several volumes folded into one set of contributions.

Read the guide page for this →

Remarks

What the frame actually consumes. A PostProcessSettings is what one volume authors; this is what a stack of them comes to, and it is a different type because it carries a weight per field — see Blended for why that is unavoidable.

The fold is Add, applied in ascending priority order. Each call lays one volume over what is already there. The rule per field has three cases, and the third is the one that makes overlapping volumes work:

The volume has no opinion — nothing changes. Nothing underneath had one either — the field becomes the volume's value at the volume's weight, and the node will lerp from its own authored value. Both have one — the value lerps toward the new one by the new weight, and the weight lerps toward 1 by the same amount. That second half is what makes a half-faded volume over a fully-applied one come out half way between them rather than half way back to the document.

⚠ It is not commutative, and it must not be. Priority is what decides which volume is on top, so the fold is ordered and the caller sorts. Two volumes at the same priority resolve in whatever order the world walks, which is arbitrary — and that is the honest answer rather than a hidden tiebreak, because two volumes that both fully claim one field at one priority is a level-design mistake rather than a case to define.

Fields and properties (22)

  • public Blended? ExposureCompensation

    Stops added to the exposure.

  • public Blended? LocalHighlightContrast

    How much the local exposure brings highlights down.

  • public Blended? LocalShadowContrast

    And shadows up.

  • public Blended? BloomIntensity

    How much of the bloom pyramid is composited.

  • public Blended? BloomThreshold

    Luminance above which a pixel blooms.

  • public BlendedColour? BloomTint

    What colour the glow is.

  • public Blended? Contrast

    Contrast around middle grey.

  • public Blended? Saturation

    Saturation.

  • public BlendedColour? ColourFilter

    A multiplier on the image before the curve.

  • public Blended? Temperature

    The temperature the scene is graded against.

  • public Blended? Tint

    Green against magenta.

  • public Blended? HueShift

    Hue rotation, in degrees.

  • public Blended? FogDensity

    How thick the fog is.

  • public BlendedColour? FogColour

    What colour it is.

  • public Blended? VignetteIntensity

    How dark the corners go.

  • public Blended? VignetteSmoothness

    How abrupt that falloff is.

  • public Blended? GrainIntensity

    How much grain there is.

  • public Blended? AberrationStrength

    Channel offset at the screen edge.

  • public Blended? FlareIntensity

    How bright the flare's ghosts are.

  • public Blended? MaximumDefocus

    How wide the defocus may get.

  • public static PostProcessOverlay None

    Nothing has an opinion, which is what a frame with no volumes folds to.

  • public readonly bool IsEmpty

    Whether any field carries a contribution.

Methods (1)

  • public void Add(in PostProcessSettings settings, float weight)

    Lays one volume's settings over this fold.

Used by (13)

  • ArenaThirdPersonShooter
  • BloomRendererVixen.Rendering.PostFx
  • DepthOfFieldRendererVixen.Rendering.PostFx
  • FogRendererVixen.Rendering.PostFx
  • GraphicsCompositorVixen.Rendering
  • IPostProcessTargetVixen.Rendering
  • LensFlareRendererVixen.Rendering.PostFx
  • LocalExposureRendererVixen.Rendering.PostFx
  • PostEffectTestsVixen.Rendering.PostFx.Tests
  • PostProcessVolumeSystemVixen.Rendering
  • PostProcessVolumeTestsVixen.Rendering.Tests
  • TonemapRendererVixen.Rendering.PostFx
  • VignetteRendererVixen.Rendering.PostFx