CNA-GAP-039: The glTF vertex ABI carries two UV channels, one joint-influence set and one colour set; further sets are dropped and reported
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.
TEXCOORD sets beyond the first two sampled ones, JOINTS_1/WEIGHTS_1 and later, and COLOR_1 and later are not imported; each loss is named in the import report.
- Identifier
CNA-GAP-039- 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> and the offline converters on glTF primitives with extra attribute sets
Expected behaviour
A glTF primitive may carry any number of TEXCOORD_n, JOINTS_n/WEIGHTS_n and COLOR_n sets.
Actual behaviour at TARGET
CNA's packed vertex layouts carry two UV channels, four joint influences and one colour. AppendGltfMeshReportEXT in GltfImportCore.cpp reports uv-set-mismatch (maps that need a third distinct set fall back to channel 0), influence-sets-dropped (with the worst dropped weight) and color-sets-dropped. gltf-limitations.md lists the three limits (GLTF-091, GLTF-188).
Source locations
modules/content/src/GltfImport/GltfImportCore.cpp— AppendGltfMeshReportEXT: uv-set-mismatch, influence-sets-dropped, color-sets-droppeddocs/gltf-limitations.md— vertex-layout limits: COLOR_1, a third UV set, extra influence sets
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
GltfImportReportTests.cpp and GltfAttributeCoverageTests.cpp cover the diagnostics; the dropped data is by design not rendered.
Regression test
None needed for the gap itself; a new layout would need stride-table and renderer tests.
Blast radius
Assets with more than four influences per vertex (skinning is approximated with the first set), lightmap-plus-detail materials using three UV sets, or multiple vertex colour sets.
Workaround
Re-export with at most four influences, two UV sets and one colour set.
Related pages
The same subject is explained at several altitudes. These are the neighbouring pages at each one.
- Known issues
- Functional gap index