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.