Scene.environment ldr texture colorspace


When loading an HDRI file (exr. hdr) the associated loader sets the texture encoding to THREE.LinearSRGBColorSpace, as expected.
However if I were to use a normal TextureLoader to load a png or jpg (ldr image) to use as an envmap, should I set the texture.encoding to SRGBColorSpace, LinearSRGBColorSpace or keep it as NoColorSpace?

The threejs Texture documentation says to set a texture’s colorspace to SRGB if it contains colordata, while the ColorManagement documentation mentions LinearSRGB for use with envmaps.

As to why I would want to use a LDR as an envmap; HDR require ToneMapping to avoid blown out highlights, but also result in colorshifting when setting a material’s color via .setStyle(cssColor). Accurate css colors are more important than realistic hdr lighting in some usecases. In these cases I’d load a LDR over an HDR.


Use SRGBColorSpace.

Clear and concise. Thanks :+1: