CNA-GAP-031: ClusteredForwardEffect binds no material textures: many punctual lights cannot be combined with a texture set

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.

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

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.

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