Vixen
02b45cc4
csharp
public sealed class ScreenProbeAccumulateFill

Folds each frame's resolved probes into their history, on the device.

No guide page documents this yet — the page shows what the code says about itself.

Remarks

The device half of ScreenProbeHistory, and checked against it. The same capped running mean, the same reprojection through last frame's camera, the same plane test for disocclusion — one invocation per probe, reading the resolve's planes and last frame's history set, writing this frame's.

The camera bookkeeping is owned here, as the CPU history owns its own. ViewProjection is the camera the surfaces being recorded stand under; after each record it becomes the previous one, which is what the next frame reprojects through. Pairing this frame's camera with last frame's surfaces reconstructs history that exists nowhere, on either side of the comparison.

Every binding index comes off the compiled effect and the set is filled by hand, for the reasons every compute driver here shares. Swap runs inside Record — the written set is the front set by the time the caller binds planes for the upsample.

Fields and properties (10)

  • public const string ShaderName

    The shader this dispatches.

  • public EffectSystem? Effects

    Where the variant is resolved from. Null dispatches nothing.

  • public ComputePipelineCache? Pipelines

    Where the compute pipeline comes from. Null dispatches nothing.

  • public DescriptorAllocator? Descriptors

    Where the descriptor sets come from. Null dispatches nothing.

  • public ParameterCollection Parameters

    The parameters the uniform block is filled from.

  • public Matrix4x4 ViewProjection

    The camera the surfaces being recorded stand under — this frame's, forward.

  • public int MaxFrames

    How many frames a probe's history may weigh at most.

  • public float Tolerance

    How far off a history probe's plane this frame's surface may stand, in world units.

  • public int Frames

    How many accumulations have been recorded.

  • public string? Skipped

    Why the last call recorded nothing, or null when it recorded something.

Methods (3)

  • public ScreenProbeAccumulateFill(IGraphicsDevice device)

    Creates an accumulator on a device. Nothing is allocated until the first dispatch.

  • public int Record(ICommandList commands, ScreenProbeAtlas atlas, ScreenProbeTexture texture, ScreenProbeHistoryTexture history)

    Records one frame's accumulation and swaps the history.

  • public void Dispose()

    Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.

Used by (6)

  • ArenaIlluminationThirdPersonShooter
  • CompositorBuilderVixen.Rendering
  • PostEffectTestsVixen.Rendering.PostFx.Tests
  • ScreenProbeAccumulateDeviceTestsVixen.Graphics.Golden.Tests
  • ScreenProbeGatherImageTestsVixen.Graphics.Golden.Tests
  • ScreenProbeGatherRendererVixen.Rendering.PostFx