Vixen
02b45cc4
csharp
public sealed class ReflectionProbeSelector

Which probe lights a point, and how much of it.

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

Remarks

Kept apart from any render feature on purpose: choosing a probe is a question about positions and volumes, and everything hard about it — nesting, ties, fading at the edges — is decidable without a device, a frame or a descriptor set.

Selection is per object, and it costs an int. The cubes are one binding with a count, bound for the frame; the volumes are an array beside them in the per-frame block; and an object picks both with an index that ForwardLightingRenderFeature writes into the per-object block it already fills. Nothing extra is bound per draw.

What this used to say was that per-object selection needed a descriptor set per probe bound per draw. That is the shape to avoid rather than the shape to build — a set per object in all but name — and the obstacle was never the renderer. It was the compiler: Raven folded an array of textures into the uniform block, which no backend can express and both emitted anyway.

Fields and properties (1)

  • public IList<ReflectionProbe> Probes

    The probes this selector chooses between.

Methods (1)

  • public (ReflectionProbe Probe, float Weight)? Select(Vector3 position)

    The probe that applies at a point, and how much of it shows.

Used by (7)

  • EnvironmentLightingTestsVixen.Rendering.Tests
  • ForwardFrameTestsVixen.Rendering.Tests
  • ForwardLightingRenderFeatureVixen.Rendering
  • ForwardLightingTestsVixen.Rendering.Tests
  • ObjectRecordTestsVixen.Rendering.Tests
  • SceneLightingVixen.Rendering
  • SceneLightingTestsVixen.Rendering.Tests