CustomShaders restrict use of GLSL data types, PostProcessStages don't

Hey,
I am working with CustomShaders and i need to pass an array of uniform data to the shaders. When using PostProcessStage shaders in a different part of the project, i could easily pass an array of float values to the shader:

this.randomKernel = new Array<Cesium.Cartesian3>();

this.ssaoStage = new Cesium.PostProcessStage({
			fragmentShader: // ...
			uniforms: {
				u_randomKernel: this.randomKernel
			},
		});

I could simply access this uniform in the shader as uniform vec3 u_randomKernel[];.

However, when working with custom shaders, i encountered the following problem:
The uniforms need to be passed as a struct requiring a UniformType. The list of these types does not include any type of array, nor does it include texture arrays, which i need to pass to the shader too.

I am wondering if there is:

a) Any way to smuggle an array of values and an array of textures into my CustomShader instead of typing out every value manually.

b) Any reason to design this so differently? The API restricts access to GLSL data types even though it does not seem to be necessary, given that they seem to be usable in PostProcessStage shaders. Are there any plans to change this? I think that making all the data types accessible would be useful in quite a few use cases.

Thank you in advance for your response. :slight_smile: