<!--
{
  "availability" : [
    "iOS: 27.0.0 -",
    "iPadOS: 27.0.0 -",
    "tvOS: 27.0.0 -",
    "visionOS: 27.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "RealityKit",
  "identifier" : "/documentation/RealityKit/ImageBasedLightTextureGenerator",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "RealityKit"
    ],
    "preciseIdentifier" : "s:28RealityCoreTextureProcessing015ImageBasedLightC9GeneratorC"
  },
  "title" : "ImageBasedLightTextureGenerator"
}
-->

# ImageBasedLightTextureGenerator

An object that generates image-based-lighting diffuse and specular cube
textures from a skybox.

```
class ImageBasedLightTextureGenerator
```

## Overview

Image-based lighting (IBL) approximates how an environment lights a surface by convolving
the environment’s skybox into two cube textures: a diffuse irradiance map (low-frequency
lighting that hits matte surfaces) and a specular pre-filtered map (per-roughness lighting
that drives glossy reflections). RealityKit’s `EnvironmentResource` consumes textures of
this shape, and this generator lets you produce them directly in Metal so you can control
resolution, pixel format, sampling quality, and command-buffer scheduling.

## Topics

### Creating a generator

[`init(device: any MTLDevice)`](/documentation/RealityKit/ImageBasedLightTextureGenerator/init(device:)-22qce)

[`init(device: any MTLDevice) async`](/documentation/RealityKit/ImageBasedLightTextureGenerator/init(device:)-5yjyb)

### Generating IBL textures

[`func generateDiffuse(using: any MTLCommandBuffer, fromSkyboxCube: any MTLTexture, quality: TextureSamplingQuality, into: any MTLTexture) throws`](/documentation/RealityKit/ImageBasedLightTextureGenerator/generateDiffuse(using:fromSkyboxCube:quality:into:))

Adds commands for generating an image based light diffuse texture from a skybox cube.

[`func generateSpecular(using: any MTLCommandBuffer, fromSkyboxCube: any MTLTexture, quality: TextureSamplingQuality, into: any MTLTexture) throws`](/documentation/RealityKit/ImageBasedLightTextureGenerator/generateSpecular(using:fromSkyboxCube:quality:into:))

Adds commands for generating an image based light specular texture from a skybox cube.

### Describing output textures

[`func makeDiffuseDescriptor(fromCube: any MTLTexture) throws -> MTLTextureDescriptor`](/documentation/RealityKit/ImageBasedLightTextureGenerator/makeDiffuseDescriptor(fromCube:))

Returns a recommended image based light diffuse cube texture descriptor
(for [`generateDiffuse(using:fromSkyboxCube:quality:into:)`](/documentation/RealityKit/ImageBasedLightTextureGenerator/generateDiffuse(using:fromSkyboxCube:quality:into:))).

[`func makeSpecularDescriptor(fromCube: any MTLTexture) throws -> MTLTextureDescriptor`](/documentation/RealityKit/ImageBasedLightTextureGenerator/makeSpecularDescriptor(fromCube:))

Returns a recommended image based light specular cube texture descriptor
(for [`generateSpecular(using:fromSkyboxCube:quality:into:)`](/documentation/RealityKit/ImageBasedLightTextureGenerator/generateSpecular(using:fromSkyboxCube:quality:into:))).

### Initializers

[`init(device:)`](/documentation/RealityKit/ImageBasedLightTextureGenerator/init(device:))

---

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)