CNA-GAP-044: glTF punctual lights are approximated as at most three directional lights; point and spot lights have no native support

CNA snapshot 009d40f5  ·  Known Issues › Functional gaps  ·  source links pinned to 009d40f5

✓

Evidence basis: source-verified at the pinned commit; tests exist (not executed for this page). Claims on this page were checked by reading the CNA source at commit 009d40f5; unless a sentence says otherwise, nothing here was built or executed. Nothing on this page was executed unless the Evidence section says so.

KHR_lights_punctual is imported into XNA's three-directional-light model: point and spot lights become directional lights aimed at the origin, ranges and cones are ignored, and lights beyond three are dropped and counted.

Identifier
CNA-GAP-044
Category
Functional gap
Subsystem
Models & glTF
Status
Open
Verified against
CNA 009d40f5 (009d40f5dd085c4e674d3479675fac84b12b3e0a)
Evidence basis
Source-verified: read at TARGET, not executed
Tests touching this area
Yes: see Current tests
Affected contract
ContentManager::Load<Model> on glTF files using KHR_lights_punctual; the imported lights applied to BasicEffect/PbrEffect

Expected behaviour

KHR_lights_punctual defines point and spot lights with range and cone falloff.

Actual behaviour at TARGET

ExtractPunctualLightsEXT in GltfImportCore.cpp maps the file's lights onto XNA's three directional lights, and AppendGltfLightReportEXT reports the approximation and the dropped lights. gltf-limitations.md classifies the extension as APPROXIMATED_AND_REPORTED, and plan_gltf.md keeps real point/spot lighting open as GLTF ROBUST row 6: a light ABI shared by every renderer, which XNA's IEffectLights cannot express.

Source locations

Evidence

Checked by reading at 009d40f5; not executed.

Focused reproduction

No focused reproduction is known. Nothing has been invented here; the evidence above is what exists.

Current tests

GltfLightBudgetTests.cpp and GltfClipAndLightTests.cpp cover the mapping and the light budget.

Regression test

If native lights are added, a lit-pixel oracle for a point and a spot light with range and cone.

Blast radius

Scenes lit by glTF point or spot lights; lighting differs from the authored intent.

Workaround

Light the scene in application code with the effect's own lights or a custom effect.

The same subject is explained at several altitudes. These are the neighbouring pages at each one.