Vixen
02b45cc4
csharp
public enum DescriptorSetSlot

Which of the conventional descriptor sets a binding belongs to.

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

Remarks

The set index is not a free choice. Four sets, ordered by how often they change, so a frame rebinds as little as possible: set 0 once, set 1 per view, set 2 per material, set 3 per draw. Vulkan and D3D12 both reward this and both punish the alternative, because changing set n invalidates every set above it.

Raven marks a binding [PerFrame], [PerView], [PerMaterial] or [PerDraw] and the index follows — one BindingPlan shared by both of its backends and its reflection, so the set the RHI builds a layout from is the one the module was decorated with ([07 § C](07-raven-shader-pipeline.md)). An unmarked binding is per-material.

And a fifth, which is not part of that ordering. Bindless is the one set nothing in a frame writes: a BindlessTable owns it, updates individual descriptors in place, and hands out indices that shaders subscript it with. It is last rather than first — where its change frequency would put it — because the four below it are a convention every existing shader is compiled against, and renumbering them to gain one slot would be renumbering every set in the engine to move the one that never changes.

Fields and properties (5)

  • PerFrame

    Camera, time, the lighting environment. Bound once a frame.

  • PerView

    Shadow matrices and view-dependent buffers. Bound once a view.

  • PerMaterial

    Textures and material constants. The default for an unmarked binding.

  • PerDraw

    Transforms and instance data, usually through a dynamic offset.

  • Bindless

    The unbounded descriptor array a BindlessTable owns.

Used by (139, showing 40)

  • PbrShowcaseGamePbrShowcase
  • VirtualGeometryGameVirtualGeometry
  • AlwaysCompilesVixen.Rendering.Tests
  • AlwaysCompilesVixen.Rendering.Tests
  • AlwaysCompilesVixen.Rendering.Tests
  • AlwaysCompilesVixen.Rendering.Tests
  • AlwaysCompilesVixen.Rendering.Tests
  • AutoExposureTestsVixen.Rendering.PostFx.Tests
  • BinVixen.Rendering
  • BindlessFrameTestsVixen.Rendering.Tests
  • BindlessSamplingDeviceTestsVixen.Graphics.Golden.Tests
  • BindlessSetLayoutTestsVixen.Shaders.Tests
  • BindlessTableVixen.Graphics
  • BloomTestsVixen.Rendering.PostFx.Tests
  • BoundBindingsVixen.Rendering
  • BufferTransferDeviceTestsVixen.Graphics.Golden.Tests
  • ChainVixen.Graphics.Golden.Tests
  • ClusterCullingDeviceTestsVixen.Graphics.Golden.Tests
  • ClusteredLightingTestsVixen.Rendering.Tests
  • ClusteredShadingDeviceTestsVixen.Graphics.Golden.Tests
  • CompilesVixen.Rendering.Tests
  • CompilesVixen.Rendering.Tests
  • CompilesVixen.Rendering.Tests
  • CompilesVixen.Rendering.Tests
  • CompilesVixen.Rendering.Tests
  • CompositorAssetTestsVixen.Rendering.Tests
  • CompositorImageTestsVixen.Graphics.Golden.Tests
  • ComputeAssetVixen.Rendering
  • ComputeRendererVixen.Rendering
  • DepthPrepassTestsVixen.Rendering.Tests
  • DescriptorAllocatorTestsVixen.Graphics.Tests
  • DescriptorBindingTestsVixen.Rendering.Tests
  • DescriptorBindingsVixen.Rendering
  • DescriptorLayoutTestsVixen.Graphics.Tests
  • DescriptorSetLayoutDescriptionVixen.Graphics
  • DrawCompactionTestsVixen.Rendering.Tests
  • EffectVixen.Shaders
  • EffectBindingVixen.Shaders
  • EffectBindingDataVixen.Shaders
  • EffectCacheTestsVixen.Shaders.Tests