CubemapAsset:ready() -> CubemapAssetWait until this asset is fully loaded, then return it for chaining. An in-memory asset returns at once; one still loading (a file read or remote fetch) yields the coroutine until it lands. A load failure raises; format errors on playable assets still surface at use time.
local sky = datumhue.package:dir():read("sky.ktx2"):cubemap()
-- Waits for the file to load; raises if it is not a KTX2 cubemap.
sky:ready()
local scene = datumhue.scene.new({ width = 320, height = 240 })
scene:mount({ width = 320, height = 240 })
scene:set_skybox(sky)