Concatenate the per-element colours of a ladder, the policy all three
emissive geometries share: when ANY rung carries colours the result carries
them, and a rung that does not is filled with white (full scale for the
dtype; an RGBA ladder's alpha fills opaque, the per-element-opacity
identity). null when no rung has colours. Dtype and layout (3 = RGB,
4 = RGBA) come from the first coloured rung; a rung that disagrees is
malformed data and throws, naming the level. Zero-row rungs abstain.
Every coloured rung is first checked against its OWN declared layout
(assertColorLayout): an RGBA buffer that omits colorComponents (default
3) agrees with an RGB ladder and fits the allocation, so the cross-rung
compare alone would copy it at stride 3 and mis-stride every element after it.
Concatenate the per-element colours of a ladder, the policy all three emissive geometries share: when ANY rung carries colours the result carries them, and a rung that does not is filled with white (full scale for the dtype; an RGBA ladder's alpha fills opaque, the per-element-opacity identity).
nullwhen no rung has colours. Dtype and layout (3 = RGB, 4 = RGBA) come from the first coloured rung; a rung that disagrees is malformed data and throws, naming the level. Zero-row rungs abstain.Every coloured rung is first checked against its OWN declared layout (
assertColorLayout): an RGBA buffer that omitscolorComponents(default 3) agrees with an RGB ladder and fits the allocation, so the cross-rung compare alone would copy it at stride 3 and mis-stride every element after it.