Here is a simple fragment shader:
vec3 redColor = vec3(1.0, 0.0, 0.0);
vec3 getColor()
{
return redColor;
}
void main(void) {
vec3 color = getColor();
gl_FragColor = vec4(color, 1.0);
}
When we use the global variable redColor in getColor() method, after translated it to metal shader language, all variables defined in global scope will be skipped. It will make redColor undefined in getColor() method in msl:
float3 getColor () { return redColor; }
It is a bit complicate and will take more time to fix the issues, thus we don't take this into account for the time being.