Quick answer: Construct 3 custom effect shader expecting an array uniform but only receiving the first element? The effect parameter system supports scalars and colors — arrays must be encoded otherwise.
A water shader expects 8 wave parameters; effect parameters expose only one. Need to multiplex.
Multiple Scalar Parameters
Expose each array element as a separate parameter (wave0, wave1, …). Tedious for large arrays but reliable. Pack 4 floats per color parameter to halve count.
Encode in Texture
Author a small 1-D texture per array (8x1 RGBA = 32 floats). Pass via the effect’s texture parameter; shader samples to read array values.
Dynamic Updates
If parameters change per frame, update the texture via Canvas plugin or a small Construct script. Sampling cost is negligible.
WebGL2 Uniform Array
Custom effect SDK in C3 allows uniform arrays at the shader source level. The exposed parameter UI is still scalar/color, but internal uniforms can be arrays you fill via the addon code.
Verifying
Shader reads all expected array values. Wave / shader effects animate with the configured complexity.
“Effect parameters are scalar/color. Encode arrays as textures or multiple parameters.”
For complex shaders, write a small custom addon — the effect-parameter pipe is convenient for simple shaders but limits at scale.