texture3D(slices:named:options:)
Asynchronously creates a 3D texture by generating it from images.
Declaration
@MainActor @preconcurrency static func texture3D(slices: [CGImage], named resourceName: String? = nil, options: TextureResource.CreateOptions) async throws -> TextureResourceParameters
- slices:
The source images, one per depth index. All images need to be square, and of equal size and format.
- resourceName:
A unique name for syncing the texture resource across the network. The name is empty if you don’t include one.
- options:
A configuration for generating the texture.
Discussion
RealityKit creates a MTLTextureType.type3D texture with depth == slices.count from an array of images.
You can assign the resulting texture to a material you create in Reality Composer Pro that requires a 3D texture.
// Create a 3D texture from image slices.
let texture3D = try await TextureResource.texture3D(
slices: [image0, image1, image2, image3],
options: TextureResource.CreateOptions(semantic: .color))
// Assign the 3D texture to a compatible shader graph material parameter.
var material = try await ShaderGraphMaterial(
named: "/Root/Alien/MaterialWith3DTexture", from: url)
try material.setParameter(
name: "input3DTexture",
value: .textureResource(texture3D))