Можете ли вы передать массив фиксированного размера в качестве параметра функции GLSL?

в шейдере GLSL я хочу создать функцию, которая выглядит примерно так:

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;
   ...
}

может ли такая сигнатура функции использоваться и компилироваться в GLSL ?
Если нет, есть ли альтернативы ?

1 ответов


Да, это законный код GLSL.

Это не означает, что он будет компилироваться, но это юридический код. При этом, вероятно, лучше просто вернуть массив (что вы также можете сделать), а не передавать его в качестве выходного параметра.