Vixen
dd8b0a81
csharp
public sealed class RenderGraph

A frame, declared before it happens.

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

Remarks

Passes state what they read and write; the graph culls what nothing needs, gives non-overlapping resources the same memory, places the barriers, derives the attachment load and store actions, and then runs the passes that survived.

This is not optional garnish ([05](../../docs/plan/05-graphics-rhi.md)). With six backends, hand-maintaining barrier correctness across deferred shading, shadows, SSAO, SSR, TAA, bloom and depth of field is not achievable — and a barrier that is merely too broad costs performance silently while one that is too narrow is a race that reproduces on one vendor's driver and not another's. Hand-written barriers stay available through Barrier for the hot paths that want them.

The graph is rebuilt every frame and that is deliberate: a frame's passes depend on what is visible, and a cached graph would be a cache invalidated by everything. Rebuilding is cheap because the physical resources are not — TransientResourcePool holds those across frames.

Fields and properties (9)

  • public TransientResourcePool Pool

    The pool its transient resources come from.

  • public int PassCount

    How many passes were declared.

  • public int SurvivingPassCount

    How many passes survived culling. Meaningless before Compile.

  • public int ResourceCount

    How many virtual resources were declared.

  • public int BarrierCount

    How many barriers the last Execute emitted.

  • public QueueScheduling Scheduling

    Whether the frame is spread over the device's queues, or all on the graphics one.

  • public RenderGraphSchedule? Schedule

    Which queue each pass runs on. Meaningless before Compile.

  • public IReadOnlyList<string> Warnings

    Warnings the graph found while compiling — frames that run and quietly waste work.

  • public IGpuScopeSink? Profiler

    Where each pass's cost is reported, or to measure nothing.

Methods (17)

Used by (149, showing 40)

  • TriangleGameHelloTriangle
  • VideoGameVideoPlayback
  • AppGraphicsVixen.App.Hosting
  • AutoExposureRendererVixen.Rendering.PostFx
  • AutoExposureTestsVixen.Rendering.PostFx.Tests
  • BentNormalAmbientImageTestsVixen.Graphics.Golden.Tests
  • BloomRendererVixen.Rendering.PostFx
  • BloomTestsVixen.Rendering.PostFx.Tests
  • BufferReadbackRendererVixen.Rendering
  • BufferTransferDeviceTestsVixen.Graphics.Golden.Tests
  • BufferTransferTestsVixen.Rendering.Tests
  • BufferUploadRendererVixen.Rendering
  • ClusterCullingDeviceTestsVixen.Graphics.Golden.Tests
  • ClusterCullingRendererVixen.Rendering
  • ClusteredLightingTestsVixen.Rendering.Tests
  • CompositorAssetTestsVixen.Rendering.Tests
  • CompositorFrameVixen.Rendering
  • CompositorLifetimeTestsVixen.Rendering.Tests
  • ComputeRendererVixen.Rendering
  • DebugDrawImageTestsVixen.Graphics.Golden.Tests
  • DebugOverlayRendererVixen.Engine.Renderer
  • DepthPrepassTestsVixen.Rendering.Tests
  • DepthResolveImageTestsVixen.Graphics.Golden.Tests
  • DepthResolveTestsVixen.Graphics.RenderGraph.Tests
  • DescriptorBindingTestsVixen.Rendering.Tests
  • DistanceFieldAoImageTestsVixen.Graphics.Golden.Tests
  • DitherImageTestsVixen.Graphics.Golden.Tests
  • EditorGizmoFacingDeviceTestsVixen.Graphics.Golden.Tests
  • FixtureVixen.Graphics.Golden.Tests
  • FixtureTextureViewTestsVixen.Graphics.Golden.Tests
  • ForwardFrameTestsVixen.Rendering.Tests
  • FrameVixen.Rendering.Tests
  • FrameResizeTestsVixen.Rendering.PostFx.Tests
  • FramesVixen.Rendering.Tests
  • FullScreenRendererVixen.Rendering
  • GlobalDistanceFieldRendererVixen.Rendering
  • GoldenImageTestsVixen.Graphics.Golden.Tests
  • GpuCullingRendererVixen.Rendering
  • GpuVisibilityGroupTestsVixen.Rendering.Tests
  • GraphicsCompositorVixen.Rendering