Vixen
02b45cc4
csharp
public sealed class RenderSystem

Drives one frame: extract, cull, prepare, sort.

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

Remarks

The phases of [docs/plan/06 § Frame structure], minus recording — which needs materials and effects and is the next slice. What is here is the part that turns a scene into ordered work lists, and it is entirely CPU-side and deterministic, which is why it can be tested without a device.

The order is a data dependency, not a convention. Culling needs every object extracted, because an object added late would be tested against a stale bitset; preparation needs culling, because its whole value is doing per-visible-object work rather than per-object work; sorting needs preparation, because a feature's sort group may be something preparation resolved. Reordering any pair silently produces a frame that is merely wrong rather than one that fails.

Fields and properties (6)

  • public RenderObjectStore Objects

    Every renderable in the scene, and the per-feature arrays beside them.

  • public IVisibilityGroup Visibility

    Which objects each view can see, and what decided that.

  • public JobScheduler? Scheduler

    The scheduler culling and sorting run on. Null runs them inline.

  • public IReadOnlyList<RenderStage> Stages

    The stages, in the order they were added.

  • public IReadOnlyList<RenderView> Views

    The views for the frame being built.

  • public IReadOnlyList<RootRenderFeature> Features

    The root features, in the order they were added.

Methods (12)

  • public RenderStage AddStage(RenderStage stage)

    Adds a stage and gives it its index.

  • public TFeature AddFeature<TFeature>(TFeature feature) where TFeature : RootRenderFeature

    Adds a root feature and lets it register its data.

  • public RenderStage? FindStage(string name)

    The stage with this name, or null.

  • public void SetViews(IEnumerable<RenderView> frameViews)

    Replaces the frame's views. Called once per frame, before Draw.

  • public void Draw()

    Runs extract, cull, prepare and sort over the current views.

  • public void Extract()

    Pulls the scene into the flat arrays.

  • public void Cull()

    Tests every object against every view.

  • public void Prepare()

    Lets every feature fill data for what survived culling.

  • public void Sort()

    Builds and orders the work list for every (view, stage) pair.

  • public IReadOnlyList<RenderNode> Nodes(RenderView view, RenderStage stage)

    The ordered work for one view and stage, empty when there is none.

  • public void Record(RenderView view, RenderStage stage, RenderDrawContext context)

    Records one view's stage into a command list, handing each feature its own nodes in runs.

  • public void Dispose()

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

Used by (130, showing 40)

  • ArenaThirdPersonShooter
  • BuiltThirdPersonShooter.Frame.Tests
  • FrameDocumentTestsThirdPersonShooter.Frame.Tests
  • VirtualGeometryGameVirtualGeometry
  • AutoExposureTestsVixen.Rendering.PostFx.Tests
  • BindlessFrameTestsVixen.Rendering.Tests
  • BloomTestsVixen.Rendering.PostFx.Tests
  • BufferTransferDeviceTestsVixen.Graphics.Golden.Tests
  • BufferTransferTestsVixen.Rendering.Tests
  • ClusterCullingDeviceTestsVixen.Graphics.Golden.Tests
  • ClusteredLightingTestsVixen.Rendering.Tests
  • ClusteredShadingDeviceTestsVixen.Graphics.Golden.Tests
  • CompositorAssetTestsVixen.Rendering.Tests
  • CompositorBuilderVixen.Rendering
  • CompositorContentTestsVixen.Assets.Tests
  • CompositorImageTestsVixen.Graphics.Golden.Tests
  • CountingFeatureVixen.Rendering.Tests
  • CountingFeatureVixen.Engine.Renderer.Tests
  • CountingSubFeatureVixen.Rendering.Tests
  • DefaultFrameTestsVixen.Rendering.Tests
  • DepthPrepassTestsVixen.Rendering.Tests
  • DescriptorBindingTestsVixen.Rendering.Tests
  • DistanceFieldAoImageTestsVixen.Graphics.Golden.Tests
  • DrawCompactionTestsVixen.Rendering.Tests
  • ForwardFrameTestsVixen.Rendering.Tests
  • ForwardLightingRenderFeatureVixen.Rendering
  • ForwardLightingTestsVixen.Rendering.Tests
  • FrameVixen.Rendering.Tests
  • FrameBudgetTestsVixen.Rendering.Tests
  • GpuCullingRendererVixen.Rendering
  • GpuDrivenCompositorTestsVixen.Rendering.Tests
  • GpuVisibilityGroupTestsVixen.Rendering.Tests
  • GraphicsCompositorVixen.Rendering
  • GraphicsCompositorTestsVixen.Rendering.Tests
  • HarnessVixen.Rendering.Tests
  • HarnessVixen.Rendering.Tests
  • HarnessVixen.Rendering.Tests
  • HarnessVixen.Rendering.Tests
  • HarnessVixen.Rendering.PostFx.Tests
  • HarnessVixen.Rendering.PostFx.Tests