I want to set a
MTLTexture object as the environment map of a scene, as it seems to be possible according to the documentation. I can set the environment map to be a
UIImage with the following code:
let roomImage = UIImage(named: "room") scene.lightingEnvironment.contents = roomImage
This works and I see the reflection of the image on my metallic objects. I tried converting the image to a
MTLTexture and setting it as the environment map with the following code:
let roomImage = UIImage(named: "room") let loader = MTKTextureLoader(device: MTLCreateSystemDefaultDevice()!) let envMap = try? loader.newTexture(cgImage: (roomImage?.cgImage)!, options: nil) scene.lightingEnvironment.contents = envMap
However this does not work and I end up with a blank environment map with no reflection on my objects.
Also, instead of setting the
nil, I tried setting the
MTKTextureLoader.Option.textureUsage key with every possible value it can get, but that didn't work either.
You can have a look at the example project in this repo and use it to reproduce this use case.