Your attempt to output an array in the vertex shader is baffling. This should generate a link error in your GLSL program, because the interface between vertex shader and geometry shader does not match.
Geometry shader inputs are always in the form of an array because they take multiple transformed vertices to construct primitives. The output in the vertex shader, however, is generally not an array. If you wanted to output an array in the vertex shader, you would create a situation where the geometry shader needs a 2D array to match the interface - this is not supported.
GLSL 3.30 Specification - 4 Variables and Types - pp. 30
For the interface between a vertex shader and a geometry shader, vertex shader output variables and geometry shader input variables of the same name must match in type and qualification, except that the vertex shader name cannot be declared as an array while the geometry shader name must be declared as an array. Otherwise, a link error will occur.
If the output of a vertex shader is itself an array to be consumed by a geometry shader, then it must appear in an output block (see interface blocks below) in the vertex shader and in an input block in the geometry shader with a block instance name declared as an array. This is required for arrays output from a vertex shader because two-dimensional arrays are not supported.
I would consider re-writing your shaders:
Vertex Shader:
#version 330
layout(std140) uniform;
layout(location = 6) in vec4 worldPosition;
layout(location = 7) in int FIndex;
flat out int passFIndex;
uniform Projection
{
mat4 view;
mat4 projection;
};
uniform mat3 FMatrix [6];
void main()
{
gl_Position = worldPosition;
passFIndex = FIndex;
}
Geometry Shader:
#version 330
layout(std140) uniform;
layout(points) in;
layout(triangle_strip, max_vertices = 136) out;
flat in int passFIndex [];
uniform Projection
{
mat4 view;
mat4 projection;
};
uniform mat3 FMatrix [6];
void main()
{
vec3 newPos = FMatrix[passFIndex[0]] * vec3(-0.5f, -0.5f, 0.5f);
...