---
title: "init(cube:options:)"
framework: realitykit
role: symbol
role_heading: Initializer
path: "realitykit/environmentresource/init(cube:options:)-9j9rn"
---

# init(cube:options:)

Asynchronously creates an environment resource from a cube texture.

## Declaration

```swift
@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

Discussion RealityKit generates an environment resource from a skybox cube texture of the environment. The created environment shares the input skybox. note: EnvironmentResource.CreateOptions.SamplingQuality.high and EnvironmentResource.CreateOptions.SamplingQuality.veryHigh, along with 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 write(to:). Compression options also significantly reduce an environmental resource’s memory and disk usage. // 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.

## See Also

### Loading the resource

- [init(named:in:)](realitykit/environmentresource/init(named:in:).md)
- [init(equirectangular:withName:)](realitykit/environmentresource/init(equirectangular:withname:)-8o2v7.md)
- [init(equirectangular:withName:)](realitykit/environmentresource/init(equirectangular:withname:)-8o2v7.md)
- [load(named:in:)](realitykit/environmentresource/load(named:in:).md)
