Vixen
02b45cc4
csharp
public sealed class RenderObjectStore

Every renderable in the scene, as one flat array plus the per-feature arrays beside it.

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

Remarks

Ids are dense and reused. Removal marks a slot dead and pushes it onto a free list rather than compacting, because the id is what every feature's parallel array is indexed by — compacting would move objects and invalidate every registered array at once, which is the opposite of what the RenderDataHolder arrangement is for.

The cost of that is holes: a scene that streamed a thousand objects out leaves a thousand dead slots the culling loop still walks. It is a real cost and a cheap one — a dead slot is one predictable branch on a value already in cache — and it buys stable ids, which everything else here depends on.

Fields and properties (5)

  • public RenderDataHolder Data

    Per-feature arrays, indexed by the same ids as this store.

  • public int Count

    One past the highest id ever handed out — the length every array is grown to.

  • public int LiveCount

    How many slots hold a live object.

  • public Span<RenderObject> All

    The objects, live and dead, as one span.

  • public ref RenderObject this[RenderObjectId id]

    The object with this id.

Methods (4)

  • public RenderObjectId Add(in RenderObject value)

    Adds an object, reusing a dead slot where there is one.

  • public void Remove(RenderObjectId id)

    Removes an object, freeing its slot for reuse.

  • public void Clear()

    Drops every object, keeping the memory for the next scene.

  • public void Dispose()

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

Used by (67, showing 40)

  • ArenaThirdPersonShooter
  • VirtualGeometryGameVirtualGeometry
  • BindlessFrameTestsVixen.Rendering.Tests
  • ClusteredLightingTestsVixen.Rendering.Tests
  • ClusteredShadingDeviceTestsVixen.Graphics.Golden.Tests
  • CompositorAssetTestsVixen.Rendering.Tests
  • CompositorImageTestsVixen.Graphics.Golden.Tests
  • CountingFeatureVixen.Rendering.Tests
  • CullJobVixen.Rendering
  • DepthPrepassTestsVixen.Rendering.Tests
  • DescriptorBindingTestsVixen.Rendering.Tests
  • DrawCompactionTestsVixen.Rendering.Tests
  • ForwardFrameTestsVixen.Rendering.Tests
  • ForwardLightingRenderFeatureVixen.Rendering
  • ForwardLightingTestsVixen.Rendering.Tests
  • FrameBudgetTestsVixen.Rendering.Tests
  • GpuCullingRendererVixen.Rendering
  • GpuVisibilityGroupVixen.Rendering
  • GpuVisibilityGroupTestsVixen.Rendering.Tests
  • GraphicsCompositorTestsVixen.Rendering.Tests
  • IVisibilityGroupVixen.Rendering
  • InstancingRenderFeatureVixen.Rendering
  • IrradianceBounceDeviceTestsVixen.Graphics.Golden.Tests
  • IrradianceFieldRendererVixen.Rendering
  • IrradianceRefinementTestsVixen.Rendering.Tests
  • IrradianceShadingDeviceTestsVixen.Graphics.Golden.Tests
  • LodRenderFeatureVixen.Rendering
  • LodTestsVixen.Rendering.Tests
  • MaterialBindingTestsVixen.Rendering.Tests
  • MaterialRecordBufferTestsVixen.Rendering.Tests
  • MaterialRenderFeatureVixen.Rendering
  • MaterialTextureIndexTestsVixen.Rendering.Tests
  • MeshExtractionSystemVixen.Rendering
  • MeshExtractionTestsVixen.Rendering.Tests
  • MeshRenderFeatureVixen.Rendering
  • MeshRenderFeatureTestsVixen.Rendering.Tests
  • MotionVectorRenderFeatureVixen.Rendering
  • MotionVectorTestsVixen.Rendering.Tests
  • ObjectRecordTestsVixen.Rendering.Tests
  • ParticleRenderFeatureVixen.Rendering