GLSL Shader Actor - mat2 input
-
Dear All,
A user sent me a GLSL Shader actor that wasn't working.... the code that caused it to fail is below.// ISADORA_FLOAT_PARAM(complexity, complex, 9.0, 900.0, 10.0, "veraendere dichtheit");
uniform mat2 complexity;
Note that while they have specified a floating point input, the actual uniform variable declared by complexity is a **mat2** – that's not a single float, but actually four floats! (You can learn more about GLSL types [on this page](https://www.opengl.org/wiki/Data_Type_(GLSL)).)To provide like input to a **mat2**, you'd need to define four separate inputs// ISADORA_FLOAT_PARAM(complexity00, cp00, 9.0, 900.0, 10.0, "veraendere dichtheit");
// ISADORA_FLOAT_PARAM(complexity01, cp01, 9.0, 900.0, 10.0, "veraendere dichtheit");
// ISADORA_FLOAT_PARAM(complexity10, cp10, 9.0, 900.0, 10.0, "veraendere dichtheit");
// ISADORA_FLOAT_PARAM(complexity11, cp11, 9.0, 900.0, 10.0, "veraendere dichtheit");
uniform float complexity00;
uniform float complexity01;
uniform float complexity10;
uniform float complexity11;
and then somewhere within your code, you'd need this to initialize a **mat2**called complexity as follows:mat2 complexity;
complexity[0][0] = complexity00;
complexity[0][1] = complexity01;
complexity[1][0] = complexity10;
complexity[1][1] = complexity11;
I tested this and it works. Hopefully that will help one of you down the road.
Best Wishes,
Mark
-
nice
-
This should be added to a Knowledge base article on GLSL usage.
-