CNA-GAP-044: glTF punctual lights are approximated as at most three directional lights; point and spot lights have no native support
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
modules/content/src/GltfImport/GltfImportCore.cpp— ExtractPunctualLightsEXT and AppendGltfLightReportEXTdocs/gltf-limitations.md— KHR_lights_punctual: APPROXIMATED_AND_REPORTEDplans/plan_gltf.md— GLTF-459: GLTF ROBUST row 6 open
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.
Related pages
The same subject is explained at several altitudes. These are the neighbouring pages at each one.
- Known issues
- Functional gap index