Most SKShaders shaders are fully supported in both OpenGL & Metal. If you run into cases that are not, please file a bug report with your specific shader source.
By default, SpriteKit and SceneKit render with Metal in iOS 9 and OS X El Capitan, however, there is a facility to use OpenGL.
IMPORTANT: For optimal performance, Metal rendering in SpriteKit and SceneKit is enabled by default. Setting PrefersOpenGL rendering key is not recommended unless it is determined necessary for other reasons.
To do that:
- Edit your app's Info.plist
- Add the
PrefersOpenGLkey with a bool value of YES
Thanks for posting that.
Using that setting, all my SKEffectNode and SKEmitterNode problems dissappear - I have an app that I can release now.
Is there a timeline or expected release for resolving the problems we are seeing with Metal?
As a small elaboration, as of the writing of this post, SKShaders support the OpenGL ES 2.0 shading language. So the comment: "Most SKShaders shaders are fully supported in both OpenGL & Metal" refers to SKShader honoring a GLSL shader regardless of SpriteKit's active renderer, be it GL or Metal. See QA1904 - Specifying the renderer for SpriteKit and SceneKit https://developer.apple.com/library/content/qa/qa1904/_index.html