On iOS 8, this code (Swift) worked:
let shaderString = "void main()" +
"{" +
"gl_FragColor = SKDefaultShading().bgra;" +
"}"
let shader = SKShader(source: shaderString)
Now on iOS 9, with Metal under the covers, I get this error message:
2015-06-09 18:36:39.497 TestVideoCam[550:63920] Jet: Error Domain=MTLLibraryErrorDomain Code=3 "Compilation failed:
program_source:6:321: error: use of undeclared identifier 'SKDefaultShading'
fragment float4 SKShader_FragFunc( texture2d<float> u_texture [[texture(0)]], const device float *u_time [[buffer(0)]], const device float2 *u_sprite_size [[buffer(1)]], const device float *u_path_length [[buffer(2)]], SKShader_VertexOut interpolated [[stage_in]]){return SKDefaultShading().bgra;}
^
" UserInfo=0x156e50c10 {NSLocalizedDescription=Compilation failed:
program_source:6:321: error: use of undeclared identifier 'SKDefaultShading'
fragment float4 SKShader_FragFunc( texture2d<float> u_texture [[texture(0)]], const device float *u_time [[buffer(0)]], const device float2 *u_sprite_size [[buffer(1)]], const device float *u_path_length [[buffer(2)]], SKShader_VertexOut interpolated [[stage_in]]){return SKDefaultShading().bgra;}
^
}
At first glance, it looks like SKDefaultShading is not known to SpriteKit with Metal instead of OpenGL ES under the covers.