public sealed class RenderDataHolderThe per-object data arrays features declare, grown in lockstep and addressed by RenderObjectId.
No guide page documents this yet — the page shows what the code says about itself.
Remarks
This is the extensibility mechanism, and it is worth understanding before adding anything to the renderer. A feature that needs per-object state does not extend a type and does not add a field to RenderObject: it registers an array of its own, which this holder keeps the same length as every other. Adding skinning therefore does not touch the mesh feature, and an object that is not skinned costs one unused slot rather than a branch on every path.
Structure of arrays, not array of structures. Each registered array is contiguous and holds one field for every object, so a job that reads only transforms touches only transforms. The alternative — one fat struct per object — makes every pass pull in every feature's bytes, and the passes that hurt are the ones that read one small thing for every object in the scene.
Native memory rather than T[]: these are read by jobs, they are reallocated as the object count grows, and they are the arrays that would otherwise dominate a frame's GC pressure. The unmanaged constraint follows from that and is the reason a feature stores a handle or an index here rather than a reference — see RootRenderFeature for where references live.
Fields and properties (2)
public int CapacityHow many objects every registered array currently has room for.
public int ArrayCountHow many arrays have been registered.
Methods (5)
public RenderDataKey<T> Register<T>() where T : unmanagedRegisters an array of , one element per object.
public Span<T> Data<T>(RenderDataKey<T> key) where T : unmanagedThe array a key names, as a span over live storage.
public void EnsureCapacity(int objectCount)Makes room for objects in every array.
public void ClearSlot(RenderObjectId id)Zeroes every array's slot for one object, so a reused id starts clean.
public void Dispose()Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
Used by (53, showing 40)
- ArenaThirdPersonShooter
- VirtualGeometryGameVirtualGeometry
- BindlessFrameTestsVixen.Rendering.Tests
- ClusteredLightingTestsVixen.Rendering.Tests
- ClusteredShadingDeviceTestsVixen.Graphics.Golden.Tests
- CompositorAssetTestsVixen.Rendering.Tests
- CompositorImageTestsVixen.Graphics.Golden.Tests
- CountingFeatureVixen.Rendering.Tests
- DepthPrepassTestsVixen.Rendering.Tests
- DescriptorBindingTestsVixen.Rendering.Tests
- DrawCompactionTestsVixen.Rendering.Tests
- ForwardFrameTestsVixen.Rendering.Tests
- ForwardLightingRenderFeatureVixen.Rendering
- ForwardLightingTestsVixen.Rendering.Tests
- GpuVisibilityGroupTestsVixen.Rendering.Tests
- GraphicsCompositorTestsVixen.Rendering.Tests
- InstancingRenderFeatureVixen.Rendering
- IrradianceBounceDeviceTestsVixen.Graphics.Golden.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
- ParticleRenderFeatureVixen.Rendering
- ParticleRenderFeatureTestsVixen.Rendering.Tests
- PunctualShadowTestsVixen.Rendering.Tests
- RenderDataHolderTestsVixen.Rendering.Tests
- RenderObjectStoreVixen.Rendering
- RenderObjectStoreTestsVixen.Rendering.Tests
- RenderSystemTestsVixen.Rendering.Tests
- SceneLightingTestsVixen.Rendering.Tests
- ShadowCacheTestsVixen.Rendering.Tests