CNA-GAP-031: ClusteredForwardEffect binds no material textures: many punctual lights cannot be combined with a texture set
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.
The CNAEXT ClusteredForwardEffect consumes scalar material inputs only (base colour, metallic, roughness, IOR and the scalar clearcoat, sheen, iridescence and subsurface lobes) and binds no material textures, so a game that needs many lights gives up PbrEffect's texture set and shadowed punctual light, as the effect's own header states.
- Identifier
CNA-GAP-031- Category
- Functional gap
- Subsystem
- Graphics & renderers
- 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
- CNA::Graphics::ClusteredForwardEffect (CNAEXT engine layer)
Expected behaviour
No XNA contract applies; the design boundary is documented in the effect's header.
Actual behaviour at TARGET
The class comment in ClusteredForwardEffect.hpp explains that the effect is separate from PbrEffect because PbrEffect's program is renderer-generated, and that what a game gives up by using it instead is PbrEffect's texture set and its shadowed punctual light. The setMaterialExtensions note says only the scalar lobes are consumed and that the effect binds no material textures at all. ClusteredForwardEffect.cpp declares sampled textures only for the area-light BRDF table, the opaque-frame copy used by transmission and the three light-list textures. Its vertex format is position plus normal. A textured scene with many lights (as reported by the cna-city sample @ 267b79b9, not checked here) must choose between the two effects.
Source locations
modules/graphics-ext/include/CNA/Graphics/ClusteredForwardEffect.hpp— class comment and setMaterialExtensions note
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
The engine layer's clustered-lighting tests cover light assignment and shading of untextured surfaces.
Regression test
If textures are added: a pixel test combining a base-colour texture with a cluster of lights.
Blast radius
Engine-layer users who want both many lights and textured materials.
Workaround
No workaround is known.
Related pages
The same subject is explained at several altitudes. These are the neighbouring pages at each one.
- User guide
- CNAEXT engine layer: limits
- Internals
- graphics-ext internals: shaders
- Known issues
- Functional gap index