Search code examples
arraysfunctionglslparameter-passing

Can you pass a fixed-size array as a GLSL function parameter?


In a GLSL shader, I want to create a function that looks a bit like this:

void MyFunction(out float results[9])
{
   float value0 = 3.1546;
   float value1 = 42;     // whatever value      
   /* ... long, complicated code ... */

   results[0] = value0;  
   results[1] = value1;
   results[2] = value2;
   ...
}

Can such a function signature be used and compiled in GLSL?
If not, are there any alternatives?


Solution

  • Yes, this is legal GLSL code.

    That doesn't mean it will certainly compile, but it is legal code. That being said, it's probably better to just return the array (which you can also do), rather than pass it as an output parameter.