Skip to content

cluster-id-without-cluster-geometry-feature-check

Status: shipped (Phase 8) — see CHANGELOG.

What it detects

A call to ClusterID() (SM 6.10 ray-tracing intrinsic) without a guarding IsClusteredGeometrySupported() check on a path-dominating predicate. Activates only on SM 6.10+ targets.

Why it matters on a GPU

ClusterID() is functionally pending on devices that haven't yet shipped the clustered-geometry preview support (Fall 2026 per DirectX dev blog). An unguarded call breaks on older RT-capable devices: drivers may return zero, generate undefined hardware traps, or fall back to a non-clustered BVH path silently.

Examples

Bad

hlsl
[shader("closesthit")]
void ch(inout Payload p, in Attribs a) { uint id = ClusterID(); }

Good

hlsl
[shader("closesthit")]
void ch(inout Payload p, in Attribs a) {
    if (IsClusteredGeometrySupported()) { uint id = ClusterID(); }
}

Options

none

Fix availability

suggestion — Add a feature-availability check.

© 2026 NelCit — Apache-2.0 (code), CC-BY-4.0 (docs).