HDRISKYBOX

How to use an HDRI in Blender

Blender's World shader takes an equirectangular HDRI directly, with no cubemap conversion needed. This guide covers the standard image-based-lighting workflow, rotating the environment, Eevee, and how to hand off to an engine that needs six faces.

The standard workflow: equirectangular IBL

Blender lights a scene from an HDRI through the World shader. The panorama is used directly, as a single equirectangular image, with no cubemap and no conversion step. Both Cycles and EEVEE read it the same way, and the one image supplies both the image-based lighting and the visible background.

  1. Open the World Properties tab in the Properties editor.
  2. Under Surface, click the dot to the left of the Color field and choose Environment Texture.
  3. Click Open and select your .hdr or .exr panorama.
  4. Render. The scene is lit by the HDRI, and the panorama shows behind it as the background.
The Blender world shader node graph for an HDRI environment: Environment Texture into Background into World Output, with an optional Texture Coordinate and Mapping pair feeding it.Texture CoordinateMappingEnvironment TextureBackgroundWorld Outputoptional: rotates the HDRI
The World shader node graph

If the HDRI lights the scene too brightly or too dim, change the Strength value on the Background node instead of re-exporting the file. Strength is a plain brightness multiplier.

How to rotate an HDRI in Blender

The Environment Texture node has no rotation field of its own. Rotation comes from a Mapping node placed ahead of it in the World shader:

  1. Open the Shader Editor and switch its mode from Object to World.
  2. Add a Texture Coordinate node and a Mapping node (Shift A, then search).
  3. Wire Texture Coordinate > Generated into Mapping > Vector, and Mapping > Vector into the Vector input of the Environment Texture node.
  4. Drag the Mapping node's Rotation Z value. The environment spins around the vertical axis, and the sun walks along the horizon in real time in a rendered viewport.

Z is the only axis you normally touch. Rotating X or Y tilts the horizon itself, which reads as a crooked world unless that is the point.

If you are spinning the HDRI to line the sun up for a game-engine export rather than a Blender render, the converter's SKY YAW slider applies the same rotation at export time, so the six faces come out pre-aimed with no re-render.

HDRI lighting in EEVEE

The World setup is identical in EEVEE: the same Environment Texture node, no conversion, no separate EEVEE path. What differs is how much of the HDRI's light survives into the render. Cycles path-traces the panorama directly, so bounce light and reflections come free. EEVEE rasterizes: from Blender 4.2 its ray-tracing options recover most of that, while older versions rely on two baked helpers, an Irradiance Volume for diffuse bounce and Reflection Cubemaps for glossy surfaces.

One viewport trap: Material Previewmode lights the scene with one of Blender's built-in studio HDRIs, not your World, until you open the shading dropdown in the viewport header and enable Scene World. If your HDRI "does nothing" in the viewport, that toggle is almost always why.

Blender's built-in HDRIs, and where they live

The environments you see in Material Preview (forest, studio, city, sunset, and the rest) ship with Blender as studio lights. On disk they are plain equirectangular .exr files under the installation directory:

<blender>/<version>/datafiles/studiolights/world/

You can load one into the World shader like any other HDRI by browsing to that folder from the Environment Texture node. Be aware they are small preview lights, around 1K: fine for look-dev and quick tests, but soft and low-detail as a visible background in a final render. For production lighting, a 4K or larger HDRI from a library like Poly Haven is the better input, and the same file is what you would feed the converter for an engine skybox.

When you need six faces instead

Blender itself never needs a cubemap, since the World shader is equirectangular from end to end. Six faces become necessary only when you take the environment out of Blender and into an engine that requires them, such as the Source engine, Roblox, Quake-derived engines, or custom OpenGL and DirectX work. For a full breakdown of which engines need six faces and which accept the panorama directly, see Cubemap or equirectangular?

Blender to equirectangular HDR to Source skybox

When the target is a six-face engine, the route runs through an equirectangular render. Blender produces one with a panoramic camera:

  1. Select the camera. In Object Data Properties, open the Lens section, set Type to Panoramic, then set Panorama Type to Equirectangular. This needs the Cycles render engine.
  2. Set the output to a 2:1 resolution (4096 by 2048 is a sound default) and render the scene.
  3. Save the result as a .hdr or .exr file so the full dynamic range is preserved.
  4. Open that file in the converter and export it as a Source Skybox bundle. The HDRI to Source engine skybox guide covers the export options and naming rules.

That same equirectangular HDR is the input for every six-face target, not just Source. Render it once, and the same file feeds a Roblox sky, an idTech skybox, or a custom cubemap.

Open the converter