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

# SKUniform

A container for uniform shader data.

```
class SKUniform
```

## Overview

An [`SKUniform`](/documentation/SpriteKit/SKUniform) object is used to hold uniform data for a custom OpenGL or OpenGL ES shader. The uniform data is accessible from all shaders that include the uniform.To use a uniform variable in your shader, create the [`SKUniform`](/documentation/SpriteKit/SKUniform) object and set its initial value. Once its value is specified, the [`uniformType`](/documentation/SpriteKit/SKUniform/uniformType) property changes to match the type of the initial value you provided and can never change afterward. To use the uniform object, add it to an [`SKShader`](/documentation/SpriteKit/SKShader) object that needs to access the uniform variable. To update the uniform variable’s value, choose the appropriate property on the uniform object based on the data type it encapsulates.

## Topics

### Creating and Initializing Uniform Objects

[`uniformWithName:`](/documentation/SpriteKit/SKUniform/uniformWithName:)

Creates and initializes a new uniform object.

[`uniformWithName:float:`](/documentation/SpriteKit/SKUniform/uniformWithName:float:)

Creates and initializes a new uniform object that holds a floating-point number.

[`uniformWithName:floatVector2:`](/documentation/SpriteKit/SKUniform/uniformWithName:floatVector2:)

Creates and initializes a new uniform object that holds a vector of two floating-point numbers.

[`uniformWithName:floatVector3:`](/documentation/SpriteKit/SKUniform/uniformWithName:floatVector3:)

Creates and initializes a new uniform object that holds a vector of three floating-point numbers.

[`uniformWithName:floatVector4:`](/documentation/SpriteKit/SKUniform/uniformWithName:floatVector4:)

Creates and initializes a new uniform object that holds a vector of four floating-point numbers.

[`uniformWithName:floatMatrix2:`](/documentation/SpriteKit/SKUniform/uniformWithName:floatMatrix2:)

Creates and initializes a new uniform object that holds a `2 x 2` matrix of floating-point numbers.

[`uniformWithName:floatMatrix3:`](/documentation/SpriteKit/SKUniform/uniformWithName:floatMatrix3:)

Creates and initializes a new uniform object that holds a `3 x 3` matrix of floating-point numbers.

[`uniformWithName:floatMatrix4:`](/documentation/SpriteKit/SKUniform/uniformWithName:floatMatrix4:)

Creates and initializes a new uniform object that holds a `4 x 4` matrix of floating-point numbers.

[`uniformWithName:texture:`](/documentation/SpriteKit/SKUniform/uniformWithName:texture:)

Creates and initializes a new uniform object that holds a reference to a texture.

[`init(name:)`](/documentation/SpriteKit/SKUniform/init(name:))

Initializes a new uniform object.

[`init(name:float:)`](/documentation/SpriteKit/SKUniform/init(name:float:)-48rln)

Initializes a new uniform object that holds a floating-point number.

[`init(name:float:)`](/documentation/SpriteKit/SKUniform/init(name:float:)-9g5vj)

Initializes a new uniform object that holds a vector of two floating-point numbers.

[`init(name:float:)`](/documentation/SpriteKit/SKUniform/init(name:float:)-9g6a7)

Creates and initializes a new uniform object that holds a vector of three floating-point numbers.

[`init(name:float:)`](/documentation/SpriteKit/SKUniform/init(name:float:)-9g7j7)

Initializes a new uniform object that holds a vector of four floating-point numbers.

[`init(name:float:)`](/documentation/SpriteKit/SKUniform/init(name:float:)-6110m)

Initializes a new uniform object that holds a `2 x 2` matrix of floating-point numbers.

[`init(name:float:)`](/documentation/SpriteKit/SKUniform/init(name:float:)-611hs)

Initializes a new uniform object that holds a `3 x 3` matrix of floating-point numbers.

[`init(name:float:)`](/documentation/SpriteKit/SKUniform/init(name:float:)-60zbm)

Initializes a new uniform object that holds a `4 x 4` matrix of floating-point numbers.

[`init(name:texture:)`](/documentation/SpriteKit/SKUniform/init(name:texture:))

Initializes a new uniform object that holds a reference to a texture.

### Reading Information About a Uniform

[`name`](/documentation/SpriteKit/SKUniform/name)

The uniform’s name.

[`uniformType`](/documentation/SpriteKit/SKUniform/uniformType)

The uniform object’s data type.

### Reading and Writing an Uniform Object’s Value

You should only read or write the property type that matches the type of the uniform object; it is a programming error to use any of the other properties.

[`floatValue`](/documentation/SpriteKit/SKUniform/floatValue)

The receiver’s value as a floating-point value.

[`floatVector2Value`](/documentation/SpriteKit/SKUniform/floatVector2Value)

The receiver’s value as a vector of two floating-point values.

[`floatVector3Value`](/documentation/SpriteKit/SKUniform/floatVector3Value)

The receiver’s value as a vector of three floating-point values.

[`floatVector4Value`](/documentation/SpriteKit/SKUniform/floatVector4Value)

The receiver’s value as a vector of four floating-point values.

[`floatMatrix2Value`](/documentation/SpriteKit/SKUniform/floatMatrix2Value)

The receiver’s value as a `2 x 2` matrix of floating-point values.

[`floatMatrix3Value`](/documentation/SpriteKit/SKUniform/floatMatrix3Value)

The receiver’s value as a `3 x 3` matrix of floating-point values.

[`floatMatrix4Value`](/documentation/SpriteKit/SKUniform/floatMatrix4Value)

The receiver’s value as a `4 x 4` matrix of floating-point values.

[`textureValue`](/documentation/SpriteKit/SKUniform/textureValue)

The receiver’s value as a SpriteKit texture.

### Constants

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

An enumerated type to identify the type of a uniform object.

### Initializers

[`init(name:matrixFloat2x2:)`](/documentation/SpriteKit/SKUniform/init(name:matrixFloat2x2:))

[`init(name:matrixFloat3x3:)`](/documentation/SpriteKit/SKUniform/init(name:matrixFloat3x3:))

[`init(name:matrixFloat4x4:)`](/documentation/SpriteKit/SKUniform/init(name:matrixFloat4x4:))

[`init(name:vectorFloat2:)`](/documentation/SpriteKit/SKUniform/init(name:vectorFloat2:))

[`init(name:vectorFloat3:)`](/documentation/SpriteKit/SKUniform/init(name:vectorFloat3:))

[`init(name:vectorFloat4:)`](/documentation/SpriteKit/SKUniform/init(name:vectorFloat4:))

### Instance Properties

[`matrixFloat2x2Value`](/documentation/SpriteKit/SKUniform/matrixFloat2x2Value)

[`matrixFloat3x3Value`](/documentation/SpriteKit/SKUniform/matrixFloat3x3Value)

[`matrixFloat4x4Value`](/documentation/SpriteKit/SKUniform/matrixFloat4x4Value)

[`vectorFloat2Value`](/documentation/SpriteKit/SKUniform/vectorFloat2Value)

[`vectorFloat3Value`](/documentation/SpriteKit/SKUniform/vectorFloat3Value)

[`vectorFloat4Value`](/documentation/SpriteKit/SKUniform/vectorFloat4Value)

### Type Methods

[`uniformWithName:matrixFloat2x2:`](/documentation/SpriteKit/SKUniform/uniformWithName:matrixFloat2x2:)

[`uniformWithName:matrixFloat3x3:`](/documentation/SpriteKit/SKUniform/uniformWithName:matrixFloat3x3:)

[`uniformWithName:matrixFloat4x4:`](/documentation/SpriteKit/SKUniform/uniformWithName:matrixFloat4x4:)

[`uniformWithName:vectorFloat2:`](/documentation/SpriteKit/SKUniform/uniformWithName:vectorFloat2:)

[`uniformWithName:vectorFloat3:`](/documentation/SpriteKit/SKUniform/uniformWithName:vectorFloat3:)

[`uniformWithName:vectorFloat4:`](/documentation/SpriteKit/SKUniform/uniformWithName:vectorFloat4:)



---

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)