Skyboxes

A skybox is a way to give your scene a distant environment — a sky, a mountain range, a starry space, or a city skyline. It wraps around your entire scene so the camera is always inside it, no matter which way you look.
Think of it like standing inside a giant balloon. The balloon's surface shows you a painting of the world, and it's far enough away that you can't tell it's just a surface.
method 1: CubeTextureLoader (6 images)
The most common approach is to use six images — one for each face of a cube (right, left, top, bottom, front, back). Three.js loads them with CubeTextureLoader and sets them as the scene's background:
import * as THREE from 'three';
const loader = new THREE.CubeTextureLoader();
const texture = loader.load([
'px.jpg', // right (+x)
'nx.jpg', // left (-x)
'py.jpg', // top (+y)
'ny.jpg', // bottom (-y)
'pz.jpg', // front (+z)
'nz.jpg', // back (-z)
]);
scene.background = texture;
The naming convention (px, nx, py, etc.) stands for positive x, negative x, positive y, and so on. It's the standard way to name skybox textures.
method 2: 360-degree equirectangular image (easier)
If you have a single 360-degree photo (like the kind you'd see on Google Street View or in a VR headset), you can use EquirectangularReflectionMapping:
import { RGBELoader } from 'three/examples/jsm/loaders/RGBELoader.js';
const rgbeLoader = new RGBELoader();
rgbeLoader.load('/path/to/your.hdr', (texture) => {
texture.mapping = THREE.EquirectangularReflectionMapping;
scene.background = texture;
scene.environment = texture; // also lights your scene!
});
This loads a single .hdr or .exr file — much easier than finding six separate images. Plus, setting it as scene.environment means it also provides realistic reflections on your objects (perfect for PBR materials).
☝️ tip: An HDR skybox lighting your scene for free is one of the best bang-for-buck effects in Three.js. It makes your materials look photorealistic instantly.
where to get skyboxes
- Poly Haven — free HDR environments, very high quality
- Three.js examples — has a few built-in skyboxes to try
- Blockade Labs — generate your own AI skyboxes
- Create your own — in Blender or with a 360-degree camera
a few things to keep in mind
- File size — HDR images can be large (10–50MB). Compress them or use lower resolutions for the web.
- Performance — for mobile, consider a simple color or gradient background instead of a full skybox.
- Environment mapping — using the skybox as
scene.environmentgives you realistic reflections and lighting for free. - Don't forget to remove the skybox when navigating away — set
scene.background = nullandscene.environment = nullto clean up.
