<!--
{
  "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/GKNoise",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "GameplayKit"
    ],
    "preciseIdentifier" : "c:objc(cs)GKNoise"
  },
  "title" : "GKNoise"
}
-->

# GKNoise

A representation of procedural noise, generated by a noise source, that you can use to process, transform, or combine noise.

```
class GKNoise
```

## Overview

Using procedural noise requires three steps:

1. 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.
2. Create a [`GKNoise`](/documentation/GameplayKit/GKNoise) object from that noise source. A noise source generates a field of floating-point noise values between `-1.0` and `1.0` across an infinite, three-dimensional domain—a noise object represents this field. Using [`GKNoise`](/documentation/GameplayKit/GKNoise) methods you can process the values in the noise field or combine values from multiple noise fields.
3. Create a [`GKNoiseMap`](/documentation/GameplayKit/GKNoiseMap) object from the noise object. A noise map samples values from a finite, two-dimensional slice of the noise field to create a concrete output. You can then read those values directly, use the <doc://com.apple.documentation/documentation/SpriteKit/SKTexture> class to generate texture images, or use the `SKTileMap` class to generate tile maps.

[`GKNoise`](/documentation/GameplayKit/GKNoise) objects are lightweight. Because each noise object represents only a specific configuration of noise generation and processing steps, there’s little computation cost to creating noise objects from noise sources and applying operations to process, transform, or combine them. After you create noise objects and apply operations, creating a [`GKNoiseMap`](/documentation/GameplayKit/GKNoiseMap) object from the resulting noise object performs only the computation needed to generate final output.

### Colorizing and Combining Noise

A noise object doesn’t contain noise values or pixel color values for the noise field it describes. However, because you can combine multiple noise objects before producing colorized textures from the result, the [`gradientColors`](/documentation/GameplayKit/GKNoise/gradientColors) property specifies the colors that the <doc://com.apple.documentation/documentation/SpriteKit/SKTexture> class uses to colorize output. For example, you can generate a realistic terrain texture by creating several styles of noise representing different biomes such as water, grassland, forests and mountains, each with their own color gradient, then combining them with the [`init(componentNoises:selectionNoise:)`](/documentation/GameplayKit/GKNoise/init(componentNoises:selectionNoise:)) method. The selectionNoise parameter to that method determines which biomes shows through in which regions of the final output, and each retains its own color gradient.

## Topics

### Creating Noise

[`init(_:)`](/documentation/GameplayKit/GKNoise/init(_:))

Initializes a noise object with the specified noise source.

[`init(_:gradientColors:)`](/documentation/GameplayKit/GKNoise/init(_:gradientColors:))

Initializes a noise object with the specified noise source, with colors for later use in generating noise textures.

[`noiseWithNoiseSource:`](/documentation/GameplayKit/GKNoise/noiseWithNoiseSource:)

Creates a noise object with the specified noise source.

[`noiseWithNoiseSource:gradientColors:`](/documentation/GameplayKit/GKNoise/noiseWithNoiseSource:gradientColors:)

Creates a noise object with the specified noise source, with colors for later use in generating noise textures.

### Creating Noise by Combining Noise

[`init(componentNoises:selectionNoise:)`](/documentation/GameplayKit/GKNoise/init(componentNoises:selectionNoise:))

Creates a noise object by combining the specified noise objects, using another noise object to select which regions of the output correspond to which input noise.

[`init(componentNoises:selectionNoise:componentBoundaries:boundaryBlendDistances:)`](/documentation/GameplayKit/GKNoise/init(componentNoises:selectionNoise:componentBoundaries:boundaryBlendDistances:))

Creates a noise object by combining the specified noise objects, using another noise object and the specified boundaries to select which regions of the output correspond to which input noise.

### Colorizing Noise

[`gradientColors`](/documentation/GameplayKit/GKNoise/gradientColors)

A dictionary mapping noise values to colors for use in colorizing generated noise.

### Applying Operations to Noise Values

[`applyAbsoluteValue()`](/documentation/GameplayKit/GKNoise/applyAbsoluteValue())

Replaces all negative values in the noise field with their positive absolute values.

[`invert()`](/documentation/GameplayKit/GKNoise/invert())

Replaces all values in the noise field with their opposite, reversing the range of noise values.

[`raiseToPower(_:)`](/documentation/GameplayKit/GKNoise/raiseToPower(_:)-14715)

Replaces all values in the noise field by raising each value to the specified power.

[`clamp(lowerBound:upperBound:)`](/documentation/GameplayKit/GKNoise/clamp(lowerBound:upperBound:))

Replaces values in the noise field outside the specified range with the values at the endpoints of that range.

[`remapValues(toCurveWithControlPoints:)`](/documentation/GameplayKit/GKNoise/remapValues(toCurveWithControlPoints:))

Replaces values in the noise field by mapping them to a curve that passes through the specified control points.

[`remapValues(toTerracesWithPeaks:terracesInverted:)`](/documentation/GameplayKit/GKNoise/remapValues(toTerracesWithPeaks:terracesInverted:))

Replaces values in the noise field by mapping them to a terrace-like curve that passes through the specified control points.

### Applying Operations that Combine Noise

[`add(_:)`](/documentation/GameplayKit/GKNoise/add(_:))

Replaces values in the noise field by adding them to values from the specified noise object.

[`multiply(_:)`](/documentation/GameplayKit/GKNoise/multiply(_:))

Replaces values in the noise field by multiplying them with values from the specified noise object.

[`raiseToPower(_:)`](/documentation/GameplayKit/GKNoise/raiseToPower(_:)-zm5g)

Replaces values in the noise field by exponentiating them with values from the specified noise object.

[`maximum(_:)`](/documentation/GameplayKit/GKNoise/maximum(_:))

Replaces values in the noise field by choosing the lesser of each value and a corresponding value in the specified noise object.

[`minimum(_:)`](/documentation/GameplayKit/GKNoise/minimum(_:))

Replaces values in the noise field by choosing the lesser of each value and a corresponding value in the specified noise object.

### Applying Operations that Distort Noise

[`displaceWithNoises(x:y:z:)`](/documentation/GameplayKit/GKNoise/displaceWithNoises(x:y:z:))

Replaces values in the noise field by shifting each value along a vector whose x-, y-, and z-components are based on the specified noise objects.

[`applyTurbulence(frequency:power:roughness:seed:)`](/documentation/GameplayKit/GKNoise/applyTurbulence(frequency:power:roughness:seed:))

Replaces values in the noise field by applying a randomized distortion effect.

### Applying Geometric Transformations

[`move(by:)`](/documentation/GameplayKit/GKNoise/move(by:))

Translates the entire noise field by the specified x, y, and z offsets.

[`rotate(by:)`](/documentation/GameplayKit/GKNoise/rotate(by:))

Rotates the entire noise field by the specified x, y, and z angles.

[`scale(by:)`](/documentation/GameplayKit/GKNoise/scale(by:))

Scales the entire noise field by the specified x, y, and z factors.

### Initializers

[`init()`](/documentation/GameplayKit/GKNoise/init())

### Instance Methods

[`value(atPosition:)`](/documentation/GameplayKit/GKNoise/value(atPosition:))



---

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)