<!--
{
  "availability" : [
    "iOS: 18.0.0 -",
    "iPadOS: 18.0.0 -",
    "macCatalyst: 18.0.0 -",
    "macOS: 15.0.0 -",
    "tvOS: 26.0.0 -",
    "visionOS: 2.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "RealityKit",
  "identifier" : "/documentation/RealityKit/EnvironmentResource/init(cube:options:)",
  "metadataVersion" : "0.1.0",
  "role" : "Initializer",
  "symbol" : {
    "kind" : "Initializer",
    "modules" : [
      "RealityKit"
    ],
    "preciseIdentifier" : "s:17RealityFoundation19EnvironmentResourceC4cube7optionsAcA07TextureD0C_AC13CreateOptionsVtYaKcfc::OverloadGroup"
  },
  "title" : "init(cube:options:)"
}
-->

# init(cube:options:)

Asynchronously creates an environment resource from a cube texture.

```
@MainActor @preconcurrency convenience init(cube cubeTexture: TextureResource, options: EnvironmentResource.CreateOptions) async throws
```

## Parameters

`cubeTexture`

A skybox cube texture of type `.cubeType` with `.color` or `.hdrColor` semantics.

`options`

A configuration for generating the environment resource.

## Discussion

RealityKit generates an environment resource from a skybox cube texture of the environment.
The created environment shares the input skybox.

> Note: ``doc://com.apple.RealityKit/documentation/RealityKit/EnvironmentResource/CreateOptions/SamplingQuality-swift.enum/high`` and ``doc://com.apple.RealityKit/documentation/RealityKit/EnvironmentResource/CreateOptions/SamplingQuality-swift.enum/veryHigh``,
> along with ``doc://com.apple.RealityKit/documentation/RealityKit/TextureResource/Compression/astc(blockSize:quality:)`` compression options, are only available in macOS.
> Use these options to write optimized scenes for all target platforms when exporting from macOS with ``doc://com.apple.RealityKit/documentation/RealityKit/Entity/write(to:)``.
> Compression options also significantly reduce an environmental resource’s memory and disk usage.

```swift
// Use compression and high quality options to export optimized resources.
let cube = try TextureResource(
    cubeFromEquirectangular: image,
    quality: .high,
    options: TextureResource.CreateOptions(semantic: .color)
)

let options = EnvironmentResource.CreateOptions(
    samplingQuality: .high,
    specularCubeDimension: cube.width/2,
    compression: .astc(blockSize: .block4x4, quality: .high)
)

let environment = try EnvironmentResource(
    cube: cube,
    options: EnvironmentResource.CreateOptions(
        samplingQuality: .high,
        specularCubeDimension: cube.width/2,
        compression: .astc(blockSize: .block4x4, quality: .high)
    )
)

let lightEntity = Entity()
lightEntity.components.set(ImageBasedLightComponent(
    source: .single(environment)
))
...
```

> Note: If you request `.astc` compression and `cubeTexture` isn’t already
> compressed, RealityKit compresses it.

---

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)