The short answer
Most real-time engines and 3D applications accept an equirectangular HDRI directly and project it onto a cube for you, so you never handle six faces yourself. The exceptions are engines whose skybox format is six faces by design. This table sorts the common targets, and the sections below explain each one.
| Engine / tool | Accepts equirectangular? | Needs six faces? |
|---|---|---|
| Unity | Yes, Skybox/Panoramic shader | Legacy only |
| Unreal Engine | Yes, HDRI Backdrop or Sky Light | No |
| Blender | Yes, World shader | No |
| Maya (Arnold) | Yes, aiSkyDomeLight | No |
| Godot | Yes, PanoramaSkyMaterial | No |
| Source engine | No | Required |
| Roblox | No | Required |
| idTech / GoldSrc | No | Required |
| Raw OpenGL / DirectX | Rarely | Usually |
Unity
Unity reads an equirectangular HDR directly. Set the imported texture's Shape to Cube and Unity reprojects it for you. Or assign the equirectangular map to a material that uses the built-in Skybox/Panoramic shader, which samples it at render time. A Reflection Probe then captures ambient light from the result. Importing six separate faces still works, but Unity treats it as legacy. Use an explicit cubemap only when you need per-face compression, a different resolution per side, or a shader that samples one face on its own.
Dedicated guide: HDRI to Unity skybox
Unreal Engine
Unreal consumes a single equirectangular HDR in several places: the HDRI Backdrop actor for an instant lit backdrop, a Sky Light for image-based ambient lighting, and reflection captures for local reflections. You can also build a TextureCube asset from an equirectangular HDR and let Unreal handle the projection at import. You rarely need a hand-authored, pre-filtered six-face cubemap. Use one only when you build a specialized cubemap asset rather than light a level from an HDRI.
Dedicated guide: HDRI in Unreal Engine
Blender
Blender lights a scene from an HDRI through the World shader: an Environment Texture node feeds an .hdr or .exr straight into the world surface, used for both image-based lighting and the visible background. No cubemap conversion happens at any stage. Six faces matter only when you export from Blender to a game engine that requires them.
Dedicated guide: How to use an HDRI in Blender
Maya (Arnold)
In Maya with Arnold, an aiSkyDomeLight takes the equirectangular HDR directly. It provides image-based lighting and also serves as the visible background. Other renderers expose the same idea under a different name: a dome light or environment light fed an equirectangular map. None of them need a six-face cubemap. The dome-light workflow stays equirectangular throughout. Cube faces matter only if you export the environment onward to an engine that requires them.
Godot
Godot's Sky resource takes a PanoramaSkyMaterial, which accepts an equirectangular HDR directly. Assign the file and the environment lights the scene. Godot also supports cubemap-based skies through other sky materials and can convert between the two. The panorama path is the default and the simplest. Unless you have a specific reason to give Godot pre-split faces, the equirectangular HDR is the input to use.
Dedicated guide: HDRI to Godot skybox
Source engine
The Source engine has no equirectangular path. A Source skybox is six VTF (Valve Texture Format) face textures with matching VMT (Valve Material Type) materials, named to a fixed convention and placed in materials/skybox/. The engine samples those six faces around the level. The converter is built for this case: load an equirectangular HDRI, export the bundle, and copy the files into materials/skybox/.
Dedicated guide: HDRI to Source engine skybox
Roblox
Roblox skyboxes are six separate face images assigned to a Sky object: an up face, a down face, and the four sides. There is no equirectangular input. The six faces are mandatory. Export a cubemap, upload the six images, and reference them on the Sky object. Roblox skybox faces are standard 8-bit images, so they do not carry HDR range.
idTech / GoldSrc
Quake-derived engines, including idTech branches and GoldSrc (which powered the original Half-Life), use six skybox textures with directional suffixes. The Source engine later inherited the same convention. The exact file format and naming differ by game, but every game requires the same thing: six faces and no equirectangular path. Export a cubemap and rename or convert the faces to match the target game convention.
Raw OpenGL / DirectX
When you work directly against the graphics API, a cubemap is six 2D images bound to one cube-map sampler: GL_TEXTURE_CUBE_MAP in OpenGL, or a cube texture view in Direct3D. Nothing projects an equirectangular map for you. Either sample the equirectangular texture with your own direction-to-UV math in the shader, or upload six faces and let the hardware cube sampler handle the lookup. Six faces is the usual choice because the hardware path is built around it.
When six faces are the right choice
- The engine requires it. This covers Source, Roblox, idTech and GoldSrc, and most work written directly against OpenGL or DirectX.
- Per-face control, when you want different compression or a different resolution on individual faces, such as a lower-detail floor.
- Memory budgeting on mobile, where the engine can stream or drop each face to a smaller mip independently of the others.
- Custom shaders that sample one specific face rather than a direction vector.
If none of those apply, give your engine the equirectangular HDRI and skip the conversion.