stride3d/stride · error · ArgumentOutOfRangeException

Graphics Profile Level 11 or higher required for…

Error message

Graphics Profile Level 11 or higher required for Voxelization.

What it means

VoxelRenderer.Collect throws ArgumentOutOfRangeException when the active graphics profile is below Level_11_0 (feature level 11). Voxelization relies on compute shaders and resources only available at feature level 11+, so the renderer refuses to run on weaker profiles. This is a hard capability requirement, not a data-range problem despite the exception type.

Solutions

  1. Run on hardware and drivers supporting Direct3D feature level 11.0 or higher.
  2. Raise/verify the requested minimum graphics profile at device initialization so the device is created with Level_11_0 capability.
  3. Remove or conditionally disable voxel volumes when the device profile is below Level_11_0, degrading visuals instead of crashing.

Example fix

// before
scene.Add(voxelVolume); // Collect throws on Level_10 devices
// after
if (device.Features.CurrentProfile >= GraphicsProfile.Level_11_0)
{
    scene.Add(voxelVolume);
}
Defensive patterns

Strategy: validation

Validate before calling

if (device.Features.CurrentProfile < GraphicsProfile.Level_11_0)
{
    // disable voxel volumes, use fallback lighting
    voxelEnabled = false;
}

Try / catch

try { scene.Add(voxelVolume); }
catch (ArgumentOutOfRangeException) { voxelEnabled = false; }

Prevention

When it happens

Trigger: Rendering a scene containing voxel volumes on a GraphicsDevice whose Features.CurrentProfile is below GraphicsProfile.Level_11_0 (e.g. D3D feature level 10 hardware or a profile-limited initialization).

Common situations: Running on old GPUs/integrated graphics that only support feature level 10.x; the game initialized with a lower minimum graphics profile; headless/emulated adapters reporting low profiles.

Understand the failure class

Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.

Related errors


AI-assisted analysis of stride3d/stride@96fad776d2 (2026-09-14). Data as JSON: /api/errors/df5cace7dc8bb5fb. Report an issue: GitHub.

Appendix: source

Thrown at sources/engine/Stride.Voxels/Voxels/GraphicsCompositor/VoxelRenderer.cs:53

        readonly ProfilingKey MipmappingVoxelizationProfilingKey = new ProfilingKey("Voxelization: Mipmapping");

        public List<RenderStage> VoxelStages { get; set; } = new List<RenderStage>();

        public Dictionary<VoxelVolumeComponent, ProcessedVoxelVolume> GetProcessedVolumes()
        {
            return renderVoxelVolumeData;
        }
        public virtual void Collect(RenderContext Context, Shadows.IShadowMapRenderer ShadowMapRenderer)
        {
            renderVoxelVolumes = Context.VisibilityGroup.Tags.Get(CurrentRenderVoxelVolumes);
            renderVoxelVolumeData = Context.VisibilityGroup.Tags.Get(CurrentProcessedVoxelVolumes);

            if (renderVoxelVolumes == null || renderVoxelVolumes.Count == 0)
                return;

            if (Context.RenderSystem.GraphicsDevice.Features.CurrentProfile < GraphicsProfile.Level_11_0)
            {
                throw new ArgumentOutOfRangeException("Graphics Profile Level 11 or higher required for Voxelization.");
            }

            //Setup per volume passes and texture allocations
            foreach ( var pair in renderVoxelVolumes )
            {
                var dataVolume = pair.Value;
                var bounds = dataVolume.VolumeSize;

                ProcessedVoxelVolume processedVolume;
                if (!renderVoxelVolumeData.TryGetValue(pair.Key, out processedVolume))
                {
                    processedVolume = new ProcessedVoxelVolume();
                    renderVoxelVolumeData.Add(pair.Key, processedVolume);
                }


                //Setup matrix
                Vector3 matScale = dataVolume.VolumeSize;

View on GitHub (pinned to 96fad776d2)