<!--
{
  "availability" : [
    "iOS: -",
    "iPadOS: -",
    "macCatalyst: -",
    "macOS: -",
    "tvOS: -",
    "visionOS: -",
    "watchOS: -"
  ],
  "documentType" : "symbol",
  "framework" : "SpriteKit",
  "identifier" : "/documentation/SpriteKit/SKEffectNode",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "SpriteKit"
    ],
    "preciseIdentifier" : "c:objc(cs)SKEffectNode"
  },
  "title" : "SKEffectNode"
}
-->

# SKEffectNode

A node that renders its children into a separate buffer, optionally applying an effect, before drawing the final result.

```
class SKEffectNode
```

## Overview

An [`SKEffectNode`](/documentation/SpriteKit/SKEffectNode) object renders its children into a buffer and optionally applies a Core Image filter to this rendered output. Because effect nodes conform to [`SKWarpable`](/documentation/SpriteKit/SKWarpable), you can also use them to apply distortions to nodes that don’t implement the protocol, such as shape and video nodes. Use effect nodes to incorporate sophisticated special effects into a scene or to cache the contents of a static subtree for faster rendering performance.

Each time a new frame is rendered using the effect node, the effect node follows these steps:

1. It draws its children into a private framebuffer.
2. It applies a Core Image effect to the private framebuffer. This stage is optional; see the [`filter`](/documentation/SpriteKit/SKEffectNode/filter) and [`shouldEnableEffects`](/documentation/SpriteKit/SKEffectNode/shouldEnableEffects) properties.
3. It blends the contents of its private framebuffer into its parent’s framebuffer, using one of the standard sprite blend modes.
4. It discards its private framebuffer. This step is optional; see the [`shouldRasterize`](/documentation/SpriteKit/SKEffectNode/shouldRasterize) property.

## Topics

### Applying Core Image Filters with an Effect Node

[Applying Special Effects to a Node’s Children](/documentation/SpriteKit/applying-special-effects-to-a-node-s-children)

Apply the Core Image suite of filters to child nodes of an effect node.

[`filter`](/documentation/SpriteKit/SKEffectNode/filter)

The Core Image filter to apply.

[`shouldEnableEffects`](/documentation/SpriteKit/SKEffectNode/shouldEnableEffects)

A Boolean value that determines whether the effect node applies the filter to its children as they are drawn.

[`shouldCenterFilter`](/documentation/SpriteKit/SKEffectNode/shouldCenterFilter)

A Boolean value that determines whether the effect node automatically sets the filter’s image center.

### Warping Nodes with an Effect Node

[Warping SpriteKit Content By Using an Effect Node](/documentation/SpriteKit/warping-spritekit-content-by-using-an-effect-node)

Distort the child nodes of an effect node by applying a warping effect.

### Applying a Shader with an Effect Node

Supply a code file that does custom per-pixel alteration or colorization of an effect node’s children.

[`shader`](/documentation/SpriteKit/SKEffectNode/shader)

A custom shader that is called when the effect node is blended into the parent’s framebuffer.

[`attributeValues`](/documentation/SpriteKit/SKEffectNode/attributeValues)

The values of each attribute associated with the node’s attached shader.

[`-  setValue:forAttributeNamed:`](/documentation/SpriteKit/SKEffectNode/setValue(_:forAttribute:))

Sets an attribute value for an attached shader.

[`-  valueForAttributeNamed:`](/documentation/SpriteKit/SKEffectNode/value(forAttributeNamed:))

Gets the value of a shader attribute.

### Flattening an Effect Node’s Child Tree for Performance Improvement

[Improving the Performance of Static Content](/documentation/SpriteKit/improving-the-performance-of-static-content)

Flatten a portion of your node hierarchy to a single texture to improve performance.

[`shouldRasterize`](/documentation/SpriteKit/SKEffectNode/shouldRasterize)

A Boolean value that indicates whether the results of rendering the child nodes should be cached.

### Configuring Alpha Blending

Change how an effect node uses its alpha value, such as additive blending, that results in the sprite being brighter than it was before.

[`blendMode`](/documentation/SpriteKit/SKEffectNode/blendMode)

The blend mode used to draw the node’s contents into its parent’s framebuffer.

## Relationships

### Conforms To

[`CVarArg`](/documentation/Swift/CVarArg)

[`CustomStringConvertible`](/documentation/Swift/CustomStringConvertible)

[`NSTouchBarProvider`](/documentation/AppKit/NSTouchBarProvider)

[`NSCopying`](/documentation/Foundation/NSCopying)

[`UIUserActivityRestoring`](/documentation/UIKit/UIUserActivityRestoring)

[`NSCoding`](/documentation/Foundation/NSCoding)

[`NSUserActivityRestoring`](/documentation/AppKit/NSUserActivityRestoring)

[`SendableMetatype`](/documentation/Swift/SendableMetatype)

[`UIFocusItemContainer`](/documentation/UIKit/UIFocusItemContainer)

[`UIFocusItem`](/documentation/UIKit/UIFocusItem)

[`UICoordinateSpace`](/documentation/UIKit/UICoordinateSpace)

[`Sendable`](/documentation/Swift/Sendable)

[`UIResponderStandardEditActions`](/documentation/UIKit/UIResponderStandardEditActions)

[`NSStandardKeyBindingResponding`](/documentation/AppKit/NSStandardKeyBindingResponding)

[`Hashable`](/documentation/Swift/Hashable)

[`SKWarpable`](/documentation/SpriteKit/SKWarpable)

[`Equatable`](/documentation/Swift/Equatable)

[`UIActivityItemsConfigurationProviding`](/documentation/UIKit/UIActivityItemsConfigurationProviding)

[`UIFocusEnvironment`](/documentation/UIKit/UIFocusEnvironment)

[`UIPasteConfigurationSupporting`](/documentation/UIKit/UIPasteConfigurationSupporting)

[`CustomDebugStringConvertible`](/documentation/Swift/CustomDebugStringConvertible)

[`NSSecureCoding`](/documentation/Foundation/NSSecureCoding)

[`NSObjectProtocol`](/documentation/ObjectiveC/NSObjectProtocol)

### Inherits From

[`SKNode`](/documentation/SpriteKit/SKNode)

### Inherited By

[`SKScene`](/documentation/SpriteKit/SKScene)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)