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

# GKNoiseSource

The abstract superclass for procedural noise generators.

```
class GKNoiseSource
```

## Overview

Each noise source class generalizes a specific noise generation algorithm that produces a distinct general style of noise. For example, the [`GKPerlinNoiseSource`](/documentation/GameplayKit/GKPerlinNoiseSource) class generates fractal coherent noise similar to clouds, terrain, and other natural phenomena, and the [`GKCylindersNoiseSource`](/documentation/GameplayKit/GKCylindersNoiseSource) class generates a field of concentric cylinders useful for creating wood-grain textures.

To make use of procedural noise in your app or game:

- Select the [`GKNoiseSource`](/documentation/GameplayKit/GKNoiseSource) subclass that generates the style of noise you’d like, and configure its properties to customize the noise generation algorithm.
- Create a [`GKNoise`](/documentation/GameplayKit/GKNoise) object from that noise source. A noise object represents a specific configuration of noise generated by the noise source. You can create multiple noise objects and apply operations that combine or modify them to further customize the style of output. Noise objects are lightweight—creating them and applying operations doesn’t perform expensive noise computation.
- Create a [`GKNoiseMap`](/documentation/GameplayKit/GKNoiseMap) object from the noise object. Creating a noise map performs the computation to generate noise and apply any operations you specified with [`GKNoise`](/documentation/GameplayKit/GKNoise) objects, resulting in a concrete output: a field of values that you can either sample directly, use with the <doc://com.apple.documentation/documentation/SpriteKit/SKTexture> class to generate texture images, or use with the `SKTileMap` class to generate tile maps.

## Relationships

### Inherited By

[`GKConstantNoiseSource`](/documentation/GameplayKit/GKConstantNoiseSource)

[`GKSpheresNoiseSource`](/documentation/GameplayKit/GKSpheresNoiseSource)

[`GKVoronoiNoiseSource`](/documentation/GameplayKit/GKVoronoiNoiseSource)

[`GKCylindersNoiseSource`](/documentation/GameplayKit/GKCylindersNoiseSource)

[`GKCheckerboardNoiseSource`](/documentation/GameplayKit/GKCheckerboardNoiseSource)

[`GKCoherentNoiseSource`](/documentation/GameplayKit/GKCoherentNoiseSource)

### Conforms To

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

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

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

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

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

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

### Inherits From

[`NSObject-swift.class`](/documentation/ObjectiveC/NSObject-swift.class)

---

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)