apple developer

home tech-notes github twitter stackoverflow dev.to

Applying Shaders to a Sprite

Write custom GLSL code that modifies the look of your sprite.


You can use the shader property of a sprite node to change the appearance of a texture with a custom OpenGL ES fragment shader embedded within a SKShader object. Custom shaders offer almost limitless possibilities, from adding blurs and color treatments to textures to generating imagery such as random noise.

The following code shows a small custom shader which inverts the color of a texture while leaving the alpha or transparency unaffected:

let negativeShader = SKShader(source: "void main() { " +
    "    gl_FragColor = vec4(1.0 - SKDefaultShading().rgb, SKDefaultShading().a); " +
rocket.shader = negativeShader

The following figure illustrates the effect of the shader. The original image, on the left, has its colors inverted by the shader:


download this page as .md

download this page as .pdf

back to SpriteKit documentation