Qt Quick 3D custom materials rely on arrays of textures (note: not texture arrays (i.e. sampler2DArray and such)):
layout(binding = 8) uniform sampler2D shadowMaps;
layout(binding = 9) uniform samplerCube shadowCubes;
are not something we support currently.
In uniform blocks, there is support for arrays of struct, float, vec2, vec3 and vec4, but for combined image samplers the dimension is effectively ignored and only  will be set. There is also no way to provide a list of (texture, sampler) pairs in the QRhiShaderResourceBindings API.
Note: with Metal it turns out that MSL 1.2 is not sufficient: "Shader baking failed: MSL 2.0 or greater is required for arrays of textures."
|For Gerrit Dashboard: QTBUG-82624|
|292676,3||rhi: Include an arrayDims vector in InOutVariable too||5.15||qt/qtbase||Status: MERGED||+2||0|
|292677,3||Add playground tests for texture arrays and arrays of textures||dev||qt/qtshadertools||Status: MERGED||+2||0|
|292678,2||rhi: Include an arrayDims vector in InOutVariable too||dev||qt/qtbase||Status: MERGED||-2||0|
|292679,4||Expose the array dimensions for InOutVariable, when applicable||dev||qt/qtshadertools||Status: MERGED||+2||0|
|292728,2||hlsl: Adjust texture and sampler registers for arrays||dev||qt/qtshadertools||Status: MERGED||+2||0|
|292735,2||rhi: Use versioning in QShaderDescription serialization as well||5.15||qt/qtbase||Status: MERGED||+2||0|
|292760,9||rhi: Add support for arrays of combined image samplers||5.15||qt/qtbase||Status: MERGED||+2||0|