<!--
{
  "availability" : [
    "iOS: 8.0.0 - 26.0.0",
    "iPadOS: 8.0.0 - 26.0.0",
    "macCatalyst: 13.1.0 - 26.0.0",
    "macOS: 10.8.0 - 26.0.0",
    "tvOS: 9.0.0 - 26.0.0",
    "visionOS: 1.0.0 - 26.0.0",
    "watchOS: 3.0.0 - 26.0.0"
  ],
  "documentType" : "symbol",
  "framework" : "SceneKit",
  "identifier" : "/documentation/SceneKit/SCNSceneRenderer",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "SceneKit"
    ],
    "preciseIdentifier" : "c:objc(pl)SCNSceneRenderer"
  },
  "title" : "SCNSceneRenderer"
}
-->

# SCNSceneRenderer

Methods and properties common to the [`SCNView`](/documentation/SceneKit/SCNView), [`SCNLayer`](/documentation/SceneKit/SCNLayer), and [`SCNRenderer`](/documentation/SceneKit/SCNRenderer) classes.

```
protocol SCNSceneRenderer : NSObjectProtocol
```

## Overview

You use an instance of one of these classes to display a scene and manage SceneKit’s rendering and animation of the scene’s contents.

Typically, you use the [`SCNView`](/documentation/SceneKit/SCNView) class to display a scene in a window (or full screen). You can create and configure a SceneKit view programmatically or in Interface Builder. The other renderer classes render SceneKit content in more specialized situations. If your app has a user interface composed of Core Animation layers, you can use the [`SCNLayer`](/documentation/SceneKit/SCNLayer) class to render a scene into a layer. If your app uses Metal or OpenGL for other rendering, you can use the [`SCNRenderer`](/documentation/SceneKit/SCNRenderer) class to render SceneKit content with the same Metal device or OpenGL context.

Use the [`scene`](/documentation/SceneKit/SCNSceneRenderer/scene) property of the view, layer, or renderer to specify the scene to display.

## Topics

### Presenting a Scene

[`scene`](/documentation/SceneKit/SCNSceneRenderer/scene)

The scene to be displayed.

[`-  presentScene:withTransition:incomingPointOfView:completionHandler:`](/documentation/SceneKit/SCNSceneRenderer/present(_:with:incomingPointOfView:completionHandler:))

Displays the specified scene with an animated transition.

### Managing Scene Display

[`pointOfView`](/documentation/SceneKit/SCNSceneRenderer/pointOfView)

The node from which the scene’s contents are viewed for rendering.

[`autoenablesDefaultLighting`](/documentation/SceneKit/SCNSceneRenderer/autoenablesDefaultLighting)

A Boolean value that determines whether SceneKit automatically adds lights to a scene.

[`jitteringEnabled`](/documentation/SceneKit/SCNSceneRenderer/isJitteringEnabled)

A Boolean value that determines whether SceneKit applies jittering to reduce aliasing artifacts.

[`showsStatistics`](/documentation/SceneKit/SCNSceneRenderer/showsStatistics)

A Boolean value that determines whether SceneKit displays rendering performance statistics in an accessory view.

[`debugOptions`](/documentation/SceneKit/SCNSceneRenderer/debugOptions)

Options for drawing overlay content in a scene that can aid debugging.

[`renderingAPI`](/documentation/SceneKit/SCNSceneRenderer/renderingAPI)

The graphics technology SceneKit uses to render the scene.

[`SCNDebugOptions`](/documentation/SceneKit/SCNDebugOptions)

Options for drawing overlays with SceneKit content that can aid in debugging, used with the [`debugOptions`](/documentation/SceneKit/SCNSceneRenderer/debugOptions) property.

[`SCNRenderingAPI`](/documentation/SceneKit/SCNRenderingAPI)

Options for choosing the graphics technology for an [`SCNView`](/documentation/SceneKit/SCNView) object (or other SceneKit renderer) to use for drawing its contents. Used by the [`renderingAPI`](/documentation/SceneKit/SCNSceneRenderer/renderingAPI) property and the [`preferredRenderingAPI`](/documentation/SceneKit/SCNView/Option/preferredRenderingAPI) option when initializing an [`SCNView`](/documentation/SceneKit/SCNView) object.

### Managing Scene Animation Timing

[`sceneTime`](/documentation/SceneKit/SCNSceneRenderer/sceneTime)

The current scene time.

[`playing`](/documentation/SceneKit/SCNSceneRenderer/isPlaying)

A Boolean value that determines whether the scene is playing.

[`loops`](/documentation/SceneKit/SCNSceneRenderer/loops)

A Boolean value that determines whether SceneKit restarts the scene time after all animations in the scene have played.

### Preloading Renderer Resources

[`-  prepareObject:shouldAbortBlock:`](/documentation/SceneKit/SCNSceneRenderer/prepare(_:shouldAbortBlock:))

Prepares a SceneKit object for rendering.

[`-  prepareObjects:withCompletionHandler:`](/documentation/SceneKit/SCNSceneRenderer/prepare(_:completionHandler:))

Prepares the specified SceneKit objects for rendering, using a background thread.

### Working With Projected Scene Contents

[`-  hitTest:options:`](/documentation/SceneKit/SCNSceneRenderer/hitTest(_:options:))

Searches the renderer’s scene for objects corresponding to a point in the rendered image.

[`SCNHitTestOption`](/documentation/SceneKit/SCNHitTestOption)

Options affecting the behavior of SceneKit hit-testing methods.

[`-  isNodeInsideFrustum:withPointOfView:`](/documentation/SceneKit/SCNSceneRenderer/isNode(_:insideFrustumOf:))

Returns a Boolean value indicating whether a node might be visible from a specified point of view.

[`-  nodesInsideFrustumWithPointOfView:`](/documentation/SceneKit/SCNSceneRenderer/nodesInsideFrustum(of:))

Returns all nodes that might be visible from a specified point of view.

[`-  projectPoint:`](/documentation/SceneKit/SCNSceneRenderer/projectPoint(_:))

Projects a point from the 3D world coordinate system of the scene to the 2D pixel coordinate system of the renderer.

[`-  unprojectPoint:`](/documentation/SceneKit/SCNSceneRenderer/unprojectPoint(_:))

Unprojects a point from the 2D pixel coordinate system of the renderer to the 3D world coordinate system of the scene.

### Participating in the Scene Rendering Process

[`delegate`](/documentation/SceneKit/SCNSceneRenderer/delegate)

A delegate object that receives messages about SceneKit’s rendering process.

### Customizing Scene Rendering with Metal

[`currentRenderCommandEncoder`](/documentation/SceneKit/SCNSceneRenderer/currentRenderCommandEncoder)

The Metal render command encoder in use for the current SceneKit rendering pass.

[`device`](/documentation/SceneKit/SCNSceneRenderer/device)

The Metal device this renderer uses for rendering.

[`commandQueue`](/documentation/SceneKit/SCNSceneRenderer/commandQueue)

The Metal command queue this renderer uses for rendering.

[`colorPixelFormat`](/documentation/SceneKit/SCNSceneRenderer/colorPixelFormat)

The Metal pixel format for the renderer’s color output.

[`depthPixelFormat`](/documentation/SceneKit/SCNSceneRenderer/depthPixelFormat)

The Metal pixel format for the renderer’s depth buffer.

[`stencilPixelFormat`](/documentation/SceneKit/SCNSceneRenderer/stencilPixelFormat)

The Metal pixel format for the renderer’s stencil buffer.

### Customizing Scene Rendering with OpenGL

[`context`](/documentation/SceneKit/SCNSceneRenderer/context)

The OpenGL rendering context that SceneKit uses for rendering the scene.

### Rendering Sprite Kit Content over a Scene

[`overlaySKScene`](/documentation/SceneKit/SCNSceneRenderer/overlaySKScene)

A Sprite Kit scene to be rendered on top of the SceneKit content.

### Working With Positional Audio

[`audioListener`](/documentation/SceneKit/SCNSceneRenderer/audioListener)

The node representing the listener’s position in the scene for use with positional audio effects.

[`audioEnvironmentNode`](/documentation/SceneKit/SCNSceneRenderer/audioEnvironmentNode)

The 3D audio mixing node SceneKit uses for positional audio effects.

[`audioEngine`](/documentation/SceneKit/SCNSceneRenderer/audioEngine)

The audio engine SceneKit uses for playing scene sounds.

## Relationships

### Conforming Types

[`SCNRenderer`](/documentation/SceneKit/SCNRenderer)

[`SCNView`](/documentation/SceneKit/SCNView)

[`SCNLayer`](/documentation/SceneKit/SCNLayer)

### Inherits From

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

---

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)