Vixen
02b45cc4
csharp
public sealed class SamplerCache

Samplers, created once per distinct description.

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

Remarks

The smallest cache in the renderer and the one with the widest reach. A sampler is pure state — twelve fields, no memory, no contents — so two that describe the same filtering are the same sampler, and every post pass in a frame wants LinearClamp. Vulkan puts a hard limit on how many a device will create (4000 on some drivers, and 96 combined image samplers per stage on old Mali), which turns "make one where you need one" from wasteful into a device-lost.

Keyed by the description itself, which works because it is a record struct: structural equality over exactly the fields the driver compiles into the sampler, including Name. Two identical samplers under different names are two entries, deliberately — the name is what a capture shows, and merging them would make a RenderDoc frame name the wrong one.

Fields and properties (3)

  • public int Count

    How many distinct samplers have been created.

  • public SamplerHandle LinearClamp

    Trilinear and clamped, which is what a full-screen pass reading a render target wants.

  • public SamplerHandle PointClamp

    Unfiltered and clamped, for a lookup where interpolation would be nonsense.

Methods (3)

  • public SamplerCache(IGraphicsDevice device)

    Samplers, created once per distinct description.

  • public SamplerHandle GetOrCreate(in SamplerDescription description)

    The sampler for a description, creating it the first time.

  • public void Dispose()

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

Used by (47, showing 40)

  • AmbientCombineRendererVixen.Rendering.PostFx
  • AmbientOcclusionRendererVixen.Rendering.PostFx
  • AutoExposureRendererVixen.Rendering.PostFx
  • AutoExposureTestsVixen.Rendering.PostFx.Tests
  • BloomRendererVixen.Rendering.PostFx
  • BloomTestsVixen.Rendering.PostFx.Tests
  • ClusteredShadingDeviceTestsVixen.Graphics.Golden.Tests
  • CompositorAssetTestsVixen.Rendering.Tests
  • CompositorBuilderVixen.Rendering
  • CompositorImageTestsVixen.Graphics.Golden.Tests
  • ComputeRendererVixen.Rendering
  • DepthOfFieldRendererVixen.Rendering.PostFx
  • DescriptorBindingTestsVixen.Rendering.Tests
  • DescriptorBindingsVixen.Rendering
  • DistanceFieldAoImageTestsVixen.Graphics.Golden.Tests
  • DistanceFieldAoRendererVixen.Rendering.PostFx
  • FogRendererVixen.Rendering.PostFx
  • ForwardFrameTestsVixen.Rendering.Tests
  • FullScreenRendererVixen.Rendering
  • FxaaRendererVixen.Rendering.PostFx
  • IndirectDiffuseImageTestsVixen.Graphics.Golden.Tests
  • IndirectDiffuseRendererVixen.Rendering.PostFx
  • IrradianceBounceDeviceTestsVixen.Graphics.Golden.Tests
  • IrradianceShadingDeviceTestsVixen.Graphics.Golden.Tests
  • LensFlareRendererVixen.Rendering.PostFx
  • LocalExposureRendererVixen.Rendering.PostFx
  • MotionBlurRendererVixen.Rendering.PostFx
  • OutlineRendererVixen.Rendering.PostFx
  • PostEffectRendererVixen.Rendering.PostFx
  • PostEffectTestsVixen.Rendering.PostFx.Tests
  • PostProcessTestsVixen.Rendering.Tests
  • PunctualShadowRendererVixen.Rendering
  • RenderPassRendererVixen.Rendering
  • ScreenProbeBilateralImageTestsVixen.Graphics.Golden.Tests
  • ScreenProbeGatherImageTestsVixen.Graphics.Golden.Tests
  • ScreenProbeGatherRendererVixen.Rendering.PostFx
  • ScreenProbeUpsampleImageTestsVixen.Graphics.Golden.Tests
  • ScreenProbeUpsampleRendererVixen.Rendering.PostFx
  • ShadowMapRendererVixen.Rendering
  • SharpenRendererVixen.Rendering.PostFx